diff options
-rw-r--r-- | indra/newview/llfloaterpathfindingconsole.cpp | 118 | ||||
-rw-r--r-- | indra/newview/llfloaterpathfindingconsole.h | 8 | ||||
-rw-r--r-- | indra/newview/llpathfindingmanager.cpp | 27 | ||||
-rw-r--r-- | indra/newview/llpathfindingmanager.h | 5 | ||||
-rw-r--r-- | indra/newview/llpathfindingnavmesh.cpp | 65 | ||||
-rw-r--r-- | indra/newview/llpathfindingnavmesh.h | 34 | ||||
-rw-r--r-- | indra/newview/llpathfindingnavmeshstatus.cpp | 16 | ||||
-rw-r--r-- | indra/newview/llpathfindingnavmeshstatus.h | 8 | ||||
-rw-r--r-- | indra/newview/llpathfindingnavmeshzone.cpp | 130 | ||||
-rw-r--r-- | indra/newview/llpathfindingnavmeshzone.h | 25 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/floater_pathfinding_console.xml | 86 |
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 |