diff options
Diffstat (limited to 'indra/newview/llfloaterpathfindingconsole.cpp')
-rw-r--r-- | indra/newview/llfloaterpathfindingconsole.cpp | 372 |
1 files changed, 126 insertions, 246 deletions
diff --git a/indra/newview/llfloaterpathfindingconsole.cpp b/indra/newview/llfloaterpathfindingconsole.cpp index 54e60ce0f4..298454724b 100644 --- a/indra/newview/llfloaterpathfindingconsole.cpp +++ b/indra/newview/llfloaterpathfindingconsole.cpp @@ -1,56 +1,61 @@ /** * @file llfloaterpathfindingconsole.cpp -* @author William Todd Stinson -* @brief "Pathfinding console" floater, allowing manipulation of the Havok AI pathfinding settings. +* @brief "Pathfinding console" floater, allowing for viewing and testing of the pathfinding navmesh through Havok AI utilities. +* @author Stinson@lindenlab.com * -* $LicenseInfo:firstyear=2002&license=viewerlgpl$ +* $LicenseInfo:firstyear=2012&license=viewerlgpl$ * Second Life Viewer Source Code -* Copyright (C) 2010, Linden Research, Inc. -* +* Copyright (C) 2012, Linden Research, Inc. +* * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; * version 2.1 of the License only. -* +* * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. -* +* * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -* +* * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA * $/LicenseInfo$ */ + #include "llviewerprecompiledheaders.h" + #include "llfloaterpathfindingconsole.h" -#include "llfloaterpathfindinglinksets.h" -#include "llfloaterpathfindingcharacters.h" -#include "llsd.h" -#include "llhandle.h" -#include "llcontrol.h" -#include "llpanel.h" +#include <vector> + +#include <boost/signals2.hpp> + #include "llbutton.h" #include "llcheckboxctrl.h" -#include "llsliderctrl.h" -#include "lllineeditor.h" -#include "lltextbase.h" -#include "lltabcontainer.h" #include "llcombobox.h" +#include "llcontrol.h" +#include "llenvmanager.h" +#include "llfloaterpathfindingcharacters.h" +#include "llfloaterpathfindinglinksets.h" #include "llfloaterreg.h" +#include "llhandle.h" +#include "llpanel.h" #include "llpathfindingnavmeshzone.h" -#include "llpathfindingmanager.h" -#include "llenvmanager.h" #include "llpathfindingpathtool.h" +#include "llpathinglib.h" +#include "llsliderctrl.h" +#include "llsd.h" +#include "lltabcontainer.h" +#include "lltextbase.h" #include "lltoolmgr.h" #include "lltoolfocus.h" -#include "pipeline.h" -#include "llpathinglib.h" +#include "llviewercontrol.h" #include "llviewerparcelmgr.h" +#include "pipeline.h" #define XUI_RENDER_HEATMAP_NONE 0 #define XUI_RENDER_HEATMAP_A 1 @@ -64,12 +69,12 @@ #define XUI_CHARACTER_TYPE_C 3 #define XUI_CHARACTER_TYPE_D 4 -#define XUI_EDIT_TAB_INDEX 0 +#define XUI_VIEW_TAB_INDEX 0 #define XUI_TEST_TAB_INDEX 1 #define SET_SHAPE_RENDER_FLAG(_flag,_type) _flag |= (1U << _type) -#define CONTROL_NAME_RETRIEVE_NEIGHBOR "RetrieveNeighboringRegion" +#define CONTROL_NAME_RETRIEVE_NEIGHBOR "PathfindingRetrieveNeighboringRegion" #define CONTROL_NAME_WALKABLE_OBJECTS "PathfindingWalkable" #define CONTROL_NAME_STATIC_OBSTACLE_OBJECTS "PathfindingObstacle" #define CONTROL_NAME_MATERIAL_VOLUMES "PathfindingMaterial" @@ -79,21 +84,26 @@ #define CONTROL_NAME_HEATMAP_MIN "PathfindingHeatColorBase" #define CONTROL_NAME_HEATMAP_MAX "PathfindingHeatColorMax" #define CONTROL_NAME_NAVMESH_FACE "PathfindingFaceColor" -#define CONTROL_NAME_TEST_PATH_VALID_END "PathfindingStarValidColor" -#define CONTROL_NAME_TEST_PATH_INVALID_END "PathfindingStarInvalidColor" +#define CONTROL_NAME_TEST_PATH_VALID_END "PathfindingTestPathValidEndColor" +#define CONTROL_NAME_TEST_PATH_INVALID_END "PathfindingTestPathInvalidEndColor" #define CONTROL_NAME_TEST_PATH "PathfindingTestPathColor" #define CONTROL_NAME_WATER "PathfindingWaterColor" LLHandle<LLFloaterPathfindingConsole> LLFloaterPathfindingConsole::sInstanceHandle; -extern LLPipeline gPipeline; - //--------------------------------------------------------------------------- // LLFloaterPathfindingConsole //--------------------------------------------------------------------------- BOOL LLFloaterPathfindingConsole::postBuild() { + mViewTestTabContainer = findChild<LLTabContainer>("view_test_tab_container"); + llassert(mViewTestTabContainer != NULL); + mViewTestTabContainer->setCommitCallback(boost::bind(&LLFloaterPathfindingConsole::onTabSwitch, this)); + + mViewTab = findChild<LLPanel>("view_panel"); + llassert(mViewTab != NULL); + mShowLabel = findChild<LLTextBase>("show_label"); llassert(mShowLabel != NULL); @@ -134,41 +144,9 @@ BOOL LLFloaterPathfindingConsole::postBuild() mShowXRayCheckBox = findChild<LLCheckBoxCtrl>("show_xray"); llassert(mShowXRayCheckBox != NULL); - mViewCharactersButton = findChild<LLButton>("view_characters_floater"); - llassert(mViewCharactersButton != NULL); - mViewCharactersButton->setCommitCallback(boost::bind(&LLFloaterPathfindingConsole::onViewCharactersClicked, this)); - - mEditTestTabContainer = findChild<LLTabContainer>("edit_test_tab_container"); - llassert(mEditTestTabContainer != NULL); - mEditTestTabContainer->setCommitCallback(boost::bind(&LLFloaterPathfindingConsole::onTabSwitch, this)); - - mEditTab = findChild<LLPanel>("edit_panel"); - llassert(mEditTab != NULL); - mTestTab = findChild<LLPanel>("test_panel"); llassert(mTestTab != NULL); - mUnfreezeLabel = findChild<LLTextBase>("unfreeze_label"); - llassert(mUnfreezeLabel != NULL); - - mUnfreezeButton = findChild<LLButton>("enter_unfrozen_mode"); - llassert(mUnfreezeButton != NULL); - mUnfreezeButton->setCommitCallback(boost::bind(&LLFloaterPathfindingConsole::onUnfreezeClicked, this)); - - mLinksetsLabel = findChild<LLTextBase>("edit_linksets_label"); - llassert(mLinksetsLabel != NULL); - - mLinksetsButton = findChild<LLButton>("view_and_edit_linksets"); - llassert(mLinksetsButton != NULL); - mLinksetsButton->setCommitCallback(boost::bind(&LLFloaterPathfindingConsole::onViewEditLinksetClicked, this)); - - mFreezeLabel = findChild<LLTextBase>("freeze_label"); - llassert(mFreezeLabel != NULL); - - mFreezeButton = findChild<LLButton>("enter_frozen_mode"); - llassert(mFreezeButton != NULL); - mFreezeButton->setCommitCallback(boost::bind(&LLFloaterPathfindingConsole::onFreezeClicked, this)); - mPathfindingViewerStatus = findChild<LLTextBase>("pathfinding_viewer_status"); llassert(mPathfindingViewerStatus != NULL); @@ -205,10 +183,8 @@ BOOL LLFloaterPathfindingConsole::postBuild() llassert(mClearPathButton != NULL); mClearPathButton->setCommitCallback(boost::bind(&LLFloaterPathfindingConsole::onClearPathClicked, this)); - if (LLPathingLib::getInstance() == NULL) - { - LLPathingLib::initSystem(); - } + mErrorColor = LLUIColorTable::instance().getColor("PathfindingErrorColor"); + mWarningColor = LLUIColorTable::instance().getColor("PathfindingWarningColor"); if (LLPathingLib::getInstance() != NULL) { @@ -237,7 +213,7 @@ void LLFloaterPathfindingConsole::onOpen(const LLSD& pKey) { if (!mNavMeshZoneSlot.connected()) { - mNavMeshZoneSlot = mNavMeshZone.registerNavMeshZoneListener(boost::bind(&LLFloaterPathfindingConsole::onNavMeshZoneCB, this, _1)); + mNavMeshZoneSlot = mNavMeshZone.registerNavMeshZoneListener(boost::bind(&LLFloaterPathfindingConsole::handleNavMeshZoneStatus, this, _1)); } mIsNavMeshUpdating = false; @@ -246,11 +222,6 @@ void LLFloaterPathfindingConsole::onOpen(const LLSD& pKey) fillInColorsForNavMeshVisualization(); } - if (!mAgentStateSlot.connected()) - { - mAgentStateSlot = LLPathfindingManager::getInstance()->registerAgentStateListener(boost::bind(&LLFloaterPathfindingConsole::onAgentStateCB, this, _1)); - } - if (!mRegionBoundarySlot.connected()) { mRegionBoundarySlot = LLEnvManagerNew::instance().setRegionChangeCallback(boost::bind(&LLFloaterPathfindingConsole::onRegionBoundaryCross, this)); @@ -266,11 +237,10 @@ void LLFloaterPathfindingConsole::onOpen(const LLSD& pKey) mPathEventSlot = LLPathfindingPathTool::getInstance()->registerPathEventListener(boost::bind(&LLFloaterPathfindingConsole::onPathEvent, this)); } - setAgentState(LLPathfindingManager::getInstance()->getAgentState()); setDefaultInputs(); updatePathTestStatus(); - if (mEditTestTabContainer->getCurrentPanelIndex() == XUI_TEST_TAB_INDEX) + if (mViewTestTabContainer->getCurrentPanelIndex() == XUI_TEST_TAB_INDEX) { switchIntoTestPathMode(); } @@ -295,11 +265,6 @@ void LLFloaterPathfindingConsole::onClose(bool pIsAppQuitting) mRegionBoundarySlot.disconnect(); } - if (mAgentStateSlot.connected()) - { - mAgentStateSlot.disconnect(); - } - if (mNavMeshZoneSlot.connected()) { mNavMeshZoneSlot.disconnect(); @@ -314,6 +279,7 @@ void LLFloaterPathfindingConsole::onClose(bool pIsAppQuitting) setDefaultInputs(); setConsoleState(kConsoleStateUnknown); cleanupRenderableRestoreItems(); + LLFloater::onClose(pIsAppQuitting); } @@ -321,7 +287,7 @@ LLHandle<LLFloaterPathfindingConsole> LLFloaterPathfindingConsole::getInstanceHa { if (sInstanceHandle.isDead()) { - LLFloaterPathfindingConsole *floaterInstance = LLFloaterReg::getTypedInstance<LLFloaterPathfindingConsole>("pathfinding_console"); + LLFloaterPathfindingConsole *floaterInstance = LLFloaterReg::findTypedInstance<LLFloaterPathfindingConsole>("pathfinding_console"); if (floaterInstance != NULL) { sInstanceHandle = floaterInstance->mSelfHandle; @@ -486,11 +452,13 @@ void LLFloaterPathfindingConsole::setRenderHeatmapType(LLPathingLib::LLPLCharact LLFloaterPathfindingConsole::LLFloaterPathfindingConsole(const LLSD& pSeed) : LLFloater(pSeed), mSelfHandle(), - mShowLabel(), + mViewTestTabContainer(NULL), + mViewTab(NULL), + mShowLabel(NULL), mShowWorldCheckBox(NULL), mShowWorldMovablesOnlyCheckBox(NULL), mShowNavMeshCheckBox(NULL), - mShowNavMeshWalkabilityLabel(), + mShowNavMeshWalkabilityLabel(NULL), mShowNavMeshWalkabilityComboBox(NULL), mShowWalkablesCheckBox(NULL), mShowStaticObstaclesCheckBox(NULL), @@ -500,16 +468,7 @@ LLFloaterPathfindingConsole::LLFloaterPathfindingConsole(const LLSD& pSeed) mShowXRayCheckBox(NULL), mPathfindingViewerStatus(NULL), mPathfindingSimulatorStatus(NULL), - mViewCharactersButton(NULL), - mEditTestTabContainer(NULL), - mEditTab(NULL), mTestTab(NULL), - mUnfreezeLabel(NULL), - mUnfreezeButton(NULL), - mLinksetsLabel(NULL), - mLinksetsButton(NULL), - mFreezeLabel(NULL), - mFreezeButton(NULL), mCtrlClickLabel(), mShiftClickLabel(), mCharacterWidthLabel(), @@ -519,10 +478,11 @@ LLFloaterPathfindingConsole::LLFloaterPathfindingConsole(const LLSD& pSeed) mCharacterTypeComboBox(NULL), mPathTestingStatus(NULL), mClearPathButton(NULL), + mErrorColor(), + mWarningColor(), mNavMeshZoneSlot(), mNavMeshZone(), mIsNavMeshUpdating(false), - mAgentStateSlot(), mRegionBoundarySlot(), mTeleportFailedSlot(), mPathEventSlot(), @@ -540,9 +500,10 @@ LLFloaterPathfindingConsole::LLFloaterPathfindingConsole(const LLSD& pSeed) mSavedSettingNavMeshFaceSlot(), mSavedSettingTestPathValidEndSlot(), mSavedSettingTestPathInvalidEndSlot(), - mSavedSettingWaterSlot(), mSavedSettingTestPathSlot(), - mConsoleState(kConsoleStateUnknown) + mSavedSettingWaterSlot(), + mConsoleState(kConsoleStateUnknown), + mRenderableRestoreList() { mSelfHandle.bind(this); } @@ -551,6 +512,18 @@ LLFloaterPathfindingConsole::~LLFloaterPathfindingConsole() { } +void LLFloaterPathfindingConsole::onTabSwitch() +{ + if (mViewTestTabContainer->getCurrentPanelIndex() == XUI_TEST_TAB_INDEX) + { + switchIntoTestPathMode(); + } + else + { + switchOutOfTestPathMode(); + } +} + void LLFloaterPathfindingConsole::onShowWorldSet() { setWorldRenderState(); @@ -569,43 +542,12 @@ void LLFloaterPathfindingConsole::onShowNavMeshSet() void LLFloaterPathfindingConsole::onShowWalkabilitySet() { - LLPathingLib::getInstance()->setNavMeshMaterialType(getRenderHeatmapType()); -} - -void LLFloaterPathfindingConsole::onViewCharactersClicked() -{ - LLFloaterPathfindingCharacters::openCharactersViewer(); -} - -void LLFloaterPathfindingConsole::onTabSwitch() -{ - if (mEditTestTabContainer->getCurrentPanelIndex() == XUI_TEST_TAB_INDEX) - { - switchIntoTestPathMode(); - } - else + if (LLPathingLib::getInstance() != NULL) { - switchOutOfTestPathMode(); + LLPathingLib::getInstance()->setNavMeshMaterialType(getRenderHeatmapType()); } } -void LLFloaterPathfindingConsole::onUnfreezeClicked() -{ - mUnfreezeButton->setEnabled(FALSE); - LLPathfindingManager::getInstance()->requestSetAgentState(LLPathfindingManager::kAgentStateUnfrozen); -} - -void LLFloaterPathfindingConsole::onFreezeClicked() -{ - mFreezeButton->setEnabled(FALSE); - LLPathfindingManager::getInstance()->requestSetAgentState(LLPathfindingManager::kAgentStateFrozen); -} - -void LLFloaterPathfindingConsole::onViewEditLinksetClicked() -{ - LLFloaterPathfindingLinksets::openLinksetsEditor(); -} - void LLFloaterPathfindingConsole::onCharacterWidthSet() { updateCharacterWidth(); @@ -621,7 +563,7 @@ void LLFloaterPathfindingConsole::onClearPathClicked() clearPath(); } -void LLFloaterPathfindingConsole::onNavMeshZoneCB(LLPathfindingNavMeshZone::ENavMeshZoneRequestStatus pNavMeshZoneRequestStatus) +void LLFloaterPathfindingConsole::handleNavMeshZoneStatus(LLPathfindingNavMeshZone::ENavMeshZoneRequestStatus pNavMeshZoneRequestStatus) { switch (pNavMeshZoneRequestStatus) { @@ -658,11 +600,6 @@ void LLFloaterPathfindingConsole::onNavMeshZoneCB(LLPathfindingNavMeshZone::ENav } } -void LLFloaterPathfindingConsole::onAgentStateCB(LLPathfindingManager::EAgentState pAgentState) -{ - setAgentState(pAgentState); -} - void LLFloaterPathfindingConsole::onRegionBoundaryCross() { initializeNavMeshZoneForCurrentRegion(); @@ -706,8 +643,9 @@ void LLFloaterPathfindingConsole::onPathEvent() void LLFloaterPathfindingConsole::setDefaultInputs() { - mEditTestTabContainer->selectTab(XUI_EDIT_TAB_INDEX); + mViewTestTabContainer->selectTab(XUI_VIEW_TAB_INDEX); setRenderWorld(TRUE); + setRenderWorldMovablesOnly(FALSE); setRenderNavMesh(FALSE); setRenderWalkables(FALSE); setRenderMaterialVolumes(FALSE); @@ -715,21 +653,21 @@ void LLFloaterPathfindingConsole::setDefaultInputs() setRenderExclusionVolumes(FALSE); setRenderWaterPlane(FALSE); setRenderXRay(FALSE); - setRenderWorldMovablesOnly(FALSE); } void LLFloaterPathfindingConsole::setConsoleState(EConsoleState pConsoleState) { mConsoleState = pConsoleState; updateControlsOnConsoleState(); - updateStatusOnConsoleState(); + updateViewerStatusOnConsoleState(); + updateSimulatorStatusOnConsoleState(); } void LLFloaterPathfindingConsole::setWorldRenderState() { BOOL renderWorld = isRenderWorld(); - mShowWorldMovablesOnlyCheckBox->setEnabled(renderWorld); + mShowWorldMovablesOnlyCheckBox->setEnabled(renderWorld && mShowWorldCheckBox->getEnabled()); if (!renderWorld) { mShowWorldMovablesOnlyCheckBox->set(FALSE); @@ -763,6 +701,8 @@ void LLFloaterPathfindingConsole::updateControlsOnConsoleState() case kConsoleStateUnknown : case kConsoleStateRegionNotEnabled : case kConsoleStateRegionLoading : + mViewTestTabContainer->selectTab(XUI_VIEW_TAB_INDEX); + mViewTab->setEnabled(FALSE); mShowLabel->setEnabled(FALSE); mShowWorldCheckBox->setEnabled(FALSE); mShowWorldMovablesOnlyCheckBox->setEnabled(FALSE); @@ -775,8 +715,6 @@ void LLFloaterPathfindingConsole::updateControlsOnConsoleState() mShowExclusionVolumesCheckBox->setEnabled(FALSE); mShowRenderWaterPlaneCheckBox->setEnabled(FALSE); mShowXRayCheckBox->setEnabled(FALSE); - mViewCharactersButton->setEnabled(FALSE); - mEditTestTabContainer->selectTab(0); mTestTab->setEnabled(FALSE); mCtrlClickLabel->setEnabled(FALSE); mShiftClickLabel->setEnabled(FALSE); @@ -789,6 +727,8 @@ void LLFloaterPathfindingConsole::updateControlsOnConsoleState() clearPath(); break; case kConsoleStateLibraryNotImplemented : + mViewTestTabContainer->selectTab(XUI_VIEW_TAB_INDEX); + mViewTab->setEnabled(FALSE); mShowLabel->setEnabled(FALSE); mShowWorldCheckBox->setEnabled(FALSE); mShowWorldMovablesOnlyCheckBox->setEnabled(FALSE); @@ -801,8 +741,6 @@ void LLFloaterPathfindingConsole::updateControlsOnConsoleState() mShowExclusionVolumesCheckBox->setEnabled(FALSE); mShowRenderWaterPlaneCheckBox->setEnabled(FALSE); mShowXRayCheckBox->setEnabled(FALSE); - mViewCharactersButton->setEnabled(TRUE); - mEditTestTabContainer->selectTab(0); mTestTab->setEnabled(FALSE); mCtrlClickLabel->setEnabled(FALSE); mShiftClickLabel->setEnabled(FALSE); @@ -817,6 +755,8 @@ void LLFloaterPathfindingConsole::updateControlsOnConsoleState() case kConsoleStateCheckingVersion : case kConsoleStateDownloading : case kConsoleStateError : + mViewTestTabContainer->selectTab(XUI_VIEW_TAB_INDEX); + mViewTab->setEnabled(FALSE); mShowLabel->setEnabled(FALSE); mShowWorldCheckBox->setEnabled(FALSE); mShowWorldMovablesOnlyCheckBox->setEnabled(FALSE); @@ -829,8 +769,6 @@ void LLFloaterPathfindingConsole::updateControlsOnConsoleState() mShowExclusionVolumesCheckBox->setEnabled(FALSE); mShowRenderWaterPlaneCheckBox->setEnabled(FALSE); mShowXRayCheckBox->setEnabled(FALSE); - mViewCharactersButton->setEnabled(TRUE); - mEditTestTabContainer->selectTab(0); mTestTab->setEnabled(FALSE); mCtrlClickLabel->setEnabled(FALSE); mShiftClickLabel->setEnabled(FALSE); @@ -843,6 +781,7 @@ void LLFloaterPathfindingConsole::updateControlsOnConsoleState() clearPath(); break; case kConsoleStateHasNavMesh : + mViewTab->setEnabled(TRUE); mShowLabel->setEnabled(TRUE); mShowWorldCheckBox->setEnabled(TRUE); setWorldRenderState(); @@ -854,7 +793,6 @@ void LLFloaterPathfindingConsole::updateControlsOnConsoleState() mShowExclusionVolumesCheckBox->setEnabled(TRUE); mShowRenderWaterPlaneCheckBox->setEnabled(TRUE); mShowXRayCheckBox->setEnabled(TRUE); - mViewCharactersButton->setEnabled(TRUE); mTestTab->setEnabled(TRUE); mCtrlClickLabel->setEnabled(TRUE); mShiftClickLabel->setEnabled(TRUE); @@ -871,44 +809,34 @@ void LLFloaterPathfindingConsole::updateControlsOnConsoleState() } } -void LLFloaterPathfindingConsole::updateStatusOnConsoleState() +void LLFloaterPathfindingConsole::updateViewerStatusOnConsoleState() { - static const LLColor4 errorColor = LLUIColorTable::instance().getColor("PathfindingErrorColor"); - static const LLColor4 warningColor = LLUIColorTable::instance().getColor("PathfindingWarningColor"); - - std::string simulatorStatusText(""); std::string viewerStatusText(""); LLStyle::Params viewerStyleParams; switch (mConsoleState) { case kConsoleStateUnknown : - simulatorStatusText = getString("navmesh_simulator_status_unknown"); viewerStatusText = getString("navmesh_viewer_status_unknown"); - viewerStyleParams.color = errorColor; + viewerStyleParams.color = mErrorColor; break; case kConsoleStateLibraryNotImplemented : - simulatorStatusText = getString("navmesh_simulator_status_unknown"); viewerStatusText = getString("navmesh_viewer_status_library_not_implemented"); - viewerStyleParams.color = errorColor; + viewerStyleParams.color = mErrorColor; break; case kConsoleStateRegionNotEnabled : - simulatorStatusText = getString("navmesh_simulator_status_unknown"); viewerStatusText = getString("navmesh_viewer_status_region_not_enabled"); - viewerStyleParams.color = errorColor; + viewerStyleParams.color = mErrorColor; break; case kConsoleStateRegionLoading : - simulatorStatusText = getString("navmesh_simulator_status_unknown"); viewerStatusText = getString("navmesh_viewer_status_region_loading"); - viewerStyleParams.color = warningColor; + viewerStyleParams.color = mWarningColor; break; case kConsoleStateCheckingVersion : - simulatorStatusText = getString("navmesh_simulator_status_unknown"); viewerStatusText = getString("navmesh_viewer_status_checking_version"); - viewerStyleParams.color = warningColor; + viewerStyleParams.color = mWarningColor; break; case kConsoleStateDownloading : - simulatorStatusText = getSimulatorStatusText(); if (mIsNavMeshUpdating) { viewerStatusText = getString("navmesh_viewer_status_updating"); @@ -917,93 +845,82 @@ void LLFloaterPathfindingConsole::updateStatusOnConsoleState() { viewerStatusText = getString("navmesh_viewer_status_downloading"); } - viewerStyleParams.color = warningColor; + viewerStyleParams.color = mWarningColor; break; case kConsoleStateHasNavMesh : - simulatorStatusText = getSimulatorStatusText(); viewerStatusText = getString("navmesh_viewer_status_has_navmesh"); break; case kConsoleStateError : - simulatorStatusText = getString("navmesh_simulator_status_unknown"); viewerStatusText = getString("navmesh_viewer_status_error"); - viewerStyleParams.color = errorColor; + viewerStyleParams.color = mErrorColor; break; default : - simulatorStatusText = getString("navmesh_simulator_status_unknown"); viewerStatusText = getString("navmesh_viewer_status_unknown"); - viewerStyleParams.color = errorColor; + viewerStyleParams.color = mErrorColor; llassert(0); break; } mPathfindingViewerStatus->setText((LLStringExplicit)viewerStatusText, viewerStyleParams); - mPathfindingSimulatorStatus->setText((LLStringExplicit)simulatorStatusText); } -std::string LLFloaterPathfindingConsole::getSimulatorStatusText() const +void LLFloaterPathfindingConsole::updateSimulatorStatusOnConsoleState() { std::string simulatorStatusText(""); + LLStyle::Params simulatorStyleParams; -#ifdef DEPRECATED_UNVERSIONED_NAVMESH - if (LLPathfindingManager::getInstance()->isPathfindingNavMeshVersioningEnabledForCurrentRegionXXX()) + switch (mConsoleState) { + case kConsoleStateUnknown : + case kConsoleStateLibraryNotImplemented : + case kConsoleStateRegionNotEnabled : + case kConsoleStateRegionLoading : + case kConsoleStateCheckingVersion : + case kConsoleStateError : + simulatorStatusText = getString("navmesh_simulator_status_unknown"); + simulatorStyleParams.color = mErrorColor; + break; + case kConsoleStateDownloading : + case kConsoleStateHasNavMesh : switch (mNavMeshZone.getNavMeshZoneStatus()) { case LLPathfindingNavMeshZone::kNavMeshZonePending : simulatorStatusText = getString("navmesh_simulator_status_pending"); + simulatorStyleParams.color = mWarningColor; break; case LLPathfindingNavMeshZone::kNavMeshZoneBuilding : simulatorStatusText = getString("navmesh_simulator_status_building"); + simulatorStyleParams.color = mWarningColor; break; case LLPathfindingNavMeshZone::kNavMeshZoneSomePending : simulatorStatusText = getString("navmesh_simulator_status_some_pending"); + simulatorStyleParams.color = mWarningColor; break; case LLPathfindingNavMeshZone::kNavMeshZoneSomeBuilding : simulatorStatusText = getString("navmesh_simulator_status_some_building"); + simulatorStyleParams.color = mWarningColor; break; case LLPathfindingNavMeshZone::kNavMeshZonePendingAndBuilding : simulatorStatusText = getString("navmesh_simulator_status_pending_and_building"); + simulatorStyleParams.color = mWarningColor; break; case LLPathfindingNavMeshZone::kNavMeshZoneComplete : simulatorStatusText = getString("navmesh_simulator_status_complete"); break; default : simulatorStatusText = getString("navmesh_simulator_status_unknown"); + simulatorStyleParams.color = mErrorColor; 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 : + default : simulatorStatusText = getString("navmesh_simulator_status_unknown"); + simulatorStyleParams.color = mErrorColor; + llassert(0); break; } -#endif // DEPRECATED_UNVERSIONED_NAVMESH - return simulatorStatusText; + mPathfindingSimulatorStatus->setText((LLStringExplicit)simulatorStatusText, simulatorStyleParams); } void LLFloaterPathfindingConsole::initializeNavMeshZoneForCurrentRegion() @@ -1028,44 +945,6 @@ void LLFloaterPathfindingConsole::cleanupRenderableRestoreItems() } } -void LLFloaterPathfindingConsole::setAgentState(LLPathfindingManager::EAgentState pAgentState) -{ - switch (LLPathfindingManager::getInstance()->getLastKnownNonErrorAgentState()) - { - case LLPathfindingManager::kAgentStateUnknown : - case LLPathfindingManager::kAgentStateNotEnabled : - mEditTab->setEnabled(FALSE); - mUnfreezeLabel->setEnabled(FALSE); - mUnfreezeButton->setEnabled(FALSE); - mLinksetsLabel->setEnabled(FALSE); - mLinksetsButton->setEnabled(FALSE); - mFreezeLabel->setEnabled(FALSE); - mFreezeButton->setEnabled(FALSE); - break; - case LLPathfindingManager::kAgentStateFrozen : - mEditTab->setEnabled(TRUE); - mUnfreezeLabel->setEnabled(TRUE); - mUnfreezeButton->setEnabled(TRUE); - mLinksetsLabel->setEnabled(FALSE); - mLinksetsButton->setEnabled(FALSE); - mFreezeLabel->setEnabled(FALSE); - mFreezeButton->setEnabled(FALSE); - break; - case LLPathfindingManager::kAgentStateUnfrozen : - mEditTab->setEnabled(TRUE); - mUnfreezeLabel->setEnabled(FALSE); - mUnfreezeButton->setEnabled(FALSE); - mLinksetsLabel->setEnabled(TRUE); - mLinksetsButton->setEnabled(TRUE); - mFreezeLabel->setEnabled(TRUE); - mFreezeButton->setEnabled(TRUE); - break; - default : - llassert(0); - break; - } -} - void LLFloaterPathfindingConsole::switchIntoTestPathMode() { if (LLPathingLib::getInstance() != NULL) @@ -1136,9 +1015,6 @@ void LLFloaterPathfindingConsole::clearPath() void LLFloaterPathfindingConsole::updatePathTestStatus() { - static const LLColor4 errorColor = LLUIColorTable::instance().getColor("PathfindingErrorColor"); - static const LLColor4 warningColor = LLUIColorTable::instance().getColor("PathfindingWarningColor"); - std::string statusText(""); LLStyle::Params styleParams; @@ -1146,42 +1022,42 @@ void LLFloaterPathfindingConsole::updatePathTestStatus() { case LLPathfindingPathTool::kPathStatusUnknown : statusText = getString("pathing_unknown"); - styleParams.color = errorColor; + styleParams.color = mErrorColor; break; case LLPathfindingPathTool::kPathStatusChooseStartAndEndPoints : statusText = getString("pathing_choose_start_and_end_points"); - styleParams.color = warningColor; + styleParams.color = mWarningColor; break; case LLPathfindingPathTool::kPathStatusChooseStartPoint : statusText = getString("pathing_choose_start_point"); - styleParams.color = warningColor; + styleParams.color = mWarningColor; break; case LLPathfindingPathTool::kPathStatusChooseEndPoint : statusText = getString("pathing_choose_end_point"); - styleParams.color = warningColor; + styleParams.color = mWarningColor; break; case LLPathfindingPathTool::kPathStatusHasValidPath : statusText = getString("pathing_path_valid"); break; case LLPathfindingPathTool::kPathStatusHasInvalidPath : statusText = getString("pathing_path_invalid"); - styleParams.color = errorColor; + styleParams.color = mErrorColor; break; case LLPathfindingPathTool::kPathStatusNotEnabled : statusText = getString("pathing_region_not_enabled"); - styleParams.color = errorColor; + styleParams.color = mErrorColor; break; case LLPathfindingPathTool::kPathStatusNotImplemented : statusText = getString("pathing_library_not_implemented"); - styleParams.color = errorColor; + styleParams.color = mErrorColor; break; case LLPathfindingPathTool::kPathStatusError : statusText = getString("pathing_error"); - styleParams.color = errorColor; + styleParams.color = mErrorColor; break; default : statusText = getString("pathing_unknown"); - styleParams.color = errorColor; + styleParams.color = mErrorColor; break; } @@ -1333,6 +1209,10 @@ void LLFloaterPathfindingConsole::deregisterSavedSettingsListeners() { mSavedSettingTestPathSlot.disconnect(); } + if (mSavedSettingWaterSlot.connected()) + { + mSavedSettingWaterSlot.disconnect(); + } } void LLFloaterPathfindingConsole::handleRetrieveNeighborChange(LLControlVariable *pControl, const LLSD &pNewValue) |