summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/newview/llfloatertools.cpp2
-rw-r--r--indra/newview/llselectmgr.cpp25
-rw-r--r--indra/newview/llselectmgr.h2
3 files changed, 26 insertions, 3 deletions
diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp
index babef5b63d..41bb239fda 100644
--- a/indra/newview/llfloatertools.cpp
+++ b/indra/newview/llfloatertools.cpp
@@ -423,7 +423,7 @@ void LLFloaterTools::refresh()
LLResMgr::getInstance()->getIntegerString(obj_count_string, LLSelectMgr::getInstance()->getSelection()->getRootObjectCount());
childSetTextArg("obj_count", "[COUNT]", obj_count_string);
std::string prim_count_string;
- LLResMgr::getInstance()->getIntegerString(prim_count_string, LLSelectMgr::getInstance()->getSelection()->getObjectCount());
+ LLResMgr::getInstance()->getIntegerString(prim_count_string, LLSelectMgr::getInstance()->getSelection()->getObjectCount(TRUE));
childSetTextArg("prim_count", "[COUNT]", prim_count_string);
// calculate selection rendering cost
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index 852f58e354..4ef68df634 100644
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -68,6 +68,7 @@
#include "llhudmanager.h"
#include "llinventorymodel.h"
#include "llmenugl.h"
+#include "llmeshrepository.h"
#include "llmutelist.h"
#include "llsidepaneltaskinfo.h"
#include "llslurl.h"
@@ -6124,10 +6125,32 @@ BOOL LLObjectSelection::isEmpty() const
//-----------------------------------------------------------------------------
// getObjectCount() - returns number of non null objects
//-----------------------------------------------------------------------------
-S32 LLObjectSelection::getObjectCount()
+S32 LLObjectSelection::getObjectCount(BOOL mesh_adjust)
{
cleanupNodes();
S32 count = mList.size();
+
+ if (mesh_adjust)
+ {
+ for (list_t::iterator iter = mList.begin(); iter != mList.end(); ++iter)
+ {
+ LLSelectNode* node = *iter;
+ LLViewerObject* object = node->getObject();
+
+ if (object && object->getVolume())
+ {
+ LLVOVolume* vobj = (LLVOVolume*) object;
+ if (vobj->isMesh())
+ {
+ LLUUID mesh_id = vobj->getVolume()->getParams().getSculptID();
+ U32 cost = gMeshRepo.getResourceCost(mesh_id);
+ count += cost-1;
+ }
+ }
+
+ }
+ }
+
return count;
}
diff --git a/indra/newview/llselectmgr.h b/indra/newview/llselectmgr.h
index f7ce3f72aa..066adf0c10 100644
--- a/indra/newview/llselectmgr.h
+++ b/indra/newview/llselectmgr.h
@@ -291,7 +291,7 @@ public:
LLSelectNode* findNode(LLViewerObject* objectp);
// count members
- S32 getObjectCount();
+ S32 getObjectCount(BOOL mesh_adjust = FALSE);
S32 getTECount();
S32 getRootObjectCount();