summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/newview/llfloaterpathfindinglinksets.cpp121
-rw-r--r--indra/newview/llfloaterpathfindinglinksets.h166
2 files changed, 152 insertions, 135 deletions
diff --git a/indra/newview/llfloaterpathfindinglinksets.cpp b/indra/newview/llfloaterpathfindinglinksets.cpp
index 0cce1277b0..78c0d342b2 100644
--- a/indra/newview/llfloaterpathfindinglinksets.cpp
+++ b/indra/newview/llfloaterpathfindinglinksets.cpp
@@ -36,26 +36,29 @@
#include "llviewerregion.h"
#include "llhttpclient.h"
#include "lltextbase.h"
+#include "lluuid.h"
+#include "llviewerobject.h"
+#include "llviewerobjectlist.h"
//---------------------------------------------------------------------------
// NavmeshDataGetResponder
//---------------------------------------------------------------------------
-
-class NavmeshDataGetResponder : public LLHTTPClient::Responder
-{
-public:
- NavmeshDataGetResponder(const std::string& pNavmeshDataGetURL, LLFloaterPathfindingLinksets *pLinksetsFloater);
- virtual ~NavmeshDataGetResponder();
-
- virtual void result(const LLSD& pContent);
- virtual void error(U32 pStatus, const std::string& pReason);
-
-private:
- NavmeshDataGetResponder(const NavmeshDataGetResponder& pOther);
-
- std::string mNavmeshDataGetURL;
- LLFloaterPathfindingLinksets *mLinksetsFloater;
-};
+
+class NavmeshDataGetResponder : public LLHTTPClient::Responder
+{
+public:
+ NavmeshDataGetResponder(const std::string& pNavmeshDataGetURL, LLFloaterPathfindingLinksets *pLinksetsFloater);
+ virtual ~NavmeshDataGetResponder();
+
+ virtual void result(const LLSD& pContent);
+ virtual void error(U32 pStatus, const std::string& pReason);
+
+private:
+ NavmeshDataGetResponder(const NavmeshDataGetResponder& pOther);
+
+ std::string mNavmeshDataGetURL;
+ LLFloaterPathfindingLinksets *mLinksetsFloater;
+};
//---------------------------------------------------------------------------
// LLFloaterPathfindingLinksets
@@ -90,10 +93,10 @@ void LLFloaterPathfindingLinksets::openLinksetsEditor()
LLFloaterReg::toggleInstanceOrBringToFront("pathfinding_linksets");
}
-LLFloaterPathfindingLinksets::EFetchState LLFloaterPathfindingLinksets::getFetchState() const
-{
- return mFetchState;
-}
+LLFloaterPathfindingLinksets::EFetchState LLFloaterPathfindingLinksets::getFetchState() const
+{
+ return mFetchState;
+}
BOOL LLFloaterPathfindingLinksets::isFetchInProgress() const
{
@@ -140,22 +143,22 @@ void LLFloaterPathfindingLinksets::sendNavmeshDataGetRequest()
setFetchState(kFetchStarting);
clearLinksetsList();
- LLViewerRegion* region = gAgent.getRegion();
- if (region != NULL)
- {
- std::string navmeshDataURL = region->getCapability("ObjectNavmesh");
- if (navmeshDataURL.empty())
- {
+ LLViewerRegion* region = gAgent.getRegion();
+ if (region != NULL)
+ {
+ std::string navmeshDataURL = region->getCapability("ObjectNavmesh");
+ if (navmeshDataURL.empty())
+ {
setFetchState(kFetchComplete);
- llwarns << "cannot query navmesh data from current region '" << region->getName() << "'" << llendl;
- }
- else
- {
+ llwarns << "cannot query navmesh data from current region '" << region->getName() << "'" << llendl;
+ }
+ else
+ {
setFetchState(kFetchInProgress);
- LLHTTPClient::get(navmeshDataURL, new NavmeshDataGetResponder(navmeshDataURL, this));
- }
- }
- }
+ LLHTTPClient::get(navmeshDataURL, new NavmeshDataGetResponder(navmeshDataURL, this));
+ }
+ }
+ }
}
void LLFloaterPathfindingLinksets::handleNavmeshDataGetReply(const LLSD& pNavmeshData)
@@ -168,7 +171,7 @@ void LLFloaterPathfindingLinksets::handleNavmeshDataGetReply(const LLSD& pNavmes
for (LLSD::map_const_iterator itemsIter = pNavmeshData.beginMap();
itemsIter != pNavmeshData.endMap(); ++itemsIter)
{
- const std::string& uuid = itemsIter->first;
+ LLUUID uuid(itemsIter->first);
const LLSD& itemData = itemsIter->second;
const LLSD::String& itemName = itemData.get("name").asString();
@@ -182,9 +185,16 @@ void LLFloaterPathfindingLinksets::handleNavmeshDataGetReply(const LLSD& pNavmes
LLSD::Real itemC = itemData.get("C").asReal();
LLSD::Real itemD = itemData.get("D").asReal();
- F32 location_x = 50.0f, location_y = 50.0f, location_z = 50.0f; // XXX stinson: use real location later
- LLVector3 itemLocation(location_x, location_y, location_z);
- F32 itemDistance = dist_vec(avatarPosition, itemLocation);
+ // XXX stinson: get a better way to get all objects locations in the region as the
+ // following calculation only returns objects of which the viewer is aware.
+ LLViewerObject *viewerObject = gObjectList.findObject(uuid);
+ bool hasDistance = (viewerObject != NULL);
+ F32 itemDistance = -999.0f;
+ if (hasDistance)
+ {
+ const LLVector3& itemLocation = viewerObject->getPositionAgent();
+ itemDistance = dist_vec(avatarPosition, itemLocation);
+ }
LLSD columns;
@@ -197,11 +207,18 @@ void LLFloaterPathfindingLinksets::handleNavmeshDataGetReply(const LLSD& pNavmes
columns[1]["font"] = "SANSSERIF";
columns[2]["column"] = "land_impact";
- columns[2]["value"] = llformat("%1d m", itemLandImpact);
+ columns[2]["value"] = llformat("%1d", itemLandImpact);
columns[2]["font"] = "SANSSERIF";
columns[3]["column"] = "dist_from_you";
- columns[3]["value"] = llformat("%1.0f m", itemDistance);
+ if (hasDistance)
+ {
+ columns[3]["value"] = llformat("%1.0f m", itemDistance);
+ }
+ else
+ {
+ columns[3]["value"] = "--";
+ }
columns[3]["font"] = "SANSSERIF";
columns[4]["column"] = "is_fixed";
@@ -242,18 +259,18 @@ void LLFloaterPathfindingLinksets::handleNavmeshDataGetReply(const LLSD& pNavmes
setFetchState(kFetchComplete);
}
-void LLFloaterPathfindingLinksets::handleNavmeshDataGetError(const std::string& pURL, const std::string& pErrorReason)
-{
+void LLFloaterPathfindingLinksets::handleNavmeshDataGetError(const std::string& pURL, const std::string& pErrorReason)
+{
setFetchState(kFetchError);
clearLinksetsList();
- llwarns << "Error fetching navmesh data from URL '" << pURL << "' because " << pErrorReason << llendl;
-}
-
-void LLFloaterPathfindingLinksets::setFetchState(EFetchState pFetchState)
-{
- mFetchState = pFetchState;
- updateLinksetsStatusMessage();
-}
+ llwarns << "Error fetching navmesh data from URL '" << pURL << "' because " << pErrorReason << llendl;
+}
+
+void LLFloaterPathfindingLinksets::setFetchState(EFetchState pFetchState)
+{
+ mFetchState = pFetchState;
+ updateLinksetsStatusMessage();
+}
void LLFloaterPathfindingLinksets::onLinksetsSelectionChange()
{
@@ -347,8 +364,8 @@ void LLFloaterPathfindingLinksets::updateLinksetsStatusMessage()
mLinksetsStatus->setText((LLStringExplicit)statusText, styleParams);
}
-
-NavmeshDataGetResponder::NavmeshDataGetResponder(const std::string& pNavmeshDataGetURL, LLFloaterPathfindingLinksets *pLinksetsFloater)
+
+NavmeshDataGetResponder::NavmeshDataGetResponder(const std::string& pNavmeshDataGetURL, LLFloaterPathfindingLinksets *pLinksetsFloater)
: mNavmeshDataGetURL(pNavmeshDataGetURL),
mLinksetsFloater(pLinksetsFloater)
{
diff --git a/indra/newview/llfloaterpathfindinglinksets.h b/indra/newview/llfloaterpathfindinglinksets.h
index 9a54468d58..66472beb99 100644
--- a/indra/newview/llfloaterpathfindinglinksets.h
+++ b/indra/newview/llfloaterpathfindinglinksets.h
@@ -1,45 +1,45 @@
-/**
- * @file llfloaterpathfindinglinksets.h
- * @author William Todd Stinson
- * @brief "Pathfinding linksets" floater, allowing manipulation of the Havok AI pathfinding settings.
- *
- * $LicenseInfo:firstyear=2002&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLFLOATERPATHFINDINGLINKSETS_H
-#define LL_LLFLOATERPATHFINDINGLINKSETS_H
-
-#include "llfloater.h"
-
-class LLSD;
-class LLTextBase;
-class LLScrollListCtrl;
-
-class LLFloaterPathfindingLinksets
-: public LLFloater
-{
- friend class LLFloaterReg;
- friend class NavmeshDataGetResponder;
-
+/**
+ * @file llfloaterpathfindinglinksets.h
+ * @author William Todd Stinson
+ * @brief "Pathfinding linksets" floater, allowing manipulation of the Havok AI pathfinding settings.
+ *
+ * $LicenseInfo:firstyear=2002&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLFLOATERPATHFINDINGLINKSETS_H
+#define LL_LLFLOATERPATHFINDINGLINKSETS_H
+
+#include "llfloater.h"
+
+class LLSD;
+class LLTextBase;
+class LLScrollListCtrl;
+
+class LLFloaterPathfindingLinksets
+: public LLFloater
+{
+ friend class LLFloaterReg;
+ friend class NavmeshDataGetResponder;
+
typedef enum
{
kFetchInitial,
@@ -50,44 +50,44 @@ class LLFloaterPathfindingLinksets
kFetchError,
kFetchComplete
} EFetchState;
-
-public:
- virtual BOOL postBuild();
- virtual void onOpen(const LLSD& pKey);
-
- static void openLinksetsEditor();
-
- EFetchState getFetchState() const;
- BOOL isFetchInProgress() const;
-
-protected:
-
-private:
- EFetchState mFetchState;
- LLScrollListCtrl *mLinksetsScrollList;
- LLTextBase *mLinksetsStatus;
-
- // Does its own instance management, so clients not allowed
- // to allocate or destroy.
- LLFloaterPathfindingLinksets(const LLSD& pSeed);
- virtual ~LLFloaterPathfindingLinksets();
-
- void sendNavmeshDataGetRequest();
- void handleNavmeshDataGetReply(const LLSD& pNavmeshData);
- void handleNavmeshDataGetError(const std::string& pURL, const std::string& pErrorReason);
-
- void setFetchState(EFetchState pFetchState);
-
- void onLinksetsSelectionChange();
- void onRefreshLinksetsClicked();
- void onSelectAllLinksetsClicked();
- void onSelectNoneLinksetsClicked();
-
- void clearLinksetsList();
- void selectAllLinksets();
- void selectNoneLinksets();
-
- void updateLinksetsStatusMessage();
-};
-
-#endif // LL_LLFLOATERPATHFINDINGLINKSETS_H
+
+public:
+ virtual BOOL postBuild();
+ virtual void onOpen(const LLSD& pKey);
+
+ static void openLinksetsEditor();
+
+ EFetchState getFetchState() const;
+ BOOL isFetchInProgress() const;
+
+protected:
+
+private:
+ EFetchState mFetchState;
+ LLScrollListCtrl *mLinksetsScrollList;
+ LLTextBase *mLinksetsStatus;
+
+ // Does its own instance management, so clients not allowed
+ // to allocate or destroy.
+ LLFloaterPathfindingLinksets(const LLSD& pSeed);
+ virtual ~LLFloaterPathfindingLinksets();
+
+ void sendNavmeshDataGetRequest();
+ void handleNavmeshDataGetReply(const LLSD& pNavmeshData);
+ void handleNavmeshDataGetError(const std::string& pURL, const std::string& pErrorReason);
+
+ void setFetchState(EFetchState pFetchState);
+
+ void onLinksetsSelectionChange();
+ void onRefreshLinksetsClicked();
+ void onSelectAllLinksetsClicked();
+ void onSelectNoneLinksetsClicked();
+
+ void clearLinksetsList();
+ void selectAllLinksets();
+ void selectNoneLinksets();
+
+ void updateLinksetsStatusMessage();
+};
+
+#endif // LL_LLFLOATERPATHFINDINGLINKSETS_H