summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Opalach <andrew@akon.city> 2026-08-10 21:26:22 -0400
committerAndrew Opalach <andrew@akon.city> 2026-08-10 21:26:22 -0400
commitbe23b58abf7d0b58a606ba391e8d4a26e9a77651 (patch)
tree516a53a9ccc94433926487676442edd0e159acc4
parentf82e249ab7a107da3155df6089f803343337ee75 (diff)
downloadWorldTuningTool-be23b58abf7d0b58a606ba391e8d4a26e9a77651.tar.gz
WorldTuningTool-be23b58abf7d0b58a606ba391e8d4a26e9a77651.tar.bz2
WorldTuningTool-be23b58abf7d0b58a606ba391e8d4a26e9a77651.zip
Add Haze object
Signed-off-by: Andrew Opalach <andrew@akon.city>
-rw-r--r--Plugin.cs86
1 files changed, 86 insertions, 0 deletions
diff --git a/Plugin.cs b/Plugin.cs
index 0b168b0..c24b8cf 100644
--- a/Plugin.cs
+++ b/Plugin.cs
@@ -1895,6 +1895,31 @@ namespace WorldTuningTool
P<float>("Motion Blur Threshold", 0x18C, ParameterType.FLOAT, pMinStep(0.0f, 0.01f))
};
+ private delegate nint CreateHazeObject();
+ private delegate nint CreateHazeObject2(nint unknownPtr);
+ private delegate nint DestroyHazeObject(nint hazeObjectInternal, int unknownInt);
+ private Hook<CreateHazeObject>? createHazeObject;
+ private Hook<CreateHazeObject2>? createHazeObject2;
+ private Hook<DestroyHazeObject>? destroyHazeObject;
+ private nint hazeObject = 0x0;
+ private static Parameter[] hazeParameters = {
+ M<bool>("Haze Draw", 0x14, ParameterType.FLAG, (1 << 1)),
+ P<float>("Haze Noise Tex Scale", 0x1B4, ParameterType.FLOAT),
+ P<bool>("Haze Invert Src", 0x1D0, ParameterType.BOOL),
+ P<float>("Haze Scale", 0x1BC, ParameterType.FLOAT),
+ P<float>("Haze UVW Offset", 0x170, ParameterType.VECTOR3),
+ P<float>("Haze Direction", 0x180, ParameterType.VECTOR3),
+ P<float>("Haze Speed", 0x1B0, ParameterType.FLOAT),
+ P<float>("Haze Move Scale", 0x1B8, ParameterType.FLOAT),
+ P<bool>("Haze Src Z", 0x1D1, ParameterType.BOOL),
+ P<bool>("Haze Enable Depth", 0x1D2, ParameterType.BOOL),
+ P<float>("Haze Depth Start", 0x1D4, ParameterType.FLOAT),
+ P<float>("Haze Depth End", 0x1D8, ParameterType.FLOAT),
+ P<bool>("Haze Enable Height", 0x1D3, ParameterType.BOOL),
+ P<float>("Haze Height Start", 0x1DC, ParameterType.FLOAT),
+ P<float>("Haze Height End", 0x1E0, ParameterType.FLOAT)
+ };
+
private delegate nint CreateSimpleSkyObject(nint unknownPtr);
private delegate nint DestroySimpleSkyObject(nint simpleSkyObjectInternal, int unknownInt);
private delegate void RenderSimpleSky(nint simpleSkyObjectInternal, nint unknownPtr);
@@ -2078,6 +2103,7 @@ namespace WorldTuningTool
.Concat(bloomParameters)
.Concat(dofParameters)
.Concat(motionBlurParameters)
+ .Concat(hazeParameters)
.Concat(simpleSkyParameters)
.Concat(fogParameters)
.Concat(waterWaveParameters)
@@ -2425,6 +2451,10 @@ namespace WorldTuningTool
createMotionBlurObject2 = Hook.Create<CreateMotionBlurObject2>(0x1424C9740, CreateMotionBlurObject2Hook); // nint
destroyMotionBlurObject = Hook.Create<DestroyMotionBlurObject>(0x1424C97E0, DestroyMotionBlurObjectHook); // nint, int
+ createHazeObject = Hook.Create<CreateHazeObject>(0x1424C6A80, CreateHazeObjectHook);
+ createHazeObject2 = Hook.Create<CreateHazeObject2>(0x1424C6C70, CreateHazeObject2Hook); // nint
+ destroyHazeObject = Hook.Create<DestroyHazeObject>(0x1424C6E20, DestroyHazeObjectHook); // nint, int
+
createSimpleSkyObject = Hook.Create<CreateSimpleSkyObject>(0x141FCCC20, CreateSimpleSkyObjectHook); // nint
destroySimpleSkyObject = Hook.Create<DestroySimpleSkyObject>(0x141FCD840, DestroySimpleSkyObjectHook); // nint, int
@@ -2928,6 +2958,14 @@ namespace WorldTuningTool
}
}
+ if (hazeObject != 0x0)
+ {
+ foreach (Parameter param in hazeParameters)
+ {
+ param.Update(hazeObject);
+ }
+ }
+
if (simpleSkyObject != 0x0)
{
foreach (Parameter param in simpleSkyParameters)
@@ -3121,6 +3159,40 @@ namespace WorldTuningTool
return destroyMotionBlurObject!.Original(motionBlurObjectInternal, unknownInt);
}
+ private nint CreateHazeObjectHook()
+ {
+ hazeObject = createHazeObject!.Original();
+ foreach (Parameter param in hazeParameters)
+ {
+ param.Update(hazeObject);
+ }
+ return hazeObject;
+ }
+
+ private nint CreateHazeObject2Hook(nint unknownPtr)
+ {
+ hazeObject = createHazeObject2!.Original(unknownPtr);
+ foreach (Parameter param in hazeParameters)
+ {
+ param.Update(hazeObject);
+ }
+ return hazeObject;
+ }
+
+ private nint DestroyHazeObjectHook(nint hazeObjectInternal, int unknownInt)
+ {
+ Assert(unknownInt == 1);
+ if (hazeObject == hazeObjectInternal)
+ {
+ hazeObject = 0x0;
+ foreach (Parameter param in hazeParameters)
+ {
+ param.Update(hazeObject);
+ }
+ }
+ return destroyHazeObject!.Original(hazeObjectInternal, unknownInt);
+ }
+
private nint CreateSimpleSkyObjectHook(nint unknownPtr)
{
simpleSkyObject = createSimpleSkyObject!.Original(unknownPtr);
@@ -4145,6 +4217,20 @@ namespace WorldTuningTool
}
ImGui.PopID();
+ ImGui.PushID("Haze");
+ if (ImGui.CollapsingHeader("Haze"))
+ {
+ ImGui.Text($"Address: 0x{hazeObject:X}");
+ if (hazeObject != 0x0)
+ {
+ foreach (Parameter param in hazeParameters)
+ {
+ param.Draw(width);
+ }
+ }
+ }
+ ImGui.PopID();
+
ImGui.PushID("Sky");
if (ImGui.CollapsingHeader("Sky"))
{