Fix toVariant for nil values
This commit is contained in:
parent
a7d9aaef95
commit
fcc10071fb
2 changed files with 24 additions and 6 deletions
|
|
@ -71,9 +71,12 @@ proc newVariant*(r: cdouble): Variant {.inline.} =
|
||||||
|
|
||||||
proc newVariant*(s: string): Variant {.inline.} =
|
proc newVariant*(s: string): Variant {.inline.} =
|
||||||
new(result, variantFinalizer)
|
new(result, variantFinalizer)
|
||||||
var godotStr = s.toGodotString()
|
if s.isNil:
|
||||||
initGodotVariant(result.godotVariant, godotStr)
|
initGodotVariant(result.godotVariant)
|
||||||
godotStr.deinit()
|
else:
|
||||||
|
var godotStr = s.toGodotString()
|
||||||
|
initGodotVariant(result.godotVariant, godotStr)
|
||||||
|
godotStr.deinit()
|
||||||
|
|
||||||
import basis, nodepaths
|
import basis, nodepaths
|
||||||
import planes, quats, rect2, rect3, rids
|
import planes, quats, rect2, rect3, rids
|
||||||
|
|
|
||||||
|
|
@ -445,7 +445,10 @@ proc godotTypeInfo*(T: typedesc[NimGodotObject]): GodotTypeInfo {.inline.} =
|
||||||
)
|
)
|
||||||
|
|
||||||
proc toVariant*(self: NimGodotObject): Variant {.inline.} =
|
proc toVariant*(self: NimGodotObject): Variant {.inline.} =
|
||||||
newVariant(self.godotObject)
|
if self.isNil:
|
||||||
|
newVariant()
|
||||||
|
else:
|
||||||
|
newVariant(self.godotObject)
|
||||||
|
|
||||||
proc fromVariant*[T: NimGodotObject](self: var T,
|
proc fromVariant*[T: NimGodotObject](self: var T,
|
||||||
val: Variant): ConversionResult =
|
val: Variant): ConversionResult =
|
||||||
|
|
@ -460,7 +463,10 @@ proc fromVariant*[T: NimGodotObject](self: var T,
|
||||||
result = ConversionResult.TypeError
|
result = ConversionResult.TypeError
|
||||||
|
|
||||||
proc toVariant*(self: Variant): Variant {.inline.} =
|
proc toVariant*(self: Variant): Variant {.inline.} =
|
||||||
self
|
if self.isNil:
|
||||||
|
newVariant()
|
||||||
|
else:
|
||||||
|
self
|
||||||
|
|
||||||
proc fromVariant*(self: var Variant,
|
proc fromVariant*(self: var Variant,
|
||||||
val: Variant): ConversionResult {.inline.} =
|
val: Variant): ConversionResult {.inline.} =
|
||||||
|
|
@ -531,7 +537,13 @@ proc godotTypeInfo*(T: typedesc[range]): VariantType {.inline.} =
|
||||||
)
|
)
|
||||||
|
|
||||||
proc toVariant*[T: SomeGodotOrNum](val: T): Variant {.inline.} =
|
proc toVariant*[T: SomeGodotOrNum](val: T): Variant {.inline.} =
|
||||||
newVariant(val)
|
when val is ref:
|
||||||
|
if val.isNil:
|
||||||
|
newVariant()
|
||||||
|
else:
|
||||||
|
newVariant(val)
|
||||||
|
else:
|
||||||
|
newVariant(val)
|
||||||
|
|
||||||
proc fromVariant*[T: SomeSignedInt or SomeUnsignedInt](
|
proc fromVariant*[T: SomeSignedInt or SomeUnsignedInt](
|
||||||
self: var T, val: Variant): ConversionResult =
|
self: var T, val: Variant): ConversionResult =
|
||||||
|
|
@ -717,6 +729,9 @@ proc godotTypeInfo*(T: typedesc[Table|TableRef]): GodotTypeInfo {.inline.} =
|
||||||
result.variantType = VariantType.Dictionary
|
result.variantType = VariantType.Dictionary
|
||||||
|
|
||||||
proc toVariant*[T: Table or TableRef](t: T): Variant =
|
proc toVariant*[T: Table or TableRef](t: T): Variant =
|
||||||
|
when t is ref:
|
||||||
|
if t.isNil:
|
||||||
|
return newVariant()
|
||||||
var dict = newDictionary()
|
var dict = newDictionary()
|
||||||
mixin toVariant
|
mixin toVariant
|
||||||
for k, v in t.pairs():
|
for k, v in t.pairs():
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue