Ejemplo n.º 1
0
        protected void LoadFrame(IFrameRecordable tb, float time, int frame, int deltaFrame, bool backTracing)
        {
            int index;

            // if this frame is loaded during last Update(), and the tracing direction didn't change
            // do not load this frame again
            if (frame == previousLoadedFrame && backTracing == isPreviousFrameBackTracing)
            {
                return;
            }

            if (dataTimeline.SearchFrame(frame, frame + deltaFrame, backTracing, out index, ref framesToLoad))
            {
                for (int i = 0; i < framesToLoad.Count; i++)
                {
                    var data = framesToLoad[i];
                    tb.LoadFrameData(data);
                    lastLoadedFrameIndex = index;
                    if (debug)
                    {
                        debugger.RecordLoad(data, previousUpdateTime, time);
                    }
                }
                previousLoadedFrame = frame;
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Auto save/load frames based on TimeTraceManager state.
        /// Should be called in Update() of its host Component.
        /// </summary>
        /// <param name="tb"></param>
        public void UpdateLoadSaveFrameData(IFrameRecordable tb)
        {
            float time        = TimeTraceManager.time;
            float deltaTime   = TimeTraceManager.deltaFrame;
            int   frame       = TimeTraceManager.frameCount;
            int   deltaFrame  = TimeTraceManager.deltaFrame;
            bool  tracing     = TimeTraceManager.tracing;
            bool  backTracing = TimeTraceManager.backTracing;

            if (tracing)
            {
                isPreviousFrameTracing = true;
                LoadFrame(tb, time, frame, deltaFrame, backTracing);
            }
            else
            {
                if (isPreviousFrameTracing)
                {
                    DiscardLoadedFrames();
                    isPreviousFrameTracing = false;
                }
                if (tb.AutoSaveFrameData)
                {
                    SaveFrame(tb, time, frame);
                }
            }
            isPreviousFrameBackTracing = backTracing;
            previousUpdateTime         = time;
        }
Ejemplo n.º 3
0
        protected void SaveFrame(IFrameRecordable tb, float time, int frame)
        {
            var data = tb.GetFrameData(time, frame);

            dataTimeline.Add(data);

            if (debug)
            {
                debugger.RecordSave(data);
            }
        }