/// <summary> /// Called to draw the floating section window when the UI is enabled. /// </summary> private void OnGUI() { if (this.ParentSection == null || !this.ParentSection.IsVisible || (DisplayStack.Instance.Hidden && !this.ParentSection.IsHud) || !FlightEngineerCore.IsDisplayable) { return; } if (this.resizeRequested) { this.windowPosition.width = 0; this.windowPosition.height = 0; this.resizeRequested = false; } GUI.skin = null; this.windowPosition = GUILayout.Window(this.windowId, this.windowPosition, this.Window, string.Empty, (!this.ParentSection.IsHud || this.ParentSection.IsEditorVisible) ? this.windowStyle : this.ParentSection.IsHudBackground && this.ParentSection.LineCount > 0 ? this.hudWindowBgStyle : this.hudWindowStyle); windowPosition = (ParentSection.IsHud) ? windowPosition.ClampInsideScreen() : windowPosition.ClampToScreen(); this.ParentSection.FloatingPositionX = this.windowPosition.x; this.ParentSection.FloatingPositionY = this.windowPosition.y; }
internal void UpdateWindowRect() { Rect rectWindowMain = mbARP.windowMain.WindowRect; Boolean blnKSPStyle = (SkinsLibrary.CurrentSkin.name == "Default"); Rect rectWindowSettings = new Rect(rectWindowMain) { y = rectWindowMain.y + rectWindowMain.height - 2, height = WindowHeight }; if (!blnKSPStyle) { rectWindowSettings.y += 1; } //Nowfit it in the screen and move it around as the main window moves around if (Screen.height < rectWindowSettings.y + rectWindowSettings.height) { if (0 < rectWindowSettings.x - rectWindowSettings.width) { rectWindowSettings.x = rectWindowMain.x - rectWindowMain.width + 2; if (!blnKSPStyle) rectWindowSettings.x -= 1; rectWindowSettings.y = Mathf.Clamp(rectWindowMain.y, 0, Screen.height - rectWindowSettings.height + 1); } else //if (Screen.width < SettingsWindowPos.x + SettingsWindowPos.width) { rectWindowSettings.x = rectWindowMain.x + rectWindowMain.width - 2; if (!blnKSPStyle) rectWindowSettings.x += 1; rectWindowSettings.y = Mathf.Clamp(rectWindowMain.y, 0, Screen.height - rectWindowSettings.height + 1); } } this.WindowRect = rectWindowSettings.ClampToScreen(ClampToScreenOffset); }
public static Rect ClampToScreen(this Rect r) { return(r.ClampToScreen(new RectOffset(0, 0, 0, 0))); }