diff --git a/src/d_main.c b/src/d_main.c index 00ede9aec628f71da0af68a3102473a74928c2ac..2f564c6c8f7fd183bb315dd03c5493dca28cb16d 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;