public void Move(Position destination, bool walking)
{
_position = this.GetPosition();
_destination = destination;
_moveStartTime = DateTime.Now;
this.IsWalking = walking;
var diffX = _destination.X - _position.X;
var diffY = _destination.Y - _position.Y;
_moveDuration = Math.Sqrt(diffX * diffX + diffY * diffY) / this.GetSpeed();
_movementX = diffX / _moveDuration;
_movementY = diffY / _moveDuration;
this.Direction = MabiMath.DirectionToByte(_movementX, _movementY);
Send.Move(this, _position, _destination, walking);
}