Преглед на файлове

Add a VScript func to sanitize variant values

Backported to 3.2
Francois Belair преди 5 години
родител
ревизия
d35ced06a6
променени са 2 файла, в които са добавени 15 реда и са изтрити 2 реда
  1. 14 2
      modules/visual_script/visual_script_editor.cpp
  2. 1 0
      modules/visual_script/visual_script_editor.h

+ 14 - 2
modules/visual_script/visual_script_editor.cpp

@@ -991,8 +991,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);
@@ -1032,6 +1032,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) {
+		Variant::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)

+ 1 - 0
modules/visual_script/visual_script_editor.h

@@ -146,6 +146,7 @@ class VisualScriptEditor : public ScriptEditorBase {
 	bool updating_members;
 
 	void _update_members();
+	String _sanitized_variant_text(const StringName &property_name);
 
 	StringName selected;