summaryrefslogtreecommitdiff
path: root/game/network/network.cpp
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2025-05-10 13:50:08 +0100
committerDan Goodliffe <dan@randomdan.homeip.net>2025-05-10 13:50:08 +0100
commitdf9b9bc264e0bf12e99b447be7903050c822692d (patch)
treee92ddbfb0c61cc94131512ed2d757df798157f72 /game/network/network.cpp
parentNew genCurveDef for 2 directions (diff)
downloadilt-df9b9bc264e0bf12e99b447be7903050c822692d.tar.bz2
ilt-df9b9bc264e0bf12e99b447be7903050c822692d.tar.xz
ilt-df9b9bc264e0bf12e99b447be7903050c822692d.zip
Add new network building interface
Imperfect, matches some legacy interface in places, has some TODO notes.
Diffstat (limited to 'game/network/network.cpp')
-rw-r--r--game/network/network.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/game/network/network.cpp b/game/network/network.cpp
index 403975c..295e6ec 100644
--- a/game/network/network.cpp
+++ b/game/network/network.cpp
@@ -142,3 +142,28 @@ Network::genCurveDef(const GlobalPosition3D & start, const GlobalPosition3D & en
return {genCurveDef(start, joint, startDir), genCurveDef(end, joint, endDir)};
}
+
+Link::Collection
+Network::create(const CreationDefinition & def)
+{
+ // TODO
+ // Where to make a straight to join because angles align?
+ // Where to drop part of S curve pair if a single curve works?
+
+ if (!def.fromEnd.direction && !def.toEnd.direction) {
+ // No specific directions at either end, straight link
+ return {create(GenStraightDef {def.fromEnd.position, def.toEnd.position})};
+ }
+ if (def.fromEnd.direction) {
+ if (def.toEnd.direction) {
+ // Two specific directions at both ends, S curves
+ const auto curves = genCurveDef(
+ def.fromEnd.position, def.toEnd.position, *def.fromEnd.direction, *def.toEnd.direction);
+ return {create(curves.first), create(curves.second)};
+ }
+ // One specific direction, single curve from there
+ return {create(genCurveDef(def.fromEnd.position, def.toEnd.position, *def.fromEnd.direction))};
+ }
+ // One specific direction, single curve from the other
+ return {create(genCurveDef(def.toEnd.position, def.fromEnd.position, *def.toEnd.direction))};
+}