/****************************************************************************** * 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 #include #include struct ImGuiWindowClass; 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(gui::PanelType type); void ClosePanel(gui::PanelType type); bool IsOpen(gui::PanelType type); gui::Panel* GetPanel(gui::PanelType type); const ImGuiWindowClass* GetWindowClass() const; void ResetDocking(); void OnTick(double delta); void OnRender(lunarium::IGraphics* g); private: Editor* mpEditor; // MainPanel* mpMainPanel; bool mResetDockSpace; std::map mPanels; unsigned int mDockSpaceID; ImGuiWindowClass mWindowClass; std::map mDockZoneIDs; private: static PanelManager* mpInstance; PanelManager(); void CreatePanels(); void DestoryPanels(); void MakeDockSpaces(); }; }} #endif // PANEL_MANAGER_H_