Exemplo n.º 1
0
        private static void HostRunFrame(float time)
        {
            AccumulateTime(time);

            var prevRemainder = _hostRemainder;

            if (prevRemainder < 0)
            {
                prevRemainder = 0;
            }

            _hostRemainder += HostFrametime;

            var numticks = 0;

            if (_hostRemainder >= IntervalPerTick)
            {
                numticks        = (int)(_hostRemainder / IntervalPerTick);
                _hostRemainder -= numticks * IntervalPerTick;
            }

            _hostFrameTicks       = numticks;
            _hostCurrentFrameTick = 0;

            _clientState.FrameTime = HostFrametime;
            for (var tick = 0; tick < numticks; tick++)
            {
                Networking.RunFrame(time);

                ++_hostCurrentFrameTick;

                var finalTick = tick == (numticks - 1);

                HostRunFrame_Input(prevRemainder, finalTick);
                prevRemainder = 0;

                HostRunFrame_Client(finalTick);

                // TODO: Send queued network packets
            }

            Thread.Sleep(5);
        }