BsScriptImportOptions.cpp 17 KB

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