From 4888f7d34969b596e2b37ef72576118e1c0c27ac Mon Sep 17 00:00:00 2001 From: Todd Stinson Date: Fri, 6 Apr 2012 18:00:52 -0700 Subject: PATH-265: Adding an error message to the testing tab of the pathfinding floater console to indicate when a path cannot be found. --- indra/newview/llfloaterpathfindingconsole.cpp | 17 ++++++++++++++--- indra/newview/llfloaterpathfindingconsole.h | 1 + .../default/xui/en/floater_pathfinding_console.xml | 1 + 3 files changed, 16 insertions(+), 3 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llfloaterpathfindingconsole.cpp b/indra/newview/llfloaterpathfindingconsole.cpp index d173764fd1..c59f960d3f 100644 --- a/indra/newview/llfloaterpathfindingconsole.cpp +++ b/indra/newview/llfloaterpathfindingconsole.cpp @@ -549,7 +549,8 @@ LLFloaterPathfindingConsole::LLFloaterPathfindingConsole(const LLSD& pSeed) mConsoleState(kConsoleStateUnknown), mPathData(), mHasStartPoint(false), - mHasEndPoint(false) + mHasEndPoint(false), + mHasValidPath(false) { mSelfHandle.bind(this); } @@ -631,6 +632,7 @@ void LLFloaterPathfindingConsole::onClearPathClicked() { mHasStartPoint = false; mHasEndPoint = false; + mHasValidPath = false; updatePathTestStatus(); } @@ -721,6 +723,7 @@ void LLFloaterPathfindingConsole::updateControlsOnConsoleState() mClearPathButton->setEnabled(FALSE); mHasStartPoint = false; mHasEndPoint = false; + mHasValidPath = false; break; case kConsoleStateCheckingVersion : case kConsoleStateDownloading : @@ -741,6 +744,7 @@ void LLFloaterPathfindingConsole::updateControlsOnConsoleState() mClearPathButton->setEnabled(FALSE); mHasStartPoint = false; mHasEndPoint = false; + mHasValidPath = false; break; case kConsoleStateHasNavMesh : mShowNavMeshCheckBox->setEnabled(TRUE); @@ -966,12 +970,14 @@ void LLFloaterPathfindingConsole::generatePath() mPathData.mCharacterType = LLPathingLib::LLPL_CHARACTER_TYPE_NONE; break; } - LLPathingLib::getInstance()->generatePath(mPathData); + LLPathingLib::LLPLResult pathingResult = LLPathingLib::getInstance()->generatePath(mPathData); + mHasValidPath = (pathingResult == LLPathingLib::LLPL_PATH_GENERATED_OK); } } void LLFloaterPathfindingConsole::updatePathTestStatus() { + static const LLColor4 errorColor = LLUIColorTable::instance().getColor("PathfindingErrorColor"); static const LLColor4 warningColor = LLUIColorTable::instance().getColor("PathfindingWarningColor"); std::string statusText(""); @@ -992,10 +998,15 @@ void LLFloaterPathfindingConsole::updatePathTestStatus() statusText = getString("pathing_choose_end_point"); styleParams.color = warningColor; } - else + else if (mHasValidPath) { statusText = getString("pathing_path_valid"); } + else + { + statusText = getString("pathing_path_invalid"); + styleParams.color = errorColor; + } mPathTestingStatus->setText((LLStringExplicit)statusText, styleParams); } diff --git a/indra/newview/llfloaterpathfindingconsole.h b/indra/newview/llfloaterpathfindingconsole.h index 2b61e0e1e8..85df38b370 100644 --- a/indra/newview/llfloaterpathfindingconsole.h +++ b/indra/newview/llfloaterpathfindingconsole.h @@ -203,6 +203,7 @@ private: LLPathingLib::PathingPacket mPathData; bool mHasStartPoint; bool mHasEndPoint; + bool mHasValidPath; U32 mShapeRenderFlags; static LLHandle sInstanceHandle; 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 09fe5f4bc7..e43fda01e0 100644 --- a/indra/newview/skins/default/xui/en/floater_pathfinding_console.xml +++ b/indra/newview/skins/default/xui/en/floater_pathfinding_console.xml @@ -31,6 +31,7 @@ Please choose start point. Please choose end point. Path is shown in orange. + A path between the chosen points cannot be found.