Terrain Window

This commit is contained in:
CatChow0 2024-03-28 10:13:06 +01:00
parent 9e7e33494c
commit 92ecd8e83a
8 changed files with 47 additions and 14 deletions

View File

@ -164,7 +164,7 @@ bool SystemClass::Frame()
m_imguiManager->WidgetFPS(); m_imguiManager->WidgetFPS();
m_imguiManager->WidgetAddObject(m_Application); m_imguiManager->WidgetAddObject(m_Application);
m_imguiManager->WidgetObjectWindow(m_Application); m_imguiManager->WidgetObjectWindow(m_Application);
m_imguiManager->WidgetTestTerrain(m_Application); m_imguiManager->WidgetTerrainWindow(m_Application);
ImGui::End(); ImGui::End();

View File

@ -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) for (auto cube : m_terrainCubes)
{ {
cube->Render(m_Direct3D->GetDeviceContext()); cube->Render(m_Direct3D->GetDeviceContext());
@ -263,6 +263,8 @@ bool ApplicationClass::Render(float rotation)
} }
} }
// Present the rendered scene to the screen. // Present the rendered scene to the screen.
m_Direct3D->EndScene(); 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]; delete m_cubes[index];
m_cubes.erase(m_cubes.begin() + index); m_cubes.erase(m_cubes.begin() + index);
} }
}
void ApplicationClass::DeleteTerrain()
{
for (auto cube : m_terrainCubes)
{
cube->Shutdown();
delete cube;
}
m_terrainCubes.clear();
} }

View File

@ -45,9 +45,13 @@ public:
void AddCube(); void AddCube();
void DeleteCube(int index); void DeleteCube(int index);
int GetCubeCount() const { return m_cubes.size(); }; int GetCubeCount() const { return m_cubes.size(); };
int GetTerrainCubeCount() const { return m_terrainCubes.size(); };
std::vector<Object*> GetCubes() const { return m_cubes; }; std::vector<Object*> GetCubes() const { return m_cubes; };
std::vector<Object*> GetTerrainCubes() const { return m_terrainCubes; };
void GenerateTerrain(); void GenerateTerrain();
void DeleteTerrain();
private: private:
bool Render(float); bool Render(float);
@ -60,11 +64,11 @@ private:
LightShaderClass* m_LightShader; LightShaderClass* m_LightShader;
LightClass* m_Light; LightClass* m_Light;
float speed = 0.1f; float speed = 0.1f;
std::vector<Object*> m_cubes;
std::vector<Object*> m_terrainCubes;
Object* m_SelectedObject; Object* m_SelectedObject;
LightClass* m_Lights; LightClass* m_Lights;
int m_numLights; int m_numLights;
std::vector<Object*> m_cubes;
std::vector<Object*> m_terrainCubes;
}; };
#endif #endif

View File

@ -3,10 +3,14 @@ Pos=60,60
Size=400,400 Size=400,400
[Window][Khaotic Engine] [Window][Khaotic Engine]
Pos=1196,6 Pos=586,8
Size=694,366 Size=694,183
[Window][Objects] [Window][Objects]
Pos=11,7 Pos=11,5
Size=492,353 Size=492,353
[Window][Terrain]
Pos=1297,54
Size=418,94

View File

@ -132,12 +132,25 @@ void imguiManager::WidgetObjectWindow(ApplicationClass* app)
ImGui::End(); 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(); ImGui::Separator();
if (ImGui::Button("Generate Terrain")) if (ImGui::Button("Generate Terrain"))
{ {
app->GenerateTerrain(); app->GenerateTerrain();
} }
ImGui::SameLine();
if (ImGui::Button("Delete All Terrain Cubes"))
{
app->DeleteTerrain();
}
ImGui::End();
} }

View File

@ -25,9 +25,9 @@ public:
void WidgetButton(); void WidgetButton();
void WidgetFPS(); void WidgetFPS();
void WidgetAddObject(ApplicationClass* app); void WidgetAddObject(ApplicationClass* app);
void WidgetTestTerrain(ApplicationClass* app);
void WidgetObjectWindow(ApplicationClass* app); void WidgetObjectWindow(ApplicationClass* app);
void WidgetTerrainWindow(ApplicationClass* app);
private: private:
ImGuiIO* io; ImGuiIO* io;

View File

@ -23,7 +23,7 @@ using namespace std;
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
class ModelClass class ModelClass
{ {
private: protected:
struct VertexType struct VertexType
{ {
@ -65,10 +65,11 @@ private:
private: private:
ID3D11Buffer* m_vertexBuffer, * m_indexBuffer; ID3D11Buffer* m_vertexBuffer, * m_indexBuffer;
int m_vertexCount, m_indexCount;
TextureClass* m_Texture; TextureClass* m_Texture;
protected:
ModelType* m_model; ModelType* m_model;
int m_vertexCount, m_indexCount;
}; };
#endif #endif

View File

@ -36,4 +36,5 @@ private:
XMMATRIX m_translateMatrix; XMMATRIX m_translateMatrix;
XMMATRIX m_srMatrix; XMMATRIX m_srMatrix;
XMMATRIX m_worldMatrix; XMMATRIX m_worldMatrix;
}; };