SceneEditHistory.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. //
  2. // Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved
  3. // LICENSE: Atomic Game Engine Editor and Tools EULA
  4. // Please see LICENSE_ATOMIC_EDITOR_AND_TOOLS.md in repository root for
  5. // license information: https://github.com/AtomicGameEngine/AtomicGameEngine
  6. //
  7. #pragma once
  8. #include <Atomic/Core/Object.h>
  9. using namespace Atomic;
  10. namespace Atomic
  11. {
  12. class Node;
  13. }
  14. namespace AtomicEditor
  15. {
  16. class SceneEditor3D;
  17. class SelectionEditOp;
  18. class SceneEditHistory: public Object
  19. {
  20. OBJECT(SceneEditHistory);
  21. public:
  22. SceneEditHistory(Context* context, SceneEditor3D* sceneEditor);
  23. virtual ~SceneEditHistory();
  24. void BeginSelectionEdit();
  25. void EndSelectionEdit(bool begin = true);
  26. /// Removes a node from the edit history
  27. void RemoveNode(Node* node);
  28. void Undo();
  29. void Redo();
  30. private:
  31. void HandleSceneNodeSelected(StringHash eventType, VariantMap& eventData);
  32. void HandleSceneEditBegin(StringHash eventType, VariantMap& eventData);
  33. void HandleSceneEditEnd(StringHash eventType, VariantMap& eventData);
  34. void HandleSceneEditAddRemoveNodes(StringHash eventType, VariantMap& eventData);
  35. void HandleSceneEditNodeAdded(StringHash eventType, VariantMap& eventData);
  36. void HandleSceneEditNodeRemoved(StringHash eventType, VariantMap& eventData);
  37. void AddUndoOp(SelectionEditOp* op);
  38. SharedPtr<SceneEditor3D> sceneEditor_;
  39. SelectionEditOp* curSelEditOp_;
  40. PODVector<SelectionEditOp*> undoHistory_;
  41. PODVector<SelectionEditOp*> redoHistory_;
  42. bool addingRemovingNodes_;
  43. };
  44. }