PATH-292: First pass at implementing the new design of the linksets floater.
parent
70f8225a30
commit
e156e9ed03
|
|
@ -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())));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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::kObstacle :
|
||||
columns[4]["value"] = getString("linkset_path_state_obstacle");
|
||||
case LLPathfindingLinkset::kStaticObstacle :
|
||||
columns[4]["value"] = getString("linkset_use_static_obstacle");
|
||||
break;
|
||||
case LLPathfindingLinkset::kIgnored :
|
||||
columns[4]["value"] = getString("linkset_path_state_ignored");
|
||||
case LLPathfindingLinkset::kDynamicObstacle :
|
||||
columns[4]["value"] = getString("linkset_use_dynamic_obstacle");
|
||||
break;
|
||||
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::EPathState LLFloaterPathfindingLinksets::getPathState() const
|
||||
LLPathfindingLinkset::ELinksetUse LLFloaterPathfindingLinksets::getFilterLinksetUse() const
|
||||
{
|
||||
LLPathfindingLinkset::EPathState pathState;
|
||||
return convertToLinksetUse(mFilterByLinksetUse->getValue());
|
||||
}
|
||||
|
||||
void LLFloaterPathfindingLinksets::setFilterLinksetUse(LLPathfindingLinkset::ELinksetUse pLinksetUse)
|
||||
{
|
||||
mFilterByLinksetUse->setValue(convertToXuiValue(pLinksetUse));
|
||||
}
|
||||
|
||||
LLPathfindingLinkset::ELinksetUse LLFloaterPathfindingLinksets::getEditLinksetUse() const
|
||||
{
|
||||
return convertToLinksetUse(mEditLinksetUse->getValue());
|
||||
}
|
||||
|
||||
void LLFloaterPathfindingLinksets::setEditLinksetUse(LLPathfindingLinkset::ELinksetUse pLinksetUse)
|
||||
{
|
||||
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_PATH_STATE_OBSTACLE :
|
||||
pathState = LLPathfindingLinkset::kObstacle;
|
||||
case XUI_LINKSET_USE_WALKABLE :
|
||||
linkUse = LLPathfindingLinkset::kWalkable;
|
||||
break;
|
||||
case XUI_PATH_STATE_IGNORED :
|
||||
pathState = LLPathfindingLinkset::kIgnored;
|
||||
case XUI_LINKSET_USE_STATIC_OBSTACLE :
|
||||
linkUse = LLPathfindingLinkset::kStaticObstacle;
|
||||
break;
|
||||
case XUI_LINKSET_USE_DYNAMIC_OBSTACLE :
|
||||
linkUse = LLPathfindingLinkset::kDynamicObstacle;
|
||||
break;
|
||||
case XUI_LINKSET_USE_MATERIAL_VOLUME :
|
||||
linkUse = LLPathfindingLinkset::kMaterialVolume;
|
||||
break;
|
||||
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::kObstacle :
|
||||
radioGroupValue = XUI_PATH_STATE_OBSTACLE;
|
||||
case LLPathfindingLinkset::kStaticObstacle :
|
||||
xuiValue = XUI_LINKSET_USE_STATIC_OBSTACLE;
|
||||
break;
|
||||
case LLPathfindingLinkset::kIgnored :
|
||||
radioGroupValue = XUI_PATH_STATE_IGNORED;
|
||||
case LLPathfindingLinkset::kDynamicObstacle :
|
||||
xuiValue = XUI_LINKSET_USE_DYNAMIC_OBSTACLE;
|
||||
break;
|
||||
case LLPathfindingLinkset::kMaterialVolume :
|
||||
xuiValue = XUI_LINKSET_USE_MATERIAL_VOLUME;
|
||||
break;
|
||||
case LLPathfindingLinkset::kExclusionVolume :
|
||||
xuiValue = XUI_LINKSET_USE_EXCLUSION_VOLUME;
|
||||
break;
|
||||
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;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
itemData[LINKSET_PHANTOM_FIELD] = static_cast<bool>(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)
|
||||
{
|
||||
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 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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
<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"
|
||||
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"
|
||||
layout="topleft"
|
||||
name="clear_filters"
|
||||
top="11"
|
||||
left="851"
|
||||
width="73"/>
|
||||
<scroll_list
|
||||
column_padding="0"
|
||||
draw_heading="true"
|
||||
follows="all"
|
||||
height="135"
|
||||
layout="topleft"
|
||||
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"
|
||||
layout="topleft"
|
||||
name="select_none_linksets"
|
||||
top="200"
|
||||
left="812"
|
||||
width="115"/>
|
||||
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="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"
|
||||
<panel
|
||||
border="false"
|
||||
bevel_style="none"
|
||||
follows="left|right|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"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
name="edit_path_state"
|
||||
top_delta="21"
|
||||
width="138">
|
||||
<radio_item
|
||||
label="Walkable"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
height="67"
|
||||
width="950">
|
||||
<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"
|
||||
length="1"
|
||||
left="18"
|
||||
follows="left|bottom|right"
|
||||
layout="topleft"
|
||||
height="13"
|
||||
name="edit_pathing_state_obstacle"
|
||||
value="2"/>
|
||||
<radio_item
|
||||
label="Ignored"
|
||||
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_pad="0"
|
||||
left="18"
|
||||
width="912"/>
|
||||
<panel
|
||||
border="false"
|
||||
bevel_style="none"
|
||||
follows="left|right|bottom"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
height="75"
|
||||
width="950">
|
||||
<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"
|
||||
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"
|
||||
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"
|
||||
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"
|
||||
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>
|
||||
|
|
|
|||
Loading…
Reference in New Issue