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(); } }