Quellcode durchsuchen

Merge pull request #104384 from Hilderin/fix-crash-reimport-nested-gltf-scene

Fix crash when reimporting nested gltf scenes
Rémi Verschelde vor 5 Monaten
Ursprung
Commit
03359c8735
1 geänderte Dateien mit 12 neuen und 0 gelöschten Zeilen
  1. 12 0
      editor/editor_node.cpp

+ 12 - 0
editor/editor_node.cpp

@@ -6457,6 +6457,18 @@ void EditorNode::reload_instances_with_path_in_edited_scenes() {
 
 			get_scene_editor_data_for_node(owner, original_node, scene_editor_data_table);
 
+			// The current node being reloaded may also be an additional node for another node
+			// that is in the process of being reloaded.
+			// Replacing the additional node with the new one prevents a crash where nodes
+			// in 'addition_list' are removed from the scene tree and queued for deletion.
+			for (InstanceModificationsEntry &im : scene_modifications->instance_list) {
+				for (AdditiveNodeEntry &additive_node_entry : im.addition_list) {
+					if (additive_node_entry.node == original_node) {
+						additive_node_entry.node = instantiated_node;
+					}
+				}
+			}
+
 			bool original_node_scene_instance_load_placeholder = original_node->get_scene_instance_load_placeholder();
 
 			// Delete all the remaining node children.