public void Update(Asst_PID_Controller[] controllers)
        {
            PIDGains.Clear();
            foreach (Asst_PID_Controller controller in controllers)
            {
                double[] gains = new double[9];
                gains[0] = controller.k_proportional;
                gains[1] = controller.k_integral;
                gains[2] = controller.k_derivative;
                gains[3] = controller.outMin;
                gains[4] = controller.outMax;
                gains[5] = controller.integralClampLower;
                gains[6] = controller.integralClampUpper;
                gains[7] = controller.Scalar;
                gains[8] = controller.Easing;

                PIDGains.Add(gains);
            }
        }
 private bool controllerVisible(Asst_PID_Controller controller)
 {
     if (!controller.bShow)
         return false;
     switch (controller.ctrlID)
     {
         case AsstList.HdgBank:
         case AsstList.BankToYaw:
             return bShowHdg && CurrentHrztMode != HrztMode.Bank;
         case AsstList.Aileron:
         case AsstList.Rudder:
             return bShowHdg && showControlSurfaces;
         case AsstList.Altitude:
             return bShowVert && (CurrentVertMode == VertMode.Altitude || CurrentVertMode == VertMode.RadarAltitude);
         case AsstList.VertSpeed:
             return bShowVert;
         case AsstList.Elevator:
             return bShowVert && showControlSurfaces;
         case AsstList.Speed:
             return bShowThrottle && CurrentThrottleMode == ThrottleMode.Speed;
         case AsstList.Acceleration:
             return bShowThrottle && CurrentThrottleMode != ThrottleMode.Direct;
         default:
             return true;
     }
 }
 // used for adding a new preset, can clone the current values
 public AsstPreset(Asst_PID_Controller[] controllers, string Name)
 {
     name = Name;
     Update(controllers);
 }