X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fclient%2Fplayer_skeleton.qc;h=ad5e23aa88335e382a221201828870ad848af471;hb=5d84c659e4c2c51c996b5330fa19c8a24887e42d;hp=fbbbb94a994f0a11d542f10981800db96aab80e0;hpb=166e9c67e14a8ab65e883a3824167fbfd62b37c0;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/client/player_skeleton.qc b/qcsrc/client/player_skeleton.qc index fbbbb94a9..ad5e23aa8 100644 --- a/qcsrc/client/player_skeleton.qc +++ b/qcsrc/client/player_skeleton.qc @@ -19,8 +19,8 @@ void skeleton_loadinfo(entity e) e.bone_weapon = gettagindex(e, "bip01 r hand"); for(i = 0; i < MAX_AIM_BONES; ++i) { - e.bone_aim[i] = 0; - e.bone_aimweight[i] = 0; + e.(bone_aim[i]) = 0; + e.(bone_aimweight[i]) = 0; } e.fixbone = 0; if(get_model_parameters(e.model, e.skin)) @@ -34,9 +34,9 @@ void skeleton_loadinfo(entity e) for(i = 0; i < MAX_AIM_BONES; ++i) { if(get_model_parameters_bone_aim[i]) - e.bone_aim[i] = gettagindex(e, get_model_parameters_bone_aim[i]); + e.(bone_aim[i]) = gettagindex(e, get_model_parameters_bone_aim[i]); if(e.bone_aim[i]) - e.bone_aimweight[i] = get_model_parameters_bone_aimweight[i]; + e.(bone_aimweight[i]) = get_model_parameters_bone_aimweight[i]; } } else @@ -84,8 +84,8 @@ void skel_set_boneabs(float s, float bone, vector absorg) /* vector neworg = skel_get_boneabs(s, bone); - print(sprintf("ANG: want: %v, got: %v\n", absang, fixedvectoangles2(v_forward, v_up))); - print(sprintf("ORG: want: %v, got: %v\n", absorg, neworg)); + printf("ANG: want: %v, got: %v\n", absang, fixedvectoangles2(v_forward, v_up)); + printf("ORG: want: %v, got: %v\n", absorg, neworg); */ } @@ -98,7 +98,7 @@ void free_skeleton_from_frames(entity e) } } -void skeleton_from_frames(entity e) +void skeleton_from_frames(entity e, float is_dead) { float i; float m = e.modelindex; @@ -150,8 +150,8 @@ void skeleton_from_frames(entity e) e.lerpfrac3 = 0; e.lerpfrac4 = savelerpfrac4 * 2; } - //print(sprintf("Run: bone %d to %d, type %d\n", firstbone + 1, bone, bonetype)); - //print(sprintf("frame %d %d %d %d lerpfrac * %d %d %d\n", e.frame, e.frame2, e.frame3, e.frame4, e.lerpfrac, e.lerpfrac3, e.lerpfrac4)); + //printf("Run: bone %d to %d, type %d\n", firstbone + 1, bone, bonetype); + //printf("frame %d %d %d %d lerpfrac * %d %d %d\n", e.frame, e.frame2, e.frame3, e.frame4, e.lerpfrac, e.lerpfrac3, e.lerpfrac4); skel_build(s, e, m, 0, firstbone + 1, bone); } e.lerpfrac = savelerpfrac; @@ -166,16 +166,19 @@ void skeleton_from_frames(entity e) skel_set_boneabs(s, e.bone_upperbody, org); } - for(i = 0; i < MAX_AIM_BONES; ++i) + if(!is_dead) { - if(e.bone_aim[i]) + for(i = 0; i < MAX_AIM_BONES; ++i) { - vector aim = '1 0 0' * bound(-90, self.v_angle_x, 90) * e.bone_aimweight[i]; - vector org = skel_get_boneabs(s, e.bone_aim[i]); - vector ang_cur = fixedvectoangles2(v_forward, v_up); - vector ang = AnglesTransform_Multiply(aim, ang_cur); - fixedmakevectors(ang); - skel_set_boneabs(s, e.bone_aim[i], org); + if(e.(bone_aim[i])) + { + vector aim = '1 0 0' * bound(-90, self.v_angle_x, 90) * e.(bone_aimweight[i]); + vector org = skel_get_boneabs(s, e.(bone_aim[i])); + vector ang_cur = fixedvectoangles2(v_forward, v_up); + vector ang = AnglesTransform_Multiply(aim, ang_cur); + fixedmakevectors(ang); + skel_set_boneabs(s, e.(bone_aim[i]), org); + } } } }