gwnavruntime/navgraph/identifiers/navgraphvertexrawptr.h Source File

navgraphvertexrawptr.h
Go to the documentation of this file.
1 /*
2 * Copyright 2015 Autodesk, Inc. All rights reserved.
3 * Use of this software is subject to the terms of the Autodesk license agreement and any attachments or Appendices thereto provided at the time of installation or download,
4 * or which otherwise accompanies this software in either electronic or hard copy form, or which is signed by you and accepted by Autodesk.
5 */
6 
7 
8 
9 
10 // ---------- Primary contact: JUBA - secondary contact: NOBODY
11 #ifndef Navigation_NavGraphVertexRawPtr_H
12 #define Navigation_NavGraphVertexRawPtr_H
13 
17 
18 
19 namespace Kaim
20 {
21 
22 class NavGraphVertex;
23 class GraphVertexData;
24 class NavTag;
25 
33 class NavGraphVertexRawPtr
34 {
35  KY_DEFINE_NEW_DELETE_OPERATORS(MemStat_NavData)
36 
37 public:
39 
41  NavGraphVertexRawPtr(const NavGraphRawPtr& navGraphRawPtr, NavGraphVertexIdx vertexIdx);
42 
44  bool IsValid() const;
45 
46  void Invalidate();
47 
48  bool operator ==(const NavGraphVertexRawPtr& rhs) const;
49  bool operator !=(const NavGraphVertexRawPtr& rhs) const;
50  bool operator < (const NavGraphVertexRawPtr& rhs) const;
51  bool operator <=(const NavGraphVertexRawPtr& rhs) const;
52 
53  // ---------------------------------- Member Functions for valid instance ----------------------------------
56 
58  NavGraph* GetNavGraph() const;
59  const NavGraphBlob* GetNavGraphBlob() const;
61  GraphVertexData& GetGraphVertexData() const;
62  const NavTag& GetNavTag() const;
63  const NavGraphVertex& GetNavGraphVertex() const;
64  const Vec3f& GetGraphVertexPosition() const;
65 
66 public:
67  NavGraphRawPtr m_navGraphRawPtr;
68  CompactNavGraphVertexIdx m_vertexIdx;
69 };
70 
71 KY_INLINE NavGraphVertexRawPtr::NavGraphVertexRawPtr() : m_vertexIdx(CompactNavGraphVertexIdx_MAXVAL) {}
72 
73 KY_INLINE NavGraphVertexRawPtr::NavGraphVertexRawPtr(const NavGraphRawPtr& navGraphRawPtr, NavGraphVertexIdx vertexIdx) :
74  m_navGraphRawPtr(navGraphRawPtr), m_vertexIdx((CompactNavGraphVertexIdx)vertexIdx) {}
75 
76 KY_INLINE bool NavGraphVertexRawPtr::IsValid() const { return m_navGraphRawPtr.IsValid() && m_vertexIdx != CompactNavGraphVertexIdx_MAXVAL; }
77 KY_INLINE void NavGraphVertexRawPtr::Invalidate() { m_navGraphRawPtr.Invalidate(); m_vertexIdx = CompactNavGraphVertexIdx_MAXVAL; }
78 
80 
81 KY_INLINE bool NavGraphVertexRawPtr::operator ==(const NavGraphVertexRawPtr& rhs) const { return m_navGraphRawPtr == rhs.m_navGraphRawPtr && m_vertexIdx == rhs.m_vertexIdx; }
82 KY_INLINE bool NavGraphVertexRawPtr::operator !=(const NavGraphVertexRawPtr& rhs) const { return !(*this == rhs); }
83 KY_INLINE bool NavGraphVertexRawPtr::operator < (const NavGraphVertexRawPtr& rhs) const { return m_navGraphRawPtr < rhs.m_navGraphRawPtr || (m_navGraphRawPtr == rhs.m_navGraphRawPtr && m_vertexIdx < rhs.m_vertexIdx); }
84 KY_INLINE bool NavGraphVertexRawPtr::operator <=(const NavGraphVertexRawPtr& rhs) const { return !(rhs < *this); }
85 
86 KY_INLINE const NavGraphBlob* NavGraphVertexRawPtr::GetNavGraphBlob() const { return m_navGraphRawPtr.GetNavGraphBlob(); }
87 KY_INLINE NavGraph* NavGraphVertexRawPtr::GetNavGraph() const { return m_navGraphRawPtr.GetNavGraph(); }
88 
89 KY_INLINE const NavGraphVertex& NavGraphVertexRawPtr::GetNavGraphVertex() const { return GetNavGraphBlob()->GetNavGraphVertex(m_vertexIdx); }
90 KY_INLINE const Vec3f& NavGraphVertexRawPtr::GetGraphVertexPosition() const { return GetNavGraphVertex().GetPosition(); }
91 KY_INLINE GraphVertexData& NavGraphVertexRawPtr::GetGraphVertexData() const { return GetNavGraph()->GetGraphVertexData(m_vertexIdx); }
92 KY_INLINE KyUInt32 NavGraphVertexRawPtr::GetNeighborVertexCount() const { return GetNavGraphVertex().GetNeighborVertexCount(); }
93 
94 KY_INLINE const NavTag& NavGraphVertexRawPtr::GetNavTag() const
95 {
96  const NavGraphBlob* navGraphBlob = GetNavGraphBlob();
97  const NavTagIdx navTagIdx = navGraphBlob->GetNavGraphVertexNavTagIdx(m_vertexIdx);
98  return navGraphBlob->GetNavTag(navTagIdx);
99 }
101 }
102 
103 #endif //Navigation_NavGraphVertexRawPtr_H
104 
bool IsValid() const
Returns true if this object refers to a valid NavGraphVertex: i.e. a NavGraphVertex in a validNavGrap...
Definition: navgraphvertexrawptr.h:85
The NavGraphBlob contains the static data of a NavGraph.
Definition: navgraphblob.h:21
KyUInt32 NavGraphVertexIdx
An index that uniquely identifies a single vertex within the set of vertices owned by a NavGraph...
Definition: navgraphtypes.h:47
bool operator!=(const NavGraphVertexRawPtr &rhs) const
Returns true if this object identifies an vertex different from the one identified by rhs...
Definition: navgraphvertexrawptr.h:91
bool operator==(const NavGraphVertexRawPtr &rhs) const
Returns true if this object identifies the same vertex as rhs, or if both are invalid.
Definition: navgraphvertexrawptr.h:90
void Invalidate()
Invalidates this object.
Definition: navgraphvertexrawptr.h:86
const NavGraphBlob * GetNavGraphBlob() const
Returns a reference to the NavGraphBlob that contains this NavGraphVertex.
Definition: navgraphvertexrawptr.h:95
NavGraph * GetNavGraph() const
Returns a reference to the NavGraph that contains this NavGraphVertex.
Definition: navgraphvertexrawptr.h:96
void Invalidate()
Invalidates this object.
Definition: navgraphrawptr.h:70
GraphVertexData & GetGraphVertexData() const
Returns theGraphVertexData associated to this NavGraphVertex. For Internal use.
Definition: navgraphvertexrawptr.h:100
This class uniquely identifies a NavGraph that has been loaded.
Definition: navgraphrawptr.h:33
Definition: gamekitcrowddispersion.h:20
#define KY_DEFINE_NEW_DELETE_OPERATORS(MemStat)
This macro defines new and delete operators.
Definition: memory.h:137
const NavTag & GetNavTag() const
Returns the NavTag associated to this NavGraphVertex.
Definition: navgraphvertexrawptr.h:103
KyUInt32 GetNeighborVertexCount() const
Returns the number of outgoing edges (equal to the number of neighbors) of this vertex.
Definition: navgraphvertexrawptr.h:101
bool IsValid() const
Returns true if this object refers to a valid NavGraph.
Definition: navgraphrawptr.h:69
NavGraphVertexIdx GetNavGraphVertexIdx() const
Returns the NavGraphVertexIdx that identifies this vertex within its NavGraph.
Definition: navgraphvertexrawptr.h:88
const Vec3f & GetGraphVertexPosition() const
Retrieves the position of the NavGraph vertex .
Definition: navgraphvertexrawptr.h:99
unsigned int KyUInt32
Type used internally to represent an unsigned 32-bit integer.
Definition: types.h:36
NavGraphVertexRawPtr()
Constructs a new instance of this class. Creates an invalid NavGraphVertexRawPtr. ...
Definition: navgraphvertexrawptr.h:80
NavGraph * GetNavGraph() const
Returns a reference to the NavGraph that handles the NavGraph.
Definition: navgraphrawptr.h:77
Each instance of this class uniquely identifies a single NavGraphVertex in a NavGraph.
Definition: navgraphvertexrawptr.h:36
This class defines a three-dimensional vector whose coordinates are stored using floating-point numbe...
Definition: vec3f.h:23
This class is a runtime wrapper of a NavGraphBlob, it gathers all the runtime information associated ...
Definition: navgraph.h:27
const NavGraphVertex & GetNavGraphVertex() const
Retrieves the NavGraph vertex at the start of the specified NavGraph edge.
Definition: navgraphvertexrawptr.h:98