summaryrefslogtreecommitdiff
path: root/game/network
diff options
context:
space:
mode:
Diffstat (limited to 'game/network')
-rw-r--r--game/network/link.h9
-rw-r--r--game/network/network.cpp2
-rw-r--r--game/network/network.h18
-rw-r--r--game/network/network.impl.h8
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)};