示例#1
0
        private void InternalUpdate(GameTimeExt gameTime, bool updatePhysicsSimulation, TimeSpan currentTickTimeElapsed, bool updateSingleCallSystems)
        {
            if (updatePhysicsSimulation)
            {
                // Update the physics time (which is in fixed time steps)
                PhysicsGameTime.Update(PhysicsGameTime.Total + GameClockManager.SimulationDeltaTime, GameClockManager.SimulationDeltaTime, incrementFrameCount: true);
            }
            if (GameClockManager.SimulationClock.IsEnabled)
            {
                GameClockManager.SimulationClock.CurrentTickTimeElapsed = currentTickTimeElapsed;
                GameClockManager.SimulationClock.TotalTime       += gameTime.Elapsed;
                GameClockManager.SimulationClock.IsNextSimulation = updatePhysicsSimulation;
                if (updatePhysicsSimulation)
                {
                    GameClockManager.SimulationClock.SimulationTickNumber++;
                    //System.Diagnostics.Debug.WriteLine($"UPDATE: TICK: {_gameClockManager.SimulationTickNumber}");
                }
#if DEBUG
                //var context = Services.GetService<GameEngineContext>();
                //if (context.IsClient)
                //{
                //    System.Diagnostics.Debug.WriteLine(@$">>SimTick {GameClockManager.SimulationClock.SimulationTickNumber} - SimTotalTime {GameClockManager.SimulationClock.TotalTime} - SimCurElapsed {GameClockManager.SimulationClock.CurrentTickTimeElapsed}");
                //}
#endif
            }
            GameSystemsUpdate(updatePhysicsSimulation, updateSingleCallSystems);
        }