/* track prograde out of the atmosphere */ private AttitudeState AttitudePrograde() { if (vessel.altitude > mainBody.RealMaxAtmosphereAltitude() && orbit.ApA > target_altitude) { return(AttitudeState.EXIT); } double pitch = pitchPID.Update(adjustedTimeToAp(), 0, 0, 30); attitude.attitudeTo(Quaternion.AngleAxis((float)pitch, Vector3.left) * Vector3d.forward, AttitudeReference.SURFACE_HORIZONTAL); return(AttitudeState.PROGRADE); }
/* * Throttle State Machine */ /* burn to raise and maintain Ap at intermediate altitude */ private ThrottleState ThrottleLaunch() { if (orbit.ApA > intermediate_altitude) { warp.WarpAtPhysicsRate(this, 4, true); throttle.target = 0.0; if (adjustedTimeToAp() < targetAPtime) { return(ThrottleState.FINAL); } } else { warp.WarpAtPhysicsRate(this, 0, true); if (vessel.dynamicPressurekPa < maxQlimit) { throttlePID.ResetI(); } throttle.target = throttlePID.Update(vessel.dynamicPressurekPa, maxQlimit, 0, 1); } return(ThrottleState.LAUNCH); }