|
@@ -268,6 +268,7 @@ typedef void (*GDExtensionClassReference)(GDExtensionClassInstancePtr p_instance
|
|
|
typedef void (*GDExtensionClassUnreference)(GDExtensionClassInstancePtr p_instance);
|
|
|
typedef void (*GDExtensionClassCallVirtual)(GDExtensionClassInstancePtr p_instance, const GDExtensionConstTypePtr *p_args, GDExtensionTypePtr r_ret);
|
|
|
typedef GDExtensionObjectPtr (*GDExtensionClassCreateInstance)(void *p_class_userdata);
|
|
|
+typedef GDExtensionObjectPtr (*GDExtensionClassCreateInstance2)(void *p_class_userdata, GDExtensionBool p_notify_postinitialize);
|
|
|
typedef void (*GDExtensionClassFreeInstance)(void *p_class_userdata, GDExtensionClassInstancePtr p_instance);
|
|
|
typedef GDExtensionClassInstancePtr (*GDExtensionClassRecreateInstance)(void *p_class_userdata, GDExtensionObjectPtr p_object);
|
|
|
typedef GDExtensionClassCallVirtual (*GDExtensionClassGetVirtual)(void *p_class_userdata, GDExtensionConstStringNamePtr p_name);
|
|
@@ -292,7 +293,7 @@ typedef struct {
|
|
|
GDExtensionClassGetVirtual get_virtual_func; // Queries a virtual function by name and returns a callback to invoke the requested virtual function.
|
|
|
GDExtensionClassGetRID get_rid_func;
|
|
|
void *class_userdata; // Per-class user data, later accessible in instance bindings.
|
|
|
-} GDExtensionClassCreationInfo; // Deprecated. Use GDExtensionClassCreationInfo3 instead.
|
|
|
+} GDExtensionClassCreationInfo; // Deprecated. Use GDExtensionClassCreationInfo4 instead.
|
|
|
|
|
|
typedef struct {
|
|
|
GDExtensionBool is_virtual;
|
|
@@ -325,7 +326,7 @@ typedef struct {
|
|
|
GDExtensionClassCallVirtualWithData call_virtual_with_data_func;
|
|
|
GDExtensionClassGetRID get_rid_func;
|
|
|
void *class_userdata; // Per-class user data, later accessible in instance bindings.
|
|
|
-} GDExtensionClassCreationInfo2; // Deprecated. Use GDExtensionClassCreationInfo3 instead.
|
|
|
+} GDExtensionClassCreationInfo2; // Deprecated. Use GDExtensionClassCreationInfo4 instead.
|
|
|
|
|
|
typedef struct {
|
|
|
GDExtensionBool is_virtual;
|
|
@@ -359,7 +360,40 @@ typedef struct {
|
|
|
GDExtensionClassCallVirtualWithData call_virtual_with_data_func;
|
|
|
GDExtensionClassGetRID get_rid_func;
|
|
|
void *class_userdata; // Per-class user data, later accessible in instance bindings.
|
|
|
-} GDExtensionClassCreationInfo3;
|
|
|
+} GDExtensionClassCreationInfo3; // Deprecated. Use GDExtensionClassCreationInfo4 instead.
|
|
|
+
|
|
|
+typedef struct {
|
|
|
+ GDExtensionBool is_virtual;
|
|
|
+ GDExtensionBool is_abstract;
|
|
|
+ GDExtensionBool is_exposed;
|
|
|
+ GDExtensionBool is_runtime;
|
|
|
+ GDExtensionClassSet set_func;
|
|
|
+ GDExtensionClassGet get_func;
|
|
|
+ GDExtensionClassGetPropertyList get_property_list_func;
|
|
|
+ GDExtensionClassFreePropertyList2 free_property_list_func;
|
|
|
+ GDExtensionClassPropertyCanRevert property_can_revert_func;
|
|
|
+ GDExtensionClassPropertyGetRevert property_get_revert_func;
|
|
|
+ GDExtensionClassValidateProperty validate_property_func;
|
|
|
+ GDExtensionClassNotification2 notification_func;
|
|
|
+ GDExtensionClassToString to_string_func;
|
|
|
+ GDExtensionClassReference reference_func;
|
|
|
+ GDExtensionClassUnreference unreference_func;
|
|
|
+ GDExtensionClassCreateInstance2 create_instance_func; // (Default) constructor; mandatory. If the class is not instantiable, consider making it virtual or abstract.
|
|
|
+ GDExtensionClassFreeInstance free_instance_func; // Destructor; mandatory.
|
|
|
+ GDExtensionClassRecreateInstance recreate_instance_func;
|
|
|
+ // Queries a virtual function by name and returns a callback to invoke the requested virtual function.
|
|
|
+ GDExtensionClassGetVirtual get_virtual_func;
|
|
|
+ // Paired with `call_virtual_with_data_func`, this is an alternative to `get_virtual_func` for extensions that
|
|
|
+ // need or benefit from extra data when calling virtual functions.
|
|
|
+ // Returns user data that will be passed to `call_virtual_with_data_func`.
|
|
|
+ // Returning `NULL` from this function signals to Godot that the virtual function is not overridden.
|
|
|
+ // Data returned from this function should be managed by the extension and must be valid until the extension is deinitialized.
|
|
|
+ // You should supply either `get_virtual_func`, or `get_virtual_call_data_func` with `call_virtual_with_data_func`.
|
|
|
+ GDExtensionClassGetVirtualCallData get_virtual_call_data_func;
|
|
|
+ // Used to call virtual functions when `get_virtual_call_data_func` is not null.
|
|
|
+ GDExtensionClassCallVirtualWithData call_virtual_with_data_func;
|
|
|
+ void *class_userdata; // Per-class user data, later accessible in instance bindings.
|
|
|
+} GDExtensionClassCreationInfo4;
|
|
|
|
|
|
typedef void *GDExtensionClassLibraryPtr;
|
|
|
|
|
@@ -2708,6 +2742,7 @@ typedef void *(*GDExtensionInterfaceCallableCustomGetUserData)(GDExtensionConstT
|
|
|
/**
|
|
|
* @name classdb_construct_object
|
|
|
* @since 4.1
|
|
|
+ * @deprecated in Godot 4.4. Use `classdb_construct_object2` instead.
|
|
|
*
|
|
|
* Constructs an Object of the requested class.
|
|
|
*
|
|
@@ -2719,6 +2754,22 @@ typedef void *(*GDExtensionInterfaceCallableCustomGetUserData)(GDExtensionConstT
|
|
|
*/
|
|
|
typedef GDExtensionObjectPtr (*GDExtensionInterfaceClassdbConstructObject)(GDExtensionConstStringNamePtr p_classname);
|
|
|
|
|
|
+/**
|
|
|
+ * @name classdb_construct_object2
|
|
|
+ * @since 4.4
|
|
|
+ *
|
|
|
+ * Constructs an Object of the requested class.
|
|
|
+ *
|
|
|
+ * The passed class must be a built-in godot class, or an already-registered extension class. In both cases, object_set_instance() should be called to fully initialize the object.
|
|
|
+ *
|
|
|
+ * "NOTIFICATION_POSTINITIALIZE" must be sent after construction.
|
|
|
+ *
|
|
|
+ * @param p_classname A pointer to a StringName with the class name.
|
|
|
+ *
|
|
|
+ * @return A pointer to the newly created Object.
|
|
|
+ */
|
|
|
+typedef GDExtensionObjectPtr (*GDExtensionInterfaceClassdbConstructObject2)(GDExtensionConstStringNamePtr p_classname);
|
|
|
+
|
|
|
/**
|
|
|
* @name classdb_get_method_bind
|
|
|
* @since 4.1
|
|
@@ -2750,7 +2801,7 @@ typedef void *(*GDExtensionInterfaceClassdbGetClassTag)(GDExtensionConstStringNa
|
|
|
/**
|
|
|
* @name classdb_register_extension_class
|
|
|
* @since 4.1
|
|
|
- * @deprecated in Godot 4.2. Use `classdb_register_extension_class3` instead.
|
|
|
+ * @deprecated in Godot 4.2. Use `classdb_register_extension_class4` instead.
|
|
|
*
|
|
|
* Registers an extension class in the ClassDB.
|
|
|
*
|
|
@@ -2766,7 +2817,7 @@ typedef void (*GDExtensionInterfaceClassdbRegisterExtensionClass)(GDExtensionCla
|
|
|
/**
|
|
|
* @name classdb_register_extension_class2
|
|
|
* @since 4.2
|
|
|
- * @deprecated in Godot 4.3. Use `classdb_register_extension_class3` instead.
|
|
|
+ * @deprecated in Godot 4.3. Use `classdb_register_extension_class4` instead.
|
|
|
*
|
|
|
* Registers an extension class in the ClassDB.
|
|
|
*
|
|
@@ -2782,6 +2833,7 @@ typedef void (*GDExtensionInterfaceClassdbRegisterExtensionClass2)(GDExtensionCl
|
|
|
/**
|
|
|
* @name classdb_register_extension_class3
|
|
|
* @since 4.3
|
|
|
+ * @deprecated in Godot 4.4. Use `classdb_register_extension_class4` instead.
|
|
|
*
|
|
|
* Registers an extension class in the ClassDB.
|
|
|
*
|
|
@@ -2794,6 +2846,21 @@ typedef void (*GDExtensionInterfaceClassdbRegisterExtensionClass2)(GDExtensionCl
|
|
|
*/
|
|
|
typedef void (*GDExtensionInterfaceClassdbRegisterExtensionClass3)(GDExtensionClassLibraryPtr p_library, GDExtensionConstStringNamePtr p_class_name, GDExtensionConstStringNamePtr p_parent_class_name, const GDExtensionClassCreationInfo3 *p_extension_funcs);
|
|
|
|
|
|
+/**
|
|
|
+ * @name classdb_register_extension_class4
|
|
|
+ * @since 4.4
|
|
|
+ *
|
|
|
+ * Registers an extension class in the ClassDB.
|
|
|
+ *
|
|
|
+ * Provided struct can be safely freed once the function returns.
|
|
|
+ *
|
|
|
+ * @param p_library A pointer the library received by the GDExtension's entry point function.
|
|
|
+ * @param p_class_name A pointer to a StringName with the class name.
|
|
|
+ * @param p_parent_class_name A pointer to a StringName with the parent class name.
|
|
|
+ * @param p_extension_funcs A pointer to a GDExtensionClassCreationInfo2 struct.
|
|
|
+ */
|
|
|
+typedef void (*GDExtensionInterfaceClassdbRegisterExtensionClass4)(GDExtensionClassLibraryPtr p_library, GDExtensionConstStringNamePtr p_class_name, GDExtensionConstStringNamePtr p_parent_class_name, const GDExtensionClassCreationInfo4 *p_extension_funcs);
|
|
|
+
|
|
|
/**
|
|
|
* @name classdb_register_extension_class_method
|
|
|
* @since 4.1
|