summaryrefslogtreecommitdiff
path: root/indra/newview/llpathfindingnavmeshzone.cpp
diff options
context:
space:
mode:
authorprep <none@none>2012-03-13 16:55:25 -0400
committerprep <none@none>2012-03-13 16:55:25 -0400
commit1c812c3c6734197835fd8cfaef286f1ad444ec64 (patch)
tree7c4dabb6b86ce523c3ffaadec237ff7e29194d46 /indra/newview/llpathfindingnavmeshzone.cpp
parentfab57eea612f34ed9d8c8559674ead1760aab42b (diff)
parenta8d5d6f45e34ff965fd9adc1d9824eb2840171a3 (diff)
merge
Diffstat (limited to 'indra/newview/llpathfindingnavmeshzone.cpp')
-rw-r--r--indra/newview/llpathfindingnavmeshzone.cpp22
1 files changed, 19 insertions, 3 deletions
diff --git a/indra/newview/llpathfindingnavmeshzone.cpp b/indra/newview/llpathfindingnavmeshzone.cpp
index 3767834655..8e558c3b00 100644
--- a/indra/newview/llpathfindingnavmeshzone.cpp
+++ b/indra/newview/llpathfindingnavmeshzone.cpp
@@ -140,6 +140,7 @@ void LLPathfindingNavMeshZone::handleNavMeshLocation()
void LLPathfindingNavMeshZone::updateStatus()
{
bool hasRequestUnknown = false;
+ bool hasRequestChecking = false;
bool hasRequestNeedsUpdate = false;
bool hasRequestStarted = false;
bool hasRequestCompleted = false;
@@ -161,6 +162,9 @@ void LLPathfindingNavMeshZone::updateStatus()
case LLPathfindingNavMesh::kNavMeshRequestUnknown :
hasRequestUnknown = true;
break;
+ case LLPathfindingNavMesh::kNavMeshRequestChecking :
+ hasRequestChecking = true;
+ break;
case LLPathfindingNavMesh::kNavMeshRequestNeedsUpdate :
hasRequestNeedsUpdate = true;
break;
@@ -191,6 +195,13 @@ void LLPathfindingNavMeshZone::updateStatus()
llinfos << "STINSON DEBUG: Navmesh zone update is NEEDS UPDATE" << llendl;
#endif // XXX_STINSON_DEBUG_NAVMESH_ZONE
}
+ else if (hasRequestChecking)
+ {
+ zoneRequestStatus = kNavMeshZoneRequestChecking;
+#ifdef XXX_STINSON_DEBUG_NAVMESH_ZONE
+ llinfos << "STINSON DEBUG: Navmesh zone update is CHECKING" << llendl;
+#endif // XXX_STINSON_DEBUG_NAVMESH_ZONE
+ }
else if (hasRequestStarted)
{
zoneRequestStatus = kNavMeshZoneRequestStarted;
@@ -311,10 +322,15 @@ LLPathfindingNavMesh::ENavMeshRequestStatus LLPathfindingNavMeshZone::NavMeshLoc
void LLPathfindingNavMeshZone::NavMeshLocation::handleNavMesh(LLPathfindingNavMesh::ENavMeshRequestStatus pNavMeshRequestStatus, const LLUUID &pRegionUUID, U32 pNavMeshVersion, const LLSD::Binary &pNavMeshData)
{
llassert(mRegionUUID == pRegionUUID);
- mRequestStatus = pNavMeshRequestStatus;
- if ((pNavMeshRequestStatus == LLPathfindingNavMesh::kNavMeshRequestCompleted) && (!mHasNavMesh || (mNavMeshVersion != pNavMeshVersion)))
+ if (pNavMeshRequestStatus != LLPathfindingNavMesh::kNavMeshRequestCompleted)
+ {
+ mRequestStatus = pNavMeshRequestStatus;
+ mLocationCallback();
+ }
+ else if (!mHasNavMesh || (mNavMeshVersion != pNavMeshVersion))
{
llassert(!pNavMeshData.empty());
+ mRequestStatus = pNavMeshRequestStatus;
mHasNavMesh = true;
mNavMeshVersion = pNavMeshVersion;
llassert(LLPathingLib::getInstance() != NULL);
@@ -322,8 +338,8 @@ void LLPathfindingNavMeshZone::NavMeshLocation::handleNavMesh(LLPathfindingNavMe
{
LLPathingLib::getInstance()->extractNavMeshSrcFromLLSD(pNavMeshData, mDirection);
}
+ mLocationCallback();
}
- mLocationCallback();
}
void LLPathfindingNavMeshZone::NavMeshLocation::clear()