From cf8895a5790c2ae048c71e0f53bae6409a5500c1 Mon Sep 17 00:00:00 2001 From: Rudolf Polzer Date: Fri, 20 Dec 2013 11:44:45 +0100 Subject: [PATCH] Fix csqcmodel display for cloned/dead players. Also clone aiming direction :) --- qcsrc/client/csqcmodel_hooks.qc | 15 +++++++++++++++ qcsrc/common/csqcmodel_settings.qh | 2 +- qcsrc/server/cl_player.qc | 1 + 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/qcsrc/client/csqcmodel_hooks.qc b/qcsrc/client/csqcmodel_hooks.qc index 848c63277..fb87f9a74 100644 --- a/qcsrc/client/csqcmodel_hooks.qc +++ b/qcsrc/client/csqcmodel_hooks.qc @@ -610,7 +610,22 @@ void CSQCModel_Hook_PreDraw(float isplayer) CSQCPlayer_ModelAppearance_Apply(self.entnum == player_localnum + 1); CSQCPlayer_LOD_Apply(); if(!isplayer) + { + skeleton_loadinfo(self); + float doblend = (self.bone_upperbody >= 0); CSQCPlayer_FallbackFrame_Apply(); + if(doblend) + { + skeleton_from_frames(self, self.csqcmodel_isdead); + } + else + { + free_skeleton_from_frames(self); + // just in case, clear these (we're animating in frame and frame3) + self.lerpfrac = 0; + self.lerpfrac4 = 0; + } + } else { // we know that frame3 and frame4 fields, used by InterpolateAnimation, are left alone - but that is all we know! diff --git a/qcsrc/common/csqcmodel_settings.qh b/qcsrc/common/csqcmodel_settings.qh index 9f202d2b3..cfe012275 100644 --- a/qcsrc/common/csqcmodel_settings.qh +++ b/qcsrc/common/csqcmodel_settings.qh @@ -47,8 +47,8 @@ CSQCMODEL_ENDIF \ CSQCMODEL_PROPERTY(512, float, ReadChar, WriteChar, anim_upper_action) \ CSQCMODEL_PROPERTY(512, float, ReadApproxPastTime, WriteApproxPastTime, anim_upper_time) \ - CSQCMODEL_PROPERTY(1024, float, ReadAngle, WriteAngle, v_angle_x) \ CSQCMODEL_ENDIF \ + CSQCMODEL_PROPERTY(1024, float, ReadAngle, WriteAngle, v_angle_x) \ CSQCMODEL_PROPERTY_SCALED(4096, float, ReadByte, WriteByte, scale, 16, 0, 255) // TODO get rid of colormod/glowmod here, find good solution for nex charge glowmod hack; also get rid of some useless properties on non-players that only exist for CopyBody diff --git a/qcsrc/server/cl_player.qc b/qcsrc/server/cl_player.qc index eb3e81fbb..0229d3ed5 100644 --- a/qcsrc/server/cl_player.qc +++ b/qcsrc/server/cl_player.qc @@ -155,6 +155,7 @@ void CopyBody(float keepvelocity) self.teleportable = oldself.teleportable; self.damagedbycontents = oldself.damagedbycontents; self.angles = oldself.angles; + self.v_angle = oldself.v_angle; self.avelocity = oldself.avelocity; self.classname = "body"; self.damageforcescale = oldself.damageforcescale; -- 2.39.2