BsScriptUndoRedo.h 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #pragma once
  4. #include "BsScriptEditorPrerequisites.h"
  5. #include "BsScriptObject.h"
  6. namespace bs
  7. {
  8. class UndoRedo;
  9. class ScriptCmdManaged;
  10. /** @addtogroup ScriptInteropEditor
  11. * @{
  12. */
  13. /** Interop class between C++ & CLR for UndoRedo. */
  14. class BS_SCR_BED_EXPORT ScriptUndoRedo : public ScriptObject <ScriptUndoRedo>
  15. {
  16. public:
  17. SCRIPT_OBJ(EDITOR_ASSEMBLY, EDITOR_NS, "UndoRedo");
  18. /** Creates a new managed UndoRedo stack. */
  19. static MonoObject* create();
  20. /** Creates the globally accessible undo/redo stack. */
  21. static void startUp();
  22. /** Cleans up any data related to the global undo/redo stack. */
  23. static void shutDown();
  24. private:
  25. ScriptUndoRedo(MonoObject* instance, const SPtr<UndoRedo>& undoRedo);
  26. SPtr<UndoRedo> mUndoRedo;
  27. static ScriptUndoRedo* sGlobalUndoRedo;
  28. static HEvent sDomainLoadConn;
  29. /************************************************************************/
  30. /* CLR HOOKS */
  31. /************************************************************************/
  32. static void internal_CreateInstance(MonoObject* instance);
  33. static void internal_Undo(ScriptUndoRedo* thisPtr);
  34. static void internal_Redo(ScriptUndoRedo* thisPtr);
  35. static void internal_RegisterCommand(ScriptUndoRedo* thisPtr, ScriptCmdManaged* command);
  36. static void internal_PushGroup(ScriptUndoRedo* thisPtr, MonoString* name);
  37. static void internal_PopGroup(ScriptUndoRedo* thisPtr, MonoString* name);
  38. static void internal_Clear(ScriptUndoRedo* thisPtr);
  39. static UINT32 internal_GetTopCommandId(ScriptUndoRedo* thisPtr);
  40. static void internal_PopCommand(ScriptUndoRedo* thisPtr, UINT32 id);
  41. static MonoObject* internal_CloneSO(ScriptSceneObject* soPtr, MonoString* description);
  42. static MonoArray* internal_CloneSOMulti(MonoArray* soPtrs, MonoString* description);
  43. static MonoObject* internal_Instantiate(ScriptPrefab* prefabPtr, MonoString* description);
  44. static MonoObject* internal_CreateSO(MonoString* name, MonoString* description);
  45. static void internal_DeleteSO(ScriptSceneObject* soPtr, MonoString* description);
  46. static void internal_ReparentSO(ScriptSceneObject* soPtr, ScriptSceneObject* parentSOPtr, MonoString* description);
  47. static void internal_ReparentSOMulti(MonoArray* soPtrs, ScriptSceneObject* parentSOPtr, MonoString* description);
  48. static void internal_BreakPrefab(ScriptSceneObject* soPtr, MonoString* description);
  49. };
  50. /** @} */
  51. }