diff options
author | David Snopek <dsnopek@gmail.com> | 2023-02-17 10:49:09 -0600 |
---|---|---|
committer | David Snopek <dsnopek@gmail.com> | 2023-05-16 15:18:48 -0500 |
commit | 431e30bc3273c83315725f56365845f0b89c0524 (patch) | |
tree | e0fa53d1327a6816665513568676110444ef30b4 /src/core/class_db.cpp | |
parent | 1c18413de00f1a6265b2b6c30175b2f6a434b574 (diff) | |
download | redot-cpp-431e30bc3273c83315725f56365845f0b89c0524.tar.gz |
Ensure GDExtension class is the correct type for the Godot engine class
Diffstat (limited to 'src/core/class_db.cpp')
-rw-r--r-- | src/core/class_db.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/core/class_db.cpp b/src/core/class_db.cpp index a90a389..551cb89 100644 --- a/src/core/class_db.cpp +++ b/src/core/class_db.cpp @@ -40,6 +40,7 @@ namespace godot { std::unordered_map<StringName, ClassDB::ClassInfo> ClassDB::classes; +std::unordered_map<StringName, const GDExtensionInstanceBindingCallbacks *> ClassDB::instance_binding_callbacks; GDExtensionInitializationLevel ClassDB::current_level = GDEXTENSION_INITIALIZATION_CORE; MethodDefinition D_METHOD(StringName p_name) { @@ -314,6 +315,12 @@ GDExtensionClassCallVirtual ClassDB::get_virtual_func(void *p_userdata, GDExtens return nullptr; } +const GDExtensionInstanceBindingCallbacks *ClassDB::get_instance_binding_callbacks(const StringName &p_class) { + std::unordered_map<StringName, const GDExtensionInstanceBindingCallbacks *>::iterator callbacks_it = instance_binding_callbacks.find(p_class); + ERR_FAIL_COND_V_MSG(callbacks_it == instance_binding_callbacks.end(), nullptr, String("Cannot find instance binding callbacks for class '{0}'.").format(Array::make(p_class))); + return callbacks_it->second; +} + void ClassDB::bind_virtual_method(const StringName &p_class, const StringName &p_method, GDExtensionClassCallVirtual p_call) { std::unordered_map<StringName, ClassInfo>::iterator type_it = classes.find(p_class); ERR_FAIL_COND_MSG(type_it == classes.end(), String("Class '{0}' doesn't exist.").format(Array::make(p_class))); |