BsScriptProjectLibrary.h 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. #pragma once
  2. #include "BsScriptEditorPrerequisites.h"
  3. #include "BsScriptObject.h"
  4. #include "BsProjectLibrary.h"
  5. #include "BsScriptResource.h"
  6. namespace BansheeEngine
  7. {
  8. class BS_SCR_BED_EXPORT ScriptProjectLibrary : public ScriptObject<ScriptProjectLibrary>
  9. {
  10. public:
  11. SCRIPT_OBJ(EDITOR_ASSEMBLY, "BansheeEditor", "ProjectLibrary")
  12. void static startUp();
  13. void static shutDown();
  14. private:
  15. static void internal_Create(MonoObject* resource, MonoString* path);
  16. static MonoObject* internal_Load(MonoString* path);
  17. static void internal_Save(MonoObject* resource);
  18. static MonoObject* internal_GetRoot();
  19. static void internal_Reimport(MonoString* path, MonoObject* options, bool force);
  20. static MonoObject* internal_GetEntry(MonoString* path);
  21. static MonoString* internal_GetPath(MonoObject* resource);
  22. static void internal_Delete(MonoString* path);
  23. static void internal_CreateFolder(MonoString* path);
  24. static void internal_Rename(MonoString* path, MonoString* name);
  25. static void internal_Move(MonoString* oldPath, MonoString* newPath, bool overwrite);
  26. static void internal_Copy(MonoString* source, MonoString* destination, bool overwrite);
  27. static void onEntryAdded(const Path& path);
  28. static void onEntryRemoved(const Path& path);
  29. ScriptProjectLibrary(MonoObject* instance);
  30. typedef void(__stdcall *OnEntryChangedThunkDef) (MonoString*, MonoException**);
  31. static OnEntryChangedThunkDef OnEntryAddedThunk;
  32. static OnEntryChangedThunkDef OnEntryRemovedThunk;
  33. static HEvent mOnEntryAddedConn;
  34. static HEvent mOnEntryRemovedConn;
  35. };
  36. class BS_SCR_BED_EXPORT ScriptLibraryEntryBase : public ScriptObjectBase
  37. {
  38. public:
  39. const Path& getAssetPath() const { return mAssetPath; }
  40. protected:
  41. ScriptLibraryEntryBase(MonoObject* instance);
  42. virtual ~ScriptLibraryEntryBase() {}
  43. Path mAssetPath;
  44. };
  45. class BS_SCR_BED_EXPORT ScriptLibraryEntry : public ScriptObject <ScriptLibraryEntry>
  46. {
  47. public:
  48. SCRIPT_OBJ(EDITOR_ASSEMBLY, "BansheeEditor", "LibraryEntry")
  49. private:
  50. static MonoString* internal_GetPath(ScriptLibraryEntryBase* thisPtr);
  51. static MonoString* internal_GetName(ScriptLibraryEntryBase* thisPtr);
  52. static ProjectLibrary::LibraryEntryType internal_GetType(ScriptLibraryEntryBase* thisPtr);
  53. static MonoObject* internal_GetParent(ScriptLibraryEntryBase* thisPtr);
  54. };
  55. class BS_SCR_BED_EXPORT ScriptDirectoryEntry : public ScriptObject <ScriptDirectoryEntry, ScriptLibraryEntryBase>
  56. {
  57. public:
  58. SCRIPT_OBJ(EDITOR_ASSEMBLY, "BansheeEditor", "DirectoryEntry")
  59. ScriptDirectoryEntry(MonoObject* instance, const Path& assetPath);
  60. static MonoObject* create(const ProjectLibrary::DirectoryEntry* entry);
  61. private:
  62. static MonoArray* internal_GetChildren(ScriptDirectoryEntry* thisPtr);
  63. };
  64. class BS_SCR_BED_EXPORT ScriptFileEntry : public ScriptObject <ScriptFileEntry, ScriptLibraryEntryBase>
  65. {
  66. public:
  67. SCRIPT_OBJ(EDITOR_ASSEMBLY, "BansheeEditor", "FileEntry")
  68. ScriptFileEntry(MonoObject* instance, const Path& assetPath);
  69. static MonoObject* create(const ProjectLibrary::ResourceEntry* entry);
  70. private:
  71. static MonoObject* internal_GetImportOptions(ScriptFileEntry* thisPtr);
  72. static MonoString* internal_GetUUID(ScriptFileEntry* thisPtr);
  73. static MonoObject* internal_GetIcon(ScriptFileEntry* thisPtr);
  74. static ScriptResourceType internal_GetResourceType(ScriptFileEntry* thisPtr);
  75. };
  76. }