Skip to content

Commit 8b92368

Browse files
committed
Load new script_instance_create3 GDExtension interface function
1 parent e55b792 commit 8b92368

File tree

3 files changed

+65
-8
lines changed

3 files changed

+65
-8
lines changed

gdextension/gdextension_interface.h

Lines changed: 62 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -480,7 +480,8 @@ typedef void *GDExtensionScriptInstanceDataPtr; // Pointer to custom ScriptInsta
480480
typedef GDExtensionBool (*GDExtensionScriptInstanceSet)(GDExtensionScriptInstanceDataPtr p_instance, GDExtensionConstStringNamePtr p_name, GDExtensionConstVariantPtr p_value);
481481
typedef GDExtensionBool (*GDExtensionScriptInstanceGet)(GDExtensionScriptInstanceDataPtr p_instance, GDExtensionConstStringNamePtr p_name, GDExtensionVariantPtr r_ret);
482482
typedef const GDExtensionPropertyInfo *(*GDExtensionScriptInstanceGetPropertyList)(GDExtensionScriptInstanceDataPtr p_instance, uint32_t *r_count);
483-
typedef void (*GDExtensionScriptInstanceFreePropertyList)(GDExtensionScriptInstanceDataPtr p_instance, const GDExtensionPropertyInfo *p_list);
483+
typedef void (*GDExtensionScriptInstanceFreePropertyList)(GDExtensionScriptInstanceDataPtr p_instance, const GDExtensionPropertyInfo *p_list); // Deprecated. Use GDExtensionScriptInstanceFreePropertyList2 instead.
484+
typedef void (*GDExtensionScriptInstanceFreePropertyList2)(GDExtensionScriptInstanceDataPtr p_instance, const GDExtensionPropertyInfo *p_list, uint32_t p_count);
484485
typedef GDExtensionBool (*GDExtensionScriptInstanceGetClassCategory)(GDExtensionScriptInstanceDataPtr p_instance, GDExtensionPropertyInfo *p_class_category);
485486

486487
typedef GDExtensionVariantType (*GDExtensionScriptInstanceGetPropertyType)(GDExtensionScriptInstanceDataPtr p_instance, GDExtensionConstStringNamePtr p_name, GDExtensionBool *r_is_valid);
@@ -494,7 +495,8 @@ typedef void (*GDExtensionScriptInstancePropertyStateAdd)(GDExtensionConstString
494495
typedef void (*GDExtensionScriptInstanceGetPropertyState)(GDExtensionScriptInstanceDataPtr p_instance, GDExtensionScriptInstancePropertyStateAdd p_add_func, void *p_userdata);
495496

496497
typedef const GDExtensionMethodInfo *(*GDExtensionScriptInstanceGetMethodList)(GDExtensionScriptInstanceDataPtr p_instance, uint32_t *r_count);
497-
typedef void (*GDExtensionScriptInstanceFreeMethodList)(GDExtensionScriptInstanceDataPtr p_instance, const GDExtensionMethodInfo *p_list);
498+
typedef void (*GDExtensionScriptInstanceFreeMethodList)(GDExtensionScriptInstanceDataPtr p_instance, const GDExtensionMethodInfo *p_list); // Deprecated. Use GDExtensionScriptInstanceFreeMethodList2 instead.
499+
typedef void (*GDExtensionScriptInstanceFreeMethodList2)(GDExtensionScriptInstanceDataPtr p_instance, const GDExtensionMethodInfo *p_list, uint32_t p_count);
498500

499501
typedef GDExtensionBool (*GDExtensionScriptInstanceHasMethod)(GDExtensionScriptInstanceDataPtr p_instance, GDExtensionConstStringNamePtr p_name);
500502

@@ -554,7 +556,7 @@ typedef struct {
554556

555557
GDExtensionScriptInstanceFree free_func;
556558

557-
} GDExtensionScriptInstanceInfo; // Deprecated. Use GDExtensionScriptInstanceInfo2 instead.
559+
} GDExtensionScriptInstanceInfo; // Deprecated. Use GDExtensionScriptInstanceInfo3 instead.
558560

559561
typedef struct {
560562
GDExtensionScriptInstanceSet set_func;
@@ -595,7 +597,48 @@ typedef struct {
595597

596598
GDExtensionScriptInstanceFree free_func;
597599

598-
} GDExtensionScriptInstanceInfo2;
600+
} GDExtensionScriptInstanceInfo2; // Deprecated. Use GDExtensionScriptInstanceInfo3 instead.
601+
602+
typedef struct {
603+
GDExtensionScriptInstanceSet set_func;
604+
GDExtensionScriptInstanceGet get_func;
605+
GDExtensionScriptInstanceGetPropertyList get_property_list_func;
606+
GDExtensionScriptInstanceFreePropertyList2 free_property_list_func;
607+
GDExtensionScriptInstanceGetClassCategory get_class_category_func; // Optional. Set to NULL for the default behavior.
608+
609+
GDExtensionScriptInstancePropertyCanRevert property_can_revert_func;
610+
GDExtensionScriptInstancePropertyGetRevert property_get_revert_func;
611+
612+
GDExtensionScriptInstanceGetOwner get_owner_func;
613+
GDExtensionScriptInstanceGetPropertyState get_property_state_func;
614+
615+
GDExtensionScriptInstanceGetMethodList get_method_list_func;
616+
GDExtensionScriptInstanceFreeMethodList2 free_method_list_func;
617+
GDExtensionScriptInstanceGetPropertyType get_property_type_func;
618+
GDExtensionScriptInstanceValidateProperty validate_property_func;
619+
620+
GDExtensionScriptInstanceHasMethod has_method_func;
621+
622+
GDExtensionScriptInstanceCall call_func;
623+
GDExtensionScriptInstanceNotification2 notification_func;
624+
625+
GDExtensionScriptInstanceToString to_string_func;
626+
627+
GDExtensionScriptInstanceRefCountIncremented refcount_incremented_func;
628+
GDExtensionScriptInstanceRefCountDecremented refcount_decremented_func;
629+
630+
GDExtensionScriptInstanceGetScript get_script_func;
631+
632+
GDExtensionScriptInstanceIsPlaceholder is_placeholder_func;
633+
634+
GDExtensionScriptInstanceSet set_fallback_func;
635+
GDExtensionScriptInstanceGet get_fallback_func;
636+
637+
GDExtensionScriptInstanceGetLanguage get_language_func;
638+
639+
GDExtensionScriptInstanceFree free_func;
640+
641+
} GDExtensionScriptInstanceInfo3;
599642

600643
/* INITIALIZATION */
601644

@@ -2377,7 +2420,7 @@ typedef void (*GDExtensionInterfaceRefSetObject)(GDExtensionRefPtr p_ref, GDExte
23772420
/**
23782421
* @name script_instance_create
23792422
* @since 4.1
2380-
* @deprecated in Godot 4.2. Use `script_instance_create2` instead.
2423+
* @deprecated in Godot 4.2. Use `script_instance_create3` instead.
23812424
*
23822425
* Creates a script instance that contains the given info and instance data.
23832426
*
@@ -2391,6 +2434,7 @@ typedef GDExtensionScriptInstancePtr (*GDExtensionInterfaceScriptInstanceCreate)
23912434
/**
23922435
* @name script_instance_create2
23932436
* @since 4.2
2437+
* @deprecated in Godot 4.3. Use `script_instance_create3` instead.
23942438
*
23952439
* Creates a script instance that contains the given info and instance data.
23962440
*
@@ -2401,6 +2445,19 @@ typedef GDExtensionScriptInstancePtr (*GDExtensionInterfaceScriptInstanceCreate)
24012445
*/
24022446
typedef GDExtensionScriptInstancePtr (*GDExtensionInterfaceScriptInstanceCreate2)(const GDExtensionScriptInstanceInfo2 *p_info, GDExtensionScriptInstanceDataPtr p_instance_data);
24032447

2448+
/**
2449+
* @name script_instance_create3
2450+
* @since 4.3
2451+
*
2452+
* Creates a script instance that contains the given info and instance data.
2453+
*
2454+
* @param p_info A pointer to a GDExtensionScriptInstanceInfo3 struct.
2455+
* @param p_instance_data A pointer to a data representing the script instance in the GDExtension. This will be passed to all the function pointers on p_info.
2456+
*
2457+
* @return A pointer to a ScriptInstanceExtension object.
2458+
*/
2459+
typedef GDExtensionScriptInstancePtr (*GDExtensionInterfaceScriptInstanceCreate3)(const GDExtensionScriptInstanceInfo3 *p_info, GDExtensionScriptInstanceDataPtr p_instance_data);
2460+
24042461
/**
24052462
* @name placeholder_script_instance_create
24062463
* @since 4.2

include/godot_cpp/godot.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ extern "C" GDExtensionInterfaceCallableCustomCreate gdextension_interface_callab
171171
extern "C" GDExtensionInterfaceCallableCustomGetUserData gdextension_interface_callable_custom_get_userdata;
172172
extern "C" GDExtensionInterfaceRefGetObject gdextension_interface_ref_get_object;
173173
extern "C" GDExtensionInterfaceRefSetObject gdextension_interface_ref_set_object;
174-
extern "C" GDExtensionInterfaceScriptInstanceCreate2 gdextension_interface_script_instance_create2;
174+
extern "C" GDExtensionInterfaceScriptInstanceCreate3 gdextension_interface_script_instance_create3;
175175
extern "C" GDExtensionInterfacePlaceHolderScriptInstanceCreate gdextension_interface_placeholder_script_instance_create;
176176
extern "C" GDExtensionInterfacePlaceHolderScriptInstanceUpdate gdextension_interface_placeholder_script_instance_update;
177177
extern "C" GDExtensionInterfaceClassdbConstructObject gdextension_interface_classdb_construct_object;

src/godot.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ GDExtensionInterfaceCallableCustomCreate gdextension_interface_callable_custom_c
177177
GDExtensionInterfaceCallableCustomGetUserData gdextension_interface_callable_custom_get_userdata = nullptr;
178178
GDExtensionInterfaceRefGetObject gdextension_interface_ref_get_object = nullptr;
179179
GDExtensionInterfaceRefSetObject gdextension_interface_ref_set_object = nullptr;
180-
GDExtensionInterfaceScriptInstanceCreate2 gdextension_interface_script_instance_create2 = nullptr;
180+
GDExtensionInterfaceScriptInstanceCreate3 gdextension_interface_script_instance_create3 = nullptr;
181181
GDExtensionInterfacePlaceHolderScriptInstanceCreate gdextension_interface_placeholder_script_instance_create = nullptr;
182182
GDExtensionInterfacePlaceHolderScriptInstanceUpdate gdextension_interface_placeholder_script_instance_update = nullptr;
183183
GDExtensionInterfaceClassdbConstructObject gdextension_interface_classdb_construct_object = nullptr;
@@ -417,7 +417,7 @@ GDExtensionBool GDExtensionBinding::init(GDExtensionInterfaceGetProcAddress p_ge
417417
LOAD_PROC_ADDRESS(callable_custom_get_userdata, GDExtensionInterfaceCallableCustomGetUserData);
418418
LOAD_PROC_ADDRESS(ref_get_object, GDExtensionInterfaceRefGetObject);
419419
LOAD_PROC_ADDRESS(ref_set_object, GDExtensionInterfaceRefSetObject);
420-
LOAD_PROC_ADDRESS(script_instance_create2, GDExtensionInterfaceScriptInstanceCreate2);
420+
LOAD_PROC_ADDRESS(script_instance_create3, GDExtensionInterfaceScriptInstanceCreate3);
421421
LOAD_PROC_ADDRESS(placeholder_script_instance_create, GDExtensionInterfacePlaceHolderScriptInstanceCreate);
422422
LOAD_PROC_ADDRESS(placeholder_script_instance_update, GDExtensionInterfacePlaceHolderScriptInstanceUpdate);
423423
LOAD_PROC_ADDRESS(classdb_construct_object, GDExtensionInterfaceClassdbConstructObject);

0 commit comments

Comments
 (0)