BsEditorWindowManager.cpp 886 B

12345678910111213141516171819202122232425262728293031323334
  1. #include "BsEditorWindowManager.h"
  2. #include "BsEditorWindow.h"
  3. using namespace CamelotFramework;
  4. using namespace BansheeEngine;
  5. namespace BansheeEditor
  6. {
  7. EditorWindowManager::~EditorWindowManager()
  8. {
  9. while(mEditorWindows.size() > 0)
  10. destroy(mEditorWindows[0]);
  11. }
  12. EditorWindow* EditorWindowManager::create()
  13. {
  14. EditorWindow* newWindow = new (cm_alloc<EditorWindow>()) EditorWindow();
  15. mEditorWindows.push_back(newWindow);
  16. newWindow->initialize();
  17. return newWindow;
  18. }
  19. void EditorWindowManager::destroy(EditorWindowBase* window)
  20. {
  21. auto iterFind = std::find(begin(mEditorWindows), end(mEditorWindows), window);
  22. if(iterFind == end(mEditorWindows))
  23. CM_EXCEPT(InternalErrorException, "Trying to destroy an editor window that's not registered in the window manager.");
  24. mEditorWindows.erase(iterFind);
  25. cm_delete(window);
  26. }
  27. }