diff options
| author | Dave Parks <davep@lindenlab.com> | 2010-06-14 23:14:14 -0500 |
|---|---|---|
| committer | Dave Parks <davep@lindenlab.com> | 2010-06-14 23:14:14 -0500 |
| commit | 1b7b8aa00ea4329243125a1c53c90115ff7d6bfa (patch) | |
| tree | 5ef154c052e043dbc500c034b4d718c5568643d2 /indra/newview/llselectmgr.cpp | |
| parent | 37a8c12bd34b2bd119b50f32d6e081ab59d1f5c4 (diff) | |
| parent | 6e37ec08f678451a526f34218cb070d117cdf60a (diff) | |
merge
Diffstat (limited to 'indra/newview/llselectmgr.cpp')
| -rw-r--r-- | indra/newview/llselectmgr.cpp | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index 0ce7ffb077..559c802f51 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -6191,6 +6191,53 @@ S32 LLObjectSelection::getObjectCount(BOOL mesh_adjust) return count; } +F32 LLObjectSelection::getSelectedObjectCost() +{ + cleanupNodes(); + F32 cost = 0.f; + + for (list_t::iterator iter = mList.begin(); iter != mList.end(); ++iter) + { + LLSelectNode* node = *iter; + LLViewerObject* object = node->getObject(); + + if (object) + { + cost += object->getObjectCost(); + } + } + + return cost; +} + +F32 LLObjectSelection::getSelectedLinksetCost() +{ + cleanupNodes(); + F32 cost = 0.f; + + std::set<LLViewerObject*> me_roots; + + for (list_t::iterator iter = mList.begin(); iter != mList.end(); ++iter) + { + LLSelectNode* node = *iter; + LLViewerObject* object = node->getObject(); + + if (object) + { + LLViewerObject* root = static_cast<LLViewerObject*>(object->getRoot()); + if (root) + { + if (me_roots.find(root) == me_roots.end()) + { + me_roots.insert(root); + cost += root->getLinksetCost(); + } + } + } + } + + return cost; +} //----------------------------------------------------------------------------- // getTECount() |
