PATH-304: Adding an extra state for the pathfinding console to report that the status of the navmesh is being checked.
parent
b3197fc12e
commit
c990cc71ce
|
|
@ -618,6 +618,9 @@ void LLFloaterPathfindingConsole::onNavMeshZoneCB(LLPathfindingNavMeshZone::ENav
|
|||
case LLPathfindingNavMeshZone::kNavMeshZoneRequestUnknown :
|
||||
setConsoleState(kConsoleStateUnknown);
|
||||
break;
|
||||
case LLPathfindingNavMeshZone::kNavMeshZoneRequestChecking :
|
||||
setConsoleState(kConsoleStateCheckingVersion);
|
||||
break;
|
||||
case LLPathfindingNavMeshZone::kNavMeshZoneRequestNeedsUpdate :
|
||||
mIsNavMeshUpdating = true;
|
||||
mNavMeshZone.refresh();
|
||||
|
|
@ -677,6 +680,7 @@ void LLFloaterPathfindingConsole::updateControlsOnConsoleState()
|
|||
mHasStartPoint = false;
|
||||
mHasEndPoint = false;
|
||||
break;
|
||||
case kConsoleStateCheckingVersion :
|
||||
case kConsoleStateDownloading :
|
||||
case kConsoleStateError :
|
||||
mShowNavMeshCheckBox->setEnabled(FALSE);
|
||||
|
|
@ -736,6 +740,9 @@ void LLFloaterPathfindingConsole::updateStatusOnConsoleState()
|
|||
statusText = getString("navmesh_status_region_not_enabled");
|
||||
styleParams.color = warningColor;
|
||||
break;
|
||||
case kConsoleStateCheckingVersion :
|
||||
statusText = getString("navmesh_status_checking_version");
|
||||
break;
|
||||
case kConsoleStateDownloading :
|
||||
if (mIsNavMeshUpdating)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -120,6 +120,7 @@ private:
|
|||
kConsoleStateUnknown,
|
||||
kConsoleStateLibraryNotImplemented,
|
||||
kConsoleStateRegionNotEnabled,
|
||||
kConsoleStateCheckingVersion,
|
||||
kConsoleStateDownloading,
|
||||
kConsoleStateHasNavMesh,
|
||||
kConsoleStateError
|
||||
|
|
|
|||
|
|
@ -274,11 +274,13 @@ void LLPathfindingManager::requestGetNavMeshForRegion(LLViewerRegion *pRegion)
|
|||
}
|
||||
else
|
||||
{
|
||||
navMeshPtr->handleNavMeshCheckVersion();
|
||||
LLHTTPClient::ResponderPtr navMeshStatusResponder = new NavMeshStatusResponder(navMeshStatusURL, pRegion);
|
||||
LLHTTPClient::get(navMeshStatusURL, navMeshStatusResponder);
|
||||
}
|
||||
#else // DEPRECATED_UNVERSIONED_NAVMESH
|
||||
llassert(!navMeshStatusURL.empty());
|
||||
navMeshPtr->handleNavMeshCheckVersion();
|
||||
LLHTTPClient::ResponderPtr navMeshStatusResponder = new NavMeshStatusResponder(navMeshStatusURL, pRegion);
|
||||
LLHTTPClient::get(navMeshStatusURL, navMeshStatusResponder);
|
||||
#endif // DEPRECATED_UNVERSIONED_NAVMESH
|
||||
|
|
@ -297,7 +299,7 @@ void LLPathfindingManager::handleNavMeshStatusRequest(const LLPathfindingNavMesh
|
|||
{
|
||||
if (navMeshPtr->hasNavMeshVersion(pNavMeshStatus.getVersion()))
|
||||
{
|
||||
navMeshPtr->handleRefresh();
|
||||
navMeshPtr->handleRefresh(pNavMeshStatus.getVersion());
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -50,6 +50,7 @@ class LLPathfindingNavMesh
|
|||
public:
|
||||
typedef enum {
|
||||
kNavMeshRequestUnknown,
|
||||
kNavMeshRequestChecking,
|
||||
kNavMeshRequestNeedsUpdate,
|
||||
kNavMeshRequestStarted,
|
||||
kNavMeshRequestCompleted,
|
||||
|
|
@ -72,7 +73,8 @@ public:
|
|||
|
||||
bool hasNavMeshVersion(U32 pNavMeshVersion) const;
|
||||
|
||||
void handleRefresh();
|
||||
void handleNavMeshCheckVersion();
|
||||
void handleRefresh(U32 pNavMeshVersion);
|
||||
void handleNavMeshNewVersion(U32 pNavMeshVersion);
|
||||
void handleNavMeshStart(U32 pNavMeshVersion);
|
||||
void handleNavMeshResult(const LLSD &pContent, U32 pNavMeshVersion);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
@ -189,6 +193,13 @@ void LLPathfindingNavMeshZone::updateStatus()
|
|||
zoneRequestStatus = kNavMeshZoneRequestNeedsUpdate;
|
||||
#ifdef XXX_STINSON_DEBUG_NAVMESH_ZONE
|
||||
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)
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@ class LLPathfindingNavMeshZone
|
|||
public:
|
||||
typedef enum {
|
||||
kNavMeshZoneRequestUnknown,
|
||||
kNavMeshZoneRequestChecking,
|
||||
kNavMeshZoneRequestNeedsUpdate,
|
||||
kNavMeshZoneRequestStarted,
|
||||
kNavMeshZoneRequestCompleted,
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@
|
|||
<floater.string name="navmesh_status_unknown"></floater.string>
|
||||
<floater.string name="navmesh_status_library_not_implemented">Cannot find pathing library implementation.</floater.string>
|
||||
<floater.string name="navmesh_status_region_not_enabled">This region is not enabled for pathfinding.</floater.string>
|
||||
<floater.string name="navmesh_status_checking_version">Checking the status of the navmesh ...</floater.string>
|
||||
<floater.string name="navmesh_status_downloading">Downloading the navmesh ...</floater.string>
|
||||
<floater.string name="navmesh_status_updating">The navmesh has changed on the server. Downloading the latest navmesh ...</floater.string>
|
||||
<floater.string name="navmesh_status_has_navmesh">Navmesh received.</floater.string>
|
||||
|
|
|
|||
Loading…
Reference in New Issue