summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xPlugin.cs200
1 files changed, 136 insertions, 64 deletions
diff --git a/Plugin.cs b/Plugin.cs
index e2b1c40..15c4524 100755
--- a/Plugin.cs
+++ b/Plugin.cs
@@ -1,4 +1,4 @@
-//#define ADDR_ASSERTS
+#define ADDR_ASSERTS
using ImGuiNET;
using System.Numerics;
@@ -15,6 +15,10 @@ using System.Diagnostics;
#endif
// @TODO:
+// - targetCamera -> targetPlayerCamera
+// - UI button to disable fragile workarounds.
+// - Manully set freecam viewport index.
+// - Save direct camera offsets as preset.
// - Ability to disable more inputs in freecam.
/*
PadDown = 0x198, PadOld = 0x19C, PadTrg = 0x1A0, PadRel = 0x1A4, PadChg = 0x1A8
@@ -99,11 +103,76 @@ namespace MHWNewCamera
private Patch disableExtraYCollision;
private Patch disableGravityYUpdate;
private Patch disableGravityXZUpdate;
+ /*
private Patch disableRotationGravity;
private Patch disableRotationGravity2;
private Patch disableRotationGravity3;
private Patch disableRotationGravity4;
private Patch disableRotationGravity5;
+ */
+ private Patch disableGravityEval;
+
+ private void disableCollisionEnable()
+ {
+ disableXCollision.Enable();
+ disableYCollision.Enable();
+ disableSecondaryYCollision.Enable();
+ disableZCollision.Enable();
+ }
+
+ private void disableCollisionDisable()
+ {
+ disableXCollision.Disable();
+ disableYCollision.Disable();
+ disableSecondaryYCollision.Disable();
+ disableZCollision.Disable();
+ }
+
+ private void disableExtraCollisionEnable()
+ {
+ disableExtraYCollision.Enable();
+ }
+
+ private void disableExtraCollisionDisable()
+ {
+ disableExtraYCollision.Disable();
+ }
+
+ private void disableGravityEnable()
+ {
+ disableGravityYUpdate.Enable();
+ }
+
+ private void disableGravityDisable()
+ {
+ disableGravityYUpdate.Disable();
+ }
+
+ private void disableExtraGravityEnable()
+ {
+ disableGravityEval.Enable();
+ /*
+ disableRotationGravity.Enable();
+ disableRotationGravity2.Enable();
+ disableRotationGravity3.Enable();
+ disableRotationGravity4.Enable();
+ disableRotationGravity5.Enable();
+ disableGravityXZUpdate.Enable();
+ */
+ }
+
+ private void disableExtraGravityDisable()
+ {
+ disableGravityEval.Disable();
+ /*
+ disableRotationGravity.Disable();
+ disableRotationGravity2.Disable();
+ disableRotationGravity3.Disable();
+ disableRotationGravity4.Disable();
+ disableRotationGravity5.Disable();
+ disableGravityXZUpdate.Disable();
+ */
+ }
private string typedPresetName = "";
@@ -199,6 +268,7 @@ namespace MHWNewCamera
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90
]);
+ /*
// <PLAYER>+0xac0
// 141325C19 - F3 0F11 83 80000000 - movss [rbx+00000080],xmm0
@@ -220,6 +290,20 @@ namespace MHWNewCamera
#endif
disableRotationGravity4 = new Patch(addr, [0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90]);
disableRotationGravity5 = new Patch(addr + 0x10, [0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90]);
+ */
+
+ // Stop falling from moving player.
+ // 141BFFEFC - F3 0F11 7E 04 - movss [rsi+04],xmm7
+ //
+ // Instance (of many?) of Y position evaluation for falling?
+ // 141325E2A - 44 0F2F 9B 80010000 - comiss xmm11,[rbx+00000180]
+
+ // 141BFFF75 - E8 965872FF - call MonsterHunterWorld.exe+1325810
+ addr = PatternScanner.FindFirst(Pattern.FromString("F3 0F 11 97 54 15 00 00 F3 0F 11 8F 58 15 00 00 F3 0F 10 47 68 F3 0F 5E D8 44 89 B7 6C 15 00 00 F3 0F 5E D0 F3 0F 5E C8 F3 0F 11 9F 60 15 00 00 F3 0F 11 97 64 15 00 00 F3 0F 11 8F 68 15 00 00"));
+#if ADDR_ASSERTS
+ Trace.Assert(addr + 0x40 == 0x141BFFF75);
+#endif
+ disableGravityEval = new Patch(addr + 0x40, [0x90, 0x90, 0x90, 0x90, 0x90]);
}
}
@@ -269,7 +353,6 @@ namespace MHWNewCamera
private bool assumeInCanteen(float fov, float previousFov)
{
- // Same idea as assumeInOpenMap().
if (fov == 50.0f)
{
if (!changeAfterGetUp)
@@ -460,33 +543,25 @@ namespace MHWNewCamera
private void disableAllHooks()
{
- if (disableCollision)
- {
- disableCollision = false;
- disableXCollision.Disable();
- disableYCollision.Disable();
- disableSecondaryYCollision.Disable();
- disableZCollision.Disable();
- }
- if (disableExtraCollision)
+ if (disableExtraGravity)
{
- disableExtraCollision = false;
- disableExtraYCollision.Disable();
+ disableExtraGravity = false;
+ disableExtraGravityDisable();
}
if (disableGravity)
{
disableGravity = false;
- disableGravityYUpdate.Disable();
+ disableGravityDisable();
}
- if (disableExtraGravity)
+ if (disableExtraCollision)
{
- disableExtraGravity = false;
- disableRotationGravity.Disable();
- disableRotationGravity2.Disable();
- disableRotationGravity3.Disable();
- disableRotationGravity4.Disable();
- disableRotationGravity5.Disable();
- disableGravityXZUpdate.Disable();
+ disableExtraCollision = false;
+ disableExtraCollisionDisable();
+ }
+ if (disableCollision)
+ {
+ disableCollision = false;
+ disableCollisionDisable();
}
}
@@ -812,14 +887,26 @@ namespace MHWNewCamera
{
if (disableCollision)
{
- disableXCollision.Enable();
- disableYCollision.Enable();
- disableSecondaryYCollision.Enable();
- disableZCollision.Enable();
+ disableCollisionEnable();
}
else
{
- disableAllHooks();
+ if (disableExtraGravity)
+ {
+ disableExtraGravity = false;
+ disableExtraGravityDisable();
+ }
+ if (disableGravity)
+ {
+ disableGravity = false;
+ disableGravityDisable();
+ }
+ if (disableExtraCollision)
+ {
+ disableExtraCollision = false;
+ disableExtraCollisionDisable();
+ }
+ disableCollisionDisable();
}
}
if (!disableCollision)
@@ -827,30 +914,25 @@ namespace MHWNewCamera
ImGui.PushItemFlag(ImGuiItemFlags.Disabled, true);
ImGui.PushStyleVar(ImGuiStyleVar.Alpha, ImGui.GetStyle().Alpha * 0.5f);
}
- if (ImGui.Checkbox("Disable Extra Y Collision", ref disableExtraCollision))
+ if (ImGui.Checkbox("Disable Another Y Collision", ref disableExtraCollision))
{
if (disableExtraCollision)
{
- disableExtraYCollision.Enable();
+ disableExtraCollisionEnable();
}
else
{
- disableExtraYCollision.Disable();
- if (disableGravity)
- {
- disableGravity = false;
- disableGravityYUpdate.Disable();
- }
if (disableExtraGravity)
{
disableExtraGravity = false;
- disableRotationGravity.Disable();
- disableRotationGravity2.Disable();
- disableRotationGravity3.Disable();
- disableRotationGravity4.Disable();
- disableRotationGravity5.Disable();
- disableGravityXZUpdate.Disable();
+ disableExtraGravityDisable();
}
+ if (disableGravity)
+ {
+ disableGravity = false;
+ disableGravityDisable();
+ }
+ disableExtraCollisionDisable();
}
}
if (ImGui.BeginItemTooltip())
@@ -868,27 +950,27 @@ namespace MHWNewCamera
ImGui.PushItemFlag(ImGuiItemFlags.Disabled, true);
ImGui.PushStyleVar(ImGuiStyleVar.Alpha, ImGui.GetStyle().Alpha * 0.5f);
}
- if (ImGui.Checkbox("Disable Gravity", ref disableGravity))
+ if (ImGui.Checkbox("Disable Y Gravity", ref disableGravity))
{
if (disableGravity)
{
- disableGravityYUpdate.Enable();
+ disableGravityEnable();
}
else
{
- disableGravityYUpdate.Disable();
if (disableExtraGravity)
{
disableExtraGravity = false;
- disableRotationGravity.Disable();
- disableRotationGravity2.Disable();
- disableRotationGravity3.Disable();
- disableRotationGravity4.Disable();
- disableRotationGravity5.Disable();
- disableGravityXZUpdate.Disable();
+ disableExtraGravityDisable();
}
+ disableGravityDisable();
}
}
+ if (ImGui.BeginItemTooltip())
+ {
+ ImGui.Text("Avoid falling when going too high (Y axis).");
+ ImGui.EndTooltip();
+ }
if (!disableExtraCollision)
{
ImGui.PopItemFlag();
@@ -899,30 +981,20 @@ namespace MHWNewCamera
ImGui.PushItemFlag(ImGuiItemFlags.Disabled, true);
ImGui.PushStyleVar(ImGuiStyleVar.Alpha, ImGui.GetStyle().Alpha * 0.5f);
}
- if (ImGui.Checkbox("Disable Extra Gravity (Breaks Movement)", ref disableExtraGravity))
+ if (ImGui.Checkbox("Disable More Gravity", ref disableExtraGravity))
{
if (disableExtraGravity)
{
- disableRotationGravity.Enable();
- disableRotationGravity2.Enable();
- disableRotationGravity3.Enable();
- disableRotationGravity4.Enable();
- disableRotationGravity5.Enable();
- disableGravityXZUpdate.Enable();
+ disableExtraGravityEnable();
}
else
{
- disableRotationGravity.Disable();
- disableRotationGravity2.Disable();
- disableRotationGravity3.Disable();
- disableRotationGravity4.Disable();
- disableRotationGravity5.Disable();
- disableGravityXZUpdate.Disable();
+ disableExtraGravityDisable();
}
}
if (ImGui.BeginItemTooltip())
{
- ImGui.Text("This can stop rotations from causing your character to start falling.");
+ ImGui.Text("This can stop you from starting to fall when going out of bounds and/or rotating.");
ImGui.EndTooltip();
}
if (!disableGravity)