protected override void Update(GameTime gameTime) { float deltaTime = gameTime.ElapsedGameTime.Ticks * SecondsPerTick; stats.OnUpdate(deltaTime); if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape)) { Exit(); } base.Update(gameTime); inputSystem.Update(); foreach (SystemUpdateTask sut in systemUpdateTasks) { sut.DeltaTime = deltaTime; ITaskCallback callback = Tasks.Enqueue(sut); taskCallbacks.Add(callback); } foreach (ITaskCallback callback in taskCallbacks) { callback.Wait(); } taskCallbacks.Clear(); eventBus.Update(); entityWorld.Commit(); }