19 class AbstractGraphFloorBlob
21 KY_ROOT_BLOB_CLASS(NavData, AbstractGraphFloorBlob, 0)
23 AbstractGraphFloorBlob();
26 KyUInt32 GetLocalNodeIdx(AbstractGraphNodeIdx graphNodeIdx) const;
29 const AbstractGraphVertex& GetAbstractGraphVertex(AbstractGraphNodeIdx graphNodeIdx) const;
30 KyFloat32 GetAltitude(AbstractGraphNodeIdx graphNodeIdx) const;
31 CardinalDir GetCellBoundaryDir(AbstractGraphNodeIdx graphNodeIdx) const;
33 const AbstractGraphVertex& GetAbstractGraphVertexFromLocalIdx(
KyUInt32 localIdx) const;
41 AbstractGraphNodeIdx m_abstractGraphNodeFirstIdx;
42 KyUInt16 m_firstIdxForCellBoundaryDir[4];
43 KyUInt16 m_countForCellBoundaryDir[4];
45 BlobArray<AbstractGraphVertex> m_nodeVertices;
48 inline
void SwapEndianness(Endianness::Target e, AbstractGraphFloorBlob& self)
50 SwapEndianness(e,
self.m_originalNavFloorIdx);
51 SwapEndianness(e,
self.m_abstractGraphNodeFirstIdx);
52 SwapEndianness(e,
self.m_firstIdxForCellBoundaryDir[0]);
53 SwapEndianness(e,
self.m_firstIdxForCellBoundaryDir[1]);
54 SwapEndianness(e,
self.m_firstIdxForCellBoundaryDir[2]);
55 SwapEndianness(e,
self.m_firstIdxForCellBoundaryDir[3]);
56 SwapEndianness(e,
self.m_countForCellBoundaryDir[0]);
57 SwapEndianness(e,
self.m_countForCellBoundaryDir[1]);
58 SwapEndianness(e,
self.m_countForCellBoundaryDir[2]);
59 SwapEndianness(e,
self.m_countForCellBoundaryDir[3]);
60 SwapEndianness(e,
self.m_altitudes);
61 SwapEndianness(e,
self.m_nodeVertices);
65 KY_INLINE
KyUInt32 AbstractGraphFloorBlob::GetNodeIdx(
KyUInt32 localNodeIdx)
const
67 return localNodeIdx + m_abstractGraphNodeFirstIdx;
70 KY_INLINE
KyUInt32 AbstractGraphFloorBlob::GetLocalNodeIdx(AbstractGraphNodeIdx graphNodeIdx)
const
72 KY_ASSERT(graphNodeIdx >= m_abstractGraphNodeFirstIdx);
73 KY_ASSERT(graphNodeIdx < (m_abstractGraphNodeFirstIdx + m_countForCellBoundaryDir[0] + m_countForCellBoundaryDir[1] + m_countForCellBoundaryDir[2] + m_countForCellBoundaryDir[3]));
74 return graphNodeIdx - m_abstractGraphNodeFirstIdx;
77 KY_INLINE
const AbstractGraphVertex& AbstractGraphFloorBlob::GetAbstractGraphVertex(AbstractGraphNodeIdx graphNodeIdx)
const
79 return GetAbstractGraphVertexFromLocalIdx(GetLocalNodeIdx(graphNodeIdx));
82 KY_INLINE
KyFloat32 AbstractGraphFloorBlob::GetAltitude(AbstractGraphNodeIdx graphNodeIdx)
const
84 return GetAltitudeFromLocalIdx(GetLocalNodeIdx(graphNodeIdx));
87 KY_INLINE
const AbstractGraphVertex& AbstractGraphFloorBlob::GetAbstractGraphVertexFromLocalIdx(
KyUInt32 localIdx)
const
89 return m_nodeVertices.GetValues()[localIdx];
92 KY_INLINE
KyFloat32 AbstractGraphFloorBlob::GetAltitudeFromLocalIdx(
KyUInt32 localIdx)
const
94 return m_altitudes.GetValues()[localIdx];
97 KY_INLINE
CardinalDir AbstractGraphFloorBlob::GetCellBoundaryDir(AbstractGraphNodeIdx graphNodeIdx)
const
99 return GetCellBoundaryDirFromLocalIdx(GetLocalNodeIdx(graphNodeIdx));
std::uint32_t KyUInt32
uint32_t
Definition: types.h:29
KyUInt32 CardinalDir
Defines a type that refers to one of the cardinal points on the compass:
Definition: cardinaldir.h:15
std::uint16_t KyUInt16
uint16_t
Definition: types.h:28
KyUInt32 NavFloorIdx
An index that uniquely identifies a single NavFloor within the set of NavFloors owned by a NavCell...
Definition: navmeshtypes.h:112
The Autodesk Navigation namespace.
Definition: gamekitcrowddispersion.cpp:17
float KyFloat32
float
Definition: types.h:32