9 #ifndef Navigation_DynamicNavFloor_H
10 #define Navigation_DynamicNavFloor_H
24 class DynamicNavVertex
35 DynamicNavVertex(
const PixelPos& pixelPos,
KyFloat32 alt) :
41 bool operator==(
const DynamicNavVertex& other)
const
43 return m_pixelPos == other.m_pixelPos && m_altitude == other.m_altitude;
45 bool operator!=(
const DynamicNavVertex& other)
const
47 return !operator==(other);
58 class DynamicNavTriangle
62 DynamicNavTriangle(
KyUInt32 edge) : m_edge(edge) {}
72 enum DynamicNavHalfEdgeType
74 DynamicNavHalfEdgeType_Normal = 0,
75 DynamicNavHalfEdgeType_Wall = 1,
76 DynamicNavHalfEdgeType_Hole = 2,
77 DynamicNavHalfEdgeType_FloorBoundary = 3,
78 DynamicNavHalfEdgeType_CellBoundary = 4,
80 DynamicNavHalfEdgeType_Invalid = 0xFFFFFFFF
83 class DynamicNavHalfEdge
92 , m_type(DynamicNavHalfEdgeType_Invalid)
102 DynamicNavHalfEdgeType m_type;
110 mutable KyUInt32 m_stitch1To1EdgeIdx;
116 class DynamicNavFloor
120 enum PixelPosRelativeCoordSystem
123 PIXELPOS_RELATIVE_TO_CELL
128 DynamicNavFloor(MemoryHeap* memoryHeap);
133 KyUInt32 AddIntVertex(
const Vec2i& position);
135 KyUInt32 AddVertex3f(
const Vec3f& position);
142 KyUInt32 GetNextEdgeIdx(
KyUInt32 edgeIdx)
const {
return m_edges[edgeIdx].m_next; }
143 KyUInt32 GetPrevEdgeIdx(
KyUInt32 edgeIdx)
const {
return GetNextEdgeIdx(GetNextEdgeIdx(edgeIdx)); }
144 KyUInt32 GetOppositeEdgeIdx(
KyUInt32 edgeIdx)
const {
return m_edges[edgeIdx].m_pair; }
145 KyUInt32 GetStartVertexIdx(
KyUInt32 edgeIdx)
const {
return m_edges[edgeIdx].m_start; }
146 KyUInt32 GetFaceIdx(
KyUInt32 edgeIdx)
const {
return m_edges[edgeIdx].m_face; }
149 KyUInt32 GetEdgeIdx(
KyUInt32 triangleIdx)
const {
return m_triangles[triangleIdx].m_edge; }
152 KyUInt32 GetFirstEdgeIdx(
KyUInt32 vertexIdx)
const {
return m_vertices[vertexIdx].m_first; }
154 const DynamicNavVertex& GetNavVertex(
KyUInt32 vertexIdx)
const {
return m_vertices[vertexIdx]; }
157 KyUInt32 GetNumberOfFloorBoundaryEdges()
const;
159 bool AreIndexesWithinBounds()
const;
163 KyUInt32 FindOrAddNavtag(
const NavTag* tag);
165 void ComputeAltitudeRange();
170 KyArrayDH<DynamicNavTriangle> m_triangles;
171 KyArrayDH_POD<DynamicNavVertex> m_vertices;
172 KyArrayDH_POD<DynamicNavHalfEdge> m_edges;
173 KyArrayDH_POD<KyUInt32> m_navTagIndexes;
174 KyArrayDH_POD<const NavTag*> m_navTagArray;
176 FloorAltitudeRange m_altitudeRange;
179 KY_INLINE DynamicNavFloor::DynamicNavFloor() :
190 KY_INLINE DynamicNavFloor::DynamicNavFloor(MemoryHeap* memoryHeap) :
192 m_triangles(memoryHeap),
193 m_vertices(memoryHeap),
195 m_navTagIndexes(memoryHeap),
196 m_navTagArray(memoryHeap)
201 KY_INLINE
void DynamicNavFloor::Clear()
206 m_navTagIndexes.Clear();
207 m_navTagArray.Clear();
208 m_altitudeRange.Clear();
214 #endif //Navigation_DynamicNavFloor_H
#define KyFloat32MAXVAL
The maximum value that can be stored in the KyFloat32 variable type.
Definition: types.h:227
static const KyInt32 InvalidPixelCoord
Represents an invalidPixelCoord object.
Definition: navmeshtypes.h:30
KyInt32 KyResult
Defines a type that can be returned by methods or functions in the Gameware Navigation SDK to indicat...
Definition: types.h:254
#define KY_NULL
Null value.
Definition: types.h:247
KyUInt32 CardinalDir
Defines a type that refers to one of the cardinal points on the compass:
Definition: cardinaldir.h:23
static const CardinalDir CardinalDir_INVALID
Identifies an invalid cardinal direction.
Definition: cardinaldir.h:29
Definition: gamekitcrowddispersion.h:20
#define KY_DEFINE_NEW_DELETE_OPERATORS(MemStat)
This macro defines new and delete operators.
Definition: memory.h:137
unsigned int KyUInt32
Type used internally to represent an unsigned 32-bit integer.
Definition: types.h:36
#define KyUInt32MAXVAL
The maximum value that can be stored in the KyUInt32 variable type.
Definition: types.h:226
float KyFloat32
Type used internally to represent a 32-bit floating-point number.
Definition: types.h:43