CmRenderWindowManager.cpp 893 B

12345678910111213141516171819202122232425262728293031
  1. #include "CmRenderWindowManager.h"
  2. namespace CamelotFramework
  3. {
  4. RenderWindowPtr RenderWindowManager::create(RENDER_WINDOW_DESC& desc, RenderWindowPtr parentWindow)
  5. {
  6. RenderWindowPtr renderWindow = createImpl(desc, parentWindow);
  7. renderWindow->setThisPtr(renderWindow);
  8. renderWindow->initialize();
  9. mCreatedWindows.push_back(renderWindow.get());
  10. if(!onWindowCreated.empty())
  11. onWindowCreated(renderWindow.get());
  12. return renderWindow;
  13. }
  14. void RenderWindowManager::windowDestroyed(RenderWindow* window)
  15. {
  16. auto iterFind = std::find(begin(mCreatedWindows), end(mCreatedWindows), window);
  17. if(iterFind == mCreatedWindows.end())
  18. CM_EXCEPT(InternalErrorException, "Trying to destroy a window that is not in the created windows list.");
  19. if(!onWindowDestroyed.empty())
  20. onWindowDestroyed(window);
  21. mCreatedWindows.erase(iterFind);
  22. }
  23. }