diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2022-10-08 15:51:19 +0100 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2022-10-08 15:51:19 +0100 |
commit | 6aba7c7dd1d6bcc1ddb4a5acb61ec0850c420824 (patch) | |
tree | 79e1bed8444b636326e169fa93d761e17ed3ed20 | |
parent | Split network intersect ray functions and return specific types (diff) | |
download | ilt-6aba7c7dd1d6bcc1ddb4a5acb61ec0850c420824.tar.bz2 ilt-6aba7c7dd1d6bcc1ddb4a5acb61ec0850c420824.tar.xz ilt-6aba7c7dd1d6bcc1ddb4a5acb61ec0850c420824.zip |
Add addStright to Network which looks up StraightLink in the network type
-rw-r--r-- | game/network/network.h | 8 | ||||
-rw-r--r-- | game/network/rail.h | 4 | ||||
-rw-r--r-- | test/test-network.cpp | 2 |
3 files changed, 14 insertions, 0 deletions
diff --git a/game/network/network.h b/game/network/network.h index 44ad095..c0485a9 100644 --- a/game/network/network.h +++ b/game/network/network.h @@ -30,6 +30,8 @@ public: [[nodiscard]] Link::Nexts routeFromTo(const Link::End &, glm::vec3) const; [[nodiscard]] Link::Nexts routeFromTo(const Link::End &, const NodePtr &) const; + virtual LinkPtr addStraight(glm::vec3, glm::vec3) = 0; + protected: static void joinLinks(const LinkPtr & l, const LinkPtr & ol); @@ -60,5 +62,11 @@ public: return l; } + LinkPtr + addStraight(glm::vec3 n1, glm::vec3 n2) override + { + return addLink<typename T::StraightLink>(n1, n2); + } + void render(const Shader &) const override; }; diff --git a/game/network/rail.h b/game/network/rail.h index 758beb6..c1cb579 100644 --- a/game/network/rail.h +++ b/game/network/rail.h @@ -16,10 +16,14 @@ class Vertex; struct Arc; // A piece of rail track +class RailLinkStraight; class RailLink : public virtual Link, public Renderable { public: RailLink() = default; inline ~RailLink() override = 0; + + using StraightLink = RailLinkStraight; + void render(const Shader &) const override; NO_COPY(RailLink); NO_MOVE(RailLink); diff --git a/test/test-network.cpp b/test/test-network.cpp index 70f2428..af2c76e 100644 --- a/test/test-network.cpp +++ b/test/test-network.cpp @@ -19,7 +19,9 @@ #include <vector> struct TestLink : public LinkStraight { + TestLink(NodePtr a, NodePtr b) : TestLink {a, b, glm::distance(a->pos, b->pos)} { } TestLink(NodePtr a, NodePtr b, float l) : Link {{std::move(a), 0}, {std::move(b), pi}, l} { } + using StraightLink = TestLink; }; constexpr glm::vec3 p000 {0, 0, 0}, p100 {1, 0, 0}, p200 {2, 0, 0}, p300 {3, 0, 0}; |