summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
Diffstat (limited to 'indra')
-rw-r--r--indra/newview/llviewerobjectlist.cpp28
-rw-r--r--indra/newview/llviewerobjectlist.h1
2 files changed, 26 insertions, 3 deletions
diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp
index 047241fffb..422ac4e84f 100644
--- a/indra/newview/llviewerobjectlist.cpp
+++ b/indra/newview/llviewerobjectlist.cpp
@@ -60,6 +60,7 @@
#include "llviewercamera.h"
#include "llselectmgr.h"
#include "llresmgr.h"
+#include "llsdutil.h"
#include "llviewerregion.h"
#include "llviewerstats.h"
#include "llvoavatarself.h"
@@ -661,7 +662,14 @@ class LLObjectCostResponder : public LLCurl::Responder
public:
void result(const LLSD& content)
{
- llinfos << content << llendl;
+ for (LLSD::map_const_iterator iter = content.beginMap(); iter != content.endMap(); ++iter)
+ {
+ LLUUID object_id = LLUUID(iter->first);
+ S32 link_cost = iter->second["LinkResourceCost"].asInteger();
+ S32 prim_cost = iter->second["PrimResourceCost"].asInteger();
+
+ gObjectList.updateObjectCost(object_id, prim_cost, link_cost);
+ }
}
};
@@ -768,7 +776,7 @@ void LLViewerObjectList::update(LLAgent &agent, LLWorld &world)
if (regionp)
{
- std::string url; // = regionp->getCapability("GetObjectCost");
+ std::string url = regionp->getCapability("GetObjectCost");
if (!url.empty())
{
@@ -785,7 +793,10 @@ void LLViewerObjectList::update(LLAgent &agent, LLWorld &world)
mPendingObjectCost = mStaleObjectCost;
mStaleObjectCost.clear();
- LLHTTPClient::post(url, id_list, new LLObjectCostResponder());
+ if (id_list.size() > 0)
+ {
+ LLHTTPClient::post(url, id_list, new LLObjectCostResponder());
+ }
}
else
{
@@ -1088,6 +1099,17 @@ void LLViewerObjectList::updateObjectCost(LLViewerObject* object)
mStaleObjectCost.insert(object->getID());
}
+void LLViewerObjectList::updateObjectCost(LLUUID object_id, S32 prim_cost, S32 link_cost)
+{
+ mPendingObjectCost.erase(object_id);
+
+ LLViewerObject* object = findObject(object_id);
+ if (object)
+ {
+ object->setObjectCost(prim_cost);
+ }
+}
+
void LLViewerObjectList::shiftObjects(const LLVector3 &offset)
{
// This is called when we shift our origin when we cross region boundaries...
diff --git a/indra/newview/llviewerobjectlist.h b/indra/newview/llviewerobjectlist.h
index ca228a6462..db9324bdbd 100644
--- a/indra/newview/llviewerobjectlist.h
+++ b/indra/newview/llviewerobjectlist.h
@@ -92,6 +92,7 @@ public:
void update(LLAgent &agent, LLWorld &world);
void updateObjectCost(LLViewerObject* object);
+ void updateObjectCost(LLUUID object_id, S32 prim_cost, S32 link_cost);
void shiftObjects(const LLVector3 &offset);