diff options
Diffstat (limited to 'indra')
-rw-r--r-- | indra/newview/llfloaterpathfindinglinksets.cpp | 121 | ||||
-rw-r--r-- | indra/newview/llfloaterpathfindinglinksets.h | 166 |
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
|