9 #ifndef Navigation_DynamicNavMeshContext_H
10 #define Navigation_DynamicNavMeshContext_H
27 class DynamicNavMeshContext
32 DynamicNavMeshContext()
33 : m_currentNavFloorIdxInProcess(0)
34 , m_polygonVertices(Memory::GetGlobalHeap())
35 , m_dynamicEarTriangulation(Memory::GetGlobalHeap())
36 , m_dynaFloor(Memory::GetGlobalHeap())
38 ~DynamicNavMeshContext() { ReleaseWorkingMemory(); }
40 bool InitForQuery(WorkingMemory* workingMemory)
42 m_rawInputEdges.Init(workingMemory);
43 m_allTagVolumes.Init(workingMemory);
44 m_tagVolumeImpactingCurrentFloor.Init(workingMemory);
45 m_tagVolumeToNavTagIndex.Init(workingMemory);
47 if (m_rawInputEdges.IsInitialized() ==
false ||
48 m_allTagVolumes.IsInitialized() ==
false ||
49 m_tagVolumeImpactingCurrentFloor.IsInitialized() ==
false ||
50 m_tagVolumeToNavTagIndex.IsInitialized() ==
false)
53 m_currentNavFloorIdxInProcess = 0;
57 bool InitForNewFloorInQuery(WorkingMemory* )
59 m_tagVolumeImpactingCurrentFloor.MakeEmpty();
60 m_tagVolumeToNavTagIndex.MakeEmpty();
61 m_rawInputEdges.MakeEmpty();
64 m_navTagIdxOfConnex.Clear();
65 m_intersectedInputEdges.Clear();
66 m_extractedPolygons.Clear();
67 m_mergedPolygons.Clear();
68 m_sweepResult.Clear();
69 m_triangulationOutputs.Clear();
75 void ReleaseWorkingMemory()
77 m_allTagVolumes.ReleaseWorkingMemoryBuffer();
78 m_tagVolumeImpactingCurrentFloor.ReleaseWorkingMemoryBuffer();
79 m_tagVolumeToNavTagIndex.ReleaseWorkingMemoryBuffer();
80 m_rawInputEdges.ReleaseWorkingMemoryBuffer();
81 m_edgesToTreat.ReleaseWorkingMemoryBuffer();
82 m_rightMostPoints.ReleaseWorkingMemoryBuffer();
83 m_extractedPolygonWinding.ReleaseWorkingMemoryBuffer();
84 m_holeTable.ReleaseWorkingMemoryBuffer();
85 m_treatedEdges.ReleaseWorkingMemoryBuffer();
86 m_successorCandidates.ReleaseWorkingMemoryBuffer();
91 PixelPos m_cellOriginPixel;
100 const SweepLineOutputEdgePiece* m_currentPreviousEdge;
101 bool m_polygonBuildAlreadyInProcess;
107 KyUInt16 m_currentVertexCountInPolygon;
108 KyUInt16 m_firstValidVertexIdxInPolygon;
110 WorkingMemArray<TagVolume*> m_allTagVolumes;
112 WorkingMemArray<TagVolume*> m_tagVolumeImpactingCurrentFloor;
113 WorkingMemArray<KyUInt32> m_tagVolumeToNavTagIndex;
114 WorkingMemArray<InputEdge> m_rawInputEdges;
116 WorkingMemArray<const SweepLineOutputEdgePiece*> m_edgesToTreat;
118 KyArray<InputEdgePiece> m_intersectedInputEdges;
123 KyArray<DynamicNavTag> m_navTags;
124 KyArrayPOD<KyUInt32> m_navTagIdxOfConnex;
125 SweepLineOutput m_sweepResult;
126 KyArray<KyArray<MergedPolygonWithHoles> > m_mergedPolygons;
127 KyArray<TriangulatorOutput> m_triangulationOutputs;
129 KyArrayDH<EarClippingTriangulator::PolygonVertex> m_polygonVertices;
130 EarClippingTriangulatorInputPolygonWithHoles m_earPolygon;
131 DynamicTriangulation m_dynamicEarTriangulation;
132 DynamicNavFloor m_dynaFloor;
136 KyArray<MergedPolygon> m_extractedPolygons;
138 WorkingMemArray<Vec2i> m_rightMostPoints;
139 WorkingMemArray<PolygonWinding> m_extractedPolygonWinding;
140 WorkingMemArray<KyUInt32> m_holeTable;
141 WorkingMemBitField m_treatedEdges;
142 WorkingMemArray<KyUInt32> m_successorCandidates;
151 #endif //Navigation_DynamicNavMeshContext_H
KyUInt32 NavFloorIdx
An index that uniquely identifies a single NavFloor within the set of NavFloors owned by a NavCell...
Definition: navmeshtypes.h:115
Definition: gamekitcrowddispersion.h:20
#define KY_DEFINE_NEW_DELETE_OPERATORS(MemStat)
This macro defines new and delete operators.
Definition: memory.h:137
unsigned short KyUInt16
Type used internally to represent an unsigned 16-bit integer.
Definition: types.h:40