24 class NavGraphManager;
28 class DynamicNavMeshQuery;
30 class StaticToDynamicHalfEdge;
32 typedef Collection<NavGraphVertexRawPtr, MemStat_NavData> NavGraphVertexCollection;
33 typedef Collection<Ptr<TagVolume>, MemStat_NavData> TagVolumeCollection;
48 SmallPtrTrackedCollection<NavCell> m_navCellVersions;
49 Pool<NavGraphVertexCollection>::Key m_navGraphVertexCollectionKey;
50 Pool<TagVolumeCollection>::Key m_integratedTagVolumeCollectionKey;
51 bool m_navCellActivenessChanged;
52 bool m_onlyActiveFloorVersionChange;
70 void EnlargeGrid(
const CellBox& cellBox);
78 void UpdateStitchOneToOneAndLaunchRuntimeStitchQueries(
const CellBox& cellBox, QueryProcessMode queryProcessMode);
79 void UnStitch1To1EdgesInNavCellToRemoveOrInactivate(
const CellBox& cellBox);
80 void StitchAllNew1To1EdgesInNavCellToActivateAndTagPotentialRunTimeStitchNeed(
const CellBox& cellBox);
81 void LaunchAllRunTimeStitchQuery(
const CellBox& cellBox, QueryProcessMode queryProcessMode);
83 void ComputeCellNextActivenessStatusAndLaunchDynamicNavMeshQueries(
const CellBox& cellBox, QueryProcessMode queryProcessMode);
85 void UpdateAndStitchActiveData(
const CellBox& cellBox);
90 void UpdateWithDynamicNavFloors(
KyArray<Ptr<DynamicNavMeshQuery> >& queries,
const CellBox& enlargeUpdateCellBox);
92 TagVolumeCollection* GetTagVolumeCollection(
NavCellPosInfo& navCellPosInfo);
93 const TagVolumeCollection* GetTagVolumeCollection(
const NavCellPosInfo& navCellPosInfo)
const;
94 TagVolumeCollection* CreateTagVolumeCollection(
NavCellPosInfo& navCellPosInfo);
96 void ProcessNavCellToRemoveOrInactivate(
const CellBox& cellBox);
97 void PostProcessRunTimeStitchQueries(
CellBox& enlargedCellBox);
99 void UpdateActiveNavFloorsInActiveData(
const CellBox& cellBox,
const CellBox& enlargedCellBox);
100 void StitchAllActiveNavFloors(
const CellBox& enlargedCellBox);
101 void RemoveAllFloorFromCorrespondingActiveCell(
NavCell* navCell);
103 void InsertNavCell(
NavCell* navCell);
104 void RemoveNavCell(
NavCell* navCell);
106 void ComputeCellNextActivenessStatus(
NavCellPosInfo& navCellPosInfo);
107 void LaunchDynamicNavMeshQueries(
NavCellPosInfo& navCellPosInfo, TagVolumeCollection* integratedTagVolumes, QueryProcessMode queryProcessMode);
108 void SelectGuidCompoundCompatibleVersions(
NavCellPosInfo& navCellPosInfo);
109 void SortCompatibleVersionsAndWhichNavCellToActivate(
NavCellPosInfo& navCellPosInfo);
111 void TryToConnectAllUnConnectedNavGraphVertexInCell(
NavCellPosInfo& navCellPosInfo);
112 void DeleteNavGraphVertexCollectionOfNavCellPosInfo(
NavCellPosInfo& navCellPosInfo);
114 void DeleteTagVolumeCollectionOfNavCellPosInfo(
NavCellPosInfo& navCellPosInfo);
116 void UpdateActiveDataWithNewNavfloors(
const CellBox& cellBox);
118 void BuildAndStoreDynamicFloorsAtCellPosBlob(
NavCell** navCells,
KyUInt32 navCellCount);
121 NavFloorStitcher m_floorStitcher;
125 MemoryHeap* m_memoryHeapForActiveNavFloorArray;
126 Pool<NavGraphVertexCollection> m_poolOfNavGraphVertexCollection;
127 Pool<TagVolumeCollection> m_poolOfTagVolumeCollection;
128 BitFieldMemStat<MemStat_NavData> m_stitchedCellIsDiscarded;
132 KY_INLINE
void NavCellGrid::DeleteNavGraphVertexCollectionOfNavCellPosInfo(
NavCellPosInfo& navCellPosInfo)
134 m_poolOfNavGraphVertexCollection.Delete(navCellPosInfo.m_navGraphVertexCollectionKey);
135 navCellPosInfo.m_navGraphVertexCollectionKey.Invalidate();
138 KY_INLINE TagVolumeCollection* NavCellGrid::GetTagVolumeCollection(NavCellPosInfo& navCellPosInfo)
140 return navCellPosInfo.m_integratedTagVolumeCollectionKey.IsValid() ? &m_poolOfTagVolumeCollection.Get(navCellPosInfo.m_integratedTagVolumeCollectionKey) :
nullptr;
143 KY_INLINE
const TagVolumeCollection*NavCellGrid:: GetTagVolumeCollection(
const NavCellPosInfo& navCellPosInfo)
const
145 return navCellPosInfo.m_integratedTagVolumeCollectionKey.IsValid() ? &m_poolOfTagVolumeCollection.Get(navCellPosInfo.m_integratedTagVolumeCollectionKey) :
nullptr;
General purpose array for movable objects that DOES NOT require construction/destruction.
Definition: kyarray.h:194
This class is a runtime wrapper of a NavMeshElementBlob.
Definition: navmeshelement.h:21
2d axis aligned box of 32bits integers. Very Important: CountX() returns m_max.x - m_min...
Definition: box2i.h:17
std::uint32_t KyUInt32
uint32_t
Definition: types.h:29
General purpose array for movable objects that require explicit construction/destruction.
Definition: kyarray.h:162
The BlobHandler class is a top-level mechanism for serializing blobs between objects in memory and fi...
Definition: blobhandler.h:40
#define KY_CLASS_WITHOUT_COPY(ClassName)
Define to forbid copy constructor and copy assignment.
Definition: types.h:196
This class is a runtime wrapper of a NavCellBlob.
Definition: navcell.h:27
#define KY_DEFINE_NEW_DELETE_OPERATORS(MemStat)
This macro defines new and delete operators.
Definition: memory.h:132
This object gather all the data located at a CellPos in the CellPos-bases grid of the NavCellGrid obj...
Definition: navcellgrid.h:38
This class is a runtime container for all NavData that represents the world from the point of view of...
Definition: database.h:57
2d vector using KyInt32
Definition: vec2i.h:18
The Autodesk Navigation namespace.
Definition: gamekitcrowddispersion.cpp:17
Each instance of this class uniquely identifies a single NavGraphVertex in a NavGraph.
Definition: navgraphvertexrawptr.h:27
This class is an internal class used to manage all the NavCell in a grid.
Definition: navcellgrid.h:60