22 class DynamicNavVertex
33 DynamicNavVertex(
const PixelPos& pixelPos,
KyFloat32 alt) :
39 bool operator==(
const DynamicNavVertex& other)
const
41 return m_pixelPos == other.m_pixelPos && m_altitude == other.m_altitude;
43 bool operator!=(
const DynamicNavVertex& other)
const
45 return !operator==(other);
56 class DynamicNavTriangle
60 DynamicNavTriangle(
KyUInt32 edge) : m_edge(edge) {}
70 enum DynamicNavHalfEdgeType
72 DynamicNavHalfEdgeType_Normal = 0,
73 DynamicNavHalfEdgeType_Wall = 1,
74 DynamicNavHalfEdgeType_Hole = 2,
75 DynamicNavHalfEdgeType_FloorBoundary = 3,
76 DynamicNavHalfEdgeType_CellBoundary = 4,
78 DynamicNavHalfEdgeType_Invalid = 0xFFFFFFFF
81 class DynamicNavHalfEdge
90 , m_type(DynamicNavHalfEdgeType_Invalid)
100 DynamicNavHalfEdgeType m_type;
108 mutable KyUInt32 m_stitch1To1EdgeIdx;
114 class DynamicNavFloor
118 enum PixelPosRelativeCoordSystem
121 PIXELPOS_RELATIVE_TO_CELL
126 DynamicNavFloor(MemoryHeap* memoryHeap);
131 KyUInt32 AddIntVertex(
const Vec2i& position);
133 KyUInt32 AddVertex3f(
const Vec3f& position);
140 KyUInt32 GetNextEdgeIdx(
KyUInt32 edgeIdx)
const {
return m_edges[edgeIdx].m_next; }
141 KyUInt32 GetPrevEdgeIdx(
KyUInt32 edgeIdx)
const {
return GetNextEdgeIdx(GetNextEdgeIdx(edgeIdx)); }
142 KyUInt32 GetOppositeEdgeIdx(
KyUInt32 edgeIdx)
const {
return m_edges[edgeIdx].m_pair; }
143 KyUInt32 GetStartVertexIdx(
KyUInt32 edgeIdx)
const {
return m_edges[edgeIdx].m_start; }
144 KyUInt32 GetFaceIdx(
KyUInt32 edgeIdx)
const {
return m_edges[edgeIdx].m_face; }
147 KyUInt32 GetEdgeIdx(
KyUInt32 triangleIdx)
const {
return m_triangles[triangleIdx].m_edge; }
150 KyUInt32 GetFirstEdgeIdx(
KyUInt32 vertexIdx)
const {
return m_vertices[vertexIdx].m_first; }
152 const DynamicNavVertex& GetNavVertex(
KyUInt32 vertexIdx)
const {
return m_vertices[vertexIdx]; }
155 KyUInt32 GetNumberOfFloorBoundaryEdges()
const;
157 bool AreIndexesWithinBounds()
const;
161 KyUInt32 FindOrAddNavtag(
const NavTag* tag);
163 void ComputeAltitudeRange();
168 KyArrayDH<DynamicNavTriangle> m_triangles;
169 KyArrayDH_POD<DynamicNavVertex> m_vertices;
170 KyArrayDH_POD<DynamicNavHalfEdge> m_edges;
171 KyArrayDH_POD<KyUInt32> m_navTagIndexes;
172 KyArrayDH_POD<const NavTag*> m_navTagArray;
174 FloorAltitudeRange m_altitudeRange;
177 KY_INLINE DynamicNavFloor::DynamicNavFloor() :
179 m_triangles(nullptr),
182 m_navTagIndexes(nullptr),
183 m_navTagArray(nullptr)
188 KY_INLINE DynamicNavFloor::DynamicNavFloor(MemoryHeap* memoryHeap) :
190 m_triangles(memoryHeap),
191 m_vertices(memoryHeap),
193 m_navTagIndexes(memoryHeap),
194 m_navTagArray(memoryHeap)
199 KY_INLINE
void DynamicNavFloor::Clear()
204 m_navTagIndexes.Clear();
205 m_navTagArray.Clear();
206 m_altitudeRange.Clear();
#define KyFloat32MAXVAL
KyFloat32 max value
Definition: types.h:71
static const KyInt32 InvalidPixelCoord
Represents an invalidPixelCoord object.
Definition: navmeshtypes.h:27
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
static const CardinalDir CardinalDir_INVALID
Invalid cardinal direction.
Definition: cardinaldir.h:20
#define KY_DEFINE_NEW_DELETE_OPERATORS(MemStat)
This macro defines new and delete operators.
Definition: memory.h:132
Navigation return code class.
Definition: types.h:108
The Autodesk Navigation namespace.
Definition: gamekitcrowddispersion.cpp:17
#define KyUInt32MAXVAL
KyUInt32 max value
Definition: types.h:68
float KyFloat32
float
Definition: types.h:32