diff options
| -rwxr-xr-x | indra/llappearance/llavatarappearance.cpp | 9 | ||||
| -rwxr-xr-x | indra/llappearance/llavatarappearance.h | 1 | ||||
| -rwxr-xr-x | indra/newview/character/avatar_lad.xml | 17 | ||||
| -rwxr-xr-x | indra/newview/llagent.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/llcallingcard.cpp | 3 | ||||
| -rwxr-xr-x | indra/newview/llvoavatar.cpp | 10 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/strings.xml | 1 | 
7 files changed, 37 insertions, 8 deletions
| diff --git a/indra/llappearance/llavatarappearance.cpp b/indra/llappearance/llavatarappearance.cpp index 89e64822f8..2d5744bb5e 100755 --- a/indra/llappearance/llavatarappearance.cpp +++ b/indra/llappearance/llavatarappearance.cpp @@ -462,6 +462,10 @@ void LLAvatarAppearance::computeBodySize()  	LLVector3 foot  = mFootLeftp->getPosition(); +	F32 old_offset = mAvatarOffset.mV[VZ]; + +	mAvatarOffset.mV[VZ] = getVisualParamWeight(11001); +  	mPelvisToFoot = hip.mV[VZ] * pelvis_scale.mV[VZ] -  				 	knee.mV[VZ] * hip_scale.mV[VZ] -  				 	ankle.mV[VZ] * knee_scale.mV[VZ] - @@ -481,7 +485,10 @@ void LLAvatarAppearance::computeBodySize()  	new_body_size.mV[VX] = DEFAULT_AGENT_DEPTH;  	new_body_size.mV[VY] = DEFAULT_AGENT_WIDTH; -	if (new_body_size != mBodySize) +	mAvatarOffset.mV[VX] = 0.0f; +	mAvatarOffset.mV[VY] = 0.0f; + +	if (new_body_size != mBodySize || old_offset != mAvatarOffset.mV[VZ])  	{  		mBodySize = new_body_size;  		bodySizeChanged(); diff --git a/indra/llappearance/llavatarappearance.h b/indra/llappearance/llavatarappearance.h index 11ea5e5a46..bce2540258 100755 --- a/indra/llappearance/llavatarappearance.h +++ b/indra/llappearance/llavatarappearance.h @@ -160,6 +160,7 @@ protected:  	//--------------------------------------------------------------------  public:  	LLVector3			mBodySize; +	LLVector3			mAvatarOffset;  protected:  	F32					mPelvisToFoot; diff --git a/indra/newview/character/avatar_lad.xml b/indra/newview/character/avatar_lad.xml index 2b090c4fa4..284e9c44b2 100755 --- a/indra/newview/character/avatar_lad.xml +++ b/indra/newview/character/avatar_lad.xml @@ -1084,6 +1084,23 @@           scale="0 0 .5" />        </param_skeleton>      </param> + +    <param +     id="11001" +     group="0" +     name="Hover" +     wearable="shape" +     edit_group="shape_body" +     edit_group_order="4" +     label_min="Lower" +     label_max="Higher" +     value_min="-2" +     value_max="2" +     value_default="0" +     camera_distance="2.5"> +      <param_skeleton /> +    </param> +    </skeleton>    <mesh diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 6c082a7e9c..99b79aadc4 100755 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -2332,7 +2332,7 @@ void LLAgent::setStartPosition( U32 location_id )      if (isAgentAvatarValid())      {          // the z height is at the agent's feet -        agent_pos.mV[VZ] -= 0.5f * gAgentAvatarp->mBodySize.mV[VZ]; +        agent_pos.mV[VZ] -= 0.5f * (gAgentAvatarp->mBodySize.mV[VZ] + gAgentAvatarp->mAvatarOffset.mV[VZ]);      }      agent_pos.mV[VX] = llclamp( agent_pos.mV[VX], INSET, REGION_WIDTH - INSET ); @@ -4381,7 +4381,7 @@ void LLAgent::sendAgentSetAppearance()  	// NOTE -- when we start correcting all of the other Havok geometry   	// to compensate for the COLLISION_TOLERANCE ugliness we will have   	// to tweak this number again -	const LLVector3 body_size = gAgentAvatarp->mBodySize; +	const LLVector3 body_size = gAgentAvatarp->mBodySize + gAgentAvatarp->mAvatarOffset;  	msg->addVector3Fast(_PREHASH_Size, body_size);	  	// To guard against out of order packets diff --git a/indra/newview/llcallingcard.cpp b/indra/newview/llcallingcard.cpp index 0d55c4429a..0b8f863e75 100644 --- a/indra/newview/llcallingcard.cpp +++ b/indra/newview/llcallingcard.cpp @@ -183,7 +183,8 @@ LLVector3d LLAvatarTracker::getGlobalPos()  		global_pos = object->getPositionGlobal();  		// HACK - for making the tracker point above the avatar's head  		// rather than its groin -		global_pos.mdV[VZ] += 0.7f * ((LLVOAvatar *)object)->mBodySize.mV[VZ]; +		LLVOAvatar* av = (LLVOAvatar*)object; +		global_pos.mdV[VZ] += 0.7f * (av->mBodySize.mV[VZ] + av->mAvatarOffset.mV[VZ]);  		mTrackingData->mGlobalPositionEstimate = global_pos;  	} diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index afe8a037b7..f6fd8b2409 100755 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -2074,7 +2074,7 @@ void LLVOAvatar::idleUpdateVoiceVisualizer(bool voice_enabled)  		{  			LLVector3 tagPos = mRoot->getWorldPosition();  			tagPos[VZ] -= mPelvisToFoot; -			tagPos[VZ] += ( mBodySize[VZ] + 0.125f ); +			tagPos[VZ] += ( mBodySize[VZ] + mAvatarOffset[VZ] + 0.125f );  			mVoiceVisualizer->setVoiceSourceWorldPosition( tagPos );  		}  	}//if ( voiceEnabled ) @@ -2818,12 +2818,12 @@ LLVector3 LLVOAvatar::idleUpdateNameTagPosition(const LLVector3& root_pos_last)  	local_camera_up.normalize();  	local_camera_up = local_camera_up * ~root_rot; -	local_camera_up.scaleVec(mBodySize * 0.5f); -	local_camera_at.scaleVec(mBodySize * 0.5f); +	local_camera_up.scaleVec((mBodySize + mAvatarOffset) * 0.5f); +	local_camera_at.scaleVec((mBodySize + mAvatarOffset) * 0.5f);  	LLVector3 name_position = mRoot->getWorldPosition();  	name_position[VZ] -= mPelvisToFoot; -	name_position[VZ] += (mBodySize[VZ]* 0.55f); +	name_position[VZ] += ((mBodySize[VZ] + mAvatarOffset[VZ])* 0.55f);  	name_position += (local_camera_up * root_rot) - (projected_vec(local_camera_at * root_rot, camera_to_av));	  	name_position += pixel_up_vec * 15.f; @@ -3123,6 +3123,8 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)  		}  		root_pos = gAgent.getPosGlobalFromAgent(getRenderPosition()); +		root_pos.mdV[VZ] += getVisualParamWeight(11001); +  		resolveHeightGlobal(root_pos, ground_under_pelvis, normal);  		F32 foot_to_ground = (F32) (root_pos.mdV[VZ] - mPelvisToFoot - ground_under_pelvis.mdV[VZ]);				 diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 4383b98592..883a06d5e1 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -2991,6 +2991,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].  <string name="Higher">Higher</string>  <string name="Hip Length">Hip Length</string>  <string name="Hip Width">Hip Width</string> +<string name="Hover">Hover</string>  <string name="In">In</string>  <string name="In Shdw Color">Inner Shadow Color</string>  <string name="In Shdw Opacity">Inner Shadow Opacity</string> | 
