X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcsqcmodellib%2Fcl_player.qc;h=63db0ac14b6ea777aef4e349f39e0d360682c9f5;hb=2eb949d3db8ca2ddf243fbeb188b2a1c0c79d4ec;hp=4aa8fdf92cdb89886784437e1ba471ca5b8b0d49;hpb=fbec7533403217021a56aad87aae328283178c0f;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/csqcmodellib/cl_player.qc b/qcsrc/csqcmodellib/cl_player.qc index 4aa8fdf92..63db0ac14 100644 --- a/qcsrc/csqcmodellib/cl_player.qc +++ b/qcsrc/csqcmodellib/cl_player.qc @@ -23,13 +23,9 @@ var float autocvar_cl_movement_errorcompensation = 0; // engine stuff -.float pmove_flags; -float pmove_onground; // weird engine flag we shouldn't really use but have to for now -#define PMF_JUMP_HELD 1 -#define PMF_DUCKED 4 -#define PMF_ONGROUND 8 #define REFDEFFLAG_TELEPORTED 1 #define REFDEFFLAG_JUMPING 2 +float pmove_onground; // weird engine flag we shouldn't really use but have to for now vector csqcplayer_origin, csqcplayer_velocity; float csqcplayer_sequence, player_pmflags; @@ -64,13 +60,13 @@ void CSQCPlayer_SetPredictionError(vector o, vector v, float onground_diff) // commented out as this one did not help if(onground_diff) { - print(sprintf("ONGROUND MISMATCH: %d x=%v v=%v\n", onground_diff, o, v)); + printf("ONGROUND MISMATCH: %d x=%v v=%v\n", onground_diff, o, v); return; } */ if(vlen(o) > 32 || vlen(v) > 192) { - //print(sprintf("TOO BIG: x=%v v=%v\n", o, v)); + //printf("TOO BIG: x=%v v=%v\n", o, v); return; } @@ -186,18 +182,14 @@ void CSQCPlayer_SetCamera() oldself = self; self = csqcplayer; -#ifdef COMPAT_XON050_ENGINE - if(servercommandframe == 0 || clientcommandframe == 0 || !(checkextension("DP_CSQC_V_CALCREFDEF") || checkextension("DP_CSQC_V_CALCREFDEF_WIP1"))) -#else if(servercommandframe == 0 || clientcommandframe == 0) -#endif { InterpolateOrigin_Do(); self.view_ofs = '0 0 1' * getstati(STAT_VIEWHEIGHT); // get crouch state from the server if(getstati(STAT_VIEWHEIGHT) == PL_VIEW_OFS_z) - self.pmove_flags &~= PMF_DUCKED; + self.pmove_flags &= ~PMF_DUCKED; else if(getstati(STAT_VIEWHEIGHT) == PL_CROUCH_VIEW_OFS_z) self.pmove_flags |= PMF_DUCKED; @@ -205,7 +197,7 @@ void CSQCPlayer_SetCamera() if(pmove_onground) self.pmove_flags |= PMF_ONGROUND; else - self.pmove_flags &~= PMF_ONGROUND; + self.pmove_flags &= ~PMF_ONGROUND; CSQCPlayer_SetMinsMaxs(); @@ -217,6 +209,11 @@ void CSQCPlayer_SetCamera() } else { + float flg = self.iflags; + self.iflags &= ~(IFLAG_ORIGIN | IFLAG_ANGLES); + InterpolateOrigin_Do(); + self.iflags = flg; + if(csqcplayer_status == CSQCPLAYERSTATUS_FROMSERVER) { vector o, v; @@ -230,7 +227,7 @@ void CSQCPlayer_SetCamera() // get crouch state from the server if(getstati(STAT_VIEWHEIGHT) == PL_VIEW_OFS_z) - self.pmove_flags &~= PMF_DUCKED; + self.pmove_flags &= ~PMF_DUCKED; else if(getstati(STAT_VIEWHEIGHT) == PL_CROUCH_VIEW_OFS_z) self.pmove_flags |= PMF_DUCKED; @@ -238,12 +235,20 @@ void CSQCPlayer_SetCamera() if(pmove_onground) self.pmove_flags |= PMF_ONGROUND; else - self.pmove_flags &~= PMF_ONGROUND; + self.pmove_flags &= ~PMF_ONGROUND; CSQCPlayer_SavePrediction(); } CSQCPlayer_PredictTo(clientcommandframe + 1, TRUE); +#ifdef CSQCMODEL_SERVERSIDE_CROUCH + // get crouch state from the server (LAG) + if(getstati(STAT_VIEWHEIGHT) == PL_VIEW_OFS_z) + self.pmove_flags &= ~PMF_DUCKED; + else if(getstati(STAT_VIEWHEIGHT) == PL_CROUCH_VIEW_OFS_z) + self.pmove_flags |= PMF_DUCKED; +#endif + CSQCPlayer_SetMinsMaxs(); self.angles_y = input_angles_y; @@ -256,11 +261,7 @@ void CSQCPlayer_SetCamera() } entity view; -#ifdef COMPAT_XON050_ENGINE - view = CSQCModel_server2csqc((spectatee_status > 0) ? spectatee_status : player_localentnum); -#else view = CSQCModel_server2csqc(player_localentnum); -#endif if(view && view != csqcplayer) { @@ -271,15 +272,6 @@ void CSQCPlayer_SetCamera() self = oldself; } -#ifdef COMPAT_XON050_ENGINE - if(view && !(checkextension("DP_CSQC_V_CALCREFDEF") || checkextension("DP_CSQC_V_CALCREFDEF_WIP1"))) - { - // legacy code, not totally correct, but good enough for not having V_CalcRefdef - setproperty(VF_ORIGIN, view.origin + '0 0 1' * getstati(STAT_VIEWHEIGHT)); - setproperty(VF_ANGLES, view_angles); - } - else -#endif if(view) { var float refdefflags = 0;