summaryrefslogtreecommitdiffstats
path: root/src/variant
diff options
context:
space:
mode:
authorDavid Snopek <dsnopek@gmail.com>2024-10-29 13:10:12 -0500
committerGitHub <noreply@github.com>2024-10-29 13:10:12 -0500
commitfa3dfa0e3ca2a797c793c2744e10e3e11111d05f (patch)
tree979737f74727445436ae851a3026e329c8fd7ba2 /src/variant
parent7fca5458854c30fed862609cf516910e432508c1 (diff)
parent0602c3298651b7a914f23ae357d3e427cc65a82c (diff)
downloadredot-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.cpp11
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());