示例#1
0
        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;
        }
示例#2
0
 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);
 }