PATH-225: Adding ability to filter and edit linksets using the pathing state values of walkable, obstacle, or ignored.
parent
755ba8652b
commit
53175f835e
|
|
@ -39,12 +39,17 @@
|
|||
#include "llscrolllistitem.h"
|
||||
#include "llscrolllistctrl.h"
|
||||
#include "llcheckboxctrl.h"
|
||||
#include "llradiogroup.h"
|
||||
#include "llbutton.h"
|
||||
#include "llresmgr.h"
|
||||
#include "llviewerregion.h"
|
||||
#include "llhttpclient.h"
|
||||
#include "lluuid.h"
|
||||
|
||||
#define XUI_PATH_STATE_WALKABLE 1
|
||||
#define XUI_PATH_STATE_OBSTACLE 2
|
||||
#define XUI_PATH_STATE_IGNORED 3
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// NavMeshDataGetResponder
|
||||
//---------------------------------------------------------------------------
|
||||
|
|
@ -95,7 +100,7 @@ PathfindingLinkset::PathfindingLinkset(const std::string &pUUID, const LLSD& pNa
|
|||
mDescription(),
|
||||
mLandImpact(0U),
|
||||
mLocation(),
|
||||
mIsFixed(false),
|
||||
mIsPermanent(false),
|
||||
mIsWalkable(false),
|
||||
mIsPhantom(false),
|
||||
mA(0),
|
||||
|
|
@ -118,7 +123,7 @@ PathfindingLinkset::PathfindingLinkset(const std::string &pUUID, const LLSD& pNa
|
|||
|
||||
llassert(pNavMeshItem.has("permanent"));
|
||||
llassert(pNavMeshItem.get("permanent").isBoolean());
|
||||
mIsFixed = pNavMeshItem.get("permanent").asBoolean();
|
||||
mIsPermanent = pNavMeshItem.get("permanent").asBoolean();
|
||||
|
||||
llassert(pNavMeshItem.has("walkable"));
|
||||
llassert(pNavMeshItem.get("walkable").isBoolean());
|
||||
|
|
@ -155,7 +160,7 @@ PathfindingLinkset::PathfindingLinkset(const PathfindingLinkset& pOther)
|
|||
mDescription(pOther.mDescription),
|
||||
mLandImpact(pOther.mLandImpact),
|
||||
mLocation(pOther.mLocation),
|
||||
mIsFixed(pOther.mIsFixed),
|
||||
mIsPermanent(pOther.mIsPermanent),
|
||||
mIsWalkable(pOther.mIsWalkable),
|
||||
mIsPhantom(pOther.mIsPhantom),
|
||||
mA(pOther.mA),
|
||||
|
|
@ -176,7 +181,7 @@ PathfindingLinkset& PathfindingLinkset::operator =(const PathfindingLinkset& pOt
|
|||
mDescription = pOther.mDescription;
|
||||
mLandImpact = pOther.mLandImpact;
|
||||
mLocation = pOther.mLocation;
|
||||
mIsFixed = pOther.mIsFixed;
|
||||
mIsPermanent = pOther.mIsPermanent;
|
||||
mIsWalkable = pOther.mIsWalkable;
|
||||
mIsPhantom = pOther.mIsPhantom;
|
||||
mA = pOther.mA;
|
||||
|
|
@ -212,14 +217,64 @@ const LLVector3& PathfindingLinkset::getPositionAgent() const
|
|||
return mLocation;
|
||||
}
|
||||
|
||||
BOOL PathfindingLinkset::isFixed() const
|
||||
PathfindingLinkset::EPathState PathfindingLinkset::getPathState() const
|
||||
{
|
||||
return mIsFixed;
|
||||
return (mIsPermanent ? (mIsWalkable ? kWalkable : kObstacle) : kIgnored);
|
||||
}
|
||||
|
||||
void PathfindingLinkset::setFixed(BOOL pIsFixed)
|
||||
void PathfindingLinkset::setPathState(EPathState pPathState)
|
||||
{
|
||||
mIsFixed = pIsFixed;
|
||||
mIsPermanent = isPermanent(pPathState);
|
||||
mIsWalkable = isWalkable(pPathState);
|
||||
}
|
||||
|
||||
BOOL PathfindingLinkset::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 PathfindingLinkset::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;
|
||||
}
|
||||
|
||||
BOOL PathfindingLinkset::isPermanent() const
|
||||
{
|
||||
return mIsPermanent;
|
||||
}
|
||||
|
||||
BOOL PathfindingLinkset::isWalkable() const
|
||||
|
|
@ -227,11 +282,6 @@ BOOL PathfindingLinkset::isWalkable() const
|
|||
return mIsWalkable;
|
||||
}
|
||||
|
||||
void PathfindingLinkset::setWalkable(BOOL pIsWalkable)
|
||||
{
|
||||
mIsWalkable = pIsWalkable;
|
||||
}
|
||||
|
||||
BOOL PathfindingLinkset::isPhantom() const
|
||||
{
|
||||
return mIsPhantom;
|
||||
|
|
@ -369,8 +419,9 @@ PathfindingLinksets::PathfindingLinksets()
|
|||
mIsFiltersDirty(false),
|
||||
mNameFilter(),
|
||||
mDescriptionFilter(),
|
||||
mIsFixedFilter(false),
|
||||
mIsWalkableFilter(false)
|
||||
mIsWalkableFilter(true),
|
||||
mIsObstacleFilter(true),
|
||||
mIsIgnoredFilter(true)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -380,8 +431,9 @@ PathfindingLinksets::PathfindingLinksets(const LLSD& pNavMeshData)
|
|||
mIsFiltersDirty(false),
|
||||
mNameFilter(),
|
||||
mDescriptionFilter(),
|
||||
mIsFixedFilter(false),
|
||||
mIsWalkableFilter(false)
|
||||
mIsWalkableFilter(true),
|
||||
mIsObstacleFilter(true),
|
||||
mIsIgnoredFilter(true)
|
||||
{
|
||||
setNavMeshData(pNavMeshData);
|
||||
}
|
||||
|
|
@ -392,8 +444,9 @@ PathfindingLinksets::PathfindingLinksets(const PathfindingLinksets& pOther)
|
|||
mIsFiltersDirty(pOther.mIsFiltersDirty),
|
||||
mNameFilter(pOther.mNameFilter),
|
||||
mDescriptionFilter(pOther.mDescriptionFilter),
|
||||
mIsFixedFilter(pOther.mIsFixedFilter),
|
||||
mIsWalkableFilter(pOther.mIsWalkableFilter)
|
||||
mIsWalkableFilter(pOther.mIsWalkableFilter),
|
||||
mIsObstacleFilter(pOther.mIsObstacleFilter),
|
||||
mIsIgnoredFilter(pOther.mIsIgnoredFilter)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -469,7 +522,7 @@ const PathfindingLinksets::PathfindingLinksetMap& PathfindingLinksets::getFilter
|
|||
|
||||
BOOL PathfindingLinksets::isFiltersActive() const
|
||||
{
|
||||
return (mNameFilter.isActive() || mDescriptionFilter.isActive() || mIsFixedFilter || mIsWalkableFilter);
|
||||
return (mNameFilter.isActive() || mDescriptionFilter.isActive() || !mIsWalkableFilter || !mIsIgnoredFilter || !mIsIgnoredFilter);
|
||||
}
|
||||
|
||||
void PathfindingLinksets::setNameFilter(const std::string& pNameFilter)
|
||||
|
|
@ -492,17 +545,6 @@ const std::string& PathfindingLinksets::getDescriptionFilter() const
|
|||
return mDescriptionFilter.get();
|
||||
}
|
||||
|
||||
void PathfindingLinksets::setFixedFilter(BOOL pFixedFilter)
|
||||
{
|
||||
mIsFiltersDirty = (mIsFiltersDirty || (mIsFixedFilter == pFixedFilter));
|
||||
mIsFixedFilter = pFixedFilter;
|
||||
}
|
||||
|
||||
BOOL PathfindingLinksets::isFixedFilter() const
|
||||
{
|
||||
return mIsFixedFilter;
|
||||
}
|
||||
|
||||
void PathfindingLinksets::setWalkableFilter(BOOL pWalkableFilter)
|
||||
{
|
||||
mIsFiltersDirty = (mIsFiltersDirty || (mIsWalkableFilter == pWalkableFilter));
|
||||
|
|
@ -514,12 +556,35 @@ BOOL PathfindingLinksets::isWalkableFilter() const
|
|||
return mIsWalkableFilter;
|
||||
}
|
||||
|
||||
void PathfindingLinksets::setObstacleFilter(BOOL pObstacleFilter)
|
||||
{
|
||||
mIsFiltersDirty = (mIsFiltersDirty || (mIsObstacleFilter == pObstacleFilter));
|
||||
mIsObstacleFilter = pObstacleFilter;
|
||||
}
|
||||
|
||||
BOOL PathfindingLinksets::isObstacleFilter() const
|
||||
{
|
||||
return mIsObstacleFilter;
|
||||
}
|
||||
|
||||
void PathfindingLinksets::setIgnoredFilter(BOOL pIgnoredFilter)
|
||||
{
|
||||
mIsFiltersDirty = (mIsFiltersDirty || (mIsIgnoredFilter == pIgnoredFilter));
|
||||
mIsIgnoredFilter = pIgnoredFilter;
|
||||
}
|
||||
|
||||
BOOL PathfindingLinksets::isIgnoredFilter() const
|
||||
{
|
||||
return mIsIgnoredFilter;
|
||||
}
|
||||
|
||||
void PathfindingLinksets::clearFilters()
|
||||
{
|
||||
mNameFilter.clear();
|
||||
mDescriptionFilter.clear();
|
||||
mIsFixedFilter = false;
|
||||
mIsWalkableFilter = false;
|
||||
mIsWalkableFilter = true;
|
||||
mIsObstacleFilter = true;
|
||||
mIsIgnoredFilter = true;
|
||||
mIsFiltersDirty = false;
|
||||
}
|
||||
|
||||
|
|
@ -543,8 +608,9 @@ void PathfindingLinksets::applyFilters()
|
|||
|
||||
BOOL PathfindingLinksets::doesMatchFilters(const PathfindingLinkset& pLinkset) const
|
||||
{
|
||||
return ((!mIsFixedFilter || pLinkset.isFixed()) &&
|
||||
(!mIsWalkableFilter || pLinkset.isWalkable()) &&
|
||||
return (((mIsWalkableFilter && (pLinkset.getPathState() == PathfindingLinkset::kWalkable)) ||
|
||||
(mIsObstacleFilter && (pLinkset.getPathState() == PathfindingLinkset::kObstacle)) ||
|
||||
(mIsIgnoredFilter && (pLinkset.getPathState() == PathfindingLinkset::kIgnored))) &&
|
||||
(!mNameFilter.isActive() || mNameFilter.doesMatch(pLinkset.getName())) &&
|
||||
(!mDescriptionFilter.isActive() || mDescriptionFilter.doesMatch(pLinkset.getDescription())));
|
||||
}
|
||||
|
|
@ -581,22 +647,20 @@ BOOL LLFloaterPathfindingLinksets::postBuild()
|
|||
mFilterByDescription->setSelectAllonFocusReceived(true);
|
||||
mFilterByDescription->setCommitOnFocusLost(true);
|
||||
|
||||
mFilterByFixed = findChild<LLCheckBoxCtrl>("filter_by_fixed");
|
||||
llassert(mFilterByFixed != NULL);
|
||||
mFilterByFixed->setCommitCallback(boost::bind(&LLFloaterPathfindingLinksets::onApplyFiltersClicked, this));
|
||||
|
||||
mFilterByWalkable = findChild<LLCheckBoxCtrl>("filter_by_walkable");
|
||||
llassert(mFilterByWalkable != NULL);
|
||||
mFilterByWalkable->setCommitCallback(boost::bind(&LLFloaterPathfindingLinksets::onApplyFiltersClicked, this));
|
||||
|
||||
mEditFixed = findChild<LLCheckBoxCtrl>("edit_fixed_value");
|
||||
llassert(mEditFixed != NULL);
|
||||
mFilterByObstacle = findChild<LLCheckBoxCtrl>("filter_by_obstacle");
|
||||
llassert(mFilterByObstacle != NULL);
|
||||
mFilterByObstacle->setCommitCallback(boost::bind(&LLFloaterPathfindingLinksets::onApplyFiltersClicked, this));
|
||||
|
||||
mEditWalkable = findChild<LLCheckBoxCtrl>("edit_walkable_value");
|
||||
llassert(mEditWalkable != NULL);
|
||||
mFilterByIgnored = findChild<LLCheckBoxCtrl>("filter_by_ignored");
|
||||
llassert(mFilterByIgnored != NULL);
|
||||
mFilterByIgnored->setCommitCallback(boost::bind(&LLFloaterPathfindingLinksets::onApplyFiltersClicked, this));
|
||||
|
||||
mEditPhantom = findChild<LLCheckBoxCtrl>("edit_phantom_value");
|
||||
llassert(mEditPhantom != NULL);
|
||||
mEditPathState = findChild<LLRadioGroup>("edit_path_state");
|
||||
llassert(mEditPathState != NULL);
|
||||
|
||||
mLabelWalkabilityCoefficients = findChild<LLTextBase>("walkability_coefficients_label");
|
||||
llassert(mLabelWalkabilityCoefficients != NULL);
|
||||
|
|
@ -629,6 +693,9 @@ BOOL LLFloaterPathfindingLinksets::postBuild()
|
|||
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));
|
||||
|
|
@ -681,11 +748,10 @@ LLFloaterPathfindingLinksets::LLFloaterPathfindingLinksets(const LLSD& pSeed)
|
|||
mLinksetsStatus(NULL),
|
||||
mFilterByName(NULL),
|
||||
mFilterByDescription(NULL),
|
||||
mFilterByFixed(NULL),
|
||||
mFilterByWalkable(NULL),
|
||||
mEditFixed(NULL),
|
||||
mEditWalkable(NULL),
|
||||
mEditPhantom(NULL),
|
||||
mFilterByObstacle(NULL),
|
||||
mFilterByIgnored(NULL),
|
||||
mEditPathState(NULL),
|
||||
mLabelWalkabilityCoefficients(NULL),
|
||||
mLabelEditA(NULL),
|
||||
mLabelEditB(NULL),
|
||||
|
|
@ -695,6 +761,7 @@ LLFloaterPathfindingLinksets::LLFloaterPathfindingLinksets(const LLSD& pSeed)
|
|||
mEditB(NULL),
|
||||
mEditC(NULL),
|
||||
mEditD(NULL),
|
||||
mEditPhantom(NULL),
|
||||
mApplyEdits(NULL)
|
||||
{
|
||||
}
|
||||
|
|
@ -865,8 +932,9 @@ void LLFloaterPathfindingLinksets::applyFilters()
|
|||
{
|
||||
mPathfindingLinksets.setNameFilter(mFilterByName->getText());
|
||||
mPathfindingLinksets.setDescriptionFilter(mFilterByDescription->getText());
|
||||
mPathfindingLinksets.setFixedFilter(mFilterByFixed->get());
|
||||
mPathfindingLinksets.setWalkableFilter(mFilterByWalkable->get());
|
||||
mPathfindingLinksets.setObstacleFilter(mFilterByObstacle->get());
|
||||
mPathfindingLinksets.setIgnoredFilter(mFilterByIgnored->get());
|
||||
updateLinksetsList();
|
||||
}
|
||||
|
||||
|
|
@ -875,8 +943,9 @@ void LLFloaterPathfindingLinksets::clearFilters()
|
|||
mPathfindingLinksets.clearFilters();
|
||||
mFilterByName->setText(LLStringExplicit(mPathfindingLinksets.getNameFilter()));
|
||||
mFilterByDescription->setText(LLStringExplicit(mPathfindingLinksets.getDescriptionFilter()));
|
||||
mFilterByFixed->set(mPathfindingLinksets.isFixedFilter());
|
||||
mFilterByWalkable->set(mPathfindingLinksets.isWalkableFilter());
|
||||
mFilterByObstacle->set(mPathfindingLinksets.isObstacleFilter());
|
||||
mFilterByIgnored->set(mPathfindingLinksets.isIgnoredFilter());
|
||||
updateLinksetsList();
|
||||
}
|
||||
|
||||
|
|
@ -926,7 +995,7 @@ void LLFloaterPathfindingLinksets::updateLinksetsList()
|
|||
columns[3]["font"] = "SANSSERIF";
|
||||
|
||||
columns[4]["column"] = "is_fixed";
|
||||
columns[4]["value"] = getString(linkset.isFixed() ? "linkset_is_fixed" : "linkset_is_not_fixed");
|
||||
columns[4]["value"] = getString(linkset.isPermanent() ? "linkset_is_fixed" : "linkset_is_not_fixed");
|
||||
columns[4]["font"] = "SANSSERIF";
|
||||
|
||||
columns[5]["column"] = "is_walkable";
|
||||
|
|
@ -1036,13 +1105,12 @@ void LLFloaterPathfindingLinksets::updateEditFields()
|
|||
std::vector<LLScrollListItem*> selectedItems = mLinksetsScrollList->getAllSelected();
|
||||
if (selectedItems.empty())
|
||||
{
|
||||
mEditFixed->clear();
|
||||
mEditWalkable->clear();
|
||||
mEditPhantom->clear();
|
||||
mEditPathState->clear();
|
||||
mEditA->clear();
|
||||
mEditB->clear();
|
||||
mEditC->clear();
|
||||
mEditD->clear();
|
||||
mEditPhantom->clear();
|
||||
|
||||
setEnableEditFields(false);
|
||||
}
|
||||
|
|
@ -1054,13 +1122,12 @@ void LLFloaterPathfindingLinksets::updateEditFields()
|
|||
PathfindingLinksets::PathfindingLinksetMap::const_iterator linksetIter = linksetsMap.find(firstItem->getUUID().asString());
|
||||
const PathfindingLinkset &linkset(linksetIter->second);
|
||||
|
||||
mEditFixed->set(linkset.isFixed());
|
||||
mEditWalkable->set(linkset.isWalkable());
|
||||
mEditPhantom->set(linkset.isPhantom());
|
||||
setPathState(linkset.getPathState());
|
||||
mEditA->setValue(LLSD(linkset.getA()));
|
||||
mEditB->setValue(LLSD(linkset.getB()));
|
||||
mEditC->setValue(LLSD(linkset.getC()));
|
||||
mEditD->setValue(LLSD(linkset.getD()));
|
||||
mEditPhantom->set(linkset.isPhantom());
|
||||
|
||||
setEnableEditFields(true);
|
||||
}
|
||||
|
|
@ -1071,9 +1138,9 @@ void LLFloaterPathfindingLinksets::applyEditFields()
|
|||
std::vector<LLScrollListItem*> selectedItems = mLinksetsScrollList->getAllSelected();
|
||||
if (!selectedItems.empty())
|
||||
{
|
||||
BOOL isFixedBool = mEditFixed->getValue();
|
||||
BOOL isWalkableBool = mEditWalkable->getValue();
|
||||
BOOL isPhantomBool = mEditPhantom->getValue();
|
||||
PathfindingLinkset::EPathState pathState = getPathState();
|
||||
BOOL isPermanentBool = PathfindingLinkset::isPermanent(pathState);
|
||||
BOOL isWalkableBool = PathfindingLinkset::isWalkable(pathState);
|
||||
const std::string &aString = mEditA->getText();
|
||||
const std::string &bString = mEditB->getText();
|
||||
const std::string &cString = mEditC->getText();
|
||||
|
|
@ -1082,14 +1149,15 @@ 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 isPhantomBool = mEditPhantom->getValue();
|
||||
|
||||
LLSD isFixed = (bool)isFixedBool;
|
||||
LLSD isPermanent = (bool)isPermanentBool;
|
||||
LLSD isWalkable = (bool)isWalkableBool;
|
||||
LLSD isPhantom = (bool)isPhantomBool;
|
||||
LLSD a = static_cast<F32>(aValue) / 100.0f;
|
||||
LLSD b = static_cast<F32>(bValue) / 100.0f;
|
||||
LLSD c = static_cast<F32>(cValue) / 100.0f;
|
||||
LLSD d = static_cast<F32>(dValue) / 100.0f;
|
||||
LLSD isPhantom = (bool)isPhantomBool;
|
||||
|
||||
const PathfindingLinksets::PathfindingLinksetMap &linksetsMap = mPathfindingLinksets.getAllLinksets();
|
||||
|
||||
|
|
@ -1104,18 +1172,11 @@ void LLFloaterPathfindingLinksets::applyEditFields()
|
|||
const PathfindingLinkset &linkset = linksetIter->second;
|
||||
|
||||
LLSD itemData;
|
||||
if (linkset.isFixed() != isFixedBool)
|
||||
{
|
||||
itemData["permanent"] = isFixed;
|
||||
}
|
||||
if (linkset.isWalkable() != isWalkableBool)
|
||||
if (linkset.getPathState() != pathState)
|
||||
{
|
||||
itemData["permanent"] = isPermanent;
|
||||
itemData["walkable"] = isWalkable;
|
||||
}
|
||||
if (linkset.isPhantom() != isPhantomBool)
|
||||
{
|
||||
itemData["phantom"] = isPhantom;
|
||||
}
|
||||
if (linkset.getA() != aValue)
|
||||
{
|
||||
itemData["A"] = a;
|
||||
|
|
@ -1132,6 +1193,10 @@ void LLFloaterPathfindingLinksets::applyEditFields()
|
|||
{
|
||||
itemData["D"] = d;
|
||||
}
|
||||
if (linkset.isPhantom() != isPhantomBool)
|
||||
{
|
||||
itemData["phantom"] = isPhantom;
|
||||
}
|
||||
|
||||
if (!itemData.isUndefined())
|
||||
{
|
||||
|
|
@ -1152,9 +1217,7 @@ void LLFloaterPathfindingLinksets::applyEditFields()
|
|||
|
||||
void LLFloaterPathfindingLinksets::setEnableEditFields(BOOL pEnabled)
|
||||
{
|
||||
mEditFixed->setEnabled(pEnabled);
|
||||
mEditWalkable->setEnabled(pEnabled);
|
||||
mEditPhantom->setEnabled(pEnabled);
|
||||
mEditPathState->setEnabled(pEnabled);
|
||||
mLabelWalkabilityCoefficients->setEnabled(pEnabled);
|
||||
mLabelEditA->setEnabled(pEnabled);
|
||||
mLabelEditB->setEnabled(pEnabled);
|
||||
|
|
@ -1164,9 +1227,58 @@ void LLFloaterPathfindingLinksets::setEnableEditFields(BOOL pEnabled)
|
|||
mEditB->setEnabled(pEnabled);
|
||||
mEditC->setEnabled(pEnabled);
|
||||
mEditD->setEnabled(pEnabled);
|
||||
mEditPhantom->setEnabled(pEnabled);
|
||||
mApplyEdits->setEnabled(pEnabled);
|
||||
}
|
||||
|
||||
PathfindingLinkset::EPathState LLFloaterPathfindingLinksets::getPathState() const
|
||||
{
|
||||
PathfindingLinkset::EPathState pathState;
|
||||
|
||||
switch (mEditPathState->getValue().asInteger())
|
||||
{
|
||||
case XUI_PATH_STATE_WALKABLE :
|
||||
pathState = PathfindingLinkset::kWalkable;
|
||||
break;
|
||||
case XUI_PATH_STATE_OBSTACLE :
|
||||
pathState = PathfindingLinkset::kObstacle;
|
||||
break;
|
||||
case XUI_PATH_STATE_IGNORED :
|
||||
pathState = PathfindingLinkset::kIgnored;
|
||||
break;
|
||||
default :
|
||||
pathState = PathfindingLinkset::kIgnored;
|
||||
llassert(0);
|
||||
break;
|
||||
}
|
||||
|
||||
return pathState;
|
||||
}
|
||||
|
||||
void LLFloaterPathfindingLinksets::setPathState(PathfindingLinkset::EPathState pPathState)
|
||||
{
|
||||
LLSD radioGroupValue;
|
||||
|
||||
switch (pPathState)
|
||||
{
|
||||
case PathfindingLinkset::kWalkable :
|
||||
radioGroupValue = XUI_PATH_STATE_WALKABLE;
|
||||
break;
|
||||
case PathfindingLinkset::kObstacle :
|
||||
radioGroupValue = XUI_PATH_STATE_OBSTACLE;
|
||||
break;
|
||||
case PathfindingLinkset::kIgnored :
|
||||
radioGroupValue = XUI_PATH_STATE_IGNORED;
|
||||
break;
|
||||
default :
|
||||
radioGroupValue = XUI_PATH_STATE_IGNORED;
|
||||
llassert(0);
|
||||
break;
|
||||
}
|
||||
|
||||
mEditPathState->setValue(radioGroupValue);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// NavMeshDataGetResponder
|
||||
//---------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -37,11 +37,19 @@ class LLTextBase;
|
|||
class LLScrollListCtrl;
|
||||
class LLLineEditor;
|
||||
class LLCheckBoxCtrl;
|
||||
class LLRadioGroup;
|
||||
class LLButton;
|
||||
|
||||
class PathfindingLinkset
|
||||
{
|
||||
public:
|
||||
typedef enum
|
||||
{
|
||||
kWalkable,
|
||||
kObstacle,
|
||||
kIgnored
|
||||
} EPathState;
|
||||
|
||||
PathfindingLinkset(const std::string &pUUID, const LLSD &pNavMeshItem);
|
||||
PathfindingLinkset(const PathfindingLinkset& pOther);
|
||||
virtual ~PathfindingLinkset();
|
||||
|
|
@ -54,11 +62,13 @@ public:
|
|||
U32 getLandImpact() const;
|
||||
const LLVector3& getPositionAgent() const;
|
||||
|
||||
BOOL isFixed() const;
|
||||
void setFixed(BOOL pIsFixed);
|
||||
EPathState getPathState() const;
|
||||
void setPathState(EPathState pPathState);
|
||||
static BOOL isPermanent(EPathState pPathState);
|
||||
static BOOL isWalkable(EPathState pPathState);
|
||||
|
||||
BOOL isPermanent() const;
|
||||
BOOL isWalkable() const;
|
||||
void setWalkable(BOOL pIsWalkable);
|
||||
|
||||
BOOL isPhantom() const;
|
||||
void setPhantom(BOOL pIsPhantom);
|
||||
|
|
@ -83,7 +93,7 @@ private:
|
|||
std::string mDescription;
|
||||
U32 mLandImpact;
|
||||
LLVector3 mLocation;
|
||||
BOOL mIsFixed;
|
||||
BOOL mIsPermanent;
|
||||
BOOL mIsWalkable;
|
||||
BOOL mIsPhantom;
|
||||
S32 mA;
|
||||
|
|
@ -136,10 +146,12 @@ public:
|
|||
const std::string& getNameFilter() const;
|
||||
void setDescriptionFilter(const std::string& pDescriptionFilter);
|
||||
const std::string& getDescriptionFilter() const;
|
||||
void setFixedFilter(BOOL pFixedFilter);
|
||||
BOOL isFixedFilter() const;
|
||||
void setWalkableFilter(BOOL pWalkableFilter);
|
||||
BOOL isWalkableFilter() const;
|
||||
void setObstacleFilter(BOOL pObstacleFilter);
|
||||
BOOL isObstacleFilter() const;
|
||||
void setIgnoredFilter(BOOL pIgnoredFilter);
|
||||
BOOL isIgnoredFilter() const;
|
||||
void clearFilters();
|
||||
|
||||
protected:
|
||||
|
|
@ -151,8 +163,9 @@ private:
|
|||
bool mIsFiltersDirty;
|
||||
FilterString mNameFilter;
|
||||
FilterString mDescriptionFilter;
|
||||
BOOL mIsFixedFilter;
|
||||
BOOL mIsWalkableFilter;
|
||||
BOOL mIsObstacleFilter;
|
||||
BOOL mIsIgnoredFilter;
|
||||
|
||||
void applyFilters();
|
||||
BOOL doesMatchFilters(const PathfindingLinkset& pLinkset) const;
|
||||
|
|
@ -194,11 +207,10 @@ private:
|
|||
LLTextBase *mLinksetsStatus;
|
||||
LLLineEditor *mFilterByName;
|
||||
LLLineEditor *mFilterByDescription;
|
||||
LLCheckBoxCtrl *mFilterByFixed;
|
||||
LLCheckBoxCtrl *mFilterByWalkable;
|
||||
LLCheckBoxCtrl *mEditFixed;
|
||||
LLCheckBoxCtrl *mEditWalkable;
|
||||
LLCheckBoxCtrl *mEditPhantom;
|
||||
LLCheckBoxCtrl *mFilterByObstacle;
|
||||
LLCheckBoxCtrl *mFilterByIgnored;
|
||||
LLRadioGroup *mEditPathState;
|
||||
LLTextBase *mLabelWalkabilityCoefficients;
|
||||
LLTextBase *mLabelEditA;
|
||||
LLTextBase *mLabelEditB;
|
||||
|
|
@ -208,6 +220,7 @@ private:
|
|||
LLLineEditor *mEditB;
|
||||
LLLineEditor *mEditC;
|
||||
LLLineEditor *mEditD;
|
||||
LLCheckBoxCtrl *mEditPhantom;
|
||||
LLButton *mApplyEdits;
|
||||
|
||||
// Does its own instance management, so clients not allowed
|
||||
|
|
@ -247,6 +260,9 @@ private:
|
|||
void updateEditFields();
|
||||
void applyEditFields();
|
||||
void setEnableEditFields(BOOL pEnabled);
|
||||
|
||||
PathfindingLinkset::EPathState getPathState() const;
|
||||
void setPathState(PathfindingLinkset::EPathState pPathState);
|
||||
};
|
||||
|
||||
#endif // LL_LLFLOATERPATHFINDINGLINKSETS_H
|
||||
|
|
|
|||
|
|
@ -36,8 +36,8 @@
|
|||
layout="topleft"
|
||||
left="20"
|
||||
top="16"
|
||||
width="90">
|
||||
Filter list by:
|
||||
width="67">
|
||||
Filter by:
|
||||
</text>
|
||||
<text
|
||||
height="13"
|
||||
|
|
@ -48,10 +48,10 @@
|
|||
length="1"
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
left="109"
|
||||
left="87"
|
||||
top="16"
|
||||
width="94">
|
||||
Portion of name
|
||||
width="62">
|
||||
Name
|
||||
</text>
|
||||
<line_editor
|
||||
border_style="line"
|
||||
|
|
@ -59,11 +59,11 @@
|
|||
follows="top|left"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left_delta="93"
|
||||
left_delta="62"
|
||||
top="11"
|
||||
max_length_bytes="10"
|
||||
name="filter_by_name"
|
||||
width="115" />
|
||||
width="105" />
|
||||
<text
|
||||
height="13"
|
||||
word_wrap="false"
|
||||
|
|
@ -73,10 +73,10 @@
|
|||
length="1"
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
left="336"
|
||||
left="273"
|
||||
top="16"
|
||||
width="132">
|
||||
Portion of description
|
||||
width="88">
|
||||
Description
|
||||
</text>
|
||||
<line_editor
|
||||
border_style="line"
|
||||
|
|
@ -84,26 +84,37 @@
|
|||
follows="top|left"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left_delta="131"
|
||||
left_delta="88"
|
||||
top="11"
|
||||
max_length_bytes="10"
|
||||
name="filter_by_description"
|
||||
width="115" />
|
||||
width="106" />
|
||||
<check_box
|
||||
height="19"
|
||||
label="Fixed"
|
||||
initial_value="1"
|
||||
label="Walkable"
|
||||
layout="topleft"
|
||||
left="591"
|
||||
left="481"
|
||||
top="14"
|
||||
name="filter_by_fixed"
|
||||
name="filter_by_walkable"
|
||||
width="90" />
|
||||
<check_box
|
||||
height="19"
|
||||
label="Walkable"
|
||||
initial_value="1"
|
||||
label="Obstacle"
|
||||
layout="topleft"
|
||||
left="671"
|
||||
left="577"
|
||||
top="14"
|
||||
name="filter_by_walkable"
|
||||
name="filter_by_obstacle"
|
||||
width="90" />
|
||||
<check_box
|
||||
height="19"
|
||||
initial_value="1"
|
||||
label="Ignored"
|
||||
layout="topleft"
|
||||
left="674"
|
||||
top="14"
|
||||
name="filter_by_ignored"
|
||||
width="90" />
|
||||
<button
|
||||
follows="right|top"
|
||||
|
|
@ -242,21 +253,34 @@
|
|||
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>
|
||||
<check_box
|
||||
height="19"
|
||||
label="Fixed"
|
||||
<radio_group
|
||||
follows="top|left"
|
||||
height="55"
|
||||
value="1"
|
||||
layout="topleft"
|
||||
name="edit_fixed_value"
|
||||
top_pad="10"
|
||||
width="90" />
|
||||
<check_box
|
||||
height="19"
|
||||
label="Walkable"
|
||||
layout="topleft"
|
||||
name="edit_walkable_value"
|
||||
top_pad="5"
|
||||
left="38"
|
||||
width="90" />
|
||||
left_delta="0"
|
||||
name="edit_path_state"
|
||||
top_delta="21"
|
||||
width="138">
|
||||
<radio_item
|
||||
label="Walkable"
|
||||
layout="topleft"
|
||||
height="13"
|
||||
name="edit_pathing_state_walkable"
|
||||
value="1"/>
|
||||
<radio_item
|
||||
label="Obstacle"
|
||||
layout="topleft"
|
||||
height="13"
|
||||
name="edit_pathing_state_obstacle"
|
||||
value="2"/>
|
||||
<radio_item
|
||||
label="Ignored"
|
||||
layout="topleft"
|
||||
height="13"
|
||||
name="edit_pathing_state_ignored"
|
||||
value="3"/>
|
||||
</radio_group>
|
||||
<text
|
||||
height="13"
|
||||
word_wrap="false"
|
||||
|
|
|
|||
Loading…
Reference in New Issue