private void ReactToShipDying(Ship ship) { // to prevent collisions, etc ShipList.Remove(ship); DeadShipList.Add(ship); ship.Visible = false; var randomSpawnPoint = GetSpawnPoint(); var controller = CameraControllerList.First(item => item.TargetEntity == ship); controller.FollowImmediately = false; this.Call(() => { controller.Tween("X", to: randomSpawnPoint.X, during: CameraController.TimeToInterpolateToNewSpawnLocation, interpolation: FlatRedBall.Glue.StateInterpolation.InterpolationType.Quadratic, easing: FlatRedBall.Glue.StateInterpolation.Easing.InOut); controller.Tween("Y", to: randomSpawnPoint.Y, during: CameraController.TimeToInterpolateToNewSpawnLocation, interpolation: FlatRedBall.Glue.StateInterpolation.InterpolationType.Quadratic, easing: FlatRedBall.Glue.StateInterpolation.Easing.InOut); }) .After(CameraController.TimeToWatchSinkingShip); this.Call(() => { ship.ResetHealth(); ship.X = randomSpawnPoint.X; ship.Y = randomSpawnPoint.Y; ship.Velocity = Vector3.Zero; DeadShipList.Remove(ship); ShipList.Add(ship); controller.FollowImmediately = true; ship.Visible = true; }) .After(CameraController.TimeToWatchSinkingShip + CameraController.TimeToInterpolateToNewSpawnLocation + CameraController.TimeToLookAtNewSpawnPointBeforeSpawning); }