2
0

BsScriptImportOptions.h 13 KB

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