/// <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(); }
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(); }
/// <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(); }
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(); }
/// <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; }
public static void initDefaultPresets(AsstPreset p) { initDefaultPresets(); if (ReferenceEquals(Instance.craftPresetDict[craftDefaultName].AsstPreset, null)) { Instance.craftPresetDict[craftDefaultName].AsstPreset = p; } PresetManager.saveDefaults(); }
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); }
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(); }
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); }
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); }
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); }
/// <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 }
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 = ""; }
/// <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; }
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); }
/// <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(); }
/// <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 }
/// <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(); }
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 = ""; }
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(); }
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); } } }
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); } } }
public static void updateCraftPreset(AsstPreset p, Vessel v) { initCraftPreset(v); Instance.craftPresetDict[v.vesselName].AsstPreset = p; }
/// <summary> /// Sets the current active PA preset to be the default /// </summary> public void updateDefaultAsstPreset(AsstPreset preset) { craftPresetDict[craftDefaultName] = preset.name; saveToFile(); }
public static void initDefaultPresets(AsstPreset p) { initDefaultPresets(); if (ReferenceEquals(Instance.craftPresetDict[craftDefaultName].AsstPreset, null)) Instance.craftPresetDict[craftDefaultName].AsstPreset = p; PresetManager.saveDefaults(); }
/// <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; }
/// <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; }
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); } } }
public CraftPreset(string Name, AsstPreset PA) { name = Name; pa = PA; }
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(); }
/// <summary> /// Sets the current active PA preset to be the default /// </summary> public void UpdateDefaultAsstPreset(AsstPreset preset) { craftPresetDict[craftDefaultName] = preset.name; SaveToFile(); }