From 301db4431043ac7d1a76fcb9f91e30b85bb8d768 Mon Sep 17 00:00:00 2001 From: havoc Date: Mon, 12 Mar 2007 02:28:15 +0000 Subject: [PATCH] disable interpolation of predicted movement locations when a teleport occurred (just like unpredicted movement is not interpolated in this case) git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@6954 d7cf8633-e32d-0410-b094-e92efae38249 --- cl_main.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/cl_main.c b/cl_main.c index 5032ee99..c70b63ed 100644 --- a/cl_main.c +++ b/cl_main.c @@ -889,11 +889,15 @@ void CL_UpdateNetworkEntity(entity_t *e, int recursionlimit, qboolean interpolat // movement lerp // if it's the predicted player entity, update according to client movement - if (e == cl.entities + cl.playerentity && cl.movement_predicted) + // but don't lerp if going through a teleporter as it causes a bad lerp + // also don't use the predicted location if fixangle was set on both of + // the most recent server messages, as that cause means you are spectating + // someone or watching a cutscene of some sort + if (e == cl.entities + cl.playerentity && cl.movement_predicted && (!cl.fixangle[1] || !cl.fixangle[0])) { lerp = (cl.time - cl.movement_time[2]) / (cl.movement_time[0] - cl.movement_time[1]); lerp = bound(0, lerp, 1); - if (cl_nolerp.integer) + if (!interpolate || cl_nolerp.integer || cl.fixangle[0]) lerp = 1; VectorLerp(cl.movement_oldorigin, lerp, cl.movement_origin, origin); VectorSet(angles, 0, cl.viewangles[1], 0); -- 2.39.2