/****************************************************************************** * 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: struct DockSpaces { unsigned int Main; unsigned int Left; unsigned int Right; unsigned int Center; // unsigned int Top; unsigned int Bottom; }; 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 DockSpaces& GetDockSpaces() const; void ResetDocking(); void OnTick(double delta); void OnRender(lunarium::IGraphics* g); private: Editor* mpEditor; // MainPanel* mpMainPanel; DockSpaces mDockSpaces; bool mResetDockSpace; std::map mPanels; private: static PanelManager* mpInstance; PanelManager(); void CreatePanels(); void DestoryPanels(); void MakeDockSpaces(); }; }} #endif // PANEL_MANAGER_H_