public override bool Execute(FlightComputer f, FlightCtrlState fcs) { if (mAbort) { Mode = FlightMode.Off; mAbort = false; } switch (Mode) { case FlightMode.Off: break; case FlightMode.KillRot: FlightCore.HoldOrientation(fcs, f, Orientation * Quaternion.AngleAxis(90, Vector3.left)); break; case FlightMode.AttitudeHold: FlightCore.HoldAttitude(fcs, f, Frame, Attitude, Orientation); break; case FlightMode.AltitudeHold: break; } return(false); }
public override bool Execute(FlightComputer f, FlightCtrlState fcs) { if (RemainingDelta > 0) { var forward = Node.GetBurnVector(f.Vessel.orbit).normalized; var up = (f.SignalProcessor.Body.position - f.SignalProcessor.Position).normalized; var orientation = Quaternion.LookRotation(forward, up); FlightCore.HoldOrientation(fcs, f, orientation); double thrustToMass = (FlightCore.GetTotalThrust(f.Vessel) / f.Vessel.GetTotalMass()); if (thrustToMass == 0.0) { EngineActivated = false; return(false); } EngineActivated = true; fcs.mainThrottle = 1.0f; RemainingTime = RemainingDelta / thrustToMass; RemainingDelta -= thrustToMass * TimeWarp.deltaTime; return(false); } f.Enqueue(AttitudeCommand.Off(), true, true, true); return(true); }