BsScriptImportOptions.cpp 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "BsScriptImportOptions.h"
  4. #include "BsScriptMeta.h"
  5. #include "BsMonoField.h"
  6. #include "BsMonoClass.h"
  7. #include "BsMonoManager.h"
  8. #include "BsMonoMethod.h"
  9. #include "BsMonoUtil.h"
  10. #include "BsTextureImportOptions.h"
  11. #include "BsFontImportOptions.h"
  12. #include "BsScriptCodeImportOptions.h"
  13. #include "BsMeshImportOptions.h"
  14. #include "BsRenderer.h"
  15. #include "BsScriptFont.h"
  16. #include "BsRTTIType.h"
  17. using namespace std::placeholders;
  18. namespace BansheeEngine
  19. {
  20. struct CharRange
  21. {
  22. UINT32 start, end;
  23. };
  24. ScriptImportOptionsBase::ScriptImportOptionsBase(MonoObject* instance)
  25. :ScriptObjectBase(instance)
  26. { }
  27. void ScriptImportOptions::initRuntimeData()
  28. { }
  29. MonoObject* ScriptImportOptions::create(const SPtr<ImportOptions>& importOptions)
  30. {
  31. UINT32 typeId = importOptions->getRTTI()->getRTTIId();
  32. switch (typeId)
  33. {
  34. case TID_TextureImportOptions:
  35. return ScriptTextureImportOptions::create(std::static_pointer_cast<TextureImportOptions>(importOptions));
  36. case TID_MeshImportOptions:
  37. return ScriptMeshImportOptions::create(std::static_pointer_cast<MeshImportOptions>(importOptions));
  38. case TID_FontImportOptions:
  39. return ScriptFontImportOptions::create(std::static_pointer_cast<FontImportOptions>(importOptions));
  40. case TID_ScriptCodeImportOptions:
  41. return ScriptScriptCodeImportOptions::create(std::static_pointer_cast<ScriptCodeImportOptions>(importOptions));
  42. case TID_AudioClipImportOptions:
  43. return ScriptAudioClipImportOptions::create(std::static_pointer_cast<AudioClipImportOptions>(importOptions));
  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. 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_GetKeyFrameReduction", &ScriptMeshImportOptions::internal_GetKeyFrameReduction);
  154. metaData.scriptClass->addInternalCall("Internal_SetKeyFrameReduction", &ScriptMeshImportOptions::internal_SetKeyFrameReduction);
  155. metaData.scriptClass->addInternalCall("Internal_GetScale", &ScriptMeshImportOptions::internal_GetScale);
  156. metaData.scriptClass->addInternalCall("Internal_SetScale", &ScriptMeshImportOptions::internal_SetScale);
  157. metaData.scriptClass->addInternalCall("Internal_GetCollisionMeshType", &ScriptMeshImportOptions::internal_GetCollisionMeshType);
  158. metaData.scriptClass->addInternalCall("Internal_SetCollisionMeshType", &ScriptMeshImportOptions::internal_SetCollisionMeshType);
  159. metaData.scriptClass->addInternalCall("Internal_GetAnimationClipSplits", &ScriptMeshImportOptions::internal_GetAnimationClipSplits);
  160. metaData.scriptClass->addInternalCall("Internal_SetAnimationClipSplits", &ScriptMeshImportOptions::internal_SetAnimationClipSplits);
  161. }
  162. SPtr<MeshImportOptions> ScriptMeshImportOptions::getMeshImportOptions()
  163. {
  164. return std::static_pointer_cast<MeshImportOptions>(mImportOptions);
  165. }
  166. MonoObject* ScriptMeshImportOptions::create()
  167. {
  168. return metaData.scriptClass->createInstance();
  169. }
  170. MonoObject* ScriptMeshImportOptions::create(const SPtr<MeshImportOptions>& options)
  171. {
  172. MonoObject* managedInstance = metaData.scriptClass->createInstance();
  173. ScriptMeshImportOptions* scriptObj = ScriptMeshImportOptions::toNative(managedInstance);
  174. scriptObj->mImportOptions = options;
  175. return managedInstance;
  176. }
  177. void ScriptMeshImportOptions::internal_CreateInstance(MonoObject* instance)
  178. {
  179. new (bs_alloc<ScriptMeshImportOptions>()) ScriptMeshImportOptions(instance);
  180. }
  181. bool ScriptMeshImportOptions::internal_GetCPUReadable(ScriptMeshImportOptions* thisPtr)
  182. {
  183. return thisPtr->getMeshImportOptions()->getCPUReadable();
  184. }
  185. void ScriptMeshImportOptions::internal_SetCPUReadable(ScriptMeshImportOptions* thisPtr, bool value)
  186. {
  187. thisPtr->getMeshImportOptions()->setCPUReadable(value);
  188. }
  189. bool ScriptMeshImportOptions::internal_GetImportNormals(ScriptMeshImportOptions* thisPtr)
  190. {
  191. return thisPtr->getMeshImportOptions()->getImportNormals();
  192. }
  193. void ScriptMeshImportOptions::internal_SetImportNormals(ScriptMeshImportOptions* thisPtr, bool value)
  194. {
  195. thisPtr->getMeshImportOptions()->setImportNormals(value);
  196. }
  197. bool ScriptMeshImportOptions::internal_GetImportTangents(ScriptMeshImportOptions* thisPtr)
  198. {
  199. return thisPtr->getMeshImportOptions()->getImportTangents();
  200. }
  201. void ScriptMeshImportOptions::internal_SetImportTangents(ScriptMeshImportOptions* thisPtr, bool value)
  202. {
  203. thisPtr->getMeshImportOptions()->setImportTangents(value);
  204. }
  205. bool ScriptMeshImportOptions::internal_GetImportSkin(ScriptMeshImportOptions* thisPtr)
  206. {
  207. return thisPtr->getMeshImportOptions()->getImportSkin();
  208. }
  209. void ScriptMeshImportOptions::internal_SetImportSkin(ScriptMeshImportOptions* thisPtr, bool value)
  210. {
  211. thisPtr->getMeshImportOptions()->setImportSkin(value);
  212. }
  213. bool ScriptMeshImportOptions::internal_GetImportAnimation(ScriptMeshImportOptions* thisPtr)
  214. {
  215. return thisPtr->getMeshImportOptions()->getImportAnimation();
  216. }
  217. void ScriptMeshImportOptions::internal_SetImportAnimation(ScriptMeshImportOptions* thisPtr, bool value)
  218. {
  219. thisPtr->getMeshImportOptions()->setImportAnimation(value);
  220. }
  221. bool ScriptMeshImportOptions::internal_GetImportBlendShapes(ScriptMeshImportOptions* thisPtr)
  222. {
  223. return thisPtr->getMeshImportOptions()->getImportBlendShapes();
  224. }
  225. void ScriptMeshImportOptions::internal_SetImportBlendShapes(ScriptMeshImportOptions* thisPtr, bool value)
  226. {
  227. thisPtr->getMeshImportOptions()->setImportBlendShapes(value);
  228. }
  229. bool ScriptMeshImportOptions::internal_GetKeyFrameReduction(ScriptMeshImportOptions* thisPtr)
  230. {
  231. return thisPtr->getMeshImportOptions()->getKeyFrameReduction();
  232. }
  233. void ScriptMeshImportOptions::internal_SetKeyFrameReduction(ScriptMeshImportOptions* thisPtr, bool value)
  234. {
  235. thisPtr->getMeshImportOptions()->setKeyFrameReduction(value);
  236. }
  237. float ScriptMeshImportOptions::internal_GetScale(ScriptMeshImportOptions* thisPtr)
  238. {
  239. return thisPtr->getMeshImportOptions()->getImportScale();
  240. }
  241. void ScriptMeshImportOptions::internal_SetScale(ScriptMeshImportOptions* thisPtr, float value)
  242. {
  243. thisPtr->getMeshImportOptions()->setImportScale(value);
  244. }
  245. int ScriptMeshImportOptions::internal_GetCollisionMeshType(ScriptMeshImportOptions* thisPtr)
  246. {
  247. return (int)thisPtr->getMeshImportOptions()->getCollisionMeshType();
  248. }
  249. void ScriptMeshImportOptions::internal_SetCollisionMeshType(ScriptMeshImportOptions* thisPtr, int value)
  250. {
  251. thisPtr->getMeshImportOptions()->setCollisionMeshType((CollisionMeshType)value);
  252. }
  253. MonoArray* ScriptMeshImportOptions::internal_GetAnimationClipSplits(ScriptMeshImportOptions* thisPtr)
  254. {
  255. SPtr<MeshImportOptions> io = thisPtr->getMeshImportOptions();
  256. Vector<AnimationSplitInfo> splitInfos = io->getAnimationClipSplits();
  257. UINT32 numSplitInfos = (UINT32)splitInfos.size();
  258. ScriptArray outputArray = ScriptArray::create<ScriptAnimationSplitInfo>(numSplitInfos);
  259. for(UINT32 i = 0; i < numSplitInfos; i++)
  260. outputArray.set(i, ScriptAnimationSplitInfo::toManaged(splitInfos[i]));
  261. return outputArray.getInternal();
  262. }
  263. void ScriptMeshImportOptions::internal_SetAnimationClipSplits(ScriptMeshImportOptions* thisPtr, MonoArray* value)
  264. {
  265. ScriptArray inputArray(value);
  266. SPtr<MeshImportOptions> io = thisPtr->getMeshImportOptions();
  267. UINT32 numSplits = inputArray.size();
  268. Vector<AnimationSplitInfo> splitInfos(numSplits);
  269. for (UINT32 i = 0; i < numSplits; i++)
  270. splitInfos[i] = ScriptAnimationSplitInfo::fromManaged(inputArray.get<MonoObject*>(i));
  271. io->setAnimationClipSplits(splitInfos);
  272. }
  273. ScriptFontImportOptions::ScriptFontImportOptions(MonoObject* instance)
  274. :ScriptObject(instance)
  275. {
  276. mImportOptions = bs_shared_ptr_new<FontImportOptions>();
  277. }
  278. void ScriptFontImportOptions::initRuntimeData()
  279. {
  280. metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptFontImportOptions::internal_CreateInstance);
  281. metaData.scriptClass->addInternalCall("Internal_GetFontSizes", &ScriptFontImportOptions::internal_GetFontSizes);
  282. metaData.scriptClass->addInternalCall("Internal_SetFontSizes", &ScriptFontImportOptions::internal_SetFontSizes);
  283. metaData.scriptClass->addInternalCall("Internal_GetDPI", &ScriptFontImportOptions::internal_GetDPI);
  284. metaData.scriptClass->addInternalCall("Internal_SetDPI", &ScriptFontImportOptions::internal_SetDPI);
  285. metaData.scriptClass->addInternalCall("Internal_GetRenderMode", &ScriptFontImportOptions::internal_GetRenderMode);
  286. metaData.scriptClass->addInternalCall("Internal_SetRenderMode", &ScriptFontImportOptions::internal_SetRenderMode);
  287. metaData.scriptClass->addInternalCall("Internal_GetBold", &ScriptFontImportOptions::internal_GetBold);
  288. metaData.scriptClass->addInternalCall("Internal_SetBold", &ScriptFontImportOptions::internal_SetBold);
  289. metaData.scriptClass->addInternalCall("Internal_GetItalic", &ScriptFontImportOptions::internal_GetItalic);
  290. metaData.scriptClass->addInternalCall("Internal_SetItalic", &ScriptFontImportOptions::internal_SetItalic);
  291. metaData.scriptClass->addInternalCall("Internal_GetCharRanges", &ScriptFontImportOptions::internal_GetCharRanges);
  292. metaData.scriptClass->addInternalCall("Internal_SetCharRanges", &ScriptFontImportOptions::internal_SetCharRanges);
  293. }
  294. SPtr<FontImportOptions> ScriptFontImportOptions::getFontImportOptions()
  295. {
  296. return std::static_pointer_cast<FontImportOptions>(mImportOptions);
  297. }
  298. MonoObject* ScriptFontImportOptions::create()
  299. {
  300. return metaData.scriptClass->createInstance();
  301. }
  302. MonoObject* ScriptFontImportOptions::create(const SPtr<FontImportOptions>& options)
  303. {
  304. MonoObject* managedInstance = metaData.scriptClass->createInstance();
  305. ScriptFontImportOptions* scriptObj = ScriptFontImportOptions::toNative(managedInstance);
  306. scriptObj->mImportOptions = options;
  307. return managedInstance;
  308. }
  309. void ScriptFontImportOptions::internal_CreateInstance(MonoObject* instance)
  310. {
  311. new (bs_alloc<ScriptFontImportOptions>()) ScriptFontImportOptions(instance);
  312. }
  313. MonoArray* ScriptFontImportOptions::internal_GetFontSizes(ScriptFontImportOptions* thisPtr)
  314. {
  315. Vector<UINT32> fontSizes = thisPtr->getFontImportOptions()->getFontSizes();
  316. ScriptArray outArray = ScriptArray::create<UINT32>((UINT32)fontSizes.size());
  317. for (UINT32 i = 0; i < fontSizes.size(); i++)
  318. outArray.set(i, fontSizes[i]);
  319. return outArray.getInternal();
  320. }
  321. void ScriptFontImportOptions::internal_SetFontSizes(ScriptFontImportOptions* thisPtr, MonoArray* value)
  322. {
  323. ScriptArray inArray(value);
  324. Vector<UINT32> fontSizes(inArray.size());
  325. for (UINT32 i = 0; i < inArray.size(); i++)
  326. fontSizes[i] = inArray.get<UINT32>(i);
  327. thisPtr->getFontImportOptions()->setFontSizes(fontSizes);
  328. }
  329. UINT32 ScriptFontImportOptions::internal_GetDPI(ScriptFontImportOptions* thisPtr)
  330. {
  331. return thisPtr->getFontImportOptions()->getDPI();
  332. }
  333. void ScriptFontImportOptions::internal_SetDPI(ScriptFontImportOptions* thisPtr, UINT32 value)
  334. {
  335. thisPtr->getFontImportOptions()->setDPI(value);
  336. }
  337. FontRenderMode ScriptFontImportOptions::internal_GetRenderMode(ScriptFontImportOptions* thisPtr)
  338. {
  339. return thisPtr->getFontImportOptions()->getRenderMode();
  340. }
  341. void ScriptFontImportOptions::internal_SetRenderMode(ScriptFontImportOptions* thisPtr, FontRenderMode value)
  342. {
  343. thisPtr->getFontImportOptions()->setRenderMode(value);
  344. }
  345. bool ScriptFontImportOptions::internal_GetBold(ScriptFontImportOptions* thisPtr)
  346. {
  347. return thisPtr->getFontImportOptions()->getBold();
  348. }
  349. void ScriptFontImportOptions::internal_SetBold(ScriptFontImportOptions* thisPtr, bool value)
  350. {
  351. thisPtr->getFontImportOptions()->setBold(value);
  352. }
  353. bool ScriptFontImportOptions::internal_GetItalic(ScriptFontImportOptions* thisPtr)
  354. {
  355. return thisPtr->getFontImportOptions()->getItalic();
  356. }
  357. void ScriptFontImportOptions::internal_SetItalic(ScriptFontImportOptions* thisPtr, bool value)
  358. {
  359. thisPtr->getFontImportOptions()->setItalic(value);
  360. }
  361. MonoArray* ScriptFontImportOptions::internal_GetCharRanges(ScriptFontImportOptions* thisPtr)
  362. {
  363. Vector<std::pair<UINT32, UINT32>> charRanges = thisPtr->getFontImportOptions()->getCharIndexRanges();
  364. ScriptArray outArray = ScriptArray::create<ScriptCharRange>((UINT32)charRanges.size());
  365. for (UINT32 i = 0; i < (UINT32)charRanges.size(); i++)
  366. {
  367. CharRange range;
  368. range.start = charRanges[i].first;
  369. range.end = charRanges[i].second;
  370. outArray.set(i, range);
  371. }
  372. return outArray.getInternal();
  373. }
  374. void ScriptFontImportOptions::internal_SetCharRanges(ScriptFontImportOptions* thisPtr, MonoArray* value)
  375. {
  376. ScriptArray inArray(value);
  377. thisPtr->getFontImportOptions()->clearCharIndexRanges();
  378. for (UINT32 i = 0; i < inArray.size(); i++)
  379. {
  380. CharRange range = inArray.get<CharRange>(i);
  381. thisPtr->getFontImportOptions()->addCharIndexRange(range.start, range.end);
  382. }
  383. }
  384. ScriptScriptCodeImportOptions::ScriptScriptCodeImportOptions(MonoObject* instance)
  385. :ScriptObject(instance)
  386. {
  387. mImportOptions = bs_shared_ptr_new<ScriptCodeImportOptions>();
  388. }
  389. void ScriptScriptCodeImportOptions::initRuntimeData()
  390. {
  391. metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptScriptCodeImportOptions::internal_CreateInstance);
  392. metaData.scriptClass->addInternalCall("Internal_IsEditorScript", &ScriptScriptCodeImportOptions::internal_IsEditorScript);
  393. metaData.scriptClass->addInternalCall("Internal_SetEditorScript", &ScriptScriptCodeImportOptions::internal_SetEditorScript);
  394. }
  395. SPtr<ScriptCodeImportOptions> ScriptScriptCodeImportOptions::getCodeImportOptions()
  396. {
  397. return std::static_pointer_cast<ScriptCodeImportOptions>(mImportOptions);
  398. }
  399. MonoObject* ScriptScriptCodeImportOptions::create()
  400. {
  401. return metaData.scriptClass->createInstance();
  402. }
  403. MonoObject* ScriptScriptCodeImportOptions::create(const SPtr<ScriptCodeImportOptions>& options)
  404. {
  405. MonoObject* managedInstance = metaData.scriptClass->createInstance();
  406. ScriptScriptCodeImportOptions* scriptObj = ScriptScriptCodeImportOptions::toNative(managedInstance);
  407. scriptObj->mImportOptions = options;
  408. return managedInstance;
  409. }
  410. void ScriptScriptCodeImportOptions::internal_CreateInstance(MonoObject* instance)
  411. {
  412. new (bs_alloc<ScriptScriptCodeImportOptions>()) ScriptScriptCodeImportOptions(instance);
  413. }
  414. bool ScriptScriptCodeImportOptions::internal_IsEditorScript(ScriptScriptCodeImportOptions* thisPtr)
  415. {
  416. return thisPtr->getCodeImportOptions()->isEditorScript();
  417. }
  418. void ScriptScriptCodeImportOptions::internal_SetEditorScript(ScriptScriptCodeImportOptions* thisPtr, bool value)
  419. {
  420. thisPtr->getCodeImportOptions()->setEditorScript(value);
  421. }
  422. ScriptAudioClipImportOptions::ScriptAudioClipImportOptions(MonoObject* instance)
  423. :ScriptObject(instance)
  424. {
  425. mImportOptions = bs_shared_ptr_new<AudioClipImportOptions>();
  426. }
  427. void ScriptAudioClipImportOptions::initRuntimeData()
  428. {
  429. metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptAudioClipImportOptions::internal_CreateInstance);
  430. metaData.scriptClass->addInternalCall("Internal_GetFormat", &ScriptAudioClipImportOptions::internal_GetFormat);
  431. metaData.scriptClass->addInternalCall("Internal_SetFormat", &ScriptAudioClipImportOptions::internal_SetFormat);
  432. metaData.scriptClass->addInternalCall("Internal_GetReadMode", &ScriptAudioClipImportOptions::internal_GetReadMode);
  433. metaData.scriptClass->addInternalCall("Internal_SetReadMode", &ScriptAudioClipImportOptions::internal_SetReadMode);
  434. metaData.scriptClass->addInternalCall("Internal_GetIs3D", &ScriptAudioClipImportOptions::internal_GetIs3D);
  435. metaData.scriptClass->addInternalCall("Internal_SetIs3D", &ScriptAudioClipImportOptions::internal_SetIs3D);
  436. metaData.scriptClass->addInternalCall("Internal_GetBitDepth", &ScriptAudioClipImportOptions::internal_GetBitDepth);
  437. metaData.scriptClass->addInternalCall("Internal_SetBitDepth", &ScriptAudioClipImportOptions::internal_SetBitDepth);
  438. }
  439. SPtr<AudioClipImportOptions> ScriptAudioClipImportOptions::getClipImportOptions()
  440. {
  441. return std::static_pointer_cast<AudioClipImportOptions>(mImportOptions);
  442. }
  443. MonoObject* ScriptAudioClipImportOptions::create()
  444. {
  445. return metaData.scriptClass->createInstance();
  446. }
  447. MonoObject* ScriptAudioClipImportOptions::create(const SPtr<AudioClipImportOptions>& options)
  448. {
  449. MonoObject* managedInstance = metaData.scriptClass->createInstance();
  450. ScriptAudioClipImportOptions* scriptObj = ScriptAudioClipImportOptions::toNative(managedInstance);
  451. scriptObj->mImportOptions = options;
  452. return managedInstance;
  453. }
  454. void ScriptAudioClipImportOptions::internal_CreateInstance(MonoObject* instance)
  455. {
  456. new (bs_alloc<ScriptAudioClipImportOptions>()) ScriptAudioClipImportOptions(instance);
  457. }
  458. AudioFormat ScriptAudioClipImportOptions::internal_GetFormat(ScriptAudioClipImportOptions* thisPtr)
  459. {
  460. auto io = thisPtr->getClipImportOptions();
  461. return io->getFormat();
  462. }
  463. void ScriptAudioClipImportOptions::internal_SetFormat(ScriptAudioClipImportOptions* thisPtr, AudioFormat format)
  464. {
  465. auto io = thisPtr->getClipImportOptions();
  466. io->setFormat(format);
  467. }
  468. AudioReadMode ScriptAudioClipImportOptions::internal_GetReadMode(ScriptAudioClipImportOptions* thisPtr)
  469. {
  470. auto io = thisPtr->getClipImportOptions();
  471. return io->getReadMode();
  472. }
  473. void ScriptAudioClipImportOptions::internal_SetReadMode(ScriptAudioClipImportOptions* thisPtr, AudioReadMode readMode)
  474. {
  475. auto io = thisPtr->getClipImportOptions();
  476. io->setReadMode(readMode);
  477. }
  478. bool ScriptAudioClipImportOptions::internal_GetIs3D(ScriptAudioClipImportOptions* thisPtr)
  479. {
  480. auto io = thisPtr->getClipImportOptions();
  481. return io->getIs3D();
  482. }
  483. void ScriptAudioClipImportOptions::internal_SetIs3D(ScriptAudioClipImportOptions* thisPtr, bool is3d)
  484. {
  485. auto io = thisPtr->getClipImportOptions();
  486. io->setIs3D(is3d);
  487. }
  488. UINT32 ScriptAudioClipImportOptions::internal_GetBitDepth(ScriptAudioClipImportOptions* thisPtr)
  489. {
  490. auto io = thisPtr->getClipImportOptions();
  491. return io->getBitDepth();
  492. }
  493. void ScriptAudioClipImportOptions::internal_SetBitDepth(ScriptAudioClipImportOptions* thisPtr, UINT32 bitDepth)
  494. {
  495. auto io = thisPtr->getClipImportOptions();
  496. io->setBitDepth(bitDepth);
  497. }
  498. MonoField* ScriptAnimationSplitInfo::nameField = nullptr;
  499. MonoField* ScriptAnimationSplitInfo::startFrameField = nullptr;
  500. MonoField* ScriptAnimationSplitInfo::endFrameField = nullptr;
  501. MonoField* ScriptAnimationSplitInfo::isAdditiveField = nullptr;
  502. ScriptAnimationSplitInfo::ScriptAnimationSplitInfo(MonoObject* instance)
  503. :ScriptObject(instance)
  504. { }
  505. void ScriptAnimationSplitInfo::initRuntimeData()
  506. {
  507. nameField = metaData.scriptClass->getField("name");
  508. startFrameField = metaData.scriptClass->getField("startFrame");
  509. endFrameField = metaData.scriptClass->getField("endFrame");
  510. isAdditiveField = metaData.scriptClass->getField("isAdditive");
  511. }
  512. AnimationSplitInfo ScriptAnimationSplitInfo::fromManaged(MonoObject* instance)
  513. {
  514. AnimationSplitInfo output;
  515. MonoString* monoName = nullptr;
  516. nameField->getValue(instance, &monoName);
  517. output.name = MonoUtil::monoToString(monoName);
  518. startFrameField->getValue(instance, &output.startFrame);
  519. endFrameField->getValue(instance, &output.endFrame);
  520. isAdditiveField->getValue(instance, &output.isAdditive);
  521. return output;
  522. }
  523. MonoObject* ScriptAnimationSplitInfo::toManaged(const AnimationSplitInfo& splitInfo)
  524. {
  525. MonoString* monoString = MonoUtil::stringToMono(splitInfo.name);
  526. UINT32 startFrame = splitInfo.startFrame;
  527. UINT32 endFrame = splitInfo.endFrame;
  528. bool isAdditive = splitInfo.isAdditive;
  529. void* params[4] = { monoString, &startFrame, &endFrame, &isAdditive };
  530. return metaData.scriptClass->createInstance("string, int, int, bool", params);
  531. }
  532. }