public static void updateUIScaleEditControl(this PartModule module, string fieldName, float value) { UI_ScaleEdit widget = null; if (HighLogic.LoadedSceneIsEditor) { widget = (UI_ScaleEdit)module.Fields[fieldName].uiControlEditor; } else if (HighLogic.LoadedSceneIsFlight) { widget = (UI_ScaleEdit)module.Fields[fieldName].uiControlFlight; } else { return; } if (widget == null || widget.partActionItem == null) { return; } UIPartActionScaleEdit ctr = (UIPartActionScaleEdit)widget.partActionItem; var t = widget.onFieldChanged; widget.onFieldChanged = null; ctr.inc.onToggle.RemoveAllListeners(); ctr.dec.onToggle.RemoveAllListeners(); ctr.slider.onValueChanged.RemoveAllListeners(); ctr.Setup(ctr.Window, module.part, module, HighLogic.LoadedSceneIsEditor ? UI_Scene.Editor : UI_Scene.Flight, widget, module.Fields[fieldName]); widget.onFieldChanged = t; }
private void SetupWidgets(ScaleType scaleType) { ScaleFactors = scaleType.ScaleFactors; this.SetupWidgetsVisibility(); if (ScaleFactors.Length <= 0) { return; } if (isFreeScale) { BaseField field = Fields["tweakScale"]; UI_ScaleEdit range = (UI_ScaleEdit)field.uiControlEditor; range.intervals = scaleType.ScaleFactors; range.incrementSlide = scaleType.IncrementSlide; range.unit = scaleType.Suffix; range.sigFigs = 3; field.guiUnits = scaleType.Suffix; } else { UI_ChooseOption options = (UI_ChooseOption)Fields["tweakName"].uiControlEditor; options.options = scaleType.ScaleNames; } }
public static void ROLupdateUIScaleEditControl(this PartModule module, string fieldName, float[] intervals, float[] increments, bool forceUpdate, float forceValue = 0) { UI_ScaleEdit widget = null; if (HighLogic.LoadedSceneIsEditor) { widget = (UI_ScaleEdit)module.Fields[fieldName].uiControlEditor; } else if (HighLogic.LoadedSceneIsFlight) { widget = (UI_ScaleEdit)module.Fields[fieldName].uiControlFlight; } else { return; } if (widget == null) { return; } widget.intervals = intervals; widget.incrementSlide = increments; if (forceUpdate && widget.partActionItem != null) { UIPartActionScaleEdit ctr = (UIPartActionScaleEdit)widget.partActionItem; var t = widget.onFieldChanged; widget.onFieldChanged = null; ctr.inc.onToggle.RemoveAllListeners(); ctr.dec.onToggle.RemoveAllListeners(); ctr.slider.onValueChanged.RemoveAllListeners(); ctr.Setup(ctr.Window, module.part, module, HighLogic.LoadedSceneIsEditor ? UI_Scene.Editor : UI_Scene.Flight, widget, module.Fields[fieldName]); widget.onFieldChanged = t; } }
/// <summary> /// Loads settings from <paramref name="scaleType"/>. /// </summary> /// <param name="scaleType">The settings to use.</param> private void SetupFromConfig(ScaleType scaleType) { if (ScaleType == null) { Log.error("Scaletype==null! part={0}", part.name); } isFreeScale = scaleType.IsFreeScale; if (defaultScale == -1) { defaultScale = scaleType.DefaultScale; } if (currentScale == -1) { currentScale = defaultScale; } else if (defaultScale != scaleType.DefaultScale) { Log.warn("defaultScale has changed for part {0}: keeping relative scale.", part.name); currentScale *= scaleType.DefaultScale / defaultScale; defaultScale = scaleType.DefaultScale; } if (tweakScale == -1) { tweakScale = currentScale; } Fields["tweakScale"].guiActiveEditor = false; Fields["tweakName"].guiActiveEditor = false; ScaleFactors = scaleType.ScaleFactors; if (ScaleFactors.Length <= 0) { return; } if (isFreeScale) { Fields["tweakScale"].guiActiveEditor = true; UI_ScaleEdit range = (UI_ScaleEdit)Fields["tweakScale"].uiControlEditor; range.intervals = scaleType.ScaleFactors; range.incrementSlide = scaleType.IncrementSlide; range.unit = scaleType.Suffix; range.sigFigs = 3; Fields["tweakScale"].guiUnits = scaleType.Suffix; } else { Fields["tweakName"].guiActiveEditor = scaleType.ScaleFactors.Length > 1; UI_ChooseOption options = (UI_ChooseOption)Fields["tweakName"].uiControlEditor; ScaleNodes = scaleType.ScaleNodes; options.options = scaleType.ScaleNames; } }
public override void OnStart(StartState state) { if (this.FailsIntegrity()) { return; } Log.dbg("OnStart {0}", this.InstanceID); base.OnStart(state); { UI_ScaleEdit ui = (this.Fields["tweakScale"].uiControlEditor as UI_ScaleEdit); ui.onFieldChanged += this.OnTweakScaleChanged; } { UI_ChooseOption ui = (this.Fields["tweakName"].uiControlEditor as UI_ChooseOption); ui.onFieldChanged += this.OnTweakScaleChanged; } if (HighLogic.LoadedSceneIsEditor) { if (this.scaler.HasCrew) { GameEvents.onEditorShipModified.Add(this.OnEditorShipModified); this.wasOnEditorShipModifiedAdded = true; } } // scale IVA overlay if (HighLogic.LoadedSceneIsFlight && this.enabled && (part.internalModel != null)) { _savedIvaScale = part.internalModel.transform.localScale * ScalingFactor.absolute.linear; part.internalModel.transform.localScale = _savedIvaScale; part.internalModel.transform.hasChanged = true; } }