private void OnDestroy() { FlightGUIDrawer.SetGUIActive(this, false); GameEvents.onShowUI.Remove(ShowUI); GameEvents.onHideUI.Remove(HideUI); SaveConfigs(); if (_vessel) { vesselFlightGUI.Remove(_vessel); } _physicsCalcs = null; _flightDataGUI?.SaveSettings(); _flightDataGUI = null; _stabilityAugmentation?.SaveAndDestroy(); _stabilityAugmentation = null; airSpeedGUI?.SaveSettings(); airSpeedGUI = null; AeroVizGUI?.SaveSettings(); if (flightDataLogger) { flightDataLogger.StopLogging(); flightDataLogger = null; } _flightStatusGUI = null; settingsWindow = null; activeFlightGUICount--; if (activeFlightGUICount <= 0) { activeFlightGUICount = 0; if (blizzyFlightGUIButton != null) { ClearBlizzyToolbarButton(); } } savedShowGUI = showGUI; }
protected override void OnStart() { base.OnStart(); showGUI = savedShowGUI; //since we're sharing the button, we need these shenanigans now if (FARDebugAndSettings.FARDebugButtonStock && HighLogic.LoadedSceneIsFlight) { if (showGUI) { FARDebugAndSettings.FARDebugButtonStock.SetTrue(false); } else { FARDebugAndSettings.FARDebugButtonStock.SetFalse(false); } } _vessel = GetComponent <Vessel>(); _vesselAero = GetComponent <FARVesselAero>(); _physicsCalcs = new PhysicsCalcs(_vessel, _vesselAero); _flightStatusGUI = new FlightStatusGUI(); _stabilityAugmentation = new StabilityAugmentation(_vessel); _flightDataGUI = new FlightDataGUI(); AeroVizGUI = new AeroVisualizationGUI(); debugGUI = new DebugGUI(); settingsWindow = new GUIDropDown <int>(new[] { LocalizerExtensions.Get("FARFlightGUIWindowSelect0"), LocalizerExtensions.Get("FARFlightGUIWindowSelect1"), LocalizerExtensions.Get("FARFlightGUIWindowSelect2"), LocalizerExtensions.Get("FARFlightGUIWindowSelect3") }, new[] { 0, 1, 2, 3 }); if (vesselFlightGUI.ContainsKey(_vessel)) { vesselFlightGUI[_vessel] = this; } else { vesselFlightGUI.Add(_vessel, this); } flightDataLogger = FlightDataLogger.CreateLogger(_vessel); enabled = true; if (FARDebugValues.useBlizzyToolbar) { GenerateBlizzyToolbarButton(); } activeFlightGUICount++; if (_vessel == FlightGlobals.ActiveVessel || FlightGlobals.ActiveVessel == null) { LoadConfigs(); } GameEvents.onShowUI.Add(ShowUI); GameEvents.onHideUI.Add(HideUI); }