summaryrefslogtreecommitdiff
path: root/indra/newview/llpathfindingnavmesh.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llpathfindingnavmesh.cpp')
-rw-r--r--indra/newview/llpathfindingnavmesh.cpp22
1 files changed, 19 insertions, 3 deletions
diff --git a/indra/newview/llpathfindingnavmesh.cpp b/indra/newview/llpathfindingnavmesh.cpp
index 81fa7b24db..138295a8cf 100644
--- a/indra/newview/llpathfindingnavmesh.cpp
+++ b/indra/newview/llpathfindingnavmesh.cpp
@@ -56,12 +56,28 @@ LLPathfindingNavMesh::navmesh_slot_t LLPathfindingNavMesh::registerNavMeshListen
bool LLPathfindingNavMesh::hasNavMeshVersion(U32 pNavMeshVersion) const
{
- return (((mNavMeshRequestStatus == kNavMeshRequestStarted) || (mNavMeshRequestStatus == kNavMeshRequestCompleted)) && (mNavMeshVersion == pNavMeshVersion));
+ return ((mNavMeshVersion == pNavMeshVersion) &&
+ ((mNavMeshRequestStatus == kNavMeshRequestStarted) || (mNavMeshRequestStatus == kNavMeshRequestCompleted) ||
+ ((mNavMeshRequestStatus == kNavMeshRequestChecking) && !mNavMeshData.empty())));
}
-void LLPathfindingNavMesh::handleRefresh()
+void LLPathfindingNavMesh::handleRefresh(U32 pNavMeshVersion)
{
- mNavMeshSignal(mNavMeshRequestStatus, mRegionUUID, mNavMeshVersion, mNavMeshData);
+ llassert(pNavMeshVersion == mNavMeshVersion);
+ if (mNavMeshRequestStatus == kNavMeshRequestChecking)
+ {
+ llassert(!mNavMeshData.empty());
+ setRequestStatus(kNavMeshRequestCompleted);
+ }
+ else
+ {
+ mNavMeshSignal(mNavMeshRequestStatus, mRegionUUID, mNavMeshVersion, mNavMeshData);
+ }
+}
+
+void LLPathfindingNavMesh::handleNavMeshCheckVersion()
+{
+ setRequestStatus(kNavMeshRequestChecking);
}
void LLPathfindingNavMesh::handleNavMeshNewVersion(U32 pNavMeshVersion)