diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2023-08-30 08:44:36 +0200 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2023-08-30 08:44:36 +0200 |
commit | 8edc0b43b94bcc04defeeebd7ce120a0131ff511 (patch) | |
tree | bfa167f5598efc3f8c0a05b131be6bb8812b7edd /core/extension/gdextension_interface.cpp | |
parent | d2f76e87869b892d7992696e0b381c5afebe3d0d (diff) | |
parent | c4705a590b5eb01d63afb907d6dad5c49d8f6fe1 (diff) | |
download | redot-engine-8edc0b43b94bcc04defeeebd7ce120a0131ff511.tar.gz |
Merge pull request #78634 from Sauermann/fix-notification-order
Fix `Object::notification` order
Diffstat (limited to 'core/extension/gdextension_interface.cpp')
-rw-r--r-- | core/extension/gdextension_interface.cpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/core/extension/gdextension_interface.cpp b/core/extension/gdextension_interface.cpp index a70ad5262f..24517d71e4 100644 --- a/core/extension/gdextension_interface.cpp +++ b/core/extension/gdextension_interface.cpp @@ -1041,7 +1041,43 @@ static void gdextension_ref_set_object(GDExtensionRefPtr p_ref, GDExtensionObjec ref->reference_ptr(o); } +#ifndef DISABLE_DEPRECATED static GDExtensionScriptInstancePtr gdextension_script_instance_create(const GDExtensionScriptInstanceInfo *p_info, GDExtensionScriptInstanceDataPtr p_instance_data) { + const GDExtensionScriptInstanceInfo2 info_2 = { + p_info->set_func, + p_info->get_func, + p_info->get_property_list_func, + p_info->free_property_list_func, + p_info->property_can_revert_func, + p_info->property_get_revert_func, + p_info->get_owner_func, + p_info->get_property_state_func, + p_info->get_method_list_func, + p_info->free_method_list_func, + p_info->get_property_type_func, + p_info->has_method_func, + p_info->call_func, + nullptr, // notification_func. + p_info->to_string_func, + p_info->refcount_incremented_func, + p_info->refcount_decremented_func, + p_info->get_script_func, + p_info->is_placeholder_func, + p_info->set_fallback_func, + p_info->get_fallback_func, + p_info->get_language_func, + p_info->free_func, + }; + + ScriptInstanceExtension *script_instance_extension = memnew(ScriptInstanceExtension); + script_instance_extension->instance = p_instance_data; + script_instance_extension->native_info = &info_2; + script_instance_extension->deprecated_native_info.notification_func = p_info->notification_func; + return reinterpret_cast<GDExtensionScriptInstancePtr>(script_instance_extension); +} +#endif // DISABLE_DEPRECATED + +static GDExtensionScriptInstancePtr gdextension_script_instance_create2(const GDExtensionScriptInstanceInfo2 *p_info, GDExtensionScriptInstanceDataPtr p_instance_data) { ScriptInstanceExtension *script_instance_extension = memnew(ScriptInstanceExtension); script_instance_extension->instance = p_instance_data; script_instance_extension->native_info = p_info; @@ -1269,7 +1305,10 @@ void gdextension_setup_interface() { REGISTER_INTERFACE_FUNC(object_get_instance_id); REGISTER_INTERFACE_FUNC(ref_get_object); REGISTER_INTERFACE_FUNC(ref_set_object); +#ifndef DISABLE_DEPRECATED REGISTER_INTERFACE_FUNC(script_instance_create); +#endif // DISABLE_DEPRECATED + REGISTER_INTERFACE_FUNC(script_instance_create2); REGISTER_INTERFACE_FUNC(placeholder_script_instance_create); REGISTER_INTERFACE_FUNC(placeholder_script_instance_update); REGISTER_INTERFACE_FUNC(object_get_script_instance); |