diff --git a/src/game/shared/ai_utility_shared.cpp b/src/game/shared/ai_utility_shared.cpp index 43f0ba90..25d94819 100644 --- a/src/game/shared/ai_utility_shared.cpp +++ b/src/game/shared/ai_utility_shared.cpp @@ -192,7 +192,7 @@ void CAI_Utility::DrawNavMeshBVTree( return; // NavMesh for hull not loaded. OverlayBox_t::Transforms vTransforms; - for (int i = iBVTreeIndex, nt = pMesh->getTileCount(); i < nt; ++i) + for (int i = iBVTreeIndex, nt = pMesh->getMaxTiles(); i < nt; ++i) { if (nTileRange > 0 && i > nTileRange) break; @@ -255,7 +255,7 @@ void CAI_Utility::DrawNavMeshPortals(const dtNavMesh* pMesh, if (!pMesh) return; // NavMesh for hull not loaded. - for (int i = iPortalIndex, nt = pMesh->getTileCount(); i < nt; ++i) + for (int i = iPortalIndex, nt = pMesh->getMaxTiles(); i < nt; ++i) { if (nTileRange > 0 && i > nTileRange) break; @@ -375,7 +375,7 @@ void CAI_Utility::DrawNavMeshPolys(const dtNavMesh* pMesh, if (!pMesh) return; // NavMesh for hull not loaded. - for (int i = iPolyIndex; i < pMesh->getTileCount(); ++i) + for (int i = iPolyIndex; i < pMesh->getMaxTiles(); ++i) { if (nTileRange > 0 && i > nTileRange) break; @@ -464,7 +464,7 @@ void CAI_Utility::DrawNavMeshPolyBoundaries(const dtNavMesh* pMesh, const bool bDrawInner = navmesh_draw_poly_bounds_inner.GetBool(); - for (int i = iBoundaryIndex, nt = pMesh->getTileCount(); i < nt; ++i) + for (int i = iBoundaryIndex, nt = pMesh->getMaxTiles(); i < nt; ++i) { if (nTileRange > 0 && i > nTileRange) break; diff --git a/src/naveditor/Editor.cpp b/src/naveditor/Editor.cpp index 60d5fcf9..9b304dc9 100644 --- a/src/naveditor/Editor.cpp +++ b/src/naveditor/Editor.cpp @@ -844,7 +844,7 @@ void Editor::buildStaticPathingData() void Editor::connectOffMeshLinks() { - for (int i = 0; i < m_navMesh->getTileCount(); i++) + for (int i = 0; i < m_navMesh->getMaxTiles(); i++) { dtMeshTile* target = m_navMesh->getTile(i); const dtMeshHeader* header = target->header; diff --git a/src/naveditor/Editor_TileMesh.cpp b/src/naveditor/Editor_TileMesh.cpp index aff90077..6aba6539 100644 --- a/src/naveditor/Editor_TileMesh.cpp +++ b/src/naveditor/Editor_TileMesh.cpp @@ -706,20 +706,20 @@ void Editor_TileMesh::buildTile(const float* pos) { // If there are external off-mesh links landing on // this tile, connect them. - for (int i = 0; i < m_navMesh->getTileCount(); i++) + for (int i = 0; i < m_navMesh->getMaxTiles(); i++) { dtMeshTile* target = m_navMesh->getTile(i); + const dtMeshHeader* targetHeader = target->header; + + if (!targetHeader) + continue; + const dtTileRef targetRef = m_navMesh->getTileRef(target); // Connection to self has already been done above. if (targetRef == tileRef) continue; - const dtMeshHeader* targetHeader = target->header; - - if (!targetHeader) - continue; - for (int j = 0; j < targetHeader->offMeshConCount; j++) { const dtOffMeshConnection* con = &target->offMeshCons[j]; diff --git a/src/naveditor/NavMeshPruneTool.cpp b/src/naveditor/NavMeshPruneTool.cpp index e15c2f01..5cf4c799 100644 --- a/src/naveditor/NavMeshPruneTool.cpp +++ b/src/naveditor/NavMeshPruneTool.cpp @@ -159,7 +159,7 @@ static void floodNavmesh(dtNavMesh* nav, NavmeshFlags* flags, dtPolyRef start, u static void disableUnvisitedPolys(dtNavMesh* nav, NavmeshFlags* flags) { - for (int i = 0; i < nav->getTileCount(); ++i) + for (int i = 0; i < nav->getMaxTiles(); ++i) { const dtMeshTile* tile = nav->getTile(i); dtMeshHeader* header = tile->header; @@ -197,7 +197,7 @@ static void disableUnvisitedPolys(dtNavMesh* nav, NavmeshFlags* flags) static void removeUnlinkedTiles(dtNavMesh* nav) { - for (int i = nav->getTileCount(); i-- > 0;) + for (int i = nav->getMaxTiles(); i-- > 0;) { const dtMeshTile* tile = nav->getTile(i); const dtMeshHeader* header = tile->header; diff --git a/src/thirdparty/recast/DebugUtils/Source/DetourDump.cpp b/src/thirdparty/recast/DebugUtils/Source/DetourDump.cpp index 56ba6ed1..1dee388d 100644 --- a/src/thirdparty/recast/DebugUtils/Source/DetourDump.cpp +++ b/src/thirdparty/recast/DebugUtils/Source/DetourDump.cpp @@ -25,13 +25,16 @@ bool duDumpTraverseLinkDetail(const dtNavMesh& mesh, const dtNavMeshQuery* query rdTempVector elevationVec; int totTraverseLinkCount = 0; - const int tileCount = mesh.getTileCount(); + const int tileCount = mesh.getMaxTiles(); for (int i = 0; i < tileCount; i++) { const dtMeshTile* tile = mesh.getTile(i); const dtMeshHeader* header = tile->header; + if (!header) + continue; + bool writeTileDetail = false; for (int j = 0; j < header->polyCount; ++j)