BsScriptImportOptions.h 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287
  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. #include "Image/BsPixelData.h"
  7. #include "Audio/BsAudioClipImportOptions.h"
  8. #include "Importer/BsMeshImportOptions.h"
  9. #include "RenderAPI/BsGpuProgram.h"
  10. namespace bs
  11. {
  12. /** @addtogroup ScriptInteropEditor
  13. * @{
  14. */
  15. enum class FontRenderMode;
  16. /** Interop class between C++ & CLR for CharRange. */
  17. class BS_SCR_BED_EXPORT ScriptCharRange : public ScriptObject <ScriptCharRange>
  18. {
  19. public:
  20. SCRIPT_OBJ(EDITOR_ASSEMBLY, "BansheeEditor", "CharRange")
  21. private:
  22. ScriptCharRange(MonoObject* instance);
  23. };
  24. /** Base class for all C++/CLR interop objects wrapping various implementations of ImportOptions. */
  25. class BS_SCR_BED_EXPORT ScriptImportOptionsBase : public ScriptObjectBase
  26. {
  27. public:
  28. /** Returns the internal native import options. */
  29. SPtr<ImportOptions> getImportOptions() const { return mImportOptions; }
  30. protected:
  31. ScriptImportOptionsBase(MonoObject* instance);
  32. virtual ~ScriptImportOptionsBase() {}
  33. SPtr<ImportOptions> mImportOptions;
  34. };
  35. /** Interop class between C++ & CLR for ImportOptions. */
  36. class BS_SCR_BED_EXPORT ScriptImportOptions : public ScriptObject <ScriptImportOptions, ScriptImportOptionsBase>
  37. {
  38. public:
  39. SCRIPT_OBJ(EDITOR_ASSEMBLY, "BansheeEditor", "ImportOptions")
  40. /** Creates a new managed ImportOptions instance containing the provided import options. */
  41. static MonoObject* create(const SPtr<ImportOptions>& importOptions);
  42. private:
  43. ScriptImportOptions(MonoObject* instance);
  44. };
  45. /** Interop class between C++ & CLR for TextureImportOptions. */
  46. class BS_SCR_BED_EXPORT ScriptTextureImportOptions : public ScriptObject<ScriptTextureImportOptions, ScriptImportOptionsBase>
  47. {
  48. public:
  49. SCRIPT_OBJ(EDITOR_ASSEMBLY, "BansheeEditor", "TextureImportOptions")
  50. /** Creates a new managed TextureImportOptions instance containing the default import options for textures. */
  51. static MonoObject* create();
  52. /** Creates a new managed TextureImportOptions instance containing the provided import options. */
  53. static MonoObject* create(const SPtr<TextureImportOptions>& options);
  54. private:
  55. ScriptTextureImportOptions(MonoObject* instance);
  56. /** Returns the internal native import options. */
  57. SPtr<TextureImportOptions> getTexImportOptions();
  58. /************************************************************************/
  59. /* CLR HOOKS */
  60. /************************************************************************/
  61. static void internal_CreateInstance(MonoObject* instance);
  62. static PixelFormat internal_GetPixelFormat(ScriptTextureImportOptions* thisPtr);
  63. static void internal_SetPixelFormat(ScriptTextureImportOptions* thisPtr, PixelFormat value);
  64. static bool internal_GetGenerateMipmaps(ScriptTextureImportOptions* thisPtr);
  65. static void internal_SetGenerateMipmaps(ScriptTextureImportOptions* thisPtr, bool value);
  66. static UINT32 internal_GetMaxMipmapLevel(ScriptTextureImportOptions* thisPtr);
  67. static void internal_SetMaxMipmapLevel(ScriptTextureImportOptions* thisPtr, UINT32 value);
  68. static bool internal_GetCPUCached(ScriptTextureImportOptions* thisPtr);
  69. static void internal_SetCPUCached(ScriptTextureImportOptions* thisPtr, bool value);
  70. static bool internal_GetIsSRGB(ScriptTextureImportOptions* thisPtr);
  71. static void internal_SetIsSRGB(ScriptTextureImportOptions* thisPtr, bool value);
  72. static bool internal_GetIsCubemap(ScriptTextureImportOptions* thisPtr);
  73. static void internal_SetIsCubemap(ScriptTextureImportOptions* thisPtr, bool value);
  74. static CubemapSourceType internal_GetCubemapSourceType(ScriptTextureImportOptions* thisPtr);
  75. static void internal_SetCubemapSourceType(ScriptTextureImportOptions* thisPtr, CubemapSourceType value);
  76. };
  77. /** Interop class between C++ & CLR for MeshImportOptions. */
  78. class BS_SCR_BED_EXPORT ScriptMeshImportOptions : public ScriptObject<ScriptMeshImportOptions, ScriptImportOptionsBase>
  79. {
  80. public:
  81. SCRIPT_OBJ(EDITOR_ASSEMBLY, "BansheeEditor", "MeshImportOptions")
  82. /** Creates a new managed MeshImportOptions instance containing the default import options for textures. */
  83. static MonoObject* create();
  84. /** Creates a new managed MeshImportOptions instance containing the provided import options. */
  85. static MonoObject* create(const SPtr<MeshImportOptions>& options);
  86. private:
  87. ScriptMeshImportOptions(MonoObject* instance);
  88. /** Returns the internal native import options. */
  89. SPtr<MeshImportOptions> getMeshImportOptions();
  90. /************************************************************************/
  91. /* CLR HOOKS */
  92. /************************************************************************/
  93. static void internal_CreateInstance(MonoObject* instance);
  94. static bool internal_GetCPUCached(ScriptMeshImportOptions* thisPtr);
  95. static void internal_SetCPUCached(ScriptMeshImportOptions* thisPtr, bool value);
  96. static bool internal_GetImportNormals(ScriptMeshImportOptions* thisPtr);
  97. static void internal_SetImportNormals(ScriptMeshImportOptions* thisPtr, bool value);
  98. static bool internal_GetImportTangents(ScriptMeshImportOptions* thisPtr);
  99. static void internal_SetImportTangents(ScriptMeshImportOptions* thisPtr, bool value);
  100. static bool internal_GetImportSkin(ScriptMeshImportOptions* thisPtr);
  101. static void internal_SetImportSkin(ScriptMeshImportOptions* thisPtr, bool value);
  102. static bool internal_GetImportAnimation(ScriptMeshImportOptions* thisPtr);
  103. static void internal_SetImportAnimation(ScriptMeshImportOptions* thisPtr, bool value);
  104. static bool internal_GetImportBlendShapes(ScriptMeshImportOptions* thisPtr);
  105. static void internal_SetImportBlendShapes(ScriptMeshImportOptions* thisPtr, bool value);
  106. static bool internal_GetKeyFrameReduction(ScriptMeshImportOptions* thisPtr);
  107. static void internal_SetKeyFrameReduction(ScriptMeshImportOptions* thisPtr, bool value);
  108. static bool internal_GetRootMotion(ScriptMeshImportOptions* thisPtr);
  109. static void internal_SetRootMotion(ScriptMeshImportOptions* thisPtr, bool value);
  110. static float internal_GetScale(ScriptMeshImportOptions* thisPtr);
  111. static void internal_SetScale(ScriptMeshImportOptions* thisPtr, float value);
  112. static int internal_GetCollisionMeshType(ScriptMeshImportOptions* thisPtr);
  113. static void internal_SetCollisionMeshType(ScriptMeshImportOptions* thisPtr, int value);
  114. static MonoArray* internal_GetAnimationClipSplits(ScriptMeshImportOptions* thisPtr);
  115. static void internal_SetAnimationClipSplits(ScriptMeshImportOptions* thisPtr, MonoArray* value);
  116. static MonoArray* internal_GetAnimationEvents(ScriptMeshImportOptions* thisPtr);
  117. static void internal_SetAnimationEvents(ScriptMeshImportOptions* thisPtr, MonoArray* value);
  118. };
  119. /** Interop class between C++ & CLR for FontImportOptions. */
  120. class BS_SCR_BED_EXPORT ScriptFontImportOptions : public ScriptObject <ScriptFontImportOptions, ScriptImportOptionsBase>
  121. {
  122. public:
  123. SCRIPT_OBJ(EDITOR_ASSEMBLY, "BansheeEditor", "FontImportOptions")
  124. /** Creates a new managed FontImportOptions instance containing the default import options for fonts. */
  125. static MonoObject* create();
  126. /** Creates a new managed FontImportOptions instance containing the provided import options. */
  127. static MonoObject* create(const SPtr<FontImportOptions>& options);
  128. private:
  129. ScriptFontImportOptions(MonoObject* instance);
  130. /** Returns the internal native import options. */
  131. SPtr<FontImportOptions> getFontImportOptions();
  132. /************************************************************************/
  133. /* CLR HOOKS */
  134. /************************************************************************/
  135. static void internal_CreateInstance(MonoObject* instance);
  136. static MonoArray* internal_GetFontSizes(ScriptFontImportOptions* thisPtr);
  137. static void internal_SetFontSizes(ScriptFontImportOptions* thisPtr, MonoArray* value);
  138. static UINT32 internal_GetDPI(ScriptFontImportOptions* thisPtr);
  139. static void internal_SetDPI(ScriptFontImportOptions* thisPtr, UINT32 value);
  140. static FontRenderMode internal_GetRenderMode(ScriptFontImportOptions* thisPtr);
  141. static void internal_SetRenderMode(ScriptFontImportOptions* thisPtr, FontRenderMode value);
  142. static bool internal_GetBold(ScriptFontImportOptions* thisPtr);
  143. static void internal_SetBold(ScriptFontImportOptions* thisPtr, bool value);
  144. static bool internal_GetItalic(ScriptFontImportOptions* thisPtr);
  145. static void internal_SetItalic(ScriptFontImportOptions* thisPtr, bool value);
  146. static MonoArray* internal_GetCharRanges(ScriptFontImportOptions* thisPtr);
  147. static void internal_SetCharRanges(ScriptFontImportOptions* thisPtr, MonoArray* value);
  148. };
  149. /** Interop class between C++ & CLR for ScriptCodeImportOptions. */
  150. class BS_SCR_BED_EXPORT ScriptScriptCodeImportOptions : public ScriptObject <ScriptScriptCodeImportOptions, ScriptImportOptionsBase>
  151. {
  152. public:
  153. SCRIPT_OBJ(EDITOR_ASSEMBLY, "BansheeEditor", "ScriptCodeImportOptions")
  154. /**
  155. * Creates a new managed ScriptCodeImportOptions instance containing the default import options for script code
  156. * files.
  157. */
  158. static MonoObject* create();
  159. /** Creates a new managed ScriptCodeImportOptions instance containing the provided import options. */
  160. static MonoObject* create(const SPtr<ScriptCodeImportOptions>& options);
  161. private:
  162. ScriptScriptCodeImportOptions(MonoObject* instance);
  163. /** Returns the internal native import options. */
  164. SPtr<ScriptCodeImportOptions> getCodeImportOptions();
  165. /************************************************************************/
  166. /* CLR HOOKS */
  167. /************************************************************************/
  168. static void internal_CreateInstance(MonoObject* instance);
  169. static bool internal_IsEditorScript(ScriptScriptCodeImportOptions* thisPtr);
  170. static void internal_SetEditorScript(ScriptScriptCodeImportOptions* thisPtr, bool value);
  171. };
  172. /** Interop class between C++ & CLR for AudioClipImportOptions. */
  173. class BS_SCR_BED_EXPORT ScriptAudioClipImportOptions : public ScriptObject <ScriptAudioClipImportOptions, ScriptImportOptionsBase>
  174. {
  175. public:
  176. SCRIPT_OBJ(EDITOR_ASSEMBLY, "BansheeEditor", "AudioClipImportOptions")
  177. /** Creates a new managed AudioClipImportOptions instance containing the default import options for audio files. */
  178. static MonoObject* create();
  179. /** Creates a new managed AudioClipImportOptions instance containing the provided import options. */
  180. static MonoObject* create(const SPtr<AudioClipImportOptions>& options);
  181. private:
  182. ScriptAudioClipImportOptions(MonoObject* instance);
  183. /** Returns the internal native import options. */
  184. SPtr<AudioClipImportOptions> getClipImportOptions();
  185. /************************************************************************/
  186. /* CLR HOOKS */
  187. /************************************************************************/
  188. static void internal_CreateInstance(MonoObject* instance);
  189. static AudioFormat internal_GetFormat(ScriptAudioClipImportOptions* thisPtr);
  190. static void internal_SetFormat(ScriptAudioClipImportOptions* thisPtr, AudioFormat format);
  191. static AudioReadMode internal_GetReadMode(ScriptAudioClipImportOptions* thisPtr);
  192. static void internal_SetReadMode(ScriptAudioClipImportOptions* thisPtr, AudioReadMode readMode);
  193. static bool internal_GetIs3D(ScriptAudioClipImportOptions* thisPtr);
  194. static void internal_SetIs3D(ScriptAudioClipImportOptions* thisPtr, bool is3d);
  195. static UINT32 internal_GetBitDepth(ScriptAudioClipImportOptions* thisPtr);
  196. static void internal_SetBitDepth(ScriptAudioClipImportOptions* thisPtr, UINT32 bitDepth);
  197. };
  198. /** Helper class for dealing with AnimationSplitInfo structure. */
  199. class BS_SCR_BED_EXPORT ScriptAnimationSplitInfo : public ScriptObject<ScriptAnimationSplitInfo>
  200. {
  201. public:
  202. SCRIPT_OBJ(EDITOR_ASSEMBLY, "BansheeEditor", "AnimationSplitInfo")
  203. /** Converts managed split info to its native counterpart. */
  204. static AnimationSplitInfo fromManaged(MonoObject* object);
  205. /** Converts native split info to its managed counterpart. */
  206. static MonoObject* toManaged(const AnimationSplitInfo& splitInfo);
  207. private:
  208. ScriptAnimationSplitInfo(MonoObject* instance);
  209. /************************************************************************/
  210. /* CLR HOOKS */
  211. /************************************************************************/
  212. static MonoField* nameField;
  213. static MonoField* startFrameField;
  214. static MonoField* endFrameField;
  215. static MonoField* isAdditiveField;
  216. };
  217. /** Helper class for dealing with ImportedAnimationEvents structure. */
  218. class BS_SCR_BED_EXPORT ScriptImportedAnimationEvents : public ScriptObject<ScriptImportedAnimationEvents>
  219. {
  220. public:
  221. SCRIPT_OBJ(EDITOR_ASSEMBLY, "BansheeEditor", "ImportedAnimationEvents")
  222. /** Converts managed events info to its native counterpart. */
  223. static ImportedAnimationEvents fromManaged(MonoObject* object);
  224. /** Converts native events info to its managed counterpart. */
  225. static MonoObject* toManaged(const ImportedAnimationEvents& events);
  226. private:
  227. ScriptImportedAnimationEvents(MonoObject* instance);
  228. /************************************************************************/
  229. /* CLR HOOKS */
  230. /************************************************************************/
  231. static MonoField* nameField;
  232. static MonoField* eventsField;
  233. };
  234. /** @} */
  235. }