From: havoc Date: Mon, 12 Mar 2007 02:28:15 +0000 (+0000) Subject: disable interpolation of predicted movement locations when a teleport occurred (just... X-Git-Tag: xonotic-v0.1.0preview~3462 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=301db4431043ac7d1a76fcb9f91e30b85bb8d768;p=xonotic%2Fdarkplaces.git 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 --- 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);