public override void Update(GameTime gameTime)
{
// Increment tick
Tick++;
//Ignore gametime. We are only bothered about ticks.
// No dying in simulation
//EnergyDeathSystem.Update(Tick, GameSpeed);
//HealthDeathSystem.Update(Tick, GameSpeed);
//OldAgeDeathSystem.Update(Tick, GameSpeed);
// Update all systems that regard input values before updating brains
_visionSystem.Update();
_noseSystem.Update();
//_brainSystem.Update(_settings.CritterTypes);
// Following this update all systems that regard output
_movementControlSystem.Update();
// If these systems have energy costs remember to update those systems before anything else happens, in case we need to cancel it
_movementControlEnergyCostSystem.Update(SimDeltaTime);
// These systems gather collisions between certain types of entities that are processed by other systems
_rigidbodyCollisionSystem.GetCollisions();
_mouthCollisionSystem.GetCollisions();
_weaponHealthCollisionSystem.GetCollisions();
// Update the aforementioned systems to process the collisions
RigidbodyCollisionSystem.Update();
MouthFoodCollisionSystem.Update(Tick, SimDeltaTime);
WeaponSystem.Update(Tick, SimDeltaTime);
// Calculate forces acting upon each body
_rigidBodySystem.Update(SimDeltaTime);
_dragSystem.Update();
// bounce entities on edge of the world
WorldBorderSystem.Update();
// Actually modify transforms
_velocitySystem.Update(SimDeltaTime);
// Di not want this for editor
//CritterPopulationSystem.Update(Tick, GameSpeed);
//FoodRespawnSystem.Update(Tick, GameSpeed);
//At the end of each loop update the hierarchy system so that it renders correctly and everything is ready for the next loop
_transformHierarchySystem.Update();
}