summaryrefslogtreecommitdiff
path: root/indra/newview/llfloaterpathfindingcharacters.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llfloaterpathfindingcharacters.cpp')
-rw-r--r--indra/newview/llfloaterpathfindingcharacters.cpp75
1 files changed, 65 insertions, 10 deletions
diff --git a/indra/newview/llfloaterpathfindingcharacters.cpp b/indra/newview/llfloaterpathfindingcharacters.cpp
index 021b48f0a0..de431bbf89 100644
--- a/indra/newview/llfloaterpathfindingcharacters.cpp
+++ b/indra/newview/llfloaterpathfindingcharacters.cpp
@@ -43,6 +43,9 @@
#include "llviewerregion.h"
#include "llhttpclient.h"
#include "lluuid.h"
+#include "llviewerobject.h"
+#include "llviewerobjectlist.h"
+#include "llselectmgr.h"
//---------------------------------------------------------------------------
// CharactersGetResponder
@@ -159,7 +162,8 @@ LLFloaterPathfindingCharacters::LLFloaterPathfindingCharacters(const LLSD& pSeed
mTakeCopyBtn(NULL),
mReturnBtn(NULL),
mDeleteBtn(NULL),
- mTeleportBtn(NULL)
+ mTeleportBtn(NULL),
+ mSelection()
{
mSelfHandle.bind(this);
}
@@ -167,6 +171,7 @@ LLFloaterPathfindingCharacters::LLFloaterPathfindingCharacters(const LLSD& pSeed
LLFloaterPathfindingCharacters::~LLFloaterPathfindingCharacters()
{
mPathfindingCharacters.clear();
+ mSelection.clear();
}
void LLFloaterPathfindingCharacters::sendCharactersDataGetRequest()
@@ -187,7 +192,7 @@ void LLFloaterPathfindingCharacters::sendCharactersDataGetRequest()
std::string charactersDataURL = getCapabilityURL();
if (charactersDataURL.empty())
{
- setMessagingState(kMessagingComplete);
+ setMessagingState(kMessagingServiceNotAvailable);
llwarns << "cannot query pathfinding characters from current region '" << getRegionName() << "'" << llendl;
}
else
@@ -235,7 +240,7 @@ std::string LLFloaterPathfindingCharacters::getCapabilityURL() const
LLViewerRegion* region = gAgent.getRegion();
if (region != NULL)
{
- charactersDataURL = region->getCapability("ObjectNavMeshProperties");
+ charactersDataURL = region->getCapability("CharacterProperties");
}
return charactersDataURL;
@@ -263,6 +268,37 @@ void LLFloaterPathfindingCharacters::setMessagingState(EMessagingState pMessagin
void LLFloaterPathfindingCharacters::onCharactersSelectionChange()
{
+#if 0
+ std::vector<LLScrollListItem*> selectedItems = mCharactersScrollList->getAllSelected();
+
+ LLSelectMgr::getInstance()->deselectAll();
+ if (!selectedItems.empty())
+ {
+ int numSelectedItems = selectedItems.size();
+
+ std::vector<LLViewerObject *> viewerObjects;
+ viewerObjects.reserve(numSelectedItems);
+
+ for (std::vector<LLScrollListItem*>::const_iterator selectedItemIter = selectedItems.begin();
+ selectedItemIter != selectedItems.end(); ++selectedItemIter)
+ {
+ const LLScrollListItem *selectedItem = *selectedItemIter;
+
+ LLViewerObject *viewerObject = gObjectList.findObject(selectedItem->getUUID());
+ if (viewerObject != NULL)
+ {
+ viewerObject->setSelected(true);
+ viewerObjects.push_back(viewerObject);
+ }
+ }
+
+ if (!viewerObjects.empty())
+ {
+ mSelection = LLSelectMgr::getInstance()->selectObjectAndFamily(viewerObjects);
+ }
+ }
+#endif
+
updateCharactersStatusMessage();
updateActionFields();
}
@@ -309,7 +345,22 @@ void LLFloaterPathfindingCharacters::onDeleteCharactersClicked()
void LLFloaterPathfindingCharacters::onTeleportCharacterToMeClicked()
{
- llwarns << "functionality has not yet been implemented to teleport me tothe character" << llendl;
+ std::vector<LLScrollListItem*> selectedItems = mCharactersScrollList->getAllSelected();
+ llassert(selectedItems.size() == 1);
+ if (selectedItems.size() == 1)
+ {
+ std::vector<LLScrollListItem*>::const_reference selectedItemRef = selectedItems.front();
+ const LLScrollListItem *selectedItem = selectedItemRef;
+ PathfindingCharacterMap::const_iterator characterIter = mPathfindingCharacters.find(selectedItem->getUUID().asString());
+ const LLPathfindingCharacter &character = characterIter->second;
+ LLVector3 characterLocation = character.getLocation();
+
+ LLViewerRegion* region = gAgent.getRegion();
+ if (region != NULL)
+ {
+ gAgent.teleportRequest(region->getHandle(), characterLocation, true);
+ }
+ }
}
void LLFloaterPathfindingCharacters::updateCharactersList()
@@ -347,7 +398,7 @@ void LLFloaterPathfindingCharacters::updateCharactersList()
columns[1]["font"] = "SANSSERIF";
columns[2]["column"] = "owner";
- columns[2]["value"] = character.getOwner();
+ columns[2]["value"] = character.getOwnerName();
columns[2]["font"] = "SANSSERIF";
columns[3]["column"] = "cpu_time";
@@ -431,6 +482,10 @@ void LLFloaterPathfindingCharacters::updateCharactersStatusMessage()
statusText = getString("characters_messaging_complete_available", string_args);
}
break;
+ case kMessagingServiceNotAvailable:
+ statusText = getString("characters_messaging_service_not_available");
+ styleParams.color = warningColor;
+ break;
default:
statusText = getString("characters_messaging_initial");
llassert(0);
@@ -449,11 +504,11 @@ void LLFloaterPathfindingCharacters::updateActionFields()
void LLFloaterPathfindingCharacters::setEnableActionFields(BOOL pEnabled)
{
mLabelActions->setEnabled(pEnabled);
- mShowBeaconCheckBox->setEnabled(pEnabled);
- mTakeBtn->setEnabled(pEnabled);
- mTakeCopyBtn->setEnabled(pEnabled);
- mReturnBtn->setEnabled(pEnabled);
- mDeleteBtn->setEnabled(pEnabled);
+ mShowBeaconCheckBox->setEnabled(false && pEnabled);
+ mTakeBtn->setEnabled(false && pEnabled);
+ mTakeCopyBtn->setEnabled(false && pEnabled);
+ mReturnBtn->setEnabled(false && pEnabled);
+ mDeleteBtn->setEnabled(false && pEnabled);
mTeleportBtn->setEnabled(pEnabled && (mCharactersScrollList->getNumSelected() == 1));
}