feat: Add hierarchy, scene, project and inspector windows

This commit is contained in:
coderloff 2024-04-26 13:30:05 +04:00
parent 76af2938da
commit 4b636b436e
2 changed files with 83 additions and 36 deletions

View File

@ -5,20 +5,16 @@
#include "imgui_impl_glfw.h" #include "imgui_impl_glfw.h"
#include "imgui_impl_opengl3.h" #include "imgui_impl_opengl3.h"
using std::string; std::string log_message;
string log_message;
bool show_demo_window = true; bool show_demo_window = true;
bool show_another_window = false; bool show_another_window = false;
ImVec4 clear_color = ImVec4(0.45f, 0.55f, 0.60f, 1.00f); ImVec4 clear_color = ImVec4(0.45f, 0.55f, 0.60f, 1.00f);
void debug(string message){ void debug(std::string message){
log_message = message; log_message = message;
} }
bool open_main = true; void show_menu(){
void show_main(){
if(ImGui::BeginMainMenuBar()){ if(ImGui::BeginMainMenuBar()){
if(ImGui::BeginMenu("File")){ if(ImGui::BeginMenu("File")){
if (ImGui::MenuItem("Open..", "Ctrl+O")) { /* Do stuff */ } if (ImGui::MenuItem("Open..", "Ctrl+O")) { /* Do stuff */ }
@ -30,25 +26,15 @@ void show_main(){
} }
} }
void show_tools(){ void show_hierarchy(){
static float f = 0.0f; ImGui::Begin("Hierarchy");
static int counter = 0;
ImGui::Begin("Tools"); // Create a window called "Hello, world!" and append into it. ImGui::End();
}
ImGui::Text("This is some useful text."); // Display some text (you can use a format strings too) void show_project(){
ImGui::Checkbox("Demo Window", &show_demo_window); // Edit bools storing our window open/close state ImGui::Begin("Project");
ImGui::Checkbox("Another Window", &show_another_window);
ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float using a slider from 0.0f to 1.0f
ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats representing a color
if (ImGui::Button("Button")) // Buttons return true when clicked (most widgets return true when edited/activated)
counter++;
ImGui::SameLine();
ImGui::Text("counter = %d", counter);
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);
ImGui::End(); ImGui::End();
} }
@ -65,14 +51,37 @@ void show_console(){
debug("Debug message"); debug("Debug message");
} }
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);
ImGui::Text("%s", log_message.c_str()); ImGui::Text("%s", log_message.c_str());
ImGui::End(); ImGui::End();
} }
void show_scene(){
ImGui::Begin("Scene");
ImGui::End();
}
void show_inspector(){ void show_inspector(){
static float f = 0.0f;
static int counter = 0;
ImGui::Begin("Inspector"); ImGui::Begin("Inspector");
ImGui::Text("This is some useful text."); // Display some text (you can use a format strings too)
ImGui::Checkbox("Demo Window", &show_demo_window); // Edit bools storing our window open/close state
ImGui::Checkbox("Another Window", &show_another_window);
ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float using a slider from 0.0f to 1.0f
ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats representing a color
if (ImGui::Button("Button")) // Buttons return true when clicked (most widgets return true when edited/activated)
counter++;
ImGui::SameLine();
ImGui::Text("counter = %d", counter);
ImGui::End(); ImGui::End();
} }
@ -121,12 +130,18 @@ int main(void){
// ImGui::ShowDemoWindow(&show_demo_window); // ImGui::ShowDemoWindow(&show_demo_window);
// 2. Show a simple window that we create ourselves. We use a Begin/End pair to created a named window. // 2. Show a simple window that we create ourselves. We use a Begin/End pair to created a named window.
show_main(); show_menu();
show_tools(); show_hierarchy();
show_scene();
show_project();
show_console(); show_console();
show_inspector();
// 3. Show another simple window. // 3. Show another simple window.
if (show_another_window) if (show_another_window)
{ {

View File

@ -1,6 +1,6 @@
[Window][DockSpaceViewport_11111111] [Window][DockSpaceViewport_11111111]
Pos=0,19 Pos=0,19
Size=640,461 Size=1366,693
Collapsed=0 Collapsed=0
[Window][Debug##Default] [Window][Debug##Default]
@ -9,21 +9,53 @@ Size=400,400
Collapsed=0 Collapsed=0
[Window][Console] [Window][Console]
Pos=232,300 Pos=290,532
Size=408,180 Size=802,180
Collapsed=0 Collapsed=0
DockId=0x00000005,0 DockId=0x00000005,0
[Window][Tools] [Window][Tools]
Pos=0,19 Pos=0,19
Size=230,461 Size=233,693
Collapsed=0 Collapsed=0
DockId=0x00000002,0 DockId=0x00000002,0
[Docking][Data] [Window][Inspector]
DockSpace ID=0x8B93E3BD Window=0xA787BDB4 Pos=0,19 Size=640,461 Split=X Pos=1094,19
DockNode ID=0x00000002 Parent=0x8B93E3BD SizeRef=230,461 Selected=0xD44407B5 Size=272,693
DockNode ID=0x00000003 Parent=0x8B93E3BD SizeRef=408,461 Split=Y Collapsed=0
DockNode ID=0x00000004 Parent=0x00000003 SizeRef=321,279 CentralNode=1 DockId=0x00000006,0
DockNode ID=0x00000005 Parent=0x00000003 SizeRef=321,180 Selected=0x49278EEE
[Window][Scene]
Pos=290,19
Size=802,511
Collapsed=0
DockId=0x00000004,0
[Window][Hierarchy]
Pos=0,19
Size=288,693
Collapsed=0
DockId=0x00000007,0
[Window][Another Window]
Pos=60,60
Size=198,67
Collapsed=0
[Window][Project]
Pos=300,525
Size=32,35
Collapsed=0
[Docking][Data]
DockSpace ID=0x8B93E3BD Window=0xA787BDB4 Pos=0,19 Size=1366,693 Split=X
DockNode ID=0x00000007 Parent=0x8B93E3BD SizeRef=288,693 Selected=0x29EABFBD
DockNode ID=0x00000008 Parent=0x8B93E3BD SizeRef=1076,693 Split=X
DockNode ID=0x00000001 Parent=0x00000008 SizeRef=802,693 Split=X
DockNode ID=0x00000002 Parent=0x00000001 SizeRef=233,461 Selected=0xD44407B5
DockNode ID=0x00000003 Parent=0x00000001 SizeRef=901,461 Split=Y
DockNode ID=0x00000004 Parent=0x00000003 SizeRef=321,279 CentralNode=1 Selected=0xE192E354
DockNode ID=0x00000005 Parent=0x00000003 SizeRef=321,180 Selected=0x49278EEE
DockNode ID=0x00000006 Parent=0x00000008 SizeRef=272,693 Selected=0xE7039252