diff options
Diffstat (limited to 'game/terrain.h')
-rw-r--r-- | game/terrain.h | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/game/terrain.h b/game/terrain.h index 7d074cf..f0f9621 100644 --- a/game/terrain.h +++ b/game/terrain.h @@ -4,17 +4,19 @@ #include "collection.h" #include "config/types.h" #include "game/worldobject.h" +#include "geoData.h" #include "gfx/models/mesh.h" #include "gfx/models/texture.h" #include "gfx/renderable.h" -#include <memory> class SceneShader; -class GeoData; -class Terrain : public WorldObject, public Renderable { +class Terrain : public GeoData, public WorldObject, public Renderable { public: - explicit Terrain(std::shared_ptr<GeoData>); + template<typename... P> explicit Terrain(P &&... params) : GeoData {std::forward<P>(params)...} + { + generateMeshes(); + } void render(const SceneShader & shader) const override; void shadows(const ShadowMapper &) const override; @@ -27,10 +29,11 @@ public: RGB colourBias; }; +private: + void afterChange() override; void generateMeshes(); -private: - std::shared_ptr<GeoData> geoData; Collection<MeshT<Vertex>, false> meshes; - Texture::Ptr grass; + Texture::Ptr grass = std::make_shared<Texture>("grass.png"); + size_t geoGeneration {}; }; |