Browse Source

Add support for `PackedVector4Array`

David Snopek 1 year ago
parent
commit
23178e81ff

+ 3 - 0
binding_generator.py

@@ -545,6 +545,8 @@ def generate_builtin_class_header(builtin_api, size, used_classes, fully_used_cl
         result.append("#include <godot_cpp/variant/vector2.hpp>")
     if class_name == "PackedVector3Array":
         result.append("#include <godot_cpp/variant/vector3.hpp>")
+    if class_name == "PackedVector4Array":
+        result.append("#include <godot_cpp/variant/vector4.hpp>")
 
     if is_packed_array(class_name):
         result.append("#include <godot_cpp/core/error_macros.hpp>")
@@ -2445,6 +2447,7 @@ def is_packed_array(type_name):
         "PackedStringArray",
         "PackedVector2Array",
         "PackedVector3Array",
+        "PackedVector4Array",
     ]
 
 

+ 400 - 1
gdextension/extension_api.json

@@ -163,6 +163,10 @@
 					"name": "PackedColorArray",
 					"size": 8
 				},
+				{
+					"name": "PackedVector4Array",
+					"size": 8
+				},
 				{
 					"name": "Variant",
 					"size": 24
@@ -324,6 +328,10 @@
 					"name": "PackedColorArray",
 					"size": 16
 				},
+				{
+					"name": "PackedVector4Array",
+					"size": 16
+				},
 				{
 					"name": "Variant",
 					"size": 24
@@ -485,6 +493,10 @@
 					"name": "PackedColorArray",
 					"size": 8
 				},
+				{
+					"name": "PackedVector4Array",
+					"size": 8
+				},
 				{
 					"name": "Variant",
 					"size": 40
@@ -646,6 +658,10 @@
 					"name": "PackedColorArray",
 					"size": 16
 				},
+				{
+					"name": "PackedVector4Array",
+					"size": 16
+				},
 				{
 					"name": "Variant",
 					"size": 40
@@ -3932,8 +3948,12 @@
 					"value": 37
 				},
 				{
-					"name": "TYPE_MAX",
+					"name": "TYPE_PACKED_VECTOR4_ARRAY",
 					"value": 38
+				},
+				{
+					"name": "TYPE_MAX",
+					"value": 39
 				}
 			]
 		},
@@ -6292,6 +6312,16 @@
 					"name": "!=",
 					"right_type": "PackedColorArray",
 					"return_type": "bool"
+				},
+				{
+					"name": "==",
+					"right_type": "PackedVector4Array",
+					"return_type": "bool"
+				},
+				{
+					"name": "!=",
+					"right_type": "PackedVector4Array",
+					"return_type": "bool"
 				}
 			],
 			"constructors": [
@@ -7445,6 +7475,11 @@
 					"name": "%",
 					"right_type": "PackedColorArray",
 					"return_type": "String"
+				},
+				{
+					"name": "%",
+					"right_type": "PackedVector4Array",
+					"return_type": "String"
 				}
 			],
 			"methods": [
@@ -12334,6 +12369,11 @@
 					"name": "in",
 					"right_type": "Array",
 					"return_type": "bool"
+				},
+				{
+					"name": "in",
+					"right_type": "PackedVector4Array",
+					"return_type": "bool"
 				}
 			],
 			"methods": [
@@ -17144,6 +17184,11 @@
 					"name": "%",
 					"right_type": "PackedColorArray",
 					"return_type": "String"
+				},
+				{
+					"name": "%",
+					"right_type": "PackedVector4Array",
+					"return_type": "String"
 				}
 			],
 			"methods": [
@@ -19972,6 +20017,15 @@
 							"type": "PackedColorArray"
 						}
 					]
+				},
+				{
+					"index": 12,
+					"arguments": [
+						{
+							"name": "from",
+							"type": "PackedVector4Array"
+						}
+					]
 				}
 			],
 			"has_destructor": true
@@ -23636,6 +23690,351 @@
 				}
 			],
 			"has_destructor": true
+		},
+		{
+			"name": "PackedVector4Array",
+			"indexing_return_type": "Vector4",
+			"is_keyed": false,
+			"operators": [
+				{
+					"name": "==",
+					"right_type": "Variant",
+					"return_type": "bool"
+				},
+				{
+					"name": "!=",
+					"right_type": "Variant",
+					"return_type": "bool"
+				},
+				{
+					"name": "not",
+					"return_type": "bool"
+				},
+				{
+					"name": "in",
+					"right_type": "Dictionary",
+					"return_type": "bool"
+				},
+				{
+					"name": "in",
+					"right_type": "Array",
+					"return_type": "bool"
+				},
+				{
+					"name": "==",
+					"right_type": "PackedVector4Array",
+					"return_type": "bool"
+				},
+				{
+					"name": "!=",
+					"right_type": "PackedVector4Array",
+					"return_type": "bool"
+				},
+				{
+					"name": "+",
+					"right_type": "PackedVector4Array",
+					"return_type": "PackedVector4Array"
+				}
+			],
+			"methods": [
+				{
+					"name": "size",
+					"return_type": "int",
+					"is_vararg": false,
+					"is_const": true,
+					"is_static": false,
+					"hash": 3173160232
+				},
+				{
+					"name": "is_empty",
+					"return_type": "bool",
+					"is_vararg": false,
+					"is_const": true,
+					"is_static": false,
+					"hash": 3918633141
+				},
+				{
+					"name": "set",
+					"is_vararg": false,
+					"is_const": false,
+					"is_static": false,
+					"hash": 1350366223,
+					"arguments": [
+						{
+							"name": "index",
+							"type": "int"
+						},
+						{
+							"name": "value",
+							"type": "Vector4"
+						}
+					]
+				},
+				{
+					"name": "push_back",
+					"return_type": "bool",
+					"is_vararg": false,
+					"is_const": false,
+					"is_static": false,
+					"hash": 3289167688,
+					"arguments": [
+						{
+							"name": "value",
+							"type": "Vector4"
+						}
+					]
+				},
+				{
+					"name": "append",
+					"return_type": "bool",
+					"is_vararg": false,
+					"is_const": false,
+					"is_static": false,
+					"hash": 3289167688,
+					"arguments": [
+						{
+							"name": "value",
+							"type": "Vector4"
+						}
+					]
+				},
+				{
+					"name": "append_array",
+					"is_vararg": false,
+					"is_const": false,
+					"is_static": false,
+					"hash": 537428395,
+					"arguments": [
+						{
+							"name": "array",
+							"type": "PackedVector4Array"
+						}
+					]
+				},
+				{
+					"name": "remove_at",
+					"is_vararg": false,
+					"is_const": false,
+					"is_static": false,
+					"hash": 2823966027,
+					"arguments": [
+						{
+							"name": "index",
+							"type": "int"
+						}
+					]
+				},
+				{
+					"name": "insert",
+					"return_type": "int",
+					"is_vararg": false,
+					"is_const": false,
+					"is_static": false,
+					"hash": 11085009,
+					"arguments": [
+						{
+							"name": "at_index",
+							"type": "int"
+						},
+						{
+							"name": "value",
+							"type": "Vector4"
+						}
+					]
+				},
+				{
+					"name": "fill",
+					"is_vararg": false,
+					"is_const": false,
+					"is_static": false,
+					"hash": 3761353134,
+					"arguments": [
+						{
+							"name": "value",
+							"type": "Vector4"
+						}
+					]
+				},
+				{
+					"name": "resize",
+					"return_type": "int",
+					"is_vararg": false,
+					"is_const": false,
+					"is_static": false,
+					"hash": 848867239,
+					"arguments": [
+						{
+							"name": "new_size",
+							"type": "int"
+						}
+					]
+				},
+				{
+					"name": "clear",
+					"is_vararg": false,
+					"is_const": false,
+					"is_static": false,
+					"hash": 3218959716
+				},
+				{
+					"name": "has",
+					"return_type": "bool",
+					"is_vararg": false,
+					"is_const": true,
+					"is_static": false,
+					"hash": 88913544,
+					"arguments": [
+						{
+							"name": "value",
+							"type": "Vector4"
+						}
+					]
+				},
+				{
+					"name": "reverse",
+					"is_vararg": false,
+					"is_const": false,
+					"is_static": false,
+					"hash": 3218959716
+				},
+				{
+					"name": "slice",
+					"return_type": "PackedVector4Array",
+					"is_vararg": false,
+					"is_const": true,
+					"is_static": false,
+					"hash": 2942803855,
+					"arguments": [
+						{
+							"name": "begin",
+							"type": "int"
+						},
+						{
+							"name": "end",
+							"type": "int",
+							"default_value": "2147483647"
+						}
+					]
+				},
+				{
+					"name": "to_byte_array",
+					"return_type": "PackedByteArray",
+					"is_vararg": false,
+					"is_const": true,
+					"is_static": false,
+					"hash": 247621236
+				},
+				{
+					"name": "sort",
+					"is_vararg": false,
+					"is_const": false,
+					"is_static": false,
+					"hash": 3218959716
+				},
+				{
+					"name": "bsearch",
+					"return_type": "int",
+					"is_vararg": false,
+					"is_const": false,
+					"is_static": false,
+					"hash": 735671678,
+					"arguments": [
+						{
+							"name": "value",
+							"type": "Vector4"
+						},
+						{
+							"name": "before",
+							"type": "bool",
+							"default_value": "true"
+						}
+					]
+				},
+				{
+					"name": "duplicate",
+					"return_type": "PackedVector4Array",
+					"is_vararg": false,
+					"is_const": false,
+					"is_static": false,
+					"hash": 3186305013
+				},
+				{
+					"name": "find",
+					"return_type": "int",
+					"is_vararg": false,
+					"is_const": true,
+					"is_static": false,
+					"hash": 3091171314,
+					"arguments": [
+						{
+							"name": "value",
+							"type": "Vector4"
+						},
+						{
+							"name": "from",
+							"type": "int",
+							"default_value": "0"
+						}
+					]
+				},
+				{
+					"name": "rfind",
+					"return_type": "int",
+					"is_vararg": false,
+					"is_const": true,
+					"is_static": false,
+					"hash": 3091171314,
+					"arguments": [
+						{
+							"name": "value",
+							"type": "Vector4"
+						},
+						{
+							"name": "from",
+							"type": "int",
+							"default_value": "-1"
+						}
+					]
+				},
+				{
+					"name": "count",
+					"return_type": "int",
+					"is_vararg": false,
+					"is_const": true,
+					"is_static": false,
+					"hash": 3956594488,
+					"arguments": [
+						{
+							"name": "value",
+							"type": "Vector4"
+						}
+					]
+				}
+			],
+			"constructors": [
+				{
+					"index": 0
+				},
+				{
+					"index": 1,
+					"arguments": [
+						{
+							"name": "from",
+							"type": "PackedVector4Array"
+						}
+					]
+				},
+				{
+					"index": 2,
+					"arguments": [
+						{
+							"name": "from",
+							"type": "Array"
+						}
+					]
+				}
+			],
+			"has_destructor": true
 		}
 	],
 	"classes": [

+ 53 - 26
gdextension/gdextension_interface.h

@@ -96,6 +96,7 @@ typedef enum {
 	GDEXTENSION_VARIANT_TYPE_PACKED_VECTOR2_ARRAY,
 	GDEXTENSION_VARIANT_TYPE_PACKED_VECTOR3_ARRAY,
 	GDEXTENSION_VARIANT_TYPE_PACKED_COLOR_ARRAY,
+	GDEXTENSION_VARIANT_TYPE_PACKED_VECTOR4_ARRAY,
 
 	GDEXTENSION_VARIANT_TYPE_VARIANT_MAX
 } GDExtensionVariantType;
@@ -1962,32 +1963,6 @@ typedef uint8_t *(*GDExtensionInterfacePackedByteArrayOperatorIndex)(GDExtension
  */
 typedef const uint8_t *(*GDExtensionInterfacePackedByteArrayOperatorIndexConst)(GDExtensionConstTypePtr p_self, GDExtensionInt p_index);
 
-/**
- * @name packed_color_array_operator_index
- * @since 4.1
- *
- * Gets a pointer to a color in a PackedColorArray.
- *
- * @param p_self A pointer to a PackedColorArray object.
- * @param p_index The index of the Color to get.
- *
- * @return A pointer to the requested Color.
- */
-typedef GDExtensionTypePtr (*GDExtensionInterfacePackedColorArrayOperatorIndex)(GDExtensionTypePtr p_self, GDExtensionInt p_index);
-
-/**
- * @name packed_color_array_operator_index_const
- * @since 4.1
- *
- * Gets a const pointer to a color in a PackedColorArray.
- *
- * @param p_self A const pointer to a const PackedColorArray object.
- * @param p_index The index of the Color to get.
- *
- * @return A const pointer to the requested Color.
- */
-typedef GDExtensionTypePtr (*GDExtensionInterfacePackedColorArrayOperatorIndexConst)(GDExtensionConstTypePtr p_self, GDExtensionInt p_index);
-
 /**
  * @name packed_float32_array_operator_index
  * @since 4.1
@@ -2170,6 +2145,58 @@ typedef GDExtensionTypePtr (*GDExtensionInterfacePackedVector3ArrayOperatorIndex
  */
 typedef GDExtensionTypePtr (*GDExtensionInterfacePackedVector3ArrayOperatorIndexConst)(GDExtensionConstTypePtr p_self, GDExtensionInt p_index);
 
+/**
+ * @name packed_vector4_array_operator_index
+ * @since 4.3
+ *
+ * Gets a pointer to a Vector4 in a PackedVector4Array.
+ *
+ * @param p_self A pointer to a PackedVector4Array object.
+ * @param p_index The index of the Vector4 to get.
+ *
+ * @return A pointer to the requested Vector4.
+ */
+typedef GDExtensionTypePtr (*GDExtensionInterfacePackedVector4ArrayOperatorIndex)(GDExtensionTypePtr p_self, GDExtensionInt p_index);
+
+/**
+ * @name packed_vector4_array_operator_index_const
+ * @since 4.3
+ *
+ * Gets a const pointer to a Vector4 in a PackedVector4Array.
+ *
+ * @param p_self A const pointer to a PackedVector4Array object.
+ * @param p_index The index of the Vector4 to get.
+ *
+ * @return A const pointer to the requested Vector4.
+ */
+typedef GDExtensionTypePtr (*GDExtensionInterfacePackedVector4ArrayOperatorIndexConst)(GDExtensionConstTypePtr p_self, GDExtensionInt p_index);
+
+/**
+ * @name packed_color_array_operator_index
+ * @since 4.1
+ *
+ * Gets a pointer to a color in a PackedColorArray.
+ *
+ * @param p_self A pointer to a PackedColorArray object.
+ * @param p_index The index of the Color to get.
+ *
+ * @return A pointer to the requested Color.
+ */
+typedef GDExtensionTypePtr (*GDExtensionInterfacePackedColorArrayOperatorIndex)(GDExtensionTypePtr p_self, GDExtensionInt p_index);
+
+/**
+ * @name packed_color_array_operator_index_const
+ * @since 4.1
+ *
+ * Gets a const pointer to a color in a PackedColorArray.
+ *
+ * @param p_self A const pointer to a PackedColorArray object.
+ * @param p_index The index of the Color to get.
+ *
+ * @return A const pointer to the requested Color.
+ */
+typedef GDExtensionTypePtr (*GDExtensionInterfacePackedColorArrayOperatorIndexConst)(GDExtensionConstTypePtr p_self, GDExtensionInt p_index);
+
 /**
  * @name array_operator_index
  * @since 4.1

+ 2 - 0
include/godot_cpp/godot.hpp

@@ -148,6 +148,8 @@ extern "C" GDExtensionInterfacePackedVector2ArrayOperatorIndex gdextension_inter
 extern "C" GDExtensionInterfacePackedVector2ArrayOperatorIndexConst gdextension_interface_packed_vector2_array_operator_index_const;
 extern "C" GDExtensionInterfacePackedVector3ArrayOperatorIndex gdextension_interface_packed_vector3_array_operator_index;
 extern "C" GDExtensionInterfacePackedVector3ArrayOperatorIndexConst gdextension_interface_packed_vector3_array_operator_index_const;
+extern "C" GDExtensionInterfacePackedVector4ArrayOperatorIndex gdextension_interface_packed_vector4_array_operator_index;
+extern "C" GDExtensionInterfacePackedVector4ArrayOperatorIndexConst gdextension_interface_packed_vector4_array_operator_index_const;
 extern "C" GDExtensionInterfaceArrayOperatorIndex gdextension_interface_array_operator_index;
 extern "C" GDExtensionInterfaceArrayOperatorIndexConst gdextension_interface_array_operator_index_const;
 extern "C" GDExtensionInterfaceArrayRef gdextension_interface_array_ref;

+ 4 - 0
src/godot.cpp

@@ -154,6 +154,8 @@ GDExtensionInterfacePackedVector2ArrayOperatorIndex gdextension_interface_packed
 GDExtensionInterfacePackedVector2ArrayOperatorIndexConst gdextension_interface_packed_vector2_array_operator_index_const = nullptr;
 GDExtensionInterfacePackedVector3ArrayOperatorIndex gdextension_interface_packed_vector3_array_operator_index = nullptr;
 GDExtensionInterfacePackedVector3ArrayOperatorIndexConst gdextension_interface_packed_vector3_array_operator_index_const = nullptr;
+GDExtensionInterfacePackedVector4ArrayOperatorIndex gdextension_interface_packed_vector4_array_operator_index = nullptr;
+GDExtensionInterfacePackedVector4ArrayOperatorIndexConst gdextension_interface_packed_vector4_array_operator_index_const = nullptr;
 GDExtensionInterfaceArrayOperatorIndex gdextension_interface_array_operator_index = nullptr;
 GDExtensionInterfaceArrayOperatorIndexConst gdextension_interface_array_operator_index_const = nullptr;
 GDExtensionInterfaceArrayRef gdextension_interface_array_ref = nullptr;
@@ -394,6 +396,8 @@ GDExtensionBool GDExtensionBinding::init(GDExtensionInterfaceGetProcAddress p_ge
 	LOAD_PROC_ADDRESS(packed_vector2_array_operator_index_const, GDExtensionInterfacePackedVector2ArrayOperatorIndexConst);
 	LOAD_PROC_ADDRESS(packed_vector3_array_operator_index, GDExtensionInterfacePackedVector3ArrayOperatorIndex);
 	LOAD_PROC_ADDRESS(packed_vector3_array_operator_index_const, GDExtensionInterfacePackedVector3ArrayOperatorIndexConst);
+	LOAD_PROC_ADDRESS(packed_vector4_array_operator_index, GDExtensionInterfacePackedVector4ArrayOperatorIndex);
+	LOAD_PROC_ADDRESS(packed_vector4_array_operator_index_const, GDExtensionInterfacePackedVector4ArrayOperatorIndexConst);
 	LOAD_PROC_ADDRESS(array_operator_index, GDExtensionInterfaceArrayOperatorIndex);
 	LOAD_PROC_ADDRESS(array_operator_index_const, GDExtensionInterfaceArrayOperatorIndexConst);
 	LOAD_PROC_ADDRESS(array_ref, GDExtensionInterfaceArrayRef);

+ 19 - 0
src/variant/packed_arrays.cpp

@@ -43,6 +43,7 @@
 #include <godot_cpp/variant/packed_string_array.hpp>
 #include <godot_cpp/variant/packed_vector2_array.hpp>
 #include <godot_cpp/variant/packed_vector3_array.hpp>
+#include <godot_cpp/variant/packed_vector4_array.hpp>
 
 namespace godot {
 
@@ -198,6 +199,24 @@ Vector3 *PackedVector3Array::ptrw() {
 	return (Vector3 *)internal::gdextension_interface_packed_vector3_array_operator_index((GDExtensionTypePtr *)this, 0);
 }
 
+const Vector4 &PackedVector4Array::operator[](int64_t p_index) const {
+	const Vector4 *vec = (const Vector4 *)internal::gdextension_interface_packed_vector4_array_operator_index_const((GDExtensionTypePtr *)this, p_index);
+	return *vec;
+}
+
+Vector4 &PackedVector4Array::operator[](int64_t p_index) {
+	Vector4 *vec = (Vector4 *)internal::gdextension_interface_packed_vector4_array_operator_index((GDExtensionTypePtr *)this, p_index);
+	return *vec;
+}
+
+const Vector4 *PackedVector4Array::ptr() const {
+	return (const Vector4 *)internal::gdextension_interface_packed_vector4_array_operator_index_const((GDExtensionTypePtr *)this, 0);
+}
+
+Vector4 *PackedVector4Array::ptrw() {
+	return (Vector4 *)internal::gdextension_interface_packed_vector4_array_operator_index((GDExtensionTypePtr *)this, 0);
+}
+
 const Variant &Array::operator[](int64_t p_index) const {
 	const Variant *var = (const Variant *)internal::gdextension_interface_array_operator_index_const((GDExtensionTypePtr *)this, p_index);
 	return *var;