/// <summary> /// Start and execute the flight sequence /// <param name="countdown"></param> /// </summary> public void Execute(bool countdown = true) { if (countdown) { LaunchWithCountdown(); } else { LaunchWithoutCountdown(); } while (UpperStage == null) { new LaunchGuidance.LiftOff(LaunchVehicle, 1, 0).Execute(until: () => LaunchVehicle.VerticalSpeed > 100); new LaunchGuidance.GravityTurn(LaunchVehicle, 1, 1).Execute(until: () => LaunchVehicle.MeanAltitude > _meco); var ss = new LaunchGuidance.StageSeparation(LaunchVehicle, 1, 2); ss.OnComplete += (s, e) => UpperStage = ss.GetNextStage(); } UpperStage.AutoPilot.Engage(); LaunchVehicle.AutoPilot.Engage(); LaunchVehicle.Control.RCS = true; LaunchVehicle.AutoPilot.TargetPitchAndHeading(-5, 270); LaunchVehicle.ActivateCenterEngines(); while (Math.Abs(LaunchVehicle.Flight(LaunchVehicle.Orbit.Body.ReferenceFrame).Heading - 270) < 10) { ; } UpperStage.Control.Throttle = 1; LaunchVehicle.Control.Throttle = 1; }
public double ProgradePitch() { var tempRF = LaunchVehicle.AutoPilot.ReferenceFrame; LaunchVehicle.AutoPilot.ReferenceFrame = LaunchVehicle.SurfaceVelocityReferenceFrame; var result = LaunchVehicle.Flight(LaunchVehicle.SurfaceVelocityReferenceFrame).Prograde; throw new NotImplementedException(); }