diff options
| author | Merov Linden <merov@lindenlab.com> | 2011-02-09 15:10:26 -0800 | 
|---|---|---|
| committer | Merov Linden <merov@lindenlab.com> | 2011-02-09 15:10:26 -0800 | 
| commit | b82f2c4e4d8c4b9a349e4cd933dff7a0844019c0 (patch) | |
| tree | 5d6422987ee07704e4f33e8558d81a4c3eef0043 | |
| parent | e58cbfa53ee62a53e19e7160d741e84e2a8ee67d (diff) | |
| parent | b6571ee127f22316be8b9e32c771f8bfb35a0b00 (diff) | |
pull from viewer-development
| -rw-r--r-- | indra/newview/llviewerobject.cpp | 14 | ||||
| -rw-r--r-- | indra/newview/llviewerobjectlist.cpp | 21 | ||||
| -rw-r--r-- | indra/newview/llviewerobjectlist.h | 1 | ||||
| -rw-r--r-- | indra/newview/llworld.cpp | 2 | 
4 files changed, 31 insertions, 7 deletions
| diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index a7f5bb2a60..32cd8dbb39 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -3008,6 +3008,8 @@ void LLViewerObject::setScale(const LLVector3 &scale, BOOL damped)  		{  			if (!mOnMap)  			{ +				llassert_always(LLWorld::getInstance()->getRegionFromHandle(getRegion()->getHandle())); +  				gObjectList.addToMap(this);  				mOnMap = TRUE;  			} @@ -3535,8 +3537,8 @@ void LLViewerObject::setPositionParent(const LLVector3 &pos_parent, BOOL damped)  	// Set position relative to parent, if no parent, relative to region  	if (!isRoot())  	{ -		LLViewerObject::setPosition(pos_parent); -		updateDrawable(damped); +		LLViewerObject::setPosition(pos_parent, damped); +		//updateDrawable(damped);  	}  	else  	{ @@ -3577,6 +3579,7 @@ void LLViewerObject::setPositionEdit(const LLVector3 &pos_edit, BOOL damped)  		LLVector3 position_offset = getPosition() * getParent()->getRotation();  		((LLViewerObject *)getParent())->setPositionEdit(pos_edit - position_offset); +		updateDrawable(damped);  	}  	else if (isJointChild())  	{ @@ -3585,15 +3588,14 @@ void LLViewerObject::setPositionEdit(const LLVector3 &pos_edit, BOOL damped)  		LLQuaternion inv_parent_rot = parent->getRotation();  		inv_parent_rot.transQuat();  		LLVector3 pos_parent = (pos_edit - parent->getPositionRegion()) * inv_parent_rot; -		LLViewerObject::setPosition(pos_parent); +		LLViewerObject::setPosition(pos_parent, damped);  	}  	else  	{ -		LLViewerObject::setPosition(pos_edit); +		LLViewerObject::setPosition(pos_edit, damped);  		mPositionRegion = pos_edit;  		mPositionAgent = mRegionp->getPosAgentFromRegion(mPositionRegion); -	} -	updateDrawable(damped); +	}	  } diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp index 970cc2e2a7..82bc164021 100644 --- a/indra/newview/llviewerobjectlist.cpp +++ b/indra/newview/llviewerobjectlist.cpp @@ -1124,6 +1124,22 @@ void LLViewerObjectList::shiftObjects(const LLVector3 &offset)  	LLWorld::getInstance()->shiftRegions(offset);  } +//debug code +bool LLViewerObjectList::hasMapObjectInRegion(LLViewerRegion* regionp)  +{ +	for (vobj_list_t::iterator iter = mMapObjects.begin(); iter != mMapObjects.end(); ++iter) +	{ +		LLViewerObject* objectp = *iter; + +		if(objectp->isDead() || objectp->getRegion() == regionp) +		{ +			return true ; +		} +	} + +	return false ; +} +  void LLViewerObjectList::renderObjectsForMap(LLNetMap &netmap)  {  	LLColor4 above_water_color = LLUIColorTable::instance().getColor( "NetMapOtherOwnAboveWater" ); @@ -1142,6 +1158,9 @@ void LLViewerObjectList::renderObjectsForMap(LLNetMap &netmap)  	for (vobj_list_t::iterator iter = mMapObjects.begin(); iter != mMapObjects.end(); ++iter)  	{  		LLViewerObject* objectp = *iter; + +		llassert_always(!objectp->isDead()); +  		if (!objectp->getRegion() || objectp->isOrphaned() || objectp->isAttachment())  		{  			continue; @@ -1429,7 +1448,7 @@ LLViewerObject *LLViewerObjectList::replaceObject(const LLUUID &id, const LLPCod  	LLViewerObject *old_instance = findObject(id);  	if (old_instance)  	{ -		cleanupReferences(old_instance); +		//cleanupReferences(old_instance);  		old_instance->markDead();  		return createObject(pcode, regionp, id, old_instance->getLocalID(), LLHost()); diff --git a/indra/newview/llviewerobjectlist.h b/indra/newview/llviewerobjectlist.h index fda3d6899d..8cff8e988a 100644 --- a/indra/newview/llviewerobjectlist.h +++ b/indra/newview/llviewerobjectlist.h @@ -87,6 +87,7 @@ public:  	void shiftObjects(const LLVector3 &offset); +	bool hasMapObjectInRegion(LLViewerRegion* regionp) ;  	void renderObjectsForMap(LLNetMap &netmap);  	void renderObjectBounds(const LLVector3 ¢er); diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp index 399442e5c4..9db6d5e08c 100644 --- a/indra/newview/llworld.cpp +++ b/indra/newview/llworld.cpp @@ -281,6 +281,8 @@ void LLWorld::removeRegion(const LLHost &host)  	delete regionp;  	updateWaterObjects(); + +	llassert_always(!gObjectList.hasMapObjectInRegion(regionp)) ;  } | 
