private void Confirm() { ICommand newCommand; switch (mMode) { default: case ComputerMode.Off: mAttitude = FlightAttitude.Null; newCommand = AttitudeCommand.Off(); break; case ComputerMode.Kill: mAttitude = FlightAttitude.Null; newCommand = AttitudeCommand.KillRot(); break; case ComputerMode.Node: mAttitude = FlightAttitude.Null; newCommand = AttitudeCommand.ManeuverNode(); break; case ComputerMode.TargetPos: mAttitude = (mAttitude == FlightAttitude.Null) ? FlightAttitude.Prograde : mAttitude; newCommand = AttitudeCommand.WithAttitude(Attitude, ReferenceFrame.TargetParallel); break; case ComputerMode.Orbital: mAttitude = (mAttitude == FlightAttitude.Null) ? FlightAttitude.Prograde : mAttitude; newCommand = AttitudeCommand.WithAttitude(Attitude, ReferenceFrame.Orbit); break; case ComputerMode.Surface: mAttitude = (mAttitude == FlightAttitude.Null) ? FlightAttitude.Prograde : mAttitude; newCommand = AttitudeCommand.WithAttitude(Attitude, ReferenceFrame.Surface); break; case ComputerMode.TargetVel: mAttitude = (mAttitude == FlightAttitude.Null) ? FlightAttitude.Prograde : mAttitude; newCommand = AttitudeCommand.WithAttitude(Attitude, ReferenceFrame.TargetVelocity); break; case ComputerMode.Custom: mAttitude = FlightAttitude.Null; newCommand = AttitudeCommand.WithSurface(Pitch, Heading, Roll); break; } mFlightComputer.Enqueue(newCommand); }