BsScriptProjectLibrary.h 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  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 MonoArray* internal_Refresh(MonoString* path, bool import);
  16. static void internal_Create(MonoObject* resource, MonoString* path);
  17. static MonoObject* internal_Load(MonoString* path);
  18. static void internal_Save(MonoObject* resource);
  19. static MonoObject* internal_GetRoot();
  20. static void internal_Reimport(MonoString* path, MonoObject* options, bool force);
  21. static MonoObject* internal_GetEntry(MonoString* path);
  22. static MonoString* internal_GetPathFromUUID(MonoString* uuid);
  23. static MonoString* internal_GetPath(MonoObject* resource);
  24. static MonoArray* internal_Search(MonoString* pattern, MonoArray* types);
  25. static void internal_Delete(MonoString* path);
  26. static void internal_CreateFolder(MonoString* path);
  27. static void internal_Rename(MonoString* path, MonoString* name);
  28. static void internal_Move(MonoString* oldPath, MonoString* newPath, bool overwrite);
  29. static void internal_Copy(MonoString* source, MonoString* destination, bool overwrite);
  30. static MonoString* internal_GetResourceFolder();
  31. static void internal_SetIncludeInBuild(MonoString* path, bool include);
  32. static void onEntryAdded(const Path& path);
  33. static void onEntryRemoved(const Path& path);
  34. ScriptProjectLibrary(MonoObject* instance);
  35. typedef void(__stdcall *OnEntryChangedThunkDef) (MonoString*, MonoException**);
  36. static OnEntryChangedThunkDef OnEntryAddedThunk;
  37. static OnEntryChangedThunkDef OnEntryRemovedThunk;
  38. static HEvent mOnEntryAddedConn;
  39. static HEvent mOnEntryRemovedConn;
  40. };
  41. class BS_SCR_BED_EXPORT ScriptLibraryEntryBase : public ScriptObjectBase
  42. {
  43. public:
  44. const Path& getAssetPath() const { return mAssetPath; }
  45. protected:
  46. ScriptLibraryEntryBase(MonoObject* instance);
  47. virtual ~ScriptLibraryEntryBase() {}
  48. Path mAssetPath;
  49. };
  50. class BS_SCR_BED_EXPORT ScriptLibraryEntry : public ScriptObject <ScriptLibraryEntry>
  51. {
  52. public:
  53. SCRIPT_OBJ(EDITOR_ASSEMBLY, "BansheeEditor", "LibraryEntry")
  54. private:
  55. static MonoString* internal_GetPath(ScriptLibraryEntryBase* thisPtr);
  56. static MonoString* internal_GetName(ScriptLibraryEntryBase* thisPtr);
  57. static ProjectLibrary::LibraryEntryType internal_GetType(ScriptLibraryEntryBase* thisPtr);
  58. static MonoObject* internal_GetParent(ScriptLibraryEntryBase* thisPtr);
  59. };
  60. class BS_SCR_BED_EXPORT ScriptDirectoryEntry : public ScriptObject <ScriptDirectoryEntry, ScriptLibraryEntryBase>
  61. {
  62. public:
  63. SCRIPT_OBJ(EDITOR_ASSEMBLY, "BansheeEditor", "DirectoryEntry")
  64. ScriptDirectoryEntry(MonoObject* instance, const Path& assetPath);
  65. static MonoObject* create(const ProjectLibrary::DirectoryEntry* entry);
  66. private:
  67. static MonoArray* internal_GetChildren(ScriptDirectoryEntry* thisPtr);
  68. };
  69. class BS_SCR_BED_EXPORT ScriptFileEntry : public ScriptObject <ScriptFileEntry, ScriptLibraryEntryBase>
  70. {
  71. public:
  72. SCRIPT_OBJ(EDITOR_ASSEMBLY, "BansheeEditor", "FileEntry")
  73. ScriptFileEntry(MonoObject* instance, const Path& assetPath);
  74. static MonoObject* create(const ProjectLibrary::ResourceEntry* entry);
  75. private:
  76. static MonoObject* internal_GetImportOptions(ScriptFileEntry* thisPtr);
  77. static MonoString* internal_GetUUID(ScriptFileEntry* thisPtr);
  78. static MonoObject* internal_GetIcon(ScriptFileEntry* thisPtr);
  79. static ScriptResourceType internal_GetResourceType(ScriptFileEntry* thisPtr);
  80. static bool internal_GetIncludeInBuild(ScriptFileEntry* thisPtr);
  81. };
  82. }