BsUndoRedo.h 848 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #pragma once
  2. #include "BsEditorPrerequisites.h"
  3. #include "BsModule.h"
  4. namespace BansheeEngine
  5. {
  6. class UndoRedo : public Module<UndoRedo>
  7. {
  8. struct GroupData
  9. {
  10. String name;
  11. UINT32 numEntries;
  12. };
  13. public:
  14. UndoRedo();
  15. ~UndoRedo();
  16. void undo();
  17. void redo();
  18. void pushGroup(const String& name);
  19. void popGroup(const String& name);
  20. void registerCommand(EditorCommand* command);
  21. private:
  22. static const UINT32 MAX_STACK_ELEMENTS;
  23. EditorCommand** mUndoStack;
  24. EditorCommand** mRedoStack;
  25. UINT32 mUndoStackPtr;
  26. UINT32 mUndoNumElements;
  27. UINT32 mRedoStackPtr;
  28. UINT32 mRedoNumElements;
  29. Stack<GroupData> mGroups;
  30. EditorCommand* removeLastFromUndoStack();
  31. void addToUndoStack(EditorCommand* command);
  32. void clearUndoStack();
  33. void clearRedoStack();
  34. };
  35. }