25 class DynamicNavMeshContext
30 DynamicNavMeshContext()
31 : m_currentNavFloorIdxInProcess(0)
32 , m_polygonVertices(Memory::GetGlobalHeap())
33 , m_dynamicEarTriangulation(Memory::GetGlobalHeap())
34 , m_dynaFloor(Memory::GetGlobalHeap())
36 ~DynamicNavMeshContext() { ReleaseWorkingMemory(); }
38 bool InitForQuery(WorkingMemory* workingMemory)
40 m_rawInputEdges.Init(workingMemory);
41 m_allTagVolumes.Init(workingMemory);
42 m_tagVolumeImpactingCurrentFloor.Init(workingMemory);
43 m_tagVolumeToNavTagIndex.Init(workingMemory);
45 if (m_rawInputEdges.IsInitialized() ==
false ||
46 m_allTagVolumes.IsInitialized() ==
false ||
47 m_tagVolumeImpactingCurrentFloor.IsInitialized() ==
false ||
48 m_tagVolumeToNavTagIndex.IsInitialized() ==
false)
51 m_currentNavFloorIdxInProcess = 0;
55 bool InitForNewFloorInQuery(WorkingMemory* )
57 m_tagVolumeImpactingCurrentFloor.MakeEmpty();
58 m_tagVolumeToNavTagIndex.MakeEmpty();
59 m_rawInputEdges.MakeEmpty();
62 m_navTagIdxOfConnex.Clear();
63 m_intersectedInputEdges.Clear();
64 m_extractedPolygons.Clear();
65 m_mergedPolygons.Clear();
66 m_sweepResult.Clear();
67 m_triangulationOutputs.Clear();
73 void ReleaseWorkingMemory()
75 m_allTagVolumes.ReleaseWorkingMemoryBuffer();
76 m_tagVolumeImpactingCurrentFloor.ReleaseWorkingMemoryBuffer();
77 m_tagVolumeToNavTagIndex.ReleaseWorkingMemoryBuffer();
78 m_rawInputEdges.ReleaseWorkingMemoryBuffer();
79 m_edgesToTreat.ReleaseWorkingMemoryBuffer();
80 m_rightMostPoints.ReleaseWorkingMemoryBuffer();
81 m_extractedPolygonWinding.ReleaseWorkingMemoryBuffer();
82 m_holeTable.ReleaseWorkingMemoryBuffer();
83 m_treatedEdges.ReleaseWorkingMemoryBuffer();
84 m_successorCandidates.ReleaseWorkingMemoryBuffer();
89 PixelPos m_cellOriginPixel;
98 const SweepLineOutputEdgePiece* m_currentPreviousEdge;
99 bool m_polygonBuildAlreadyInProcess;
105 KyUInt16 m_currentVertexCountInPolygon;
106 KyUInt16 m_firstValidVertexIdxInPolygon;
108 WorkingMemArray<TagVolume*> m_allTagVolumes;
110 WorkingMemArray<TagVolume*> m_tagVolumeImpactingCurrentFloor;
111 WorkingMemArray<KyUInt32> m_tagVolumeToNavTagIndex;
112 WorkingMemArray<InputEdge> m_rawInputEdges;
114 WorkingMemArray<const SweepLineOutputEdgePiece*> m_edgesToTreat;
116 KyArray<InputEdgePiece> m_intersectedInputEdges;
121 KyArray<DynamicNavTag> m_navTags;
122 KyArrayPOD<KyUInt32> m_navTagIdxOfConnex;
123 SweepLineOutput m_sweepResult;
124 KyArray<KyArray<MergedPolygonWithHoles> > m_mergedPolygons;
125 KyArray<TriangulatorOutput> m_triangulationOutputs;
127 KyArrayDH<EarClippingTriangulator::PolygonVertex> m_polygonVertices;
128 EarClippingTriangulatorInputPolygonWithHoles m_earPolygon;
129 DynamicTriangulation m_dynamicEarTriangulation;
130 DynamicNavFloor m_dynaFloor;
134 KyArray<MergedPolygon> m_extractedPolygons;
136 WorkingMemArray<Vec2i> m_rightMostPoints;
137 WorkingMemArray<PolygonWinding> m_extractedPolygonWinding;
138 WorkingMemArray<KyUInt32> m_holeTable;
139 WorkingMemBitField m_treatedEdges;
140 WorkingMemArray<KyUInt32> m_successorCandidates;
#define KY_DEFINE_NEW_DELETE_OPERATORS(MemStat)
This macro defines new and delete operators.
Definition: memory.h:132
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