Selaa lähdekoodia

Merge pull request #49386 from KoBeWi/is_instance_or_is_not_instance

Don't remap resources belonging to instance
Rémi Verschelde 4 vuotta sitten
vanhempi
commit
bbd41b014c
1 muutettua tiedostoa jossa 10 lisäystä ja 0 poistoa
  1. 10 0
      editor/scene_tree_dock.cpp

+ 10 - 0
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);
 				}