diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2020-09-18 17:36:01 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-18 17:36:01 +0200 |
commit | a332e2f5b2d4acfda639701d719ff415d73c5d0b (patch) | |
tree | 88d7e144b99c90d772b26095946b5ebe641820d1 /modules/visual_script/visual_script_editor.cpp | |
parent | cff43e5326537dd0964ec84ec94382301b3c943b (diff) | |
parent | a598c77058ad25f0272b8978e8594be13a26d3d4 (diff) | |
download | redot-engine-a332e2f5b2d4acfda639701d719ff415d73c5d0b.tar.gz |
Merge pull request #41861 from Razoric480/fix-vscript-value-by-type
Add a function to sanitize variant values in visual script
Diffstat (limited to 'modules/visual_script/visual_script_editor.cpp')
-rw-r--r-- | modules/visual_script/visual_script_editor.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/modules/visual_script/visual_script_editor.cpp b/modules/visual_script/visual_script_editor.cpp index 7c3af016b9..b1d8c05d87 100644 --- a/modules/visual_script/visual_script_editor.cpp +++ b/modules/visual_script/visual_script_editor.cpp @@ -1124,8 +1124,8 @@ void VisualScriptEditor::_update_members() { TreeItem *ti = members->create_item(variables); ti->set_text(0, E->get()); - Variant var = script->get_variable_default_value(E->get()); - ti->set_suffix(0, "= " + String(var)); + + ti->set_suffix(0, "= " + _sanitized_variant_text(E->get())); ti->set_icon(0, type_icons[script->get_variable_info(E->get()).type]); ti->set_selectable(0, true); @@ -1167,6 +1167,18 @@ void VisualScriptEditor::_update_members() { updating_members = false; } +String VisualScriptEditor::_sanitized_variant_text(const StringName &property_name) { + Variant var = script->get_variable_default_value(property_name); + + if (script->get_variable_info(property_name).type != Variant::NIL) { + Callable::CallError ce; + const Variant *converted = &var; + var = Variant::construct(script->get_variable_info(property_name).type, &converted, 1, ce, false); + } + + return String(var); +} + void VisualScriptEditor::_member_selected() { if (updating_members) { return; |