1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-05 12:10:55 +00:00

Many fixes to script editor remote debugger, closes #13346

This commit is contained in:
Juan Linietsky
2018-11-11 09:14:06 -03:00
parent c3023e84c2
commit d16ce4a8ed
3 changed files with 33 additions and 9 deletions

View File

@@ -123,8 +123,8 @@ protected:
if (!prop_values.has(p_name) || String(p_name).begins_with("Constants/"))
return false;
emit_signal("value_edited", p_name, p_value);
prop_values[p_name] = p_value;
emit_signal("value_edited", p_name, p_value);
return true;
}
@@ -479,6 +479,11 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da
debugObj->connect("value_edited", this, "_scene_tree_property_value_edited");
}
int old_prop_size = debugObj->prop_list.size();
debugObj->prop_list.clear();
int new_props_added = 0;
Set<String> changed;
for (int i = 0; i < properties.size(); i++) {
Array prop = properties[i];
@@ -511,18 +516,34 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da
}
}
if (is_new_object) {
//don't update.. it's the same, instead refresh
debugObj->prop_list.push_back(pinfo);
}
//always add the property, since props may have been added or removed
debugObj->prop_list.push_back(pinfo);
debugObj->prop_values[pinfo.name] = var;
if (!debugObj->prop_values.has(pinfo.name)) {
new_props_added++;
debugObj->prop_values[pinfo.name] = var;
} else {
if (bool(Variant::evaluate(Variant::OP_NOT_EQUAL, debugObj->prop_values[pinfo.name], var))) {
debugObj->prop_values[pinfo.name] = var;
changed.insert(pinfo.name);
}
}
}
if (editor->get_editor_history()->get_current() != debugObj->get_instance_id()) {
editor->push_item(debugObj, "");
} else {
debugObj->update();
if (old_prop_size == debugObj->prop_list.size() && new_props_added == 0) {
//only some may have changed, if so, then update those, if exist
for (Set<String>::Element *E = changed.front(); E; E = E->next()) {
EditorNode::get_singleton()->get_inspector()->update_property(E->get());
}
} else {
//full update, because props were added or removed
debugObj->update();
}
}
} else if (p_msg == "message:video_mem") {
@@ -2234,7 +2255,7 @@ ScriptEditorDebugger::ScriptEditorDebugger(EditorNode *p_editor) {
p_editor->get_undo_redo()->set_method_notify_callback(_method_changeds, this);
p_editor->get_undo_redo()->set_property_notify_callback(_property_changeds, this);
live_debug = false;
live_debug = true;
last_path_id = false;
error_count = 0;
warning_count = 0;