diff options
| author | reduz <reduzio@gmail.com> | 2021-07-08 16:16:02 -0300 |
|---|---|---|
| committer | reduz <reduzio@gmail.com> | 2021-07-08 17:08:12 -0300 |
| commit | 44691448911f1d29d4d79dbdd5553734761e57c4 (patch) | |
| tree | e94aef364ad141c1e96cb775eec1788b03bd8301 /core/extension/gdnative_interface.cpp | |
| parent | d4e5fe6c44cecccd4f925707ccd5bbe1511184e5 (diff) | |
| download | redot-engine-44691448911f1d29d4d79dbdd5553734761e57c4.tar.gz | |
Redo how instance bindings work
* The harcoded 8 slots are no more and impose limits in the new extension system.
* New system is limitless, although it will impose small performance hit with a mutex.
* Use a token to request the instance binding.
**Warning**: Mono will most likely break as a result of this, will need to be modified to use the new system.
Diffstat (limited to 'core/extension/gdnative_interface.cpp')
| -rw-r--r-- | core/extension/gdnative_interface.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/core/extension/gdnative_interface.cpp b/core/extension/gdnative_interface.cpp index 324933d7b7..8f68b8d848 100644 --- a/core/extension/gdnative_interface.cpp +++ b/core/extension/gdnative_interface.cpp @@ -520,6 +520,11 @@ static GDNativeObjectPtr gdnative_global_get_singleton(const char *p_name) { return (GDNativeObjectPtr)Engine::get_singleton()->get_singleton_object(String(p_name)); } +static void *gdnative_object_get_instance_binding(GDNativeObjectPtr p_instance, void *p_token, GDNativeInstanceBindingCallbacks *p_callbacks) { + Object *o = (Object *)p_instance; + return o->get_instance_binding(p_token, p_callbacks); +} + static GDNativeObjectPtr gdnative_object_get_instance_from_id(GDObjectInstanceID p_instance_id) { return (GDNativeObjectPtr)ObjectDB::get_instance(ObjectID(p_instance_id)); } @@ -665,6 +670,7 @@ void gdnative_setup_interface(GDNativeInterface *p_interface) { gdni.object_method_bind_ptrcall = gdnative_object_method_bind_ptrcall; gdni.object_destroy = gdnative_object_destroy; gdni.global_get_singleton = gdnative_global_get_singleton; + gdni.object_get_instance_binding = gdnative_object_get_instance_binding; gdni.object_cast_to = gdnative_object_cast_to; gdni.object_get_instance_from_id = gdnative_object_get_instance_from_id; |
