Beispiel #1
0
        public IEnumerator Record(byte hz, byte snapshotAtFrame,
                                  ReplayDeltaMode deltaMode, MemoryStream parentStream = null,
                                  int newTimline = 0, int fromTimeLine = 255, int fromFrame = 0, float recordingTime = 0)
        {
            if (deltaMode == ReplayDeltaMode.None)
            {
                snapshotAtFrame = 1;
            }
            ReplayRate          = 1f / hz;
            _hz                 = hz;
            TimelineInheritance = fromTimeLine;
            _fromFrame          = fromFrame;
            _snapshotAtFrame    = snapshotAtFrame;
            _replayDeltaMode    = deltaMode;

            if (newTimline == 0)
            {
                Init(new MemoryStream(), 0);
            }
            else
            {
                Init(new MemoryStream(), recordingTime);
                _parentStream = parentStream;
            }
            TimeLineNumber = newTimline;
            while (true)
            {
                yield return(new WaitForEndOfFrame());

                WriteReplayDataToMemory();
            }
        }
Beispiel #2
0
        public ReplayTimeline(ReplayMetaHeader metaHeader, ReplayMetaTimelineHeader metaTimelineHeader, IReplayReader reader, int index)
        {
            MetaTimelineHeader = metaTimelineHeader;
            _reader            = reader;

            ReplaySnapshotPlayer = new ReplaySnapshotPlayer(reader,
                                                            metaHeader.Hz,
                                                            metaTimelineHeader);

            ReplayDeltaPlayer = ReplayDeltaFactory.CreateReplayDeltaPlayer(reader,
                                                                           metaHeader.Hz, (ReplayDeltaMode)metaHeader.DeltaMode,
                                                                           metaTimelineHeader,
                                                                           ReplaySnapshotPlayer);

            TimelineIndex      = index;
            this.deltaMode     = (ReplayDeltaMode)metaHeader.DeltaMode;
            ReplayLength       = ReplaySnapshotPlayer.GetLastFrameTime();
            FrameSize          = metaTimelineHeader.ReplayPointer.Count - 2;
            CurrentFramePlayer = ReplaySnapshotPlayer;
        }
        public static IReplayFrameRecorder CreateReplayDeltaRecorder(IReplayWriter writer,
                                                                     IReplayFrameRecorder baseFrame, ReplayDeltaMode replayDeltaMode)
        {
            switch (replayDeltaMode)
            {
            case ReplayDeltaMode.DeltaCompression:
                return(new ReplayDeltaRecorder(writer, baseFrame));

            case ReplayDeltaMode.SubFrame:
                return(new ReplaySubframeRecorder(writer, baseFrame));

            default:
                return(null);
            }
        }
        public static IReplayFramePlayer CreateReplayDeltaPlayer(IReplayReader reader, int hz, ReplayDeltaMode deltaMode,
                                                                 ReplayMetaTimelineHeader metaTimelineHeader, IReplayFramePlayer baseFrame)
        {
            switch (deltaMode)
            {
            case ReplayDeltaMode.DeltaCompression:
                return(new ReplayDeltaPlayer(reader, hz, metaTimelineHeader, baseFrame));

            case ReplayDeltaMode.SubFrame:
                return(new ReplaySubframePlayer(reader, hz, metaTimelineHeader, baseFrame));

            default:
                return(null);
            }
        }
Beispiel #5
0
 protected void PlayAllReplayObservableConstruction(List <ReplayEntity> replayEntities, ReplayStateMode replayMode, ReplayDeltaMode deltaMode, float delta)
 {
     foreach (var entity in replayEntities)
     {
         entity.PlayAllReplayObservableConstruction(ReplayReader, new ReplayInfo()
         {
             ReplayStateMode = replayMode,
             PositionOffset  = THeader.CurrentOffset,
             Delta           = delta,
             ReplayDeltaMode = deltaMode,
         });
     }
 }