فهرست منبع

Merge pull request #17380 from robfram/fix-change-node-type

Fix overwriting all common properties when using `Change Type` tool
Rémi Verschelde 7 سال پیش
والد
کامیت
319167a67a
1فایلهای تغییر یافته به همراه5 افزوده شده و 1 حذف شده
  1. 5 1
      editor/scene_tree_dock.cpp

+ 5 - 1
editor/scene_tree_dock.cpp

@@ -1411,6 +1411,7 @@ void SceneTreeDock::replace_node(Node *p_node, Node *p_by_node) {
 
 	Node *n = p_node;
 	Node *newnode = p_by_node;
+	Node *default_oldnode = Object::cast_to<Node>(ClassDB::instance(n->get_class()));
 	List<PropertyInfo> pinfo;
 	n->get_property_list(&pinfo);
 
@@ -1419,8 +1420,11 @@ void SceneTreeDock::replace_node(Node *p_node, Node *p_by_node) {
 			continue;
 		if (E->get().name == "__meta__")
 			continue;
-		newnode->set(E->get().name, n->get(E->get().name));
+		if (default_oldnode->get(E->get().name) != n->get(E->get().name)) {
+			newnode->set(E->get().name, n->get(E->get().name));
+		}
 	}
+	memdelete(default_oldnode);
 
 	editor->push_item(NULL);