diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2023-05-22 14:02:59 +0200 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2023-05-22 14:02:59 +0200 |
commit | 80bf8fd186fad181bcafccf0b4ad15ff70752ed5 (patch) | |
tree | bdfd66318101cae65adfd6fb044c633bfccf9931 /core/extension/gdextension_interface.cpp | |
parent | b85269cd8b6c0b8c4b3bf6d1255f79b6cac04ec2 (diff) | |
parent | c6b0d4aae3bdd41e8bd45de03c83609892c6cb41 (diff) | |
download | redot-engine-80bf8fd186fad181bcafccf0b4ad15ff70752ed5.tar.gz |
Merge pull request #73511 from dsnopek/gdextension-object-name
Add GDExtension function to get Object class name
Diffstat (limited to 'core/extension/gdextension_interface.cpp')
-rw-r--r-- | core/extension/gdextension_interface.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/core/extension/gdextension_interface.cpp b/core/extension/gdextension_interface.cpp index c661bfa8c7..12ef1772e3 100644 --- a/core/extension/gdextension_interface.cpp +++ b/core/extension/gdextension_interface.cpp @@ -992,6 +992,19 @@ static GDExtensionObjectPtr gdextension_object_get_instance_from_id(GDObjectInst return (GDExtensionObjectPtr)ObjectDB::get_instance(ObjectID(p_instance_id)); } +static GDExtensionBool gdextension_object_get_class_name(GDExtensionConstObjectPtr p_object, GDExtensionClassLibraryPtr p_library, GDExtensionUninitializedStringNamePtr r_class_name) { + if (!p_object) { + return false; + } + const Object *o = (const Object *)p_object; + + memnew_placement(r_class_name, StringName); + StringName *class_name = reinterpret_cast<StringName *>(r_class_name); + *class_name = o->get_class_name_for_extension((GDExtension *)p_library); + + return true; +} + static GDExtensionObjectPtr gdextension_object_cast_to(GDExtensionConstObjectPtr p_object, void *p_class_tag) { if (!p_object) { return nullptr; @@ -1176,6 +1189,7 @@ void gdextension_setup_interface() { REGISTER_INTERFACE_FUNC(object_get_instance_binding); REGISTER_INTERFACE_FUNC(object_set_instance_binding); REGISTER_INTERFACE_FUNC(object_set_instance); + REGISTER_INTERFACE_FUNC(object_get_class_name); REGISTER_INTERFACE_FUNC(object_cast_to); REGISTER_INTERFACE_FUNC(object_get_instance_from_id); REGISTER_INTERFACE_FUNC(object_get_instance_id); |