diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2022-10-02 18:16:27 +0100 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2022-10-02 19:29:39 +0100 |
commit | d7587defa3cedd6e7ea6d0623aa8cd0f6b27819c (patch) | |
tree | 73b2dbaae87ebb5851ae09358f206d2f0f85a6f0 /game/network/network.impl.h | |
parent | Latest clang-formatting (diff) | |
download | ilt-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.h | 15 |
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 {}; +} |