private void WriteReplayDataToMemory() { RecordingTime += Time.deltaTime; if (RecordingTime >= ReplayRate * _tick) { if (!_replayWriter.GetStream().CanWrite) { return; } // Add Streamposition of start of the frame to the keyFrameLists _replayStartPositionsInStream.Add((int)_replayWriter.GetStream().Position, 0); var snapshotAtFrame = _snapshotAtFrame; var deltaFrames = ((_tick - 1) % snapshotAtFrame); if (deltaFrames > 0) { _replayDeltaRecorder.WriteFrame(RecordingTime, _tick - 1, (int)deltaFrames); } else if (deltaFrames == 0) { _replaySnapshotRecorder.WriteFrame(RecordingTime, _tick - 1, (int)deltaFrames); } _tick++; OnRecordFrameChanged?.Invoke(); } SizeOfStream = _replayWriter.GetStream().Length; }
public void ReadSnapshotPointers(IReplayReader reader, int off) { for (var i = 0; i < _sizeOfPositions; i++) { var pos = reader.ReadInt32() + off; ReplayPointer.Add(pos, off); } Debug.Log("Read Timelineheader\n" + this); }