diff options
| author | Todd Stinson <stinson@lindenlab.com> | 2012-02-16 14:55:21 -0800 | 
|---|---|---|
| committer | Todd Stinson <stinson@lindenlab.com> | 2012-02-16 14:55:21 -0800 | 
| commit | e156e9ed03fd16af36e2b28823f07658f4d9b0c8 (patch) | |
| tree | 0b5f7ca3cc5e44bcc3165f662abea99e9bcfbe6b /indra | |
| parent | 70f8225a30c80d26ca349a8f63fa8f5189ae4f2b (diff) | |
PATH-292: First pass at implementing the new design of the linksets floater.
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/llfilteredpathfindinglinksets.cpp | 59 | ||||
| -rw-r--r-- | indra/newview/llfilteredpathfindinglinksets.h | 22 | ||||
| -rw-r--r-- | indra/newview/llfloaterpathfindinglinksets.cpp | 337 | ||||
| -rw-r--r-- | indra/newview/llfloaterpathfindinglinksets.h | 54 | ||||
| -rw-r--r-- | indra/newview/llpathfindinglinkset.cpp | 165 | ||||
| -rw-r--r-- | indra/newview/llpathfindinglinkset.h | 61 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml | 864 | 
7 files changed, 872 insertions, 690 deletions
| diff --git a/indra/newview/llfilteredpathfindinglinksets.cpp b/indra/newview/llfilteredpathfindinglinksets.cpp index aaff2bcc68..b76d95737c 100644 --- a/indra/newview/llfilteredpathfindinglinksets.cpp +++ b/indra/newview/llfilteredpathfindinglinksets.cpp @@ -116,9 +116,7 @@ LLFilteredPathfindingLinksets::LLFilteredPathfindingLinksets()  	mIsFiltersDirty(false),
  	mNameFilter(),
  	mDescriptionFilter(),
 -	mIsWalkableFilter(true),
 -	mIsObstacleFilter(true),
 -	mIsIgnoredFilter(true)
 +	mLinksetUseFilter(LLPathfindingLinkset::kUnknown)
  {
  }
 @@ -128,9 +126,7 @@ LLFilteredPathfindingLinksets::LLFilteredPathfindingLinksets(const LLSD& pLinkse  	mIsFiltersDirty(false),
  	mNameFilter(),
  	mDescriptionFilter(),
 -	mIsWalkableFilter(true),
 -	mIsObstacleFilter(true),
 -	mIsIgnoredFilter(true)
 +	mLinksetUseFilter(LLPathfindingLinkset::kUnknown)
  {
  	setPathfindingLinksets(pLinksetItems);
  }
 @@ -141,9 +137,7 @@ LLFilteredPathfindingLinksets::LLFilteredPathfindingLinksets(const LLFilteredPat  	mIsFiltersDirty(pOther.mIsFiltersDirty),
  	mNameFilter(pOther.mNameFilter),
  	mDescriptionFilter(pOther.mDescriptionFilter),
 -	mIsWalkableFilter(pOther.mIsWalkableFilter),
 -	mIsObstacleFilter(pOther.mIsObstacleFilter),
 -	mIsIgnoredFilter(pOther.mIsIgnoredFilter)
 +	mLinksetUseFilter(pOther.mLinksetUseFilter)
  {
  }
 @@ -219,7 +213,8 @@ const LLFilteredPathfindingLinksets::PathfindingLinksetMap& LLFilteredPathfindin  BOOL LLFilteredPathfindingLinksets::isFiltersActive() const
  {
 -	return (mNameFilter.isActive() || mDescriptionFilter.isActive() || !mIsWalkableFilter || !mIsObstacleFilter || !mIsIgnoredFilter);
 +	return (mNameFilter.isActive() || mDescriptionFilter.isActive() ||
 +		(mLinksetUseFilter != LLPathfindingLinkset::kUnknown));
  }
  void LLFilteredPathfindingLinksets::setNameFilter(const std::string& pNameFilter)
 @@ -242,46 +237,22 @@ const std::string& LLFilteredPathfindingLinksets::getDescriptionFilter() const  	return mDescriptionFilter.get();
  }
 -void LLFilteredPathfindingLinksets::setWalkableFilter(BOOL pWalkableFilter)
 +void LLFilteredPathfindingLinksets::setLinksetUseFilter(LLPathfindingLinkset::ELinksetUse pLinksetUse)
  {
 -	mIsFiltersDirty = (mIsFiltersDirty || (mIsWalkableFilter == pWalkableFilter));
 -	mIsWalkableFilter = pWalkableFilter;
 +	mIsFiltersDirty = (mIsFiltersDirty || (mLinksetUseFilter == pLinksetUse));
 +	mLinksetUseFilter = pLinksetUse;
  }
 -BOOL LLFilteredPathfindingLinksets::isWalkableFilter() const
 +LLPathfindingLinkset::ELinksetUse LLFilteredPathfindingLinksets::getLinksetUseFilter() const
  {
 -	return mIsWalkableFilter;
 -}
 -
 -void LLFilteredPathfindingLinksets::setObstacleFilter(BOOL pObstacleFilter)
 -{
 -	mIsFiltersDirty = (mIsFiltersDirty || (mIsObstacleFilter == pObstacleFilter));
 -	mIsObstacleFilter = pObstacleFilter;
 -}
 -
 -BOOL LLFilteredPathfindingLinksets::isObstacleFilter() const
 -{
 -	return mIsObstacleFilter;
 -}
 -
 -void LLFilteredPathfindingLinksets::setIgnoredFilter(BOOL pIgnoredFilter)
 -{
 -	mIsFiltersDirty = (mIsFiltersDirty || (mIsIgnoredFilter == pIgnoredFilter));
 -	mIsIgnoredFilter = pIgnoredFilter;
 -}
 -
 -BOOL LLFilteredPathfindingLinksets::isIgnoredFilter() const
 -{
 -	return mIsIgnoredFilter;
 +	return mLinksetUseFilter;
  }
  void LLFilteredPathfindingLinksets::clearFilters()
  {
  	mNameFilter.clear();
  	mDescriptionFilter.clear();
 -	mIsWalkableFilter = true;
 -	mIsObstacleFilter = true;
 -	mIsIgnoredFilter = true;
 +	mLinksetUseFilter = LLPathfindingLinkset::kUnknown;
  	mIsFiltersDirty = false;
  }
 @@ -305,9 +276,7 @@ void LLFilteredPathfindingLinksets::applyFilters()  BOOL LLFilteredPathfindingLinksets::doesMatchFilters(const LLPathfindingLinkset& pLinkset) const
  {
 -	return (((mIsWalkableFilter && (pLinkset.getPathState() == LLPathfindingLinkset::kWalkable)) ||
 -			 (mIsObstacleFilter && (pLinkset.getPathState() == LLPathfindingLinkset::kObstacle)) ||
 -			 (mIsIgnoredFilter && (pLinkset.getPathState() == LLPathfindingLinkset::kIgnored))) &&
 -			(!mNameFilter.isActive() || mNameFilter.doesMatch(pLinkset.getName())) &&
 -			(!mDescriptionFilter.isActive() || mDescriptionFilter.doesMatch(pLinkset.getDescription())));
 +	return (((mLinksetUseFilter == LLPathfindingLinkset::kUnknown) || (mLinksetUseFilter == pLinkset.getLinksetUse())) &&
 +		(!mNameFilter.isActive() || mNameFilter.doesMatch(pLinkset.getName())) &&
 +		(!mDescriptionFilter.isActive() || mDescriptionFilter.doesMatch(pLinkset.getDescription())));
  }
 diff --git a/indra/newview/llfilteredpathfindinglinksets.h b/indra/newview/llfilteredpathfindinglinksets.h index de9b3a5e15..388818c32b 100644 --- a/indra/newview/llfilteredpathfindinglinksets.h +++ b/indra/newview/llfilteredpathfindinglinksets.h @@ -30,9 +30,9 @@  #include <string>
  #include <map>
 +#include "llpathfindinglinkset.h"
  class LLSD;
 -class LLPathfindingLinkset;
  class FilterString
  {
 @@ -80,14 +80,8 @@ public:  	void                         setDescriptionFilter(const std::string& pDescriptionFilter);
  	const std::string&           getDescriptionFilter() const;
 -	void                         setWalkableFilter(BOOL pWalkableFilter);
 -	BOOL                         isWalkableFilter() const;
 -
 -	void                         setObstacleFilter(BOOL pObstacleFilter);
 -	BOOL                         isObstacleFilter() const;
 -
 -	void                         setIgnoredFilter(BOOL pIgnoredFilter);
 -	BOOL                         isIgnoredFilter() const;
 +	void                              setLinksetUseFilter(LLPathfindingLinkset::ELinksetUse pLinksetUse);
 +	LLPathfindingLinkset::ELinksetUse getLinksetUseFilter() const;
  	void                         clearFilters();
 @@ -97,12 +91,10 @@ private:  	PathfindingLinksetMap mAllLinksets;
  	PathfindingLinksetMap mFilteredLinksets;
 -	bool                  mIsFiltersDirty;
 -	FilterString          mNameFilter;
 -	FilterString          mDescriptionFilter;
 -	BOOL                  mIsWalkableFilter;
 -	BOOL                  mIsObstacleFilter;
 -	BOOL                  mIsIgnoredFilter;
 +	bool                              mIsFiltersDirty;
 +	FilterString                      mNameFilter;
 +	FilterString                      mDescriptionFilter;
 +	LLPathfindingLinkset::ELinksetUse mLinksetUseFilter;
  	void applyFilters();
  	BOOL doesMatchFilters(const LLPathfindingLinkset& pLinkset) const;
 diff --git a/indra/newview/llfloaterpathfindinglinksets.cpp b/indra/newview/llfloaterpathfindinglinksets.cpp index 5c7f288226..ac95483a66 100644 --- a/indra/newview/llfloaterpathfindinglinksets.cpp +++ b/indra/newview/llfloaterpathfindinglinksets.cpp @@ -27,30 +27,33 @@  #include "llviewerprecompiledheaders.h"
  #include "llfloater.h"
 +#include "llfloaterreg.h"
  #include "llfloaterpathfindinglinksets.h"
  #include "llsd.h"
 +#include "lluuid.h"
  #include "v3math.h"
  #include "lltextvalidate.h"
  #include "llagent.h"
  #include "llhandle.h"
 -#include "llfloaterreg.h"
  #include "lltextbase.h"
  #include "lllineeditor.h"
  #include "llscrolllistitem.h"
  #include "llscrolllistctrl.h"
 -#include "llcheckboxctrl.h"
 -#include "llradiogroup.h"
 +#include "llcombobox.h"
  #include "llbutton.h"
  #include "llresmgr.h"
  #include "llviewerregion.h"
  #include "llhttpclient.h"
 -#include "lluuid.h"
  #include "llpathfindinglinkset.h"
  #include "llfilteredpathfindinglinksets.h"
 -#define XUI_PATH_STATE_WALKABLE 1
 -#define XUI_PATH_STATE_OBSTACLE 2
 -#define XUI_PATH_STATE_IGNORED 3
 +#define XUI_LINKSET_USE_NONE             0
 +#define XUI_LINKSET_USE_WALKABLE         1
 +#define XUI_LINKSET_USE_STATIC_OBSTACLE  2
 +#define XUI_LINKSET_USE_DYNAMIC_OBSTACLE 3
 +#define XUI_LINKSET_USE_MATERIAL_VOLUME  4
 +#define XUI_LINKSET_USE_EXCLUSION_VOLUME 5
 +#define XUI_LINKSET_USE_DYNAMIC_PHANTOM  6
  //---------------------------------------------------------------------------
  // NavMeshDataGetResponder
 @@ -100,11 +103,24 @@ private:  BOOL LLFloaterPathfindingLinksets::postBuild()
  {
 -	childSetAction("apply_filters", boost::bind(&LLFloaterPathfindingLinksets::onApplyFiltersClicked, this));
 +	childSetAction("apply_filters", boost::bind(&LLFloaterPathfindingLinksets::onApplyAllFilters, this));
  	childSetAction("clear_filters", boost::bind(&LLFloaterPathfindingLinksets::onClearFiltersClicked, this));
 -	childSetAction("refresh_linksets_list", boost::bind(&LLFloaterPathfindingLinksets::onRefreshLinksetsClicked, this));
 -	childSetAction("select_all_linksets", boost::bind(&LLFloaterPathfindingLinksets::onSelectAllLinksetsClicked, this));
 -	childSetAction("select_none_linksets", boost::bind(&LLFloaterPathfindingLinksets::onSelectNoneLinksetsClicked, this));
 +
 +	mFilterByName = findChild<LLLineEditor>("filter_by_name");
 +	llassert(mFilterByName != NULL);
 +	mFilterByName->setCommitCallback(boost::bind(&LLFloaterPathfindingLinksets::onApplyAllFilters, this));
 +	mFilterByName->setSelectAllonFocusReceived(true);
 +	mFilterByName->setCommitOnFocusLost(true);
 +
 +	mFilterByDescription = findChild<LLLineEditor>("filter_by_description");
 +	llassert(mFilterByDescription != NULL);
 +	mFilterByDescription->setCommitCallback(boost::bind(&LLFloaterPathfindingLinksets::onApplyAllFilters, this));
 +	mFilterByDescription->setSelectAllonFocusReceived(true);
 +	mFilterByDescription->setCommitOnFocusLost(true);
 +
 +	mFilterByLinksetUse = findChild<LLComboBox>("filter_by_linkset_use");
 +	llassert(mFilterByLinksetUse != NULL);
 +	mFilterByLinksetUse->setCommitCallback(boost::bind(&LLFloaterPathfindingLinksets::onApplyAllFilters, this));
  	mLinksetsScrollList = findChild<LLScrollListCtrl>("pathfinding_linksets");
  	llassert(mLinksetsScrollList != NULL);
 @@ -115,41 +131,40 @@ BOOL LLFloaterPathfindingLinksets::postBuild()  	mLinksetsStatus = findChild<LLTextBase>("linksets_status");
  	llassert(mLinksetsStatus != NULL);
 -	mFilterByName = findChild<LLLineEditor>("filter_by_name");
 -	llassert(mFilterByName != NULL);
 -	mFilterByName->setCommitCallback(boost::bind(&LLFloaterPathfindingLinksets::onApplyFiltersClicked, this));
 -	mFilterByName->setSelectAllonFocusReceived(true);
 -	mFilterByName->setCommitOnFocusLost(true);
 +	mRefreshListButton = findChild<LLButton>("refresh_linksets_list");
 +	llassert(mRefreshListButton != NULL);
 +	mRefreshListButton->setCommitCallback(boost::bind(&LLFloaterPathfindingLinksets::onRefreshLinksetsClicked, this));
 -	mFilterByDescription = findChild<LLLineEditor>("filter_by_description");
 -	llassert(mFilterByDescription != NULL);
 -	mFilterByDescription->setCommitCallback(boost::bind(&LLFloaterPathfindingLinksets::onApplyFiltersClicked, this));
 -	mFilterByDescription->setSelectAllonFocusReceived(true);
 -	mFilterByDescription->setCommitOnFocusLost(true);
 +	mSelectAllButton = findChild<LLButton>("select_all_linksets");
 +	llassert(mSelectAllButton != NULL);
 +	mSelectAllButton->setCommitCallback(boost::bind(&LLFloaterPathfindingLinksets::onSelectAllLinksetsClicked, this));
 -	mFilterByWalkable = findChild<LLCheckBoxCtrl>("filter_by_walkable");
 -	llassert(mFilterByWalkable != NULL);
 -	mFilterByWalkable->setCommitCallback(boost::bind(&LLFloaterPathfindingLinksets::onApplyFiltersClicked, this));
 +	mSelectNoneButton = findChild<LLButton>("select_none_linksets");
 +	llassert(mSelectNoneButton != NULL);
 +	mSelectNoneButton->setCommitCallback(boost::bind(&LLFloaterPathfindingLinksets::onSelectNoneLinksetsClicked, this));
 -	mFilterByObstacle = findChild<LLCheckBoxCtrl>("filter_by_obstacle");
 -	llassert(mFilterByObstacle != NULL);
 -	mFilterByObstacle->setCommitCallback(boost::bind(&LLFloaterPathfindingLinksets::onApplyFiltersClicked, this));
 +	mTakeButton = findChild<LLButton>("take_linksets");
 +	llassert(mTakeButton != NULL);
 +	mTakeButton->setCommitCallback(boost::bind(&LLFloaterPathfindingLinksets::onTakeClicked, this));
 -	mFilterByIgnored = findChild<LLCheckBoxCtrl>("filter_by_ignored");
 -	llassert(mFilterByIgnored != NULL);
 -	mFilterByIgnored->setCommitCallback(boost::bind(&LLFloaterPathfindingLinksets::onApplyFiltersClicked, this));
 +	mTakeCopyButton = findChild<LLButton>("take_copy_linksets");
 +	llassert(mTakeCopyButton != NULL);
 +	mTakeCopyButton->setCommitCallback(boost::bind(&LLFloaterPathfindingLinksets::onTakeCopyClicked, this));
 -	mEditPathState = findChild<LLRadioGroup>("edit_path_state");
 -	llassert(mEditPathState != NULL);
 +	mReturnButton = findChild<LLButton>("return_linksets");
 +	llassert(mReturnButton != NULL);
 +	mReturnButton->setCommitCallback(boost::bind(&LLFloaterPathfindingLinksets::onReturnClicked, this));
 -	mEditPathStateWalkable = findChild<LLUICtrl>("edit_pathing_state_walkable");
 -	llassert(mEditPathStateWalkable != NULL);
 +	mDeleteButton = findChild<LLButton>("delete_linksets");
 +	llassert(mDeleteButton != NULL);
 +	mDeleteButton->setCommitCallback(boost::bind(&LLFloaterPathfindingLinksets::onDeleteClicked, this));
 -	mEditPathStateObstacle = findChild<LLUICtrl>("edit_pathing_state_obstacle");
 -	llassert(mEditPathStateObstacle != NULL);
 +	mTeleportButton = findChild<LLButton>("teleport_me_to_linkset");
 +	llassert(mTeleportButton != NULL);
 +	mTeleportButton->setCommitCallback(boost::bind(&LLFloaterPathfindingLinksets::onTeleportClicked, this));
 -	mEditPathStateIgnored = findChild<LLUICtrl>("edit_pathing_state_ignored");
 -	llassert(mEditPathStateIgnored != NULL);
 +	mEditLinksetUse = findChild<LLComboBox>("edit_linkset_use");
 +	llassert(mEditLinksetUse != NULL);
  	mLabelWalkabilityCoefficients = findChild<LLTextBase>("walkability_coefficients_label");
  	llassert(mLabelWalkabilityCoefficients != NULL);
 @@ -157,37 +172,34 @@ BOOL LLFloaterPathfindingLinksets::postBuild()  	mLabelEditA = findChild<LLTextBase>("edit_a_label");
  	llassert(mLabelEditA != NULL);
 -	mLabelEditB = findChild<LLTextBase>("edit_b_label");
 -	llassert(mLabelEditB != NULL);
 -
 -	mLabelEditC = findChild<LLTextBase>("edit_c_label");
 -	llassert(mLabelEditC != NULL);
 -
 -	mLabelEditD = findChild<LLTextBase>("edit_d_label");
 -	llassert(mLabelEditD != NULL);
 -
  	mEditA = findChild<LLLineEditor>("edit_a_value");
  	llassert(mEditA != NULL);
  	mEditA->setPrevalidate(LLTextValidate::validatePositiveS32);
 +	mLabelEditB = findChild<LLTextBase>("edit_b_label");
 +	llassert(mLabelEditB != NULL);
 +
  	mEditB = findChild<LLLineEditor>("edit_b_value");
  	llassert(mEditB != NULL);
  	mEditB->setPrevalidate(LLTextValidate::validatePositiveS32);
 +	mLabelEditC = findChild<LLTextBase>("edit_c_label");
 +	llassert(mLabelEditC != NULL);
 +
  	mEditC = findChild<LLLineEditor>("edit_c_value");
  	llassert(mEditC != NULL);
  	mEditC->setPrevalidate(LLTextValidate::validatePositiveS32);
 +	mLabelEditD = findChild<LLTextBase>("edit_d_label");
 +	llassert(mLabelEditD != NULL);
 +
  	mEditD = findChild<LLLineEditor>("edit_d_value");
  	llassert(mEditD != NULL);
  	mEditD->setPrevalidate(LLTextValidate::validatePositiveS32);
 -	mEditPhantom = findChild<LLCheckBoxCtrl>("edit_phantom_value");
 -	llassert(mEditPhantom != NULL);
 -
 -	mApplyEdits = findChild<LLButton>("apply_edit_values");
 -	llassert(mApplyEdits != NULL);
 -	mApplyEdits->setCommitCallback(boost::bind(&LLFloaterPathfindingLinksets::onApplyChangesClicked, this));
 +	mApplyEditsButton = findChild<LLButton>("apply_edit_values");
 +	llassert(mApplyEditsButton != NULL);
 +	mApplyEditsButton->setCommitCallback(boost::bind(&LLFloaterPathfindingLinksets::onApplyChangesClicked, this));
  	setEnableEditFields(false);
  	setMessagingState(kMessagingInitial);
 @@ -235,30 +247,31 @@ BOOL LLFloaterPathfindingLinksets::isMessagingInProgress() const  LLFloaterPathfindingLinksets::LLFloaterPathfindingLinksets(const LLSD& pSeed)
  	: LLFloater(pSeed),
  	mSelfHandle(),
 -	mPathfindingLinksets(),
 -	mMessagingState(kMessagingInitial),
 -	mLinksetsScrollList(NULL),
 -	mLinksetsStatus(NULL),
  	mFilterByName(NULL),
  	mFilterByDescription(NULL),
 -	mFilterByWalkable(NULL),
 -	mFilterByObstacle(NULL),
 -	mFilterByIgnored(NULL),
 -	mEditPathState(NULL),
 -	mEditPathStateWalkable(NULL),
 -	mEditPathStateObstacle(NULL),
 -	mEditPathStateIgnored(NULL),
 +	mFilterByLinksetUse(NULL),
 +	mLinksetsScrollList(NULL),
 +	mLinksetsStatus(NULL),
 +	mRefreshListButton(NULL),
 +	mSelectAllButton(NULL),
 +	mTakeButton(NULL),
 +	mTakeCopyButton(NULL),
 +	mReturnButton(NULL),
 +	mDeleteButton(NULL),
 +	mTeleportButton(NULL),
 +	mEditLinksetUse(NULL),
  	mLabelWalkabilityCoefficients(NULL),
  	mLabelEditA(NULL),
 -	mLabelEditB(NULL),
 -	mLabelEditC(NULL),
 -	mLabelEditD(NULL),
  	mEditA(NULL),
 +	mLabelEditB(NULL),
  	mEditB(NULL),
 +	mLabelEditC(NULL),
  	mEditC(NULL),
 +	mLabelEditD(NULL),
  	mEditD(NULL),
 -	mEditPhantom(NULL),
 -	mApplyEdits(NULL)
 +	mApplyEditsButton(NULL),
 +	mPathfindingLinksets(),
 +	mMessagingState(kMessagingInitial)
  {
  	mSelfHandle.bind(this);
  }
 @@ -378,7 +391,7 @@ void LLFloaterPathfindingLinksets::setMessagingState(EMessagingState pMessagingS  	updateEditFields();
  }
 -void LLFloaterPathfindingLinksets::onApplyFiltersClicked()
 +void LLFloaterPathfindingLinksets::onApplyAllFilters()
  {
  	applyFilters();
  }
 @@ -409,6 +422,31 @@ void LLFloaterPathfindingLinksets::onSelectNoneLinksetsClicked()  	selectNoneLinksets();
  }
 +void LLFloaterPathfindingLinksets::onTakeClicked()
 +{
 +	llwarns << "functionality not yet implemented for " << mTakeButton->getName() << llendl;
 +}
 +
 +void LLFloaterPathfindingLinksets::onTakeCopyClicked()
 +{
 +	llwarns << "functionality not yet implemented for " << mTakeCopyButton->getName() << llendl;
 +}
 +
 +void LLFloaterPathfindingLinksets::onReturnClicked()
 +{
 +	llwarns << "functionality not yet implemented for " << mReturnButton->getName() << llendl;
 +}
 +
 +void LLFloaterPathfindingLinksets::onDeleteClicked()
 +{
 +	llwarns << "functionality not yet implemented for " << mDeleteButton->getName() << llendl;
 +}
 +
 +void LLFloaterPathfindingLinksets::onTeleportClicked()
 +{
 +	llwarns << "functionality not yet implemented for " << mTeleportButton->getName() << llendl;
 +}
 +
  void LLFloaterPathfindingLinksets::onApplyChangesClicked()
  {
  	applyEditFields();
 @@ -418,9 +456,7 @@ void LLFloaterPathfindingLinksets::applyFilters()  {
  	mPathfindingLinksets.setNameFilter(mFilterByName->getText());
  	mPathfindingLinksets.setDescriptionFilter(mFilterByDescription->getText());
 -	mPathfindingLinksets.setWalkableFilter(mFilterByWalkable->get());
 -	mPathfindingLinksets.setObstacleFilter(mFilterByObstacle->get());
 -	mPathfindingLinksets.setIgnoredFilter(mFilterByIgnored->get());
 +	mPathfindingLinksets.setLinksetUseFilter(getFilterLinksetUse());
  	updateLinksetsList();
  }
 @@ -429,9 +465,7 @@ void LLFloaterPathfindingLinksets::clearFilters()  	mPathfindingLinksets.clearFilters();
  	mFilterByName->setText(LLStringExplicit(mPathfindingLinksets.getNameFilter()));
  	mFilterByDescription->setText(LLStringExplicit(mPathfindingLinksets.getDescriptionFilter()));
 -	mFilterByWalkable->set(mPathfindingLinksets.isWalkableFilter());
 -	mFilterByObstacle->set(mPathfindingLinksets.isObstacleFilter());
 -	mFilterByIgnored->set(mPathfindingLinksets.isIgnoredFilter());
 +	setFilterLinksetUse(mPathfindingLinksets.getLinksetUseFilter());
  	updateLinksetsList();
  }
 @@ -480,45 +514,51 @@ void LLFloaterPathfindingLinksets::updateLinksetsList()  		columns[3]["value"] = llformat("%1.0f m", dist_vec(avatarPosition, linkset.getLocation()));
  		columns[3]["font"] = "SANSSERIF";
 -		columns[4]["column"] = "path_state";
 -		switch (linkset.getPathState())
 +		columns[4]["column"] = "linkset_use";
 +		switch (linkset.getLinksetUse())
  		{
  		case LLPathfindingLinkset::kWalkable :
 -			columns[4]["value"] = getString("linkset_path_state_walkable");
 +			columns[4]["value"] = getString("linkset_use_walkable");
 +			break;
 +		case LLPathfindingLinkset::kStaticObstacle :
 +			columns[4]["value"] = getString("linkset_use_static_obstacle");
  			break;
 -		case LLPathfindingLinkset::kObstacle :
 -			columns[4]["value"] = getString("linkset_path_state_obstacle");
 +		case LLPathfindingLinkset::kDynamicObstacle :
 +			columns[4]["value"] = getString("linkset_use_dynamic_obstacle");
  			break;
 -		case LLPathfindingLinkset::kIgnored :
 -			columns[4]["value"] = getString("linkset_path_state_ignored");
 +		case LLPathfindingLinkset::kMaterialVolume :
 +			columns[4]["value"] = getString("linkset_use_material_volume");
  			break;
 +		case LLPathfindingLinkset::kExclusionVolume :
 +			columns[4]["value"] = getString("linkset_use_exclusion_volume");
 +			break;
 +		case LLPathfindingLinkset::kDynamicPhantom :
 +			columns[4]["value"] = getString("linkset_use_dynamic_phantom");
 +			break;
 +		case LLPathfindingLinkset::kUnknown :
  		default :
 -			columns[4]["value"] = getString("linkset_path_state_ignored");
 +			columns[4]["value"] = getString("linkset_use_dynamic_obstacle");
  			llassert(0);
  			break;
  		}
  		columns[4]["font"] = "SANSSERIF";
 -		columns[5]["column"] = "is_phantom";
 -		columns[5]["value"] = getString(linkset.isPhantom() ? "linkset_is_phantom" : "linkset_is_not_phantom");
 +		columns[5]["column"] = "a_percent";
 +		columns[5]["value"] = llformat("%3d", linkset.getWalkabilityCoefficientA());
  		columns[5]["font"] = "SANSSERIF";
 -		columns[6]["column"] = "a_percent";
 -		columns[6]["value"] = llformat("%3d", linkset.getWalkabilityCoefficientA());
 +		columns[6]["column"] = "b_percent";
 +		columns[6]["value"] = llformat("%3d", linkset.getWalkabilityCoefficientB());
  		columns[6]["font"] = "SANSSERIF";
 -		columns[7]["column"] = "b_percent";
 -		columns[7]["value"] = llformat("%3d", linkset.getWalkabilityCoefficientB());
 +		columns[7]["column"] = "c_percent";
 +		columns[7]["value"] = llformat("%3d", linkset.getWalkabilityCoefficientC());
  		columns[7]["font"] = "SANSSERIF";
 -		columns[8]["column"] = "c_percent";
 -		columns[8]["value"] = llformat("%3d", linkset.getWalkabilityCoefficientC());
 +		columns[8]["column"] = "d_percent";
 +		columns[8]["value"] = llformat("%3d", linkset.getWalkabilityCoefficientD());
  		columns[8]["font"] = "SANSSERIF";
 -		columns[9]["column"] = "d_percent";
 -		columns[9]["value"] = llformat("%3d", linkset.getWalkabilityCoefficientD());
 -		columns[9]["font"] = "SANSSERIF";
 -
  		LLSD element;
  		element["id"] = linkset.getUUID().asString();
  		element["column"] = columns;
 @@ -623,12 +663,11 @@ void LLFloaterPathfindingLinksets::updateEditFields()  	std::vector<LLScrollListItem*> selectedItems = mLinksetsScrollList->getAllSelected();
  	if (selectedItems.empty())
  	{
 -		mEditPathState->clear();
 +		mEditLinksetUse->clear();
  		mEditA->clear();
  		mEditB->clear();
  		mEditC->clear();
  		mEditD->clear();
 -		mEditPhantom->clear();
  		setEnableEditFields(false);
  	}
 @@ -640,12 +679,11 @@ void LLFloaterPathfindingLinksets::updateEditFields()  		LLFilteredPathfindingLinksets::PathfindingLinksetMap::const_iterator linksetIter = linksetsMap.find(firstItem->getUUID().asString());
  		const LLPathfindingLinkset &linkset(linksetIter->second);
 -		setPathState(linkset.getPathState());
 +		setEditLinksetUse(linkset.getLinksetUse());
  		mEditA->setValue(LLSD(linkset.getWalkabilityCoefficientA()));
  		mEditB->setValue(LLSD(linkset.getWalkabilityCoefficientB()));
  		mEditC->setValue(LLSD(linkset.getWalkabilityCoefficientC()));
  		mEditD->setValue(LLSD(linkset.getWalkabilityCoefficientD()));
 -		mEditPhantom->set(linkset.isPhantom());
  		setEnableEditFields(true);
  	}
 @@ -656,7 +694,7 @@ void LLFloaterPathfindingLinksets::applyEditFields()  	std::vector<LLScrollListItem*> selectedItems = mLinksetsScrollList->getAllSelected();
  	if (!selectedItems.empty())
  	{
 -		LLPathfindingLinkset::EPathState pathState = getPathState();
 +		LLPathfindingLinkset::ELinksetUse pathState = getEditLinksetUse();
  		const std::string &aString = mEditA->getText();
  		const std::string &bString = mEditB->getText();
  		const std::string &cString = mEditC->getText();
 @@ -665,7 +703,6 @@ void LLFloaterPathfindingLinksets::applyEditFields()  		S32 bValue = static_cast<S32>(atoi(bString.c_str()));
  		S32 cValue = static_cast<S32>(atoi(cString.c_str()));
  		S32 dValue = static_cast<S32>(atoi(dString.c_str()));
 -		BOOL isPhantom = mEditPhantom->getValue();
  		const LLFilteredPathfindingLinksets::PathfindingLinksetMap &linksetsMap = mPathfindingLinksets.getAllLinksets();
 @@ -679,7 +716,7 @@ void LLFloaterPathfindingLinksets::applyEditFields()  			const LLFilteredPathfindingLinksets::PathfindingLinksetMap::const_iterator linksetIter = linksetsMap.find(uuid.asString());
  			const LLPathfindingLinkset &linkset = linksetIter->second;
 -			LLSD itemData = linkset.encodeAlteredFields(pathState, aValue, bValue, cValue, dValue, isPhantom);
 +			LLSD itemData = linkset.encodeAlteredFields(pathState, aValue, bValue, cValue, dValue);
  			if (!itemData.isUndefined())
  			{
 @@ -700,10 +737,7 @@ void LLFloaterPathfindingLinksets::applyEditFields()  void LLFloaterPathfindingLinksets::setEnableEditFields(BOOL pEnabled)
  {
 -	mEditPathState->setEnabled(pEnabled);
 -	mEditPathStateWalkable->setEnabled(pEnabled);
 -	mEditPathStateObstacle->setEnabled(pEnabled);
 -	mEditPathStateIgnored->setEnabled(pEnabled);
 +	mEditLinksetUse->setEnabled(pEnabled);
  	mLabelWalkabilityCoefficients->setEnabled(pEnabled);
  	mLabelEditA->setEnabled(pEnabled);
  	mLabelEditB->setEnabled(pEnabled);
 @@ -713,56 +747,99 @@ void LLFloaterPathfindingLinksets::setEnableEditFields(BOOL pEnabled)  	mEditB->setEnabled(pEnabled);
  	mEditC->setEnabled(pEnabled);
  	mEditD->setEnabled(pEnabled);
 -	mEditPhantom->setEnabled(pEnabled);
 -	mApplyEdits->setEnabled(pEnabled);
 +	mApplyEditsButton->setEnabled(pEnabled);
 +}
 +
 +LLPathfindingLinkset::ELinksetUse LLFloaterPathfindingLinksets::getFilterLinksetUse() const
 +{
 +	return convertToLinksetUse(mFilterByLinksetUse->getValue());
 +}
 +
 +void LLFloaterPathfindingLinksets::setFilterLinksetUse(LLPathfindingLinkset::ELinksetUse pLinksetUse)
 +{
 +	mFilterByLinksetUse->setValue(convertToXuiValue(pLinksetUse));
 +}
 +
 +LLPathfindingLinkset::ELinksetUse LLFloaterPathfindingLinksets::getEditLinksetUse() const
 +{
 +	return convertToLinksetUse(mEditLinksetUse->getValue());
  }
 -LLPathfindingLinkset::EPathState LLFloaterPathfindingLinksets::getPathState() const
 +void LLFloaterPathfindingLinksets::setEditLinksetUse(LLPathfindingLinkset::ELinksetUse pLinksetUse)
  {
 -	LLPathfindingLinkset::EPathState pathState;
 +	mEditLinksetUse->setValue(convertToXuiValue(pLinksetUse));
 +}
 +
 +LLPathfindingLinkset::ELinksetUse LLFloaterPathfindingLinksets::convertToLinksetUse(LLSD pXuiValue) const
 +{
 +	LLPathfindingLinkset::ELinksetUse linkUse;
 -	switch (mEditPathState->getValue().asInteger())
 +	switch (pXuiValue.asInteger())
  	{
 -	case XUI_PATH_STATE_WALKABLE :
 -		pathState = LLPathfindingLinkset::kWalkable;
 +	case XUI_LINKSET_USE_NONE :
 +		linkUse = LLPathfindingLinkset::kUnknown;
 +		break;
 +	case XUI_LINKSET_USE_WALKABLE :
 +		linkUse = LLPathfindingLinkset::kWalkable;
 +		break;
 +	case XUI_LINKSET_USE_STATIC_OBSTACLE :
 +		linkUse = LLPathfindingLinkset::kStaticObstacle;
 +		break;
 +	case XUI_LINKSET_USE_DYNAMIC_OBSTACLE :
 +		linkUse = LLPathfindingLinkset::kDynamicObstacle;
  		break;
 -	case XUI_PATH_STATE_OBSTACLE :
 -		pathState = LLPathfindingLinkset::kObstacle;
 +	case XUI_LINKSET_USE_MATERIAL_VOLUME :
 +		linkUse = LLPathfindingLinkset::kMaterialVolume;
  		break;
 -	case XUI_PATH_STATE_IGNORED :
 -		pathState = LLPathfindingLinkset::kIgnored;
 +	case XUI_LINKSET_USE_EXCLUSION_VOLUME :
 +		linkUse = LLPathfindingLinkset::kExclusionVolume;
 +		break;
 +	case XUI_LINKSET_USE_DYNAMIC_PHANTOM :
 +		linkUse = LLPathfindingLinkset::kDynamicPhantom;
  		break;
  	default :
 -		pathState = LLPathfindingLinkset::kIgnored;
 +		linkUse = LLPathfindingLinkset::kUnknown;
  		llassert(0);
  		break;
  	}
 -	return pathState;
 +	return linkUse;
  }
 -void LLFloaterPathfindingLinksets::setPathState(LLPathfindingLinkset::EPathState pPathState)
 +LLSD LLFloaterPathfindingLinksets::convertToXuiValue(LLPathfindingLinkset::ELinksetUse pLinksetUse) const
  {
 -	LLSD radioGroupValue;
 +	LLSD xuiValue;
 -	switch (pPathState)
 +	switch (pLinksetUse)
  	{
 +	case LLPathfindingLinkset::kUnknown :
 +		xuiValue = XUI_LINKSET_USE_NONE;
 +		break;
  	case LLPathfindingLinkset::kWalkable :
 -		radioGroupValue = XUI_PATH_STATE_WALKABLE;
 +		xuiValue = XUI_LINKSET_USE_WALKABLE;
 +		break;
 +	case LLPathfindingLinkset::kStaticObstacle :
 +		xuiValue = XUI_LINKSET_USE_STATIC_OBSTACLE;
 +		break;
 +	case LLPathfindingLinkset::kDynamicObstacle :
 +		xuiValue = XUI_LINKSET_USE_DYNAMIC_OBSTACLE;
 +		break;
 +	case LLPathfindingLinkset::kMaterialVolume :
 +		xuiValue = XUI_LINKSET_USE_MATERIAL_VOLUME;
  		break;
 -	case LLPathfindingLinkset::kObstacle :
 -		radioGroupValue = XUI_PATH_STATE_OBSTACLE;
 +	case LLPathfindingLinkset::kExclusionVolume :
 +		xuiValue = XUI_LINKSET_USE_EXCLUSION_VOLUME;
  		break;
 -	case LLPathfindingLinkset::kIgnored :
 -		radioGroupValue = XUI_PATH_STATE_IGNORED;
 +	case LLPathfindingLinkset::kDynamicPhantom :
 +		xuiValue = XUI_LINKSET_USE_DYNAMIC_PHANTOM;
  		break;
  	default :
 -		radioGroupValue = XUI_PATH_STATE_IGNORED;
 +		xuiValue = XUI_LINKSET_USE_NONE;
  		llassert(0);
  		break;
  	}
 -	mEditPathState->setValue(radioGroupValue);
 +	return xuiValue;
  }
  //---------------------------------------------------------------------------
 diff --git a/indra/newview/llfloaterpathfindinglinksets.h b/indra/newview/llfloaterpathfindinglinksets.h index ce266b1706..229b5daa77 100644 --- a/indra/newview/llfloaterpathfindinglinksets.h +++ b/indra/newview/llfloaterpathfindinglinksets.h @@ -38,8 +38,7 @@ class LLSD;  class LLTextBase;
  class LLScrollListCtrl;
  class LLLineEditor;
 -class LLCheckBoxCtrl;
 -class LLRadioGroup;
 +class LLComboBox;
  class LLButton;
  class LLFloaterPathfindingLinksets
 @@ -78,30 +77,32 @@ protected:  private:
  	LLRootHandle<LLFloaterPathfindingLinksets> mSelfHandle;
 -	LLFilteredPathfindingLinksets              mPathfindingLinksets;
 -	EMessagingState                            mMessagingState;
 -	LLScrollListCtrl                           *mLinksetsScrollList;
 -	LLTextBase                                 *mLinksetsStatus;
  	LLLineEditor                               *mFilterByName;
  	LLLineEditor                               *mFilterByDescription;
 -	LLCheckBoxCtrl                             *mFilterByWalkable;
 -	LLCheckBoxCtrl                             *mFilterByObstacle;
 -	LLCheckBoxCtrl                             *mFilterByIgnored;
 -	LLRadioGroup                               *mEditPathState;
 -	LLUICtrl                                   *mEditPathStateWalkable;
 -	LLUICtrl                                   *mEditPathStateObstacle;
 -	LLUICtrl                                   *mEditPathStateIgnored;
 +	LLComboBox                                 *mFilterByLinksetUse;
 +	LLScrollListCtrl                           *mLinksetsScrollList;
 +	LLTextBase                                 *mLinksetsStatus;
 +	LLButton                                   *mRefreshListButton;
 +	LLButton                                   *mSelectAllButton;
 +	LLButton                                   *mSelectNoneButton;
 +	LLButton                                   *mTakeButton;
 +	LLButton                                   *mTakeCopyButton;
 +	LLButton                                   *mReturnButton;
 +	LLButton                                   *mDeleteButton;
 +	LLButton                                   *mTeleportButton;
 +	LLComboBox                                 *mEditLinksetUse;
  	LLTextBase                                 *mLabelWalkabilityCoefficients;
  	LLTextBase                                 *mLabelEditA;
 -	LLTextBase                                 *mLabelEditB;
 -	LLTextBase                                 *mLabelEditC;
 -	LLTextBase                                 *mLabelEditD;
  	LLLineEditor                               *mEditA;
 +	LLTextBase                                 *mLabelEditB;
  	LLLineEditor                               *mEditB;
 +	LLTextBase                                 *mLabelEditC;
  	LLLineEditor                               *mEditC;
 +	LLTextBase                                 *mLabelEditD;
  	LLLineEditor                               *mEditD;
 -	LLCheckBoxCtrl                             *mEditPhantom;
 -	LLButton                                   *mApplyEdits;
 +	LLButton                                   *mApplyEditsButton;
 +	LLFilteredPathfindingLinksets              mPathfindingLinksets;
 +	EMessagingState                            mMessagingState;
  	// Does its own instance management, so clients not allowed
  	// to allocate or destroy.
 @@ -120,12 +121,17 @@ private:  	void setMessagingState(EMessagingState pMessagingState);
 -	void onApplyFiltersClicked();
 +	void onApplyAllFilters();
  	void onClearFiltersClicked();
  	void onLinksetsSelectionChange();
  	void onRefreshLinksetsClicked();
  	void onSelectAllLinksetsClicked();
  	void onSelectNoneLinksetsClicked();
 +	void onTakeClicked();
 +	void onTakeCopyClicked();
 +	void onReturnClicked();
 +	void onDeleteClicked();
 +	void onTeleportClicked();
  	void onApplyChangesClicked();
  	void applyFilters();
 @@ -141,8 +147,14 @@ private:  	void applyEditFields();
  	void setEnableEditFields(BOOL pEnabled);
 -	LLPathfindingLinkset::EPathState getPathState() const;
 -	void                             setPathState(LLPathfindingLinkset::EPathState pPathState);
 +	LLPathfindingLinkset::ELinksetUse getFilterLinksetUse() const;
 +	void                              setFilterLinksetUse(LLPathfindingLinkset::ELinksetUse pLinksetUse);
 +
 +	LLPathfindingLinkset::ELinksetUse getEditLinksetUse() const;
 +	void                              setEditLinksetUse(LLPathfindingLinkset::ELinksetUse pLinksetUse);
 +
 +	LLPathfindingLinkset::ELinksetUse convertToLinksetUse(LLSD pXuiValue) const;
 +	LLSD                              convertToXuiValue(LLPathfindingLinkset::ELinksetUse pLinksetUse) const;
  };
  #endif // LL_LLFLOATERPATHFINDINGLINKSETS_H
 diff --git a/indra/newview/llpathfindinglinkset.cpp b/indra/newview/llpathfindinglinkset.cpp index daa308f862..48f8ceaa8a 100644 --- a/indra/newview/llpathfindinglinkset.cpp +++ b/indra/newview/llpathfindinglinkset.cpp @@ -56,8 +56,7 @@ LLPathfindingLinkset::LLPathfindingLinkset(const std::string &pUUID, const LLSD&  	mDescription(),
  	mLandImpact(0U),
  	mLocation(),
 -	mPathState(kIgnored),
 -	mIsPhantom(false),
 +	mLinksetUse(kUnknown),
  #ifdef XXX_STINSON_WALKABILITY_COEFFICIENTS_TYPE_CHANGE
  	mIsWalkabilityCoefficientsF32(false),
  #endif // XXX_STINSON_WALKABILITY_COEFFICIENTS_TYPE_CHANGE
 @@ -79,6 +78,10 @@ LLPathfindingLinkset::LLPathfindingLinkset(const std::string &pUUID, const LLSD&  	llassert(pLinksetItem.get(LINKSET_LAND_IMPACT_FIELD).asInteger() >= 0);
  	mLandImpact = pLinksetItem.get(LINKSET_LAND_IMPACT_FIELD).asInteger();
 +	llassert(pLinksetItem.has(LINKSET_PHANTOM_FIELD));
 +	llassert(pLinksetItem.get(LINKSET_PHANTOM_FIELD).isBoolean());
 +	bool isPhantom = pLinksetItem.get(LINKSET_PHANTOM_FIELD).asBoolean();
 +
  	llassert(pLinksetItem.has(LINKSET_PERMANENT_FIELD));
  	llassert(pLinksetItem.get(LINKSET_PERMANENT_FIELD).isBoolean());
  	bool isPermanent = pLinksetItem.get(LINKSET_PERMANENT_FIELD).asBoolean();
 @@ -87,11 +90,7 @@ LLPathfindingLinkset::LLPathfindingLinkset(const std::string &pUUID, const LLSD&  	llassert(pLinksetItem.get(LINKSET_WALKABLE_FIELD).isBoolean());
  	bool isWalkable = pLinksetItem.get(LINKSET_WALKABLE_FIELD).asBoolean();
 -	mPathState = getPathState(isPermanent, isWalkable);
 -
 -	llassert(pLinksetItem.has(LINKSET_PHANTOM_FIELD));
 -	llassert(pLinksetItem.get(LINKSET_PHANTOM_FIELD).isBoolean());
 -	mIsPhantom = pLinksetItem.get(LINKSET_PHANTOM_FIELD).asBoolean();
 +	mLinksetUse = getLinksetUse(isPhantom, isPermanent, isWalkable);
  	llassert(pLinksetItem.has(LINKSET_WALKABILITY_A_FIELD));
  #ifdef XXX_STINSON_WALKABILITY_COEFFICIENTS_TYPE_CHANGE
 @@ -175,8 +174,7 @@ LLPathfindingLinkset::LLPathfindingLinkset(const LLPathfindingLinkset& pOther)  	mDescription(pOther.mDescription),
  	mLandImpact(pOther.mLandImpact),
  	mLocation(pOther.mLocation),
 -	mPathState(pOther.mPathState),
 -	mIsPhantom(pOther.mIsPhantom),
 +	mLinksetUse(pOther.mLinksetUse),
  #ifdef XXX_STINSON_WALKABILITY_COEFFICIENTS_TYPE_CHANGE
  	mIsWalkabilityCoefficientsF32(pOther.mIsWalkabilityCoefficientsF32),
  #endif // XXX_STINSON_WALKABILITY_COEFFICIENTS_TYPE_CHANGE
 @@ -198,8 +196,7 @@ LLPathfindingLinkset& LLPathfindingLinkset::operator =(const LLPathfindingLinkse  	mDescription = pOther.mDescription;
  	mLandImpact = pOther.mLandImpact;
  	mLocation = pOther.mLocation;
 -	mPathState = pOther.mPathState;
 -	mIsPhantom = pOther.mIsPhantom;
 +	mLinksetUse = pOther.mLinksetUse;
  #ifdef XXX_STINSON_WALKABILITY_COEFFICIENTS_TYPE_CHANGE
  	mIsWalkabilityCoefficientsF32 = pOther.mIsWalkabilityCoefficientsF32;
  #endif // XXX_STINSON_WALKABILITY_COEFFICIENTS_TYPE_CHANGE
 @@ -211,56 +208,6 @@ LLPathfindingLinkset& LLPathfindingLinkset::operator =(const LLPathfindingLinkse  	return *this;
  }
 -
 -LLPathfindingLinkset::EPathState LLPathfindingLinkset::getPathState(bool pIsPermanent, bool pIsWalkable)
 -{
 -	return (pIsPermanent ? (pIsWalkable ? kWalkable : kObstacle) : kIgnored);
 -}
 -
 -BOOL LLPathfindingLinkset::isPermanent(EPathState pPathState)
 -{
 -	BOOL retVal;
 -
 -	switch (pPathState)
 -	{
 -	case kWalkable :
 -	case kObstacle :
 -		retVal = true;
 -		break;
 -	case kIgnored :
 -		retVal = false;
 -		break;
 -	default :
 -		retVal = false;
 -		llassert(0);
 -		break;
 -	}
 -
 -	return retVal;
 -}
 -
 -BOOL LLPathfindingLinkset::isWalkable(EPathState pPathState)
 -{
 -	BOOL retVal;
 -
 -	switch (pPathState)
 -	{
 -	case kWalkable :
 -		retVal = true;
 -		break;
 -	case kObstacle :
 -	case kIgnored :
 -		retVal = false;
 -		break;
 -	default :
 -		retVal = false;
 -		llassert(0);
 -		break;
 -	}
 -
 -	return retVal;
 -}
 -
  void LLPathfindingLinkset::setWalkabilityCoefficientA(S32 pA)
  {
  	mWalkabilityCoefficientA = llclamp(pA, MIN_WALKABILITY_VALUE, MAX_WALKABILITY_VALUE);
 @@ -281,14 +228,16 @@ void LLPathfindingLinkset::setWalkabilityCoefficientD(S32 pD)  	mWalkabilityCoefficientD = llclamp(pD, MIN_WALKABILITY_VALUE, MAX_WALKABILITY_VALUE);
  }
 -LLSD LLPathfindingLinkset::encodeAlteredFields(EPathState pPathState, S32 pA, S32 pB, S32 pC, S32 pD, BOOL pIsPhantom) const
 +LLSD LLPathfindingLinkset::encodeAlteredFields(ELinksetUse pLinksetUse, S32 pA, S32 pB, S32 pC, S32 pD) const
  {
  	LLSD itemData;
 -	if (mPathState != pPathState)
 +	if (mLinksetUse != pLinksetUse)
  	{
 -		itemData[LINKSET_PERMANENT_FIELD] = static_cast<bool>(LLPathfindingLinkset::isPermanent(pPathState));
 -		itemData[LINKSET_WALKABLE_FIELD] = static_cast<bool>(LLPathfindingLinkset::isWalkable(pPathState));
 +		llassert(pLinksetUse != kUnknown);
 +		itemData[LINKSET_PHANTOM_FIELD] = static_cast<bool>(LLPathfindingLinkset::isPhantom(pLinksetUse));
 +		itemData[LINKSET_PERMANENT_FIELD] = static_cast<bool>(LLPathfindingLinkset::isPermanent(pLinksetUse));
 +		itemData[LINKSET_WALKABLE_FIELD] = static_cast<bool>(LLPathfindingLinkset::isWalkable(pLinksetUse));
  	}
  #ifdef XXX_STINSON_WALKABILITY_COEFFICIENTS_TYPE_CHANGE
  	if (mIsWalkabilityCoefficientsF32)
 @@ -347,10 +296,90 @@ LLSD LLPathfindingLinkset::encodeAlteredFields(EPathState pPathState, S32 pA, S3  		itemData[LINKSET_WALKABILITY_D_FIELD] = llclamp(pD, MIN_WALKABILITY_VALUE, MAX_WALKABILITY_VALUE);
  	}
  #endif // XXX_STINSON_WALKABILITY_COEFFICIENTS_TYPE_CHANGE
 -	if (mIsPhantom != pIsPhantom)
 +
 +	return itemData;
 +}
 +
 +LLPathfindingLinkset::ELinksetUse LLPathfindingLinkset::getLinksetUse(bool pIsPhantom, bool pIsPermanent, bool pIsWalkable)
 +{
 +	return (pIsPhantom ? (pIsPermanent ? (pIsWalkable ? kMaterialVolume : kExclusionVolume) : kDynamicPhantom) :
 +		(pIsPermanent ? (pIsWalkable ? kWalkable : kStaticObstacle) : kDynamicObstacle));
 +}
 +
 +BOOL LLPathfindingLinkset::isPhantom(ELinksetUse pLinksetUse)
 +{
 +	BOOL retVal;
 +
 +	switch (pLinksetUse)
  	{
 -		itemData[LINKSET_PHANTOM_FIELD] = static_cast<bool>(pIsPhantom);
 +	case kWalkable :
 +	case kStaticObstacle :
 +	case kDynamicObstacle :
 +		retVal = false;
 +		break;
 +	case kMaterialVolume :
 +	case kExclusionVolume :
 +	case kDynamicPhantom :
 +		retVal = true;
 +		break;
 +	case kUnknown :
 +	default :
 +		retVal = false;
 +		llassert(0);
 +		break;
  	}
 -	return itemData;
 +	return retVal;
 +}
 +
 +BOOL LLPathfindingLinkset::isPermanent(ELinksetUse pLinksetUse)
 +{
 +	BOOL retVal;
 +
 +	switch (pLinksetUse)
 +	{
 +	case kWalkable :
 +	case kStaticObstacle :
 +	case kMaterialVolume :
 +	case kExclusionVolume :
 +		retVal = true;
 +		break;
 +	case kDynamicObstacle :
 +	case kDynamicPhantom :
 +		retVal = false;
 +		break;
 +	case kUnknown :
 +	default :
 +		retVal = false;
 +		llassert(0);
 +		break;
 +	}
 +
 +	return retVal;
 +}
 +
 +BOOL LLPathfindingLinkset::isWalkable(ELinksetUse pLinksetUse)
 +{
 +	BOOL retVal;
 +
 +	switch (pLinksetUse)
 +	{
 +	case kWalkable :
 +	case kMaterialVolume :
 +		retVal = true;
 +		break;
 +	case kStaticObstacle :
 +	case kDynamicObstacle :
 +	case kExclusionVolume :
 +	case kDynamicPhantom :
 +		retVal = false;
 +		break;
 +	case kUnknown :
 +	default :
 +		retVal = false;
 +		llassert(0);
 +		break;
 +	}
 +
 +	return retVal;
  }
 diff --git a/indra/newview/llpathfindinglinkset.h b/indra/newview/llpathfindinglinkset.h index d4e58874eb..58d72b1430 100644 --- a/indra/newview/llpathfindinglinkset.h +++ b/indra/newview/llpathfindinglinkset.h @@ -42,10 +42,14 @@ class LLPathfindingLinkset  public:
  	typedef enum
  	{
 +		kUnknown,
  		kWalkable,
 -		kObstacle,
 -		kIgnored
 -	} EPathState;
 +		kStaticObstacle,
 +		kDynamicObstacle,
 +		kMaterialVolume,
 +		kExclusionVolume,
 +		kDynamicPhantom
 +	} ELinksetUse;
  	LLPathfindingLinkset(const std::string &pUUID, const LLSD &pLinksetItem);
  	LLPathfindingLinkset(const LLPathfindingLinkset& pOther);
 @@ -53,21 +57,14 @@ public:  	LLPathfindingLinkset& operator = (const LLPathfindingLinkset& pOther);
 -	inline const LLUUID&      getUUID() const                     {return mUUID;};
 -	inline const std::string& getName() const                     {return mName;};
 -	inline const std::string& getDescription() const              {return mDescription;};
 -	inline U32                getLandImpact() const               {return mLandImpact;};
 -	inline const LLVector3&   getLocation() const                 {return mLocation;};
 +	inline const LLUUID&      getUUID() const                        {return mUUID;};
 +	inline const std::string& getName() const                        {return mName;};
 +	inline const std::string& getDescription() const                 {return mDescription;};
 +	inline U32                getLandImpact() const                  {return mLandImpact;};
 +	inline const LLVector3&   getLocation() const                    {return mLocation;};
 -	inline EPathState         getPathState() const                {return mPathState;};
 -	inline void               setPathState(EPathState pPathState) {mPathState = pPathState;};
 -
 -	static EPathState         getPathState(bool pIsPermanent, bool pIsWalkable);
 -	static BOOL               isPermanent(EPathState pPathState);
 -	static BOOL               isWalkable(EPathState pPathState);
 -
 -	inline BOOL               isPhantom() const                   {return mIsPhantom;};
 -	inline void               setPhantom(BOOL pIsPhantom)         {mIsPhantom = pIsPhantom;};
 +	inline ELinksetUse        getLinksetUse() const                  {return mLinksetUse;};
 +	inline void               setLinksetUse(ELinksetUse pLinksetUse) {mLinksetUse = pLinksetUse;};
  	inline S32                getWalkabilityCoefficientA() const  {return mWalkabilityCoefficientA;};
  	void                      setWalkabilityCoefficientA(S32 pA);
 @@ -81,28 +78,32 @@ public:  	inline S32                getWalkabilityCoefficientD() const  {return mWalkabilityCoefficientD;};
  	void                      setWalkabilityCoefficientD(S32 pD);
 -	LLSD                      encodeAlteredFields(EPathState pPathState, S32 pA, S32 pB, S32 pC, S32 pD, BOOL pIsPhantom) const;
 +	LLSD                      encodeAlteredFields(ELinksetUse pLinksetUse, S32 pA, S32 pB, S32 pC, S32 pD) const;
  protected:
  private:
 +	static ELinksetUse        getLinksetUse(bool pIsPhantom, bool pIsPermanent, bool pIsWalkable);
 +	static BOOL               isPhantom(ELinksetUse pLinksetUse);
 +	static BOOL               isPermanent(ELinksetUse pLinksetUse);
 +	static BOOL               isWalkable(ELinksetUse pLinksetUse);
 +
  	static const S32 MIN_WALKABILITY_VALUE;
  	static const S32 MAX_WALKABILITY_VALUE;
 -	LLUUID      mUUID;
 -	std::string mName;
 -	std::string mDescription;
 -	U32         mLandImpact;
 -	LLVector3   mLocation;
 -	EPathState  mPathState;
 -	BOOL        mIsPhantom;
 +	LLUUID       mUUID;
 +	std::string  mName;
 +	std::string  mDescription;
 +	U32          mLandImpact;
 +	LLVector3    mLocation;
 +	ELinksetUse  mLinksetUse;
  #ifdef XXX_STINSON_WALKABILITY_COEFFICIENTS_TYPE_CHANGE
 -	BOOL        mIsWalkabilityCoefficientsF32;
 +	BOOL         mIsWalkabilityCoefficientsF32;
  #endif // XXX_STINSON_WALKABILITY_COEFFICIENTS_TYPE_CHANGE
 -	S32         mWalkabilityCoefficientA;
 -	S32         mWalkabilityCoefficientB;
 -	S32         mWalkabilityCoefficientC;
 -	S32         mWalkabilityCoefficientD;
 +	S32          mWalkabilityCoefficientA;
 +	S32          mWalkabilityCoefficientB;
 +	S32          mWalkabilityCoefficientC;
 +	S32          mWalkabilityCoefficientD;
  };
  #endif // LL_LLPATHFINDINGLINKSET_H
 diff --git a/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml b/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml index ec720b55ca..badade9661 100644 --- a/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml +++ b/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml @@ -3,9 +3,9 @@      open_positioning="cascading"      can_resize="true"      can_tear_off="false" -    height="330" +    height="382"      width="950" -    min_height="330" +    min_height="382"      min_width="950"      layout="topleft"      name="floater_pathfinding_linksets" @@ -27,401 +27,503 @@    <floater.string name="linksets_messaging_complete_none_found">No pathfinding linksets</floater.string>    <floater.string name="linksets_messaging_complete_available">[NUM_SELECTED] linksets selected out of [NUM_TOTAL]</floater.string>    <floater.string name="linksets_messaging_service_not_available">Required capability is not available in current region</floater.string> -  <floater.string name="linkset_path_state_walkable">Walkable</floater.string> -  <floater.string name="linkset_path_state_obstacle">Obstacle</floater.string> -  <floater.string name="linkset_path_state_ignored">Ignored</floater.string> -  <floater.string name="linkset_is_phantom">Phantom</floater.string> -  <floater.string name="linkset_is_not_phantom">--</floater.string> -  <text -      height="13" -      word_wrap="false" -      use_ellipses="false" -      type="string" -      text_color="LabelTextColor" -      length="1" -      follows="left|top" -      layout="topleft" -      left="20" -      top="16" -      width="67"> -    Filter by: -  </text> -  <text -      height="13" -      word_wrap="false" -      use_ellipses="false" -      type="string" -      text_color="LabelTextColor" -      length="1" -      follows="left|top" -      layout="topleft" -      left="87" -      top="16" -      width="62"> -    Name -  </text> -  <line_editor -      border_style="line" -      border_thickness="1" -      follows="left|top" -      height="20" -      layout="topleft" -      left_delta="62" -      top="11" -      max_length_bytes="10" -      name="filter_by_name" -      width="105" /> -  <text -      height="13" -      word_wrap="false" -      use_ellipses="false" -      type="string" -      text_color="LabelTextColor" -      length="1" -      follows="left|top" -      layout="topleft" -      left="273" -      top="16" -      width="88"> -    Description -  </text> -  <line_editor -      border_style="line" -      border_thickness="1" -      follows="left|top" -      height="20" -      layout="topleft" -      left_delta="88" -      top="11" -      max_length_bytes="10" -      name="filter_by_description" -      width="106" /> -  <check_box -      height="19" -      follows="left|top" -      initial_value="true" -      label="Walkable" -      layout="topleft" -      left="481" -      top="14" -      name="filter_by_walkable" -      width="90" /> -  <check_box -      height="19" -      follows="left|top" -      initial_value="true" -      label="Obstacle" -      layout="topleft" -      left="577" -      top="14" -      name="filter_by_obstacle" -      width="90" /> -  <check_box -      height="19" -      follows="left|top" -      initial_value="true" -      label="Ignored" -      layout="topleft" -      left="674" -      top="14" -      name="filter_by_ignored" -      width="90" /> -  <button -      follows="right|top" -      height="21" -      label="Apply" -      layout="topleft" -      name="apply_filters" -      top="11" -      left="769" -      width="73"/> -  <button -      follows="right|top" -      height="21" -      label="Clear" +  <floater.string name="linkset_use_walkable">Walkable</floater.string> +  <floater.string name="linkset_use_static_obstacle">Static obstacle</floater.string> +  <floater.string name="linkset_use_dynamic_obstacle">Dynamic obstacle</floater.string> +  <floater.string name="linkset_use_material_volume">Material volume</floater.string> +  <floater.string name="linkset_use_exclusion_volume">Exclusion volume</floater.string> +  <floater.string name="linkset_use_dynamic_phantom">Dynamic phantom</floater.string> +  <panel +      border="false" +      bevel_style="none" +      follows="left|top|right|bottom"        layout="topleft" -      name="clear_filters" -      top="11" -      left="851" -      width="73"/> -  <scroll_list -      column_padding="0" -      draw_heading="true" -      follows="all" -      height="135" +      height="226" +      width="950"> +    <text +        height="13" +        word_wrap="false" +        use_ellipses="false" +        type="string" +        text_color="LabelTextColor" +        length="1" +        follows="left|top" +        layout="topleft" +        left="20" +        top_pad="14" +        width="67"> +      Filter by: +    </text> +    <text +        height="13" +        word_wrap="false" +        use_ellipses="false" +        type="string" +        text_color="LabelTextColor" +        length="1" +        follows="left|top" +        layout="topleft" +        left_pad="0" +        width="62"> +      Name +    </text> +    <line_editor +        border_style="line" +        border_thickness="1" +        follows="left|top" +        height="20" +        layout="topleft" +        left_pad="0" +        top_pad="-18" +        max_length_bytes="10" +        name="filter_by_name" +        width="105" /> +    <text +        height="13" +        word_wrap="false" +        use_ellipses="false" +        type="string" +        text_color="LabelTextColor" +        length="1" +        follows="left|top" +        layout="topleft" +        left_pad="22" +        top_pad="-15" +        width="88"> +      Description +    </text> +    <line_editor +        border_style="line" +        border_thickness="1" +        follows="left|top" +        height="20" +        layout="topleft" +        left_pad="0" +        top_pad="-17" +        max_length_bytes="10" +        name="filter_by_description" +        width="145" /> +    <combo_box +        height="20" +        layout="topleft" +        follows="left|top" +        name="filter_by_linkset_use" +        left_pad="32" +        top_pad="-20" +        width="199"> +      <combo_box.item +          label="Filter by linkset use..." +          name="filter_by_linkset_use_none" +          value="0" /> +      <combo_box.item +          label="Walkable" +          name="filter_by_linkset_use_walkable" +          value="1" /> +      <combo_box.item +          label="Static obstacle" +          name="filter_by_linkset_use_static_obstacle" +          value="2" /> +      <combo_box.item +          label="Dynamic obstacle" +          name="filter_by_linkset_use_dynamic_obstacle" +          value="3" /> +      <combo_box.item +          label="Material volume" +          name="filter_by_linkset_use_material_volume" +          value="4" /> +      <combo_box.item +          label="Exclusion volume" +          name="filter_by_linkset_use_exclusion_volume" +          value="5" /> +      <combo_box.item +          label="Dynamic phantom" +          name="filter_by_linkset_use_dynamic_phantom" +          value="6" /> +    </combo_box> +    <button +        follows="right|top" +        height="21" +        label="Apply" +        layout="topleft" +        name="apply_filters" +        top_pad="-21" +        left_pad="31" +        width="73"/> +    <button +        follows="right|top" +        height="21" +        label="Clear" +        layout="topleft" +        name="clear_filters" +        top_pad="-21" +        left_pad="8" +        width="73"/> +    <scroll_list +        column_padding="0" +        draw_heading="true" +        follows="all" +        height="135" +        layout="topleft" +        left="18" +        top_pad="15" +        multi_select="true" +        name="pathfinding_linksets" +        width="910"> +      <scroll_list.columns +          label="Name (root prim)" +          name="name" +          dynamic_width="true" /> +      <scroll_list.columns +          label="Description (root prim)" +          name="description" +          width="192" /> +      <scroll_list.columns +          label="Land impact" +          name="land_impact" +          width="88" /> +      <scroll_list.columns +          label="Dist from you" +          name="dist_from_you" +          width="97" /> +      <scroll_list.columns +          label="Linkset use" +          name="linkset_use" +          width="210" /> +      <scroll_list.columns +          label="A %" +          name="a_percent" +          width="41" /> +      <scroll_list.columns +          label="B %" +          name="b_percent" +          width="41" /> +      <scroll_list.columns +          label="C %" +          name="c_percent" +          width="41" /> +      <scroll_list.columns +          label="D %" +          name="d_percent" +          width="41" /> +    </scroll_list> +    <text +        height="13" +        word_wrap="false" +        use_ellipses="false" +        type="string" +        text_color="LabelTextColor" +        length="1" +        follows="left|bottom" +        layout="topleft" +        name="linksets_status" +        top_pad="17" +        width="549"> +      Linksets: +    </text> +    <button +        follows="right|bottom" +        height="21" +        label="Refresh list" +        layout="topleft" +        name="refresh_linksets_list" +        top_pad="-16" +        left_pad="0" +        width="115"/> +    <button +        follows="right|bottom" +        height="21" +        label="Select all" +        layout="topleft" +        name="select_all_linksets" +        top_pad="-21" +        left_pad="8" +        width="115"/> +    <button +        follows="right|bottom" +        height="21" +        label="Select none" +        layout="topleft" +        name="select_none_linksets" +        top_pad="-21" +        left_pad="8" +        width="115"/> +  </panel> +  <view_border +      bevel_style="none" +      follows="left|bottom|right" +      height="0"        layout="topleft" +      name="horiz_separator" +      top_pad="0"        left="18" -      top="48" -      multi_select="true" -      name="pathfinding_linksets" -      width="910"> -    <scroll_list.columns -        label="Name (root prim)" -        name="name" -        dynamic_width="true" /> -    <scroll_list.columns -        label="Description (root prim)" -        name="description" -        width="212" /> -    <scroll_list.columns -        label="Land impact" -        name="land_impact" -        width="95" /> -    <scroll_list.columns -        label="Dist from you" -        name="dist_from_you" -        width="97" /> -    <scroll_list.columns -        label="State" -        name="path_state" -        width="74" /> -    <scroll_list.columns -        label="Phantom" -        name="is_phantom" -        width="74" /> -    <scroll_list.columns -        label="A %" -        name="a_percent" -        width="41" /> -    <scroll_list.columns -        label="B %" -        name="b_percent" -        width="41" /> -    <scroll_list.columns -        label="C %" -        name="c_percent" -        width="41" /> -    <scroll_list.columns -        label="D %" -        name="d_percent" -        width="41" /> -  </scroll_list> -  <text -      height="13" -      word_wrap="false" -      use_ellipses="false" -      type="string" -      text_color="LabelTextColor" -      length="1" -      follows="left|bottom" -      layout="topleft" -      name="linksets_status" -      top="200" -      width="500"> -    Linksets: -  </text> -  <button -      follows="right|bottom" -      height="21" -      label="Refresh list" -      layout="topleft" -      name="refresh_linksets_list" -      top="200" -      left="568" -      width="115"/> -  <button -      follows="right|bottom" -      height="21" -      label="Select all" -      layout="topleft" -      name="select_all_linksets" -      top="200" -      left="690" -      width="115"/> -  <button -      follows="right|bottom" -      height="21" -      label="Select none" +      width="912"/> +  <panel +      border="false" +      bevel_style="none" +      follows="left|right|bottom"        layout="topleft" -      name="select_none_linksets" -      top="200" -      left="812" -      width="115"/> +      left="0" +      height="67" +      width="950"> +    <text +        height="13" +        word_wrap="false" +        use_ellipses="false" +        type="string" +        text_color="LabelTextColor" +        length="1" +        left="18" +        follows="left|bottom|right" +        layout="topleft" +        top_pad="8" +        width="912"> +      Actions on selected linksets (If a linkset is removed from the world, its attributes will be lost): +    </text> +    <button +        follows="left|bottom" +        height="21" +        label="Take" +        layout="topleft" +        name="take_linksets" +        top_pad="12" +        left="18" +        width="95"/> +    <button +        follows="left|bottom" +        height="21" +        label="Take copy" +        layout="topleft" +        name="take_copy_linksets" +        top_pad="-21" +        left_pad="6" +        width="95"/> +    <button +        follows="left|bottom" +        height="21" +        label="Return" +        layout="topleft" +        name="return_linksets" +        top_pad="-21" +        left_pad="6" +        width="95"/> +    <button +        follows="left|bottom" +        height="21" +        label="Delete" +        layout="topleft" +        name="delete_linksets" +        top_pad="-21" +        left_pad="6" +        width="95"/> +    <button +        follows="left|bottom" +        height="21" +        label="Teleport me to it" +        layout="topleft" +        name="teleport_me_to_linkset" +        top_pad="-21" +        left_pad="6" +        width="160"/> +  </panel>    <view_border        bevel_style="none"        follows="left|bottom|right"        height="0"        layout="topleft"        name="horiz_separator" -      top="230" -      left="20" +      top_pad="0" +      left="18"        width="912"/> -  <text -      height="13" -      word_wrap="false" -      use_ellipses="false" -      type="string" -      text_color="LabelTextColor" -      length="1" -      follows="left|bottom" -      layout="topleft" -      top_pad="12" -      width="910"> -    Select row(s) to edit attributes of linkset(s).  If a linkset is deleted or returned to inventory, attributes assigned to it will be lost. -  </text> -  <radio_group -      follows="left|bottom" -      height="55" -      value="1" +  <panel +      border="false" +      bevel_style="none" +      follows="left|right|bottom"        layout="topleft" -      left_delta="0" -      name="edit_path_state" -      top_delta="21" -      width="138"> -    <radio_item -        label="Walkable" +      left="0" +      height="75" +      width="950"> +    <text +        height="13" +        word_wrap="false" +        use_ellipses="false" +        type="string" +        text_color="LabelTextColor" +        length="1" +        follows="left|bottom" +        layout="topleft" +        left="18" +        top_pad="8" +        width="912"> +      Edit attributes of selected linksets +    </text> +    <combo_box +        height="20"          layout="topleft" +        follows="left|top" +        name="edit_linkset_use" +        left="18" +        top_pad="17" +        width="199"> +      <combo_box.item +          label="Choose linkset use..." +          name="edit_linkset_use_none" +          value="0" /> +      <combo_box.item +          label="Walkable" +          name="edit_linkset_use_walkable" +          value="1" /> +      <combo_box.item +          label="Static obstacle" +          name="edit_linkset_use_static_obstacle" +          value="2" /> +      <combo_box.item +          label="Dynamic obstacle" +          name="edit_linkset_use_dynamic_obstacle" +          value="3" /> +      <combo_box.item +          label="Material volume" +          name="edit_linkset_use_material_volume" +          value="4" /> +      <combo_box.item +          label="Exclusion volume" +          name="edit_linkset_use_exclusion_volume" +          value="5" /> +      <combo_box.item +          label="Dynamic phantom" +          name="edit_linkset_use_dynamic_phantom" +          value="6" /> +    </combo_box> +    <text          height="13" -        name="edit_pathing_state_walkable" -        value="1"/> -    <radio_item -        label="Obstacle" +        word_wrap="false" +        use_ellipses="false" +        type="string" +        text_color="LabelTextColor" +        text_readonly_color="LabelDisabledColor" +        name="walkability_coefficients_label" +        length="1" +        follows="left|bottom"          layout="topleft" +        left_pad="36" +        top_pad="-17" +        width="110"> +      Walkability: +    </text> +    <text          height="13" -        name="edit_pathing_state_obstacle" -        value="2"/> -    <radio_item -        label="Ignored" +        word_wrap="false" +        use_ellipses="false" +        type="string" +        text_color="LabelTextColor" +        text_readonly_color="LabelDisabledColor" +        name="edit_a_label" +        length="1" +        follows="left|bottom"          layout="topleft" +        left_pad="0" +        width="18"> +      A +    </text> +    <line_editor +        border_style="line" +        border_thickness="1" +        follows="left|bottom" +        height="21" +        layout="topleft" +        left_pad="0" +        top_pad="-19" +        max_length_chars="3" +        name="edit_a_value" +        width="45" /> +    <text          height="13" -        name="edit_pathing_state_ignored" -        value="3"/> -  </radio_group> -  <text -      height="13" -      word_wrap="false" -      use_ellipses="false" -      type="string" -      text_color="LabelTextColor" -      text_readonly_color="LabelDisabledColor" -      name="walkability_coefficients_label" -      length="1" -      follows="left|bottom" -      layout="topleft" -      left="159" -      top="271" -      width="200"> -    Walkability coefficients -  </text> -  <text -      height="13" -      word_wrap="false" -      use_ellipses="false" -      type="string" -      text_color="LabelTextColor" -      text_readonly_color="LabelDisabledColor" -      name="edit_a_label" -      length="1" -      follows="left|bottom" -      layout="topleft" -      top_pad="12" -      width="90"> -    A -  </text> -  <line_editor -      border_style="line" -      border_thickness="1" -      follows="left|bottom" -      height="20" -      layout="topleft" -      left_delta="14" -      max_length_chars="3" -      name="edit_a_value" -      width="45" /> -  <text -      height="13" -      word_wrap="false" -      use_ellipses="false" -      type="string" -      text_color="LabelTextColor" -      text_readonly_color="LabelDisabledColor" -      name="edit_b_label" -      length="1" -      follows="left|bottom" -      layout="topleft" -      left="248" -      top_pad="-13" -      width="90"> -    B -  </text> -  <line_editor -      border_style="line" -      border_thickness="1" -      follows="left|bottom" -      height="20" -      layout="topleft" -      left_delta="14" -      max_length_chars="3" -      name="edit_b_value" -      width="45" /> -  <text -      height="13" -      word_wrap="false" -      use_ellipses="false" -      type="string" -      text_color="LabelTextColor" -      text_readonly_color="LabelDisabledColor" -      name="edit_c_label" -      length="1" -      follows="left|bottom" -      layout="topleft" -      left="337" -      top_pad="-13" -      width="90"> -    C -  </text> -  <line_editor -      border_style="line" -      border_thickness="1" -      follows="left|bottom" -      height="20" -      layout="topleft" -      left_delta="14" -      max_length_chars="3" -      name="edit_c_value" -      width="45" /> -  <text -      height="13" -      word_wrap="false" -      use_ellipses="false" -      type="string" -      text_color="LabelTextColor" -      text_readonly_color="LabelDisabledColor" -      name="edit_d_label" -      length="1" -      follows="left|bottom" -      layout="topleft" -      left="426" -      top_pad="-13" -      width="90"> -    D -  </text> -  <line_editor -      border_style="line" -      border_thickness="1" -      follows="left|bottom" -      height="20" -      layout="topleft" -      left_delta="14" -      max_length_chars="3" -      name="edit_d_value" -      width="45" /> -  <check_box -      follows="left|bottom" -      height="19" -      label="Phantom" -      layout="topleft" -      name="edit_phantom_value" -      top="271" -      left="559" -      width="90" /> -  <button -      follows="right|bottom" -      height="21" -      label="Apply changes" -      layout="topleft" -      name="apply_edit_values" -      top="270" -      left="735" -      width="134"/> +        word_wrap="false" +        use_ellipses="false" +        type="string" +        text_color="LabelTextColor" +        text_readonly_color="LabelDisabledColor" +        name="edit_b_label" +        length="1" +        follows="left|bottom" +        layout="topleft" +        left_pad="44" +        top_pad="-15" +        width="18"> +      B +    </text> +    <line_editor +        border_style="line" +        border_thickness="1" +        follows="left|bottom" +        height="21" +        layout="topleft" +        left_pad="0" +        top_pad="-19" +        max_length_chars="3" +        name="edit_b_value" +        width="45" /> +    <text +        height="13" +        word_wrap="false" +        use_ellipses="false" +        type="string" +        text_color="LabelTextColor" +        text_readonly_color="LabelDisabledColor" +        name="edit_c_label" +        length="1" +        follows="left|bottom" +        layout="topleft" +        left_pad="44" +        top_pad="-15" +        width="18"> +      C +    </text> +    <line_editor +        border_style="line" +        border_thickness="1" +        follows="left|bottom" +        height="21" +        layout="topleft" +        left_pad="0" +        top_pad="-19" +        max_length_chars="3" +        name="edit_c_value" +        width="45" /> +    <text +        height="13" +        word_wrap="false" +        use_ellipses="false" +        type="string" +        text_color="LabelTextColor" +        text_readonly_color="LabelDisabledColor" +        name="edit_d_label" +        length="1" +        follows="left|bottom" +        layout="topleft" +        left_pad="44" +        top_pad="-15" +        width="18"> +      D +    </text> +    <line_editor +        border_style="line" +        border_thickness="1" +        follows="left|bottom" +        height="21" +        layout="topleft" +        left_pad="0" +        top_pad="-19" +        max_length_chars="3" +        name="edit_d_value" +        width="45" /> +    <button +        follows="right|bottom" +        height="21" +        label="Apply changes" +        layout="topleft" +        name="apply_edit_values" +        top_pad="-21" +        left_pad="40" +        width="140"/> +  </panel>  </floater> | 
