OpenGothic
Open source reimplementation of Gothic I and II
Loading...
Searching...
No Matches
waypoint.h
Go to the documentation of this file.
1#pragma once
2
3#include <zenkit/world/WayNet.hh>
4
5#include <limits>
6#include <Tempest/Vec>
7
8class FpLock;
9class Interactive;
10
11class WayPoint final {
12 public:
13 WayPoint();
14 WayPoint(const zenkit::WayPoint& dat);
15 WayPoint(const Tempest::Vec3& pos, std::string_view name);
16 WayPoint(const Tempest::Vec3& pos, const Tempest::Vec3& dir, std::string_view name, bool isFp);
17 WayPoint(const WayPoint&)=default;
18 WayPoint(WayPoint&&)=default;
19
21 bool isLocked() const { return useCount!=0; }
22 bool isFreePoint() const;
23 bool isConnected() const;
24
25 uint32_t useCounter() const { return useCount; }
26 bool checkName(std::string_view name, bool inexact = true) const;
27
28 Tempest::Vec3 position () const;
29 Tempest::Vec3 direction() const;
30
31 Tempest::Vec3 pos;
32 Tempest::Vec3 dir;
33 bool underWater = false;
34 bool freePoint = false;
35 std::string name;
36 Interactive* ladder = nullptr;
37
38 struct Conn final {
39 WayPoint* point=nullptr;
40 int32_t len =0;
41 };
42
43 // TODO: beautify
44 mutable int32_t pathLen = std::numeric_limits<int32_t>::max();
45 mutable uint16_t pathGen = 0;
46
47 float qDistTo(float x,float y,float z) const;
48
49 void connect(WayPoint& w);
50 const std::vector<Conn>& connections() const { return conn; }
51 bool hasLadderConn(const WayPoint* w) const;
52
53 private:
54 mutable uint32_t useCount=0;
55
56 std::vector<Conn> conn;
57
58 friend class FpLock;
59 };
Definition fplock.h:6
uint32_t useCounter() const
Definition waypoint.h:25
bool isConnected() const
Definition waypoint.cpp:38
WayPoint(WayPoint &&)=default
Tempest::Vec3 position() const
Definition waypoint.cpp:52
Interactive * ladder
Definition waypoint.h:36
Tempest::Vec3 pos
Definition waypoint.h:31
bool isLocked() const
Definition waypoint.h:21
bool isFreePoint() const
Definition waypoint.cpp:34
WayPoint & operator=(WayPoint &&)=default
WayPoint(const Tempest::Vec3 &pos, std::string_view name)
std::string name
Definition waypoint.h:35
const std::vector< Conn > & connections() const
Definition waypoint.h:50
void connect(WayPoint &w)
Definition waypoint.cpp:67
Tempest::Vec3 dir
Definition waypoint.h:32
bool checkName(std::string_view name, bool inexact=true) const
Definition waypoint.cpp:42
WayPoint(const WayPoint &)=default
WayPoint(const Tempest::Vec3 &pos, const Tempest::Vec3 &dir, std::string_view name, bool isFp)
bool underWater
Definition waypoint.h:33
bool hasLadderConn(const WayPoint *w) const
Definition waypoint.cpp:77
uint16_t pathGen
Definition waypoint.h:45
float qDistTo(float x, float y, float z) const
Definition waypoint.cpp:60
int32_t pathLen
Definition waypoint.h:44
Tempest::Vec3 direction() const
Definition waypoint.cpp:56
bool freePoint
Definition waypoint.h:34
WayPoint * point
Definition waypoint.h:39
int32_t len
Definition waypoint.h:40