From a386281fb2fe95e3cdc50be3f0a2b081cb2d35fb Mon Sep 17 00:00:00 2001 From: drewcassidy Date: Thu, 11 Jun 2020 16:52:12 -0700 Subject: [PATCH] Add slider for edge wear --- .../ConformalDecals/Localization/en-us.cfg | 1 + .../Parts/Generic/decal-generic.cfg | 4 +- .../ConformalDecals/Parts/decal-flag.cfg | 1 + .../Plugins/ConformalDecals.dll | Bin 36864 -> 37376 bytes Source/ConformalDecals/DecalPropertyIDs.cs | 1 + .../MaterialPropertyCollection.cs | 4 ++ .../ConformalDecals/ModuleConformalDecal.cs | 43 +++++++++++++++--- 7 files changed, 45 insertions(+), 9 deletions(-) diff --git a/Distribution/GameData/ConformalDecals/Localization/en-us.cfg b/Distribution/GameData/ConformalDecals/Localization/en-us.cfg index ed70d52..599411c 100644 --- a/Distribution/GameData/ConformalDecals/Localization/en-us.cfg +++ b/Distribution/GameData/ConformalDecals/Localization/en-us.cfg @@ -14,6 +14,7 @@ Localization #LOC_ConformalDecals_gui-depth = Depth #LOC_ConformalDecals_gui-opacity = Opacity #LOC_ConformalDecals_gui-cutoff = Cutoff + #LOC_ConformalDecals_gui-wear = Edge Wear #LOC_ConformalDecals_gui-aspectratio = Aspect Ratio #LOC_ConformalDecals_gui-select-flag = Select Flag #LOC_ConformalDecals_gui-reset-flag = Reset Flag diff --git a/Distribution/GameData/ConformalDecals/Parts/Generic/decal-generic.cfg b/Distribution/GameData/ConformalDecals/Parts/Generic/decal-generic.cfg index 04a3d1a..56c62b5 100644 --- a/Distribution/GameData/ConformalDecals/Parts/Generic/decal-generic.cfg +++ b/Distribution/GameData/ConformalDecals/Parts/Generic/decal-generic.cfg @@ -68,7 +68,7 @@ PART cutoff = 0.5 cutoffAdjustable = false - scaleRange = 0.05, 1 + scaleRange = 0.1, 4 shader = ConformalDecals/Paint/Specular @@ -511,7 +511,7 @@ PART SUBTYPE { name = numeral-0 - title = #LOC_ConformalDecals_generic-variant-numeral-10 + title = #LOC_ConformalDecals_generic-variant-numeral-0 primaryColor = Black secondaryColor = White diff --git a/Distribution/GameData/ConformalDecals/Parts/decal-flag.cfg b/Distribution/GameData/ConformalDecals/Parts/decal-flag.cfg index 5b8d1c5..be12f72 100644 --- a/Distribution/GameData/ConformalDecals/Parts/decal-flag.cfg +++ b/Distribution/GameData/ConformalDecals/Parts/decal-flag.cfg @@ -59,5 +59,6 @@ PART useBaseNormal = true defaultDepth = 0.2 + defaultCutoff = 0 } } diff --git a/Distribution/GameData/ConformalDecals/Plugins/ConformalDecals.dll b/Distribution/GameData/ConformalDecals/Plugins/ConformalDecals.dll index a9601b2b904886fd68ecb4f4fe1021adc404600c..6deba2e13e43227f8b105bc2614e237d0a4ddce7 100644 GIT binary patch delta 13805 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 [KSPField] public bool updateBackScale = true; - /// - /// Should the shader use the normal map of the part its projecting onto? Use only with "paint" shaders. - /// - [KSPField] public bool useBaseNormal = true; // INTERNAL VALUES @@ -101,6 +101,13 @@ namespace ConformalDecals { UI_FloatRange(stepIncrement = 0.05f)] public float cutoff = 0.5f; + /// + /// Edge wear value for the decal shader. Only relevent when useBaseNormal is true and the shader is a paint shader + /// + [KSPField(guiName = "#LOC_ConformalDecals_gui-wear", guiActive = false, guiActiveEditor = true, isPersistant = true, guiFormat = "F0"), + UI_FloatRange()] + public float wear = 100; + [KSPField] public MaterialPropertyCollection materialProperties; [KSPField] public Transform decalFrontTransform; @@ -313,7 +320,7 @@ namespace ConformalDecals { // scale or depth values have been changed, so update scale // and update projection matrices if attached UpdateScale(); - + foreach (var counterpart in part.symmetryCounterparts) { var decal = counterpart.GetComponent(); decal.UpdateScale(); @@ -323,11 +330,17 @@ namespace ConformalDecals { protected void OnMaterialTweakEvent(BaseField field, object obj) { materialProperties.SetOpacity(opacity); materialProperties.SetCutoff(cutoff); - + if (useBaseNormal) { + materialProperties.SetWear(wear); + } + foreach (var counterpart in part.symmetryCounterparts) { var decal = counterpart.GetComponent(); decal.materialProperties.SetOpacity(opacity); decal.materialProperties.SetCutoff(cutoff); + if (useBaseNormal) { + decal.materialProperties.SetWear(wear); + } } } @@ -427,6 +440,9 @@ namespace ConformalDecals { materialProperties.UpdateMaterials(); materialProperties.SetOpacity(opacity); materialProperties.SetCutoff(cutoff); + if (useBaseNormal) { + materialProperties.SetWear(wear); + } _decalMaterial = materialProperties.DecalMaterial; _previewMaterial = materialProperties.PreviewMaterial; @@ -470,11 +486,13 @@ namespace ConformalDecals { var depthField = Fields[nameof(depth)]; var opacityField = Fields[nameof(opacity)]; var cutoffField = Fields[nameof(cutoff)]; + var wearField = Fields[nameof(wear)]; scaleField.guiActiveEditor = scaleAdjustable; depthField.guiActiveEditor = depthAdjustable; opacityField.guiActiveEditor = opacityAdjustable; cutoffField.guiActiveEditor = cutoffAdjustable; + wearField.guiActiveEditor = useBaseNormal; var steps = 20; @@ -523,6 +541,17 @@ namespace ConformalDecals { cutoffEditor.stepIncrement = (maxValue - minValue) / steps; cutoffEditor.onFieldChanged = OnMaterialTweakEvent; } + + if (useBaseNormal) { + var minValue = Mathf.Max(0, wearRange.x); + var maxValue = Mathf.Max(minValue, wearRange.y); + + var wearEditor = (UI_FloatRange) wearField.uiControlEditor; + wearEditor.minValue = minValue; + wearEditor.maxValue = maxValue; + wearEditor.stepIncrement = (maxValue - minValue) / steps; + wearEditor.onFieldChanged = OnMaterialTweakEvent; + } } protected void Render(Camera camera) {