From 781b979292553e44f39afbb2bf6b8eba173172d5 Mon Sep 17 00:00:00 2001 From: PouleyKetchoupp Date: Mon, 6 Sep 2021 10:31:49 -0700 Subject: [PATCH] Fix NodePath default argument in mono bindings Backport from master, mono was generating "" as default argument instead of (NodePath)"". --- modules/mono/editor/bindings_generator.cpp | 8 +++++++- modules/mono/editor/bindings_generator.h | 2 ++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/modules/mono/editor/bindings_generator.cpp b/modules/mono/editor/bindings_generator.cpp index c9acd5cec6b..f67e3effe86 100644 --- a/modules/mono/editor/bindings_generator.cpp +++ b/modules/mono/editor/bindings_generator.cpp @@ -2577,7 +2577,13 @@ bool BindingsGenerator::_arg_default_value_from_variant(const Variant &p_val, Ar break; case Variant::STRING: case Variant::NODE_PATH: - r_iarg.default_argument = "\"" + r_iarg.default_argument + "\""; + if (r_iarg.type.cname == name_cache.type_NodePath) { + r_iarg.default_argument = "(%s)\"" + r_iarg.default_argument + "\""; + r_iarg.def_param_mode = ArgumentInterface::NULLABLE_REF; + } else { + CRASH_COND(r_iarg.type.cname != name_cache.type_String); + r_iarg.default_argument = "\"" + r_iarg.default_argument + "\""; + } break; case Variant::PLANE: { Plane plane = p_val.operator Plane(); diff --git a/modules/mono/editor/bindings_generator.h b/modules/mono/editor/bindings_generator.h index eac0825977c..5057c5e39b7 100644 --- a/modules/mono/editor/bindings_generator.h +++ b/modules/mono/editor/bindings_generator.h @@ -522,6 +522,7 @@ class BindingsGenerator { StringName type_Reference; StringName type_RID; StringName type_String; + StringName type_NodePath; StringName type_at_GlobalScope; StringName enum_Error; @@ -546,6 +547,7 @@ class BindingsGenerator { type_Reference = StaticCString::create("Reference"); type_RID = StaticCString::create("RID"); type_String = StaticCString::create("String"); + type_NodePath = StaticCString::create("NodePath"); type_at_GlobalScope = StaticCString::create("@GlobalScope"); enum_Error = StaticCString::create("Error");