diff options
Diffstat (limited to 'Plugin.cs')
| -rw-r--r-- | Plugin.cs | 110 |
1 files changed, 61 insertions, 49 deletions
@@ -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}"); } } |