summaryrefslogtreecommitdiff
path: root/game/network
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2025-05-10 23:57:39 +0100
committerDan Goodliffe <dan@randomdan.homeip.net>2025-05-10 23:57:39 +0100
commitcff9ddfcd8ee821de85a84c18727f36c08946c80 (patch)
treec135e0ce60c815109f3325bd28d6ce63c684ba54 /game/network
parentAdd new network building interface (diff)
downloadilt-cff9ddfcd8ee821de85a84c18727f36c08946c80.tar.bz2
ilt-cff9ddfcd8ee821de85a84c18727f36c08946c80.tar.xz
ilt-cff9ddfcd8ee821de85a84c18727f36c08946c80.zip
Set terrain height and surface when adding link
Diffstat (limited to 'game/network')
-rw-r--r--game/network/network.h4
-rw-r--r--game/network/network.impl.h5
2 files changed, 6 insertions, 3 deletions
diff --git a/game/network/network.h b/game/network/network.h
index 114f42b..0c499c6 100644
--- a/game/network/network.h
+++ b/game/network/network.h
@@ -61,7 +61,7 @@ public:
[[nodiscard]] virtual float findNodeDirection(Node::AnyCPtr) const = 0;
[[nodiscard]] Link::Collection create(const CreationDefinition &);
- virtual void add(const GeoData *, const Link::Ptr &) = 0;
+ virtual void add(GeoData *, const Link::Ptr &) = 0;
[[nodiscard]] virtual const Surface * getBaseSurface() const = 0;
[[nodiscard]] virtual RelativeDistance getBaseWidth() const = 0;
@@ -131,7 +131,7 @@ public:
using Network::create;
[[nodiscard]] Link::Ptr create(const GenStraightDef &) override;
[[nodiscard]] Link::Ptr create(const GenCurveDef &) override;
- void add(const GeoData *, const Link::Ptr &) override;
+ void add(GeoData *, const Link::Ptr &) override;
protected:
Link::CCollection addCurve(const GeoData *, const GenCurveDef &);
diff --git a/game/network/network.impl.h b/game/network/network.impl.h
index 54a5f4b..7f7dfb3 100644
--- a/game/network/network.impl.h
+++ b/game/network/network.impl.h
@@ -162,7 +162,7 @@ NetworkOf<T, Links...>::create(const GenCurveDef & def)
template<typename T, typename... Links>
void
-NetworkOf<T, Links...>::add(const GeoData *, const Link::Ptr & link)
+NetworkOf<T, Links...>::add(GeoData * geoData, const Link::Ptr & link)
{
const auto addIf = [this](auto && lptr) {
if (lptr) {
@@ -178,4 +178,7 @@ NetworkOf<T, Links...>::add(const GeoData *, const Link::Ptr & link)
throw std::logic_error("Unsupported link type for network");
}
joinLinks(link);
+ if (geoData) {
+ geoData->setHeights(link->getBase(getBaseWidth()), GeoData::SetHeightsOpts {.surface = getBaseSurface()});
+ }
}