From d6a38df852fa8c01b37ee11ee179375eb206455c Mon Sep 17 00:00:00 2001
From: havoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Date: Sun, 15 Apr 2007 21:59:02 +0000
Subject: [PATCH] added cl_nettimesyncmode 6 (adaptive sync, gradually adapts
 to server sync)

git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@7101 d7cf8633-e32d-0410-b094-e92efae38249
---
 cl_parse.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/cl_parse.c b/cl_parse.c
index e4799fb6..37fedef0 100644
--- a/cl_parse.c
+++ b/cl_parse.c
@@ -167,7 +167,7 @@ cvar_t cl_sound_ric3 = {0, "cl_sound_ric3", "weapons/ric3.wav", "sound to play w
 cvar_t cl_sound_r_exp3 = {0, "cl_sound_r_exp3", "weapons/r_exp3.wav", "sound to play during TE_EXPLOSION and related effects (empty cvar disables sound)"};
 cvar_t cl_serverextension_download = {0, "cl_serverextension_download", "0", "indicates whether the server supports the download command"};
 cvar_t cl_joinbeforedownloadsfinish = {0, "cl_joinbeforedownloadsfinish", "1", "if non-zero the game will begin after the map is loaded before other downloads finish"};
-cvar_t cl_nettimesyncmode = {0, "cl_nettimesyncmode", "5", "selects method of time synchronization in client with regard to server packets, values are: 0 = no sync, 1 = exact sync (reset timing each packet), 2 = loose sync (reset timing only if it is out of bounds), 3 = tight sync and bounding, 4 = bounded loose sync (reset if significantly wrong, otherwise bound), 5 = loose sync with low tolerance (reset timing if slightly out of bounds)"};
+cvar_t cl_nettimesyncmode = {0, "cl_nettimesyncmode", "5", "selects method of time synchronization in client with regard to server packets, values are: 0 = no sync, 1 = exact sync (reset timing each packet), 2 = loose sync (reset timing only if it is out of bounds), 3 = tight sync and bounding, 4 = bounded loose sync (reset if significantly wrong, otherwise bound), 5 = loose sync with low tolerance (reset timing if slightly out of bounds), 6 = adaptive sync (tries to correct timing errors gradually)"};
 cvar_t cl_iplog_name = {CVAR_SAVE, "cl_iplog_name", "darkplaces_iplog.txt", "name of iplog file containing player addresses for iplog_list command and automatic ip logging when parsing status command"};
 
 static qboolean QW_CL_CheckOrDownloadFile(const char *filename);
@@ -2798,6 +2798,8 @@ static void CL_NetworkTimeReceived(double newtime)
 			if (cl.time < cl.mtime[1] || cl.time > cl.mtime[1] + (cl.mtime[0] - cl.mtime[1]) / (4.0))
 				cl.time = cl.mtime[1];
 		}
+		else if (cl_nettimesyncmode.integer == 6)
+			cl.time = cl.mtime[1] * 0.125 + cl.time * 0.875;
 		else if (cl_nettimesyncmode.integer)
 			cl.time = cl.mtime[1];
 	}
-- 
2.39.5