summaryrefslogtreecommitdiff
path: root/game/network/network.impl.h
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2022-10-02 18:16:27 +0100
committerDan Goodliffe <dan@randomdan.homeip.net>2022-10-02 19:29:39 +0100
commitd7587defa3cedd6e7ea6d0623aa8cd0f6b27819c (patch)
tree73b2dbaae87ebb5851ae09358f206d2f0f85a6f0 /game/network/network.impl.h
parentLatest clang-formatting (diff)
downloadilt-d7587defa3cedd6e7ea6d0623aa8cd0f6b27819c.tar.bz2
ilt-d7587defa3cedd6e7ea6d0623aa8cd0f6b27819c.tar.xz
ilt-d7587defa3cedd6e7ea6d0623aa8cd0f6b27819c.zip
Add support for searching a network for a ray intersection
Diffstat (limited to 'game/network/network.impl.h')
-rw-r--r--game/network/network.impl.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/game/network/network.impl.h b/game/network/network.impl.h
index d2e9ff0..afc9304 100644
--- a/game/network/network.impl.h
+++ b/game/network/network.impl.h
@@ -21,3 +21,18 @@ NetworkOf<T>::joinLinks(const LinkPtr & l) const
Network::joinLinks(l, ol);
}
}
+
+template<typename T>
+Network::IntersectRayResult
+NetworkOf<T>::intersectRayLinks(const Ray & ray) const
+{
+ // Click link
+ if (const auto link = std::find_if(links.objects.begin(), links.objects.end(),
+ [&ray](const std::shared_ptr<T> & link) {
+ return link->intersectRay(ray);
+ });
+ link != links.objects.end()) {
+ return *link;
+ }
+ return {};
+}