diff options
| author | 2026-06-08 22:57:40 -0400 | |
|---|---|---|
| committer | 2026-06-08 22:57:40 -0400 | |
| commit | 4791d743c05734b34d5931038372db3b1276c963 (patch) | |
| tree | 3b7d2c4a403aefef959e5a93d2d98eca29f1f78e | |
| parent | d51a16181a74124dcedd1c2e69c3376b11440e79 (diff) | |
| download | WorldTuningTool-4791d743c05734b34d5931038372db3b1276c963.tar.gz WorldTuningTool-4791d743c05734b34d5931038372db3b1276c963.tar.bz2 WorldTuningTool-4791d743c05734b34d5931038372db3b1276c963.zip | |
Version 0.9
Signed-off-by: Andrew Opalach <andrew@akon.city>
| -rwxr-xr-x | Config.cs | 3 | ||||
| -rwxr-xr-x | Plugin.cs | 60 |
2 files changed, 31 insertions, 32 deletions
@@ -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;
@@ -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<bool>("HQ Mode", 0xE9A3, ParameterType.BOOL);
private static Parameter[] lodParameters = {
- newParameter<float>("LOD Bias 1", 0x21C, ParameterType.FLOAT),
- newParameter<float>("LOD Bias 2", 0x220, ParameterType.FLOAT),
- newParameter<float>("LOD Caster Bias", 0x1E4, ParameterType.FLOAT),
+ newParameter<float>("LOD Bias 1", 0x21C, ParameterType.FLOAT, pMin(0.0f)),
+ newParameter<float>("LOD Bias 2", 0x220, ParameterType.FLOAT, pMin(0.0f)),
+ newParameter<float>("LOD Caster Bias", 0x1E4, ParameterType.FLOAT, pMin(0.0f)),
// If platform is PS4/Xbox/PC it appears [2] is PC.
- newParameter<float>("LOD Length Platform Bias[2]", 0x22C + (4 * 2), ParameterType.FLOAT),
- newParameter<float>("LOD Pixel Size Platform Bias[2]", 0x244 + (4 * 2), ParameterType.FLOAT),
+ newParameter<float>("LOD Length Platform Bias[2]", 0x22C + (4 * 2), ParameterType.FLOAT, pMin(0.0f)),
+ newParameter<float>("LOD Pixel Size Platform Bias[2]", 0x244 + (4 * 2), ParameterType.FLOAT, pMin(0.0f)),
newParameter<int>("LOD Limit", 0xE898, ParameterType.INT, pStep(1)),
- newParameter<float>("LOD Passthrough Culling Rate", 0x1F0, ParameterType.FLOAT),
- newParameter<float>("LOD Far Culling Fade Length Max", 0x20C, ParameterType.FLOAT),
- newParameter<float>("LOD Far Culling Fade Pixel Max", 0x210, ParameterType.FLOAT),
- newParameter<float>("Speed Tree LOD Billboard Fade Range", 0x214, ParameterType.FLOAT),
- newParameter<float>("LOD Culling Length Bias", 0x224, ParameterType.FLOAT),
- newParameter<float>("LOD Culling Pixel Bias", 0x228, ParameterType.FLOAT)
+ newParameter<float>("LOD Passthrough Culling Rate", 0x1F0, ParameterType.FLOAT, pMin(0.0f)),
+ newParameter<float>("LOD Far Culling Fade Length Max", 0x20C, ParameterType.FLOAT, pMin(0.0f)),
+ newParameter<float>("LOD Far Culling Fade Pixel Max", 0x210, ParameterType.FLOAT, pMin(0.0f)),
+ newParameter<float>("Speed Tree LOD Billboard Fade Range", 0x214, ParameterType.FLOAT, pMin(0.0f)),
+ newParameter<float>("LOD Culling Length Bias", 0x224, ParameterType.FLOAT, pMin(0.0f)),
+ newParameter<float>("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<int>("Sunlight Group", 0x14, ParameterType.INT, pMinMaxStep(1, 255, 1)),
newFrameParameter<float>("Sunlight Direction", 0x110, ParameterType.VECTOR3, pStep(0.00025f)),
- newFrameParameter<float>("Sunlight Color", 0xE0, ParameterType.FLOAT),
+ newFrameParameter<float>("Sunlight Color", 0xE0, ParameterType.FLOAT, pStep(0.001f)),
newFrameParameter<float>("Sunlight Intensity", 0xF4, ParameterType.FLOAT),
newParameter<float>("Sunlight Min Roughness", 0x58C, ParameterType.FLOAT, pStep(0.0025f)), // +0xFC in params but is never read.
- newFrameParameter<bool>("Sunlight Do Volumetric", 0x1F, ParameterType.BOOL),
newFrameParameter<bool>("Sunlight Is Primary", 0x1D, ParameterType.BOOL),
+ newFrameParameter<bool>("Do Volumetric", 0x1F, ParameterType.BOOL),
newFrameParameter<bool>("Shadow Cast", 0x23, ParameterType.BOOL),
newFrameParameter<int>("Shadow Map Size", 0x30, ParameterType.INT), // Aligned to 128.
newFrameParameter<float>("Shadow Near Clip Distance", 0x28, ParameterType.FLOAT),
@@ -1704,7 +1700,7 @@ namespace WorldTuningTool newFrameParameter<float>("Intensity", 0x8A8, ParameterType.FLOAT),
newFrameParameter<float>("Radius", 0x6A0, ParameterType.FLOAT, pStep(0.25f)),
newFrameParameter<float>("Effective Radius", 0x588, ParameterType.FLOAT, pStep(0.25f)),
- newFrameParameter<float>("Min Roughness", 0x58C, ParameterType.FLOAT),
+ newFrameParameter<float>("Min Roughness", 0x58C, ParameterType.FLOAT, pStep(0.0025f)),
newParameter<bool>("Do Volumetric", 0x590, ParameterType.BOOL),
newFlag<bool>("Shadow Cast", 0x138, ParameterType.FLAG, (1 << 23)),
newParameter<int>("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();
|