summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/newview/llfloaterpathfindinglinksets.cpp20
-rw-r--r--indra/newview/llfloaterpathfindinglinksets.h4
-rw-r--r--indra/newview/llpanelpathfindingrebakenavmesh.cpp15
-rw-r--r--indra/newview/llpanelpathfindingrebakenavmesh.h3
-rw-r--r--indra/newview/llselectmgr.cpp30
-rw-r--r--indra/newview/llselectmgr.h2
-rw-r--r--indra/newview/llviewermenu.cpp2
-rw-r--r--indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml69
8 files changed, 135 insertions, 10 deletions
diff --git a/indra/newview/llfloaterpathfindinglinksets.cpp b/indra/newview/llfloaterpathfindinglinksets.cpp
index 9516b4b0c1..bb0ac8f4b9 100644
--- a/indra/newview/llfloaterpathfindinglinksets.cpp
+++ b/indra/newview/llfloaterpathfindinglinksets.cpp
@@ -86,12 +86,16 @@ LLFloaterPathfindingLinksets::LLFloaterPathfindingLinksets(const LLSD& pSeed)
mEditLinksetUseDynamicPhantom(NULL),
mLabelWalkabilityCoefficients(NULL),
mLabelEditA(NULL),
+ mLabelSuggestedUseA(NULL),
mEditA(NULL),
mLabelEditB(NULL),
+ mLabelSuggestedUseB(NULL),
mEditB(NULL),
mLabelEditC(NULL),
+ mLabelSuggestedUseC(NULL),
mEditC(NULL),
mLabelEditD(NULL),
+ mLabelSuggestedUseD(NULL),
mEditD(NULL),
mApplyEditsButton(NULL),
mBeaconColor()
@@ -158,6 +162,9 @@ BOOL LLFloaterPathfindingLinksets::postBuild()
mLabelEditA = findChild<LLTextBase>("edit_a_label");
llassert(mLabelEditA != NULL);
+ mLabelSuggestedUseA = findChild<LLTextBase>("suggested_use_a_label");
+ llassert(mLabelSuggestedUseA != NULL);
+
mEditA = findChild<LLLineEditor>("edit_a_value");
llassert(mEditA != NULL);
mEditA->setPrevalidate(LLTextValidate::validateNonNegativeS32);
@@ -166,6 +173,9 @@ BOOL LLFloaterPathfindingLinksets::postBuild()
mLabelEditB = findChild<LLTextBase>("edit_b_label");
llassert(mLabelEditB != NULL);
+ mLabelSuggestedUseB = findChild<LLTextBase>("suggested_use_b_label");
+ llassert(mLabelSuggestedUseB != NULL);
+
mEditB = findChild<LLLineEditor>("edit_b_value");
llassert(mEditB != NULL);
mEditB->setPrevalidate(LLTextValidate::validateNonNegativeS32);
@@ -174,6 +184,9 @@ BOOL LLFloaterPathfindingLinksets::postBuild()
mLabelEditC = findChild<LLTextBase>("edit_c_label");
llassert(mLabelEditC != NULL);
+ mLabelSuggestedUseC = findChild<LLTextBase>("suggested_use_c_label");
+ llassert(mLabelSuggestedUseC != NULL);
+
mEditC = findChild<LLLineEditor>("edit_c_value");
llassert(mEditC != NULL);
mEditC->setPrevalidate(LLTextValidate::validateNonNegativeS32);
@@ -182,6 +195,9 @@ BOOL LLFloaterPathfindingLinksets::postBuild()
mLabelEditD = findChild<LLTextBase>("edit_d_label");
llassert(mLabelEditD != NULL);
+ mLabelSuggestedUseD = findChild<LLTextBase>("suggested_use_d_label");
+ llassert(mLabelSuggestedUseD != NULL);
+
mEditD = findChild<LLLineEditor>("edit_d_value");
llassert(mEditD != NULL);
mEditD->setPrevalidate(LLTextValidate::validateNonNegativeS32);
@@ -500,6 +516,10 @@ void LLFloaterPathfindingLinksets::updateStateOnEditFields()
mLabelEditB->setEnabled(isEditEnabled);
mLabelEditC->setEnabled(isEditEnabled);
mLabelEditD->setEnabled(isEditEnabled);
+ mLabelSuggestedUseA->setEnabled(isEditEnabled);
+ mLabelSuggestedUseB->setEnabled(isEditEnabled);
+ mLabelSuggestedUseC->setEnabled(isEditEnabled);
+ mLabelSuggestedUseD->setEnabled(isEditEnabled);
mEditA->setEnabled(isEditEnabled);
mEditB->setEnabled(isEditEnabled);
mEditC->setEnabled(isEditEnabled);
diff --git a/indra/newview/llfloaterpathfindinglinksets.h b/indra/newview/llfloaterpathfindinglinksets.h
index a4631ffeb7..342a64fc77 100644
--- a/indra/newview/llfloaterpathfindinglinksets.h
+++ b/indra/newview/llfloaterpathfindinglinksets.h
@@ -115,12 +115,16 @@ private:
LLScrollListItem *mEditLinksetUseDynamicPhantom;
LLTextBase *mLabelWalkabilityCoefficients;
LLTextBase *mLabelEditA;
+ LLTextBase *mLabelSuggestedUseA;
LLLineEditor *mEditA;
LLTextBase *mLabelEditB;
+ LLTextBase *mLabelSuggestedUseB;
LLLineEditor *mEditB;
LLTextBase *mLabelEditC;
+ LLTextBase *mLabelSuggestedUseC;
LLLineEditor *mEditC;
LLTextBase *mLabelEditD;
+ LLTextBase *mLabelSuggestedUseD;
LLLineEditor *mEditD;
LLButton *mApplyEditsButton;
diff --git a/indra/newview/llpanelpathfindingrebakenavmesh.cpp b/indra/newview/llpanelpathfindingrebakenavmesh.cpp
index 2c8c46c7bc..8df041f578 100644
--- a/indra/newview/llpanelpathfindingrebakenavmesh.cpp
+++ b/indra/newview/llpanelpathfindingrebakenavmesh.cpp
@@ -159,6 +159,11 @@ void LLPanelPathfindingRebakeNavmesh::setMode(ERebakeNavMeshMode pRebakeNavMeshM
mRebakeNavMeshMode = pRebakeNavMeshMode;
}
+LLPanelPathfindingRebakeNavmesh::ERebakeNavMeshMode LLPanelPathfindingRebakeNavmesh::getMode() const
+{
+ return mRebakeNavMeshMode;
+}
+
void LLPanelPathfindingRebakeNavmesh::onNavMeshRebakeClick()
{
setMode(kRebakeNavMesh_RequestSent);
@@ -172,16 +177,14 @@ void LLPanelPathfindingRebakeNavmesh::handleAgentState(BOOL pCanRebakeRegion)
void LLPanelPathfindingRebakeNavmesh::handleRebakeNavMeshResponse(bool pResponseStatus)
{
- setMode(pResponseStatus ? kRebakeNavMesh_InProgress : kRebakeNavMesh_Default);
- if (!pResponseStatus)
+ if (getMode() == kRebakeNavMesh_RequestSent)
{
- LLNotificationsUtil::add("PathfindingCannotRebakeNavmesh");
+ setMode(pResponseStatus ? kRebakeNavMesh_InProgress : kRebakeNavMesh_Default);
}
- LLViewerRegion *currentRegion = gAgent.getRegion();
- if (currentRegion != NULL)
+ if (!pResponseStatus)
{
- LLPathfindingManager::getInstance()->requestGetNavMeshForRegion(currentRegion, true);
+ LLNotificationsUtil::add("PathfindingCannotRebakeNavmesh");
}
}
diff --git a/indra/newview/llpanelpathfindingrebakenavmesh.h b/indra/newview/llpanelpathfindingrebakenavmesh.h
index 5fe581ec2f..48764f2aa7 100644
--- a/indra/newview/llpanelpathfindingrebakenavmesh.h
+++ b/indra/newview/llpanelpathfindingrebakenavmesh.h
@@ -66,7 +66,8 @@ private:
static LLPanelPathfindingRebakeNavmesh* getPanel();
- void setMode(ERebakeNavMeshMode pRebakeNavMeshMode);
+ void setMode(ERebakeNavMeshMode pRebakeNavMeshMode);
+ ERebakeNavMeshMode getMode() const;
void onNavMeshRebakeClick();
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index 71ea5d80a9..b9449e806f 100644
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -2787,6 +2787,36 @@ BOOL LLSelectMgr::selectGetRootsNonCharacter()
//-----------------------------------------------------------------------------
+// selectGetEditableLinksets() - return TRUE if all objects are editable
+// pathfinding linksets
+//-----------------------------------------------------------------------------
+BOOL LLSelectMgr::selectGetEditableLinksets()
+{
+ for (LLObjectSelection::iterator iter = getSelection()->begin();
+ iter != getSelection()->end(); iter++ )
+ {
+ LLSelectNode* node = *iter;
+ LLViewerObject* object = node->getObject();
+ if( !object || !node->mValid )
+ {
+ return FALSE;
+ }
+ if (object->flagUsePhysics() ||
+ object->flagTemporaryOnRez() ||
+ object->flagCharacter() ||
+ object->flagAnimSource() ||
+ (!gAgent.isGodlike() &&
+ !gAgent.canManageEstate() &&
+ !object->permYouOwner() &&
+ !object->permMove()))
+ {
+ return FALSE;
+ }
+ }
+ return TRUE;
+}
+
+//-----------------------------------------------------------------------------
// selectGetRootsTransfer() - return TRUE if current agent can transfer all
// selected root objects.
//-----------------------------------------------------------------------------
diff --git a/indra/newview/llselectmgr.h b/indra/newview/llselectmgr.h
index bf40ab458f..feab6ebdf8 100644
--- a/indra/newview/llselectmgr.h
+++ b/indra/newview/llselectmgr.h
@@ -584,6 +584,8 @@ public:
BOOL selectGetRootsNonCharacter();
BOOL selectGetNonCharacter();
+ BOOL selectGetEditableLinksets();
+
// returns TRUE if selected objects can be transferred.
BOOL selectGetRootsTransfer();
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 06ffd2df92..3eb0538328 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -2804,7 +2804,7 @@ bool enable_object_build()
bool enable_object_select_in_pathfinding_linksets()
{
- return LLPathfindingManager::getInstance()->isPathfindingEnabledForCurrentRegion() && LLSelectMgr::getInstance()->selectGetNonCharacter();
+ return LLPathfindingManager::getInstance()->isPathfindingEnabledForCurrentRegion() && LLSelectMgr::getInstance()->selectGetEditableLinksets();
}
bool enable_object_select_in_pathfinding_characters()
diff --git a/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml b/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml
index 833e5489ba..cd0f57be99 100644
--- a/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml
+++ b/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml
@@ -3,9 +3,9 @@
open_positioning="cascading"
can_resize="true"
can_tear_off="false"
- height="382"
+ height="395"
width="1015"
- min_height="382"
+ min_height="395"
min_width="1015"
layout="topleft"
name="floater_pathfinding_linksets"
@@ -428,6 +428,7 @@
top_pad="-19"
max_length_chars="3"
name="edit_a_value"
+ tool_tip="Walkability for characters of type A. Example character type is humanoid."
width="45" />
<text
height="13"
@@ -455,6 +456,7 @@
top_pad="-19"
max_length_chars="3"
name="edit_b_value"
+ tool_tip="Walkability for characters of type B. Example character type is creature."
width="45" />
<text
height="13"
@@ -482,6 +484,7 @@
top_pad="-19"
max_length_chars="3"
name="edit_c_value"
+ tool_tip="Walkability for characters of type C. Example character type is mechanical."
width="45" />
<text
height="13"
@@ -509,6 +512,7 @@
top_pad="-19"
max_length_chars="3"
name="edit_d_value"
+ tool_tip="Walkability for characters of type D. Example character type is other."
width="45" />
<button
follows="right|bottom"
@@ -519,5 +523,66 @@
top_pad="-21"
left_pad="40"
width="140"/>
+ <text
+ height="13"
+ word_wrap="false"
+ use_ellipses="false"
+ type="string"
+ text_color="LabelTextColor"
+ text_readonly_color="LabelDisabledColor"
+ name="suggested_use_a_label"
+ length="1"
+ follows="left|bottom"
+ layout="topleft"
+ left="363"
+ top_pad="5"
+ width="107">
+ (Humanoid)
+ </text>
+ <text
+ height="13"
+ word_wrap="false"
+ use_ellipses="false"
+ type="string"
+ text_color="LabelTextColor"
+ text_readonly_color="LabelDisabledColor"
+ name="suggested_use_b_label"
+ length="1"
+ follows="left|bottom"
+ layout="topleft"
+ left_pad="0"
+ width="107">
+ (Creature)
+ </text>
+ <text
+ height="13"
+ word_wrap="false"
+ use_ellipses="false"
+ type="string"
+ text_color="LabelTextColor"
+ text_readonly_color="LabelDisabledColor"
+ name="suggested_use_c_label"
+ length="1"
+ follows="left|bottom"
+ layout="topleft"
+ left_pad="0"
+ width="107">
+ (Mechanical)
+ </text>
+ <text
+ height="13"
+ word_wrap="false"
+ use_ellipses="false"
+ type="string"
+ text_color="LabelTextColor"
+ text_readonly_color="LabelDisabledColor"
+ name="suggested_use_d_label"
+ length="1"
+ follows="left|bottom"
+ layout="topleft"
+ left_pad="0"
+ width="107">
+ (Other)
+ </text>
</panel>
</floater>