Esempio n. 1
0
        public int PlaybackEvents(NetFrames frames, int fromFrame, int toFrame)
        {
            int num = -1;
            int count;

            lock (frames.framesLock)
            {
                count = frames.eventQueue.Count;
            }
            for (int i = 0; i < count; i++)
            {
                FrameState frameState;
                lock (frames.framesLock)
                {
                    frameState = frames.eventQueue[i];
                }
                int frameId = frameState.frameId;
                if (frameId > fromFrame && frameId <= toFrame)
                {
                    num = Mathf.Max(num, frameId);
                    NetStream stream = frameState.stream;
                    stream.Seek(0);
                    uint        num2 = stream.ReadNetId();
                    NetIdentity value;
                    while (num2 != 0 && (!map.TryGetValue(num2, out value) || value.DeliverEvent(stream)))
                    {
                        num2 = stream.ReadNetId();
                    }
                }
            }
            return(num);
        }
Esempio n. 2
0
        public int RenderState(NetFrames frames, int renderedFrame, float fraction)
        {
            bool      state;
            int       frame0id;
            float     mix;
            NetStream frame;
            NetStream frame2;

            lock (frames.framesLock)
            {
                state = frames.GetState(renderedFrame, fraction, out frame0id, out frame, out frame2, out mix);
            }
            try
            {
                if (!state)
                {
                    return(frame0id);
                }
                if (!(mix <= 0f))
                {
                    if (!(mix >= 1f))
                    {
                        frame.Seek(0);
                        frame2.Seek(0);
                        for (int i = 0; i < list.Count; i++)
                        {
                            list[i].ApplyLerpedState(frame, frame2, mix);
                        }
                        return(frame0id);
                    }
                    frame2.Seek(0);
                    for (int j = 0; j < list.Count; j++)
                    {
                        list[j].ApplyState(frame2);
                    }
                    return(frame0id);
                }
                frame.Seek(0);
                for (int k = 0; k < list.Count; k++)
                {
                    list[k].ApplyState(frame);
                }
                return(frame0id);
            }
            finally
            {
                if (frame != null)
                {
                    frame = frame.Release();
                }
                if (frame2 != null)
                {
                    frame2 = frame2.Release();
                }
            }
        }