BsScriptBuildManager.cpp 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #include "BsScriptBuildManager.h"
  2. #include "BsMonoManager.h"
  3. #include "BsMonoClass.h"
  4. #include "BsMonoMethod.h"
  5. #include "BsMonoUtil.h"
  6. #include "BsScriptPlatformInfo.h"
  7. namespace BansheeEngine
  8. {
  9. ScriptBuildManager::ScriptBuildManager(MonoObject* instance)
  10. :ScriptObject(instance)
  11. { }
  12. void ScriptBuildManager::initRuntimeData()
  13. {
  14. metaData.scriptClass->addInternalCall("Internal_GetAvailablePlatforms", &ScriptBuildManager::internal_GetAvailablePlatforms);
  15. metaData.scriptClass->addInternalCall("Internal_GetActivePlatform", &ScriptBuildManager::internal_GetActivePlatform);
  16. metaData.scriptClass->addInternalCall("Internal_SetActivePlatform", &ScriptBuildManager::internal_SetActivePlatform);
  17. metaData.scriptClass->addInternalCall("Internal_GetActivePlatformInfo", &ScriptBuildManager::internal_GetActivePlatformInfo);
  18. metaData.scriptClass->addInternalCall("Internal_GetPlatformInfo", &ScriptBuildManager::internal_GetPlatformInfo);
  19. metaData.scriptClass->addInternalCall("Internal_GetFrameworkAssemblies", &ScriptBuildManager::internal_GetFrameworkAssemblies);
  20. metaData.scriptClass->addInternalCall("Internal_GetMainExecutable", &ScriptBuildManager::internal_GetMainExecutable);
  21. metaData.scriptClass->addInternalCall("Internal_GetDefines", &ScriptBuildManager::internal_GetDefines);
  22. }
  23. MonoArray* ScriptBuildManager::internal_GetAvailablePlatforms()
  24. {
  25. const Vector<PlatformType>& availableType = BuildManager::instance().getAvailablePlatforms();
  26. ScriptArray outArray = ScriptArray::create<UINT32>((UINT32)availableType.size());
  27. UINT32 idx = 0;
  28. for (auto& type : availableType)
  29. outArray.set(idx++, type);
  30. return outArray.getInternal();
  31. }
  32. PlatformType ScriptBuildManager::internal_GetActivePlatform()
  33. {
  34. return BuildManager::instance().getActivePlatform();
  35. }
  36. void ScriptBuildManager::internal_SetActivePlatform(PlatformType value)
  37. {
  38. BuildManager::instance().setActivePlatform(value);
  39. }
  40. MonoObject* ScriptBuildManager::internal_GetActivePlatformInfo()
  41. {
  42. return ScriptPlatformInfo::create(BuildManager::instance().getActivePlatformInfo());
  43. }
  44. MonoObject* ScriptBuildManager::internal_GetPlatformInfo(PlatformType type)
  45. {
  46. return ScriptPlatformInfo::create(BuildManager::instance().getPlatformInfo(type));
  47. }
  48. MonoArray* ScriptBuildManager::internal_GetFrameworkAssemblies(PlatformType type)
  49. {
  50. Vector<WString> frameworkAssemblies = BuildManager::instance().getFrameworkAssemblies(type);
  51. ScriptArray outArray = ScriptArray::create<WString>((UINT32)frameworkAssemblies.size());
  52. UINT32 idx = 0;
  53. for (auto& assemblyName : frameworkAssemblies)
  54. outArray.set(idx++, MonoUtil::wstringToMono(MonoManager::instance().getDomain(), assemblyName));
  55. return outArray.getInternal();
  56. }
  57. MonoString* ScriptBuildManager::internal_GetMainExecutable(PlatformType type)
  58. {
  59. return MonoUtil::wstringToMono(MonoManager::instance().getDomain(), BuildManager::instance().getMainExecutable(type).toWString());
  60. }
  61. MonoString* ScriptBuildManager::internal_GetDefines(PlatformType type)
  62. {
  63. return MonoUtil::wstringToMono(MonoManager::instance().getDomain(), BuildManager::instance().getDefines(type));
  64. }
  65. }