BsEngineScriptLibrary.cpp 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #include "BsEngineScriptLibrary.h"
  2. #include "BsMonoManager.h"
  3. #include "BsMonoAssembly.h"
  4. #include "BsScriptAssemblyManager.h"
  5. #include "BsScriptResourceManager.h"
  6. #include "BsScriptGameObjectManager.h"
  7. #include "BsManagedResourceManager.h"
  8. #include "BsScriptManager.h"
  9. #include "BsScriptInput.h"
  10. #include "BsScriptVirtualInput.h"
  11. #include "BsScriptObjectManager.h"
  12. #include "BsGameResourceManager.h"
  13. #include "BsApplication.h"
  14. #include "BsFileSystem.h"
  15. namespace BansheeEngine
  16. {
  17. void EngineScriptLibrary::initialize()
  18. {
  19. Path engineAssemblyPath = gApplication().getEngineAssemblyPath();
  20. const String ASSEMBLY_ENTRY_POINT = "Program::Start";
  21. MonoManager::startUp();
  22. MonoAssembly& bansheeEngineAssembly = MonoManager::instance().loadAssembly(engineAssemblyPath.toString(), ENGINE_ASSEMBLY);
  23. GameResourceManager::startUp();
  24. ScriptObjectManager::startUp();
  25. ManagedResourceManager::startUp();
  26. ScriptAssemblyManager::startUp();
  27. ScriptResourceManager::startUp();
  28. ScriptGameObjectManager::startUp();
  29. ScriptInput::startUp();
  30. ScriptVirtualInput::startUp();
  31. ScriptAssemblyManager::instance().loadAssemblyInfo(ENGINE_ASSEMBLY);
  32. bansheeEngineAssembly.invoke(ASSEMBLY_ENTRY_POINT);
  33. }
  34. void EngineScriptLibrary::reload()
  35. {
  36. Path engineAssemblyPath = gApplication().getEngineAssemblyPath();
  37. Path gameAssemblyPath = gApplication().getGameAssemblyPath();
  38. Vector<std::pair<String, Path>> assemblies;
  39. assemblies.push_back({ ENGINE_ASSEMBLY, engineAssemblyPath });
  40. if (FileSystem::exists(gameAssemblyPath))
  41. assemblies.push_back({ SCRIPT_GAME_ASSEMBLY, gameAssemblyPath });
  42. ScriptObjectManager::instance().refreshAssemblies(assemblies);
  43. }
  44. void EngineScriptLibrary::destroy()
  45. {
  46. ScriptVirtualInput::shutDown();
  47. ScriptInput::shutDown();
  48. ManagedResourceManager::shutDown();
  49. MonoManager::shutDown();
  50. ScriptObjectManager::instance().processFinalizedObjects();
  51. ScriptGameObjectManager::shutDown();
  52. ScriptResourceManager::shutDown();
  53. ScriptAssemblyManager::shutDown();
  54. ScriptObjectManager::shutDown();
  55. GameResourceManager::shutDown();
  56. }
  57. }