From e27267c862cc4803edc350d03bb2be8501ac8a4c Mon Sep 17 00:00:00 2001 From: drewcassidy Date: Thu, 11 Jun 2020 17:30:31 -0700 Subject: [PATCH] Add size calculation modes --- .../Parts/Generic/decal-generic.cfg | 3 +- .../Plugins/ConformalDecals.dll | Bin 37376 -> 37888 bytes .../ConformalDecals/ModuleConformalDecal.cs | 44 ++++++++++++++++-- 3 files changed, 42 insertions(+), 5 deletions(-) diff --git a/Distribution/GameData/ConformalDecals/Parts/Generic/decal-generic.cfg b/Distribution/GameData/ConformalDecals/Parts/Generic/decal-generic.cfg index 56c62b5..2042ada 100644 --- a/Distribution/GameData/ConformalDecals/Parts/Generic/decal-generic.cfg +++ b/Distribution/GameData/ConformalDecals/Parts/Generic/decal-generic.cfg @@ -69,6 +69,7 @@ PART cutoffAdjustable = false scaleRange = 0.1, 4 + scaleMode = AVERAGE shader = ConformalDecals/Paint/Specular @@ -504,7 +505,7 @@ PART IDENTIFIER { name = ModuleConformalDecal } DATA { shader = ConformalDecals/Paint/SpecularSDF - tile = 670, 456, 48, 48 + tile = 710, 456, 48, 48 } } } diff --git a/Distribution/GameData/ConformalDecals/Plugins/ConformalDecals.dll b/Distribution/GameData/ConformalDecals/Plugins/ConformalDecals.dll index 6deba2e13e43227f8b105bc2614e237d0a4ddce7..d9f3ac9a135a2f57a817b971a30c266d87d385fa 100644 GIT binary patch delta 16275 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�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 o+#M%PkBza_RuHhm%fAAkb>hX4Qo diff --git a/Source/ConformalDecals/ModuleConformalDecal.cs b/Source/ConformalDecals/ModuleConformalDecal.cs index 810eeae..2a05197 100644 --- a/Source/ConformalDecals/ModuleConformalDecal.cs +++ b/Source/ConformalDecals/ModuleConformalDecal.cs @@ -6,6 +6,15 @@ using UnityEngine; namespace ConformalDecals { public class ModuleConformalDecal : PartModule { + public enum DecalScaleMode { + HEIGHT, + WIDTH, + AVERAGE, + AREA, + MINIMUM, + MAXIMUM + } + // CONFIGURABLE VALUES /// @@ -41,9 +50,10 @@ namespace ConformalDecals { // Parameters - [KSPField] public bool scaleAdjustable = true; - [KSPField] public float defaultScale = 1; - [KSPField] public Vector2 scaleRange = new Vector2(0, 4); + [KSPField] public bool scaleAdjustable = true; + [KSPField] public float defaultScale = 1; + [KSPField] public Vector2 scaleRange = new Vector2(0, 4); + [KSPField] public DecalScaleMode scaleMode = DecalScaleMode.HEIGHT; [KSPField] public bool depthAdjustable = true; [KSPField] public float defaultDepth = 0.1f; @@ -241,6 +251,7 @@ namespace ConformalDecals { var tileValid = ParseExtensions.TryParseRect(tileString, out tileRect); if (!tileValid) throw new FormatException($"Invalid rect value for tile '{tileString}'"); } + if (tileRect.x >= 0) { materialProperties.UpdateTile(tileRect); } @@ -269,6 +280,7 @@ namespace ConformalDecals { depth = defaultDepth; opacity = defaultOpacity; cutoff = defaultCutoff; + wear = defaultWear; } } @@ -405,7 +417,31 @@ namespace ConformalDecals { protected void UpdateScale() { var aspectRatio = materialProperties.AspectRatio; - var size = new Vector2(scale, scale * aspectRatio); + Vector2 size; + + switch (scaleMode) { + default: + case DecalScaleMode.HEIGHT: + size = new Vector2(scale, scale * aspectRatio); + break; + case DecalScaleMode.WIDTH: + size = new Vector2(scale / aspectRatio, scale); + break; + case DecalScaleMode.AVERAGE: + var width1 = 2 * scale / (1 + aspectRatio); + size = new Vector2(width1, width1 * aspectRatio); + break; + case DecalScaleMode.AREA: + var width2 = Mathf.Sqrt(scale / aspectRatio); + size = new Vector2(width2, width2 * aspectRatio); + break; + case DecalScaleMode.MINIMUM: + if (aspectRatio > 1) goto case DecalScaleMode.WIDTH; + else goto case DecalScaleMode.HEIGHT; + case DecalScaleMode.MAXIMUM: + if (aspectRatio > 1) goto case DecalScaleMode.HEIGHT; + else goto case DecalScaleMode.WIDTH; + } // update material scale materialProperties.UpdateScale(size);