2
0

BsScriptImportOptions.h 11 KB

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