private void drawPIDvalues(PIDList controllerid, string inputName, string inputUnits, double inputValue, int displayPrecision, string outputName, string outputUnits, bool invertOutput = false, bool showTarget = true, bool doublesided = true) { PID_Controller controller = Utils.GetAsst(controllerid); controller.bShow = GUILayout.Toggle(controller.bShow, string.Format("{0}: {1}{2}", inputName, inputValue.ToString("N" + displayPrecision.ToString()), inputUnits), GeneralUI.toggleButton, GUILayout.Width(window.width - 50)); if (controller.bShow) { if (showTarget) { GUILayout.Label(string.Format("Target: ", inputName) + controller.SetPoint.ToString("N" + displayPrecision.ToString()) + inputUnits); } GUILayout.BeginHorizontal(); GUILayout.BeginVertical(); controller.PGain = GeneralUI.labPlusNumBox(string.Format("Kp:", inputName), controller.PGain.ToString("G3"), 45); controller.IGain = GeneralUI.labPlusNumBox(string.Format("Ki:", inputName), controller.IGain.ToString("G3"), 45); controller.DGain = GeneralUI.labPlusNumBox(string.Format("Kd:", inputName), controller.DGain.ToString("G3"), 45); controller.Scalar = GeneralUI.labPlusNumBox(string.Format("Scalar:", inputName), controller.Scalar.ToString("G3"), 45); if (showPIDLimits) { GUILayout.EndVertical(); GUILayout.BeginVertical(); if (!invertOutput) { controller.OutMax = GeneralUI.labPlusNumBox(string.Format("Max {0}{1}:", outputName, outputUnits), controller.OutMax.ToString("G3")); if (doublesided) { controller.OutMin = GeneralUI.labPlusNumBox(string.Format("Min {0}{1}:", outputName, outputUnits), controller.OutMin.ToString("G3")); } else { controller.OutMin = -controller.OutMax; } controller.ClampLower = GeneralUI.labPlusNumBox("I Clamp Lower:", controller.ClampLower.ToString("G3")); controller.ClampUpper = GeneralUI.labPlusNumBox("I Clamp Upper:", controller.ClampUpper.ToString("G3")); } else { // used when response * -1 is used to get the correct output controller.OutMin = -1 * GeneralUI.labPlusNumBox(string.Format("Max {0}{1}:", outputName, outputUnits), (-controller.OutMin).ToString("G3")); if (doublesided) { controller.OutMax = -1 * GeneralUI.labPlusNumBox(string.Format("Min {0}{1}:", outputName, outputUnits), (-controller.OutMax).ToString("G3")); } else { controller.OutMax = -controller.OutMin; } controller.ClampUpper = -1 * GeneralUI.labPlusNumBox("I Clamp Lower:", (-controller.ClampUpper).ToString("G3")); controller.ClampLower = -1 * GeneralUI.labPlusNumBox("I Clamp Upper:", (-controller.ClampLower).ToString("G3")); } } GUILayout.EndVertical(); GUILayout.EndHorizontal(); } }
public static void loadAPPreset(APPreset p, George instance) { APController[] c = instance.controllers; for (int i = 0; i < c.Length && i < p.PIDGains.Count; 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.activeAPPreset = p; GeneralUI.postMessage("Loaded preset " + p.name); if (Instance.activeAPPreset != Instance.craftPresetDict[craftDefaultName].apPreset) { updateCraftPreset(Instance.activeAPPreset, instance.vessel); } saveToFile(); }
/// <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(); }
/// <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(); }
// Use this for initialization void Start() { cloudsTransform = GameObject.FindGameObjectWithTag("Earth Clouds"); cloudRotationScript = cloudsTransform.GetComponent <CloudRotation>(); atmosphereInitScript = this.GetComponent <Init>(); generalUIScript = GameObject.FindGameObjectWithTag("MainCamera").GetComponent <GeneralUI> (); }
public void OnGUI() { // create the GUISkin if (ReferenceEquals(GeneralUI.UISkin, null)) { GeneralUI.customSkin(); } }
public void OnGUI() { // create the GUISkin if (GeneralUI.UISkin == null) { GeneralUI.customSkin(); } }
private void OnGUI() { GeneralUI.Styles(); if (bDisplayOptions) { window = GUILayout.Window(0984653, window, optionsWindow, "", GUILayout.Width(0), GUILayout.Height(0)); } }
private void Awake() { if (Instance) { Destroy(gameObject); } else { Instance = this; } }
void Start() { if ((GameManager == null) && (GameObject.Find("GameManager") != null)) { GameManager = GameObject.Find("GameManager").GetComponent <GeneralUI> (); } else { Debug.LogWarning("There is no Game Manager in the scene!"); } }
private void drawPIDValues(PIDclamp controller, string inputName, SASList controllerID) { stockPIDDisplay[(int)controllerID] = GUILayout.Toggle(stockPIDDisplay[(int)controllerID], inputName, GeneralUI.toggleButton); if (stockPIDDisplay[(int)controllerID]) { controller.kp = GeneralUI.labPlusNumBox("Kp:", controller.kp.ToString("G3"), 45); controller.ki = GeneralUI.labPlusNumBox("Ki:", controller.ki.ToString("G3"), 45); controller.kd = GeneralUI.labPlusNumBox("Kd:", controller.kd.ToString("G3"), 45); controller.clamp = Math.Max(GeneralUI.labPlusNumBox("Scalar:", controller.clamp.ToString("G3"), 45), 0.01); } }
private void drawPIDValues(PIDclamp controller, string inputName, SASList controllerID) { stockPIDDisplay[(int)controllerID] = GUILayout.Toggle(stockPIDDisplay[(int)controllerID], inputName, GeneralUI.UISkin.customStyles[(int)myStyles.btnToggle]); if (stockPIDDisplay[(int)controllerID]) { controller.kp = GeneralUI.labPlusNumBox(GeneralUI.KpLabel, controller.kp.ToString(), 45); controller.ki = GeneralUI.labPlusNumBox(GeneralUI.KiLabel, controller.ki.ToString(), 45); controller.kd = GeneralUI.labPlusNumBox(GeneralUI.KdLabel, controller.kd.ToString(), 45); controller.clamp = Math.Max(GeneralUI.labPlusNumBox(GeneralUI.ScalarLabel, controller.clamp.ToString(), 45), 0.01); } }
public static void deleteAPPreset(APPreset p) { GeneralUI.postMessage("Deleted preset " + p.name); if (Instance.activeAPPreset == p) { Instance.activeAPPreset = null; } Instance.APPresetList.Remove(p); p = null; saveToFile(); }
// Start is called before the first frame update private void Start() { cardsData = this.gameObject.GetComponent <CardsData>(); decks = this.gameObject.GetComponent <DecksManager>(); ui = this.gameObject.GetComponent <GeneralUI>(); player1 = GameObject.Find("Player1").GetComponent <PlayerManager>(); player2 = GameObject.Find("Player2").GetComponent <PlayerManager>(); player1UI = GameObject.Find("Player1").GetComponent <PlayerUI>(); player2UI = GameObject.Find("Player2").GetComponent <PlayerUI>(); player1Actions = GameObject.Find("Player1").GetComponent <PlayerActions>(); player2Actions = GameObject.Find("Player2").GetComponent <PlayerActions>(); InitializeGame(); }
private void drawPIDValues(SASList controllerID, string inputName) { PID.PID_Controller controller = Utils.GetSAS(controllerID); controller.bShow = GUILayout.Toggle(controller.bShow, inputName, GeneralUI.toggleButton); if (controller.bShow) { controller.PGain = GeneralUI.labPlusNumBox("Kp:", controller.PGain.ToString("G3"), 45); controller.IGain = GeneralUI.labPlusNumBox("Ki:", controller.IGain.ToString("G3"), 45); controller.DGain = GeneralUI.labPlusNumBox("Kd:", controller.DGain.ToString("G3"), 45); controller.Scalar = GeneralUI.labPlusNumBox("Scalar:", controller.Scalar.ToString("G3"), 45); fadeReset[(int)controllerID] = Math.Max((float)GeneralUI.labPlusNumBox("Slide:", fadeReset[(int)controllerID].ToString("G3"), 45), 1); } }
private void drawPIDValues(SASList controllerID, string inputName) { SASController controller = controllerID.GetSAS(this); controller.bShow = GUILayout.Toggle(controller.bShow, inputName, GeneralUI.UISkin.customStyles[(int)myStyles.btnToggle]); if (controller.bShow) { controller.PGain = GeneralUI.labPlusNumBox(GeneralUI.KpLabel, controller.PGain.ToString("N3"), 45); controller.IGain = GeneralUI.labPlusNumBox(GeneralUI.KiLabel, controller.IGain.ToString("N3"), 45); controller.DGain = GeneralUI.labPlusNumBox(GeneralUI.KdLabel, controller.DGain.ToString("N3"), 45); controller.Scalar = GeneralUI.labPlusNumBox(GeneralUI.ScalarLabel, controller.Scalar.ToString("N3"), 45); } }
public void OnGUI() { if (ReferenceEquals(GeneralUI.UISkin, null)) { GeneralUI.CustomSkin(); } if (bHideUI) { return; } GUI.skin = GeneralUI.UISkin; GUI.backgroundColor = GeneralUI.stockBackgroundGUIColor; Draw(); BindingManager.Instance.Draw(); }
private void drawPIDValues(PIDRclamp controller, string inputName, SASList controllerID) { stockPIDDisplay[(int)controllerID] = GUILayout.Toggle(stockPIDDisplay[(int)controllerID], inputName, GeneralUI.UISkin.customStyles[(int)myStyles.btnToggle]); if (stockPIDDisplay[(int)controllerID]) { float kp, ki, kd; kp = (float)GeneralUI.labPlusNumBox(GeneralUI.KpLabel, controller.KP.ToString(), 45); ki = (float)GeneralUI.labPlusNumBox(GeneralUI.KiLabel, controller.KI.ToString(), 45); kd = (float)GeneralUI.labPlusNumBox(GeneralUI.KdLabel, controller.KD.ToString(), 45); if (kp != controller.KP || ki != controller.KI || kd != controller.KD) { controller.ReinitializePIDsOnly(kp, ki, kd); } } }
// need to wait for Stock SAS to be ready, hence the Coroutine IEnumerator Initialise() { if (FlightData.thisVessel == null) { FlightData.thisVessel = FlightGlobals.ActiveVessel; } // wait for SAS to init if (FlightData.thisVessel.Autopilot.SAS.pidLockedPitch == null) { yield return(null); } bPause[0] = bPause[1] = bPause[2] = false; ActivitySwitch(false); if (!bInit) { SASControllers[(int)SASList.Pitch] = new PID_Controller(defaultPitchGains); SASControllers[(int)SASList.Roll] = new PID_Controller(defaultRollGains); SASControllers[(int)SASList.Yaw] = new PID_Controller(defaultYawGains); if (!PresetManager.Instance.craftPresetList.ContainsKey("default")) { PresetManager.Instance.craftPresetList.Add("default", new CraftPreset("default", null, new SASPreset(SASControllers, "SSAS"), new SASPreset(FlightData.thisVessel.Autopilot.SAS, "stock"), bStockSAS)); } else { if (PresetManager.Instance.craftPresetList["default"].SSASPreset == null) { PresetManager.Instance.craftPresetList["default"].SSASPreset = new SASPreset(SASControllers, "SSAS"); } if (PresetManager.Instance.craftPresetList["default"].StockPreset == null) { PresetManager.Instance.craftPresetList["default"].StockPreset = new SASPreset(FlightData.thisVessel.Autopilot.SAS, "stock"); } } PresetManager.saveDefaults(); GeneralUI.InitColors(); bInit = true; } PresetManager.loadCraftSSASPreset(); PresetManager.loadCraftStockPreset(); }
public static void deleteSASPreset(SASPreset p) { GeneralUI.postMessage("Deleted preset " + p.name); if (Instance.activeSASPreset == p) { Instance.activeSASPreset = null; } Instance.SASPresetList.Remove(p); foreach (KeyValuePair <string, CraftPreset> cp in instance.craftPresetDict) { if (!ReferenceEquals(cp.Value, null) && cp.Value.SASPreset == p) { cp.Value.SASPreset = null; } } 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); } 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 }
private void drawSSASWindow(int id) { if (GUI.Button(new Rect(SSASwindow.width - 16, 2, 14, 14), "")) { PilotAssistantFlightCore.bDisplaySSAS = false; } bShowSSASPresets = GUILayout.Toggle(bShowSSASPresets, bShowSSASPresets ? "Hide SAS Presets" : "Show SAS Presets"); GUI.backgroundColor = GeneralUI.HeaderButtonBackground; if (GUILayout.Button(bArmed ? "Disarm SAS" : "Arm SAS")) { bArmed = !bArmed; ActivitySwitch(vesModule.vesselRef.ActionGroups[KSPActionGroup.SAS]); GeneralUI.postMessage(bArmed ? "SSAS Armed" : "SSAS Disarmed"); } GUI.backgroundColor = GeneralUI.stockBackgroundGUIColor; if (bArmed) { if (!(FlightUIController.speedDisplayMode == FlightUIController.SpeedDisplayModes.Orbit && currentMode == VesselAutopilot.AutopilotMode.StabilityAssist)) { if (currentMode == VesselAutopilot.AutopilotMode.StabilityAssist) { SASList.Pitch.GetSAS(this).SetPoint = TogPlusNumBox("Pitch:", SASList.Pitch, vesModule.vesselData.pitch, 80, 70); currentTarget = Utils.getPlaneRotation(TogPlusNumBox("Heading:", SASList.Hdg, vesModule.vesselData.heading, 80, 70), vesModule); } SASList.Bank.GetSAS(this).SetPoint = TogPlusNumBox("Roll:", SASList.Bank, vesModule.vesselData.bank, 80, 70); } GUILayout.Box("", GUILayout.Height(10)); // seperator drawPIDValues(SASList.Pitch, "Pitch"); drawPIDValues(SASList.Bank, "Roll"); drawPIDValues(SASList.Hdg, "Yaw"); } GUI.DragWindow(); tooltip = GUI.tooltip; }
public static void newAPPreset(ref string name, APController[] controllers, Vessel v) { if (name == "") { return; } string tempName = name; if (Instance.APPresetList.Any(p => p.name == tempName)) { GeneralUI.postMessage("Failed to add preset with duplicate name"); return; } APPreset newPreset = new APPreset(controllers, name); updateCraftPreset(newPreset, v); Instance.APPresetList.Add(newPreset); Instance.activeAPPreset = PresetManager.Instance.APPresetList.Last(); saveToFile(); name = ""; }
public void drawGUI() { GUI.skin = GeneralUI.UISkin; GeneralUI.Styles(); // SAS toggle button if (bArmed) { if (SurfSAS.ActivityCheck()) { GUI.backgroundColor = GeneralUI.ActiveBackground; } else { GUI.backgroundColor = GeneralUI.InActiveBackground; } if (GUI.Button(new Rect(Screen.width / 2 + 50, Screen.height - 200, 50, 30), "SSAS")) { ActivitySwitch(!ActivityCheck()); updateTarget(); if (ActivityCheck()) { setStockSAS(false); } } GUI.backgroundColor = GeneralUI.stockBackgroundGUIColor; } // Main and preset window stuff if (!AppLauncherFlight.bDisplaySAS) { return; } Draw(); }
public AccountsTab(UIManager uiManager, GeneralUI generalUI) : base(uiManager, new Size(640, 460)) { _generalUI = generalUI; }
private void drawSASWindow(int id) { if (GUI.Button(new Rect(SASwindow.width - 16, 2, 14, 14), "")) { AppLauncherFlight.bDisplaySAS = false; } bShowPresets = GUILayout.Toggle(bShowPresets, bShowPresets ? "Hide SAS Presets" : "Show SAS Presets"); bStockSAS = GUILayout.Toggle(bStockSAS, bStockSAS ? "Mode: Stock SAS" : "Mode: SSAS"); if (!bStockSAS) { GUI.backgroundColor = GeneralUI.HeaderButtonBackground; if (GUILayout.Button(bArmed ? "Disarm SAS" : "Arm SAS")) { bArmed = !bArmed; if (!bArmed) { ActivitySwitch(false); } if (bArmed) { Messaging.statusMessage(8); } else { Messaging.statusMessage(9); } } GUI.backgroundColor = GeneralUI.stockBackgroundGUIColor; if (bArmed) { Utils.GetSAS(SASList.Pitch).SetPoint = Utils.Clamp((float)GeneralUI.TogPlusNumBox("Pitch:", ref bActive[(int)SASList.Pitch], FlightData.pitch, Utils.GetSAS(SASList.Pitch).SetPoint, 80), -90, 90); Utils.GetSAS(SASList.Yaw).SetPoint = GeneralUI.TogPlusNumBox("Heading:", ref bActive[(int)SASList.Yaw], FlightData.heading, Utils.GetSAS(SASList.Yaw).SetPoint, 80, 60, 360, 0); if (!rollState) // editable { Utils.GetSAS(SASList.Roll).SetPoint = GeneralUI.TogPlusNumBox("Roll:", ref bActive[(int)SASList.Roll], FlightData.roll, Utils.GetSAS(SASList.Roll).SetPoint, 80, 60, 180, -180); } else // not editable b/c vector mode { GUILayout.BeginHorizontal(); bActive[(int)SASList.Roll] = GUILayout.Toggle(bActive[(int)SASList.Roll], "Roll:", GeneralUI.toggleButton, GUILayout.Width(80)); GUILayout.TextField(FlightData.roll.ToString("N2"), GUILayout.Width(60)); GUILayout.EndHorizontal(); } GUILayout.Box("", GUILayout.Height(10)); drawPIDValues(SASList.Pitch, "Pitch"); drawPIDValues(SASList.Roll, "Roll"); drawPIDValues(SASList.Yaw, "Yaw"); } } else { VesselAutopilot.VesselSAS sas = FlightData.thisVessel.Autopilot.SAS; drawPIDValues(sas.pidLockedPitch, "Pitch", SASList.Pitch); drawPIDValues(sas.pidLockedRoll, "Roll", SASList.Roll); drawPIDValues(sas.pidLockedYaw, "Yaw", SASList.Yaw); } GUI.DragWindow(); }
public void Draw() { GUI.skin = GeneralUI.UISkin; GeneralUI.Styles(); // Window resizing (scroll views dont work nicely with GUILayout) // Have to put the width changes before the draw so the close button is correctly placed if (showPIDLimits) { window.width = 370; } else { window.width = 233; } if (bShowHdg) { hdgScrollHeight = 0; if (!bWingLeveller) { hdgScrollHeight += 55; } if ((Utils.GetAsst(PIDList.HdgBank).bShow || Utils.GetAsst(PIDList.HdgYaw).bShow) && !bWingLeveller) { hdgScrollHeight += 150; } else if (showControlSurfaces) { hdgScrollHeight += 50; if (Utils.GetAsst(PIDList.Aileron).bShow || Utils.GetAsst(PIDList.Rudder).bShow) { hdgScrollHeight += 100; } } } if (bShowVert) { vertScrollHeight = 38; if (bAltitudeHold) { vertScrollHeight += 27; } if ((Utils.GetAsst(PIDList.Altitude).bShow&& bAltitudeHold) || (Utils.GetAsst(PIDList.VertSpeed).bShow)) { vertScrollHeight += 150; } else if (showControlSurfaces) { vertScrollHeight += 27; if (Utils.GetAsst(PIDList.Elevator).bShow) { vertScrollHeight += 123; } } } GUI.backgroundColor = GeneralUI.stockBackgroundGUIColor; window = GUILayout.Window(34244, window, displayWindow, "Pilot Assistant", GUILayout.Height(0), GUILayout.MinWidth(233)); presetWindow.x = window.x + window.width; presetWindow.y = window.y; if (showPresets) { presetWindow = GUILayout.Window(34245, presetWindow, displayPresetWindow, "Pilot Assistant Presets", GUILayout.Width(200), GUILayout.Height(0)); } }
// Use this for initialization void Start () { cloudsTransform = GameObject.FindGameObjectWithTag("Earth Clouds"); cloudRotationScript = cloudsTransform.GetComponent<CloudRotation>(); generalUIScript = GameObject.FindGameObjectWithTag ("MainCamera").GetComponent<GeneralUI> (); }