diff options
| author | Richard Linden <none@none> | 2010-08-26 12:49:00 -0700 | 
|---|---|---|
| committer | Richard Linden <none@none> | 2010-08-26 12:49:00 -0700 | 
| commit | 093e83386d5a132cc8947095f93ea6405aab6e3f (patch) | |
| tree | 043184fa92c8a6a9f8e747eb13056616bb27ba20 /indra/newview/llviewerjointattachment.cpp | |
| parent | 2667c77a1cfb230ade472a047f46fd2bde7883c0 (diff) | |
| parent | ce1a0c6bafad092f9687e3b5a6b4865569d96863 (diff) | |
merge
Diffstat (limited to 'indra/newview/llviewerjointattachment.cpp')
| -rw-r--r-- | indra/newview/llviewerjointattachment.cpp | 21 | 
1 files changed, 17 insertions, 4 deletions
| diff --git a/indra/newview/llviewerjointattachment.cpp b/indra/newview/llviewerjointattachment.cpp index da4960b69d..c9335366cd 100644 --- a/indra/newview/llviewerjointattachment.cpp +++ b/indra/newview/llviewerjointattachment.cpp @@ -35,12 +35,11 @@  #include "llviewerjointattachment.h"  #include "llagentconstants.h" -  #include "llviewercontrol.h"  #include "lldrawable.h"  #include "llgl.h"  #include "llrender.h" -#include "llvoavatar.h" +#include "llvoavatarself.h"  #include "llvolume.h"  #include "pipeline.h"  #include "llspatialpartition.h" @@ -164,6 +163,9 @@ void LLViewerJointAttachment::setupDrawable(LLViewerObject *object)  //-----------------------------------------------------------------------------  BOOL LLViewerJointAttachment::addObject(LLViewerObject* object)  { +	object->extractAttachmentItemID(); + +	// Same object reattached  	if (isObjectAttached(object))  	{  		llinfos << "(same object re-attached)" << llendl; @@ -171,8 +173,19 @@ BOOL LLViewerJointAttachment::addObject(LLViewerObject* object)  		// Pass through anyway to let setupDrawable()  		// re-connect object to the joint correctly  	} +	 +	// Two instances of the same inventory item attached -- +	// Request detach, and kill the object in the meantime. +	if (getAttachedObject(object->getAttachmentItemID())) +	{ +		llinfos << "(same object re-attached)" << llendl; +		object->markDead(); + +		// If this happens to be attached to self, then detach. +		LLVOAvatarSelf::detachAttachmentIntoInventory(object->getAttachmentItemID()); +		return FALSE; +	} -	object->extractAttachmentItemID();  	mAttachedObjects.push_back(object);  	setupDrawable(object); @@ -195,7 +208,7 @@ BOOL LLViewerJointAttachment::addObject(LLViewerObject* object)  	}  	calcLOD();  	mUpdateXform = TRUE; - +	  	return TRUE;  } | 
