summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2021-03-10 00:24:26 +0000
committerDan Goodliffe <dan@randomdan.homeip.net>2021-03-10 00:27:31 +0000
commitd00fcb72da106a55d1256d853b4742257052cdb3 (patch)
tree90e5228d7bd8c61c53c3b55a176c028f1b57a179
parentMerge nexts into ends (diff)
downloadilt-d00fcb72da106a55d1256d853b4742257052cdb3.tar.bz2
ilt-d00fcb72da106a55d1256d853b4742257052cdb3.tar.xz
ilt-d00fcb72da106a55d1256d853b4742257052cdb3.zip
Add findNodeAt to locate a node instance by position
-rw-r--r--game/network/rail.cpp9
-rw-r--r--game/network/rail.h1
2 files changed, 10 insertions, 0 deletions
diff --git a/game/network/rail.cpp b/game/network/rail.cpp
index 25b3376..8ec6893 100644
--- a/game/network/rail.cpp
+++ b/game/network/rail.cpp
@@ -37,6 +37,15 @@ RailLinks::joinLinks(const LinkPtr & l) const
}
}
+NodePtr
+RailLinks::findNodeAt(glm::vec3 pos) const
+{
+ if (const auto n = nodes.find(std::make_shared<Node>(pos)); n != nodes.end()) {
+ return *n;
+ }
+ return {};
+}
+
std::shared_ptr<RailLink>
RailLinks::addLinksBetween(glm::vec3 start, glm::vec3 end)
{
diff --git a/game/network/rail.h b/game/network/rail.h
index d25964d..4460fcd 100644
--- a/game/network/rail.h
+++ b/game/network/rail.h
@@ -72,6 +72,7 @@ public:
}
std::shared_ptr<RailLink> addLinksBetween(glm::vec3 start, glm::vec3 end);
+ [[nodiscard]] NodePtr findNodeAt(glm::vec3) const;
private:
using Nodes = std::set<NodePtr, PtrSorter<NodePtr>>;