コード例 #1
0
        protected override void OnUpdate()
        {
            if (FixedTimeStepEnabled)
            {
                // First trigger after enabling always ticks at the current time
                if (m_FixedUpdateCount == 0)
                {
                    m_LastFixedUpdateTime = Time.ElapsedTime;
                    m_FixedUpdateCount    = 1;

                    World.PushTime(new TimeData(
                                       elapsedTime: m_LastFixedUpdateTime,
                                       deltaTime: FixedTimeStep)); // fudge the initial delta time to be what's expected, even though it's really 0

                    UpdateAllSystems();

                    World.PopTime();

                    return;
                }

                // Note that FixedTimeStep of 0.0f will never update
                while (Time.ElapsedTime - m_LastFixedUpdateTime > FixedTimeStep)
                {
                    m_LastFixedUpdateTime += FixedTimeStep;
                    m_FixedUpdateCount++;

                    World.PushTime(new TimeData(
                                       elapsedTime: m_LastFixedUpdateTime,
                                       deltaTime: FixedTimeStep));

                    UpdateAllSystems();

                    World.PopTime();
                }
            }
            else
            {
                UpdateAllSystems();
            }
        }