summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/newview/llfloaterpathfindingconsole.cpp118
-rw-r--r--indra/newview/llfloaterpathfindingconsole.h8
-rw-r--r--indra/newview/llpathfindingmanager.cpp27
-rw-r--r--indra/newview/llpathfindingmanager.h5
-rw-r--r--indra/newview/llpathfindingnavmesh.cpp65
-rw-r--r--indra/newview/llpathfindingnavmesh.h34
-rw-r--r--indra/newview/llpathfindingnavmeshstatus.cpp16
-rw-r--r--indra/newview/llpathfindingnavmeshstatus.h8
-rw-r--r--indra/newview/llpathfindingnavmeshzone.cpp130
-rw-r--r--indra/newview/llpathfindingnavmeshzone.h25
-rw-r--r--indra/newview/skins/default/xui/en/floater_pathfinding_console.xml86
11 files changed, 399 insertions, 123 deletions
diff --git a/indra/newview/llfloaterpathfindingconsole.cpp b/indra/newview/llfloaterpathfindingconsole.cpp
index 7e86819568..65a558b778 100644
--- a/indra/newview/llfloaterpathfindingconsole.cpp
+++ b/indra/newview/llfloaterpathfindingconsole.cpp
@@ -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);
} \ No newline at end of file
diff --git a/indra/newview/llfloaterpathfindingconsole.h b/indra/newview/llfloaterpathfindingconsole.h
index a1973e0985..8c22e5ead7 100644
--- a/indra/newview/llfloaterpathfindingconsole.h
+++ b/indra/newview/llfloaterpathfindingconsole.h
@@ -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;
diff --git a/indra/newview/llpathfindingmanager.cpp b/indra/newview/llpathfindingmanager.cpp
index 46bfbe0bb0..e3242de812 100644
--- a/indra/newview/llpathfindingmanager.cpp
+++ b/indra/newview/llpathfindingmanager.cpp
@@ -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);
diff --git a/indra/newview/llpathfindingmanager.h b/indra/newview/llpathfindingmanager.h
index 1cfd870897..b458d6513a 100644
--- a/indra/newview/llpathfindingmanager.h
+++ b/indra/newview/llpathfindingmanager.h
@@ -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);
diff --git a/indra/newview/llpathfindingnavmesh.cpp b/indra/newview/llpathfindingnavmesh.cpp
index 740d1cde24..10e9abaf0c 100644
--- a/indra/newview/llpathfindingnavmesh.cpp
+++ b/indra/newview/llpathfindingnavmesh.cpp
@@ -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,16 +58,23 @@ 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)
+void LLPathfindingNavMesh::handleNavMeshCheckVersion()
+{
+ setRequestStatus(kNavMeshRequestChecking);
+}
+
+void LLPathfindingNavMesh::handleRefresh(const LLPathfindingNavMeshStatus &pNavMeshStatus)
{
- llassert(pNavMeshVersion == mNavMeshVersion);
+ llassert(mNavMeshStatus.getRegionUUID() == pNavMeshStatus.getRegionUUID());
+ llassert(mNavMeshStatus.getVersion() == pNavMeshStatus.getVersion());
+ mNavMeshStatus = pNavMeshStatus;
if (mNavMeshRequestStatus == kNavMeshRequestChecking)
{
llassert(!mNavMeshData.empty());
@@ -74,28 +82,30 @@ void LLPathfindingNavMesh::handleRefresh(U32 pNavMeshVersion)
}
else
{
- mNavMeshSignal(mNavMeshRequestStatus, mRegionUUID, mNavMeshVersion, mNavMeshData);
+ sendStatus();
}
}
-void LLPathfindingNavMesh::handleNavMeshCheckVersion()
-{
- setRequestStatus(kNavMeshRequestChecking);
-}
-
-void LLPathfindingNavMesh::handleNavMeshNewVersion(U32 pNavMeshVersion)
+void LLPathfindingNavMesh::handleNavMeshNewVersion(const LLPathfindingNavMeshStatus &pNavMeshStatus)
{
- if (mNavMeshVersion != pNavMeshVersion)
+ 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);
}
diff --git a/indra/newview/llpathfindingnavmesh.h b/indra/newview/llpathfindingnavmesh.h
index 46a114439a..290f7a2cdf 100644
--- a/indra/newview/llpathfindingnavmesh.h
+++ b/indra/newview/llpathfindingnavmesh.h
@@ -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
diff --git a/indra/newview/llpathfindingnavmeshstatus.cpp b/indra/newview/llpathfindingnavmeshstatus.cpp
index 2ef892c8cd..0ba28e0297 100644
--- a/indra/newview/llpathfindingnavmeshstatus.cpp
+++ b/indra/newview/llpathfindingnavmeshstatus.cpp
@@ -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;
}
diff --git a/indra/newview/llpathfindingnavmeshstatus.h b/indra/newview/llpathfindingnavmeshstatus.h
index fcc876059d..7147fcdf36 100644
--- a/indra/newview/llpathfindingnavmeshstatus.h
+++ b/indra/newview/llpathfindingnavmeshstatus.h
@@ -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;};
diff --git a/indra/newview/llpathfindingnavmeshzone.cpp b/indra/newview/llpathfindingnavmeshzone.cpp
index 8e558c3b00..f871204454 100644
--- a/indra/newview/llpathfindingnavmeshzone.cpp
+++ b/indra/newview/llpathfindingnavmeshzone.cpp
@@ -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
@@ -227,14 +293,6 @@ void LLPathfindingNavMeshZone::updateStatus()
{
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();
diff --git a/indra/newview/llpathfindingnavmeshzone.h b/indra/newview/llpathfindingnavmeshzone.h
index 7b6583a663..7f83e9d37b 100644
--- a/indra/newview/llpathfindingnavmeshzone.h
+++ b/indra/newview/llpathfindingnavmeshzone.h
@@ -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
diff --git a/indra/newview/skins/default/xui/en/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/en/floater_pathfinding_console.xml
index aaf94483df..0373305941 100644
--- a/indra/newview/skins/default/xui/en/floater_pathfinding_console.xml
+++ b/indra/newview/skins/default/xui/en/floater_pathfinding_console.xml
@@ -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,51 @@
left="0"
top_pad="5"
width="200">
- Status
+ Viewer 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_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"
@@ -169,7 +221,7 @@
follows="left|top"
layout="topleft"
left="0"
- name="pathfinding_status"
+ 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