internal static void BeforeFrame() { double realTime = RealTime; PreviousFrameDuration = FrameDuration; FrameDuration = (float)(realTime - FrameStartTime); PreviousFrameStartTime = FrameStartTime; FrameStartTime = realTime; int num = 0; while (num < m_delayedExecutionsRequests.Count) { DelayedExecutionRequest delayedExecutionRequest = m_delayedExecutionsRequests[num]; if ((delayedExecutionRequest.Time >= 0.0 && FrameStartTime >= delayedExecutionRequest.Time) || (delayedExecutionRequest.FramesCount >= 0 && FrameIndex >= delayedExecutionRequest.FramesCount)) { m_delayedExecutionsRequests.RemoveAt(num); delayedExecutionRequest.Action(); } else { num++; } } }
public void NextFrame() { m_prevGameTimeDelta = m_gameTimeDelta; if (!FixedTimeStep.HasValue) { m_gameTimeDelta = MathUtils.Min(Time.FrameDuration * m_gameTimeFactor, 0.1f); } else { m_gameTimeDelta = MathUtils.Min(FixedTimeStep.Value * m_gameTimeFactor, 0.1f); } m_gameTime += m_gameTimeDelta; int num = 0; while (num < m_delayedExecutionsRequests.Count) { DelayedExecutionRequest delayedExecutionRequest = m_delayedExecutionsRequests[num]; if (delayedExecutionRequest.GameTime >= 0.0 && GameTime >= delayedExecutionRequest.GameTime) { m_delayedExecutionsRequests.RemoveAt(num); delayedExecutionRequest.Action(); } else { num++; } } int num2 = 0; int num3 = 0; foreach (ComponentPlayer componentPlayer in m_subsystemPlayers.ComponentPlayers) { if (componentPlayer.ComponentHealth.Health == 0f) { num3++; } else if (componentPlayer.ComponentSleep.SleepFactor == 1f) { num2++; } } if (num2 + num3 == m_subsystemPlayers.ComponentPlayers.Count && num2 >= 1) { FixedTimeStep = 0.05f; m_subsystemUpdate.UpdatesPerFrame = 20; } else { FixedTimeStep = null; m_subsystemUpdate.UpdatesPerFrame = 1; } bool flag = true; foreach (ComponentPlayer componentPlayer2 in m_subsystemPlayers.ComponentPlayers) { if (!componentPlayer2.ComponentGui.IsGameMenuDialogVisible()) { flag = false; break; } } if (flag) { GameTimeFactor = 0f; } else if (GameTimeFactor == 0f) { GameTimeFactor = 1f; } }