From c1ea14d1c96de18448c0c3779d30b7e1e4451f61 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Fri, 5 Feb 2021 00:30:13 +0000 Subject: Initial commit generating some basic rail network --- game/network/link.h | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 game/network/link.h (limited to 'game/network/link.h') diff --git a/game/network/link.h b/game/network/link.h new file mode 100644 index 0000000..0da413c --- /dev/null +++ b/game/network/link.h @@ -0,0 +1,51 @@ +#ifndef LINK_H +#define LINK_H + +#include +#include +#include +#include +#include + +// Generic network node +// something that can be travelled to +// it has location +class Node { +public: + explicit Node(glm::vec3 p) noexcept : pos(p) {}; + virtual ~Node() noexcept = default; + NO_COPY(Node); + NO_MOVE(Node); + + glm::vec3 pos; +}; +using NodePtr = std::shared_ptr; + +// Generic network link +// something that can be travelled along +// it joins 2 nodes +class Link { +public: + // side determines which edges can be moved to next, must alternate + using End = std::pair; + + Link(End, End); + virtual ~Link() = default; + NO_COPY(Link); + NO_MOVE(Link); + + std::array ends; +}; + +template struct PtrSorter { + bool + operator()(const T & a, const T & b) const + { + return *a < *b; + } +}; + +bool operator<(const glm::vec3 & a, const glm::vec3 & b); +bool operator<(const Node & a, const Node & b); + +#endif -- cgit v1.2.3