]> de.git.xonotic.org Git - xonotic/darkplaces.git/commitdiff
disable interpolation of predicted movement locations when a teleport occurred (just...
authorhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Mon, 12 Mar 2007 02:28:15 +0000 (02:28 +0000)
committerhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Mon, 12 Mar 2007 02:28:15 +0000 (02:28 +0000)
git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@6954 d7cf8633-e32d-0410-b094-e92efae38249

cl_main.c

index 5032ee99c4ce7ce3d6d23e361edf1c329ad4a61b..c70b63edac344951fe36a984306b658fe51f7cdd 100644 (file)
--- 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);