Skip to content

Commit 69529ff

Browse files
committed
Merge pull request #102373 from dsnopek/gdextension-set-script-instance
GDExtension: Add interface functions for `Object::set_script_instance()`
2 parents 90509e6 + 7095431 commit 69529ff

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

core/extension/gdextension_interface.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1584,6 +1584,15 @@ static GDExtensionScriptInstancePtr gdextension_object_get_script_instance(GDExt
15841584
return script_instance_extension->instance;
15851585
}
15861586

1587+
static void gdextension_object_set_script_instance(GDExtensionObjectPtr p_object, GDExtensionScriptInstancePtr p_script_instance) {
1588+
ERR_FAIL_NULL(p_object);
1589+
1590+
Object *o = (Object *)p_object;
1591+
ScriptInstance *script_instance = (ScriptInstanceExtension *)p_script_instance;
1592+
1593+
o->set_script_instance(script_instance);
1594+
}
1595+
15871596
#ifndef DISABLE_DEPRECATED
15881597
static void gdextension_callable_custom_create(GDExtensionUninitializedTypePtr r_callable, GDExtensionCallableCustomInfo *p_custom_callable_info) {
15891598
memnew_placement(r_callable, Callable(memnew(CallableCustomExtension(p_custom_callable_info))));
@@ -1824,6 +1833,7 @@ void gdextension_setup_interface() {
18241833
REGISTER_INTERFACE_FUNC(placeholder_script_instance_create);
18251834
REGISTER_INTERFACE_FUNC(placeholder_script_instance_update);
18261835
REGISTER_INTERFACE_FUNC(object_get_script_instance);
1836+
REGISTER_INTERFACE_FUNC(object_set_script_instance);
18271837
#ifndef DISABLE_DEPRECATED
18281838
REGISTER_INTERFACE_FUNC(callable_custom_create);
18291839
#endif // DISABLE_DEPRECATED

core/extension/gdextension_interface.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2743,6 +2743,17 @@ typedef void (*GDExtensionInterfacePlaceHolderScriptInstanceUpdate)(GDExtensionS
27432743
*/
27442744
typedef GDExtensionScriptInstanceDataPtr (*GDExtensionInterfaceObjectGetScriptInstance)(GDExtensionConstObjectPtr p_object, GDExtensionObjectPtr p_language);
27452745

2746+
/**
2747+
* @name object_set_script_instance
2748+
* @since 4.5
2749+
*
2750+
* Set the script instance data attached to this object.
2751+
*
2752+
* @param p_object A pointer to the Object.
2753+
* @param p_script_instance A pointer to the script instance data to attach to this object.
2754+
*/
2755+
typedef void (*GDExtensionInterfaceObjectSetScriptInstance)(GDExtensionObjectPtr p_object, GDExtensionScriptInstanceDataPtr p_script_instance);
2756+
27462757
/* INTERFACE: Callable */
27472758

27482759
/**

0 commit comments

Comments
 (0)