BsApplication.cpp 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. #include "BsApplication.h"
  2. #include "BsGUIMaterialManager.h"
  3. #include "BsGUIManager.h"
  4. #include "BsOverlayManager.h"
  5. #include "BsDrawHelper2D.h"
  6. #include "BsDrawHelper3D.h"
  7. #include "BsBuiltinMaterialManager.h"
  8. #include "BsD3D9BuiltinMaterialFactory.h"
  9. #include "BsD3D11BuiltinMaterialFactory.h"
  10. #include "BsGLBuiltinMaterialFactory.h"
  11. #include "BsBuiltinResources.h"
  12. #include "BsScriptManager.h"
  13. #include "BsProfilingManager.h"
  14. #include "BsVirtualInput.h"
  15. #include "BsCursor.h"
  16. namespace BansheeEngine
  17. {
  18. START_UP_DESC createStartUpDesc(RENDER_WINDOW_DESC& primaryWindowDesc, const String& renderSystem, const String& renderer)
  19. {
  20. START_UP_DESC desc;
  21. desc.renderSystem = renderSystem;
  22. desc.renderer = renderer;
  23. desc.primaryWindowDesc = primaryWindowDesc;
  24. desc.input = "BansheeOISInput";
  25. desc.sceneManager = "BansheeSceneManager";
  26. desc.importers.push_back("BansheeFreeImgImporter");
  27. desc.importers.push_back("BansheeFBXImporter");
  28. desc.importers.push_back("BansheeFontImporter");
  29. return desc;
  30. }
  31. Application::Application(RENDER_WINDOW_DESC& primaryWindowDesc, const String& renderSystem, const String& renderer)
  32. :CoreApplication(createStartUpDesc(primaryWindowDesc, renderSystem, renderer)), mMonoPlugin(nullptr), mSBansheeEnginePlugin(nullptr)
  33. {
  34. VirtualInput::startUp();
  35. ScriptManager::startUp();
  36. GUIManager::startUp();
  37. GUIMaterialManager::startUp();
  38. OverlayManager::startUp();
  39. BuiltinMaterialManager::startUp();
  40. BuiltinMaterialManager::instance().addFactory(bs_new<D3D9BuiltinMaterialFactory>());
  41. BuiltinMaterialManager::instance().addFactory(bs_new<D3D11BuiltinMaterialFactory>());
  42. BuiltinMaterialManager::instance().addFactory(bs_new<GLBuiltinMaterialFactory>());
  43. BuiltinMaterialManager::instance().setActive(renderSystem);
  44. DrawHelper2D::startUp();
  45. DrawHelper3D::startUp();
  46. BuiltinResources::startUp();
  47. Cursor::startUp();
  48. loadPlugin("BansheeMono", &mMonoPlugin);
  49. loadPlugin("SBansheeEngine", &mSBansheeEnginePlugin); // Scripting interface
  50. }
  51. Application::~Application()
  52. {
  53. ScriptManager::instance().destroy();
  54. unloadPlugin(mSBansheeEnginePlugin);
  55. unloadPlugin(mMonoPlugin);
  56. Cursor::shutDown();
  57. BuiltinResources::shutDown();
  58. DrawHelper3D::shutDown();
  59. DrawHelper2D::shutDown();
  60. GUIMaterialManager::instance().forceReleaseAllMaterials();
  61. BuiltinMaterialManager::shutDown();
  62. OverlayManager::shutDown();
  63. GUIManager::shutDown();
  64. GUIMaterialManager::shutDown();
  65. ScriptManager::shutDown();
  66. VirtualInput::shutDown();
  67. }
  68. void Application::onStartUp()
  69. {
  70. CoreApplication::onStartUp();
  71. Cursor::instance().setCursor(CursorType::Arrow);
  72. }
  73. void Application::startUp(RENDER_WINDOW_DESC& primaryWindowDesc, const String& renderSystem, const String& renderer)
  74. {
  75. CoreApplication::startUp<Application>(primaryWindowDesc, renderSystem, renderer);
  76. }
  77. void Application::update()
  78. {
  79. CoreApplication::update();
  80. VirtualInput::instance().update();
  81. PROFILE_CALL(GUIManager::instance().update(), "GUI");
  82. }
  83. const ViewportPtr& Application::getPrimaryViewport() const
  84. {
  85. // TODO - Need a way to determine primary viewport!
  86. return nullptr;
  87. }
  88. Application& gApplication()
  89. {
  90. return static_cast<Application&>(Application::instance());
  91. }
  92. }