BsScriptImportOptions.cpp 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737
  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. #include "BsScriptAnimationClip.h"
  18. using namespace std::placeholders;
  19. namespace BansheeEngine
  20. {
  21. struct CharRange
  22. {
  23. UINT32 start, end;
  24. };
  25. ScriptImportOptionsBase::ScriptImportOptionsBase(MonoObject* instance)
  26. :ScriptObjectBase(instance)
  27. { }
  28. void ScriptImportOptions::initRuntimeData()
  29. { }
  30. MonoObject* ScriptImportOptions::create(const SPtr<ImportOptions>& importOptions)
  31. {
  32. UINT32 typeId = importOptions->getRTTI()->getRTTIId();
  33. switch (typeId)
  34. {
  35. case TID_TextureImportOptions:
  36. return ScriptTextureImportOptions::create(std::static_pointer_cast<TextureImportOptions>(importOptions));
  37. case TID_MeshImportOptions:
  38. return ScriptMeshImportOptions::create(std::static_pointer_cast<MeshImportOptions>(importOptions));
  39. case TID_FontImportOptions:
  40. return ScriptFontImportOptions::create(std::static_pointer_cast<FontImportOptions>(importOptions));
  41. case TID_ScriptCodeImportOptions:
  42. return ScriptScriptCodeImportOptions::create(std::static_pointer_cast<ScriptCodeImportOptions>(importOptions));
  43. case TID_AudioClipImportOptions:
  44. return ScriptAudioClipImportOptions::create(std::static_pointer_cast<AudioClipImportOptions>(importOptions));
  45. }
  46. MonoObject* managedInstance = metaData.scriptClass->createInstance();
  47. ScriptImportOptions* scriptObj = ScriptImportOptions::toNative(managedInstance);
  48. scriptObj->mImportOptions = importOptions;
  49. return managedInstance;
  50. }
  51. ScriptImportOptions::ScriptImportOptions(MonoObject* instance)
  52. :ScriptObject(instance)
  53. {
  54. mImportOptions = bs_shared_ptr_new<ImportOptions>();
  55. }
  56. ScriptTextureImportOptions::ScriptTextureImportOptions(MonoObject* instance)
  57. : ScriptObject(instance)
  58. {
  59. mImportOptions = bs_shared_ptr_new<TextureImportOptions>();
  60. }
  61. void ScriptTextureImportOptions::initRuntimeData()
  62. {
  63. metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptTextureImportOptions::internal_CreateInstance);
  64. metaData.scriptClass->addInternalCall("Internal_GetPixelFormat", &ScriptTextureImportOptions::internal_GetPixelFormat);
  65. metaData.scriptClass->addInternalCall("Internal_SetPixelFormat", &ScriptTextureImportOptions::internal_SetPixelFormat);
  66. metaData.scriptClass->addInternalCall("Internal_GetGenerateMipmaps", &ScriptTextureImportOptions::internal_GetGenerateMipmaps);
  67. metaData.scriptClass->addInternalCall("Internal_SetGenerateMipmaps", &ScriptTextureImportOptions::internal_SetGenerateMipmaps);
  68. metaData.scriptClass->addInternalCall("Internal_GetMaxMipmapLevel", &ScriptTextureImportOptions::internal_GetMaxMipmapLevel);
  69. metaData.scriptClass->addInternalCall("Internal_SetMaxMipmapLevel", &ScriptTextureImportOptions::internal_SetMaxMipmapLevel);
  70. metaData.scriptClass->addInternalCall("Internal_GetCPUReadable", &ScriptTextureImportOptions::internal_GetCPUReadable);
  71. metaData.scriptClass->addInternalCall("Internal_SetCPUReadable", &ScriptTextureImportOptions::internal_SetCPUReadable);
  72. metaData.scriptClass->addInternalCall("Internal_GetIsSRGB", &ScriptTextureImportOptions::internal_GetIsSRGB);
  73. metaData.scriptClass->addInternalCall("Internal_SetIsSRGB", &ScriptTextureImportOptions::internal_SetIsSRGB);
  74. }
  75. SPtr<TextureImportOptions> ScriptTextureImportOptions::getTexImportOptions()
  76. {
  77. return std::static_pointer_cast<TextureImportOptions>(mImportOptions);
  78. }
  79. MonoObject* ScriptTextureImportOptions::create()
  80. {
  81. return metaData.scriptClass->createInstance();
  82. }
  83. MonoObject* ScriptTextureImportOptions::create(const SPtr<TextureImportOptions>& options)
  84. {
  85. MonoObject* managedInstance = metaData.scriptClass->createInstance();
  86. ScriptTextureImportOptions* scriptObj = ScriptTextureImportOptions::toNative(managedInstance);
  87. scriptObj->mImportOptions = options;
  88. return managedInstance;
  89. }
  90. void ScriptTextureImportOptions::internal_CreateInstance(MonoObject* instance)
  91. {
  92. new (bs_alloc<ScriptTextureImportOptions>()) ScriptTextureImportOptions(instance);
  93. }
  94. PixelFormat ScriptTextureImportOptions::internal_GetPixelFormat(ScriptTextureImportOptions* thisPtr)
  95. {
  96. return thisPtr->getTexImportOptions()->getFormat();
  97. }
  98. void ScriptTextureImportOptions::internal_SetPixelFormat(ScriptTextureImportOptions* thisPtr, PixelFormat value)
  99. {
  100. thisPtr->getTexImportOptions()->setFormat(value);
  101. }
  102. bool ScriptTextureImportOptions::internal_GetGenerateMipmaps(ScriptTextureImportOptions* thisPtr)
  103. {
  104. return thisPtr->getTexImportOptions()->getGenerateMipmaps();
  105. }
  106. void ScriptTextureImportOptions::internal_SetGenerateMipmaps(ScriptTextureImportOptions* thisPtr, bool value)
  107. {
  108. thisPtr->getTexImportOptions()->setGenerateMipmaps(value);
  109. }
  110. UINT32 ScriptTextureImportOptions::internal_GetMaxMipmapLevel(ScriptTextureImportOptions* thisPtr)
  111. {
  112. return thisPtr->getTexImportOptions()->getMaxMip();
  113. }
  114. void ScriptTextureImportOptions::internal_SetMaxMipmapLevel(ScriptTextureImportOptions* thisPtr, UINT32 value)
  115. {
  116. thisPtr->getTexImportOptions()->setMaxMip(value);
  117. }
  118. bool ScriptTextureImportOptions::internal_GetCPUReadable(ScriptTextureImportOptions* thisPtr)
  119. {
  120. return thisPtr->getTexImportOptions()->getCPUReadable();
  121. }
  122. void ScriptTextureImportOptions::internal_SetCPUReadable(ScriptTextureImportOptions* thisPtr, bool value)
  123. {
  124. thisPtr->getTexImportOptions()->setCPUReadable(value);
  125. }
  126. bool ScriptTextureImportOptions::internal_GetIsSRGB(ScriptTextureImportOptions* thisPtr)
  127. {
  128. return thisPtr->getTexImportOptions()->getSRGB();
  129. }
  130. void ScriptTextureImportOptions::internal_SetIsSRGB(ScriptTextureImportOptions* thisPtr, bool value)
  131. {
  132. thisPtr->getTexImportOptions()->setSRGB(value);
  133. }
  134. ScriptMeshImportOptions::ScriptMeshImportOptions(MonoObject* instance)
  135. :ScriptObject(instance)
  136. {
  137. mImportOptions = bs_shared_ptr_new<MeshImportOptions>();
  138. }
  139. void ScriptMeshImportOptions::initRuntimeData()
  140. {
  141. metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptMeshImportOptions::internal_CreateInstance);
  142. metaData.scriptClass->addInternalCall("Internal_GetCPUReadable", &ScriptMeshImportOptions::internal_GetCPUReadable);
  143. metaData.scriptClass->addInternalCall("Internal_SetCPUReadable", &ScriptMeshImportOptions::internal_SetCPUReadable);
  144. metaData.scriptClass->addInternalCall("Internal_GetImportNormals", &ScriptMeshImportOptions::internal_GetImportNormals);
  145. metaData.scriptClass->addInternalCall("Internal_SetImportNormals", &ScriptMeshImportOptions::internal_SetImportNormals);
  146. metaData.scriptClass->addInternalCall("Internal_GetImportTangents", &ScriptMeshImportOptions::internal_GetImportTangents);
  147. metaData.scriptClass->addInternalCall("Internal_SetImportTangents", &ScriptMeshImportOptions::internal_SetImportTangents);
  148. metaData.scriptClass->addInternalCall("Internal_GetImportSkin", &ScriptMeshImportOptions::internal_GetImportSkin);
  149. metaData.scriptClass->addInternalCall("Internal_SetImportSkin", &ScriptMeshImportOptions::internal_SetImportSkin);
  150. metaData.scriptClass->addInternalCall("Internal_GetImportAnimation", &ScriptMeshImportOptions::internal_GetImportAnimation);
  151. metaData.scriptClass->addInternalCall("Internal_SetImportAnimation", &ScriptMeshImportOptions::internal_SetImportAnimation);
  152. metaData.scriptClass->addInternalCall("Internal_GetImportBlendShapes", &ScriptMeshImportOptions::internal_GetImportBlendShapes);
  153. metaData.scriptClass->addInternalCall("Internal_SetImportBlendShapes", &ScriptMeshImportOptions::internal_SetImportBlendShapes);
  154. metaData.scriptClass->addInternalCall("Internal_GetKeyFrameReduction", &ScriptMeshImportOptions::internal_GetKeyFrameReduction);
  155. metaData.scriptClass->addInternalCall("Internal_SetKeyFrameReduction", &ScriptMeshImportOptions::internal_SetKeyFrameReduction);
  156. metaData.scriptClass->addInternalCall("Internal_GetScale", &ScriptMeshImportOptions::internal_GetScale);
  157. metaData.scriptClass->addInternalCall("Internal_SetScale", &ScriptMeshImportOptions::internal_SetScale);
  158. metaData.scriptClass->addInternalCall("Internal_GetCollisionMeshType", &ScriptMeshImportOptions::internal_GetCollisionMeshType);
  159. metaData.scriptClass->addInternalCall("Internal_SetCollisionMeshType", &ScriptMeshImportOptions::internal_SetCollisionMeshType);
  160. metaData.scriptClass->addInternalCall("Internal_GetAnimationClipSplits", &ScriptMeshImportOptions::internal_GetAnimationClipSplits);
  161. metaData.scriptClass->addInternalCall("Internal_SetAnimationClipSplits", &ScriptMeshImportOptions::internal_SetAnimationClipSplits);
  162. }
  163. SPtr<MeshImportOptions> ScriptMeshImportOptions::getMeshImportOptions()
  164. {
  165. return std::static_pointer_cast<MeshImportOptions>(mImportOptions);
  166. }
  167. MonoObject* ScriptMeshImportOptions::create()
  168. {
  169. return metaData.scriptClass->createInstance();
  170. }
  171. MonoObject* ScriptMeshImportOptions::create(const SPtr<MeshImportOptions>& options)
  172. {
  173. MonoObject* managedInstance = metaData.scriptClass->createInstance();
  174. ScriptMeshImportOptions* scriptObj = ScriptMeshImportOptions::toNative(managedInstance);
  175. scriptObj->mImportOptions = options;
  176. return managedInstance;
  177. }
  178. void ScriptMeshImportOptions::internal_CreateInstance(MonoObject* instance)
  179. {
  180. new (bs_alloc<ScriptMeshImportOptions>()) ScriptMeshImportOptions(instance);
  181. }
  182. bool ScriptMeshImportOptions::internal_GetCPUReadable(ScriptMeshImportOptions* thisPtr)
  183. {
  184. return thisPtr->getMeshImportOptions()->getCPUReadable();
  185. }
  186. void ScriptMeshImportOptions::internal_SetCPUReadable(ScriptMeshImportOptions* thisPtr, bool value)
  187. {
  188. thisPtr->getMeshImportOptions()->setCPUReadable(value);
  189. }
  190. bool ScriptMeshImportOptions::internal_GetImportNormals(ScriptMeshImportOptions* thisPtr)
  191. {
  192. return thisPtr->getMeshImportOptions()->getImportNormals();
  193. }
  194. void ScriptMeshImportOptions::internal_SetImportNormals(ScriptMeshImportOptions* thisPtr, bool value)
  195. {
  196. thisPtr->getMeshImportOptions()->setImportNormals(value);
  197. }
  198. bool ScriptMeshImportOptions::internal_GetImportTangents(ScriptMeshImportOptions* thisPtr)
  199. {
  200. return thisPtr->getMeshImportOptions()->getImportTangents();
  201. }
  202. void ScriptMeshImportOptions::internal_SetImportTangents(ScriptMeshImportOptions* thisPtr, bool value)
  203. {
  204. thisPtr->getMeshImportOptions()->setImportTangents(value);
  205. }
  206. bool ScriptMeshImportOptions::internal_GetImportSkin(ScriptMeshImportOptions* thisPtr)
  207. {
  208. return thisPtr->getMeshImportOptions()->getImportSkin();
  209. }
  210. void ScriptMeshImportOptions::internal_SetImportSkin(ScriptMeshImportOptions* thisPtr, bool value)
  211. {
  212. thisPtr->getMeshImportOptions()->setImportSkin(value);
  213. }
  214. bool ScriptMeshImportOptions::internal_GetImportAnimation(ScriptMeshImportOptions* thisPtr)
  215. {
  216. return thisPtr->getMeshImportOptions()->getImportAnimation();
  217. }
  218. void ScriptMeshImportOptions::internal_SetImportAnimation(ScriptMeshImportOptions* thisPtr, bool value)
  219. {
  220. thisPtr->getMeshImportOptions()->setImportAnimation(value);
  221. }
  222. bool ScriptMeshImportOptions::internal_GetImportBlendShapes(ScriptMeshImportOptions* thisPtr)
  223. {
  224. return thisPtr->getMeshImportOptions()->getImportBlendShapes();
  225. }
  226. void ScriptMeshImportOptions::internal_SetImportBlendShapes(ScriptMeshImportOptions* thisPtr, bool value)
  227. {
  228. thisPtr->getMeshImportOptions()->setImportBlendShapes(value);
  229. }
  230. bool ScriptMeshImportOptions::internal_GetKeyFrameReduction(ScriptMeshImportOptions* thisPtr)
  231. {
  232. return thisPtr->getMeshImportOptions()->getKeyFrameReduction();
  233. }
  234. void ScriptMeshImportOptions::internal_SetKeyFrameReduction(ScriptMeshImportOptions* thisPtr, bool value)
  235. {
  236. thisPtr->getMeshImportOptions()->setKeyFrameReduction(value);
  237. }
  238. float ScriptMeshImportOptions::internal_GetScale(ScriptMeshImportOptions* thisPtr)
  239. {
  240. return thisPtr->getMeshImportOptions()->getImportScale();
  241. }
  242. void ScriptMeshImportOptions::internal_SetScale(ScriptMeshImportOptions* thisPtr, float value)
  243. {
  244. thisPtr->getMeshImportOptions()->setImportScale(value);
  245. }
  246. int ScriptMeshImportOptions::internal_GetCollisionMeshType(ScriptMeshImportOptions* thisPtr)
  247. {
  248. return (int)thisPtr->getMeshImportOptions()->getCollisionMeshType();
  249. }
  250. void ScriptMeshImportOptions::internal_SetCollisionMeshType(ScriptMeshImportOptions* thisPtr, int value)
  251. {
  252. thisPtr->getMeshImportOptions()->setCollisionMeshType((CollisionMeshType)value);
  253. }
  254. MonoArray* ScriptMeshImportOptions::internal_GetAnimationClipSplits(ScriptMeshImportOptions* thisPtr)
  255. {
  256. SPtr<MeshImportOptions> io = thisPtr->getMeshImportOptions();
  257. Vector<AnimationSplitInfo> splitInfos = io->getAnimationClipSplits();
  258. UINT32 numSplitInfos = (UINT32)splitInfos.size();
  259. ScriptArray outputArray = ScriptArray::create<ScriptAnimationSplitInfo>(numSplitInfos);
  260. for(UINT32 i = 0; i < numSplitInfos; i++)
  261. outputArray.set(i, ScriptAnimationSplitInfo::toManaged(splitInfos[i]));
  262. return outputArray.getInternal();
  263. }
  264. void ScriptMeshImportOptions::internal_SetAnimationClipSplits(ScriptMeshImportOptions* thisPtr, MonoArray* value)
  265. {
  266. ScriptArray inputArray(value);
  267. SPtr<MeshImportOptions> io = thisPtr->getMeshImportOptions();
  268. UINT32 numSplits = inputArray.size();
  269. Vector<AnimationSplitInfo> splitInfos(numSplits);
  270. for (UINT32 i = 0; i < numSplits; i++)
  271. splitInfos[i] = ScriptAnimationSplitInfo::fromManaged(inputArray.get<MonoObject*>(i));
  272. io->setAnimationClipSplits(splitInfos);
  273. }
  274. MonoArray* ScriptMeshImportOptions::internal_GetAnimationEvents(ScriptMeshImportOptions* thisPtr)
  275. {
  276. SPtr<MeshImportOptions> io = thisPtr->getMeshImportOptions();
  277. Vector<ImportedAnimationEvents> animationEvents = io->getAnimationEvents();
  278. UINT32 count = (UINT32)animationEvents.size();
  279. ScriptArray outputArray = ScriptArray::create<ScriptImportedAnimationEvents>(count);
  280. for (UINT32 i = 0; i < count; i++)
  281. outputArray.set(i, ScriptImportedAnimationEvents::toManaged(animationEvents[i]));
  282. return outputArray.getInternal();
  283. }
  284. void ScriptMeshImportOptions::internal_SetAnimationEvents(ScriptMeshImportOptions* thisPtr, MonoArray* value)
  285. {
  286. ScriptArray inputArray(value);
  287. SPtr<MeshImportOptions> io = thisPtr->getMeshImportOptions();
  288. UINT32 count = inputArray.size();
  289. Vector<ImportedAnimationEvents> animationEvents(count);
  290. for (UINT32 i = 0; i < count; i++)
  291. animationEvents[i] = ScriptImportedAnimationEvents::fromManaged(inputArray.get<MonoObject*>(i));
  292. io->setAnimationEvents(animationEvents);
  293. }
  294. ScriptFontImportOptions::ScriptFontImportOptions(MonoObject* instance)
  295. :ScriptObject(instance)
  296. {
  297. mImportOptions = bs_shared_ptr_new<FontImportOptions>();
  298. }
  299. void ScriptFontImportOptions::initRuntimeData()
  300. {
  301. metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptFontImportOptions::internal_CreateInstance);
  302. metaData.scriptClass->addInternalCall("Internal_GetFontSizes", &ScriptFontImportOptions::internal_GetFontSizes);
  303. metaData.scriptClass->addInternalCall("Internal_SetFontSizes", &ScriptFontImportOptions::internal_SetFontSizes);
  304. metaData.scriptClass->addInternalCall("Internal_GetDPI", &ScriptFontImportOptions::internal_GetDPI);
  305. metaData.scriptClass->addInternalCall("Internal_SetDPI", &ScriptFontImportOptions::internal_SetDPI);
  306. metaData.scriptClass->addInternalCall("Internal_GetRenderMode", &ScriptFontImportOptions::internal_GetRenderMode);
  307. metaData.scriptClass->addInternalCall("Internal_SetRenderMode", &ScriptFontImportOptions::internal_SetRenderMode);
  308. metaData.scriptClass->addInternalCall("Internal_GetBold", &ScriptFontImportOptions::internal_GetBold);
  309. metaData.scriptClass->addInternalCall("Internal_SetBold", &ScriptFontImportOptions::internal_SetBold);
  310. metaData.scriptClass->addInternalCall("Internal_GetItalic", &ScriptFontImportOptions::internal_GetItalic);
  311. metaData.scriptClass->addInternalCall("Internal_SetItalic", &ScriptFontImportOptions::internal_SetItalic);
  312. metaData.scriptClass->addInternalCall("Internal_GetCharRanges", &ScriptFontImportOptions::internal_GetCharRanges);
  313. metaData.scriptClass->addInternalCall("Internal_SetCharRanges", &ScriptFontImportOptions::internal_SetCharRanges);
  314. }
  315. SPtr<FontImportOptions> ScriptFontImportOptions::getFontImportOptions()
  316. {
  317. return std::static_pointer_cast<FontImportOptions>(mImportOptions);
  318. }
  319. MonoObject* ScriptFontImportOptions::create()
  320. {
  321. return metaData.scriptClass->createInstance();
  322. }
  323. MonoObject* ScriptFontImportOptions::create(const SPtr<FontImportOptions>& options)
  324. {
  325. MonoObject* managedInstance = metaData.scriptClass->createInstance();
  326. ScriptFontImportOptions* scriptObj = ScriptFontImportOptions::toNative(managedInstance);
  327. scriptObj->mImportOptions = options;
  328. return managedInstance;
  329. }
  330. void ScriptFontImportOptions::internal_CreateInstance(MonoObject* instance)
  331. {
  332. new (bs_alloc<ScriptFontImportOptions>()) ScriptFontImportOptions(instance);
  333. }
  334. MonoArray* ScriptFontImportOptions::internal_GetFontSizes(ScriptFontImportOptions* thisPtr)
  335. {
  336. Vector<UINT32> fontSizes = thisPtr->getFontImportOptions()->getFontSizes();
  337. ScriptArray outArray = ScriptArray::create<UINT32>((UINT32)fontSizes.size());
  338. for (UINT32 i = 0; i < fontSizes.size(); i++)
  339. outArray.set(i, fontSizes[i]);
  340. return outArray.getInternal();
  341. }
  342. void ScriptFontImportOptions::internal_SetFontSizes(ScriptFontImportOptions* thisPtr, MonoArray* value)
  343. {
  344. ScriptArray inArray(value);
  345. Vector<UINT32> fontSizes(inArray.size());
  346. for (UINT32 i = 0; i < inArray.size(); i++)
  347. fontSizes[i] = inArray.get<UINT32>(i);
  348. thisPtr->getFontImportOptions()->setFontSizes(fontSizes);
  349. }
  350. UINT32 ScriptFontImportOptions::internal_GetDPI(ScriptFontImportOptions* thisPtr)
  351. {
  352. return thisPtr->getFontImportOptions()->getDPI();
  353. }
  354. void ScriptFontImportOptions::internal_SetDPI(ScriptFontImportOptions* thisPtr, UINT32 value)
  355. {
  356. thisPtr->getFontImportOptions()->setDPI(value);
  357. }
  358. FontRenderMode ScriptFontImportOptions::internal_GetRenderMode(ScriptFontImportOptions* thisPtr)
  359. {
  360. return thisPtr->getFontImportOptions()->getRenderMode();
  361. }
  362. void ScriptFontImportOptions::internal_SetRenderMode(ScriptFontImportOptions* thisPtr, FontRenderMode value)
  363. {
  364. thisPtr->getFontImportOptions()->setRenderMode(value);
  365. }
  366. bool ScriptFontImportOptions::internal_GetBold(ScriptFontImportOptions* thisPtr)
  367. {
  368. return thisPtr->getFontImportOptions()->getBold();
  369. }
  370. void ScriptFontImportOptions::internal_SetBold(ScriptFontImportOptions* thisPtr, bool value)
  371. {
  372. thisPtr->getFontImportOptions()->setBold(value);
  373. }
  374. bool ScriptFontImportOptions::internal_GetItalic(ScriptFontImportOptions* thisPtr)
  375. {
  376. return thisPtr->getFontImportOptions()->getItalic();
  377. }
  378. void ScriptFontImportOptions::internal_SetItalic(ScriptFontImportOptions* thisPtr, bool value)
  379. {
  380. thisPtr->getFontImportOptions()->setItalic(value);
  381. }
  382. MonoArray* ScriptFontImportOptions::internal_GetCharRanges(ScriptFontImportOptions* thisPtr)
  383. {
  384. Vector<std::pair<UINT32, UINT32>> charRanges = thisPtr->getFontImportOptions()->getCharIndexRanges();
  385. ScriptArray outArray = ScriptArray::create<ScriptCharRange>((UINT32)charRanges.size());
  386. for (UINT32 i = 0; i < (UINT32)charRanges.size(); i++)
  387. {
  388. CharRange range;
  389. range.start = charRanges[i].first;
  390. range.end = charRanges[i].second;
  391. outArray.set(i, range);
  392. }
  393. return outArray.getInternal();
  394. }
  395. void ScriptFontImportOptions::internal_SetCharRanges(ScriptFontImportOptions* thisPtr, MonoArray* value)
  396. {
  397. ScriptArray inArray(value);
  398. thisPtr->getFontImportOptions()->clearCharIndexRanges();
  399. for (UINT32 i = 0; i < inArray.size(); i++)
  400. {
  401. CharRange range = inArray.get<CharRange>(i);
  402. thisPtr->getFontImportOptions()->addCharIndexRange(range.start, range.end);
  403. }
  404. }
  405. ScriptScriptCodeImportOptions::ScriptScriptCodeImportOptions(MonoObject* instance)
  406. :ScriptObject(instance)
  407. {
  408. mImportOptions = bs_shared_ptr_new<ScriptCodeImportOptions>();
  409. }
  410. void ScriptScriptCodeImportOptions::initRuntimeData()
  411. {
  412. metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptScriptCodeImportOptions::internal_CreateInstance);
  413. metaData.scriptClass->addInternalCall("Internal_IsEditorScript", &ScriptScriptCodeImportOptions::internal_IsEditorScript);
  414. metaData.scriptClass->addInternalCall("Internal_SetEditorScript", &ScriptScriptCodeImportOptions::internal_SetEditorScript);
  415. }
  416. SPtr<ScriptCodeImportOptions> ScriptScriptCodeImportOptions::getCodeImportOptions()
  417. {
  418. return std::static_pointer_cast<ScriptCodeImportOptions>(mImportOptions);
  419. }
  420. MonoObject* ScriptScriptCodeImportOptions::create()
  421. {
  422. return metaData.scriptClass->createInstance();
  423. }
  424. MonoObject* ScriptScriptCodeImportOptions::create(const SPtr<ScriptCodeImportOptions>& options)
  425. {
  426. MonoObject* managedInstance = metaData.scriptClass->createInstance();
  427. ScriptScriptCodeImportOptions* scriptObj = ScriptScriptCodeImportOptions::toNative(managedInstance);
  428. scriptObj->mImportOptions = options;
  429. return managedInstance;
  430. }
  431. void ScriptScriptCodeImportOptions::internal_CreateInstance(MonoObject* instance)
  432. {
  433. new (bs_alloc<ScriptScriptCodeImportOptions>()) ScriptScriptCodeImportOptions(instance);
  434. }
  435. bool ScriptScriptCodeImportOptions::internal_IsEditorScript(ScriptScriptCodeImportOptions* thisPtr)
  436. {
  437. return thisPtr->getCodeImportOptions()->isEditorScript();
  438. }
  439. void ScriptScriptCodeImportOptions::internal_SetEditorScript(ScriptScriptCodeImportOptions* thisPtr, bool value)
  440. {
  441. thisPtr->getCodeImportOptions()->setEditorScript(value);
  442. }
  443. ScriptAudioClipImportOptions::ScriptAudioClipImportOptions(MonoObject* instance)
  444. :ScriptObject(instance)
  445. {
  446. mImportOptions = bs_shared_ptr_new<AudioClipImportOptions>();
  447. }
  448. void ScriptAudioClipImportOptions::initRuntimeData()
  449. {
  450. metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptAudioClipImportOptions::internal_CreateInstance);
  451. metaData.scriptClass->addInternalCall("Internal_GetFormat", &ScriptAudioClipImportOptions::internal_GetFormat);
  452. metaData.scriptClass->addInternalCall("Internal_SetFormat", &ScriptAudioClipImportOptions::internal_SetFormat);
  453. metaData.scriptClass->addInternalCall("Internal_GetReadMode", &ScriptAudioClipImportOptions::internal_GetReadMode);
  454. metaData.scriptClass->addInternalCall("Internal_SetReadMode", &ScriptAudioClipImportOptions::internal_SetReadMode);
  455. metaData.scriptClass->addInternalCall("Internal_GetIs3D", &ScriptAudioClipImportOptions::internal_GetIs3D);
  456. metaData.scriptClass->addInternalCall("Internal_SetIs3D", &ScriptAudioClipImportOptions::internal_SetIs3D);
  457. metaData.scriptClass->addInternalCall("Internal_GetBitDepth", &ScriptAudioClipImportOptions::internal_GetBitDepth);
  458. metaData.scriptClass->addInternalCall("Internal_SetBitDepth", &ScriptAudioClipImportOptions::internal_SetBitDepth);
  459. }
  460. SPtr<AudioClipImportOptions> ScriptAudioClipImportOptions::getClipImportOptions()
  461. {
  462. return std::static_pointer_cast<AudioClipImportOptions>(mImportOptions);
  463. }
  464. MonoObject* ScriptAudioClipImportOptions::create()
  465. {
  466. return metaData.scriptClass->createInstance();
  467. }
  468. MonoObject* ScriptAudioClipImportOptions::create(const SPtr<AudioClipImportOptions>& options)
  469. {
  470. MonoObject* managedInstance = metaData.scriptClass->createInstance();
  471. ScriptAudioClipImportOptions* scriptObj = ScriptAudioClipImportOptions::toNative(managedInstance);
  472. scriptObj->mImportOptions = options;
  473. return managedInstance;
  474. }
  475. void ScriptAudioClipImportOptions::internal_CreateInstance(MonoObject* instance)
  476. {
  477. new (bs_alloc<ScriptAudioClipImportOptions>()) ScriptAudioClipImportOptions(instance);
  478. }
  479. AudioFormat ScriptAudioClipImportOptions::internal_GetFormat(ScriptAudioClipImportOptions* thisPtr)
  480. {
  481. auto io = thisPtr->getClipImportOptions();
  482. return io->getFormat();
  483. }
  484. void ScriptAudioClipImportOptions::internal_SetFormat(ScriptAudioClipImportOptions* thisPtr, AudioFormat format)
  485. {
  486. auto io = thisPtr->getClipImportOptions();
  487. io->setFormat(format);
  488. }
  489. AudioReadMode ScriptAudioClipImportOptions::internal_GetReadMode(ScriptAudioClipImportOptions* thisPtr)
  490. {
  491. auto io = thisPtr->getClipImportOptions();
  492. return io->getReadMode();
  493. }
  494. void ScriptAudioClipImportOptions::internal_SetReadMode(ScriptAudioClipImportOptions* thisPtr, AudioReadMode readMode)
  495. {
  496. auto io = thisPtr->getClipImportOptions();
  497. io->setReadMode(readMode);
  498. }
  499. bool ScriptAudioClipImportOptions::internal_GetIs3D(ScriptAudioClipImportOptions* thisPtr)
  500. {
  501. auto io = thisPtr->getClipImportOptions();
  502. return io->getIs3D();
  503. }
  504. void ScriptAudioClipImportOptions::internal_SetIs3D(ScriptAudioClipImportOptions* thisPtr, bool is3d)
  505. {
  506. auto io = thisPtr->getClipImportOptions();
  507. io->setIs3D(is3d);
  508. }
  509. UINT32 ScriptAudioClipImportOptions::internal_GetBitDepth(ScriptAudioClipImportOptions* thisPtr)
  510. {
  511. auto io = thisPtr->getClipImportOptions();
  512. return io->getBitDepth();
  513. }
  514. void ScriptAudioClipImportOptions::internal_SetBitDepth(ScriptAudioClipImportOptions* thisPtr, UINT32 bitDepth)
  515. {
  516. auto io = thisPtr->getClipImportOptions();
  517. io->setBitDepth(bitDepth);
  518. }
  519. MonoField* ScriptAnimationSplitInfo::nameField = nullptr;
  520. MonoField* ScriptAnimationSplitInfo::startFrameField = nullptr;
  521. MonoField* ScriptAnimationSplitInfo::endFrameField = nullptr;
  522. MonoField* ScriptAnimationSplitInfo::isAdditiveField = nullptr;
  523. ScriptAnimationSplitInfo::ScriptAnimationSplitInfo(MonoObject* instance)
  524. :ScriptObject(instance)
  525. { }
  526. void ScriptAnimationSplitInfo::initRuntimeData()
  527. {
  528. nameField = metaData.scriptClass->getField("name");
  529. startFrameField = metaData.scriptClass->getField("startFrame");
  530. endFrameField = metaData.scriptClass->getField("endFrame");
  531. isAdditiveField = metaData.scriptClass->getField("isAdditive");
  532. }
  533. AnimationSplitInfo ScriptAnimationSplitInfo::fromManaged(MonoObject* instance)
  534. {
  535. AnimationSplitInfo output;
  536. MonoString* monoName = nullptr;
  537. nameField->getValue(instance, &monoName);
  538. output.name = MonoUtil::monoToString(monoName);
  539. startFrameField->getValue(instance, &output.startFrame);
  540. endFrameField->getValue(instance, &output.endFrame);
  541. isAdditiveField->getValue(instance, &output.isAdditive);
  542. return output;
  543. }
  544. MonoObject* ScriptAnimationSplitInfo::toManaged(const AnimationSplitInfo& splitInfo)
  545. {
  546. MonoString* monoString = MonoUtil::stringToMono(splitInfo.name);
  547. UINT32 startFrame = splitInfo.startFrame;
  548. UINT32 endFrame = splitInfo.endFrame;
  549. bool isAdditive = splitInfo.isAdditive;
  550. void* params[4] = { monoString, &startFrame, &endFrame, &isAdditive };
  551. return metaData.scriptClass->createInstance("string, int, int, bool", params);
  552. }
  553. MonoField* ScriptImportedAnimationEvents::nameField = nullptr;
  554. MonoField* ScriptImportedAnimationEvents::eventsField = nullptr;
  555. ScriptImportedAnimationEvents::ScriptImportedAnimationEvents(MonoObject* instance)
  556. :ScriptObject(instance)
  557. { }
  558. void ScriptImportedAnimationEvents::initRuntimeData()
  559. {
  560. nameField = metaData.scriptClass->getField("name");
  561. eventsField = metaData.scriptClass->getField("events");
  562. }
  563. ImportedAnimationEvents ScriptImportedAnimationEvents::fromManaged(MonoObject* instance)
  564. {
  565. ImportedAnimationEvents output;
  566. MonoString* monoName = nullptr;
  567. nameField->getValue(instance, &monoName);
  568. output.name = MonoUtil::monoToString(monoName);
  569. MonoArray* monoEvents;
  570. eventsField->getValue(instance, &monoEvents);
  571. if (monoEvents != nullptr)
  572. {
  573. ScriptArray scriptEvents(monoEvents);
  574. for (UINT32 i = 0; i < scriptEvents.size(); i++)
  575. {
  576. MonoObject* monoEvent = scriptEvents.get<MonoObject*>(i);
  577. AnimationEvent event = ScriptAnimationEvent::toNative(monoEvent);
  578. output.events.push_back(event);
  579. }
  580. }
  581. return output;
  582. }
  583. MonoObject* ScriptImportedAnimationEvents::toManaged(const ImportedAnimationEvents& events)
  584. {
  585. MonoString* monoString = MonoUtil::stringToMono(events.name);
  586. UINT32 numEvents = (UINT32)events.events.size();
  587. ScriptArray scriptEvents = ScriptArray::create<ScriptAnimationEvent>(numEvents);
  588. for (UINT32 i = 0; i < numEvents; i++)
  589. {
  590. MonoObject* monoEvent = ScriptAnimationEvent::toManaged(events.events[i]);
  591. scriptEvents.set(i, monoEvent);
  592. }
  593. MonoObject* instance = metaData.scriptClass->createInstance();
  594. nameField->setValue(instance, monoString);
  595. eventsField->setValue(instance, scriptEvents.getInternal());
  596. return instance;
  597. }
  598. }