136 lines
2.5 KiB
C++
136 lines
2.5 KiB
C++
|
#include <imgui.h>
|
||
|
#include <imgui_impl_glfw.h>
|
||
|
#include <imgui_impl_opengl3.h>
|
||
|
#include "UI.h"
|
||
|
|
||
|
UI::UI(): styleColors(nullptr){}
|
||
|
|
||
|
UI::~UI(){}
|
||
|
|
||
|
void UI::Initialize(GLFWwindow* window)
|
||
|
{
|
||
|
IMGUI_CHECKVERSION();
|
||
|
ImGui::CreateContext();
|
||
|
ImGuiIO& io = ImGui::GetIO(); (void)io;
|
||
|
io.ConfigFlags |= ImGuiConfigFlags_DockingEnable;
|
||
|
|
||
|
ImGuiStyle& style = ImGui::GetStyle();
|
||
|
styleColors = style.Colors;
|
||
|
ImGui::StyleColorsDark();
|
||
|
|
||
|
// Setup Platform/Renderer backends
|
||
|
ImGui_ImplGlfw_InitForOpenGL(window, true);
|
||
|
ImGui_ImplOpenGL3_Init();
|
||
|
}
|
||
|
|
||
|
void UI::Run()
|
||
|
{
|
||
|
ImGui_ImplOpenGL3_NewFrame();
|
||
|
ImGui_ImplGlfw_NewFrame();
|
||
|
ImGui::NewFrame();
|
||
|
ImGui::DockSpaceOverViewport(ImGui::GetMainViewport());
|
||
|
styleColors[ImGuiCol_DockingEmptyBg] = clearColor;
|
||
|
}
|
||
|
|
||
|
void UI::Render()
|
||
|
{
|
||
|
ShowConsole();
|
||
|
ShowHierarchy();
|
||
|
ShowInspector();
|
||
|
ShowMenu();
|
||
|
ShowProject();
|
||
|
ShowScene();
|
||
|
|
||
|
ImGui::Render();
|
||
|
ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData());
|
||
|
}
|
||
|
|
||
|
void UI::Shutdown()
|
||
|
{
|
||
|
ImGui_ImplOpenGL3_Shutdown();
|
||
|
ImGui_ImplGlfw_Shutdown();
|
||
|
ImGui::DestroyContext();
|
||
|
}
|
||
|
|
||
|
void UI::Print(const std::string& message)
|
||
|
{
|
||
|
log = message;
|
||
|
}
|
||
|
|
||
|
void UI::ShowConsole(){
|
||
|
ImGui::Begin("Console");
|
||
|
|
||
|
if(ImGui::Button("Clear")){
|
||
|
Print("");
|
||
|
}
|
||
|
|
||
|
ImGui::SameLine();
|
||
|
|
||
|
if(ImGui::Button("Debug")){
|
||
|
Print("Debug message");
|
||
|
}
|
||
|
|
||
|
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);
|
||
|
|
||
|
ImGui::Text("%s", log.c_str());
|
||
|
|
||
|
ImGui::End();
|
||
|
}
|
||
|
|
||
|
void UI::ShowHierarchy()
|
||
|
{
|
||
|
ImGui::Begin("Hierarchy");
|
||
|
|
||
|
ImGui::End();
|
||
|
}
|
||
|
|
||
|
void UI::ShowInspector()
|
||
|
{
|
||
|
static float f = 0.0f;
|
||
|
static int counter = 0;
|
||
|
|
||
|
ImGui::Begin("Inspector");
|
||
|
|
||
|
ImGui::Text("This is some useful text.");
|
||
|
|
||
|
ImGui::SliderFloat("float", &f, 0.0f, 1.0f);
|
||
|
ImGui::ColorEdit3("clear color", (float*)&clearColor);
|
||
|
|
||
|
if (ImGui::Button("Button"))
|
||
|
counter++;
|
||
|
ImGui::SameLine();
|
||
|
ImGui::Text("counter = %d", counter);
|
||
|
|
||
|
ImGui::End();
|
||
|
}
|
||
|
|
||
|
void UI::ShowMenu()
|
||
|
{
|
||
|
if(ImGui::BeginMainMenuBar()){
|
||
|
if(ImGui::BeginMenu("File")){
|
||
|
if (ImGui::MenuItem("Open..", "Ctrl+O")) { }
|
||
|
if (ImGui::MenuItem("Save", "Ctrl+S")) { }
|
||
|
if (ImGui::MenuItem("Close", "Ctrl+W")) { }
|
||
|
ImGui::EndMenu();
|
||
|
}
|
||
|
ImGui::EndMainMenuBar();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void UI::ShowProject()
|
||
|
{
|
||
|
ImGui::Begin("Project");
|
||
|
|
||
|
ImGui::End();
|
||
|
}
|
||
|
|
||
|
void UI::ShowScene()
|
||
|
{
|
||
|
ImGui::Begin("Scene");
|
||
|
|
||
|
ImGui::End();
|
||
|
}
|
||
|
|
||
|
|
||
|
|