2
0

BsScriptPlatformInfo.cpp 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #include "BsScriptPlatformInfo.h"
  2. #include "BsScriptMeta.h"
  3. #include "BsMonoField.h"
  4. #include "BsMonoClass.h"
  5. #include "BsMonoManager.h"
  6. #include "BsMonoMethod.h"
  7. #include "BsMonoUtil.h"
  8. namespace BansheeEngine
  9. {
  10. ScriptPlatformInfoBase::ScriptPlatformInfoBase(MonoObject* instance)
  11. :ScriptObjectBase(instance)
  12. { }
  13. ScriptPlatformInfo::ScriptPlatformInfo(MonoObject* instance)
  14. : ScriptObject(instance)
  15. {
  16. }
  17. void ScriptPlatformInfo::initRuntimeData()
  18. {
  19. metaData.scriptClass->addInternalCall("internal_GetType", &ScriptPlatformInfo::internal_GetType);
  20. metaData.scriptClass->addInternalCall("internal_GetDefines", &ScriptPlatformInfo::internal_GetDefines);
  21. metaData.scriptClass->addInternalCall("internal_SetDefines", &ScriptPlatformInfo::internal_SetDefines);
  22. }
  23. MonoObject* ScriptPlatformInfo::create(const SPtr<PlatformInfo>& platformInfo)
  24. {
  25. switch (platformInfo->type)
  26. {
  27. case PlatformType::Windows:
  28. return ScriptWinPlatformInfo::create(std::static_pointer_cast<WinPlatformInfo>(platformInfo));
  29. break;
  30. }
  31. return nullptr;
  32. }
  33. PlatformType ScriptPlatformInfo::internal_GetType(ScriptPlatformInfoBase* thisPtr)
  34. {
  35. return thisPtr->getPlatformInfo()->type;
  36. }
  37. MonoString* ScriptPlatformInfo::internal_GetDefines(ScriptPlatformInfoBase* thisPtr)
  38. {
  39. return MonoUtil::wstringToMono(MonoManager::instance().getDomain(), thisPtr->getPlatformInfo()->defines);
  40. }
  41. void ScriptPlatformInfo::internal_SetDefines(ScriptPlatformInfoBase* thisPtr, MonoString* value)
  42. {
  43. thisPtr->getPlatformInfo()->defines = MonoUtil::monoToWString(value);
  44. }
  45. ScriptWinPlatformInfo::ScriptWinPlatformInfo(MonoObject* instance)
  46. :ScriptObject(instance)
  47. {
  48. mPlatformInfo = bs_shared_ptr<WinPlatformInfo>();
  49. }
  50. void ScriptWinPlatformInfo::initRuntimeData()
  51. {
  52. metaData.scriptClass->addInternalCall("internal_GetIs32Bit", &ScriptWinPlatformInfo::internal_GetIs32Bit);
  53. metaData.scriptClass->addInternalCall("internal_SetIs32Bit", &ScriptWinPlatformInfo::internal_SetIs32Bit);
  54. }
  55. SPtr<WinPlatformInfo> ScriptWinPlatformInfo::getWinPlatformInfo() const
  56. {
  57. return std::static_pointer_cast<WinPlatformInfo>(mPlatformInfo);
  58. }
  59. MonoObject* ScriptWinPlatformInfo::create(const SPtr<WinPlatformInfo>& platformInfo)
  60. {
  61. MonoObject* managedInstance = metaData.scriptClass->createInstance();
  62. ScriptWinPlatformInfo* scriptObj = ScriptWinPlatformInfo::toNative(managedInstance);
  63. scriptObj->mPlatformInfo = platformInfo;
  64. return managedInstance;
  65. }
  66. bool ScriptWinPlatformInfo::internal_GetIs32Bit(ScriptWinPlatformInfo* thisPtr)
  67. {
  68. return thisPtr->getWinPlatformInfo()->is32bit;
  69. }
  70. void ScriptWinPlatformInfo::internal_SetIs32Bit(ScriptWinPlatformInfo* thisPtr, bool value)
  71. {
  72. thisPtr->getWinPlatformInfo()->is32bit = value;
  73. }
  74. }