Skip to content

Commit 5ee0345

Browse files
committed
Add support for placeholder_script_instance_create/update
1 parent c370f0f commit 5ee0345

File tree

3 files changed

+37
-0
lines changed

3 files changed

+37
-0
lines changed

gdextension/gdextension_interface.h

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2126,6 +2126,37 @@ typedef void (*GDExtensionInterfaceRefSetObject)(GDExtensionRefPtr p_ref, GDExte
21262126
*/
21272127
typedef GDExtensionScriptInstancePtr (*GDExtensionInterfaceScriptInstanceCreate)(const GDExtensionScriptInstanceInfo *p_info, GDExtensionScriptInstanceDataPtr p_instance_data);
21282128

2129+
/**
2130+
* @name placeholder_script_instance_create
2131+
* @since 4.2
2132+
*
2133+
* Creates a placeholder script instance for a given script and instance.
2134+
*
2135+
* This interface is optional as a custom placeholder could also be created with script_instance_create().
2136+
*
2137+
* @param p_language A pointer to a ScriptLanguage.
2138+
* @param p_script A pointer to a Script.
2139+
* @param p_owner A pointer to an Object.
2140+
*
2141+
* @return A pointer to a PlaceHolderScriptInstance object.
2142+
*/
2143+
typedef GDExtensionScriptInstancePtr (*GDExtensionInterfacePlaceHolderScriptInstanceCreate)(GDExtensionObjectPtr p_language, GDExtensionObjectPtr p_script, GDExtensionObjectPtr p_owner);
2144+
2145+
/**
2146+
* @name placeholder_script_instance_update
2147+
* @since 4.2
2148+
*
2149+
* Updates a placeholder script instance with the given properties and values.
2150+
*
2151+
* The passed in placeholder must be an instance of PlaceHolderScriptInstance
2152+
* such as the one returned by placeholder_script_instance_create().
2153+
*
2154+
* @param p_placeholder A pointer to a PlaceHolderScriptInstance.
2155+
* @param p_properties A pointer to an Array of Dictionary representing PropertyInfo.
2156+
* @param p_values A pointer to a Dictionary mapping StringName to Variant values.
2157+
*/
2158+
typedef void (*GDExtensionInterfacePlaceHolderScriptInstanceUpdate)(GDExtensionScriptInstancePtr p_placeholder, GDExtensionConstTypePtr p_properties, GDExtensionConstTypePtr p_values);
2159+
21292160
/* INTERFACE: ClassDB */
21302161

21312162
/**

include/godot_cpp/godot.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,8 @@ extern "C" GDExtensionInterfaceObjectGetInstanceId gdextension_interface_object_
167167
extern "C" GDExtensionInterfaceRefGetObject gdextension_interface_ref_get_object;
168168
extern "C" GDExtensionInterfaceRefSetObject gdextension_interface_ref_set_object;
169169
extern "C" GDExtensionInterfaceScriptInstanceCreate gdextension_interface_script_instance_create;
170+
extern "C" GDExtensionPlaceHolderScriptInstanceCreate gdextension_interface_placeholder_script_instance_create;
171+
extern "C" GDExtensionPlaceHolderScriptInstanceUpdate gdextension_interface_placeholder_script_instance_update;
170172
extern "C" GDExtensionInterfaceClassdbConstructObject gdextension_interface_classdb_construct_object;
171173
extern "C" GDExtensionInterfaceClassdbGetMethodBind gdextension_interface_classdb_get_method_bind;
172174
extern "C" GDExtensionInterfaceClassdbGetClassTag gdextension_interface_classdb_get_class_tag;

src/godot.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,8 @@ GDExtensionInterfaceObjectGetInstanceId gdextension_interface_object_get_instanc
172172
GDExtensionInterfaceRefGetObject gdextension_interface_ref_get_object = nullptr;
173173
GDExtensionInterfaceRefSetObject gdextension_interface_ref_set_object = nullptr;
174174
GDExtensionInterfaceScriptInstanceCreate gdextension_interface_script_instance_create = nullptr;
175+
GDExtensionInterfacePlaceHolderScriptInstanceCreate gdextension_interface_placeholder_script_instance_create = nullptr;
176+
GDExtensionInterfacePlaceHolderScriptInstanceUpdate gdextension_interface_placeholder_script_instance_update = nullptr;
175177
GDExtensionInterfaceClassdbConstructObject gdextension_interface_classdb_construct_object = nullptr;
176178
GDExtensionInterfaceClassdbGetMethodBind gdextension_interface_classdb_get_method_bind = nullptr;
177179
GDExtensionInterfaceClassdbGetClassTag gdextension_interface_classdb_get_class_tag = nullptr;
@@ -356,6 +358,8 @@ GDExtensionBool GDExtensionBinding::init(GDExtensionInterfaceGetProcAddress p_ge
356358
LOAD_PROC_ADDRESS(ref_get_object, GDExtensionInterfaceRefGetObject);
357359
LOAD_PROC_ADDRESS(ref_set_object, GDExtensionInterfaceRefSetObject);
358360
LOAD_PROC_ADDRESS(script_instance_create, GDExtensionInterfaceScriptInstanceCreate);
361+
LOAD_PROC_ADDRESS(placeholder_script_instance_create, GDExtensionInterfacePlaceHolderScriptInstanceCreate);
362+
LOAD_PROC_ADDRESS(placeholder_script_instance_update, GDExtensionInterfacePlaceHolderScriptInstanceUpdate);
359363
LOAD_PROC_ADDRESS(classdb_construct_object, GDExtensionInterfaceClassdbConstructObject);
360364
LOAD_PROC_ADDRESS(classdb_get_method_bind, GDExtensionInterfaceClassdbGetMethodBind);
361365
LOAD_PROC_ADDRESS(classdb_get_class_tag, GDExtensionInterfaceClassdbGetClassTag);

0 commit comments

Comments
 (0)