diff options
| author | David Snopek <dsnopek@gmail.com> | 2024-10-29 13:10:12 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-29 13:10:12 -0500 |
| commit | fa3dfa0e3ca2a797c793c2744e10e3e11111d05f (patch) | |
| tree | 979737f74727445436ae851a3026e329c8fd7ba2 /src/variant | |
| parent | 7fca5458854c30fed862609cf516910e432508c1 (diff) | |
| parent | 0602c3298651b7a914f23ae357d3e427cc65a82c (diff) | |
| download | redot-cpp-fa3dfa0e3ca2a797c793c2744e10e3e11111d05f.tar.gz | |
Merge pull request #1591 from dsnopek/variant-object-instance-id
Directly get object instance ID from `Variant` and implement `Variant::get_validated_object()`
Diffstat (limited to 'src/variant')
| -rw-r--r-- | src/variant/variant.cpp | 11 |
1 files changed, 5 insertions, 6 deletions
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()); |
