diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/godot.cpp | 2 | ||||
-rw-r--r-- | src/variant/variant.cpp | 11 |
2 files changed, 7 insertions, 6 deletions
diff --git a/src/godot.cpp b/src/godot.cpp index f6d0d43..2e8f4be 100644 --- a/src/godot.cpp +++ b/src/godot.cpp @@ -88,6 +88,7 @@ GDExtensionInterfaceVariantGetType gdextension_interface_variant_get_type = null GDExtensionInterfaceVariantHasMethod gdextension_interface_variant_has_method = nullptr; GDExtensionInterfaceVariantHasMember gdextension_interface_variant_has_member = nullptr; GDExtensionInterfaceVariantHasKey gdextension_interface_variant_has_key = nullptr; +GDExtensionInterfaceVariantGetObjectInstanceId gdextension_interface_variant_get_object_instance_id = nullptr; GDExtensionInterfaceVariantGetTypeName gdextension_interface_variant_get_type_name = nullptr; GDExtensionInterfaceVariantCanConvert gdextension_interface_variant_can_convert = nullptr; GDExtensionInterfaceVariantCanConvertStrict gdextension_interface_variant_can_convert_strict = nullptr; @@ -367,6 +368,7 @@ GDExtensionBool GDExtensionBinding::init(GDExtensionInterfaceGetProcAddress p_ge LOAD_PROC_ADDRESS(variant_has_method, GDExtensionInterfaceVariantHasMethod); LOAD_PROC_ADDRESS(variant_has_member, GDExtensionInterfaceVariantHasMember); LOAD_PROC_ADDRESS(variant_has_key, GDExtensionInterfaceVariantHasKey); + LOAD_PROC_ADDRESS(variant_get_object_instance_id, GDExtensionInterfaceVariantGetObjectInstanceId); LOAD_PROC_ADDRESS(variant_get_type_name, GDExtensionInterfaceVariantGetTypeName); LOAD_PROC_ADDRESS(variant_can_convert, GDExtensionInterfaceVariantCanConvert); LOAD_PROC_ADDRESS(variant_can_convert_strict, GDExtensionInterfaceVariantCanConvertStrict); diff --git a/src/variant/variant.cpp b/src/variant/variant.cpp index 9dcf705..1f57d48 100644 --- a/src/variant/variant.cpp +++ b/src/variant/variant.cpp @@ -448,12 +448,7 @@ Variant::operator ObjectID() const { if (get_type() == Type::INT) { return ObjectID(operator uint64_t()); } else if (get_type() == Type::OBJECT) { - Object *obj = operator Object *(); - if (obj != nullptr) { - return ObjectID(obj->get_instance_id()); - } else { - return ObjectID(); - } + return ObjectID(internal::gdextension_interface_variant_get_object_instance_id(_native_ptr())); } else { return ObjectID(); } @@ -515,6 +510,10 @@ Variant::operator PackedVector4Array() const { return PackedVector4Array(this); } +Object *Variant::get_validated_object() const { + return ObjectDB::get_instance(operator ObjectID()); +} + Variant &Variant::operator=(const Variant &other) { clear(); internal::gdextension_interface_variant_new_copy(_native_ptr(), other._native_ptr()); |