PATH-302: Adding in status reporting for the simulator navmesh status. Separating the viewer status messaging from the simulator status.
parent
e1aac37181
commit
d4fb7c99fe
|
|
@ -129,8 +129,11 @@ BOOL LLFloaterPathfindingConsole::postBuild()
|
|||
llassert(mFreezeButton != NULL);
|
||||
mFreezeButton->setCommitCallback(boost::bind(&LLFloaterPathfindingConsole::onFreezeClicked, this));
|
||||
|
||||
mPathfindingStatus = findChild<LLTextBase>("pathfinding_status");
|
||||
llassert(mPathfindingStatus != NULL);
|
||||
mPathfindingViewerStatus = findChild<LLTextBase>("pathfinding_viewer_status");
|
||||
llassert(mPathfindingViewerStatus != NULL);
|
||||
|
||||
mPathfindingSimulatorStatus = findChild<LLTextBase>("pathfinding_simulator_status");
|
||||
llassert(mPathfindingSimulatorStatus != NULL);
|
||||
|
||||
mCharacterWidthSlider = findChild<LLSliderCtrl>("character_width");
|
||||
llassert(mCharacterWidthSlider != NULL);
|
||||
|
|
@ -469,7 +472,8 @@ LLFloaterPathfindingConsole::LLFloaterPathfindingConsole(const LLSD& pSeed)
|
|||
mShowMaterialVolumesCheckBox(NULL),
|
||||
mShowExclusionVolumesCheckBox(NULL),
|
||||
mShowWorldCheckBox(NULL),
|
||||
mPathfindingStatus(NULL),
|
||||
mPathfindingViewerStatus(NULL),
|
||||
mPathfindingSimulatorStatus(NULL),
|
||||
mViewCharactersButton(NULL),
|
||||
mEditTestTabContainer(NULL),
|
||||
mEditTab(NULL),
|
||||
|
|
@ -731,50 +735,126 @@ void LLFloaterPathfindingConsole::updateStatusOnConsoleState()
|
|||
{
|
||||
static const LLColor4 warningColor = LLUIColorTable::instance().getColor("DrYellow");
|
||||
|
||||
std::string statusText("");
|
||||
LLStyle::Params styleParams;
|
||||
std::string simulatorStatusText("");
|
||||
std::string viewerStatusText("");
|
||||
LLStyle::Params viewerStyleParams;
|
||||
|
||||
switch (mConsoleState)
|
||||
{
|
||||
case kConsoleStateUnknown :
|
||||
statusText = getString("navmesh_status_unknown");
|
||||
simulatorStatusText = getString("navmesh_simulator_status_unknown");
|
||||
viewerStatusText = getString("navmesh_viewer_status_unknown");
|
||||
break;
|
||||
case kConsoleStateLibraryNotImplemented :
|
||||
statusText = getString("navmesh_status_library_not_implemented");
|
||||
styleParams.color = warningColor;
|
||||
simulatorStatusText = getString("navmesh_simulator_status_unknown");
|
||||
viewerStatusText = getString("navmesh_viewer_status_library_not_implemented");
|
||||
viewerStyleParams.color = warningColor;
|
||||
break;
|
||||
case kConsoleStateRegionNotEnabled :
|
||||
statusText = getString("navmesh_status_region_not_enabled");
|
||||
styleParams.color = warningColor;
|
||||
simulatorStatusText = getString("navmesh_simulator_status_unknown");
|
||||
viewerStatusText = getString("navmesh_viewer_status_region_not_enabled");
|
||||
viewerStyleParams.color = warningColor;
|
||||
break;
|
||||
case kConsoleStateCheckingVersion :
|
||||
statusText = getString("navmesh_status_checking_version");
|
||||
simulatorStatusText = getString("navmesh_simulator_status_unknown");
|
||||
viewerStatusText = getString("navmesh_viewer_status_checking_version");
|
||||
break;
|
||||
case kConsoleStateDownloading :
|
||||
simulatorStatusText = getSimulatorStatusText();
|
||||
if (mIsNavMeshUpdating)
|
||||
{
|
||||
statusText = getString("navmesh_status_updating");
|
||||
viewerStatusText = getString("navmesh_viewer_status_updating");
|
||||
}
|
||||
else
|
||||
{
|
||||
statusText = getString("navmesh_status_downloading");
|
||||
viewerStatusText = getString("navmesh_viewer_status_downloading");
|
||||
}
|
||||
break;
|
||||
case kConsoleStateHasNavMesh :
|
||||
statusText = getString("navmesh_status_has_navmesh");
|
||||
simulatorStatusText = getSimulatorStatusText();
|
||||
viewerStatusText = getString("navmesh_viewer_status_has_navmesh");
|
||||
break;
|
||||
case kConsoleStateError :
|
||||
statusText = getString("navmesh_status_error");
|
||||
styleParams.color = warningColor;
|
||||
simulatorStatusText = getString("navmesh_simulator_status_unknown");
|
||||
viewerStatusText = getString("navmesh_viewer_status_error");
|
||||
viewerStyleParams.color = warningColor;
|
||||
break;
|
||||
default :
|
||||
statusText = getString("navmesh_status_unknown");
|
||||
simulatorStatusText = getString("navmesh_simulator_status_unknown");
|
||||
viewerStatusText = getString("navmesh_viewer_status_unknown");
|
||||
llassert(0);
|
||||
break;
|
||||
}
|
||||
|
||||
mPathfindingStatus->setText((LLStringExplicit)statusText, styleParams);
|
||||
mPathfindingViewerStatus->setText((LLStringExplicit)viewerStatusText, viewerStyleParams);
|
||||
mPathfindingSimulatorStatus->setText((LLStringExplicit)simulatorStatusText);
|
||||
}
|
||||
|
||||
std::string LLFloaterPathfindingConsole::getSimulatorStatusText() const
|
||||
{
|
||||
std::string simulatorStatusText("");
|
||||
|
||||
#ifdef DEPRECATED_UNVERSIONED_NAVMESH
|
||||
if (LLPathfindingManager::getInstance()->isPathfindingNavMeshVersioningEnabledForCurrentRegionXXX())
|
||||
{
|
||||
switch (mNavMeshZone.getNavMeshZoneStatus())
|
||||
{
|
||||
case LLPathfindingNavMeshZone::kNavMeshZonePending :
|
||||
simulatorStatusText = getString("navmesh_simulator_status_pending");
|
||||
break;
|
||||
case LLPathfindingNavMeshZone::kNavMeshZoneBuilding :
|
||||
simulatorStatusText = getString("navmesh_simulator_status_building");
|
||||
break;
|
||||
case LLPathfindingNavMeshZone::kNavMeshZoneSomePending :
|
||||
simulatorStatusText = getString("navmesh_simulator_status_some_pending");
|
||||
break;
|
||||
case LLPathfindingNavMeshZone::kNavMeshZoneSomeBuilding :
|
||||
simulatorStatusText = getString("navmesh_simulator_status_some_building");
|
||||
break;
|
||||
case LLPathfindingNavMeshZone::kNavMeshZonePendingAndBuilding :
|
||||
simulatorStatusText = getString("navmesh_simulator_status_pending_and_building");
|
||||
break;
|
||||
case LLPathfindingNavMeshZone::kNavMeshZoneComplete :
|
||||
simulatorStatusText = getString("navmesh_simulator_status_complete");
|
||||
break;
|
||||
default :
|
||||
simulatorStatusText = getString("navmesh_simulator_status_unknown");
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
simulatorStatusText = getString("navmesh_simulator_status_region_not_enabled");
|
||||
}
|
||||
#else // DEPRECATED_UNVERSIONED_NAVMESH
|
||||
switch (mNavMeshZone.getNavMeshZoneStatus())
|
||||
{
|
||||
case LLPathfindingNavMeshZone::kNavMeshZonePending :
|
||||
simulatorStatusText = getString("navmesh_simulator_status_pending");
|
||||
break;
|
||||
case LLPathfindingNavMeshZone::kNavMeshZoneBuilding :
|
||||
simulatorStatusText = getString("navmesh_simulator_status_building");
|
||||
break;
|
||||
case LLPathfindingNavMeshZone::kNavMeshZoneSomePending :
|
||||
simulatorStatusText = getString("navmesh_simulator_status_some_pending");
|
||||
break;
|
||||
case LLPathfindingNavMeshZone::kNavMeshZoneSomeBuilding :
|
||||
simulatorStatusText = getString("navmesh_simulator_status_some_building");
|
||||
break;
|
||||
case LLPathfindingNavMeshZone::kNavMeshZonePendingAndBuilding :
|
||||
simulatorStatusText = getString("navmesh_simulator_status_pending_and_building");
|
||||
break;
|
||||
case LLPathfindingNavMeshZone::kNavMeshZoneComplete :
|
||||
simulatorStatusText = getString("navmesh_simulator_status_complete");
|
||||
break;
|
||||
default :
|
||||
simulatorStatusText = getString("navmesh_simulator_status_unknown");
|
||||
break;
|
||||
}
|
||||
#endif // DEPRECATED_UNVERSIONED_NAVMESH
|
||||
|
||||
return simulatorStatusText;
|
||||
}
|
||||
|
||||
void LLFloaterPathfindingConsole::setAgentState(LLPathfindingManager::EAgentState pAgentState)
|
||||
{
|
||||
|
|
@ -894,5 +974,5 @@ void LLFloaterPathfindingConsole::regionCrossingOccured()
|
|||
LLStyle::Params styleParams;
|
||||
styleParams.color = LLUIColorTable::instance().getColor("DrYellow");
|
||||
statusText = getString("navmesh_update_needed");
|
||||
mPathfindingStatus->setText((LLStringExplicit)statusText, styleParams);
|
||||
mPathfindingViewerStatus->setText((LLStringExplicit)statusText, styleParams);
|
||||
}
|
||||
|
|
@ -147,8 +147,9 @@ private:
|
|||
|
||||
void setConsoleState(EConsoleState pConsoleState);
|
||||
|
||||
void updateControlsOnConsoleState();
|
||||
void updateStatusOnConsoleState();
|
||||
void updateControlsOnConsoleState();
|
||||
void updateStatusOnConsoleState();
|
||||
std::string getSimulatorStatusText() const;
|
||||
|
||||
void setAgentState(LLPathfindingManager::EAgentState pAgentState);
|
||||
|
||||
|
|
@ -165,7 +166,8 @@ private:
|
|||
LLCheckBoxCtrl *mShowMaterialVolumesCheckBox;
|
||||
LLCheckBoxCtrl *mShowExclusionVolumesCheckBox;
|
||||
LLCheckBoxCtrl *mShowWorldCheckBox;
|
||||
LLTextBase *mPathfindingStatus;
|
||||
LLTextBase *mPathfindingViewerStatus;
|
||||
LLTextBase *mPathfindingSimulatorStatus;
|
||||
LLButton *mViewCharactersButton;
|
||||
LLTabContainer *mEditTestTabContainer;
|
||||
LLPanel *mEditTab;
|
||||
|
|
|
|||
|
|
@ -41,7 +41,6 @@
|
|||
#include "llpathfindinglinkset.h"
|
||||
#include "llpathfindinglinksetlist.h"
|
||||
#include "llhttpnode.h"
|
||||
//#include "llpathfindingnavmeshzone.h" // XXX
|
||||
|
||||
#include <boost/function.hpp>
|
||||
#include <boost/signals2.hpp>
|
||||
|
|
@ -254,6 +253,14 @@ bool LLPathfindingManager::isPathfindingEnabledForRegion(LLViewerRegion *pRegion
|
|||
return !retrieveNavMeshURL.empty();
|
||||
}
|
||||
|
||||
#ifdef DEPRECATED_UNVERSIONED_NAVMESH
|
||||
bool LLPathfindingManager::isPathfindingNavMeshVersioningEnabledForCurrentRegionXXX() const
|
||||
{
|
||||
std::string navMeshStatusURL = getNavMeshStatusURLForRegion(getCurrentRegion());
|
||||
return !navMeshStatusURL.empty();
|
||||
}
|
||||
#endif // DEPRECATED_UNVERSIONED_NAVMESH
|
||||
|
||||
bool LLPathfindingManager::isAllowAlterPermanent()
|
||||
{
|
||||
return (!isPathfindingEnabledForCurrentRegion() || (getAgentState() == kAgentStateUnfrozen));
|
||||
|
|
@ -285,7 +292,9 @@ void LLPathfindingManager::requestGetNavMeshForRegion(LLViewerRegion *pRegion)
|
|||
#ifdef DEPRECATED_UNVERSIONED_NAVMESH
|
||||
if (navMeshStatusURL.empty())
|
||||
{
|
||||
sendRequestGetNavMeshForRegion(navMeshPtr, pRegion, navMeshPtr->getNavMeshVersion() + 1U);
|
||||
LLPathfindingNavMeshStatus navMeshStatus = navMeshPtr->getNavMeshStatusXXX();
|
||||
navMeshStatus.incrementNavMeshVersionXXX();
|
||||
sendRequestGetNavMeshForRegion(navMeshPtr, pRegion, navMeshStatus);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -312,13 +321,13 @@ void LLPathfindingManager::handleNavMeshStatusRequest(const LLPathfindingNavMesh
|
|||
}
|
||||
else
|
||||
{
|
||||
if (navMeshPtr->hasNavMeshVersion(pNavMeshStatus.getVersion()))
|
||||
if (navMeshPtr->hasNavMeshVersion(pNavMeshStatus))
|
||||
{
|
||||
navMeshPtr->handleRefresh(pNavMeshStatus.getVersion());
|
||||
navMeshPtr->handleRefresh(pNavMeshStatus);
|
||||
}
|
||||
else
|
||||
{
|
||||
sendRequestGetNavMeshForRegion(navMeshPtr, pRegion, pNavMeshStatus.getVersion());
|
||||
sendRequestGetNavMeshForRegion(navMeshPtr, pRegion, pNavMeshStatus);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -333,7 +342,7 @@ void LLPathfindingManager::handleNavMeshStatusUpdate(const LLPathfindingNavMeshS
|
|||
}
|
||||
else
|
||||
{
|
||||
navMeshPtr->handleNavMeshNewVersion(pNavMeshStatus.getVersion());
|
||||
navMeshPtr->handleNavMeshNewVersion(pNavMeshStatus);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -462,7 +471,7 @@ LLPathfindingManager::ELinksetsRequestStatus LLPathfindingManager::requestSetLin
|
|||
return status;
|
||||
}
|
||||
|
||||
void LLPathfindingManager::sendRequestGetNavMeshForRegion(LLPathfindingNavMeshPtr navMeshPtr, LLViewerRegion *pRegion, U32 pNavMeshVersion)
|
||||
void LLPathfindingManager::sendRequestGetNavMeshForRegion(LLPathfindingNavMeshPtr navMeshPtr, LLViewerRegion *pRegion, const LLPathfindingNavMeshStatus &pNavMeshStatus)
|
||||
{
|
||||
if ((pRegion == NULL) || !pRegion->isAlive())
|
||||
{
|
||||
|
|
@ -478,8 +487,8 @@ void LLPathfindingManager::sendRequestGetNavMeshForRegion(LLPathfindingNavMeshPt
|
|||
}
|
||||
else
|
||||
{
|
||||
navMeshPtr->handleNavMeshStart(pNavMeshVersion);
|
||||
LLHTTPClient::ResponderPtr responder = new NavMeshResponder(navMeshURL, pNavMeshVersion, navMeshPtr);
|
||||
navMeshPtr->handleNavMeshStart(pNavMeshStatus);
|
||||
LLHTTPClient::ResponderPtr responder = new NavMeshResponder(navMeshURL, pNavMeshStatus.getVersion(), navMeshPtr);
|
||||
|
||||
LLSD postData;
|
||||
LLHTTPClient::post(navMeshURL, postData, responder);
|
||||
|
|
|
|||
|
|
@ -77,6 +77,9 @@ public:
|
|||
|
||||
bool isPathfindingEnabledForCurrentRegion() const;
|
||||
bool isPathfindingEnabledForRegion(LLViewerRegion *pRegion) const;
|
||||
#ifdef DEPRECATED_UNVERSIONED_NAVMESH
|
||||
bool isPathfindingNavMeshVersioningEnabledForCurrentRegionXXX() const;
|
||||
#endif // DEPRECATED_UNVERSIONED_NAVMESH
|
||||
|
||||
bool isAllowAlterPermanent();
|
||||
bool isAllowViewTerrainProperties() const;
|
||||
|
|
@ -98,7 +101,7 @@ public:
|
|||
protected:
|
||||
|
||||
private:
|
||||
void sendRequestGetNavMeshForRegion(LLPathfindingNavMeshPtr navMeshPtr, LLViewerRegion *pRegion, U32 pNavMeshVersion);
|
||||
void sendRequestGetNavMeshForRegion(LLPathfindingNavMeshPtr navMeshPtr, LLViewerRegion *pRegion, const LLPathfindingNavMeshStatus &pNavMeshStatus);
|
||||
|
||||
LLPathfindingNavMeshPtr getNavMeshForRegion(const LLUUID &pRegionUUID);
|
||||
LLPathfindingNavMeshPtr getNavMeshForRegion(LLViewerRegion *pRegion);
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@
|
|||
#include "llviewerprecompiledheaders.h"
|
||||
#include "lluuid.h"
|
||||
#include "llpathfindingnavmesh.h"
|
||||
#include "llpathfindingnavmeshstatus.h"
|
||||
#include "llsdserialize.h"
|
||||
|
||||
#include <string>
|
||||
|
|
@ -40,11 +41,11 @@
|
|||
//---------------------------------------------------------------------------
|
||||
|
||||
LLPathfindingNavMesh::LLPathfindingNavMesh(const LLUUID &pRegionUUID)
|
||||
: mRegionUUID(pRegionUUID),
|
||||
: mNavMeshStatus(pRegionUUID),
|
||||
mNavMeshRequestStatus(kNavMeshRequestUnknown),
|
||||
mNavMeshSignal(),
|
||||
mNavMeshData(),
|
||||
mNavMeshVersion(0U)
|
||||
mNavMeshData()
|
||||
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -57,45 +58,54 @@ LLPathfindingNavMesh::navmesh_slot_t LLPathfindingNavMesh::registerNavMeshListen
|
|||
return mNavMeshSignal.connect(pNavMeshCallback);
|
||||
}
|
||||
|
||||
bool LLPathfindingNavMesh::hasNavMeshVersion(U32 pNavMeshVersion) const
|
||||
bool LLPathfindingNavMesh::hasNavMeshVersion(const LLPathfindingNavMeshStatus &pNavMeshStatus) const
|
||||
{
|
||||
return ((mNavMeshVersion == pNavMeshVersion) &&
|
||||
return ((mNavMeshStatus.getVersion() == pNavMeshStatus.getVersion()) &&
|
||||
((mNavMeshRequestStatus == kNavMeshRequestStarted) || (mNavMeshRequestStatus == kNavMeshRequestCompleted) ||
|
||||
((mNavMeshRequestStatus == kNavMeshRequestChecking) && !mNavMeshData.empty())));
|
||||
}
|
||||
|
||||
void LLPathfindingNavMesh::handleRefresh(U32 pNavMeshVersion)
|
||||
{
|
||||
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)
|
||||
void LLPathfindingNavMesh::handleRefresh(const LLPathfindingNavMeshStatus &pNavMeshStatus)
|
||||
{
|
||||
if (mNavMeshVersion != pNavMeshVersion)
|
||||
llassert(mNavMeshStatus.getRegionUUID() == pNavMeshStatus.getRegionUUID());
|
||||
llassert(mNavMeshStatus.getVersion() == pNavMeshStatus.getVersion());
|
||||
mNavMeshStatus = pNavMeshStatus;
|
||||
if (mNavMeshRequestStatus == kNavMeshRequestChecking)
|
||||
{
|
||||
llassert(!mNavMeshData.empty());
|
||||
setRequestStatus(kNavMeshRequestCompleted);
|
||||
}
|
||||
else
|
||||
{
|
||||
sendStatus();
|
||||
}
|
||||
}
|
||||
|
||||
void LLPathfindingNavMesh::handleNavMeshNewVersion(const LLPathfindingNavMeshStatus &pNavMeshStatus)
|
||||
{
|
||||
llassert(mNavMeshStatus.getRegionUUID() == pNavMeshStatus.getRegionUUID());
|
||||
if (mNavMeshStatus.getVersion() == pNavMeshStatus.getVersion())
|
||||
{
|
||||
mNavMeshStatus = pNavMeshStatus;
|
||||
sendStatus();
|
||||
}
|
||||
else
|
||||
{
|
||||
mNavMeshData.clear();
|
||||
mNavMeshVersion = pNavMeshVersion;
|
||||
mNavMeshStatus = pNavMeshStatus;
|
||||
setRequestStatus(kNavMeshRequestNeedsUpdate);
|
||||
}
|
||||
}
|
||||
|
||||
void LLPathfindingNavMesh::handleNavMeshStart(U32 pNavMeshVersion)
|
||||
void LLPathfindingNavMesh::handleNavMeshStart(const LLPathfindingNavMeshStatus &pNavMeshStatus)
|
||||
{
|
||||
mNavMeshVersion = pNavMeshVersion;
|
||||
llassert(mNavMeshStatus.getRegionUUID() == pNavMeshStatus.getRegionUUID());
|
||||
mNavMeshStatus = pNavMeshStatus;
|
||||
setRequestStatus(kNavMeshRequestStarted);
|
||||
}
|
||||
|
||||
|
|
@ -114,8 +124,9 @@ void LLPathfindingNavMesh::handleNavMeshResult(const LLSD &pContent, U32 pNavMes
|
|||
}
|
||||
}
|
||||
|
||||
if (mNavMeshVersion == pNavMeshVersion)
|
||||
if (mNavMeshStatus.getVersion() == pNavMeshVersion)
|
||||
{
|
||||
ENavMeshRequestStatus status;
|
||||
if ( pContent.has(NAVMESH_DATA_FIELD) )
|
||||
{
|
||||
const LLSD::Binary &value = pContent.get(NAVMESH_DATA_FIELD).asBinary();
|
||||
|
|
@ -128,14 +139,14 @@ void LLPathfindingNavMesh::handleNavMeshResult(const LLSD &pContent, U32 pNavMes
|
|||
if ( !valid )
|
||||
{
|
||||
llwarns << "Unable to decompress the navmesh llsd." << llendl;
|
||||
setRequestStatus(kNavMeshRequestError);
|
||||
status = kNavMeshRequestError;
|
||||
}
|
||||
else
|
||||
{
|
||||
llassert(pUncompressedNavMeshContainer);
|
||||
mNavMeshData.resize( decompBinSize );
|
||||
memcpy( &mNavMeshData[0], &pUncompressedNavMeshContainer[0], decompBinSize );
|
||||
setRequestStatus(kNavMeshRequestCompleted);
|
||||
status = kNavMeshRequestCompleted;
|
||||
}
|
||||
if ( pUncompressedNavMeshContainer )
|
||||
{
|
||||
|
|
@ -145,8 +156,9 @@ void LLPathfindingNavMesh::handleNavMeshResult(const LLSD &pContent, U32 pNavMes
|
|||
else
|
||||
{
|
||||
llwarns << "No mesh data received" << llendl;
|
||||
setRequestStatus(kNavMeshRequestError);
|
||||
status = kNavMeshRequestError;
|
||||
}
|
||||
setRequestStatus(status);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -165,7 +177,7 @@ void LLPathfindingNavMesh::handleNavMeshError()
|
|||
void LLPathfindingNavMesh::handleNavMeshError(U32 pStatus, const std::string &pReason, const std::string &pURL, U32 pNavMeshVersion)
|
||||
{
|
||||
llwarns << "error with request to URL '" << pURL << "' because " << pReason << " (statusCode:" << pStatus << ")" << llendl;
|
||||
if (mNavMeshVersion == pNavMeshVersion)
|
||||
if (mNavMeshStatus.getVersion() == pNavMeshVersion)
|
||||
{
|
||||
handleNavMeshError();
|
||||
}
|
||||
|
|
@ -174,5 +186,10 @@ void LLPathfindingNavMesh::handleNavMeshError(U32 pStatus, const std::string &pR
|
|||
void LLPathfindingNavMesh::setRequestStatus(ENavMeshRequestStatus pNavMeshRequestStatus)
|
||||
{
|
||||
mNavMeshRequestStatus = pNavMeshRequestStatus;
|
||||
mNavMeshSignal(mNavMeshRequestStatus, mRegionUUID, mNavMeshVersion, mNavMeshData);
|
||||
sendStatus();
|
||||
}
|
||||
|
||||
void LLPathfindingNavMesh::sendStatus()
|
||||
{
|
||||
mNavMeshSignal(mNavMeshRequestStatus, mNavMeshStatus, mNavMeshData);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,7 +29,6 @@
|
|||
#define LL_LLPATHFINDINGNAVMESH_H
|
||||
|
||||
#include "llsd.h"
|
||||
#include "lluuid.h"
|
||||
|
||||
#include <string>
|
||||
|
||||
|
|
@ -37,14 +36,13 @@
|
|||
#include <boost/function.hpp>
|
||||
#include <boost/signals2.hpp>
|
||||
|
||||
class LLSD;
|
||||
#include "llpathfindingnavmeshstatus.h"
|
||||
|
||||
class LLUUID;
|
||||
class LLPathfindingNavMesh;
|
||||
|
||||
typedef boost::shared_ptr<LLPathfindingNavMesh> LLPathfindingNavMeshPtr;
|
||||
|
||||
// XXX stinson 03/12/2012 : This definition is in place to support an older version of the pathfinding simulator that does not have versioned information
|
||||
#define DEPRECATED_UNVERSIONED_NAVMESH
|
||||
|
||||
class LLPathfindingNavMesh
|
||||
{
|
||||
public:
|
||||
|
|
@ -58,9 +56,9 @@ public:
|
|||
kNavMeshRequestError
|
||||
} ENavMeshRequestStatus;
|
||||
|
||||
typedef boost::function<void (ENavMeshRequestStatus, const LLUUID &, U32, const LLSD::Binary &)> navmesh_callback_t;
|
||||
typedef boost::signals2::signal<void (ENavMeshRequestStatus, const LLUUID &, U32, const LLSD::Binary &)> navmesh_signal_t;
|
||||
typedef boost::signals2::connection navmesh_slot_t;
|
||||
typedef boost::function<void (ENavMeshRequestStatus, const LLPathfindingNavMeshStatus &, const LLSD::Binary &)> navmesh_callback_t;
|
||||
typedef boost::signals2::signal<void (ENavMeshRequestStatus, const LLPathfindingNavMeshStatus &, const LLSD::Binary &)> navmesh_signal_t;
|
||||
typedef boost::signals2::connection navmesh_slot_t;
|
||||
|
||||
LLPathfindingNavMesh(const LLUUID &pRegionUUID);
|
||||
virtual ~LLPathfindingNavMesh();
|
||||
|
|
@ -68,15 +66,15 @@ public:
|
|||
navmesh_slot_t registerNavMeshListener(navmesh_callback_t pNavMeshCallback);
|
||||
|
||||
#ifdef DEPRECATED_UNVERSIONED_NAVMESH
|
||||
U32 getNavMeshVersion() const {return mNavMeshVersion;};
|
||||
const LLPathfindingNavMeshStatus &getNavMeshStatusXXX() const {return mNavMeshStatus;};
|
||||
#endif // DEPRECATED_UNVERSIONED_NAVMESH
|
||||
|
||||
bool hasNavMeshVersion(U32 pNavMeshVersion) const;
|
||||
bool hasNavMeshVersion(const LLPathfindingNavMeshStatus &pNavMeshStatus) const;
|
||||
|
||||
void handleNavMeshCheckVersion();
|
||||
void handleRefresh(U32 pNavMeshVersion);
|
||||
void handleNavMeshNewVersion(U32 pNavMeshVersion);
|
||||
void handleNavMeshStart(U32 pNavMeshVersion);
|
||||
void handleRefresh(const LLPathfindingNavMeshStatus &pNavMeshStatus);
|
||||
void handleNavMeshNewVersion(const LLPathfindingNavMeshStatus &pNavMeshStatus);
|
||||
void handleNavMeshStart(const LLPathfindingNavMeshStatus &pNavMeshStatus);
|
||||
void handleNavMeshResult(const LLSD &pContent, U32 pNavMeshVersion);
|
||||
void handleNavMeshNotEnabled();
|
||||
void handleNavMeshError();
|
||||
|
|
@ -86,12 +84,12 @@ protected:
|
|||
|
||||
private:
|
||||
void setRequestStatus(ENavMeshRequestStatus pNavMeshRequestStatus);
|
||||
void sendStatus();
|
||||
|
||||
LLUUID mRegionUUID;
|
||||
ENavMeshRequestStatus mNavMeshRequestStatus;
|
||||
navmesh_signal_t mNavMeshSignal;
|
||||
LLSD::Binary mNavMeshData;
|
||||
U32 mNavMeshVersion;
|
||||
LLPathfindingNavMeshStatus mNavMeshStatus;
|
||||
ENavMeshRequestStatus mNavMeshRequestStatus;
|
||||
navmesh_signal_t mNavMeshSignal;
|
||||
LLSD::Binary mNavMeshData;
|
||||
};
|
||||
|
||||
#endif // LL_LLPATHFINDINGNAVMESH_H
|
||||
|
|
|
|||
|
|
@ -48,6 +48,14 @@ const std::string LLPathfindingNavMeshStatus::sStatusRepending("repending");
|
|||
// LLPathfindingNavMeshStatus
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
LLPathfindingNavMeshStatus::LLPathfindingNavMeshStatus()
|
||||
: mIsValid(false),
|
||||
mRegionUUID(),
|
||||
mVersion(0U),
|
||||
mStatus(kComplete)
|
||||
{
|
||||
}
|
||||
|
||||
LLPathfindingNavMeshStatus::LLPathfindingNavMeshStatus(const LLUUID &pRegionUUID)
|
||||
: mIsValid(false),
|
||||
mRegionUUID(pRegionUUID),
|
||||
|
|
@ -127,19 +135,19 @@ void LLPathfindingNavMeshStatus::parseStatus(const LLSD &pContent)
|
|||
std::string status = pContent.get(STATUS_FIELD).asString();
|
||||
#endif // DEPRECATED_STATE_FIELD
|
||||
|
||||
if (LLStringUtil::compareStrings(status, sStatusPending))
|
||||
if (LLStringUtil::compareStrings(status, sStatusPending) == 0)
|
||||
{
|
||||
mStatus = kPending;
|
||||
}
|
||||
else if (LLStringUtil::compareStrings(status, sStatusBuilding))
|
||||
else if (LLStringUtil::compareStrings(status, sStatusBuilding) == 0)
|
||||
{
|
||||
mStatus = kBuilding;
|
||||
}
|
||||
else if (LLStringUtil::compareStrings(status, sStatusComplete))
|
||||
else if (LLStringUtil::compareStrings(status, sStatusComplete) == 0)
|
||||
{
|
||||
mStatus = kComplete;
|
||||
}
|
||||
else if (LLStringUtil::compareStrings(status, sStatusRepending))
|
||||
else if (LLStringUtil::compareStrings(status, sStatusRepending) == 0)
|
||||
{
|
||||
mStatus = kRepending;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,6 +32,9 @@
|
|||
|
||||
#include <string>
|
||||
|
||||
// XXX stinson 03/12/2012 : This definition is in place to support an older version of the pathfinding simulator that does not have versioned information
|
||||
#define DEPRECATED_UNVERSIONED_NAVMESH
|
||||
|
||||
class LLSD;
|
||||
|
||||
class LLPathfindingNavMeshStatus
|
||||
|
|
@ -45,6 +48,7 @@ public:
|
|||
kRepending
|
||||
} ENavMeshStatus;
|
||||
|
||||
LLPathfindingNavMeshStatus();
|
||||
LLPathfindingNavMeshStatus(const LLUUID &pRegionUUID);
|
||||
LLPathfindingNavMeshStatus(const LLUUID &pRegionUUID, const LLSD &pContent);
|
||||
LLPathfindingNavMeshStatus(const LLSD &pContent);
|
||||
|
|
@ -53,6 +57,10 @@ public:
|
|||
|
||||
LLPathfindingNavMeshStatus &operator =(const LLPathfindingNavMeshStatus &pOther);
|
||||
|
||||
#ifdef DEPRECATED_UNVERSIONED_NAVMESH
|
||||
void incrementNavMeshVersionXXX() {++mVersion;};
|
||||
#endif // DEPRECATED_UNVERSIONED_NAVMESH
|
||||
|
||||
bool isValid() const {return mIsValid;};
|
||||
const LLUUID &getRegionUUID() const {return mRegionUUID;};
|
||||
U32 getVersion() const {return mVersion;};
|
||||
|
|
|
|||
|
|
@ -50,6 +50,7 @@
|
|||
|
||||
LLPathfindingNavMeshZone::LLPathfindingNavMeshZone()
|
||||
: mNavMeshLocationPtrs(),
|
||||
mNavMeshZoneRequestStatus(kNavMeshZoneRequestUnknown),
|
||||
mNavMeshZoneSignal()
|
||||
{
|
||||
}
|
||||
|
|
@ -132,6 +133,71 @@ void LLPathfindingNavMeshZone::refresh()
|
|||
}
|
||||
}
|
||||
|
||||
LLPathfindingNavMeshZone::ENavMeshZoneStatus LLPathfindingNavMeshZone::getNavMeshZoneStatus() const
|
||||
{
|
||||
bool hasPending = false;
|
||||
bool hasBuilding = false;
|
||||
bool hasComplete = false;
|
||||
bool hasRepending = false;
|
||||
|
||||
for (NavMeshLocationPtrs::const_iterator navMeshLocationPtrIter = mNavMeshLocationPtrs.begin();
|
||||
navMeshLocationPtrIter != mNavMeshLocationPtrs.end(); ++navMeshLocationPtrIter)
|
||||
{
|
||||
const NavMeshLocationPtr navMeshLocationPtr = *navMeshLocationPtrIter;
|
||||
|
||||
switch (navMeshLocationPtr->getNavMeshStatus())
|
||||
{
|
||||
case LLPathfindingNavMeshStatus::kPending :
|
||||
hasPending = true;
|
||||
break;
|
||||
case LLPathfindingNavMeshStatus::kBuilding :
|
||||
hasBuilding = true;
|
||||
break;
|
||||
case LLPathfindingNavMeshStatus::kComplete :
|
||||
hasComplete = true;
|
||||
break;
|
||||
case LLPathfindingNavMeshStatus::kRepending :
|
||||
hasRepending = true;
|
||||
break;
|
||||
default :
|
||||
hasPending = true;
|
||||
llassert(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ENavMeshZoneStatus zoneStatus = kNavMeshZoneComplete;
|
||||
if (hasRepending || (hasPending && hasBuilding))
|
||||
{
|
||||
zoneStatus = kNavMeshZonePendingAndBuilding;
|
||||
}
|
||||
else if (hasComplete)
|
||||
{
|
||||
if (hasPending)
|
||||
{
|
||||
zoneStatus = kNavMeshZoneSomePending;
|
||||
}
|
||||
else if (hasBuilding)
|
||||
{
|
||||
zoneStatus = kNavMeshZoneSomeBuilding;
|
||||
}
|
||||
else
|
||||
{
|
||||
zoneStatus = kNavMeshZoneComplete;
|
||||
}
|
||||
}
|
||||
else if (hasPending)
|
||||
{
|
||||
zoneStatus = kNavMeshZonePending;
|
||||
}
|
||||
else if (hasBuilding)
|
||||
{
|
||||
zoneStatus = kNavMeshZoneBuilding;
|
||||
}
|
||||
|
||||
return zoneStatus;
|
||||
}
|
||||
|
||||
void LLPathfindingNavMeshZone::handleNavMeshLocation()
|
||||
{
|
||||
updateStatus();
|
||||
|
|
@ -150,10 +216,10 @@ void LLPathfindingNavMeshZone::updateStatus()
|
|||
#ifdef XXX_STINSON_DEBUG_NAVMESH_ZONE
|
||||
llinfos << "STINSON DEBUG: Navmesh zone update BEGIN" << llendl;
|
||||
#endif // XXX_STINSON_DEBUG_NAVMESH_ZONE
|
||||
for (NavMeshLocationPtrs::iterator navMeshLocationPtrIter = mNavMeshLocationPtrs.begin();
|
||||
for (NavMeshLocationPtrs::const_iterator navMeshLocationPtrIter = mNavMeshLocationPtrs.begin();
|
||||
navMeshLocationPtrIter != mNavMeshLocationPtrs.end(); ++navMeshLocationPtrIter)
|
||||
{
|
||||
NavMeshLocationPtr navMeshLocationPtr = *navMeshLocationPtrIter;
|
||||
const NavMeshLocationPtr navMeshLocationPtr = *navMeshLocationPtrIter;
|
||||
#ifdef XXX_STINSON_DEBUG_NAVMESH_ZONE
|
||||
llinfos << "STINSON DEBUG: region #" << navMeshLocationPtr->getDirection() << ": region(" << navMeshLocationPtr->getRegionUUID().asString() << ") status:" << navMeshLocationPtr->getRequestStatus() << llendl;
|
||||
#endif // XXX_STINSON_DEBUG_NAVMESH_ZONE
|
||||
|
|
@ -226,14 +292,6 @@ void LLPathfindingNavMeshZone::updateStatus()
|
|||
else if (hasRequestCompleted)
|
||||
{
|
||||
zoneRequestStatus = kNavMeshZoneRequestCompleted;
|
||||
#ifdef XXX_STINSON_DEBUG_NAVMESH_ZONE
|
||||
llinfos << "STINSON DEBUG: Navmesh zone update is stitching" << llendl;
|
||||
#endif // XXX_STINSON_DEBUG_NAVMESH_ZONE
|
||||
llassert(LLPathingLib::getInstance() != NULL);
|
||||
if (LLPathingLib::getInstance() != NULL)
|
||||
{
|
||||
LLPathingLib::getInstance()->stitchNavMeshes( gSavedSettings.getBOOL("EnableVBOForNavMeshVisualization") );
|
||||
}
|
||||
#ifdef XXX_STINSON_DEBUG_NAVMESH_ZONE
|
||||
llinfos << "STINSON DEBUG: Navmesh zone update is COMPLETED" << llendl;
|
||||
#endif // XXX_STINSON_DEBUG_NAVMESH_ZONE
|
||||
|
|
@ -254,7 +312,24 @@ void LLPathfindingNavMeshZone::updateStatus()
|
|||
llassert(0);
|
||||
}
|
||||
|
||||
mNavMeshZoneSignal(zoneRequestStatus);
|
||||
if ((mNavMeshZoneRequestStatus != kNavMeshZoneRequestCompleted) &&
|
||||
(zoneRequestStatus == kNavMeshZoneRequestCompleted))
|
||||
{
|
||||
#ifdef XXX_STINSON_DEBUG_NAVMESH_ZONE
|
||||
llinfos << "STINSON DEBUG: Navmesh zone update is stitching" << llendl;
|
||||
#endif // XXX_STINSON_DEBUG_NAVMESH_ZONE
|
||||
llassert(LLPathingLib::getInstance() != NULL);
|
||||
if (LLPathingLib::getInstance() != NULL)
|
||||
{
|
||||
LLPathingLib::getInstance()->stitchNavMeshes( gSavedSettings.getBOOL("EnableVBOForNavMeshVisualization") );
|
||||
}
|
||||
#ifdef XXX_STINSON_DEBUG_NAVMESH_ZONE
|
||||
llinfos << "STINSON DEBUG: Navmesh zone update stitching is done" << llendl;
|
||||
#endif // XXX_STINSON_DEBUG_NAVMESH_ZONE
|
||||
}
|
||||
|
||||
mNavMeshZoneRequestStatus = zoneRequestStatus;
|
||||
mNavMeshZoneSignal(mNavMeshZoneRequestStatus);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
|
@ -266,6 +341,7 @@ LLPathfindingNavMeshZone::NavMeshLocation::NavMeshLocation(S32 pDirection, navme
|
|||
mRegionUUID(),
|
||||
mHasNavMesh(false),
|
||||
mNavMeshVersion(0U),
|
||||
mNavMeshStatus(LLPathfindingNavMeshStatus::kComplete),
|
||||
mLocationCallback(pLocationCallback),
|
||||
mRequestStatus(LLPathfindingNavMesh::kNavMeshRequestUnknown),
|
||||
mNavMeshSlot()
|
||||
|
|
@ -288,7 +364,7 @@ void LLPathfindingNavMeshZone::NavMeshLocation::enable()
|
|||
else
|
||||
{
|
||||
mRegionUUID = region->getRegionID();
|
||||
mNavMeshSlot = LLPathfindingManager::getInstance()->registerNavMeshListenerForRegion(region, boost::bind(&LLPathfindingNavMeshZone::NavMeshLocation::handleNavMesh, this, _1, _2, _3, _4));
|
||||
mNavMeshSlot = LLPathfindingManager::getInstance()->registerNavMeshListenerForRegion(region, boost::bind(&LLPathfindingNavMeshZone::NavMeshLocation::handleNavMesh, this, _1, _2, _3));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -299,8 +375,9 @@ void LLPathfindingNavMeshZone::NavMeshLocation::refresh()
|
|||
if (region == NULL)
|
||||
{
|
||||
llassert(mRegionUUID.isNull());
|
||||
LLPathfindingNavMeshStatus newNavMeshStatus(mRegionUUID);
|
||||
LLSD::Binary nullData;
|
||||
handleNavMesh(LLPathfindingNavMesh::kNavMeshRequestNotEnabled, mRegionUUID, 0U, nullData);
|
||||
handleNavMesh(LLPathfindingNavMesh::kNavMeshRequestNotEnabled, newNavMeshStatus, nullData);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -319,33 +396,38 @@ LLPathfindingNavMesh::ENavMeshRequestStatus LLPathfindingNavMeshZone::NavMeshLoc
|
|||
return mRequestStatus;
|
||||
}
|
||||
|
||||
void LLPathfindingNavMeshZone::NavMeshLocation::handleNavMesh(LLPathfindingNavMesh::ENavMeshRequestStatus pNavMeshRequestStatus, const LLUUID &pRegionUUID, U32 pNavMeshVersion, const LLSD::Binary &pNavMeshData)
|
||||
LLPathfindingNavMeshStatus::ENavMeshStatus LLPathfindingNavMeshZone::NavMeshLocation::getNavMeshStatus() const
|
||||
{
|
||||
llassert(mRegionUUID == pRegionUUID);
|
||||
if (pNavMeshRequestStatus != LLPathfindingNavMesh::kNavMeshRequestCompleted)
|
||||
{
|
||||
mRequestStatus = pNavMeshRequestStatus;
|
||||
mLocationCallback();
|
||||
}
|
||||
else if (!mHasNavMesh || (mNavMeshVersion != pNavMeshVersion))
|
||||
return mNavMeshStatus;
|
||||
}
|
||||
|
||||
void LLPathfindingNavMeshZone::NavMeshLocation::handleNavMesh(LLPathfindingNavMesh::ENavMeshRequestStatus pNavMeshRequestStatus, const LLPathfindingNavMeshStatus &pNavMeshStatus, const LLSD::Binary &pNavMeshData)
|
||||
{
|
||||
llassert(mRegionUUID == pNavMeshStatus.getRegionUUID());
|
||||
|
||||
if ((pNavMeshRequestStatus == LLPathfindingNavMesh::kNavMeshRequestCompleted) &&
|
||||
(!mHasNavMesh || (mNavMeshVersion != pNavMeshStatus.getVersion())))
|
||||
{
|
||||
llassert(!pNavMeshData.empty());
|
||||
mRequestStatus = pNavMeshRequestStatus;
|
||||
mHasNavMesh = true;
|
||||
mNavMeshVersion = pNavMeshVersion;
|
||||
mNavMeshVersion = pNavMeshStatus.getVersion();
|
||||
llassert(LLPathingLib::getInstance() != NULL);
|
||||
if (LLPathingLib::getInstance() != NULL)
|
||||
{
|
||||
LLPathingLib::getInstance()->extractNavMeshSrcFromLLSD(pNavMeshData, mDirection);
|
||||
}
|
||||
mLocationCallback();
|
||||
}
|
||||
|
||||
mRequestStatus = pNavMeshRequestStatus;
|
||||
mNavMeshStatus = pNavMeshStatus.getStatus();
|
||||
mLocationCallback();
|
||||
}
|
||||
|
||||
void LLPathfindingNavMeshZone::NavMeshLocation::clear()
|
||||
{
|
||||
mHasNavMesh = false;
|
||||
mRequestStatus = LLPathfindingNavMesh::kNavMeshRequestUnknown;
|
||||
mNavMeshStatus = LLPathfindingNavMeshStatus::kComplete;
|
||||
if (mNavMeshSlot.connected())
|
||||
{
|
||||
mNavMeshSlot.disconnect();
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@
|
|||
#include "llsd.h"
|
||||
#include "lluuid.h"
|
||||
#include "llpathfindingnavmesh.h"
|
||||
#include "llpathfindingnavmeshstatus.h"
|
||||
|
||||
#include <vector>
|
||||
|
||||
|
|
@ -38,6 +39,8 @@
|
|||
#include <boost/function.hpp>
|
||||
#include <boost/signals2.hpp>
|
||||
|
||||
class LLPathfindingNavMeshStatus;
|
||||
|
||||
//#define XXX_STINSON_DEBUG_NAVMESH_ZONE
|
||||
|
||||
class LLPathfindingNavMeshZone
|
||||
|
|
@ -53,9 +56,18 @@ public:
|
|||
kNavMeshZoneRequestError
|
||||
} ENavMeshZoneRequestStatus;
|
||||
|
||||
typedef enum {
|
||||
kNavMeshZonePending,
|
||||
kNavMeshZoneBuilding,
|
||||
kNavMeshZoneSomePending,
|
||||
kNavMeshZoneSomeBuilding,
|
||||
kNavMeshZonePendingAndBuilding,
|
||||
kNavMeshZoneComplete
|
||||
} ENavMeshZoneStatus;
|
||||
|
||||
typedef boost::function<void (ENavMeshZoneRequestStatus)> navmesh_zone_callback_t;
|
||||
typedef boost::signals2::signal<void (ENavMeshZoneRequestStatus)> navmesh_zone_signal_t;
|
||||
typedef boost::signals2::connection navmesh_zone_slot_t;
|
||||
typedef boost::signals2::connection navmesh_zone_slot_t;
|
||||
|
||||
LLPathfindingNavMeshZone();
|
||||
virtual ~LLPathfindingNavMeshZone();
|
||||
|
|
@ -67,6 +79,8 @@ public:
|
|||
void disable();
|
||||
void refresh();
|
||||
|
||||
ENavMeshZoneStatus getNavMeshZoneStatus() const;
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
|
|
@ -82,6 +96,7 @@ private:
|
|||
void disable();
|
||||
|
||||
LLPathfindingNavMesh::ENavMeshRequestStatus getRequestStatus() const;
|
||||
LLPathfindingNavMeshStatus::ENavMeshStatus getNavMeshStatus() const;
|
||||
#ifdef XXX_STINSON_DEBUG_NAVMESH_ZONE
|
||||
const LLUUID &getRegionUUID() const {return mRegionUUID;};
|
||||
S32 getDirection() const {return mDirection;};
|
||||
|
|
@ -90,7 +105,7 @@ private:
|
|||
protected:
|
||||
|
||||
private:
|
||||
void handleNavMesh(LLPathfindingNavMesh::ENavMeshRequestStatus pNavMeshRequestStatus, const LLUUID &pRegionUUID, U32 pNavMeshVersion, const LLSD::Binary &pNavMeshData);
|
||||
void handleNavMesh(LLPathfindingNavMesh::ENavMeshRequestStatus pNavMeshRequestStatus, const LLPathfindingNavMeshStatus &pNavMeshStatus, const LLSD::Binary &pNavMeshData);
|
||||
|
||||
void clear();
|
||||
LLViewerRegion *getRegion() const;
|
||||
|
|
@ -99,6 +114,7 @@ private:
|
|||
LLUUID mRegionUUID;
|
||||
bool mHasNavMesh;
|
||||
U32 mNavMeshVersion;
|
||||
LLPathfindingNavMeshStatus::ENavMeshStatus mNavMeshStatus;
|
||||
navmesh_location_callback_t mLocationCallback;
|
||||
LLPathfindingNavMesh::ENavMeshRequestStatus mRequestStatus;
|
||||
LLPathfindingNavMesh::navmesh_slot_t mNavMeshSlot;
|
||||
|
|
@ -110,8 +126,9 @@ private:
|
|||
void handleNavMeshLocation();
|
||||
void updateStatus();
|
||||
|
||||
NavMeshLocationPtrs mNavMeshLocationPtrs;
|
||||
navmesh_zone_signal_t mNavMeshZoneSignal;
|
||||
NavMeshLocationPtrs mNavMeshLocationPtrs;
|
||||
ENavMeshZoneRequestStatus mNavMeshZoneRequestStatus;
|
||||
navmesh_zone_signal_t mNavMeshZoneSignal;
|
||||
};
|
||||
|
||||
#endif // LL_LLPATHFINDINGNAVMESHZONE_H
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<floater
|
||||
open_positioning="cascading"
|
||||
can_tear_off="false"
|
||||
height="352"
|
||||
height="420"
|
||||
layout="topleft"
|
||||
name="floater_pathfinding_console"
|
||||
help_topic="floater_pathfinding_console"
|
||||
|
|
@ -11,19 +11,27 @@
|
|||
single_instance="true"
|
||||
title="Pathfinding edit / test"
|
||||
width="456">
|
||||
<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>
|
||||
<floater.string name="navmesh_status_error">Unable to download navmesh successfully.</floater.string>
|
||||
<floater.string name="navmesh_viewer_status_unknown"></floater.string>
|
||||
<floater.string name="navmesh_viewer_status_library_not_implemented">Cannot find pathing library implementation.</floater.string>
|
||||
<floater.string name="navmesh_viewer_status_region_not_enabled">This region is not enabled for pathfinding.</floater.string>
|
||||
<floater.string name="navmesh_viewer_status_checking_version">Checking the status of the navmesh.</floater.string>
|
||||
<floater.string name="navmesh_viewer_status_downloading">Downloading the navmesh.</floater.string>
|
||||
<floater.string name="navmesh_viewer_status_updating">The navmesh has changed on the server. Downloading the latest navmesh.</floater.string>
|
||||
<floater.string name="navmesh_viewer_status_has_navmesh">Latest navmesh has been downloaded.</floater.string>
|
||||
<floater.string name="navmesh_viewer_status_error">Unable to download navmesh successfully.</floater.string>
|
||||
<floater.string name="navmesh_simulator_status_unknown"></floater.string>
|
||||
<floater.string name="navmesh_simulator_status_region_not_enabled">This region does not expose the navmesh status.</floater.string>
|
||||
<floater.string name="navmesh_simulator_status_pending">Navmesh has pending changes.</floater.string>
|
||||
<floater.string name="navmesh_simulator_status_building">Navmesh is building.</floater.string>
|
||||
<floater.string name="navmesh_simulator_status_some_pending">Some navmesh regions have pending changes.</floater.string>
|
||||
<floater.string name="navmesh_simulator_status_some_building">Some navmesh regions are building.</floater.string>
|
||||
<floater.string name="navmesh_simulator_status_pending_and_building">Some navmesh regions have pending changes and others are building.</floater.string>
|
||||
<floater.string name="navmesh_simulator_status_complete">Navmesh is up-to-date.</floater.string>
|
||||
<floater.string name="pathing_choose_start_and_end_points">Please choose start and end points.</floater.string>
|
||||
<floater.string name="pathing_choose_start_point">Please choose start point.</floater.string>
|
||||
<floater.string name="pathing_choose_end_point">Please choose end point.</floater.string>
|
||||
<floater.string name="pathing_path_valid">Path is shown in blue.</floater.string>
|
||||
<floater.string name="navmesh_update_needed">Region boundary hit, navmesh may not be accurate. Update.</floater.string>
|
||||
<floater.string name="navmesh_update_needed">Region boundary hit, navmesh may not be accurate.</floater.string>
|
||||
<text
|
||||
height="13"
|
||||
word_wrap="true"
|
||||
|
|
@ -56,7 +64,7 @@
|
|||
follows="left|top"
|
||||
layout="topleft"
|
||||
left="35"
|
||||
width="208">
|
||||
width="188">
|
||||
Show walkability map:
|
||||
</text>
|
||||
<combo_box
|
||||
|
|
@ -157,7 +165,7 @@
|
|||
left="0"
|
||||
top_pad="5"
|
||||
width="200">
|
||||
Status
|
||||
Viewer status
|
||||
</text>
|
||||
<text
|
||||
height="40"
|
||||
|
|
@ -169,7 +177,51 @@
|
|||
follows="left|top"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="pathfinding_status"
|
||||
name="pathfinding_viewer_status"
|
||||
top_pad="8"
|
||||
width="200">
|
||||
</text>
|
||||
</panel>
|
||||
<view_border
|
||||
bevel_style="none"
|
||||
follows="top|left"
|
||||
layout="topleft"
|
||||
left="14"
|
||||
height="0"
|
||||
width="200"
|
||||
top_pad="0"
|
||||
visible="true" />
|
||||
<panel
|
||||
border="false"
|
||||
bevel_style="none"
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
height="73"
|
||||
width="200">
|
||||
<text
|
||||
height="13"
|
||||
word_wrap="true"
|
||||
use_ellipses="false"
|
||||
type="string"
|
||||
text_color="LabelTextColor"
|
||||
length="1"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
top_pad="5"
|
||||
width="200">
|
||||
Simulator status
|
||||
</text>
|
||||
<text
|
||||
height="40"
|
||||
word_wrap="true"
|
||||
use_ellipses="false"
|
||||
type="string"
|
||||
text_color="LabelTextColor"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="pathfinding_simulator_status"
|
||||
top_pad="8"
|
||||
width="200">
|
||||
</text>
|
||||
|
|
@ -210,7 +262,7 @@
|
|||
layout="topleft"
|
||||
left="230"
|
||||
top="35"
|
||||
height="305"
|
||||
height="373"
|
||||
width="214"
|
||||
visible="true" />
|
||||
<tab_container
|
||||
|
|
@ -220,7 +272,7 @@
|
|||
name="edit_test_tab_container"
|
||||
left="227"
|
||||
top="14"
|
||||
height="327"
|
||||
height="395"
|
||||
width="218">
|
||||
<panel
|
||||
border="false"
|
||||
|
|
@ -294,7 +346,7 @@
|
|||
line_spacing.multiple="1.5"
|
||||
name="freeze_label"
|
||||
top_pad="23"
|
||||
height="26"
|
||||
height="32"
|
||||
width="190">
|
||||
Prevent object / terrain changes and update the navmesh:
|
||||
</text>
|
||||
|
|
@ -306,7 +358,7 @@
|
|||
label="Freeze"
|
||||
layout="topleft"
|
||||
name="enter_frozen_mode"
|
||||
top_pad="9"
|
||||
top_pad="3"
|
||||
width="116"/>
|
||||
</panel>
|
||||
<panel
|
||||
|
|
|
|||
Loading…
Reference in New Issue