void tune_at_pid_fast(Config.CascadeConfigFast cfg, float AV, float AM, float MaxAA, float iMaxAA, float iErr)
            {
                var atP_iErr = Mathf.Pow(Utils.ClampL(iErr - cfg.atP_ErrThreshold, 0), cfg.atP_ErrCurve);

                if (MaxAA >= 1)
                {
                    atPID.P = Utils.ClampH(1
                                           + cfg.atP_HighAA_Scale * Mathf.Pow(MaxAA, cfg.atP_HighAA_Curve)
                                           + atP_iErr, cfg.atP_HighAA_Max);
                    atPID.D = cfg.atD_HighAA_Scale * Mathf.Pow(iMaxAA, cfg.atD_HighAA_Curve) * Utils.ClampH(iErr + Mathf.Abs(AM), 1.2f);
                }
                else
                {
                    atPID.P = (1
                               + cfg.atP_LowAA_Scale * Mathf.Pow(MaxAA, cfg.atP_LowAA_Curve)
                               + atP_iErr);
                    atPID.D = cfg.atD_LowAA_Scale * Mathf.Pow(iMaxAA, cfg.atD_LowAA_Curve) * Utils.ClampH(iErr + Mathf.Abs(AM), 1.2f);
                }
                var atI_iErr = Utils.ClampL(iErr - C.FastConfig.atI_ErrThreshold, 0);

                if (atI_iErr <= 0 || AV < 0)
                {
                    atPID.I             = 0;
                    atPID.IntegralError = 0;
                }
                else
                {
                    atI_iErr = Mathf.Pow(atI_iErr, cfg.atI_ErrCurve);
                    atPID.I  = cfg.atI_Scale * MaxAA * atI_iErr / (1 + Utils.ClampL(AV, 0) * cfg.atI_AV_Scale * atI_iErr);
                }
            }
 void tune_av_pid_fast(Config.CascadeConfigFast cfg, float MaxAA)
 {
     avPID.P = Utils.ClampL(cfg.avP_MaxAA_Intersect -
                            cfg.avP_MaxAA_Inclination * Mathf.Pow(MaxAA, cfg.avP_MaxAA_Curve),
                            cfg.avP_Min);
     avPID.I = cfg.avI_Scale * avPID.P;
     avPID.D = 0;
 }