From 6dd27af26e6fa47f6e449db139f193c730b24910 Mon Sep 17 00:00:00 2001 From: Eidolon Date: Mon, 11 Apr 2022 22:56:48 -0500 Subject: [PATCH] Run anti-lag chasecam at tic frequency Fixes jittery and unstable chasecam in high latency netgames --- src/d_main.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/d_main.c b/src/d_main.c index 00ede9aec..2f564c6c8 100644 --- a/src/d_main.c +++ b/src/d_main.c @@ -825,10 +825,17 @@ void D_SRB2Loop(void) // Lagless camera! Yay! if (gamestate == GS_LEVEL && netgame) { - if (splitscreen && camera2.chase) - P_MoveChaseCamera(&players[secondarydisplayplayer], &camera2, false); - if (camera.chase) - P_MoveChaseCamera(&players[displayplayer], &camera, false); + // Evaluate the chase cam once for every local realtic + // This might actually be better suited inside G_Ticker or TryRunTics + for (tic_t chasecamtics = 0; chasecamtics < realtics; chasecamtics++) + { + if (splitscreen && camera2.chase) + P_MoveChaseCamera(&players[secondarydisplayplayer], &camera2, false); + if (camera.chase) + P_MoveChaseCamera(&players[displayplayer], &camera, false); + } + R_UpdateViewInterpolation(); + } // (Only display if not already done for frame interp) cv_frameinterpolation.value == 0 ? D_Display() : 0;