protected override void ReceivedRawPacket(PlaybackPacket packet) { _currentReadTimeSeconds = packet.TimeSeconds; base.ReceivedRawPacket(packet); if (_firstPacket) { _firstPacket = false; _timePassed.Start(); _pauseWaiter.Set(); } }
protected override IEnumerable <PlaybackPacket> ReadDemoFrameIntoPlaybackPackets(FArchive archive) { //Limits the buffer size by time IEnumerable <PlaybackPacket> packets = base.ReadDemoFrameIntoPlaybackPackets(archive); //Used to stop during playback if (!_finished) { PlaybackPacket packet = packets.FirstOrDefault(); if (packet != null && packet.TimeSeconds * 1000 > LastUpdateTime * 1000 + BufferLengthMs) { _bufferWaiter.WaitOne(); } } return(packets); }