diff options
| author | prep@lindenlab.com <prep@lindenlab.com> | 2013-06-07 14:43:18 -0500 | 
|---|---|---|
| committer | prep@lindenlab.com <prep@lindenlab.com> | 2013-06-07 14:43:18 -0500 | 
| commit | d93ec94751e1c8c9a190b327720f432f9d9928c1 (patch) | |
| tree | 75c001496a2ebf3cb94e64935d698db10dbfc6c8 | |
| parent | d847b9dc3fdbc0a17ca4a1191955699505940f65 (diff) | |
sh-4109: Update agent appearance after attaching a rigged mesh
| -rwxr-xr-x | indra/newview/llvovolume.cpp | 15 | 
1 files changed, 13 insertions, 2 deletions
| diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 8730ef66bb..b7f7a11a15 100755 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -76,6 +76,7 @@  #include "llviewershadermgr.h"  #include "llvoavatar.h"  #include "llvocache.h" +#include "llappearancemgr.h"  const S32 MIN_QUIET_FRAMES_COALESCE = 30;  const F32 FORCE_SIMPLE_RENDER_AREA = 512.f; @@ -4239,6 +4240,8 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)  	{  		LLFastTimer t(FTM_REBUILD_VOLUME_FACE_LIST); +		bool requiredAppearanceUpdate = false; +  		//get all the faces into a list  		for (LLSpatialGroup::element_iter drawable_iter = group->getDataBegin(); drawable_iter != group->getDataEnd(); ++drawable_iter)  		{ @@ -4337,6 +4340,7 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)  								const int jointCnt = pSkinData->mJointNames.size();  								const F32 pelvisZOffset = pSkinData->mPelvisOffset;  								bool fullRig = (jointCnt>=20) ? true : false; +								requiredAppearanceUpdate = true;  								if ( fullRig )  								{  									for ( int i=0; i<jointCnt; ++i ) @@ -4361,12 +4365,14 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)  													pelvisGotSet = true;											  												}										  											}										 -										} +										}									  									}  								}							  							}  						} -					} +					}					 +					 +  					//If we've set the pelvis to a new position we need to also rebuild some information that the  					//viewer does at launch (e.g. body size etc.)  					if ( pelvisGotSet ) @@ -4606,6 +4612,11 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)  				drawablep->clearState(LLDrawable::RIGGED);  			}  		} + +		if ( requiredAppearanceUpdate && gAgent.getRegion() && gAgent.getRegion()->getCentralBakeVersion() )  +		{  +			LLAppearanceMgr::instance().requestServerAppearanceUpdate(); +		}  	}  	group->mBufferUsage = useage; | 
