protected IReplayFramePlayer(IReplayReader reader, int hz, ReplayMetaTimelineHeader theader, IReplayFramePlayer baseFrame) { ReplayReader = reader; this.Hz = hz; ReplayEntities = ReplayManager.Instance.ReplayEntities; StaticEntities = ReplayManager.Instance.ReplayStaticEntities; TimelineFromFrame = theader.StartFromFrame; THeader = theader; ReplayPointer = theader.ReplayPointer; BaseFrame = baseFrame; }
private void WriteTimelineHeaderToStream(IReplayWriter writer) { _replayStartPositionsInStream.Add((int)_replayWriter.GetStream().Position, 0); // add last byte position var timelineHeader = new ReplayMetaTimelineHeader( (byte)TimelineInheritance, _fromFrame, _replayStartPositionsInStream); timelineHeader.WriteFrame(writer); }
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); } }
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; }
private void InitializeTimelines() { _replayReader.GetStream().Position = 0; // First of all, the header must be read, to get the timelinecounts and meta informations ReplayMetaHeader = new ReplayMetaHeader(); ReplayMetaHeader.ReadFrame(_replayReader); _playRate = ReplayMetaHeader.Hz; if (ReplayManager.Instance.version != ReplayMetaHeader.Version) { Debug.LogWarning("Version of Replay not equal"); } // Timelines init and assign the timelines headers to them Timelines = new ReplayTimeline[ReplayMetaHeader.TimelineCount]; var sizeOfPreviousContent = 0; for (var i = 0; i < Timelines.Length; i++) { var replayTimelineHeader = new ReplayMetaTimelineHeader(); // Read Headerdata from Replay replayTimelineHeader.ReadFrame(_replayReader); // Read Snapshot/Delta Positions in Stream with Offset sizeOfPreviousContent replayTimelineHeader.ReadSnapshotPointers(_replayReader, ReplayMetaHeader.SizeInBytes + replayTimelineHeader.SizeInBytes + sizeOfPreviousContent); // Dont add Timelineparent to 255 byte number == no timeline if (replayTimelineHeader.TimelineInheritance < 255) { replayTimelineHeader.ReplayPointer.AddParentFrames(Timelines[replayTimelineHeader.TimelineInheritance], replayTimelineHeader.StartFromFrame); } // Initialize Timelines Timelines[i] = new ReplayTimeline(ReplayMetaHeader, replayTimelineHeader, _replayReader, i); _replayReader.GetStream().Position = replayTimelineHeader.ReplayPointer.GetLastEndingPosition.Index; sizeOfPreviousContent = replayTimelineHeader.ReplayPointer.GetLastEndingPosition.Index - ReplayMetaHeader.SizeInBytes; } CurrentReplayTimeline = Timelines[0]; CurrentReplayTimeline.CurrentFramePlayer = CurrentReplayTimeline.ReplaySnapshotPlayer; _replayReader.GetStream().Position = CurrentReplayTimeline.MetaTimelineHeader.ReplayPointer.GetFirstStartingPosition.Index; }
public ReplayDeltaPlayer(IReplayReader reader, int hz, ReplayMetaTimelineHeader theader, IReplayFramePlayer baseFrame) : base(reader, hz, theader, baseFrame) { }
public ReplaySnapshotPlayer(IReplayReader reader, int hz, ReplayMetaTimelineHeader theader) : base(reader, hz, theader, null) { }