diff options
author | kobewi <kobewi4e@gmail.com> | 2021-06-07 12:52:05 +0200 |
---|---|---|
committer | kobewi <kobewi4e@gmail.com> | 2021-06-07 12:52:05 +0200 |
commit | 8e8398209e025d80a9981c0dbf8362a9ad1e600b (patch) | |
tree | c06de5ec57fb4e00aa12b26fbbb7155bfdc4ca69 | |
parent | d567abd714f25afabf29673383697f1cf3b37329 (diff) |
Don't remap resources belonging to instance
-rw-r--r-- | editor/scene_tree_dock.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/editor/scene_tree_dock.cpp b/editor/scene_tree_dock.cpp index 349e05b47b..8d6b7f3389 100644 --- a/editor/scene_tree_dock.cpp +++ b/editor/scene_tree_dock.cpp @@ -2959,6 +2959,7 @@ void SceneTreeDock::_clear_clipboard() { void SceneTreeDock::_create_remap_for_node(Node *p_node, Map<RES, RES> &r_remap) { List<PropertyInfo> props; p_node->get_property_list(&props); + bool is_instanced = EditorPropertyRevert::may_node_be_in_instance(p_node); for (List<PropertyInfo>::Element *E = props.front(); E; E = E->next()) { if (!(E->get().usage & PROPERTY_USAGE_STORAGE)) { @@ -2969,6 +2970,15 @@ void SceneTreeDock::_create_remap_for_node(Node *p_node, Map<RES, RES> &r_remap) if (v.is_ref()) { RES res = v; if (res.is_valid()) { + if (is_instanced) { + Variant orig; + if (EditorPropertyRevert::get_instanced_node_original_property(p_node, E->get().name, orig)) { + if (!EditorPropertyRevert::is_node_property_different(p_node, v, orig)) { + continue; + } + } + } + if ((res->get_path() == "" || res->get_path().find("::") > -1) && !r_remap.has(res)) { _create_remap_for_resource(res, r_remap); } |