コード例 #1
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();
        }
コード例 #2
0
        public static void loadPAPreset(AsstPreset p)
        {
            PID_Controller[] c = PilotAssistant.controllers;

            for (int i = 0; i < 8; i++)
            {
                c[i].PGain      = p.PIDGains[i][0];
                c[i].IGain      = p.PIDGains[i][1];
                c[i].DGain      = p.PIDGains[i][2];
                c[i].OutMin     = p.PIDGains[i][3];
                c[i].OutMax     = p.PIDGains[i][4];
                c[i].ClampLower = p.PIDGains[i][5];
                c[i].ClampUpper = p.PIDGains[i][6];
                c[i].Scalar     = p.PIDGains[i][7];
            }

            Instance.activePAPreset = p;
            Messaging.postMessage("Loaded preset " + p.name);

            if (Instance.craftPresetList.ContainsKey(FlightData.thisVessel.vesselName) && Instance.activePAPreset != Instance.craftPresetList[craftDefault].AsstPreset)
            {
                Instance.craftPresetList[FlightData.thisVessel.vesselName].AsstPreset = Instance.activePAPreset;
            }
            else if (!Instance.craftPresetList.ContainsKey(FlightData.thisVessel.vesselName) && Instance.activePAPreset != Instance.craftPresetList[craftDefault].AsstPreset)
            {
                Instance.craftPresetList.Add(FlightData.thisVessel.vesselName,
                                             new CraftPreset(FlightData.thisVessel.vesselName,
                                                             Instance.activePAPreset == Instance.craftPresetList[craftDefault].AsstPreset ? null : Instance.activePAPreset,
                                                             Instance.activeSASPreset == Instance.craftPresetList[craftDefault].SSASPreset ? null : Instance.activeSASPreset,
                                                             Instance.activeStockSASPreset == Instance.craftPresetList[craftDefault].StockPreset ? null : Instance.activeStockSASPreset,
                                                             SurfSAS.Instance.bStockSAS));
            }
            saveToFile();
        }
コード例 #3
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();
        }
コード例 #4
0
        public static void loadAsstPreset(AsstPreset p, PilotAssistant instance)
        {
            AsstController[] c = instance.controllers;
            for (int i = 0; i < 8; i++)
            {
                c[i].PGain      = p.PIDGains[i][0];
                c[i].IGain      = p.PIDGains[i][1];
                c[i].DGain      = p.PIDGains[i][2];
                c[i].OutMin     = p.PIDGains[i][3];
                c[i].OutMax     = p.PIDGains[i][4];
                c[i].ClampLower = p.PIDGains[i][5];
                c[i].ClampUpper = p.PIDGains[i][6];
                c[i].Scalar     = p.PIDGains[i][7];
                c[i].Easing     = p.PIDGains[i][8];
            }

            Instance.activeAsstPreset = p;
            GeneralUI.postMessage("Loaded preset " + p.name);

            if (Instance.activeAsstPreset != Instance.craftPresetDict[craftDefaultName].AsstPreset)
            {
                updateCraftPreset(Instance.activeAsstPreset, instance.vesModule.vesselRef);
            }
            saveToFile();
        }
コード例 #5
0
        /// <summary>
        /// updates the craft/preset references
        /// </summary>
        /// <param name="p">preset</param>
        /// <param name="v">craft</param>
        public void UpdateCraftPreset(AsstPreset p, Vessel v)
        {
            if (!Instance.craftPresetDict.ContainsKey(v.vesselName))
            {
                craftPresetDict.Add(v.vesselName, string.Empty);
            }

            Instance.craftPresetDict[v.vesselName] = p.name;
        }
コード例 #6
0
 public static void initDefaultPresets(AsstPreset p)
 {
     initDefaultPresets();
     if (ReferenceEquals(Instance.craftPresetDict[craftDefaultName].AsstPreset, null))
     {
         Instance.craftPresetDict[craftDefaultName].AsstPreset = p;
     }
     PresetManager.saveDefaults();
 }
コード例 #7
0
 public void InitDefaultPreset(AsstPreset p)
 {
     if (!craftPresetDict.TryGetValue(craftDefaultName, out string defaultName) || defaultName == string.Empty)
     {
         AsstPresetList.Add(p);
         Instance.craftPresetDict[craftDefaultName] = p.name;
     }
     SaveToFile();
     // loadAsstPreset(Instance.craftPresetDict[craftDefaultName], instance);
 }
コード例 #8
0
        public static void deletePAPreset(AsstPreset p)
        {
            Messaging.postMessage("Deleted preset " + p.name);
            if (Instance.activePAPreset == p)
            {
                Instance.activePAPreset = null;
            }
            Instance.PAPresetList.Remove(p);

            p = null;

            saveToFile();
        }
コード例 #9
0
        public static ConfigNode PIDnode(string name, int index, AsstPreset preset)
        {
            ConfigNode node = new ConfigNode(name);

            node.AddValue(pGain, preset.PIDGains[index][0]);
            node.AddValue(iGain, preset.PIDGains[index][1]);
            node.AddValue(dGain, preset.PIDGains[index][2]);
            node.AddValue(min, preset.PIDGains[index][3]);
            node.AddValue(max, preset.PIDGains[index][4]);
            node.AddValue(iLower, preset.PIDGains[index][5]);
            node.AddValue(iUpper, preset.PIDGains[index][6]);
            node.AddValue(scalar, preset.PIDGains[index][7]);
            return(node);
        }
コード例 #10
0
        public static ConfigNode PAPresetNode(AsstPreset preset)
        {
            ConfigNode node = new ConfigNode(asstPreset);

            node.AddValue("name", preset.name);
            node.AddNode(PIDnode(hdgCtrlr, (int)PIDList.HdgBank, preset));
            node.AddNode(PIDnode(yawCtrlr, (int)PIDList.HdgYaw, preset));
            node.AddNode(PIDnode(aileronCtrlr, (int)PIDList.Aileron, preset));
            node.AddNode(PIDnode(rudderCtrlr, (int)PIDList.Rudder, preset));
            node.AddNode(PIDnode(altCtrlr, (int)PIDList.Altitude, preset));
            node.AddNode(PIDnode(vertCtrlr, (int)PIDList.VertSpeed, preset));
            node.AddNode(PIDnode(elevCtrlr, (int)PIDList.Elevator, preset));
            node.AddNode(PIDnode(throttleCtrlr, (int)PIDList.Throttle, preset));

            return(node);
        }
コード例 #11
0
        public static ConfigNode AsstPresetNode(AsstPreset preset)
        {
            ConfigNode node = new ConfigNode(asstPresetNodeName);

            node.AddValue("name", preset.name);
            node.AddNode(PIDnode(hdgCtrlr, (int)AsstList.HdgBank, preset));
            node.AddNode(PIDnode(yawCtrlr, (int)AsstList.BankToYaw, preset));
            node.AddNode(PIDnode(aileronCtrlr, (int)AsstList.Aileron, preset));
            node.AddNode(PIDnode(rudderCtrlr, (int)AsstList.Rudder, preset));
            node.AddNode(PIDnode(altCtrlr, (int)AsstList.Altitude, preset));
            node.AddNode(PIDnode(vertCtrlr, (int)AsstList.VertSpeed, preset));
            node.AddNode(PIDnode(elevCtrlr, (int)AsstList.Elevator, preset));
            node.AddNode(PIDnode(speedCtrlr, (int)AsstList.Speed, preset));
            node.AddNode(PIDnode(accelCtrlr, (int)AsstList.Acceleration, preset));

            return(node);
        }
コード例 #12
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
        }
コード例 #13
0
        public static void newAsstPreset(ref string name, AsstController[] controllers, Vessel v)
        {
            if (string.IsNullOrEmpty(name))
            {
                return;
            }

            string tempName = name;

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

            updateCraftPreset(newPreset, v);
            Instance.AsstPresetList.Add(newPreset);
            Instance.activeAsstPreset = PresetManager.Instance.AsstPresetList.Last();
            saveToFile();
            name = "";
        }
コード例 #14
0
 /// <summary>
 /// updates the craft/preset references
 /// </summary>
 /// <param name="p">preset</param>
 /// <param name="v">craft</param>
 public void updateCraftPreset(AsstPreset p, Vessel v)
 {
     if (!Instance.craftPresetDict.ContainsKey(v.vesselName))
         craftPresetDict.Add(v.vesselName, string.Empty);
     Instance.craftPresetDict[v.vesselName] = p.name;
 }
コード例 #15
0
 public void initDefaultPreset(AsstPreset p)
 {
     string defaultName;
     if (!craftPresetDict.TryGetValue(craftDefaultName, out defaultName) || defaultName == string.Empty)
     {
         AsstPresetList.Add(p);
         Instance.craftPresetDict[craftDefaultName] = p.name;
     }
     saveToFile();
     // loadAsstPreset(Instance.craftPresetDict[craftDefaultName], instance);
 }
コード例 #16
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;
            }
            List<string> 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();
        }
コード例 #17
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;
            }
            AsstPreset newPreset = new AsstPreset(controllers, name);
            Instance.updateCraftPreset(newPreset, v);
            Instance.AsstPresetList.Add(newPreset);
            saveToFile();

            return true; // new preset created successfully, can clear the string
        }
コード例 #18
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();
        }
コード例 #19
0
        public static void newAsstPreset(ref string name, AsstController[] controllers, Vessel v)
        {
            if (string.IsNullOrEmpty(name))
                return;

            string tempName = name;
            if (Instance.AsstPresetList.Any(p => p.name == tempName))
            {
                GeneralUI.postMessage("Failed to add preset with duplicate name");
                return;
            }
            AsstPreset newPreset = new AsstPreset(controllers, name);
            updateCraftPreset(newPreset, v);
            Instance.AsstPresetList.Add(newPreset);
            Instance.activeAsstPreset = PresetManager.Instance.AsstPresetList.Last();
            saveToFile();
            name = "";
        }
コード例 #20
0
        public static void loadAsstPreset(AsstPreset p, PilotAssistant instance)
        {
            AsstController[] c = instance.controllers;
            for (int i = 0; i < 8; i++)
            {
                c[i].PGain = p.PIDGains[i][0];
                c[i].IGain = p.PIDGains[i][1];
                c[i].DGain = p.PIDGains[i][2];
                c[i].OutMin = p.PIDGains[i][3];
                c[i].OutMax = p.PIDGains[i][4];
                c[i].ClampLower = p.PIDGains[i][5];
                c[i].ClampUpper = p.PIDGains[i][6];
                c[i].Scalar = p.PIDGains[i][7];
                c[i].Easing = p.PIDGains[i][8];
            }

            Instance.activeAsstPreset = p;
            GeneralUI.postMessage("Loaded preset " + p.name);

            if (Instance.activeAsstPreset != Instance.craftPresetDict[craftDefaultName].AsstPreset)
                updateCraftPreset(Instance.activeAsstPreset, instance.vesModule.vesselRef);
            saveToFile();
        }
コード例 #21
0
        public static void loadPresetsFromFile()
        {
            AsstPreset asst = null;
            SASPreset  SSAS = null, stock = null;

            foreach (ConfigNode node in GameDatabase.Instance.GetConfigNodes(asstPreset))
            {
                if (node == null)
                {
                    continue;
                }

                List <double[]> gains = new List <double[]>();
                gains.Add(controllerGains(node.GetNode(hdgCtrlr), PIDList.HdgBank));
                gains.Add(controllerGains(node.GetNode(yawCtrlr), PIDList.HdgYaw));
                gains.Add(controllerGains(node.GetNode(aileronCtrlr), PIDList.Aileron));
                gains.Add(controllerGains(node.GetNode(rudderCtrlr), PIDList.Rudder));
                gains.Add(controllerGains(node.GetNode(altCtrlr), PIDList.Altitude));
                gains.Add(controllerGains(node.GetNode(vertCtrlr), PIDList.VertSpeed));
                gains.Add(controllerGains(node.GetNode(elevCtrlr), PIDList.Elevator));
                gains.Add(controllerGains(node.GetNode(throttleCtrlr), PIDList.Throttle));

                if (node.GetValue("name") != craftDefault && !instance.PAPresetList.Any(p => p.name == node.GetValue("name")))
                {
                    instance.PAPresetList.Add(new AsstPreset(gains, node.GetValue("name")));
                }
                else if (node.GetValue("name") == asstDefault)
                {
                    asst = new AsstPreset(gains, node.GetValue("name"));
                }
            }

            foreach (ConfigNode node in GameDatabase.Instance.GetConfigNodes(sasPreset))
            {
                if (node == null)
                {
                    continue;
                }

                List <double[]> gains = new List <double[]>();
                gains.Add(controllerSASGains(node.GetNode(elevCtrlr), SASList.Pitch));
                gains.Add(controllerSASGains(node.GetNode(aileronCtrlr), SASList.Roll));
                gains.Add(controllerSASGains(node.GetNode(rudderCtrlr), SASList.Yaw));

                if ((node.GetValue("name") != ssasDefault && node.GetValue("name") != stockDefault) && !instance.SASPresetList.Any(p => p.name == node.GetValue("name")))
                {
                    instance.SASPresetList.Add(new SASPreset(gains, node.GetValue("name"), bool.Parse(node.GetValue("stock"))));
                }
                else
                {
                    if (node.GetValue("name") == ssasDefault)
                    {
                        SSAS = new SASPreset(gains, node.GetValue("name"), false);
                    }
                    else if (node.GetValue("name") == stockDefault)
                    {
                        stock = new SASPreset(gains, node.GetValue("name"), true);
                    }
                }
            }

            foreach (ConfigNode node in GameDatabase.Instance.GetConfigNodes(craftPreset))
            {
                if (node == null || instance.craftPresetList.ContainsKey(node.GetValue("name")))
                {
                    continue;
                }

                bool bStock;
                bool.TryParse(node.GetValue(craftSasMode), out bStock);

                if (node.GetValue("name") == craftDefault)
                {
                    instance.craftPresetList.Add(craftDefault, new CraftPreset(craftDefault, asst, SSAS, stock, bStock));
                }
                else
                {
                    CraftPreset cP = new CraftPreset(node.GetValue("name"),
                                                     instance.PAPresetList.FirstOrDefault(p => p.name == node.GetValue(craftAsst)),
                                                     instance.SASPresetList.FirstOrDefault(p => p.name == node.GetValue(craftSSAS)),
                                                     instance.SASPresetList.FirstOrDefault(p => p.name == node.GetValue(craftStock)),
                                                     bStock);

                    instance.craftPresetList.Add(cP.Name, cP);
                }
            }
        }
コード例 #22
0
        public static void loadPresetsFromFile()
        {
            AsstPreset asstDefault = null;
            SASPreset  SASDefault  = null;
            SSASPreset SSASDefault = null;
            RSASPreset RSASDefault = null;

            foreach (ConfigNode node in GameDatabase.Instance.GetConfigNodes(asstPresetNodeName))
            {
                if (ReferenceEquals(node, null))
                {
                    continue;
                }

                List <double[]> gains = new List <double[]>();
                gains.Add(controllerGains(node.GetNode(hdgCtrlr), AsstList.HdgBank));
                gains.Add(controllerGains(node.GetNode(yawCtrlr), AsstList.BankToYaw));
                gains.Add(controllerGains(node.GetNode(aileronCtrlr), AsstList.Aileron));
                gains.Add(controllerGains(node.GetNode(rudderCtrlr), AsstList.Rudder));
                gains.Add(controllerGains(node.GetNode(altCtrlr), AsstList.Altitude));
                gains.Add(controllerGains(node.GetNode(vertCtrlr), AsstList.VertSpeed));
                gains.Add(controllerGains(node.GetNode(elevCtrlr), AsstList.Elevator));
                gains.Add(controllerGains(node.GetNode(speedCtrlr), AsstList.Speed));
                gains.Add(controllerGains(node.GetNode(accelCtrlr), AsstList.Acceleration));

                string name = node.GetValue("name");
                if (name == asstDefaultName)
                {
                    asstDefault = new AsstPreset(gains, name);
                }
                else if (!instance.AsstPresetList.Any(p => p.name == name))
                {
                    instance.AsstPresetList.Add(new AsstPreset(gains, name));
                }
            }

            foreach (ConfigNode node in GameDatabase.Instance.GetConfigNodes(sasPresetNodeName))
            {
                if (ReferenceEquals(node, null) || node.GetValue("stock") == "false")
                {
                    continue;
                }

                List <double[]> gains = new List <double[]>();
                gains.Add(controllerSASGains(node.GetNode(elevCtrlr), SASList.Pitch));
                gains.Add(controllerSASGains(node.GetNode(aileronCtrlr), SASList.Bank));
                gains.Add(controllerSASGains(node.GetNode(rudderCtrlr), SASList.Hdg));

                string name = node.GetValue("name");
                if (name == SASDefaultName)
                {
                    SASDefault = new SASPreset(gains, name);
                }
                else if (!instance.SASPresetList.Any(p => p.name == name))
                {
                    instance.SASPresetList.Add(new SASPreset(gains, name));
                }
            }

            foreach (ConfigNode node in GameDatabase.Instance.GetConfigNodes(ssasPresetNodeName))
            {
                if (ReferenceEquals(node, null))
                {
                    continue;
                }

                List <double[]> gains = new List <double[]>();
                gains.Add(controllerSASGains(node.GetNode(elevCtrlr), SASList.Pitch));
                gains.Add(controllerSASGains(node.GetNode(aileronCtrlr), SASList.Bank));
                gains.Add(controllerSASGains(node.GetNode(rudderCtrlr), SASList.Hdg));

                string name = node.GetValue("name");
                if (name == ssasDefaultName)
                {
                    SSASDefault = new SSASPreset(gains, name);
                }
                else if (!instance.SSASPresetList.Any(p => p.name == name))
                {
                    instance.SSASPresetList.Add(new SSASPreset(gains, name));
                }
            }

            foreach (ConfigNode node in GameDatabase.Instance.GetConfigNodes(rsasPresetNodeName))
            {
                if (ReferenceEquals(node, null))
                {
                    continue;
                }

                List <double[]> gains = new List <double[]>();
                gains.Add(controllerSASGains(node.GetNode(elevCtrlr), SASList.Pitch));
                gains.Add(controllerSASGains(node.GetNode(aileronCtrlr), SASList.Bank));
                gains.Add(controllerSASGains(node.GetNode(rudderCtrlr), SASList.Hdg));

                string name = node.GetValue("name");
                if (name == RSASDefaultName)
                {
                    RSASDefault = new RSASPreset(gains, name);
                }
                else if (!instance.RSASPresetList.Any(p => p.name == name))
                {
                    instance.RSASPresetList.Add(new RSASPreset(gains, name));
                }
            }

            foreach (ConfigNode node in GameDatabase.Instance.GetConfigNodes(craftPresetNodeName))
            {
                if (ReferenceEquals(node, null) || instance.craftPresetDict.ContainsKey(node.GetValue("name")))
                {
                    continue;
                }

                string name = node.GetValue("name");
                if (name == craftDefaultName)
                {
                    instance.craftPresetDict.Add(craftDefaultName, new CraftPreset(craftDefaultName, asstDefault, SSASDefault, SASDefault, RSASDefault));
                }
                else
                {
                    CraftPreset cP = new CraftPreset(name,
                                                     instance.AsstPresetList.FirstOrDefault(p => p.name == node.GetValue(craftAsstKey)),
                                                     instance.SSASPresetList.FirstOrDefault(p => p.name == node.GetValue(craftSSASKey)),
                                                     instance.SASPresetList.FirstOrDefault(p => p.name == node.GetValue(craftSASKey)),
                                                     instance.RSASPresetList.FirstOrDefault(p => p.name == node.GetValue(craftRSASKey)));

                    instance.craftPresetDict.Add(cP.Name, cP);
                }
            }
        }
コード例 #23
0
 public static void updateCraftPreset(AsstPreset p, Vessel v)
 {
     initCraftPreset(v);
     Instance.craftPresetDict[v.vesselName].AsstPreset = p;
 }
コード例 #24
0
 /// <summary>
 /// Sets the current active PA preset to be the default
 /// </summary>
 public void updateDefaultAsstPreset(AsstPreset preset)
 {
     craftPresetDict[craftDefaultName] = preset.name;
     saveToFile();
 }
コード例 #25
0
 public static void initDefaultPresets(AsstPreset p)
 {
     initDefaultPresets();
     if (ReferenceEquals(Instance.craftPresetDict[craftDefaultName].AsstPreset, null))
         Instance.craftPresetDict[craftDefaultName].AsstPreset = p;
     PresetManager.saveDefaults();
 }
コード例 #26
0
        /// <summary>
        /// Turns a PA preset into a config node holding nodes of all its controllers
        /// </summary>
        /// <param name="preset">preset to process</param>
        /// <returns>config node holding all PA controller values</returns>
        public static ConfigNode AsstPresetToNode(AsstPreset preset)
        {
            ConfigNode node = new ConfigNode(asstPresetNodeName);
            node.AddValue("name", preset.name);
            node.AddNode(gainsArrayToNode(hdgCtrlr, (int)AsstList.HdgBank, preset));
            node.AddNode(gainsArrayToNode(yawCtrlr, (int)AsstList.BankToYaw, preset));
            node.AddNode(gainsArrayToNode(aileronCtrlr, (int)AsstList.Aileron, preset));
            node.AddNode(gainsArrayToNode(rudderCtrlr, (int)AsstList.Rudder, preset));
            node.AddNode(gainsArrayToNode(altCtrlr, (int)AsstList.Altitude, preset));
            node.AddNode(gainsArrayToNode(vertCtrlr, (int)AsstList.VertSpeed, preset));
            node.AddNode(gainsArrayToNode(elevCtrlr, (int)AsstList.Elevator, preset));
            node.AddNode(gainsArrayToNode(speedCtrlr, (int)AsstList.Speed, preset));
            node.AddNode(gainsArrayToNode(accelCtrlr, (int)AsstList.Acceleration, preset));

            return node;
        }
コード例 #27
0
 /// <summary>
 /// Processes an array of gains into a Config node ready to be saved
 /// </summary>
 /// <param name="name">Node name</param>
 /// <param name="index">index of the array in the preset storage</param>
 /// <param name="preset">object to source the array from</param>
 /// <returns>A config node holding the gains for a controller</returns>
 public static ConfigNode gainsArrayToNode(string name, int index, AsstPreset preset)
 {
     ConfigNode node = new ConfigNode(name);
     node.AddValue(pGain, preset.PIDGains[index][0]);
     node.AddValue(iGain, preset.PIDGains[index][1]);
     node.AddValue(dGain, preset.PIDGains[index][2]);
     node.AddValue(min, preset.PIDGains[index][3]);
     node.AddValue(max, preset.PIDGains[index][4]);
     node.AddValue(iLower, preset.PIDGains[index][5]);
     node.AddValue(iUpper, preset.PIDGains[index][6]);
     node.AddValue(scalar, preset.PIDGains[index][7]);
     node.AddValue(ease, preset.PIDGains[index][8]);
     return node;
 }
コード例 #28
0
 public static void updateCraftPreset(AsstPreset p, Vessel v)
 {
     initCraftPreset(v);
     Instance.craftPresetDict[v.vesselName].AsstPreset = p;
 }
コード例 #29
0
        public static void loadPresetsFromFile()
        {
            AsstPreset asstDefault = null;
            SASPreset SASDefault = null;
            SSASPreset SSASDefault = null;
            RSASPreset RSASDefault = null;

            foreach (ConfigNode node in GameDatabase.Instance.GetConfigNodes(asstPresetNodeName))
            {
                if (ReferenceEquals(node, null))
                    continue;

                List<double[]> gains = new List<double[]>();
                gains.Add(controllerGains(node.GetNode(hdgCtrlr), AsstList.HdgBank));
                gains.Add(controllerGains(node.GetNode(yawCtrlr), AsstList.BankToYaw));
                gains.Add(controllerGains(node.GetNode(aileronCtrlr), AsstList.Aileron));
                gains.Add(controllerGains(node.GetNode(rudderCtrlr), AsstList.Rudder));
                gains.Add(controllerGains(node.GetNode(altCtrlr), AsstList.Altitude));
                gains.Add(controllerGains(node.GetNode(vertCtrlr), AsstList.VertSpeed));
                gains.Add(controllerGains(node.GetNode(elevCtrlr), AsstList.Elevator));
                gains.Add(controllerGains(node.GetNode(speedCtrlr), AsstList.Speed));
                gains.Add(controllerGains(node.GetNode(accelCtrlr), AsstList.Acceleration));

                string name = node.GetValue("name");
                if (name == asstDefaultName)
                    asstDefault = new AsstPreset(gains, name);
                else if (!instance.AsstPresetList.Any(p => p.name == name))
                    instance.AsstPresetList.Add(new AsstPreset(gains, name));
            }

            foreach (ConfigNode node in GameDatabase.Instance.GetConfigNodes(sasPresetNodeName))
            {
                if (ReferenceEquals(node, null) || node.GetValue("stock") == "false")
                    continue;

                List<double[]> gains = new List<double[]>();
                gains.Add(controllerSASGains(node.GetNode(elevCtrlr), SASList.Pitch));
                gains.Add(controllerSASGains(node.GetNode(aileronCtrlr), SASList.Bank));
                gains.Add(controllerSASGains(node.GetNode(rudderCtrlr), SASList.Hdg));

                string name = node.GetValue("name");
                if (name == SASDefaultName)
                    SASDefault = new SASPreset(gains, name);
                else if (!instance.SASPresetList.Any(p => p.name == name))
                    instance.SASPresetList.Add(new SASPreset(gains, name));
            }

            foreach (ConfigNode node in GameDatabase.Instance.GetConfigNodes(ssasPresetNodeName))
            {
                if (ReferenceEquals(node, null))
                    continue;

                List<double[]> gains = new List<double[]>();
                gains.Add(controllerSASGains(node.GetNode(elevCtrlr), SASList.Pitch));
                gains.Add(controllerSASGains(node.GetNode(aileronCtrlr), SASList.Bank));
                gains.Add(controllerSASGains(node.GetNode(rudderCtrlr), SASList.Hdg));

                string name = node.GetValue("name");
                if (name == ssasDefaultName)
                    SSASDefault = new SSASPreset(gains, name);
                else if (!instance.SSASPresetList.Any(p => p.name == name))
                    instance.SSASPresetList.Add(new SSASPreset(gains, name));
            }

            foreach (ConfigNode node in GameDatabase.Instance.GetConfigNodes(rsasPresetNodeName))
            {
                if (ReferenceEquals(node, null))
                    continue;

                List<double[]> gains = new List<double[]>();
                gains.Add(controllerSASGains(node.GetNode(elevCtrlr), SASList.Pitch));
                gains.Add(controllerSASGains(node.GetNode(aileronCtrlr), SASList.Bank));
                gains.Add(controllerSASGains(node.GetNode(rudderCtrlr), SASList.Hdg));

                string name = node.GetValue("name");
                if (name == RSASDefaultName)
                    RSASDefault = new RSASPreset(gains, name);
                else if (!instance.RSASPresetList.Any(p => p.name == name))
                    instance.RSASPresetList.Add(new RSASPreset(gains, name));
            }

            foreach (ConfigNode node in GameDatabase.Instance.GetConfigNodes(craftPresetNodeName))
            {
                if (ReferenceEquals(node, null) || instance.craftPresetDict.ContainsKey(node.GetValue("name")))
                    continue;

                string name = node.GetValue("name");
                if (name == craftDefaultName)
                    instance.craftPresetDict.Add(craftDefaultName, new CraftPreset(craftDefaultName, asstDefault, SSASDefault, SASDefault, RSASDefault));
                else
                {
                    CraftPreset cP = new CraftPreset(name,
                                            instance.AsstPresetList.FirstOrDefault(p => p.name == node.GetValue(craftAsstKey)),
                                            instance.SSASPresetList.FirstOrDefault(p => p.name == node.GetValue(craftSSASKey)),
                                            instance.SASPresetList.FirstOrDefault(p => p.name == node.GetValue(craftSASKey)),
                                            instance.RSASPresetList.FirstOrDefault(p => p.name == node.GetValue(craftRSASKey)));

                    instance.craftPresetDict.Add(cP.Name, cP);
                }
            }
        }
コード例 #30
0
ファイル: CraftPreset.cs プロジェクト: dhuth/Pilot-Assistant
 public CraftPreset(string Name, AsstPreset PA)
 {
     name = Name;
     pa   = PA;
 }
コード例 #31
0
        public static void deleteAsstPreset(AsstPreset p)
        {
            GeneralUI.postMessage("Deleted preset " + p.name);
            if (Instance.activeAsstPreset == p)
                Instance.activeAsstPreset = null;
            Instance.AsstPresetList.Remove(p);

            p = null;

            saveToFile();
        }
コード例 #32
0
 public CraftPreset(string Name, AsstPreset PA)
 {
     name = Name;
     pa = PA;
 }
コード例 #33
0
 /// <summary>
 /// Sets the current active PA preset to be the default
 /// </summary>
 public void UpdateDefaultAsstPreset(AsstPreset preset)
 {
     craftPresetDict[craftDefaultName] = preset.name;
     SaveToFile();
 }