summaryrefslogtreecommitdiff
path: root/Plugin.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Plugin.cs')
-rw-r--r--Plugin.cs110
1 files changed, 61 insertions, 49 deletions
diff --git a/Plugin.cs b/Plugin.cs
index 95088a4..7ae5c2e 100644
--- a/Plugin.cs
+++ b/Plugin.cs
@@ -614,7 +614,7 @@ namespace WorldTuningTool
// Start of Parameter Definitions.
- private delegate void OnAreaChange(nint unknownPtr);
+ private delegate void OnAreaChange(nint sMhArea);
private Hook<OnAreaChange>? onAreaChange;
private delegate void UpdateUnits(nint sMhUnit);
@@ -623,7 +623,7 @@ namespace WorldTuningTool
private delegate void UpdateLightLinker(nint sLightLinker);
private Hook<UpdateLightLinker>? updateLightLinker;
- private delegate void EvaluateSceneParams(nint unknownPtr, nint unknownPtr2, int unknownInt, nint unknownPtr3);
+ private delegate void EvaluateSceneParams(nint cDrawObject, nint nDrawSceneObject, int unknownInt, nint stringPtr);
private Hook<EvaluateSceneParams>? evaluateSceneParams;
private delegate void UpdateSSAOParams(nint stackOffset);
@@ -635,19 +635,17 @@ namespace WorldTuningTool
private delegate void UpdateToneMapParams(nint stackOffset, nint toneMapObjectInternal);
private Hook<UpdateToneMapParams>? updateToneMapParams;
- private static MtObject? sMhScene = null;
private static MtObject? sMhMain = null;
- private static MtObject? sMhRender = null;
- private static MtObject? sMhGUI = null;
- private static MtObject? sTime = null;
- private static MtObject? sQuest = null;
+ private static MtObject? sMhArea = null;
private static MtObject? sLightLinker = null;
private static bool disableLightsFeature = false;
+ private static MtObject? sMhScene = null;
private static Parameter hqMode = P<bool>("HQ Mode", 0xE9A3, ParameterType.BOOL);
private static Patch defaultHqMode;
+ private static MtObject? sMhRender = null;
private static Parameter[] screenRenderParameters = {
P<byte>("Screen Trim", 0x7B440, ParameterType.BYTE, pStep((byte)1)),
P<float>("Aspect Ratio", 0x7B444, ParameterType.FLOAT),
@@ -655,18 +653,22 @@ namespace WorldTuningTool
P<float>("Default Height", 0x142F74AF8, ParameterType.PATCH_FLOAT)
};
+ private static MtObject? sMhGUI = null;
private static Parameter[] screenGuiParameters = {
P<float>("UI Center Offset", 0x1EC, ParameterType.FLOAT)
};
- private static bool setWeatherMode = false;
- private static int requestWeatherMode = 1;
+ private static MtObject? sTime = null;
private static Parameter[] sTimeParameters = {
P<float>("Time", 0x38, ParameterType.FLOAT, pMinMaxStep(0.0f, 24.0f, 0.005f)),
P<bool>("Time Moving", 0x70, ParameterType.BOOL),
V<int>("Weather", 0x8C, ParameterType.INT)
};
+ private static MtObject? sQuest = null;
+ private static bool setWeatherMode = false;
+ private static int requestWeatherMode = 1;
+
private static Parameter[] lodParameters = {
P<float>("LOD Bias 1", 0x21C, ParameterType.FLOAT, pMin(0.0f)),
P<float>("LOD Bias 2", 0x220, ParameterType.FLOAT, pMin(0.0f)),
@@ -922,7 +924,7 @@ namespace WorldTuningTool
};
private delegate nint CreateBloomObject();
- private delegate nint CreateBloomObject2(nint unknownPtr);
+ private delegate nint CreateBloomObject2(nint allocatedObject);
private delegate nint DestroyBloomObject(nint bloomObjectInternal, int unknownInt);
private Hook<CreateBloomObject>? createBloomObject;
private Hook<CreateBloomObject2>? createBloomObject2;
@@ -943,7 +945,7 @@ namespace WorldTuningTool
};
private delegate nint CreateDofObject();
- private delegate nint CreateDofObject2(nint unknownPtr);
+ private delegate nint CreateDofObject2(nint allocatedObject);
private delegate nint DestroyDofObject(nint dofObjectInternal, int unknownInt);
private Hook<CreateDofObject>? createDofObject;
private Hook<CreateDofObject2>? createDofObject2;
@@ -972,7 +974,7 @@ namespace WorldTuningTool
};
private delegate nint CreateMotionBlurObject();
- private delegate nint CreateMotionBlurObject2(nint unknownPtr);
+ private delegate nint CreateMotionBlurObject2(nint allocatedObject);
private delegate nint DestroyMotionBlurObject(nint motionBlurObjectInternal, int unknownInt);
private Hook<CreateMotionBlurObject>? createMotionBlurObject;
private Hook<CreateMotionBlurObject2>? createMotionBlurObject2;
@@ -987,7 +989,7 @@ namespace WorldTuningTool
};
private delegate nint CreateHazeObject();
- private delegate nint CreateHazeObject2(nint unknownPtr);
+ private delegate nint CreateHazeObject2(nint allocatedObject);
private delegate nint DestroyHazeObject(nint hazeObjectInternal, int unknownInt);
private Hook<CreateHazeObject>? createHazeObject;
private Hook<CreateHazeObject2>? createHazeObject2;
@@ -1011,9 +1013,8 @@ namespace WorldTuningTool
P<float>("Haze Height End", 0x1E0, ParameterType.FLOAT)
};
- private delegate nint CreateSimpleSkyObject(nint unknownPtr);
+ private delegate nint CreateSimpleSkyObject(nint allocatedObject);
private delegate nint DestroySimpleSkyObject(nint simpleSkyObjectInternal, int unknownInt);
- private delegate void RenderSimpleSky(nint simpleSkyObjectInternal, nint unknownPtr);
private Hook<CreateSimpleSkyObject>? createSimpleSkyObject;
private Hook<DestroySimpleSkyObject>? destroySimpleSkyObject;
private nint simpleSkyObject = 0x0;
@@ -1123,7 +1124,7 @@ namespace WorldTuningTool
};
private delegate nint CreateFogObject();
- private delegate nint CreateFogObject2(nint unknownPtr);
+ private delegate nint CreateFogObject2(nint allocatedObject);
private delegate nint DestroyFogObject(nint fogObjectInternal, int unknownInt);
private Hook<CreateFogObject>? createFogObject;
private Hook<CreateFogObject2>? createFogObject2;
@@ -1141,7 +1142,7 @@ namespace WorldTuningTool
P<float>("Speed Tree Wind Strength", 0x210 + 0x40, ParameterType.FLOAT)
};
- private delegate nint CreateWaterWaveObject(nint unknownPtr);
+ private delegate nint CreateWaterWaveObject(nint allocatedObject);
private delegate nint DestroyWaterWaveObject(nint waterWaveObjectInternal, int unknownInt);
private Hook<CreateWaterWaveObject>? createWaterWaveObject;
private Hook<DestroyWaterWaveObject>? destroyWaterWaveObject;
@@ -1153,7 +1154,7 @@ namespace WorldTuningTool
};
private delegate nint CreateFXAAObject();
- private delegate nint CreateFXAAObject2(nint unknownPtr);
+ private delegate nint CreateFXAAObject2(nint allocatedObject);
private delegate nint DestroyFXAAObject(nint fxaaObjectInternal, int unknownInt);
private Hook<CreateFXAAObject>? createFXAAObject;
private Hook<CreateFXAAObject2>? createFXAAObject2;
@@ -1166,7 +1167,7 @@ namespace WorldTuningTool
};
private delegate nint CreateTAAObject();
- private delegate nint CreateTAAObject2(nint unknownPtr);
+ private delegate nint CreateTAAObject2(nint allocatedObject);
private delegate nint DestroyTAAObject(nint taaObjectInternal, int unknownInt);
private Hook<CreateTAAObject>? createTAAObject;
private Hook<CreateTAAObject2>? createTAAObject2;
@@ -1598,9 +1599,9 @@ namespace WorldTuningTool
Assert(OrderedStages.Contains(stage));
}
- onAreaChange = Hook.Create<OnAreaChange>(0x141AC27D0, OnAreaChangeHook); // nint
+ onAreaChange = Hook.Create<OnAreaChange>(0x141AC27D0, OnAreaChangeHook);
- updateUnits = Hook.Create<UpdateUnits>(0x14221B360, UpdateUnitsHook); // nint
+ updateUnits = Hook.Create<UpdateUnits>(0x14221B360, UpdateUnitsHook);
updateLightLinker = Hook.Create<UpdateLightLinker>(0x141AB8310, UpdateLightLinkerHook);
// Used for:
// "Capsule AO Intensity".
@@ -2000,13 +2001,14 @@ namespace WorldTuningTool
public void OnLoad()
{
- sMhScene = SingletonManager.GetSingleton("sMhScene")!;
sMhMain = SingletonManager.GetSingleton("sMhMain")!;
+ sMhArea = SingletonManager.GetSingleton("sMhArea")!;
+ sLightLinker = SingletonManager.GetSingleton("sLightLinker")!;
+ sMhScene = SingletonManager.GetSingleton("sMhScene")!;
sMhRender = SingletonManager.GetSingleton("sMhRender")!;
sMhGUI = SingletonManager.GetSingleton("sMhGUI")!;
sTime = SingletonManager.GetSingleton("sTime")!;
sQuest = SingletonManager.GetSingleton("sQuest")!;
- sLightLinker = SingletonManager.GetSingleton("sLightLinker")!;
sLightProbes = SingletonManager.GetSingleton("sLightProbes")!;
sVolumeRenderer = SingletonManager.GetSingleton("sVolumeRenderer")!;
sMhSpeedTree = SingletonManager.GetSingleton("sMhSpeedTree")!;
@@ -2063,14 +2065,14 @@ namespace WorldTuningTool
param.Update(sMhGUI!.Instance);
}
- if (setWeatherMode)
+ foreach (Parameter param in sTimeParameters)
{
- sQuest!.GetRef<int>(0x293B4) = requestWeatherMode;
+ param.Update(sTime!.Instance);
}
- foreach (Parameter param in sTimeParameters)
+ if (setWeatherMode)
{
- param.Update(sTime!.Instance);
+ sQuest!.GetRef<int>(0x293B4) = requestWeatherMode;
}
foreach (Parameter param in lodParameters)
@@ -2230,7 +2232,7 @@ namespace WorldTuningTool
}
}
- private void EvaluateSceneParamsHook(nint unknownPtr, nint unknownPtr2, int unknownInt, nint unknownPtr3)
+ private void EvaluateSceneParamsHook(nint cDrawObject, nint nDrawSceneObject, int unknownInt, nint stringPtr)
{
foreach (Parameter param in broadAreaShadowParameters)
{
@@ -2242,7 +2244,7 @@ namespace WorldTuningTool
param.Update(sMhScene!.Instance);
}
- evaluateSceneParams!.Original(unknownPtr, unknownPtr2, unknownInt, unknownPtr3);
+ evaluateSceneParams!.Original(cDrawObject, nDrawSceneObject, unknownInt, stringPtr);
}
private void UpdateSSAOParamsHook(nint stackOffset)
@@ -2316,9 +2318,10 @@ namespace WorldTuningTool
return bloomObject;
}
- private nint CreateBloomObject2Hook(nint unknownPtr)
+ private nint CreateBloomObject2Hook(nint allocatedObject)
{
- bloomObject = createBloomObject2!.Original(unknownPtr);
+ bloomObject = createBloomObject2!.Original(allocatedObject);
+ Assert(bloomObject == allocatedObject);
foreach (Parameter param in bloomParameters)
{
param.Update(bloomObject);
@@ -2350,9 +2353,10 @@ namespace WorldTuningTool
return dofObject;
}
- private nint CreateDofObject2Hook(nint unknownPtr)
+ private nint CreateDofObject2Hook(nint allocatedObject)
{
- dofObject = createDofObject2!.Original(unknownPtr);
+ dofObject = createDofObject2!.Original(allocatedObject);
+ Assert(dofObject == allocatedObject);
foreach (Parameter param in dofParameters)
{
param.Update(dofObject);
@@ -2384,9 +2388,10 @@ namespace WorldTuningTool
return motionBlurObject;
}
- private nint CreateMotionBlurObject2Hook(nint unknownPtr)
+ private nint CreateMotionBlurObject2Hook(nint allocatedObject)
{
- motionBlurObject = createMotionBlurObject2!.Original(unknownPtr);
+ motionBlurObject = createMotionBlurObject2!.Original(allocatedObject);
+ Assert(motionBlurObject == allocatedObject);
foreach (Parameter param in motionBlurParameters)
{
param.Update(motionBlurObject);
@@ -2418,9 +2423,10 @@ namespace WorldTuningTool
return hazeObject;
}
- private nint CreateHazeObject2Hook(nint unknownPtr)
+ private nint CreateHazeObject2Hook(nint allocatedObject)
{
- hazeObject = createHazeObject2!.Original(unknownPtr);
+ hazeObject = createHazeObject2!.Original(allocatedObject);
+ Assert(hazeObject == allocatedObject);
foreach (Parameter param in hazeParameters)
{
param.Update(hazeObject);
@@ -2442,9 +2448,10 @@ namespace WorldTuningTool
return destroyHazeObject!.Original(hazeObjectInternal, unknownInt);
}
- private nint CreateSimpleSkyObjectHook(nint unknownPtr)
+ private nint CreateSimpleSkyObjectHook(nint allocatedObject)
{
- simpleSkyObject = createSimpleSkyObject!.Original(unknownPtr);
+ simpleSkyObject = createSimpleSkyObject!.Original(allocatedObject);
+ Assert(simpleSkyObject == allocatedObject);
foreach (Parameter param in simpleSkyParameters)
{
param.Update(simpleSkyObject);
@@ -2476,9 +2483,10 @@ namespace WorldTuningTool
return fogObject;
}
- private nint CreateFogObject2Hook(nint unknownPtr)
+ private nint CreateFogObject2Hook(nint allocatedObject)
{
- fogObject = createFogObject2!.Original(unknownPtr);
+ fogObject = createFogObject2!.Original(allocatedObject);
+ Assert(fogObject == allocatedObject);
foreach (Parameter param in fogParameters)
{
param.Update(fogObject);
@@ -2500,9 +2508,10 @@ namespace WorldTuningTool
return destroyFogObject!.Original(fogObjectInternal, unknownInt);
}
- private nint CreateWaterWaveObjectHook(nint unknownPtr)
+ private nint CreateWaterWaveObjectHook(nint allocatedObject)
{
- waterWaveObject = createWaterWaveObject!.Original(unknownPtr);
+ waterWaveObject = createWaterWaveObject!.Original(allocatedObject);
+ Assert(waterWaveObject == allocatedObject);
foreach (Parameter param in waterWaveParameters)
{
param.Update(waterWaveObject);
@@ -2534,9 +2543,10 @@ namespace WorldTuningTool
return fxaaObject;
}
- private nint CreateFXAAObject2Hook(nint unknownPtr)
+ private nint CreateFXAAObject2Hook(nint allocatedObject)
{
- fxaaObject = createFXAAObject2!.Original(unknownPtr);
+ fxaaObject = createFXAAObject2!.Original(allocatedObject);
+ Assert(fxaaObject == allocatedObject);
foreach (Parameter param in fxaaParameters)
{
param.Update(fxaaObject);
@@ -2568,9 +2578,10 @@ namespace WorldTuningTool
return taaObject;
}
- private nint CreateTAAObject2Hook(nint unknownPtr)
+ private nint CreateTAAObject2Hook(nint allocatedObject)
{
- taaObject = createTAAObject2!.Original(unknownPtr);
+ taaObject = createTAAObject2!.Original(allocatedObject);
+ Assert(taaObject == allocatedObject);
foreach (Parameter param in taaParameters)
{
param.Update(taaObject);
@@ -2753,9 +2764,9 @@ namespace WorldTuningTool
previousStage = stage;
}
- private void OnAreaChangeHook(nint unknownPtr)
+ private void OnAreaChangeHook(nint sMhArea)
{
- onAreaChange!.Original(unknownPtr);
+ onAreaChange!.Original(sMhArea);
StageExt stage = currentStage;
if (stage == previousStage)
{
@@ -3856,6 +3867,7 @@ namespace WorldTuningTool
ImGui.InputFloat("Max FPS", ref sMhMain!.GetRef<float>(0x5C));
ImGui.PopItemWidth();
+ ImGui.Text($"sMhArea: 0x{sMhArea!.Instance:X}");
ImGui.Text($"sLightLinker: 0x{sLightLinker!.Instance:X}");
}
}