*/
var float autocvar_cl_movement_errorcompensation = 0;
+var float autocvar_cl_movement = 2; // testing purposes
// engine stuff
#define REFDEFFLAG_TELEPORTED 1
// 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;
}
csqcplayer_status = CSQCPLAYERSTATUS_PREDICTED;
}
+void CSQC_ClientMovement_PlayerMove_Frame();
+
+void CSQCPlayer_Physics(void)
+{
+ switch(autocvar_cl_movement)
+ {
+ case 1: runstandardplayerphysics(self); break;
+ case 2: CSQC_ClientMovement_PlayerMove_Frame(); break;
+ }
+}
+
void CSQCPlayer_PredictTo(float endframe, float apply_error)
{
CSQCPlayer_Unpredict();
{
if (!getinputstate(csqcplayer_moveframe))
break;
- runstandardplayerphysics(self);
+ CSQCPlayer_Physics();
CSQCPlayer_SetMinsMaxs();
csqcplayer_moveframe++;
}
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;
if(pmove_onground)
self.pmove_flags |= PMF_ONGROUND;
else
- self.pmove_flags &~= PMF_ONGROUND;
+ self.pmove_flags &= ~PMF_ONGROUND;
CSQCPlayer_SetMinsMaxs();
}
else
{
+ float flg = self.iflags;
+ self.iflags &= ~(IFLAG_ORIGIN | IFLAG_ANGLES);
+ InterpolateOrigin_Do();
+ self.iflags = flg;
+
if(csqcplayer_status == CSQCPLAYERSTATUS_FROMSERVER)
{
vector o, v;
// 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;
if(pmove_onground)
self.pmove_flags |= PMF_ONGROUND;
else
- self.pmove_flags &~= PMF_ONGROUND;
+ self.pmove_flags &= ~PMF_ONGROUND;
CSQCPlayer_SavePrediction();
}
#ifdef CSQCMODEL_SERVERSIDE_CROUCH
// get crouch state from the server (LAG)
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;
#endif
}
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)
{
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;