diff --git a/enginecustom/imgui.ini b/enginecustom/imgui.ini index 2b717da..4f3ab10 100644 --- a/enginecustom/imgui.ini +++ b/enginecustom/imgui.ini @@ -3,7 +3,7 @@ Pos=60,60 Size=400,400 [Window][Khaotic Engine] -Pos=819,137 +Pos=172,20 Size=694,210 [Window][Objects] @@ -15,6 +15,6 @@ Pos=892,19 Size=418,94 [Window][Light] -Pos=70,378 +Pos=185,468 Size=418,240 diff --git a/enginecustom/imguiManager.cpp b/enginecustom/imguiManager.cpp index 8fba111..1991569 100644 --- a/enginecustom/imguiManager.cpp +++ b/enginecustom/imguiManager.cpp @@ -73,8 +73,6 @@ void imguiManager::WidgetAddObject(ApplicationClass* app) app->AddCube(); } ImGui::SameLine(); - ImGui::Text("Number of cubes: %d", app->GetCubeCount()); - if (ImGui::Button("Import Object")) { // Open file dialog @@ -99,12 +97,14 @@ void imguiManager::WidgetAddObject(ApplicationClass* app) } } + ImGui::SameLine(); + ImGui::Text("Number of cubes: %d", app->GetCubeCount()); } } void imguiManager::WidgetObjectWindow(ApplicationClass* app) { - ImGui::Begin("Objects"); + ImGui::Begin("Objects", &showObjectWindow); int index = 0; for (auto& object : app->GetKobjects()) { @@ -160,7 +160,7 @@ void imguiManager::WidgetObjectWindow(ApplicationClass* app) void imguiManager::WidgetTerrainWindow(ApplicationClass* app) { - ImGui::Begin("Terrain"); + ImGui::Begin("Terrain", &showTerrainWindow); ImGui::Text("Number of terrain cubes: %d", app->GetTerrainCubeCount()); @@ -195,12 +195,42 @@ void imguiManager::ImGuiWidgetRenderer(ApplicationClass* app) WidgetButton(); WidgetFPS(); WidgetAddObject(app); - WidgetObjectWindow(app); - WidgetTerrainWindow(app); - WidgetLightWindow(app); + ImGui::Separator(); + + // Add buttons for opening windows + if (ImGui::Button("Open Object Window")) + { + showObjectWindow = true; + } + + if (ImGui::Button("Open Terrain Window")) + { + showTerrainWindow = true; + } + + if (ImGui::Button("Open Light Window")) + { + showLightWindow = true; + } ImGui::End(); + // Show windows if their corresponding variables are true + if (showObjectWindow) + { + WidgetObjectWindow(app); + } + + if (showTerrainWindow) + { + WidgetTerrainWindow(app); + } + + if (showLightWindow) + { + WidgetLightWindow(app); + } + //render imgui Render(); @@ -209,7 +239,7 @@ void imguiManager::ImGuiWidgetRenderer(ApplicationClass* app) void imguiManager::WidgetLightWindow(ApplicationClass* app) { - ImGui::Begin("Light"); + ImGui::Begin("Light", &showLightWindow); int index = 0; for(auto& light : app->GetLights()) { diff --git a/enginecustom/imguiManager.h b/enginecustom/imguiManager.h index 9f03c76..b1d5dfc 100644 --- a/enginecustom/imguiManager.h +++ b/enginecustom/imguiManager.h @@ -32,6 +32,11 @@ public: void ImGuiWidgetRenderer(ApplicationClass* app); +private : + bool showObjectWindow = false; + bool showTerrainWindow = false; + bool showLightWindow = false; + private: ImGuiIO* io; };