BsScriptImportOptions.cpp 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434
  1. #include "BsScriptImportOptions.h"
  2. #include "BsScriptMeta.h"
  3. #include "BsMonoField.h"
  4. #include "BsMonoClass.h"
  5. #include "BsMonoManager.h"
  6. #include "BsMonoMethod.h"
  7. #include "BsMonoUtil.h"
  8. #include "BsTextureImportOptions.h"
  9. #include "BsFontImportOptions.h"
  10. #include "BsScriptCodeImportOptions.h"
  11. #include "BsMeshImportOptions.h"
  12. #include "BsRenderer.h"
  13. #include "BsScriptFont.h"
  14. #include "BsRTTIType.h"
  15. using namespace std::placeholders;
  16. namespace BansheeEngine
  17. {
  18. struct CharRange
  19. {
  20. UINT32 start, end;
  21. };
  22. ScriptImportOptionsBase::ScriptImportOptionsBase(MonoObject* instance)
  23. :ScriptObjectBase(instance)
  24. { }
  25. void ScriptImportOptions::initRuntimeData()
  26. { }
  27. MonoObject* ScriptImportOptions::create(const SPtr<ImportOptions>& importOptions)
  28. {
  29. UINT32 typeId = importOptions->getRTTI()->getRTTIId();
  30. switch (typeId)
  31. {
  32. case TID_TextureImportOptions:
  33. return ScriptTextureImportOptions::create(std::static_pointer_cast<TextureImportOptions>(importOptions));
  34. break;
  35. case TID_FontImportOptions:
  36. return ScriptFontImportOptions::create(std::static_pointer_cast<FontImportOptions>(importOptions));
  37. break;
  38. case TID_ScriptCodeImportOptions:
  39. return ScriptScriptCodeImportOptions::create(std::static_pointer_cast<ScriptCodeImportOptions>(importOptions));
  40. break;
  41. }
  42. MonoObject* managedInstance = metaData.scriptClass->createInstance();
  43. ScriptImportOptions* scriptObj = ScriptImportOptions::toNative(managedInstance);
  44. scriptObj->mImportOptions = importOptions;
  45. return managedInstance;
  46. }
  47. ScriptImportOptions::ScriptImportOptions(MonoObject* instance)
  48. :ScriptObject(instance)
  49. {
  50. mImportOptions = bs_shared_ptr_new<ImportOptions>();
  51. }
  52. ScriptTextureImportOptions::ScriptTextureImportOptions(MonoObject* instance)
  53. :ScriptObject(instance)
  54. {
  55. mImportOptions = bs_shared_ptr_new<TextureImportOptions>();
  56. }
  57. void ScriptTextureImportOptions::initRuntimeData()
  58. {
  59. metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptTextureImportOptions::internal_CreateInstance);
  60. metaData.scriptClass->addInternalCall("Internal_GetPixelFormat", &ScriptTextureImportOptions::internal_GetPixelFormat);
  61. metaData.scriptClass->addInternalCall("Internal_SetPixelFormat", &ScriptTextureImportOptions::internal_SetPixelFormat);
  62. metaData.scriptClass->addInternalCall("Internal_GetGenerateMipmaps", &ScriptTextureImportOptions::internal_GetGenerateMipmaps);
  63. metaData.scriptClass->addInternalCall("Internal_SetGenerateMipmaps", &ScriptTextureImportOptions::internal_SetGenerateMipmaps);
  64. metaData.scriptClass->addInternalCall("Internal_GetMaxMipmapLevel", &ScriptTextureImportOptions::internal_GetMaxMipmapLevel);
  65. metaData.scriptClass->addInternalCall("Internal_SetMaxMipmapLevel", &ScriptTextureImportOptions::internal_SetMaxMipmapLevel);
  66. metaData.scriptClass->addInternalCall("Internal_GetCPUReadable", &ScriptTextureImportOptions::internal_GetCPUReadable);
  67. metaData.scriptClass->addInternalCall("Internal_SetCPUReadable", &ScriptTextureImportOptions::internal_SetCPUReadable);
  68. metaData.scriptClass->addInternalCall("Internal_GetIsSRGB", &ScriptTextureImportOptions::internal_GetIsSRGB);
  69. metaData.scriptClass->addInternalCall("Internal_SetIsSRGB", &ScriptTextureImportOptions::internal_SetIsSRGB);
  70. }
  71. SPtr<TextureImportOptions> ScriptTextureImportOptions::getTexImportOptions()
  72. {
  73. return std::static_pointer_cast<TextureImportOptions>(mImportOptions);
  74. }
  75. MonoObject* ScriptTextureImportOptions::create()
  76. {
  77. return metaData.scriptClass->createInstance();
  78. }
  79. MonoObject* ScriptTextureImportOptions::create(const SPtr<TextureImportOptions>& options)
  80. {
  81. MonoObject* managedInstance = metaData.scriptClass->createInstance();
  82. ScriptTextureImportOptions* scriptObj = ScriptTextureImportOptions::toNative(managedInstance);
  83. scriptObj->mImportOptions = options;
  84. return managedInstance;
  85. }
  86. void ScriptTextureImportOptions::internal_CreateInstance(MonoObject* instance)
  87. {
  88. ScriptTextureImportOptions* nativeInstance = new (bs_alloc<ScriptTextureImportOptions>()) ScriptTextureImportOptions(instance);
  89. }
  90. PixelFormat ScriptTextureImportOptions::internal_GetPixelFormat(ScriptTextureImportOptions* thisPtr)
  91. {
  92. return thisPtr->getTexImportOptions()->getFormat();
  93. }
  94. void ScriptTextureImportOptions::internal_SetPixelFormat(ScriptTextureImportOptions* thisPtr, PixelFormat value)
  95. {
  96. thisPtr->getTexImportOptions()->setFormat(value);
  97. }
  98. bool ScriptTextureImportOptions::internal_GetGenerateMipmaps(ScriptTextureImportOptions* thisPtr)
  99. {
  100. return thisPtr->getTexImportOptions()->getGenerateMipmaps();
  101. }
  102. void ScriptTextureImportOptions::internal_SetGenerateMipmaps(ScriptTextureImportOptions* thisPtr, bool value)
  103. {
  104. thisPtr->getTexImportOptions()->setGenerateMipmaps(value);
  105. }
  106. UINT32 ScriptTextureImportOptions::internal_GetMaxMipmapLevel(ScriptTextureImportOptions* thisPtr)
  107. {
  108. return thisPtr->getTexImportOptions()->getMaxMip();
  109. }
  110. void ScriptTextureImportOptions::internal_SetMaxMipmapLevel(ScriptTextureImportOptions* thisPtr, UINT32 value)
  111. {
  112. thisPtr->getTexImportOptions()->setMaxMip(value);
  113. }
  114. bool ScriptTextureImportOptions::internal_GetCPUReadable(ScriptTextureImportOptions* thisPtr)
  115. {
  116. return thisPtr->getTexImportOptions()->getCPUReadable();
  117. }
  118. void ScriptTextureImportOptions::internal_SetCPUReadable(ScriptTextureImportOptions* thisPtr, bool value)
  119. {
  120. thisPtr->getTexImportOptions()->setCPUReadable(value);
  121. }
  122. bool ScriptTextureImportOptions::internal_GetIsSRGB(ScriptTextureImportOptions* thisPtr)
  123. {
  124. return thisPtr->getTexImportOptions()->getSRGB();
  125. }
  126. void ScriptTextureImportOptions::internal_SetIsSRGB(ScriptTextureImportOptions* thisPtr, bool value)
  127. {
  128. thisPtr->getTexImportOptions()->setSRGB(value);
  129. }
  130. ScriptMeshImportOptions::ScriptMeshImportOptions(MonoObject* instance)
  131. :ScriptObject(instance)
  132. {
  133. mImportOptions = bs_shared_ptr_new<MeshImportOptions>();
  134. }
  135. void ScriptMeshImportOptions::initRuntimeData()
  136. {
  137. metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptMeshImportOptions::internal_CreateInstance);
  138. metaData.scriptClass->addInternalCall("Internal_GetCPUReadable", &ScriptMeshImportOptions::internal_GetCPUReadable);
  139. metaData.scriptClass->addInternalCall("Internal_SetCPUReadable", &ScriptMeshImportOptions::internal_SetCPUReadable);
  140. metaData.scriptClass->addInternalCall("Internal_GetImportNormals", &ScriptMeshImportOptions::internal_GetImportNormals);
  141. metaData.scriptClass->addInternalCall("Internal_SetImportNormals", &ScriptMeshImportOptions::internal_SetImportNormals);
  142. metaData.scriptClass->addInternalCall("Internal_GetImportTangents", &ScriptMeshImportOptions::internal_GetImportTangents);
  143. metaData.scriptClass->addInternalCall("Internal_SetImportTangents", &ScriptMeshImportOptions::internal_SetImportTangents);
  144. metaData.scriptClass->addInternalCall("Internal_GetImportSkin", &ScriptMeshImportOptions::internal_GetImportSkin);
  145. metaData.scriptClass->addInternalCall("Internal_SetImportSkin", &ScriptMeshImportOptions::internal_SetImportSkin);
  146. metaData.scriptClass->addInternalCall("Internal_GetImportAnimation", &ScriptMeshImportOptions::internal_GetImportAnimation);
  147. metaData.scriptClass->addInternalCall("Internal_SetImportAnimation", &ScriptMeshImportOptions::internal_SetImportAnimation);
  148. metaData.scriptClass->addInternalCall("Internal_GetImportBlendShapes", &ScriptMeshImportOptions::internal_GetImportBlendShapes);
  149. metaData.scriptClass->addInternalCall("Internal_SetImportBlendShapes", &ScriptMeshImportOptions::internal_SetImportBlendShapes);
  150. metaData.scriptClass->addInternalCall("Internal_GetScale", &ScriptMeshImportOptions::internal_GetScale);
  151. metaData.scriptClass->addInternalCall("Internal_SetScale", &ScriptMeshImportOptions::internal_SetScale);
  152. }
  153. SPtr<MeshImportOptions> ScriptMeshImportOptions::getMeshImportOptions()
  154. {
  155. return std::static_pointer_cast<MeshImportOptions>(mImportOptions);
  156. }
  157. MonoObject* ScriptMeshImportOptions::create()
  158. {
  159. return metaData.scriptClass->createInstance();
  160. }
  161. MonoObject* ScriptMeshImportOptions::create(const SPtr<MeshImportOptions>& options)
  162. {
  163. MonoObject* managedInstance = metaData.scriptClass->createInstance();
  164. ScriptMeshImportOptions* scriptObj = ScriptMeshImportOptions::toNative(managedInstance);
  165. scriptObj->mImportOptions = options;
  166. return managedInstance;
  167. }
  168. void ScriptMeshImportOptions::internal_CreateInstance(MonoObject* instance)
  169. {
  170. ScriptMeshImportOptions* nativeInstance = new (bs_alloc<ScriptMeshImportOptions>()) ScriptMeshImportOptions(instance);
  171. }
  172. bool ScriptMeshImportOptions::internal_GetCPUReadable(ScriptMeshImportOptions* thisPtr)
  173. {
  174. return thisPtr->getMeshImportOptions()->getCPUReadable();
  175. }
  176. void ScriptMeshImportOptions::internal_SetCPUReadable(ScriptMeshImportOptions* thisPtr, bool value)
  177. {
  178. thisPtr->getMeshImportOptions()->setCPUReadable(value);
  179. }
  180. bool ScriptMeshImportOptions::internal_GetImportNormals(ScriptMeshImportOptions* thisPtr)
  181. {
  182. return thisPtr->getMeshImportOptions()->getImportNormals();
  183. }
  184. void ScriptMeshImportOptions::internal_SetImportNormals(ScriptMeshImportOptions* thisPtr, bool value)
  185. {
  186. thisPtr->getMeshImportOptions()->setImportNormals(value);
  187. }
  188. bool ScriptMeshImportOptions::internal_GetImportTangents(ScriptMeshImportOptions* thisPtr)
  189. {
  190. return thisPtr->getMeshImportOptions()->getImportTangents();
  191. }
  192. void ScriptMeshImportOptions::internal_SetImportTangents(ScriptMeshImportOptions* thisPtr, bool value)
  193. {
  194. thisPtr->getMeshImportOptions()->setImportTangents(value);
  195. }
  196. bool ScriptMeshImportOptions::internal_GetImportSkin(ScriptMeshImportOptions* thisPtr)
  197. {
  198. return thisPtr->getMeshImportOptions()->getImportSkin();
  199. }
  200. void ScriptMeshImportOptions::internal_SetImportSkin(ScriptMeshImportOptions* thisPtr, bool value)
  201. {
  202. thisPtr->getMeshImportOptions()->setImportSkin(value);
  203. }
  204. bool ScriptMeshImportOptions::internal_GetImportAnimation(ScriptMeshImportOptions* thisPtr)
  205. {
  206. return thisPtr->getMeshImportOptions()->getImportAnimation();
  207. }
  208. void ScriptMeshImportOptions::internal_SetImportAnimation(ScriptMeshImportOptions* thisPtr, bool value)
  209. {
  210. thisPtr->getMeshImportOptions()->setImportAnimation(value);
  211. }
  212. bool ScriptMeshImportOptions::internal_GetImportBlendShapes(ScriptMeshImportOptions* thisPtr)
  213. {
  214. return thisPtr->getMeshImportOptions()->getImportBlendShapes();
  215. }
  216. void ScriptMeshImportOptions::internal_SetImportBlendShapes(ScriptMeshImportOptions* thisPtr, bool value)
  217. {
  218. thisPtr->getMeshImportOptions()->setImportBlendShapes(value);
  219. }
  220. float ScriptMeshImportOptions::internal_GetScale(ScriptMeshImportOptions* thisPtr)
  221. {
  222. return thisPtr->getMeshImportOptions()->getImportScale();
  223. }
  224. void ScriptMeshImportOptions::internal_SetScale(ScriptMeshImportOptions* thisPtr, float value)
  225. {
  226. thisPtr->getMeshImportOptions()->setImportScale(value);
  227. }
  228. ScriptFontImportOptions::ScriptFontImportOptions(MonoObject* instance)
  229. :ScriptObject(instance)
  230. {
  231. mImportOptions = bs_shared_ptr_new<FontImportOptions>();
  232. }
  233. void ScriptFontImportOptions::initRuntimeData()
  234. {
  235. metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptFontImportOptions::internal_CreateInstance);
  236. metaData.scriptClass->addInternalCall("Internal_GetFontSizes", &ScriptFontImportOptions::internal_GetFontSizes);
  237. metaData.scriptClass->addInternalCall("Internal_SetFontSizes", &ScriptFontImportOptions::internal_SetFontSizes);
  238. metaData.scriptClass->addInternalCall("Internal_GetDPI", &ScriptFontImportOptions::internal_GetDPI);
  239. metaData.scriptClass->addInternalCall("Internal_SetDPI", &ScriptFontImportOptions::internal_SetDPI);
  240. metaData.scriptClass->addInternalCall("Internal_GetAntialiasing", &ScriptFontImportOptions::internal_GetAntialiasing);
  241. metaData.scriptClass->addInternalCall("Internal_SetAntialiasing", &ScriptFontImportOptions::internal_SetAntialiasing);
  242. metaData.scriptClass->addInternalCall("Internal_GetCharRanges", &ScriptFontImportOptions::internal_GetCharRanges);
  243. metaData.scriptClass->addInternalCall("Internal_SetCharRanges", &ScriptFontImportOptions::internal_SetCharRanges);
  244. }
  245. SPtr<FontImportOptions> ScriptFontImportOptions::getFontImportOptions()
  246. {
  247. return std::static_pointer_cast<FontImportOptions>(mImportOptions);
  248. }
  249. MonoObject* ScriptFontImportOptions::create()
  250. {
  251. return metaData.scriptClass->createInstance();
  252. }
  253. MonoObject* ScriptFontImportOptions::create(const SPtr<FontImportOptions>& options)
  254. {
  255. MonoObject* managedInstance = metaData.scriptClass->createInstance();
  256. ScriptFontImportOptions* scriptObj = ScriptFontImportOptions::toNative(managedInstance);
  257. scriptObj->mImportOptions = options;
  258. return managedInstance;
  259. }
  260. void ScriptFontImportOptions::internal_CreateInstance(MonoObject* instance)
  261. {
  262. ScriptFontImportOptions* nativeInstance = new (bs_alloc<ScriptFontImportOptions>()) ScriptFontImportOptions(instance);
  263. }
  264. MonoArray* ScriptFontImportOptions::internal_GetFontSizes(ScriptFontImportOptions* thisPtr)
  265. {
  266. Vector<UINT32> fontSizes = thisPtr->getFontImportOptions()->getFontSizes();
  267. ScriptArray outArray = ScriptArray::create<UINT32>((UINT32)fontSizes.size());
  268. for (UINT32 i = 0; i < fontSizes.size(); i++)
  269. outArray.set(i, fontSizes[i]);
  270. return outArray.getInternal();
  271. }
  272. void ScriptFontImportOptions::internal_SetFontSizes(ScriptFontImportOptions* thisPtr, MonoArray* value)
  273. {
  274. ScriptArray inArray(value);
  275. Vector<UINT32> fontSizes(inArray.size());
  276. for (UINT32 i = 0; i < inArray.size(); i++)
  277. fontSizes[i] = inArray.get<UINT32>(i);
  278. thisPtr->getFontImportOptions()->setFontSizes(fontSizes);
  279. }
  280. UINT32 ScriptFontImportOptions::internal_GetDPI(ScriptFontImportOptions* thisPtr)
  281. {
  282. return thisPtr->getFontImportOptions()->getDPI();
  283. }
  284. void ScriptFontImportOptions::internal_SetDPI(ScriptFontImportOptions* thisPtr, UINT32 value)
  285. {
  286. thisPtr->getFontImportOptions()->setDPI(value);
  287. }
  288. bool ScriptFontImportOptions::internal_GetAntialiasing(ScriptFontImportOptions* thisPtr)
  289. {
  290. return thisPtr->getFontImportOptions()->getAntialiasing();
  291. }
  292. void ScriptFontImportOptions::internal_SetAntialiasing(ScriptFontImportOptions* thisPtr, bool value)
  293. {
  294. thisPtr->getFontImportOptions()->setAntialiasing(value);
  295. }
  296. MonoArray* ScriptFontImportOptions::internal_GetCharRanges(ScriptFontImportOptions* thisPtr)
  297. {
  298. Vector<std::pair<UINT32, UINT32>> charRanges = thisPtr->getFontImportOptions()->getCharIndexRanges();
  299. ScriptArray outArray = ScriptArray::create<ScriptCharRange>((UINT32)charRanges.size());
  300. for (UINT32 i = 0; i < (UINT32)charRanges.size(); i++)
  301. {
  302. CharRange range;
  303. range.start = charRanges[i].first;
  304. range.end = charRanges[i].second;
  305. outArray.set(i, range);
  306. }
  307. return outArray.getInternal();
  308. }
  309. void ScriptFontImportOptions::internal_SetCharRanges(ScriptFontImportOptions* thisPtr, MonoArray* value)
  310. {
  311. ScriptArray inArray(value);
  312. thisPtr->getFontImportOptions()->clearCharIndexRanges();
  313. for (UINT32 i = 0; i < inArray.size(); i++)
  314. {
  315. CharRange range = inArray.get<CharRange>(i);
  316. thisPtr->getFontImportOptions()->addCharIndexRange(range.start, range.end);
  317. }
  318. }
  319. ScriptScriptCodeImportOptions::ScriptScriptCodeImportOptions(MonoObject* instance)
  320. :ScriptObject(instance)
  321. {
  322. mImportOptions = bs_shared_ptr_new<ScriptCodeImportOptions>();
  323. }
  324. void ScriptScriptCodeImportOptions::initRuntimeData()
  325. {
  326. metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptScriptCodeImportOptions::internal_CreateInstance);
  327. metaData.scriptClass->addInternalCall("Internal_IsEditorScript", &ScriptScriptCodeImportOptions::internal_IsEditorScript);
  328. metaData.scriptClass->addInternalCall("Internal_SetEditorScript", &ScriptScriptCodeImportOptions::internal_SetEditorScript);
  329. }
  330. SPtr<ScriptCodeImportOptions> ScriptScriptCodeImportOptions::getCodeImportOptions()
  331. {
  332. return std::static_pointer_cast<ScriptCodeImportOptions>(mImportOptions);
  333. }
  334. MonoObject* ScriptScriptCodeImportOptions::create()
  335. {
  336. return metaData.scriptClass->createInstance();
  337. }
  338. MonoObject* ScriptScriptCodeImportOptions::create(const SPtr<ScriptCodeImportOptions>& options)
  339. {
  340. MonoObject* managedInstance = metaData.scriptClass->createInstance();
  341. ScriptScriptCodeImportOptions* scriptObj = ScriptScriptCodeImportOptions::toNative(managedInstance);
  342. scriptObj->mImportOptions = options;
  343. return managedInstance;
  344. }
  345. void ScriptScriptCodeImportOptions::internal_CreateInstance(MonoObject* instance)
  346. {
  347. ScriptScriptCodeImportOptions* nativeInstance = new (bs_alloc<ScriptScriptCodeImportOptions>()) ScriptScriptCodeImportOptions(instance);
  348. }
  349. bool ScriptScriptCodeImportOptions::internal_IsEditorScript(ScriptScriptCodeImportOptions* thisPtr)
  350. {
  351. return thisPtr->getCodeImportOptions()->isEditorScript();
  352. }
  353. void ScriptScriptCodeImportOptions::internal_SetEditorScript(ScriptScriptCodeImportOptions* thisPtr, bool value)
  354. {
  355. thisPtr->getCodeImportOptions()->setEditorScript(value);
  356. }
  357. }