BsScriptEnginePlugin.cpp 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #include "BsScriptEnginePrerequisites.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. namespace BansheeEngine
  15. {
  16. extern "C" BS_SCR_BE_EXPORT const String& getPluginName()
  17. {
  18. static String pluginName = "SBansheeEngine";
  19. return pluginName;
  20. }
  21. extern "C" BS_SCR_BE_EXPORT void* loadPlugin()
  22. {
  23. Path engineAssemblyPath = gApplication().getEngineAssemblyPath();
  24. const String ASSEMBLY_ENTRY_POINT = "Program::Start";
  25. MonoAssembly& bansheeEngineAssembly = MonoManager::instance().loadAssembly(engineAssemblyPath.toString(), ENGINE_ASSEMBLY);
  26. // TODO - Load Game assembly (gApplication().getGameAssemblyPath())
  27. GameResourceManager::startUp();
  28. ScriptObjectManager::startUp();
  29. ManagedResourceManager::startUp();
  30. ScriptAssemblyManager::startUp();
  31. ScriptResourceManager::startUp();
  32. ScriptGameObjectManager::startUp();
  33. ScriptInput::startUp();
  34. ScriptVirtualInput::startUp();
  35. ScriptAssemblyManager::instance().loadAssemblyInfo(ENGINE_ASSEMBLY);
  36. bansheeEngineAssembly.invoke(ASSEMBLY_ENTRY_POINT);
  37. return nullptr;
  38. }
  39. extern "C" BS_SCR_BE_EXPORT void updatePlugin()
  40. {
  41. ScriptObjectManager::instance().update();
  42. }
  43. extern "C" BS_SCR_BE_EXPORT void unloadPlugin()
  44. {
  45. ScriptVirtualInput::shutDown();
  46. ScriptInput::shutDown();
  47. ManagedResourceManager::shutDown();
  48. ScriptManager::instance().destroy();
  49. ScriptObjectManager::instance().processFinalizedObjects();
  50. ScriptGameObjectManager::shutDown();
  51. ScriptResourceManager::shutDown();
  52. ScriptAssemblyManager::shutDown();
  53. ScriptObjectManager::shutDown();
  54. GameResourceManager::shutDown();
  55. }
  56. }