From becd766905b3f631ca9aa6afaf4fb0be4814811b Mon Sep 17 00:00:00 2001 From: Halban <30965946+Halbann@users.noreply.github.com> Date: Tue, 10 Jun 2025 11:55:21 +0100 Subject: [PATCH] Fix loading detail from presets and make backwards compatible --- Source/TexturesUnlimited/Addon/TexturesUnlimitedLoader.cs | 2 +- Source/TexturesUnlimited/GUI/CraftRecolorGUI.cs | 2 +- Source/TexturesUnlimited/Util/Utils.cs | 7 +++++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Source/TexturesUnlimited/Addon/TexturesUnlimitedLoader.cs b/Source/TexturesUnlimited/Addon/TexturesUnlimitedLoader.cs index c206de4..1945adb 100644 --- a/Source/TexturesUnlimited/Addon/TexturesUnlimitedLoader.cs +++ b/Source/TexturesUnlimited/Addon/TexturesUnlimitedLoader.cs @@ -797,7 +797,7 @@ public RecoloringDataPreset(ConfigNode node) public RecoloringData getRecoloringData() { - return new RecoloringData(color, specular, metallic, 1); + return new RecoloringData(color, specular, metallic, detail); } } diff --git a/Source/TexturesUnlimited/GUI/CraftRecolorGUI.cs b/Source/TexturesUnlimited/GUI/CraftRecolorGUI.cs index f407895..8c2ff72 100644 --- a/Source/TexturesUnlimited/GUI/CraftRecolorGUI.cs +++ b/Source/TexturesUnlimited/GUI/CraftRecolorGUI.cs @@ -453,7 +453,7 @@ private void drawPresetColorArea() bStr = (editingColor.color.b * 255f).ToString("F0"); aStr = (editingColor.specular * 255f).ToString("F0"); mStr = (editingColor.metallic * 255f).ToString("F0"); - //dStr = (editingColor.detail * 100f).ToString("F0");//leave detail mult as pre-specified value (user/config); it does not pull from preset colors at all + dStr = (editingColor.detail * 100f).ToString("F0"); update = true; } GUI.color = old; diff --git a/Source/TexturesUnlimited/Util/Utils.cs b/Source/TexturesUnlimited/Util/Utils.cs index 5d262dc..58fe2c4 100644 --- a/Source/TexturesUnlimited/Util/Utils.cs +++ b/Source/TexturesUnlimited/Util/Utils.cs @@ -486,6 +486,13 @@ public static Color GetColor(this ConfigNode node, string name) public static float GetColorChannelValue(this ConfigNode node, string name) { string value = node.GetStringValue(name).Trim(); + + // Detail was not included in presets originally, so on old presets GetStringValue will return "", which will default to 0. + // Default to 1 instead if trying to access detail, which results in a default detail of 100, as before. + + if (value == "" && name == "detail") + return 1f; + float floatValue = safeParseFloat(value); if (value.Contains(".")) { return floatValue; } if (name == "detail") { return floatValue / 100; }