light/modules/engine/include/engine/user_interface/user_interface.hpp

53 lines
999 B
C++

#pragma once
#include <engine/base/base.hpp>
#include <imgui.h>
struct GLFWwindow;
namespace Light {
class Event;
class SharedContext;
// #todo: fix the UserIntreface mess!!
class UserInterface /* singleton */
{
private:
static UserInterface *s_Context;
private:
ImGuiWindowFlags m_dockspace_flags;
public:
static Scope<UserInterface> create(GLFWwindow *windowHandle, Ref<SharedContext> sharedContext);
UserInterface(const UserInterface &) = delete;
UserInterface &operator=(const UserInterface &) = delete;
virtual ~UserInterface() = default;
void init(GLFWwindow *windowHandle, Ref<SharedContext> sharedContext);
static void dockspace_begin();
static void dockspace_end();
virtual void platform_implementation(
GLFWwindow *windowHandle,
Ref<SharedContext> sharedContext
) = 0;
virtual void begin() = 0;
virtual void end() = 0;
virtual void log_debug_data() = 0;
protected:
UserInterface();
private:
void set_dark_theme_colors();
};
} // namespace Light