void CL_StairSmoothing (void)
{
if (v_dmg_time > 0)
- v_dmg_time -= (cl.time - cl.oldtime);
+ v_dmg_time -= bound(0, cl.time - cl.oldtime, 0.1);
// stair smoothing
if (cl.onground && cl.stairoffset < 0)
{
- cl.stairoffset += (cl.time - cl.oldtime) * cl_stairsmoothspeed.value;
+ cl.stairoffset += bound(0, cl.time - cl.oldtime, 0.1) * cl_stairsmoothspeed.value;
cl.stairoffset = bound(-16, cl.stairoffset, 0);
}
else if (cl.onground && cl.stairoffset > 0)
{
- cl.stairoffset -= (cl.time - cl.oldtime) * cl_stairsmoothspeed.value;
+ cl.stairoffset -= bound(0, cl.time - cl.oldtime, 0.1) * cl_stairsmoothspeed.value;
cl.stairoffset = bound(0, cl.stairoffset, 16);
}
else
entity_t *ent;
float vieworg[3], gunorg[3], viewangles[3];
trace_t trace;
- if(csqc_loaded)
- return;
VectorClear(gunorg);
viewmodelmatrix = identitymatrix;
r_view.matrix = identitymatrix;
// 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 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);
-
- // interpolate the angles if playing a demo or spectating someone
- if (cls.demoplayback || cl.fixangle[0])
+ if (cl.onground)
{
- int i;
- float frac = bound(0, (cl.time - cl.mtime[1]) / (cl.mtime[0] - cl.mtime[1]), 1);
- for (i = 0;i < 3;i++)
- {
- float d = cl.mviewangles[0][i] - cl.mviewangles[1][i];
- if (d > 180)
- d -= 360;
- else if (d < -180)
- d += 360;
- viewangles[i] = cl.mviewangles[1][i] + frac * d;
- }
+ cl.stairoffset -= vieworg[2] - oldz;
+ cl.stairoffset = bound(-16, cl.stairoffset, 16);
}
+ else
+ cl.stairoffset = 0;
+ oldz = vieworg[2];
+
if (cl.intermission)
{
// entity is a fixed camera, just copy the matrix
void V_FadeViewFlashs(void)
{
+ // don't flash if time steps backwards
+ if (cl.time <= cl.oldtime)
+ return;
// drop the damage value
cl.cshifts[CSHIFT_DAMAGE].percent -= (cl.time - cl.oldtime)*150;
if (cl.cshifts[CSHIFT_DAMAGE].percent <= 0)