diff options
| -rw-r--r-- | indra/newview/llfloatertools.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llselectmgr.cpp | 25 | ||||
| -rw-r--r-- | indra/newview/llselectmgr.h | 2 | 
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();  | 
