BsScriptImportOptions.h 8.8 KB

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