BsScriptFolderMonitor.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #pragma once
  2. #include "BsScriptEditorPrerequisites.h"
  3. #include "BsScriptObject.h"
  4. #include "BsFolderMonitor.h"
  5. #include "BsModule.h"
  6. namespace BansheeEngine
  7. {
  8. class BS_SCR_BED_EXPORT ScriptFolderMonitor : public ScriptObject <ScriptFolderMonitor>
  9. {
  10. public:
  11. SCRIPT_OBJ(EDITOR_ASSEMBLY, "BansheeEditor", "FolderMonitor")
  12. private:
  13. friend class ScriptFolderMonitorManager;
  14. static void internal_CreateInstance(MonoObject* instance, MonoString* folder);
  15. static void internal_Destroy(ScriptFolderMonitor* thisPtr);
  16. ScriptFolderMonitor(MonoObject* instance, FolderMonitor* monitor);
  17. ~ScriptFolderMonitor();
  18. void update();
  19. void destroy();
  20. void onMonitorFileModified(const Path& path);
  21. void onMonitorFileAdded(const Path& path);
  22. void onMonitorFileRemoved(const Path& path);
  23. void onMonitorFileRenamed(const Path& from, const Path& to);
  24. typedef void(__stdcall *OnModifiedThunkDef) (MonoObject*, MonoString*, MonoException**);
  25. typedef void(__stdcall *OnRenamedThunkDef) (MonoObject*, MonoString*, MonoString*, MonoException**);
  26. static OnModifiedThunkDef OnModifiedThunk;
  27. static OnModifiedThunkDef OnAddedThunk;
  28. static OnModifiedThunkDef OnRemovedThunk;
  29. static OnRenamedThunkDef OnRenamedThunk;
  30. FolderMonitor* mMonitor;
  31. };
  32. class BS_SCR_BED_EXPORT ScriptFolderMonitorManager : public Module<ScriptFolderMonitorManager>
  33. {
  34. public:
  35. void update();
  36. private:
  37. friend class ScriptFolderMonitor;
  38. void _registerMonitor(ScriptFolderMonitor* monitor);
  39. void _unregisterMonitor(ScriptFolderMonitor* monitor);
  40. UnorderedSet<ScriptFolderMonitor*> mMonitors;
  41. };
  42. }