BsScriptImportOptions.cpp 30 KB

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