diff options
Diffstat (limited to 'indra/llappearance')
| -rwxr-xr-x | indra/llappearance/llavatarappearance.cpp | 38 | ||||
| -rwxr-xr-x | indra/llappearance/llavatarappearance.h | 8 | ||||
| -rw-r--r-- | indra/llappearance/llpolyskeletaldistortion.cpp | 2 | 
3 files changed, 44 insertions, 4 deletions
diff --git a/indra/llappearance/llavatarappearance.cpp b/indra/llappearance/llavatarappearance.cpp index 6fdf9e2e07..d1eb389013 100755 --- a/indra/llappearance/llavatarappearance.cpp +++ b/indra/llappearance/llavatarappearance.cpp @@ -584,8 +584,6 @@ BOOL LLAvatarAppearance::setupBone(const LLAvatarBoneInfo* info, LLJoint* parent  							 info->mRot.mV[VZ], LLQuaternion::XYZ));  	joint->setScale(info->mScale); -	joint->setDefaultFromCurrentXform(); -	  	if (info->mIsJoint)  	{  		joint->setSkinOffset( info->mPivot ); @@ -677,6 +675,42 @@ void LLAvatarAppearance::clearSkeleton()  	mSkeleton.clear();  } +//------------------------------------------------------------------------ +// addPelvisFixup +//------------------------------------------------------------------------ +void LLAvatarAppearance::addPelvisFixup( F32 fixup, const LLUUID& mesh_id )  +{ +	LLVector3 pos(0.0,0.0,fixup); +	mPelvisFixups.add(mesh_id,pos); +} + +//------------------------------------------------------------------------ +// addPelvisFixup +//------------------------------------------------------------------------ +void LLAvatarAppearance::removePelvisFixup( const LLUUID& mesh_id ) +{ +	mPelvisFixups.remove(mesh_id); +} + +//------------------------------------------------------------------------ +// hasPelvisFixup +//------------------------------------------------------------------------ +bool LLAvatarAppearance::hasPelvisFixup( F32& fixup, LLUUID& mesh_id ) const +{ +	LLVector3 pos; +	if (mPelvisFixups.findActiveOverride(mesh_id,pos)) +	{ +		fixup = pos[2]; +		return true; +	} +	return false; +} + +bool LLAvatarAppearance::hasPelvisFixup( F32& fixup ) const +{ +	LLUUID mesh_id; +	return hasPelvisFixup( fixup, mesh_id ); +}  //-----------------------------------------------------------------------------  // LLAvatarAppearance::buildCharacter()  // Deferred initialization and rebuild of the avatar. diff --git a/indra/llappearance/llavatarappearance.h b/indra/llappearance/llavatarappearance.h index 1e898026c0..a0ef49b7cb 100755 --- a/indra/llappearance/llavatarappearance.h +++ b/indra/llappearance/llavatarappearance.h @@ -152,11 +152,17 @@ protected:  	BOOL				mIsBuilt; // state of deferred character building  	typedef std::vector<LLAvatarJoint*> avatar_joint_list_t;  	avatar_joint_list_t	mSkeleton; -	 +	LLPosOverrideMap	mPelvisFixups; +  	//--------------------------------------------------------------------  	// Pelvis height adjustment members.  	//--------------------------------------------------------------------  public: +	void				addPelvisFixup( F32 fixup, const LLUUID& mesh_id ); +	void 				removePelvisFixup( const LLUUID& mesh_id ); +	bool 				hasPelvisFixup( F32& fixup, LLUUID& mesh_id ) const; +	bool 				hasPelvisFixup( F32& fixup ) const; +	  	LLVector3			mBodySize;  	LLVector3			mAvatarOffset;  protected: diff --git a/indra/llappearance/llpolyskeletaldistortion.cpp b/indra/llappearance/llpolyskeletaldistortion.cpp index ea29cbd451..fbc312c426 100644 --- a/indra/llappearance/llpolyskeletaldistortion.cpp +++ b/indra/llappearance/llpolyskeletaldistortion.cpp @@ -213,7 +213,7 @@ void LLPolySkeletalDistortion::apply( ESex avatar_sex )                  LLVector3 scaleDelta = iter->second;                  newScale = newScale + (effective_weight * scaleDelta) - (mLastWeight * scaleDelta);				                  				//An aspect of attached mesh objects (which contain joint offsets) that need to be cleaned up when detached -				joint->storeScaleForReset( newScale );				 +				// needed? // joint->storeScaleForReset( newScale );				  				joint->setScale(newScale);          }  | 
