コード例 #1
0
        /// <summary>
        /// loads a preset into the controllers of a PA instance
        /// </summary>
        /// <param name="p">the preset to load</param>
        /// <param name="asstInstance">the PA instance to load to</param>
        public static void LoadAsstPreset(AsstPreset p, PilotAssistant asstInstance)
        {
            if (ReferenceEquals(p, null))
            {
                return;
            }

            Asst_PID_Controller[] c = asstInstance.controllers;
            for (int i = 0; i < 8; i++)
            {
                c[i].K_proportional     = p.PIDGains[i][0];
                c[i].K_integral         = p.PIDGains[i][1];
                c[i].K_derivative       = p.PIDGains[i][2];
                c[i].OutMin             = p.PIDGains[i][3];
                c[i].OutMax             = p.PIDGains[i][4];
                c[i].IntegralClampLower = p.PIDGains[i][5];
                c[i].IntegralClampUpper = p.PIDGains[i][6];
                c[i].Scalar             = p.PIDGains[i][7];
                c[i].Easing             = p.PIDGains[i][8];
            }

            asstInstance.activePreset = p;
            GeneralUI.PostMessage("Loaded preset " + p.name);

            if (asstInstance.activePreset.name != Instance.craftPresetDict[craftDefaultName])
            {
                Instance.UpdateCraftPreset(asstInstance.activePreset, asstInstance.vesModule.Vessel);
            }

            SaveToFile();
        }
コード例 #2
0
        /// <summary>
        /// remove a preset from the stored list and remove any references to it on active vessels
        /// </summary>
        /// <param name="p"></param>
        public void DeleteAsstPreset(AsstPreset p)
        {
            GeneralUI.PostMessage("Deleted preset " + p.name);
            foreach (AsstVesselModule avm in PilotAssistantFlightCore.Instance.controlledVessels)
            {
                if (avm.vesselAsst.activePreset == p)
                {
                    avm.vesselAsst.activePreset = null;
                }
            }
            var toRemove = new List <string>();

            foreach (KeyValuePair <string, string> kvp in craftPresetDict)
            {
                if (kvp.Value == p.name)
                {
                    toRemove.Add(kvp.Key);
                }
            }
            foreach (string s in toRemove)
            {
                craftPresetDict.Remove(s);
            }

            AsstPresetList.Remove(p);

            p = null;

            SaveToFile();
        }
コード例 #3
0
        /// <summary>
        /// Creates a preset from an array of controllers. Can't access Asst controllers directly because more than one instance can be active
        /// </summary>
        /// <param name="name">preset name</param>
        /// <param name="controllers">controllers to build from</param>
        /// <param name="v">vessel to associate with</param>
        public static bool NewAsstPreset(string name, Asst_PID_Controller[] controllers, Vessel v)
        {
            if (string.IsNullOrEmpty(name))
            {
                return(false);
            }

            if (Instance.AsstPresetList.Any(p => p.name == name))
            {
                GeneralUI.PostMessage("Failed to add preset with duplicate name");
                return(false);
            }
            var newPreset = new AsstPreset(controllers, name);

            Instance.UpdateCraftPreset(newPreset, v);
            Instance.AsstPresetList.Add(newPreset);
            SaveToFile();

            return(true); // new preset created successfully, can clear the string
        }