gwnavruntime/navgraph/identifiers/navgraphvertexrawptr.h Source File

navgraphvertexrawptr.h
Go to the documentation of this file.
1 /*
2 * Copyright 2016 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 #pragma once
8 
12 
13 namespace Kaim
14 {
15 
16 class NavGraphVertex;
17 class GraphVertexData;
18 class NavTag;
19 
28 {
29  KY_DEFINE_NEW_DELETE_OPERATORS(MemStat_NavData)
30 
31 public:
33 
35  NavGraphVertexRawPtr(const NavGraphRawPtr& navGraphRawPtr, NavGraphVertexIdx vertexIdx);
36 
38  bool IsValid() const;
39 
40  void Invalidate();
41 
42  bool operator ==(const NavGraphVertexRawPtr& rhs) const;
43  bool operator !=(const NavGraphVertexRawPtr& rhs) const;
44  bool operator < (const NavGraphVertexRawPtr& rhs) const;
45  bool operator <=(const NavGraphVertexRawPtr& rhs) const;
46 
47  // ---------------------------------- Member Functions for valid instance ----------------------------------
50 
52  NavGraph* GetNavGraph() const;
53  const NavGraphBlob* GetNavGraphBlob() const;
55  GraphVertexData& GetGraphVertexData() const;
56  const NavTag& GetNavTag() const;
57  const NavGraphVertex& GetNavGraphVertex() const;
58  const Vec3f& GetGraphVertexPosition() const;
59 
60 public:
61  NavGraphRawPtr m_navGraphRawPtr;
62  CompactNavGraphVertexIdx m_vertexIdx;
63 };
64 
65 KY_INLINE NavGraphVertexRawPtr::NavGraphVertexRawPtr() : m_vertexIdx(CompactNavGraphVertexIdx_MAXVAL) {}
66 
68  m_navGraphRawPtr(navGraphRawPtr), m_vertexIdx((CompactNavGraphVertexIdx)vertexIdx) {}
69 
70 KY_INLINE bool NavGraphVertexRawPtr::IsValid() const { return m_navGraphRawPtr.IsValid() && m_vertexIdx != CompactNavGraphVertexIdx_MAXVAL; }
71 KY_INLINE void NavGraphVertexRawPtr::Invalidate() { m_navGraphRawPtr.Invalidate(); m_vertexIdx = CompactNavGraphVertexIdx_MAXVAL; }
72 
74 
75 KY_INLINE bool NavGraphVertexRawPtr::operator ==(const NavGraphVertexRawPtr& rhs) const { return m_navGraphRawPtr == rhs.m_navGraphRawPtr && m_vertexIdx == rhs.m_vertexIdx; }
76 KY_INLINE bool NavGraphVertexRawPtr::operator !=(const NavGraphVertexRawPtr& rhs) const { return !(*this == rhs); }
77 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); }
78 KY_INLINE bool NavGraphVertexRawPtr::operator <=(const NavGraphVertexRawPtr& rhs) const { return !(rhs < *this); }
79 
80 KY_INLINE const NavGraphBlob* NavGraphVertexRawPtr::GetNavGraphBlob() const { return m_navGraphRawPtr.GetNavGraphBlob(); }
81 KY_INLINE NavGraph* NavGraphVertexRawPtr::GetNavGraph() const { return m_navGraphRawPtr.GetNavGraph(); }
82 
83 KY_INLINE const NavGraphVertex& NavGraphVertexRawPtr::GetNavGraphVertex() const { return GetNavGraphBlob()->GetNavGraphVertex(m_vertexIdx); }
84 KY_INLINE const Vec3f& NavGraphVertexRawPtr::GetGraphVertexPosition() const { return GetNavGraphVertex().GetPosition(); }
85 KY_INLINE GraphVertexData& NavGraphVertexRawPtr::GetGraphVertexData() const { return GetNavGraph()->GetGraphVertexData(m_vertexIdx); }
86 KY_INLINE KyUInt32 NavGraphVertexRawPtr::GetNeighborVertexCount() const { return GetNavGraphVertex().GetNeighborVertexCount(); }
87 
88 KY_INLINE const NavTag& NavGraphVertexRawPtr::GetNavTag() const
89 {
90  const NavGraphBlob* navGraphBlob = GetNavGraphBlob();
91  const NavTagIdx navTagIdx = navGraphBlob->GetNavGraphVertexNavTagIdx(m_vertexIdx);
92  return navGraphBlob->GetNavTag(navTagIdx);
93 }
94 
95 }
96 
97 
bool IsValid() const
Returns true if this object refers to a valid NavGraphVertex: i.e. a NavGraphVertex in a validNavGrap...
Definition: navgraphvertexrawptr.h:70
The NavGraphBlob contains the static data of a NavGraph.
Definition: navgraphblob.h:19
KyUInt32 NavGraphVertexIdx
An index that uniquely identifies a single vertex within the set of vertices owned by a NavGraph...
Definition: navgraphtypes.h:45
std::uint32_t KyUInt32
uint32_t
Definition: types.h:29
bool operator!=(const NavGraphVertexRawPtr &rhs) const
Returns true if this object identifies an vertex different from the one identified by rhs...
Definition: navgraphvertexrawptr.h:76
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:75
void Invalidate()
Invalidates this object.
Definition: navgraphvertexrawptr.h:71
const NavGraphBlob * GetNavGraphBlob() const
Returns a reference to the NavGraphBlob that contains this NavGraphVertex.
Definition: navgraphvertexrawptr.h:80
NavGraph * GetNavGraph() const
Returns a reference to the NavGraph that contains this NavGraphVertex.
Definition: navgraphvertexrawptr.h:81
void Invalidate()
Invalidates this object.
Definition: navgraphrawptr.h:64
GraphVertexData & GetGraphVertexData() const
Returns theGraphVertexData associated to this NavGraphVertex. For Internal use.
Definition: navgraphvertexrawptr.h:85
#define KY_DEFINE_NEW_DELETE_OPERATORS(MemStat)
This macro defines new and delete operators.
Definition: memory.h:132
This class uniquely identifies a NavGraph that has been loaded.
Definition: navgraphrawptr.h:29
The Autodesk Navigation namespace.
Definition: gamekitcrowddispersion.cpp:17
const NavTag & GetNavTag() const
Returns the NavTag associated to this NavGraphVertex.
Definition: navgraphvertexrawptr.h:88
KyUInt32 GetNeighborVertexCount() const
Returns the number of outgoing edges (equal to the number of neighbors) of this vertex.
Definition: navgraphvertexrawptr.h:86
bool IsValid() const
Returns true if this object refers to a valid NavGraph.
Definition: navgraphrawptr.h:63
NavGraphVertexIdx GetNavGraphVertexIdx() const
All these function should be called only if IsValid() returns true.
Definition: navgraphvertexrawptr.h:73
const Vec3f & GetGraphVertexPosition() const
Retrieves the position of the NavGraph vertex .
Definition: navgraphvertexrawptr.h:84
NavGraphVertexRawPtr()
Constructs a new instance of this class. Creates an invalid NavGraphVertexRawPtr. ...
Definition: navgraphvertexrawptr.h:65
NavGraph * GetNavGraph() const
Returns a reference to the NavGraph that handles the NavGraph.
Definition: navgraphrawptr.h:71
Each instance of this class uniquely identifies a single NavGraphVertex in a NavGraph.
Definition: navgraphvertexrawptr.h:27
3d vector using 32bits floating points.
Definition: vec3f.h:16
This class is a runtime wrapper of a NavGraphBlob, it gathers all the runtime information associated ...
Definition: navgraph.h:22
const NavGraphVertex & GetNavGraphVertex() const
Retrieves the NavGraph vertex at the start of the specified NavGraph edge.
Definition: navgraphvertexrawptr.h:83