BsApplication.cpp 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. #include "BsApplication.h"
  2. #include "BsGUIMaterialManager.h"
  3. #include "BsGUIManager.h"
  4. #include "BsOverlayManager.h"
  5. #include "BsDebugDraw.h"
  6. #include "BsBuiltinMaterialManager.h"
  7. #include "BsD3D9BuiltinMaterialFactory.h"
  8. #include "BsD3D11BuiltinMaterialFactory.h"
  9. #include "BsGLBuiltinMaterialFactory.h"
  10. #include "BsEngineGUI.h"
  11. #include "CmApplication.h"
  12. using namespace CamelotFramework;
  13. namespace BansheeEngine
  14. {
  15. Application::Application()
  16. {
  17. }
  18. void Application::startUp(RENDER_WINDOW_DESC& primaryWindowDesc, const String& renderSystem, const String& renderer, const String& resourceCacheDir)
  19. {
  20. CM::START_UP_DESC desc;
  21. desc.renderSystem = renderSystem;
  22. desc.renderer= renderer;
  23. desc.resourceCacheDirectory = resourceCacheDir;
  24. desc.primaryWindowDesc = primaryWindowDesc;
  25. desc.input = "CamelotOISInput";
  26. desc.sceneManager = "BansheeOctreeSM";
  27. desc.importers.push_back("CamelotFreeImgImporter");
  28. desc.importers.push_back("CamelotFBXImporter");
  29. desc.importers.push_back("CamelotFontImporter");
  30. CM::gApplication().startUp(desc);
  31. GUIManager::startUp(cm_new<GUIManager>());
  32. GUIMaterialManager::startUp(cm_new<GUIMaterialManager>());
  33. OverlayManager::startUp(cm_new<OverlayManager>());
  34. BuiltinMaterialManager::startUp(cm_new<BuiltinMaterialManager>());
  35. BuiltinMaterialManager::instance().addFactory(cm_new<D3D9BuiltinMaterialFactory>());
  36. BuiltinMaterialManager::instance().addFactory(cm_new<D3D11BuiltinMaterialFactory>());
  37. BuiltinMaterialManager::instance().addFactory(cm_new<GLBuiltinMaterialFactory>());
  38. BuiltinMaterialManager::instance().setActive(desc.renderSystem);
  39. DebugDraw::startUp(cm_new<DebugDraw>());
  40. EngineGUI::startUp(new EngineGUI());
  41. updateCallbackConn = CM::gApplication().mainLoopCallback.connect(boost::bind(&Application::update, this));
  42. }
  43. void Application::runMainLoop()
  44. {
  45. CM::gApplication().runMainLoop();
  46. }
  47. void Application::shutDown()
  48. {
  49. CM::gApplication().mainLoopCallback.disconnect(updateCallbackConn);
  50. EngineGUI::shutDown();
  51. DebugDraw::shutDown();
  52. GUIMaterialManager::instance().forceReleaseAllMaterials();
  53. BuiltinMaterialManager::shutDown();
  54. OverlayManager::shutDown();
  55. GUIManager::shutDown();
  56. GUIMaterialManager::shutDown();
  57. CM::gApplication().shutDown();
  58. }
  59. void Application::update()
  60. {
  61. GUIManager::instance().update();
  62. }
  63. Application& gBansheeApp()
  64. {
  65. static Application application;
  66. return application;
  67. }
  68. }