#pragma once #include "CmPrerequisites.h" #include "CmModule.h" #include "CmRenderWindow.h" #include namespace CamelotFramework { class CM_EXPORT RenderWindowManager : public Module { public: RenderWindowManager(); /** * @brief Creates a new rendering window. */ RenderWindowPtr create(RENDER_WINDOW_DESC& desc, RenderWindowPtr parentWindow); /** * @brief Called once per frame. Dispatches events. Internal method. */ void update(); Vector::type getRenderWindows() const; boost::signal onFocusGained; boost::signal onFocusLost; protected: friend class RenderWindow; CM_MUTEX(mWindowMutex); Vector::type mCreatedWindows; RenderWindow* mWindowInFocus; RenderWindow* mNewWindowInFocus; Vector::type mMovedOrResizedWindows; virtual RenderWindowPtr createImpl(RENDER_WINDOW_DESC& desc, RenderWindowPtr parentWindow) = 0; void windowDestroyed(RenderWindow* window); void windowFocusReceived(RenderWindow* window); void windowFocusLost(RenderWindow* window); void windowMovedOrResized(RenderWindow* window); }; }