Add ability to set object instance binding on creation

* Required by binding generators
* Makes it easier to create the bindings on construction.
This commit is contained in:
reduz 2021-07-15 11:41:57 -03:00
parent 9427bf3842
commit b5d5d13f56
2 changed files with 14 additions and 1 deletions

View file

@ -1769,6 +1769,17 @@ uint32_t Object::get_edited_version() const {
}
#endif
void Object::set_instance_binding(void *p_token, void *p_binding, const GDNativeInstanceBindingCallbacks *p_callbacks) {
// This is only meant to be used on creation by the binder.
ERR_FAIL_COND(_instance_bindings != nullptr);
_instance_bindings = (InstanceBinding *)memalloc(sizeof(InstanceBinding));
_instance_bindings[0].binding = p_binding;
_instance_bindings[0].free_callback = p_callbacks->free_callback;
_instance_bindings[0].reference_callback = p_callbacks->reference_callback;
_instance_bindings[0].token = p_token;
_instance_binding_count = 1;
}
void *Object::get_instance_binding(void *p_token, const GDNativeInstanceBindingCallbacks *p_callbacks) {
void *binding = nullptr;
_instance_binding_mutex.lock();

View file

@ -804,8 +804,10 @@ public:
#endif
//used by script languages to store binding data
// Used by script languages to store binding data.
void *get_instance_binding(void *p_token, const GDNativeInstanceBindingCallbacks *p_callbacks);
// Used on creation by binding only.
void set_instance_binding(void *p_token, void *p_binding, const GDNativeInstanceBindingCallbacks *p_callbacks);
void clear_internal_resource_paths();