From 01802074a01c41d8672664751f80b80069796f12 Mon Sep 17 00:00:00 2001 From: PouleyKetchoupp Date: Fri, 22 May 2020 21:50:16 +0200 Subject: [PATCH] Fix dialog spam when inspecting MeshInstance from model file Avoid load_scene for built-in resources to make sure we don't open a scene tab and prompt for model file editing. Load scene as regular resource instead and store the reference to keep the dependency until the remote inspector cache is cleared. --- editor/debugger/editor_debugger_inspector.cpp | 10 ++++------ editor/debugger/editor_debugger_inspector.h | 1 + 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/editor/debugger/editor_debugger_inspector.cpp b/editor/debugger/editor_debugger_inspector.cpp index 125439d09b4..dcd7220ed00 100644 --- a/editor/debugger/editor_debugger_inspector.cpp +++ b/editor/debugger/editor_debugger_inspector.cpp @@ -153,12 +153,9 @@ ObjectID EditorDebuggerInspector::add_object(const Array &p_arr) { if (path.find("::") != -1) { // built-in resource String base_path = path.get_slice("::", 0); - if (ResourceLoader::get_resource_type(base_path) == "PackedScene") { - if (!EditorNode::get_singleton()->is_scene_open(base_path)) { - EditorNode::get_singleton()->load_scene(base_path); - } - } else { - EditorNode::get_singleton()->load_resource(base_path); + RES dependency = ResourceLoader::load(base_path); + if (dependency.is_valid()) { + remote_dependencies.insert(dependency); } } var = ResourceLoader::load(path); @@ -211,6 +208,7 @@ void EditorDebuggerInspector::clear_cache() { memdelete(E->value()); } remote_objects.clear(); + remote_dependencies.clear(); } Object *EditorDebuggerInspector::get_object(ObjectID p_id) { diff --git a/editor/debugger/editor_debugger_inspector.h b/editor/debugger/editor_debugger_inspector.h index 638dee3c3fc..7d13a4c362b 100644 --- a/editor/debugger/editor_debugger_inspector.h +++ b/editor/debugger/editor_debugger_inspector.h @@ -69,6 +69,7 @@ class EditorDebuggerInspector : public EditorInspector { private: ObjectID inspected_object_id; Map remote_objects; + Set remote_dependencies; EditorDebuggerRemoteObject *variables; void _object_selected(ObjectID p_object);