From 4791d743c05734b34d5931038372db3b1276c963 Mon Sep 17 00:00:00 2001 From: Andrew Opalach Date: Mon, 8 Jun 2026 22:57:40 -0400 Subject: Version 0.9 Signed-off-by: Andrew Opalach --- Config.cs | 3 +-- Plugin.cs | 60 ++++++++++++++++++++++++++++++------------------------------ 2 files changed, 31 insertions(+), 32 deletions(-) diff --git a/Config.cs b/Config.cs index f928afd..2e43817 100755 --- a/Config.cs +++ b/Config.cs @@ -6,7 +6,7 @@ namespace WorldTuningTool internal class Config : IConfig { public String Name => "WorldTuningTool"; - public String Version => "1.0"; + public String Version => "0.9"; public static string StageToString(Stage stage) { @@ -88,7 +88,6 @@ namespace WorldTuningTool public struct PatchConfig { - public int ShadowResolutionMultiplier { get; set; } = 1; public bool FullResolutionVolumeBlur { get; set; } = false; public bool HigherThanHighestVolumeRendering { get; set; } = false; public bool DisableLODLimits { get; set; } = false; diff --git a/Plugin.cs b/Plugin.cs index b01b705..3ae2818 100755 --- a/Plugin.cs +++ b/Plugin.cs @@ -563,6 +563,8 @@ namespace WorldTuningTool { bool valueChanged = false; string label = drawLabel ? Name : hiddenName; + float displayMinf = ignoreMinMax ? 0.0f : minf; + float displayMaxf = ignoreMinMax ? 0.0f : maxf; switch (Type) { case ParameterType.BOOL: @@ -618,7 +620,7 @@ namespace WorldTuningTool { ImGui.SetNextItemWidth(width * defaultParamWidth); float f1 = v4.X; - if (ImGui.DragFloat(label, ref f1, stepf, 0.0f, 0.0f, "%.6f", ImGuiSliderFlags.NoRoundToFormat)) + if (ImGui.DragFloat(label, ref f1, stepf, displayMinf, displayMaxf, "%.6f", ImGuiSliderFlags.NoRoundToFormat)) { v4 = new Vector4(f1, 0.0f, 0.0f, 0.0f); valueChanged = true; @@ -629,7 +631,7 @@ namespace WorldTuningTool { ImGui.SetNextItemWidth(width * defaultParamWidth * 3.0f); Vector3 v3 = new Vector3(v4.X, v4.Y, v4.Z); - if (ImGui.DragFloat3(label, ref v3, stepf, 0.0f, 0.0f, "%.4f", ImGuiSliderFlags.NoRoundToFormat)) + if (ImGui.DragFloat3(label, ref v3, stepf, displayMinf, displayMaxf, "%.5f", ImGuiSliderFlags.NoRoundToFormat)) { v4 = new Vector4(v3.X, v3.Y, v3.Z, 0.0f); valueChanged = true; @@ -639,7 +641,7 @@ namespace WorldTuningTool case ParameterType.VECTOR4: { ImGui.SetNextItemWidth(width * defaultParamWidth * 4.0f); - if (ImGui.DragFloat4(label, ref v4, stepf, 0.0f, 0.0f, "%.4f", ImGuiSliderFlags.NoRoundToFormat)) + if (ImGui.DragFloat4(label, ref v4, stepf, displayMinf, displayMaxf, "%.5f", ImGuiSliderFlags.NoRoundToFormat)) { valueChanged = true; } @@ -689,30 +691,23 @@ namespace WorldTuningTool ImGui.Text($"({name}: {i1 != 0})"); break; case ParameterType.BYTE: + case ParameterType.INT: + case ParameterType.SHADOW_RESOLUTION: ImGui.Text($"({name}: {i1})"); break; - case ParameterType.INT: case ParameterType.HEX: case ParameterType.COLOR: - case ParameterType.SHADOW_RESOLUTION: - if (Type == ParameterType.INT) - { - ImGui.Text($"({name}: {i1})"); - } - else - { - ImGui.Text($"({name}: {i1:X})"); - } + ImGui.Text($"({name}: {i1:X})"); break; case ParameterType.FLOAT: case ParameterType.PATCH_FLOAT: - ImGui.Text($"({name}: {v4.X:0.00000})"); + ImGui.Text($"({name}: {v4.X:0.000000})"); break; case ParameterType.VECTOR3: - ImGui.Text($"({name}: {v4.X:0.0000}, {v4.Y:0.0000}, {v4.Z:0.0000})"); + ImGui.Text($"({name}: {v4.X:0.00000}, {v4.Y:0.00000}, {v4.Z:0.00000})"); break; case ParameterType.VECTOR4: - ImGui.Text($"({name}: {v4.X:0.0000}, {v4.Y:0.0000}, {v4.Z:0.0000}, {v4.W:0.00000})"); + ImGui.Text($"({name}: {v4.X:0.00000}, {v4.Y:0.00000}, {v4.Z:0.00000}, {v4.W:0.00000})"); break; } ImGui.PopStyleVar(); @@ -1177,6 +1172,7 @@ namespace WorldTuningTool } (Vector4 v4, int i1) = Param.GetValue(); bool valueDiffers = (v4, i1) != (valueV, valueInt); + // @TODO: Not sValue and valueDiffers should be seperated/more clear. if ((valueV, valueInt) != (sValueV, sValueInt) || (isSet && valueDiffers && !Param.PendingUpdate())) { ImGui.SameLine(); @@ -1229,19 +1225,19 @@ namespace WorldTuningTool private static Parameter hqMode = newParameter("HQ Mode", 0xE9A3, ParameterType.BOOL); private static Parameter[] lodParameters = { - newParameter("LOD Bias 1", 0x21C, ParameterType.FLOAT), - newParameter("LOD Bias 2", 0x220, ParameterType.FLOAT), - newParameter("LOD Caster Bias", 0x1E4, ParameterType.FLOAT), + newParameter("LOD Bias 1", 0x21C, ParameterType.FLOAT, pMin(0.0f)), + newParameter("LOD Bias 2", 0x220, ParameterType.FLOAT, pMin(0.0f)), + newParameter("LOD Caster Bias", 0x1E4, ParameterType.FLOAT, pMin(0.0f)), // If platform is PS4/Xbox/PC it appears [2] is PC. - newParameter("LOD Length Platform Bias[2]", 0x22C + (4 * 2), ParameterType.FLOAT), - newParameter("LOD Pixel Size Platform Bias[2]", 0x244 + (4 * 2), ParameterType.FLOAT), + newParameter("LOD Length Platform Bias[2]", 0x22C + (4 * 2), ParameterType.FLOAT, pMin(0.0f)), + newParameter("LOD Pixel Size Platform Bias[2]", 0x244 + (4 * 2), ParameterType.FLOAT, pMin(0.0f)), newParameter("LOD Limit", 0xE898, ParameterType.INT, pStep(1)), - newParameter("LOD Passthrough Culling Rate", 0x1F0, ParameterType.FLOAT), - newParameter("LOD Far Culling Fade Length Max", 0x20C, ParameterType.FLOAT), - newParameter("LOD Far Culling Fade Pixel Max", 0x210, ParameterType.FLOAT), - newParameter("Speed Tree LOD Billboard Fade Range", 0x214, ParameterType.FLOAT), - newParameter("LOD Culling Length Bias", 0x224, ParameterType.FLOAT), - newParameter("LOD Culling Pixel Bias", 0x228, ParameterType.FLOAT) + newParameter("LOD Passthrough Culling Rate", 0x1F0, ParameterType.FLOAT, pMin(0.0f)), + newParameter("LOD Far Culling Fade Length Max", 0x20C, ParameterType.FLOAT, pMin(0.0f)), + newParameter("LOD Far Culling Fade Pixel Max", 0x210, ParameterType.FLOAT, pMin(0.0f)), + newParameter("Speed Tree LOD Billboard Fade Range", 0x214, ParameterType.FLOAT, pMin(0.0f)), + newParameter("LOD Culling Length Bias", 0x224, ParameterType.FLOAT, pMin(0.0f)), + newParameter("LOD Culling Pixel Bias", 0x228, ParameterType.FLOAT, pMin(0.0f)) }; private static Parameter[] snowParameters = { @@ -1355,11 +1351,11 @@ namespace WorldTuningTool private static Parameter[] shadowParameters2 = { newFrameParameter("Sunlight Group", 0x14, ParameterType.INT, pMinMaxStep(1, 255, 1)), newFrameParameter("Sunlight Direction", 0x110, ParameterType.VECTOR3, pStep(0.00025f)), - newFrameParameter("Sunlight Color", 0xE0, ParameterType.FLOAT), + newFrameParameter("Sunlight Color", 0xE0, ParameterType.FLOAT, pStep(0.001f)), newFrameParameter("Sunlight Intensity", 0xF4, ParameterType.FLOAT), newParameter("Sunlight Min Roughness", 0x58C, ParameterType.FLOAT, pStep(0.0025f)), // +0xFC in params but is never read. - newFrameParameter("Sunlight Do Volumetric", 0x1F, ParameterType.BOOL), newFrameParameter("Sunlight Is Primary", 0x1D, ParameterType.BOOL), + newFrameParameter("Do Volumetric", 0x1F, ParameterType.BOOL), newFrameParameter("Shadow Cast", 0x23, ParameterType.BOOL), newFrameParameter("Shadow Map Size", 0x30, ParameterType.INT), // Aligned to 128. newFrameParameter("Shadow Near Clip Distance", 0x28, ParameterType.FLOAT), @@ -1704,7 +1700,7 @@ namespace WorldTuningTool newFrameParameter("Intensity", 0x8A8, ParameterType.FLOAT), newFrameParameter("Radius", 0x6A0, ParameterType.FLOAT, pStep(0.25f)), newFrameParameter("Effective Radius", 0x588, ParameterType.FLOAT, pStep(0.25f)), - newFrameParameter("Min Roughness", 0x58C, ParameterType.FLOAT), + newFrameParameter("Min Roughness", 0x58C, ParameterType.FLOAT, pStep(0.0025f)), newParameter("Do Volumetric", 0x590, ParameterType.BOOL), newFlag("Shadow Cast", 0x138, ParameterType.FLAG, (1 << 23)), newParameter("Shadow Map Size", 0x1B8, ParameterType.INT), // Aligned to 128. @@ -2642,6 +2638,10 @@ namespace WorldTuningTool if (ImGui.Button("Add override")) { Override ov = new Override(); + if (selectedStage == currentStage || selectedStage == globalStage) + { + ov.Set(); // Empty override never superseded. + } selectedOverrides.Add(ov); } ImGui.PopItemWidth(); -- cgit v1.2.3-101-g0448