VectorCopy(cl.mvelocity[0], s.velocity);
s.crouched = true; // will be updated on first move
s.canjump = cl.movement_replay_canjump;
+ //Con_Printf("movement replay starting org %f %f %f vel %f %f %f\n", s.origin[0], s.origin[1], s.origin[2], s.velocity[0], s.velocity[1], s.velocity[2]);
// set up movement variables
if (cls.protocol == PROTOCOL_QUAKEWORLD)
// viewzoom interpolation
cl.mviewzoom[0] = (float) max(cl.stats[STAT_VIEWZOOM], 2) * (1.0f / 255.0f);
+
+ // force a recalculation of the player prediction
+ cl.movement_replay = true;
}
/*
if (!cls.demoplayback)
VectorCopy(cl.mviewangles[0], cl.mviewangles[1]);
+ // force a recalculation of the player prediction
+ cl.movement_replay = true;
+
// slightly kill qw player entities each frame
for (i = 1;i < cl.maxclients;i++)
cl.entities_active[i] = false;
// if this is an update on our player, update interpolation state
if (enumber == cl.playerentity)
{
+ // force a recalculation of the player prediction
+ cl.movement_replay = true;
+
VectorCopy (cl.mpunchangle[0], cl.mpunchangle[1]);
VectorCopy (cl.mpunchvector[0], cl.mpunchvector[1]);
VectorCopy (cl.mvelocity[0], cl.mvelocity[1]);
VectorCopy(cl.viewangles, viewangles);
// update the stairoffset if the player entity has gone up or down without leaving the ground
- //Con_Printf("cl.onground %i oldz %f newz %f\n", cl.onground, oldz, vieworg[2]);
+ //Con_Printf("cl.onground %i oldz %f newz %f vel %f %f %f\n", cl.onground, oldz, vieworg[2], cl.movement_velocity[0], cl.movement_velocity[1], cl.movement_velocity[2]);
cl.stairoffset -= vieworg[2] - oldz;
oldz = vieworg[2];
cl.stairoffset = bound(-16, cl.stairoffset, 16);