BsScriptImportOptions.cpp 29 KB

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