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(); } }
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); } }
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, }); } }