summaryrefslogtreecommitdiff
path: root/game/terrain.h
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2025-02-24 01:28:14 +0000
committerDan Goodliffe <dan@randomdan.homeip.net>2025-02-24 01:28:14 +0000
commitef08a08617a1541d8aa1862d8bcfe049dcb57998 (patch)
treeabfcb0e0146a29deead395b0a730acaf8b01dc47 /game/terrain.h
parentMerge branch 'terrain-deform-2' (diff)
parentNew hardcoded test rail network (diff)
downloadilt-ef08a08617a1541d8aa1862d8bcfe049dcb57998.tar.bz2
ilt-ef08a08617a1541d8aa1862d8bcfe049dcb57998.tar.xz
ilt-ef08a08617a1541d8aa1862d8bcfe049dcb57998.zip
Merge remote-tracking branch 'origin/terrain-for-networks'
Diffstat (limited to 'game/terrain.h')
-rw-r--r--game/terrain.h17
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 {};
};