9 #ifndef Navigation_NavGraphBlob_H
10 #define Navigation_NavGraphBlob_H
32 KyUInt32 GetVertexToConnectCount()
const;
43 const NavGraphEdgeInfo& GetNavGraphEdgeInfo(
const NavGraphEdgeSmartIdx& edgeIdxInGraph)
const;
44 NavTagIdx GetNavGraphEdgeNavTagIdx(
const NavGraphEdgeSmartIdx& edgeIdxInGraph)
const;
47 const NavTag& GetNavTag(NavTagIdx navTagIdx)
const;
50 Box3f ComputeAABB()
const;
61 SwapEndianness(e,
self.m_visualDebugId);
62 SwapEndianness(e,
self.m_name);
63 SwapEndianness(e,
self.m_navGraphVertices);
64 SwapEndianness(e,
self.m_navTags);
65 SwapEndianness(e,
self.m_edgeCount);
66 SwapEndianness(e,
self.m_vertexToConnectCount);
69 KY_INLINE NavGraphBlob::NavGraphBlob() {}
70 KY_INLINE
bool NavGraphBlob::IsEmpty()
const {
return GetVertexCount() == 0; }
72 KY_INLINE
KyUInt32 NavGraphBlob::GetEdgeCount()
const {
return m_edgeCount; }
73 KY_INLINE
KyUInt32 NavGraphBlob::GetVertexCount()
const {
return m_navGraphVertices.GetCount(); }
74 KY_INLINE
KyUInt32 NavGraphBlob::GetVertexToConnectCount()
const {
return m_vertexToConnectCount; }
75 KY_INLINE
KyUInt32 NavGraphBlob::GetNavTagCount()
const {
return m_navTags.GetCount(); }
76 KY_INLINE
const Vec3f& NavGraphBlob::GetNavGraphVertexPosition(
NavGraphVertexIdx vertexIdx)
const {
return GetNavGraphVertex(vertexIdx).GetPosition(); }
77 KY_INLINE NavTagIdx NavGraphBlob::GetNavGraphVertexNavTagIdx(
NavGraphVertexIdx vertexIdx)
const {
return GetNavGraphVertex(vertexIdx).GetNavTagIdx(); }
80 KY_INLINE NavTagIdx NavGraphBlob::GetNavGraphEdgeNavTagIdx(
const NavGraphEdgeSmartIdx& edgeIdxInGraph)
const {
return GetNavGraphEdgeInfo(edgeIdxInGraph).m_navTagIdx; }
82 KY_INLINE
const NavGraphVertex& NavGraphBlob::GetNavGraphVertex(
NavGraphVertexIdx vertexIdx)
const
84 KY_ASSERT(vertexIdx < m_navGraphVertices.GetCount());
85 return m_navGraphVertices.
GetValues()[vertexIdx];
88 KY_INLINE
const NavGraphEdgeInfo& NavGraphBlob::GetNavGraphEdgeInfo(
const NavGraphEdgeSmartIdx& edgeIdxInGraph)
const
90 return GetNavGraphVertex(edgeIdxInGraph.GetStartVertexIdx()).GetNavGraphEdgeInfo(edgeIdxInGraph.GetNeighborVertexIdx());
93 KY_INLINE
const NavTag& NavGraphBlob::GetNavTag(NavTagIdx navTagIdx)
const
95 KY_ASSERT(navTagIdx < m_navTags.GetCount());
99 KY_INLINE
Kaim::Box3f NavGraphBlob::ComputeAABB()
const
102 const NavGraphVertex* vertices = m_navGraphVertices.
GetValues();
103 for (
KyUInt32 i = 0; i < m_navGraphVertices.GetCount(); ++i)
105 aabb.ExpandByVec3(vertices[i].m_position);
113 #endif // Navigation_NavGraphBlob_H
KyUInt16 NavGraphVertexLinkType
Defines a type for a tag that determines whether or not a vertex in a NavGraph should be connected to...
Definition: navgraphtypes.h:26
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
#define KY_CLASS_WITHOUT_COPY(ClassName)
Define to forbid copy constructor and copy assignment.
Definition: types.h:387
Target
Enumerates the possible endianness types relative to the current platform.
Definition: endianness.h:35
This class represents a three-dimensional axis-aligned bounding box whose dimensions are stored using...
Definition: box3f.h:25
The NavData class is the object containing navigation data that will be added to one Database...
Definition: navdata.h:44
Definition: gamekitcrowddispersion.h:20
unsigned int KyUInt32
Type used internally to represent an unsigned 32-bit integer.
Definition: types.h:36
const T * GetValues() const
Retrieves a const pointer to the data stored in this array.
Definition: blobarray.h:44
This class defines a three-dimensional vector whose coordinates are stored using floating-point numbe...
Definition: vec3f.h:23