/// <summary> /// Constructor. /// </summary> /// <param name="selectReason"> /// If there were any objects which were selected, this specifies the selection reason. /// </param> /// <param name="objectsWhichWereSelected"> /// The objects which were selected. If the select reason is 'None', this list is empty. /// This can be null or empty when the select reason is 'None'. /// </param> /// <param name="deselectReason"> /// If there were any objects which were deselected, this secifies the reason why they /// were deselected. /// </param> /// <param name="objectsWhichWereDeselected"> /// The objects which were deselected. If the select reason is 'None', this list is empty. /// This can be null or empty when the deselect reason is 'None'. /// </param> /// <param name="undoRedoSnapshot"> /// If the object selection was changed because of an Undo/Redo operation, this has to point /// to a snapshot instance which represents the state of the object selection before being /// modified. Otherwise, this has to be null. /// </param> public ObjectSelectionChangedEventArgs(ObjectSelectReason selectReason, List <GameObject> objectsWhichWereSelected, ObjectDeselectReason deselectReason, List <GameObject> objectsWhichWereDeselected, ObjectSelectionSnapshot undoRedoSnapshot = null) { _selectReason = selectReason; if (objectsWhichWereSelected != null) { _objectsWhichWereSelected = new List <GameObject>(objectsWhichWereSelected); } else { _objectsWhichWereSelected = new List <GameObject>(); } _deselectReason = deselectReason; if (objectsWhichWereDeselected != null) { _objectsWhichWereDeselected = new List <GameObject>(objectsWhichWereDeselected); } else { _objectsWhichWereDeselected = new List <GameObject>(); } if (_selectReason == ObjectSelectReason.Undo || _selectReason == ObjectSelectReason.Redo || _deselectReason == ObjectDeselectReason.Undo || _deselectReason == ObjectDeselectReason.Redo) { _undoRedoSnapshot = undoRedoSnapshot; } }
public void Execute() { // Only delete if we haven't deleted already if (_postDeleteSnapshot == null && _selectedObjects.Count != 0) { // Loop through each selected object _deletedObjects = new List <GameObject>(_selectedObjects.Count); foreach (var selectedObject in _selectedObjects) { // Add the object to the deleted list and make it inactive _deletedObjects.Add(selectedObject); selectedObject.SetActive(false); } // Take a post delete snapshot to allow us to redo _postDeleteSnapshot = new ObjectSelectionSnapshot(); _postDeleteSnapshot.Snapshot(); // Record th action with the Undo/Redo system RTUndoRedo.Get.RecordAction(this); _canDestroyObjects = true; } }
public DeleteSelectedObjectsAction(List <GameObject> selectedObjects, ObjectSelectionSnapshot preDeleteSnapshot) { _selectedObjects = new List <GameObject>(selectedObjects); _preDeleteSnapshot = preDeleteSnapshot; }
public PostObjectSelectionChangedAction(ObjectSelectionSnapshot preChangeSnapshot, ObjectSelectionSnapshot postChangeSnapshot) { _preChangeSnapshot = preChangeSnapshot; _postChangeSnapshot = postChangeSnapshot; }
public ObjectSelectionSnapshot(ObjectSelectionSnapshot copy) { _snapshotObjects = copy.SnapshotObjects; _gizmosSnapshot = copy.GizmosSnapshot; }