diff --git a/include/td/render/renderer/EntityRenderer.h b/include/td/render/renderer/EntityRenderer.h index eefd91d..f0e7249 100644 --- a/include/td/render/renderer/EntityRenderer.h +++ b/include/td/render/renderer/EntityRenderer.h @@ -9,11 +9,11 @@ namespace render { class EntityRenderer : public Renderer { private: - const game::World& m_World; + game::WorldPtr m_World; std::unique_ptr m_EntityVao; public: - EntityRenderer(Camera& a_Camera, const game::World& a_World); + EntityRenderer(Camera& a_Camera, const game::WorldPtr& a_World); virtual ~EntityRenderer(); virtual void Render(float a_Lerp) override; diff --git a/include/td/render/renderer/TowerRenderer.h b/include/td/render/renderer/TowerRenderer.h index 55f4dc3..946fc01 100644 --- a/include/td/render/renderer/TowerRenderer.h +++ b/include/td/render/renderer/TowerRenderer.h @@ -9,11 +9,11 @@ namespace render { class TowerRenderer : public Renderer { private: - const game::World& m_World; + game::WorldPtr m_World; std::unique_ptr m_EntityVao; public: - TowerRenderer(Camera& a_Camera, const game::World& a_World); + TowerRenderer(Camera& a_Camera, const game::WorldPtr& a_World); virtual ~TowerRenderer(); virtual void Render(float a_Lerp) override; diff --git a/include/td/render/renderer/WorldRenderer.h b/include/td/render/renderer/WorldRenderer.h index ded2b24..df409e5 100644 --- a/include/td/render/renderer/WorldRenderer.h +++ b/include/td/render/renderer/WorldRenderer.h @@ -13,7 +13,7 @@ class WorldRenderer : public Renderer { std::unique_ptr m_WorldVao; public: - WorldRenderer(Camera& a_Camera, const game::World& a_World); + WorldRenderer(Camera& a_Camera, const game::WorldPtr& a_World); virtual ~WorldRenderer(); virtual void Render(float a_Lerp) override; diff --git a/src/td/display/state/DebugWorldState.cpp b/src/td/display/state/DebugWorldState.cpp index 0616968..0267760 100644 --- a/src/td/display/state/DebugWorldState.cpp +++ b/src/td/display/state/DebugWorldState.cpp @@ -74,9 +74,9 @@ DebugWorldState::DebugWorldState(Display& a_Display) : DisplayState(a_Display) { m_Client = std::make_unique(clientFakeSocket, "Player0"); // render - m_Renderer.AddRenderer(m_Camera, *clientWorld); - m_Renderer.AddRenderer(m_Camera, *clientWorld); - m_Renderer.AddRenderer(m_Camera, *clientWorld); + m_Renderer.AddRenderer(m_Camera, clientWorld); + m_Renderer.AddRenderer(m_Camera, clientWorld); + m_Renderer.AddRenderer(m_Camera, clientWorld); // camera m_Camera.SetCamPos({77, 7, 13}); diff --git a/src/td/render/renderer/EntityRenderer.cpp b/src/td/render/renderer/EntityRenderer.cpp index 9b5d189..4acb0fe 100644 --- a/src/td/render/renderer/EntityRenderer.cpp +++ b/src/td/render/renderer/EntityRenderer.cpp @@ -5,7 +5,7 @@ namespace td { namespace render { -EntityRenderer::EntityRenderer(Camera& a_Camera, const game::World& a_World) : Renderer(a_Camera), m_World(a_World) { +EntityRenderer::EntityRenderer(Camera& a_Camera, const game::WorldPtr& a_World) : Renderer(a_Camera), m_World(a_World) { m_EntityVao = std::make_unique(WorldLoader::LoadMobModel()); m_Shader->Start(); m_Shader->SetColorEffect({1, 0, 1}); @@ -17,7 +17,7 @@ EntityRenderer::~EntityRenderer() {} void EntityRenderer::Render(float a_Lerp) { m_Shader->Start(); - for (const auto& mob : m_World.GetMobList()) { + for (const auto& mob : m_World->GetMobList()) { float x = Lerp(*mob, a_Lerp, [](const game::Mob& a_Mob) { return static_cast(a_Mob.m_Position.x); }); float z = Lerp(*mob, a_Lerp, [](const game::Mob& a_Mob) { return static_cast(a_Mob.m_Position.y); }); diff --git a/src/td/render/renderer/TowerRenderer.cpp b/src/td/render/renderer/TowerRenderer.cpp index b9ad89c..a05cae8 100644 --- a/src/td/render/renderer/TowerRenderer.cpp +++ b/src/td/render/renderer/TowerRenderer.cpp @@ -5,7 +5,7 @@ namespace td { namespace render { -TowerRenderer::TowerRenderer(Camera& a_Camera, const game::World& a_World) : Renderer(a_Camera), m_World(a_World) { +TowerRenderer::TowerRenderer(Camera& a_Camera, const game::WorldPtr& a_World) : Renderer(a_Camera), m_World(a_World) { m_EntityVao = std::make_unique(WorldLoader::LoadMobModel()); m_Shader->Start(); m_Shader->SetColorEffect({0, 0, 1}); @@ -17,7 +17,7 @@ TowerRenderer::~TowerRenderer() {} void TowerRenderer::Render(float a_Lerp) { m_Shader->Start(); - for (const auto& tower : m_World.GetTowers()) { + for (const auto& tower : m_World->GetTowers()) { m_Shader->SetModelPos({tower->GetCenterX(), 1, tower->GetCenterY()}); Renderer::Render(*m_EntityVao); } diff --git a/src/td/render/renderer/WorldRenderer.cpp b/src/td/render/renderer/WorldRenderer.cpp index 40ede12..2769ea7 100644 --- a/src/td/render/renderer/WorldRenderer.cpp +++ b/src/td/render/renderer/WorldRenderer.cpp @@ -7,8 +7,8 @@ namespace td { namespace render { -WorldRenderer::WorldRenderer(Camera& a_Camera, const game::World& a_World) : Renderer(a_Camera) { - m_WorldVao = std::make_unique(WorldLoader::LoadWorldModel(&a_World)); +WorldRenderer::WorldRenderer(Camera& a_Camera, const game::WorldPtr& a_World) : Renderer(a_Camera) { + m_WorldVao = std::make_unique(WorldLoader::LoadWorldModel(a_World.get())); } WorldRenderer::~WorldRenderer() {}