BsScriptEnginePlugin.cpp 1.8 KB

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