From: Rudolf Polzer Date: Wed, 23 Jan 2013 12:19:05 +0000 (+0100) Subject: _lerpanim_fixbone 2: only affect yaw X-Git-Tag: xonotic-v0.7.0~99^2~3 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=f18e6a7baa267e8ef71afd88a79c6aa5f26a2dfc;p=xonotic%2Fxonotic-data.pk3dir.git _lerpanim_fixbone 2: only affect yaw --- diff --git a/qcsrc/client/player_skeleton.qc b/qcsrc/client/player_skeleton.qc index dd4d0a696..cbed79764 100644 --- a/qcsrc/client/player_skeleton.qc +++ b/qcsrc/client/player_skeleton.qc @@ -55,7 +55,7 @@ void skel_set_bone_lerp(float skel, float bone, vector org, float strength) return skel_set_bone(skel, bone, org); } -void skeleton_fixbone(entity e, float strength) +void skeleton_fixbone(entity e, float strength, float yawonly) { if(!e.skeleton_fixrotatebone) return; @@ -74,7 +74,11 @@ void skeleton_fixbone(entity e, float strength) skel_get_boneabs(s, e.skeleton_fixtargetbone); vector T = fixedvectoangles2(v_forward, v_up); vector M_after_fixrotate = AnglesTransform_LeftDivide(M_including_fixrotate, T); - vector T_ = '0 0 0'; + vector T_ = T; + if(yawonly) + T__y = 0; // undo yaw + else + T_ = '0 0 0'; // undo all vector M_fixrotate_ = AnglesTransform_LeftDivide(M_before_fixrotate, AnglesTransform_RightDivide(T_, M_after_fixrotate)); vector org = skel_get_bonerel(s, e.skeleton_fixrotatebone); fixedmakevectors(M_fixrotate_); @@ -162,6 +166,6 @@ void skeleton_from_frames(entity e) float lerpstrength = 1 - equalamount / maxequalamount; // FIX IT - skeleton_fixbone(e, lerpstrength); + skeleton_fixbone(e, lerpstrength, autocvar__animblend_fixbone >= 2); } }