BsScriptImportOptions.cpp 31 KB

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