internal void DeleteSceneNode(int sceneId, bool addToExclusionFilter) { SceneModel model = TargetManager.scenes.Find((x) => x.SceneId == sceneId); if (sceneId == TargetManager.AnyScene.SceneId) { return; } if (model == null) { return; } Undo.SetCurrentGroupName("Delete Scene Node"); int undoGroup = Undo.GetCurrentGroup(); Undo.RegisterCompleteObjectUndo(SceneNodesObject.targetObject, "Scene Nodes"); SerializedProperty scenesProperty = ScenesProp; for (int i = scenesProperty.arraySize - 1; i >= 0; i--) { SerializedSceneModel serializedScene = GetSerializedSceneModel(i); serializedScene.DeleteTransitionsInvolving(sceneId); if (serializedScene.SceneIdProp.intValue == sceneId) { scenesProperty.DeleteArrayElementAtIndex(i); } } SerializedManager.ApplyModifiedProperties(); for (int i = 0; i < SceneNodesProp.arraySize; i++) { if (GetSceneNodeIdProperty(i).intValue == sceneId) { SceneNodesProp.DeleteArrayElementAtIndex(i); break; } } SceneNodesObject.ApplyModifiedProperties(); if (addToExclusionFilter) { SerializedProperty exclusion = SerializedSceneFilter.FindProperty("FilesToExclude"); SerializedProperty newEntry = exclusion.AddArrayElement(); newEntry.stringValue = model.SceneAssetPath; SerializedSceneFilter.ApplyModifiedProperties(); } Undo.CollapseUndoOperations(undoGroup); }
internal SerializedProperty GetSceneNodeIdProperty(int nodeIndex) { return(SceneNodesProp.GetArrayElementAtIndex(nodeIndex).FindPropertyRelative("SceneId")); }