diff options
| author | Loren Shih <seraph@lindenlab.com> | 2010-08-11 12:34:27 -0400 | 
|---|---|---|
| committer | Loren Shih <seraph@lindenlab.com> | 2010-08-11 12:34:27 -0400 | 
| commit | 7836f0fff3bd8a8098a1c920439c0c6ef131d26c (patch) | |
| tree | fa4c6b7cabb417635b126609ddd77166b9595a07 /indra/newview | |
| parent | 90a73085fda47da5c966f246e96667f8c11d9579 (diff) | |
EXT-8650 Can wear mutliple copies of a no-copy item via object links
- EXT-8660 Cleanup ambiguous llviewerobject::set/getItemID code
Lots of files changed, but this is mostly just a trivial function call rename.  This change is very low risk.
Diffstat (limited to 'indra/newview')
| -rw-r--r-- | indra/newview/llagentwearables.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llagentwearablesfetch.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llsidepanelappearance.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llviewerjointattachment.cpp | 20 | ||||
| -rw-r--r-- | indra/newview/llviewermenu.cpp | 8 | ||||
| -rw-r--r-- | indra/newview/llviewerobject.cpp | 25 | ||||
| -rw-r--r-- | indra/newview/llviewerobject.h | 10 | ||||
| -rw-r--r-- | indra/newview/llvoavatar.cpp | 1 | ||||
| -rw-r--r-- | indra/newview/llvoavatarself.cpp | 4 | 
9 files changed, 46 insertions, 28 deletions
| diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp index 6ee5a8b279..25456f7e26 100644 --- a/indra/newview/llagentwearables.cpp +++ b/indra/newview/llagentwearables.cpp @@ -1756,7 +1756,7 @@ void LLAgentWearables::userUpdateAttachments(LLInventoryModel::item_array_t& obj  			LLViewerObject *objectp = (*attachment_iter);  			if (objectp)  			{ -				LLUUID object_item_id = objectp->getItemID(); +				LLUUID object_item_id = objectp->getAttachmentItemID();  				if (requested_item_ids.find(object_item_id) != requested_item_ids.end())  				{  					// Object currently worn, was requested. diff --git a/indra/newview/llagentwearablesfetch.cpp b/indra/newview/llagentwearablesfetch.cpp index d911d123f4..f6bb1b9bc9 100644 --- a/indra/newview/llagentwearablesfetch.cpp +++ b/indra/newview/llagentwearablesfetch.cpp @@ -215,7 +215,7 @@ void LLInitialWearablesFetch::processWearablesMessage()  				{  					LLViewerObject* attached_object = (*attachment_iter);  					if (!attached_object) continue; -					const LLUUID& item_id = attached_object->getItemID(); +					const LLUUID& item_id = attached_object->getAttachmentItemID();  					if (item_id.isNull()) continue;  					ids.push_back(item_id);  				} diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp index 98cd0b88eb..83329ebccf 100644 --- a/indra/newview/llsidepanelappearance.cpp +++ b/indra/newview/llsidepanelappearance.cpp @@ -473,7 +473,7 @@ void LLSidepanelAppearance::fetchInventory()  			{  				LLViewerObject* attached_object = (*attachment_iter);  				if (!attached_object) continue; -				const LLUUID& item_id = attached_object->getItemID(); +				const LLUUID& item_id = attached_object->getAttachmentItemID();  				if (item_id.isNull()) continue;  				ids.push_back(item_id);  			} diff --git a/indra/newview/llviewerjointattachment.cpp b/indra/newview/llviewerjointattachment.cpp index 2b4b78d82d..da4960b69d 100644 --- a/indra/newview/llviewerjointattachment.cpp +++ b/indra/newview/llviewerjointattachment.cpp @@ -172,19 +172,7 @@ BOOL LLViewerJointAttachment::addObject(LLViewerObject* object)  		// re-connect object to the joint correctly  	} -	// Find the inventory item ID of the attached object -	LLNameValue* item_id_nv = object->getNVPair("AttachItemID"); -	if( item_id_nv ) -	{ -		const char* s = item_id_nv->getString(); -		if( s ) -		{ -			LLUUID item_id; -			item_id.set(s); -			object->setItemID(item_id); -			lldebugs << "getNVPair( AttachItemID ) = " << item_id << llendl; -		} -	} +	object->extractAttachmentItemID();  	mAttachedObjects.push_back(object);  	setupDrawable(object); @@ -303,7 +291,7 @@ void LLViewerJointAttachment::removeObject(LLViewerObject *object)  	{  		mUpdateXform = FALSE;  	} -	object->setItemID(LLUUID::null); +	object->setAttachmentItemID(LLUUID::null);  }  //----------------------------------------------------------------------------- @@ -429,7 +417,7 @@ const LLViewerObject *LLViewerJointAttachment::getAttachedObject(const LLUUID &o  		 ++iter)  	{  		const LLViewerObject* attached_object = (*iter); -		if (attached_object->getItemID() == object_id) +		if (attached_object->getAttachmentItemID() == object_id)  		{  			return attached_object;  		} @@ -444,7 +432,7 @@ LLViewerObject *LLViewerJointAttachment::getAttachedObject(const LLUUID &object_  		 ++iter)  	{  		LLViewerObject* attached_object = (*iter); -		if (attached_object->getItemID() == object_id) +		if (attached_object->getAttachmentItemID() == object_id)  		{  			return attached_object;  		} diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 23e502c76f..e58f0c9aec 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -6050,7 +6050,7 @@ static bool onEnableAttachmentLabel(LLUICtrl* ctrl, const LLSD& data)  				const LLViewerObject* attached_object = (*attachment_iter);  				if (attached_object)  				{ -					LLViewerInventoryItem* itemp = gInventory.getItem(attached_object->getItemID()); +					LLViewerInventoryItem* itemp = gInventory.getItem(attached_object->getAttachmentItemID());  					if (itemp)  					{  						label += std::string(" (") + itemp->getName() + std::string(")"); @@ -6169,14 +6169,14 @@ class LLAttachmentEnableDrop : public view_listener_t  				{  					// make sure item is in your inventory (it could be a delayed attach message being sent from the sim)  					// so check to see if the item is in the inventory already -					item = gInventory.getItem((*attachment_iter)->getItemID()); +					item = gInventory.getItem((*attachment_iter)->getAttachmentItemID());  					if (!item)  					{  						// Item does not exist, make an observer to enable the pie menu   						// when the item finishes fetching worst case scenario   						// if a fetch is already out there (being sent from a slow sim)  						// we refetch and there are 2 fetches -						LLWornItemFetchedObserver* worn_item_fetched = new LLWornItemFetchedObserver((*attachment_iter)->getItemID());		 +						LLWornItemFetchedObserver* worn_item_fetched = new LLWornItemFetchedObserver((*attachment_iter)->getAttachmentItemID());		  						worn_item_fetched->startFetch();  						gInventory.addObserver(worn_item_fetched);  					} @@ -6523,7 +6523,7 @@ void handle_dump_attachments(void*)  							!attached_object->mDrawable->isRenderType(0));  			LLVector3 pos;  			if (visible) pos = attached_object->mDrawable->getPosition(); -			llinfos << "ATTACHMENT " << key << ": item_id=" << attached_object->getItemID() +			llinfos << "ATTACHMENT " << key << ": item_id=" << attached_object->getAttachmentItemID()  					<< (attached_object ? " present " : " absent ")  					<< (visible ? "visible " : "invisible ")  					<<  " at " << pos diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 15bdf126c5..d3e6f01bc8 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -5233,3 +5233,28 @@ void LLViewerObject::resetChildrenPosition(const LLVector3& offset, BOOL simplif  	return ;  } +const LLUUID &LLViewerObject::getAttachmentItemID() const +{ +	return mAttachmentItemID; +} + +void LLViewerObject::setAttachmentItemID(const LLUUID &id) +{ +	mAttachmentItemID = id; +} + +const LLUUID &LLViewerObject::extractAttachmentItemID() +{ +	LLUUID item_id = LLUUID::null; +	LLNameValue* item_id_nv = getNVPair("AttachItemID"); +	if( item_id_nv ) +	{ +		const char* s = item_id_nv->getString(); +		if( s ) +		{ +			item_id.set(s); +		} +	} +	setAttachmentItemID(item_id); +	return getAttachmentItemID(); +} diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h index be83fb7ef8..33fda9fa2d 100644 --- a/indra/newview/llviewerobject.h +++ b/indra/newview/llviewerobject.h @@ -678,11 +678,15 @@ protected:  private:	  	static S32 sNumObjects; +	//-------------------------------------------------------------------- +	// For objects that are attachments +	//--------------------------------------------------------------------  public: -	const LLUUID &getItemID() const { return mAttachmentItemID; } -	void setItemID(const LLUUID &id) { mAttachmentItemID = id; } +	const LLUUID &getAttachmentItemID() const; +	void setAttachmentItemID(const LLUUID &id); +	const LLUUID &extractAttachmentItemID(); // find&set the inventory item ID of the attached object  private: -	LLUUID mAttachmentItemID; // ItemID when item is in user inventory. +	LLUUID mAttachmentItemID; // ItemID of the associated object is in user inventory.  };  /////////////////// diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 1ca10219ce..4e00355bbe 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -5710,6 +5710,7 @@ BOOL LLVOAvatar::setParent(LLViewerObject* parent)  void LLVOAvatar::addChild(LLViewerObject *childp)  { +	childp->extractAttachmentItemID(); // find the inventory item this object is associated with.  	LLViewerObject::addChild(childp);  	if (childp->mDrawable)  	{ diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index 3a283e7aa6..73ea629bc3 100644 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -1067,7 +1067,7 @@ const LLViewerJointAttachment *LLVOAvatarSelf::attachObject(LLViewerObject *view  	// Should just be the last object added  	if (attachment->isObjectAttached(viewer_object))  	{ -		const LLUUID& attachment_id = viewer_object->getItemID(); +		const LLUUID& attachment_id = viewer_object->getAttachmentItemID();  		LLAppearanceMgr::instance().registerAttachment(attachment_id);  	} @@ -1077,7 +1077,7 @@ const LLViewerJointAttachment *LLVOAvatarSelf::attachObject(LLViewerObject *view  //virtual  BOOL LLVOAvatarSelf::detachObject(LLViewerObject *viewer_object)  { -	const LLUUID attachment_id = viewer_object->getItemID(); +	const LLUUID attachment_id = viewer_object->getAttachmentItemID();  	if (LLVOAvatar::detachObject(viewer_object))  	{  		// the simulator should automatically handle permission revocation | 
