diff --git a/code/server/sv_netdemo.c b/code/server/sv_netdemo.c index f443f05..ab5f82e 100644 --- a/code/server/sv_netdemo.c +++ b/code/server/sv_netdemo.c @@ -1087,8 +1087,13 @@ void SVD_Seek_f( void ) { demo.seeked = qtrue; demo.endOfDemo = qfalse; - // reset client snapshot timing so SV_SendClientMessages doesn't - // skip sending (nextSnapshotTime was in the future, now svs.time is past) + // read the keyframe directly (works even when paused) + svs.snapFlagServerBit &= ~SNAPFLAG_RESET_ENTITIES; + if ( !SVD_ReadFrame( demo.playFile ) ) { + demo.endOfDemo = qtrue; + } + + // reset client snapshot timing { int j; for ( j = 0; j < sv_maxclients->integer; j++ ) { @@ -1098,7 +1103,7 @@ void SVD_Seek_f( void ) { } } - // ensure one frame runs on next SV_Frame + // ensure one frame runs on next SV_Frame (for G_RunFrame + snapshot) sv.timeResidual = 1000 / sv_fps->integer; Com_Printf( "Seeked to time %d.\n", svs.time );