diff --git a/editor/scene_tree_dock.cpp b/editor/scene_tree_dock.cpp index d7c6cb04a4..c92455d9c1 100644 --- a/editor/scene_tree_dock.cpp +++ b/editor/scene_tree_dock.cpp @@ -1546,6 +1546,14 @@ void SceneTreeDock::_fill_path_renames(Vector base_path, Vector &p_to_delete) const { + // Skip if this node will be deleted. + for (const Node *F : p_to_delete) { + if (F == p_node || F->is_ancestor_of(p_node)) { + return false; + } + } + + // This is an AnimationPlayer that survives the deletion. AnimationPlayer *ap = Object::cast_to(p_node); if (ap) { Node *root = ap->get_node(ap->get_root()); @@ -1574,11 +1582,13 @@ bool SceneTreeDock::_has_tracks_to_delete(Node *p_node, List &p_to_delet } } + // Recursively check child nodes. for (int i = 0; i < p_node->get_child_count(); i++) { if (_has_tracks_to_delete(p_node->get_child(i), p_to_delete)) { return true; } } + return false; }