From e42ff52fb547d397c47dacf698d2994868462d62 Mon Sep 17 00:00:00 2001 From: drewcassidy Date: Mon, 8 Jun 2020 15:38:36 -0700 Subject: [PATCH] Rework decal parameters so they dont reset when changing variants --- .../Parts/Semiotic/decal-semiotic.cfg | 7 +- .../Plugins/ConformalDecals.dll | Bin 34304 -> 34304 bytes .../ConformalDecals/ModuleConformalDecal.cs | 160 ++++++++---------- 3 files changed, 70 insertions(+), 97 deletions(-) diff --git a/Distribution/GameData/ConformalDecals/Parts/Semiotic/decal-semiotic.cfg b/Distribution/GameData/ConformalDecals/Parts/Semiotic/decal-semiotic.cfg index c5e5cb8..2447650 100644 --- a/Distribution/GameData/ConformalDecals/Parts/Semiotic/decal-semiotic.cfg +++ b/Distribution/GameData/ConformalDecals/Parts/Semiotic/decal-semiotic.cfg @@ -58,9 +58,10 @@ PART tileSize = 64, 64 tileIndex = 0 - scale = 0.1 - opacity = 0.8 - cutoff = 0 + defaultScale = 0.1 + defaultDepth = 0.1 + defaultOpacity = 0.8 + defaultCutoff = 0 scaleRange = 0.05, 0.5 cutoffAdjustable = false diff --git a/Distribution/GameData/ConformalDecals/Plugins/ConformalDecals.dll b/Distribution/GameData/ConformalDecals/Plugins/ConformalDecals.dll index 6052d1dce8aef3516c193f74468a9b7339aaa25e..e4bd8a987d309f2acfbcd1123a7abe62f37b33a6 100644 GIT binary patch delta 14228 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 A6aWAK diff --git a/Source/ConformalDecals/ModuleConformalDecal.cs b/Source/ConformalDecals/ModuleConformalDecal.cs index f9fb4e7..38a1b65 100644 --- a/Source/ConformalDecals/ModuleConformalDecal.cs +++ b/Source/ConformalDecals/ModuleConformalDecal.cs @@ -8,34 +8,6 @@ namespace ConformalDecals { public class ModuleConformalDecal : PartModule { // CONFIGURABLE VALUES - /// - /// Decal scale factor, in meters. - /// - [KSPField(guiName = "#LOC_ConformalDecals_gui-scale", guiActive = false, guiActiveEditor = true, isPersistant = true, guiFormat = "F2", guiUnits = "m"), - UI_FloatRange(stepIncrement = 0.05f)] - public float scale = 1.0f; - - /// - /// Projection depth value for the decal projector, in meters. - /// - [KSPField(guiName = "#LOC_ConformalDecals_gui-depth", guiActive = false, guiActiveEditor = true, isPersistant = true, guiFormat = "F2", guiUnits = "m"), - UI_FloatRange(stepIncrement = 0.02f)] - public float depth = 0.2f; - - /// - /// Opacity value for the decal shader. - /// - [KSPField(guiName = "#LOC_ConformalDecals_gui-opacity", guiActive = false, guiActiveEditor = true, isPersistant = true, guiFormat = "P0"), - UI_FloatRange(stepIncrement = 0.05f)] - public float opacity = 1.0f; - - /// - /// Alpha cutoff value for the decal shader. - /// - [KSPField(guiName = "#LOC_ConformalDecals_gui-cutoff", guiActive = false, guiActiveEditor = true, isPersistant = true, guiFormat = "P0"), - UI_FloatRange(stepIncrement = 0.05f)] - public float cutoff = 0.5f; - /// /// Shader name. Should be one that supports decal projection. /// @@ -67,83 +39,67 @@ namespace ConformalDecals { /// [KSPField] public string decalProjector = string.Empty; - /// - /// Should the scale be adjustable in the editor? Default true. - /// - [KSPField] public bool scaleAdjustable = true; + // Parameters - /// - /// Should the depth be adjustable in the editor? Default true. - /// - [KSPField] public bool depthAdjustable = true; + [KSPField] public bool scaleAdjustable = true; + [KSPField] public float defaultScale = 1; + [KSPField] public Vector2 scaleRange = new Vector2(0, 4); - /// - /// Should the opacity be adjustable in the editor? Default true. - /// - [KSPField] public bool opacityAdjustable = true; + [KSPField] public bool depthAdjustable = true; + [KSPField] public float defaultDepth = 0.1f; + [KSPField] public Vector2 depthRange = new Vector2(0, 2); - /// - /// Should the alpha cutoff be adjustable in the editor? Default true. - /// - [KSPField] public bool cutoffAdjustable = true; + [KSPField] public bool opacityAdjustable = true; + [KSPField] public float defaultOpacity = 1; + [KSPField] public Vector2 opacityRange = new Vector2(0, 1); - /// - /// Available scale range in the editor, in meters. Comma seperated min, max - /// - [KSPField] public Vector2 scaleRange = new Vector2(0, 4); + [KSPField] public bool cutoffAdjustable = true; + [KSPField] public float defaultCutoff = 0; + [KSPField] public Vector2 cutoffRange = new Vector2(0, 1); - /// - /// Available depth range in the editor, in meters. Comma seperated min, max - /// - [KSPField] public Vector2 depthRange = new Vector2(0, 2); + [KSPField] public Rect tileRect = new Rect(-1, -1, 0, 0); + [KSPField] public Vector2 tileSize; + [KSPField] public int tileIndex = -1; /// - /// Available opacity range in the editor. Comma seperated min, max + /// Should the back material scale be updated automatically? /// - [KSPField] public Vector2 opacityRange = new Vector2(0, 1); + [KSPField] public bool updateBackScale = true; /// - /// Available alpha cutoff range in the editor. Comma seperated min, max + /// Should the shader use the normal map of the part its projecting onto? Use only with "paint" shaders. /// - [KSPField] public Vector2 cutoffRange = new Vector2(0, 1); + [KSPField] public bool useBaseNormal = true; - /// - /// Rectangle mask to use for any autotile textures, in pixels. - /// - /// - /// Overrides and if specified. Comma seperated x, y, width, height - /// - [KSPField] public Rect tileRect = new Rect(-1, -1, 0, 0); + // INTERNAL VALUES /// - /// Tile size for texture atlases, in pixels. + /// Decal scale factor, in meters. /// - /// - /// Overrided by , Comma seperated width, height - /// - /// - [KSPField] public Vector2 tileSize; + [KSPField(guiName = "#LOC_ConformalDecals_gui-scale", guiActive = false, guiActiveEditor = true, isPersistant = true, guiFormat = "F2", guiUnits = "m"), + UI_FloatRange(stepIncrement = 0.05f)] + public float scale = 1.0f; /// - /// Tile index for texture atlases, 0-indexed. + /// Projection depth value for the decal projector, in meters. /// - /// - /// Overrided by , must be a positive integer. Starts with 0 in the upper left corner. - /// - /// - [KSPField] public int tileIndex = -1; + [KSPField(guiName = "#LOC_ConformalDecals_gui-depth", guiActive = false, guiActiveEditor = true, isPersistant = true, guiFormat = "F2", guiUnits = "m"), + UI_FloatRange(stepIncrement = 0.02f)] + public float depth = 0.2f; /// - /// Should the back material scale be updated automatically? + /// Opacity value for the decal shader. /// - [KSPField] public bool updateBackScale = true; + [KSPField(guiName = "#LOC_ConformalDecals_gui-opacity", guiActive = false, guiActiveEditor = true, isPersistant = true, guiFormat = "P0"), + UI_FloatRange(stepIncrement = 0.05f)] + public float opacity = 1.0f; /// - /// Should the shader use the normal map of the part its projecting onto? Use only with "paint" shaders. + /// Alpha cutoff value for the decal shader. /// - [KSPField] public bool useBaseNormal = true; - - // INTERNAL VALUES + [KSPField(guiName = "#LOC_ConformalDecals_gui-cutoff", guiActive = false, guiActiveEditor = true, isPersistant = true, guiFormat = "P0"), + UI_FloatRange(stepIncrement = 0.05f)] + public float cutoff = 0.5f; [KSPField] public MaterialPropertyCollection materialProperties; @@ -163,7 +119,6 @@ namespace ConformalDecals { private bool _isAttached; private Matrix4x4 _orthoMatrix; - private Bounds _decalBounds; private Material _decalMaterial; private Material _previewMaterial; @@ -297,6 +252,12 @@ namespace ConformalDecals { if (HighLogic.LoadedSceneIsGame) { UpdateScale(); } + else { + scale = defaultScale; + depth = defaultDepth; + opacity = defaultOpacity; + cutoff = defaultCutoff; + } } /// @@ -500,21 +461,28 @@ namespace ConformalDecals { opacityField.guiActiveEditor = opacityAdjustable; cutoffField.guiActiveEditor = cutoffAdjustable; + var steps = 20; + if (scaleAdjustable) { var minValue = Mathf.Max(Mathf.Epsilon, scaleRange.x); var maxValue = Mathf.Max(minValue, scaleRange.y); - ((UI_FloatRange) scaleField.uiControlEditor).minValue = minValue; - ((UI_FloatRange) scaleField.uiControlEditor).maxValue = maxValue; - scaleField.uiControlEditor.onFieldChanged = OnSizeTweakEvent; + var scaleEditor = (UI_FloatRange) scaleField.uiControlEditor; + scaleEditor.minValue = minValue; + scaleEditor.maxValue = maxValue; + scaleEditor.stepIncrement = (maxValue - minValue) / steps; + scaleEditor.onFieldChanged = OnSizeTweakEvent; } if (depthAdjustable) { var minValue = Mathf.Max(Mathf.Epsilon, depthRange.x); var maxValue = Mathf.Max(minValue, depthRange.y); - ((UI_FloatRange) depthField.uiControlEditor).minValue = minValue; - ((UI_FloatRange) depthField.uiControlEditor).maxValue = maxValue; - depthField.uiControlEditor.onFieldChanged = OnSizeTweakEvent; + + var depthEditor = (UI_FloatRange) depthField.uiControlEditor; + depthEditor.minValue = minValue; + depthEditor.maxValue = maxValue; + depthEditor.stepIncrement = (maxValue - minValue) / steps; + depthEditor.onFieldChanged = OnSizeTweakEvent; } if (opacityAdjustable) { @@ -522,9 +490,11 @@ namespace ConformalDecals { var maxValue = Mathf.Max(minValue, opacityRange.y); maxValue = Mathf.Min(1, maxValue); - ((UI_FloatRange) opacityField.uiControlEditor).minValue = minValue; - ((UI_FloatRange) opacityField.uiControlEditor).maxValue = maxValue; - opacityField.uiControlEditor.onFieldChanged = OnMaterialTweakEvent; + var opacityEditor = (UI_FloatRange) opacityField.uiControlEditor; + opacityEditor.minValue = minValue; + opacityEditor.maxValue = maxValue; + opacityEditor.stepIncrement = (maxValue - minValue) / steps; + opacityEditor.onFieldChanged = OnMaterialTweakEvent; } if (cutoffAdjustable) { @@ -532,9 +502,11 @@ namespace ConformalDecals { var maxValue = Mathf.Max(minValue, cutoffRange.y); maxValue = Mathf.Min(1, maxValue); - ((UI_FloatRange) cutoffField.uiControlEditor).minValue = minValue; - ((UI_FloatRange) cutoffField.uiControlEditor).maxValue = maxValue; - cutoffField.uiControlEditor.onFieldChanged = OnMaterialTweakEvent; + var cutoffEditor = (UI_FloatRange) cutoffField.uiControlEditor; + cutoffEditor.minValue = minValue; + cutoffEditor.maxValue = maxValue; + cutoffEditor.stepIncrement = (maxValue - minValue) / steps; + cutoffEditor.onFieldChanged = OnMaterialTweakEvent; } }