/****************************************************************************** * File - panel_manager.h * Author - Joey Pollack * Date - 2022/02/07 (y/m/d) * Mod Date - 2022/02/07 (y/m/d) * Description - Manage the editor panels ******************************************************************************/ #ifndef PANEL_MANAGER_H_ #define PANEL_MANAGER_H_ #include #include "panels/mainPanel.h" #include "panels/iPanel.h" #include namespace lunarium{ class IGraphics; namespace editor { class Editor; class PanelManager { public: static PanelManager& GetInstance(); static void FreeInstance(); OpRes Initialize(Editor* editor); void Shutdown(); void OpenPanel(PanelType type); void ClosePanel(PanelType type); bool IsOpen(PanelType type); Panel* GetPanel(PanelType type); const MainPanel::DockSpaces& GetDockSpaces() const; void OnTick(double delta); void OnRender(lunarium::IGraphics* g); private: Editor* mpEditor; MainPanel* mpMainPanel; std::map mPanels; private: static PanelManager* mpInstance; PanelManager(); void CreatePanels(); void DestoryPanels(); }; }} #endif // PANEL_MANAGER_H_