public void PopGroup() { lock (m_lockObject) { CUndoItem groupCache = m_currentUndoGroup; m_currentUndoGroup = null; Record(groupCache); } }
public void Redo() { lock (m_lockObject) { bool bWasRecording = IsRecording; IsRecording = false; CUndoItem redoItem = RedoStack.Pop(); redoItem.Redo(); UndoStack.Push(redoItem); IsRecording = bWasRecording; OnItemRedone?.Invoke(this, redoItem); } }
public void Undo() { lock (m_lockObject) { bool bWasRecording = IsRecording; IsRecording = false; CUndoItem undoItem = UndoStack.Pop(); undoItem.Undo(); RedoStack.Push(undoItem); IsRecording = bWasRecording; OnItemUndone?.Invoke(this, undoItem); } }
public void Record(CUndoItem item) { if (!IsRecording) { return; } lock (m_lockObject) { if (m_currentUndoGroup != null) { m_currentUndoGroup.Items.Add(item); return; } UndoStack.Push(item); RedoStack.Clear(); OnItemRecorded?.Invoke(this, item); } }
public static void Record(CUndoItem item) { Instance?.Record(item); }