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/gui/panel.h

54 lines
1.2 KiB
C

/******************************************************************************
* File - panel.h
* Author - Joey Pollack
* Date - 2021/11/01 (y/m/d)
* Mod Date - 2021/11/01 (y/m/d)
* Description - Base class for all editor panels
******************************************************************************/
#ifndef PANEL_H_
#define PANEL_H_
#include "panel_defs.h"
#include "panel_manager.h"
#include <string>
struct ImGuiInputTextCallbackData;
namespace lunarium
{
class Panel
{
public:
Panel(std::string name, PanelDockZone dock_zone, bool isOpen = false);
virtual ~Panel();
const char* GetName() const;
virtual void Update(float dt);
virtual bool DoFrame() = 0;
void SetOpen(bool isOpen);
bool IsOpen();
void GetPosition(int& x, int& y) const;
void GetSize(int& w, int& h) const;
PanelDockZone GetDockZone() const;
protected:
std::string mPanelName;
bool mIsOpen;
PanelDockZone mDockZone;
int mX;
int mY;
int mWidth;
int mHeight;
protected:
void UpdateMetaInfo();
private:
friend class PanelManager;
};
}
#endif // PANEL_H_