#pragma once #include "game/World.h" #include "render/loader/GLLoader.h" #include "render/Renderer.h" #include namespace td { namespace render { class WorldRenderer{ private: Renderer* m_Renderer; game::World* m_World; std::unique_ptr m_WorldVao, m_MobVao, m_SelectTileVao; glm::vec2 m_CamPos; glm::vec2 m_CursorPos; float m_Zoom = 1; float m_CamSensibility = 1; public: WorldRenderer(game::World* world, Renderer* renderer); ~WorldRenderer(); void loadModels(); void update(); void render() const; void setCamPos(float camX, float camY); void moveCam(float relativeX, float relativeY, float aspectRatio); void changeZoom(float zoom); void click(int mouseX, int mouseY); private: void renderWorld() const; void renderTowers() const; void renderMobs() const; void renderTileSelect() const; void updateCursorPos(); }; } // namespace render } // namespace td