public void Update(World world, double dt, IShipController controller)
        {
            _leftRunning = _rightRunning = false;

            controller.Update(world, this, dt);
            ApplyInput(controller, dt);

            AddGravity(world, dt);
            Position += Velocity * dt;

            Angle         += RotationSpeed * dt;
            RotationSpeed /= Math.Exp(dt * 3);

            if (ShotTimer > 0)
            {
                ShotTimer -= dt;
                FireLazer(world);
            }

            foreach (var ship in world.Ships)
            {
                if (!ReferenceEquals(ship, this) && Model.HitBox.IntersectsOther(ship.Model.HitBox, Position, Angle, ship.Position, ship.Angle))
                {
                    Kill();
                    ship.Kill();
                }
            }

            foreach (var planet in world.Planets)
            {
                if (Model.HitBox.IntersectsPlanet(planet, Position, Angle))
                {
                    Kill();
                }
            }
            if (Position.X < 0 || Position.X >= world.ScreenWidth * Game1.ScaleHack || Position.Y < 0 || Position.Y >= world.ScreenHeight * Game1.ScaleHack)
            {
                Kill();
            }
        }