diff options
author | RĂ©mi Verschelde <remi@verschelde.fr> | 2022-05-31 12:36:37 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-31 12:36:37 +0200 |
commit | 68bf4eb100a6b49133157b0ecf8c55119b575be8 (patch) | |
tree | f3e013edc038bbb6433b676cd0da3d21ee262459 /editor/plugins | |
parent | cf9aad63badbb3cc002071335fdddc9153491d3b (diff) | |
parent | eba3e0a9fce1f10e8ad7311e84e9f3d38dae008e (diff) |
Merge pull request #61440 from vnen/gdscript-scene-unique-nodes
GDScript: Support `%` in shorthand for `get_node`
Diffstat (limited to 'editor/plugins')
-rw-r--r-- | editor/plugins/script_text_editor.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/editor/plugins/script_text_editor.cpp b/editor/plugins/script_text_editor.cpp index b0cc0bff63..05c707c065 100644 --- a/editor/plugins/script_text_editor.cpp +++ b/editor/plugins/script_text_editor.cpp @@ -1570,9 +1570,11 @@ void ScriptTextEditor::drop_data_fw(const Point2 &p_point, const Variant &p_data continue; } + bool is_unique = false; String path; if (node->is_unique_name_in_owner()) { - path = "%" + node->get_name(); + path = node->get_name(); + is_unique = true; } else { path = sn->get_path_to(node); } @@ -1585,9 +1587,9 @@ void ScriptTextEditor::drop_data_fw(const Point2 &p_point, const Variant &p_data String variable_name = String(node->get_name()).camelcase_to_underscore(true).validate_identifier(); if (use_type) { - text_to_drop += vformat("@onready var %s: %s = $%s\n", variable_name, node->get_class_name(), path); + text_to_drop += vformat("@onready var %s: %s = %s%s\n", variable_name, node->get_class_name(), is_unique ? "%" : "$", path); } else { - text_to_drop += vformat("@onready var %s = $%s\n", variable_name, path); + text_to_drop += vformat("@onready var %s = %s%s\n", variable_name, is_unique ? "%" : "$", path); } } } else { @@ -1602,19 +1604,22 @@ void ScriptTextEditor::drop_data_fw(const Point2 &p_point, const Variant &p_data continue; } + bool is_unique = false; String path; if (node->is_unique_name_in_owner()) { - path = "%" + node->get_name(); + path = node->get_name(); + is_unique = true; } else { path = sn->get_path_to(node); } + for (const String &segment : path.split("/")) { if (!segment.is_valid_identifier()) { path = path.c_escape().quote(quote_style); break; } } - text_to_drop += "$" + path; + text_to_drop += (is_unique ? "%" : "$") + path; } } |