You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
lunarium_OLD/src/run_modes/editor/panel_manager.h

71 lines
1.7 KiB
C

/******************************************************************************
* 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 <utils/opRes.h>
//#include "panels/mainPanel.h"
#include "panels/iPanel.h"
#include <map>
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<PanelType, Panel*> mPanels;
private:
static PanelManager* mpInstance;
PanelManager();
void CreatePanels();
void DestoryPanels();
void MakeDockSpaces();
};
}}
#endif // PANEL_MANAGER_H_