From 92ecd8e83a626673ea55021719ae4ea09a2d1379 Mon Sep 17 00:00:00 2001 From: CatChow0 Date: Thu, 28 Mar 2024 10:13:06 +0100 Subject: [PATCH] Terrain Window --- enginecustom/Systemclass.cpp | 2 +- enginecustom/applicationclass.cpp | 18 ++++++++++++++---- enginecustom/applicationclass.h | 8 ++++++-- enginecustom/imgui.ini | 10 +++++++--- enginecustom/imguiManager.cpp | 15 ++++++++++++++- enginecustom/imguiManager.h | 2 +- enginecustom/modelclass.h | 5 +++-- enginecustom/object.h | 1 + 8 files changed, 47 insertions(+), 14 deletions(-) diff --git a/enginecustom/Systemclass.cpp b/enginecustom/Systemclass.cpp index 1b3eb0a..d4ee758 100644 --- a/enginecustom/Systemclass.cpp +++ b/enginecustom/Systemclass.cpp @@ -164,7 +164,7 @@ bool SystemClass::Frame() m_imguiManager->WidgetFPS(); m_imguiManager->WidgetAddObject(m_Application); m_imguiManager->WidgetObjectWindow(m_Application); - m_imguiManager->WidgetTestTerrain(m_Application); + m_imguiManager->WidgetTerrainWindow(m_Application); ImGui::End(); diff --git a/enginecustom/applicationclass.cpp b/enginecustom/applicationclass.cpp index 386c14d..31e80bd 100644 --- a/enginecustom/applicationclass.cpp +++ b/enginecustom/applicationclass.cpp @@ -244,7 +244,7 @@ bool ApplicationClass::Render(float rotation) } } - // Render terrainCube + // Render terrainCube after all the cubes have been combined for (auto cube : m_terrainCubes) { cube->Render(m_Direct3D->GetDeviceContext()); @@ -263,6 +263,8 @@ bool ApplicationClass::Render(float rotation) } } + + // Present the rendered scene to the screen. m_Direct3D->EndScene(); @@ -309,9 +311,7 @@ void ApplicationClass::GenerateTerrain() } } - // Combine all the cubes into a single model - // TODO: Uncomment this line when you have implemented the CombineModels function in ModelClass - //m_Model->CombineModels(m_terrainCubes); + } @@ -343,4 +343,14 @@ void ApplicationClass::DeleteCube(int index) delete m_cubes[index]; m_cubes.erase(m_cubes.begin() + index); } +} + +void ApplicationClass::DeleteTerrain() +{ + for (auto cube : m_terrainCubes) + { + cube->Shutdown(); + delete cube; + } + m_terrainCubes.clear(); } \ No newline at end of file diff --git a/enginecustom/applicationclass.h b/enginecustom/applicationclass.h index ae63bde..787539f 100644 --- a/enginecustom/applicationclass.h +++ b/enginecustom/applicationclass.h @@ -45,9 +45,13 @@ public: void AddCube(); void DeleteCube(int index); int GetCubeCount() const { return m_cubes.size(); }; + int GetTerrainCubeCount() const { return m_terrainCubes.size(); }; std::vector GetCubes() const { return m_cubes; }; + std::vector GetTerrainCubes() const { return m_terrainCubes; }; void GenerateTerrain(); + void DeleteTerrain(); + private: bool Render(float); @@ -60,11 +64,11 @@ private: LightShaderClass* m_LightShader; LightClass* m_Light; float speed = 0.1f; - std::vector m_cubes; - std::vector m_terrainCubes; Object* m_SelectedObject; LightClass* m_Lights; int m_numLights; + std::vector m_cubes; + std::vector m_terrainCubes; }; #endif diff --git a/enginecustom/imgui.ini b/enginecustom/imgui.ini index 936d03a..9149254 100644 --- a/enginecustom/imgui.ini +++ b/enginecustom/imgui.ini @@ -3,10 +3,14 @@ Pos=60,60 Size=400,400 [Window][Khaotic Engine] -Pos=1196,6 -Size=694,366 +Pos=586,8 +Size=694,183 [Window][Objects] -Pos=11,7 +Pos=11,5 Size=492,353 +[Window][Terrain] +Pos=1297,54 +Size=418,94 + diff --git a/enginecustom/imguiManager.cpp b/enginecustom/imguiManager.cpp index 88395ec..c6be46c 100644 --- a/enginecustom/imguiManager.cpp +++ b/enginecustom/imguiManager.cpp @@ -132,12 +132,25 @@ void imguiManager::WidgetObjectWindow(ApplicationClass* app) ImGui::End(); } -void imguiManager::WidgetTestTerrain(ApplicationClass* app) +void imguiManager::WidgetTerrainWindow(ApplicationClass* app) { + ImGui::Begin("Terrain"); + + ImGui::Text("Number of terrain cubes: %d", app->GetTerrainCubeCount()); + ImGui::Separator(); if (ImGui::Button("Generate Terrain")) { app->GenerateTerrain(); } + + ImGui::SameLine(); + + if (ImGui::Button("Delete All Terrain Cubes")) + { + app->DeleteTerrain(); + } + + ImGui::End(); } \ No newline at end of file diff --git a/enginecustom/imguiManager.h b/enginecustom/imguiManager.h index eca273b..007d3cc 100644 --- a/enginecustom/imguiManager.h +++ b/enginecustom/imguiManager.h @@ -25,9 +25,9 @@ public: void WidgetButton(); void WidgetFPS(); void WidgetAddObject(ApplicationClass* app); - void WidgetTestTerrain(ApplicationClass* app); void WidgetObjectWindow(ApplicationClass* app); + void WidgetTerrainWindow(ApplicationClass* app); private: ImGuiIO* io; diff --git a/enginecustom/modelclass.h b/enginecustom/modelclass.h index 6e36c5e..e4609a4 100644 --- a/enginecustom/modelclass.h +++ b/enginecustom/modelclass.h @@ -23,7 +23,7 @@ using namespace std; //////////////////////////////////////////////////////////////////////////////// class ModelClass { -private: +protected: struct VertexType { @@ -65,10 +65,11 @@ private: private: ID3D11Buffer* m_vertexBuffer, * m_indexBuffer; - int m_vertexCount, m_indexCount; TextureClass* m_Texture; +protected: ModelType* m_model; + int m_vertexCount, m_indexCount; }; #endif \ No newline at end of file diff --git a/enginecustom/object.h b/enginecustom/object.h index f922197..9d1eb35 100644 --- a/enginecustom/object.h +++ b/enginecustom/object.h @@ -36,4 +36,5 @@ private: XMMATRIX m_translateMatrix; XMMATRIX m_srMatrix; XMMATRIX m_worldMatrix; + };