diff options
Diffstat (limited to 'game/network')
-rw-r--r-- | game/network/link.h | 9 | ||||
-rw-r--r-- | game/network/network.cpp | 2 | ||||
-rw-r--r-- | game/network/network.h | 18 | ||||
-rw-r--r-- | game/network/network.impl.h | 8 |
4 files changed, 16 insertions, 21 deletions
diff --git a/game/network/link.h b/game/network/link.h index 2beb808..1f6b780 100644 --- a/game/network/link.h +++ b/game/network/link.h @@ -28,13 +28,9 @@ public: // Generic network link // something that can be travelled along // it joins 2 nodes -class Link; -using LinkPtr = std::shared_ptr<Link>; -using LinkCPtr = std::shared_ptr<const Link>; -using LinkWPtr = std::weak_ptr<const Link>; -class Link { +class Link : public StdTypeDefs<Link> { public: - using Next = std::pair<LinkWPtr, unsigned char /*end*/>; + using Next = std::pair<WPtr, unsigned char /*end*/>; using Nexts = std::vector<Next>; struct End { @@ -61,7 +57,6 @@ protected: return {}; } }; -using CLinks = std::vector<LinkCPtr>; bool operator<(const glm::vec3 & a, const glm::vec3 & b); bool operator<(const Node & a, const Node & b); diff --git a/game/network/network.cpp b/game/network/network.cpp index 25dc384..d78f672 100644 --- a/game/network/network.cpp +++ b/game/network/network.cpp @@ -63,7 +63,7 @@ Network::intersectRayNodes(const Ray & ray) const } void -Network::joinLinks(const LinkPtr & l, const LinkPtr & ol) +Network::joinLinks(const Link::Ptr & l, const Link::Ptr & ol) { if (l != ol) { for (const auto oe : {0U, 1U}) { diff --git a/game/network/network.h b/game/network/network.h index 4ef6a4f..60d9a02 100644 --- a/game/network/network.h +++ b/game/network/network.h @@ -17,7 +17,7 @@ class Ray; class Network { public: - using LinkEnd = std::pair<LinkPtr, unsigned char>; + using LinkEnd = std::pair<Link::Ptr, unsigned char>; explicit Network(const std::string & textureName); virtual ~Network() = default; @@ -25,17 +25,17 @@ public: [[nodiscard]] Node::Ptr nodeAt(glm::vec3); [[nodiscard]] std::pair<Node::Ptr, bool> newNodeAt(glm::vec3); [[nodiscard]] std::pair<Node::Ptr, bool> candidateNodeAt(glm::vec3) const; - [[nodiscard]] virtual LinkPtr intersectRayLinks(const Ray &) const = 0; + [[nodiscard]] virtual Link::Ptr intersectRayLinks(const Ray &) const = 0; [[nodiscard]] virtual Node::Ptr intersectRayNodes(const Ray &) const; [[nodiscard]] Link::Nexts routeFromTo(const Link::End &, glm::vec3) const; [[nodiscard]] Link::Nexts routeFromTo(const Link::End &, const Node::Ptr &) const; - virtual LinkCPtr addStraight(glm::vec3, glm::vec3) = 0; - virtual CLinks addJoins(glm::vec3, glm::vec3) = 0; + virtual Link::CPtr addStraight(glm::vec3, glm::vec3) = 0; + virtual Link::CCollection addJoins(glm::vec3, glm::vec3) = 0; protected: - static void joinLinks(const LinkPtr & l, const LinkPtr & ol); + static void joinLinks(const Link::Ptr & l, const Link::Ptr & ol); using Nodes = std::set<Node::Ptr, PtrMemberSorter<Node::Ptr, &Node::pos>>; Nodes nodes; @@ -47,10 +47,10 @@ protected: using Network::Network; Collection<T> links; - void joinLinks(const LinkPtr &) const; + void joinLinks(const Link::Ptr &) const; protected: - [[nodiscard]] LinkPtr intersectRayLinks(const Ray &) const override; + [[nodiscard]] Link::Ptr intersectRayLinks(const Ray &) const override; public: template<typename L, typename... Params> @@ -64,8 +64,8 @@ public: return l; } - LinkCPtr addStraight(glm::vec3 n1, glm::vec3 n2) override; - CLinks addJoins(glm::vec3, glm::vec3) override; + Link::CPtr addStraight(glm::vec3 n1, glm::vec3 n2) override; + Link::CCollection addJoins(glm::vec3, glm::vec3) override; void render(const Shader &) const override; }; diff --git a/game/network/network.impl.h b/game/network/network.impl.h index 4e2b37e..68da5d9 100644 --- a/game/network/network.impl.h +++ b/game/network/network.impl.h @@ -15,7 +15,7 @@ NetworkOf<T>::render(const Shader & shader) const template<typename T> void -NetworkOf<T>::joinLinks(const LinkPtr & l) const +NetworkOf<T>::joinLinks(const Link::Ptr & l) const { for (const auto & ol : links.objects) { Network::joinLinks(l, ol); @@ -23,7 +23,7 @@ NetworkOf<T>::joinLinks(const LinkPtr & l) const } template<typename T> -LinkPtr +Link::Ptr NetworkOf<T>::intersectRayLinks(const Ray & ray) const { // Click link @@ -38,14 +38,14 @@ NetworkOf<T>::intersectRayLinks(const Ray & ray) const } template<typename T> -LinkCPtr +Link::CPtr NetworkOf<T>::addStraight(glm::vec3 n1, glm::vec3 n2) { return addLink<typename T::StraightLink>(n1, n2); } template<typename T> -CLinks +Link::CCollection NetworkOf<T>::addJoins(glm::vec3 n1, glm::vec3 n2) { return {addLink<typename T::StraightLink>(n1, n2)}; |