public void Update(float playerSpeed, GameTime gameTime)
{
float delta = playerSpeed * gameTime.UpdateTime;
var centerX = this.Center.X;
var centerY = this.Center.Y;
var targetX = this.Target.Position.X * 32;
var targetY = this.Target.Position.Y * 32;
if (targetX >= this.StationaryBounds.X)
{
var mapBoundsX = (ServiceLocator.WorldManager.MapManager.Map.Width * 32) - (this.ViewRect.Width / 2);
if (CanViewOutside || targetX <= mapBoundsX)
{
if (this.Center.X < targetX)
{
centerX += delta;
if (centerX > targetX)
centerX = targetX;
}
if (this.Center.X > targetX)
{
centerX -= delta;
if (centerX < targetX)
centerX = targetX;
}
}
}
if (targetY >= this.StationaryBounds.Y)
{
var mapBoundsY = (ServiceLocator.WorldManager.MapManager.Map.Height * 32) - (this.ViewRect.Height / 2);
if (CanViewOutside || targetY <= mapBoundsY)
{
if (this.Center.Y < targetY)
{
centerY += delta;
if (centerY > targetY)
centerY = targetY;
}
if (this.Center.Y > targetY)
{
centerY -= delta;
if (centerY < targetY)
centerY = targetY;
}
}
}
this.Center = new Vector2f(centerX, centerY);
}