BsScriptImportOptions.cpp 31 KB

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