From ee11745e82a8fec61d2e685364acd8bd6a3d5eb4 Mon Sep 17 00:00:00 2001 From: Rudolf Polzer Date: Tue, 15 Nov 2011 10:36:05 +0100 Subject: [PATCH] use DP_CSQC_V_CALCREFDEF --- qcsrc/csqcmodel/cl_model.qc | 4 ++++ qcsrc/csqcmodel/cl_player.qc | 30 +++++++++++++++--------------- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/qcsrc/csqcmodel/cl_model.qc b/qcsrc/csqcmodel/cl_model.qc index bd9dcfd19..ae17eedd3 100644 --- a/qcsrc/csqcmodel/cl_model.qc +++ b/qcsrc/csqcmodel/cl_model.qc @@ -29,6 +29,7 @@ var float autocvar_cl_nolerp = 0; .float csqcmodel_lerpfrac2; .float csqcmodel_lerpfractime; .float csqcmodel_lerpfrac2time; +.float csqcmodel_teleported; void CSQCModel_InterpolateAnimation_PreNote(float sf) { @@ -181,7 +182,10 @@ void CSQCModel_Read() setmodelindex(self, self.modelindex); // this retrieves the .model key and sets mins/maxs/absmin/absmax if(sf & PROPERTY_TELEPORTED) + { self.iflags |= IFLAG_TELEPORTED; + self.csqcmodel_teleported = 1; + } CSQCModel_InterpolateAnimation_Note(sf); InterpolateOrigin_Note(); diff --git a/qcsrc/csqcmodel/cl_player.qc b/qcsrc/csqcmodel/cl_player.qc index 14c3b66c7..452703e66 100644 --- a/qcsrc/csqcmodel/cl_player.qc +++ b/qcsrc/csqcmodel/cl_player.qc @@ -25,7 +25,9 @@ var float autocvar_chase_active; var float autocvar_chase_back; .float pmove_flags; + #define PMF_DUCKED 4 +#define PMF_TELEPORTED 16 entity csqcplayer; vector csqcplayer_origin, csqcplayer_velocity; @@ -165,23 +167,21 @@ void CSQCPlayer_SetCamera() // relink setorigin(csqcplayer, csqcplayer.origin); - org = csqcplayer.origin + self.view_ofs + CSQCPlayer_GetPredictionError(); - ang = R_SetView3fv(VF_ANGLES); - - // simulate missing engine features - if(autocvar_chase_active) + if(checkextension("DP_CSQC_V_CALCREFDEF")) { - float dist; - vector chase_dest; - dist = -autocvar_chase_back - 8; - makevectors(ang); - chase_dest = org + v_forward * dist; - traceline(org, chase_dest, MOVE_NOMONSTERS, csqcplayer); - org = trace_endpos + 8 * v_forward + 4 * trace_plane_normal; - } + // set teleport bit + if(csqcplayer.csqcmodel_teleported) + { + csqcplayer.pmove_flags |= PMF_TELEPORTED; + csqcplayer.csqcmodel_teleported = 0; + } + else + csqcplayer.pmove_flags &~= PMF_TELEPORTED; - R_SetView3fv(VF_ORIGIN, org); - R_SetView3fv(VF_ANGLES, ang); + V_CalcRefdef(csqcplayer); + } + else + R_SetView3fv(VF_ORIGIN, csqcplayer.origin + csqcplayer.view_ofs); { CSQCPLAYER_HOOK_POSTCAMERASETUP } } -- 2.39.2