瀏覽代碼

Move Array:set_typed to internal GDExtension structure.

bruvzg 2 年之前
父節點
當前提交
40d3cfd97b
共有 5 個文件被更改,包括 330 次插入175 次删除
  1. 1 0
      binding_generator.py
  2. 324 172
      gdextension/extension_api.json
  3. 1 0
      gdextension/gdextension_interface.h
  4. 4 0
      src/variant/packed_arrays.cpp
  5. 0 3
      test/demo/main.gd

+ 1 - 0
binding_generator.py

@@ -696,6 +696,7 @@ def generate_builtin_class_header(builtin_api, size, used_classes, fully_used_cl
     if class_name == "Array":
         result.append(f"\tconst Variant &operator[](int p_index) const;")
         result.append(f"\tVariant &operator[](int p_index);")
+        result.append(f"\tvoid set_typed(uint32_t p_type, const StringName &p_class_name, const Variant &p_script);")
 
     if class_name == "Dictionary":
         result.append(f"\tconst Variant &operator[](const Variant &p_key) const;")

文件差異過大導致無法顯示
+ 324 - 172
gdextension/extension_api.json


+ 1 - 0
gdextension/gdextension_interface.h

@@ -551,6 +551,7 @@ typedef struct {
 
 	GDExtensionVariantPtr (*array_operator_index)(GDExtensionTypePtr p_self, GDExtensionInt p_index); // p_self should be an Array ptr
 	GDExtensionVariantPtr (*array_operator_index_const)(GDExtensionConstTypePtr p_self, GDExtensionInt p_index); // p_self should be an Array ptr
+	void (*array_set_typed)(GDExtensionTypePtr p_self, uint32_t p_type, GDExtensionConstStringNamePtr p_class_name, GDExtensionConstVariantPtr p_script); // p_self should be an Array ptr
 
 	/* Dictionary functions */
 

+ 4 - 0
src/variant/packed_arrays.cpp

@@ -208,6 +208,10 @@ Variant &Array::operator[](int p_index) {
 	return *var;
 }
 
+void Array::set_typed(uint32_t p_type, const StringName &p_class_name, const Variant &p_script) {
+	internal::gde_interface->array_set_typed((GDExtensionTypePtr *)this, p_type, (GDExtensionConstStringNamePtr)&p_class_name, (GDExtensionConstVariantPtr)&p_script);
+}
+
 const Variant &Dictionary::operator[](const Variant &p_key) const {
 	const Variant *var = (const Variant *)internal::gde_interface->dictionary_operator_index_const((GDExtensionTypePtr *)this, (GDExtensionVariantPtr)&p_key);
 	return *var;

+ 0 - 3
test/demo/main.gd

@@ -57,9 +57,6 @@ func _ready():
 	prints("String += operator")
 	prints("  test string +=", $Example.test_string_ops())
 
-	prints("WorkerThreadPool")
-	prints("  test worker_thread_pool", $Example.test_workpool_ops())
-
 	prints("PackedArray iterators")
 	prints("  test packed array iterators", $Example.test_vector_ops())
 

部分文件因文件數量過多而無法顯示