瀏覽代碼

C#: Skip methods with pointer parameters

Raul Santos 2 年之前
父節點
當前提交
ab5e532f1a
共有 1 個文件被更改,包括 17 次插入0 次删除
  1. 17 0
      modules/mono/editor/bindings_generator.cpp

+ 17 - 0
modules/mono/editor/bindings_generator.cpp

@@ -2795,6 +2795,18 @@ bool BindingsGenerator::_arg_default_value_is_assignable_to_type(const Variant &
 	return false;
 }
 
+bool method_has_ptr_parameter(MethodInfo p_method_info) {
+	if (p_method_info.return_val.type == Variant::INT && p_method_info.return_val.hint == PROPERTY_HINT_INT_IS_POINTER) {
+		return true;
+	}
+	for (PropertyInfo arg : p_method_info.arguments) {
+		if (arg.type == Variant::INT && arg.hint == PROPERTY_HINT_INT_IS_POINTER) {
+			return true;
+		}
+	}
+	return false;
+}
+
 bool BindingsGenerator::_populate_object_type_interfaces() {
 	obj_types.clear();
 
@@ -2938,6 +2950,11 @@ bool BindingsGenerator::_populate_object_type_interfaces() {
 				continue;
 			}
 
+			if (method_has_ptr_parameter(method_info)) {
+				// Pointers are not supported.
+				continue;
+			}
+
 			MethodInterface imethod;
 			imethod.name = method_info.name;
 			imethod.cname = cname;