private void UpdatePositions(GameTime gameTime)
{
foreach (WorldObject worldObject in worldObjects)
{
// limit velocities
Vector2 velocity = worldObject.Velocity;
if (velocity.Length() > MAX_VELOCITY)
{
velocity.Normalize();
velocity *= MAX_VELOCITY;
worldObject.Velocity = velocity;
}
// calculate new positions
Vector2 postion = worldObject.Position;
postion.X += worldObject.Velocity.X * (float)gameTime.ElapsedGameTime.TotalMilliseconds * 0.01f;
postion.Y += worldObject.Velocity.Y * (float)gameTime.ElapsedGameTime.TotalMilliseconds * 0.01f;
// torodial field
postion.X = postion.X > GameAssets.rightFieldBoundary ? GameAssets.leftFieldBoundary : postion.X;
postion.Y = postion.Y > GameAssets.lowerFieldBoundary ? GameAssets.upperFieldBoundary : postion.Y;
postion.X = postion.X < GameAssets.leftFieldBoundary ? GameAssets.rightFieldBoundary : postion.X;
postion.Y = postion.Y < GameAssets.upperFieldBoundary ? GameAssets.lowerFieldBoundary : postion.Y;
worldObject.Position = postion;
}
}