From 4572387d311de9549ab7396160d675e538935def Mon Sep 17 00:00:00 2001 From: Andrew Opalach Date: Tue, 25 Mar 2025 09:32:48 -0400 Subject: Handle player change, cleanup --- Config.cs | 21 +++++++++++++------ Plugin.cs | 72 ++++++++++++++++++++++++++------------------------------------- 2 files changed, 45 insertions(+), 48 deletions(-) diff --git a/Config.cs b/Config.cs index eedd19c..481f8b2 100755 --- a/Config.cs +++ b/Config.cs @@ -24,6 +24,7 @@ namespace MHWNewCamera Down = Key.NumPad1; */ } + public Key ToggleFreeCamera { get; set; } public Key TogglePerspectiveCamera { get; set; } /* @@ -42,15 +43,23 @@ namespace MHWNewCamera public struct Settings { + public const float DEFAULT_SPEED = 0.55f; + public const float DEFAULT_KEY_SPEED = 0.2f; + public const float DEFAULT_SPEED_MODIFIER = 0.4f; + public const float DEFAULT_SENSITIVITY = 0.112f; + public const int DEFAULT_DEADZONE = 4750; + public const float DEFAULT_PITCH_LIMIT = 88.25f; + public Settings() { - CameraSpeed = -1.0f; - CameraKeySpeed = -1.0f; - CameraSpeedModifier = -1.0f; - CameraSensitivity = -1.0f; - StickDeadzone = -1; - CameraPitchLimit = -1.0f; + CameraSpeed = DEFAULT_SPEED; + CameraKeySpeed = DEFAULT_KEY_SPEED; + CameraSpeedModifier = DEFAULT_SPEED_MODIFIER; + CameraSensitivity = DEFAULT_SENSITIVITY; + StickDeadzone = DEFAULT_DEADZONE; + CameraPitchLimit = DEFAULT_PITCH_LIMIT; } + public float CameraSpeed { get; set; } public float CameraKeySpeed { get; set; } public float CameraSpeedModifier { get; set; } diff --git a/Plugin.cs b/Plugin.cs index 6f28300..d605321 100755 --- a/Plugin.cs +++ b/Plugin.cs @@ -16,20 +16,10 @@ namespace MHWNewCamera public string Name => "MHW New Camera"; public string Author => "pizza"; - public const float DEFAULT_FOV = 60.0f; - public const float DEFAULT_SPEED = 0.55f; - public const float DEFAULT_KEY_SPEED = 0.2f; - public const float DEFAULT_SPEED_MODIFIER = 0.4f; - public const float DEFAULT_SENSITIVITY = 0.112f; - public const int DEFAULT_DEADZONE = 4750; - public const float DEFAULT_PITCH_LIMIT = 88.25f; + private const float DEFAULT_FOV = 60.0f; - private float cameraFov = DEFAULT_FOV; - private float cameraForward = 0.0f; - private float cameraLeft = 0.0f; - private float cameraXOffset = 0.0f; - private float cameraYOffset = 0.0f; - private float cameraZOffset = 0.0f; + private bool keyboardEnabled; + private Config.Binds keyboardBinds; private float cameraSpeed; private float cameraKeySpeed; @@ -38,6 +28,12 @@ namespace MHWNewCamera private int stickDeadzone; private float cameraPitchLimit; + private float cameraFov = DEFAULT_FOV; + private float cameraForward = 0.0f; + private float cameraLeft = 0.0f; + private float cameraXOffset = 0.0f; + private float cameraYOffset = 0.0f; + private float cameraZOffset = 0.0f; private float cameraPitch = 0.0f; private float cameraYaw = 0.0f; private float cameraRoll = 0.0f; @@ -50,6 +46,7 @@ namespace MHWNewCamera private bool offsetPerspective = false; private bool toggleOffsetPerspective = false; private Camera? targetCamera = null; + private Player? lastPlayer = null; private float previousFov = -1.0f; private bool decreasingFov = false; private bool changeAfterOpenMap = true; @@ -65,16 +62,13 @@ namespace MHWNewCamera private delegate float CalculateMovementDelegate(int stickValue); private Hook? calculateMovementHook; + private bool disableCollision = false; + private bool disableExtraCollision = false; private Patch disableXCollision; private Patch disableYCollision; private Patch disableSecondaryYCollision; private Patch disableZCollision; private Patch disableExtraYCollision; - private bool disableCollision = false; - private bool disableExtraCollision = false; - - private bool keyboardEnabled; - private Config.Binds keyboardBinds; private string typedPresetName = ""; @@ -84,26 +78,16 @@ namespace MHWNewCamera { Config config = ConfigManager.GetConfig(this); + keyboardEnabled = config.KeyboardEnabled; + keyboardBinds = config.KeyboardBinds; + Config.Settings settings = config.CameraSettings; - if (settings.CameraSpeed == -1.0f) - settings.CameraSpeed = DEFAULT_SPEED; - if (settings.CameraKeySpeed == -1.0f) - settings.CameraKeySpeed = DEFAULT_KEY_SPEED; - if (settings.CameraSpeedModifier == -1.0f) - settings.CameraSpeedModifier = DEFAULT_SPEED_MODIFIER; - if (settings.CameraSensitivity == -1.0f) - settings.CameraSensitivity = DEFAULT_SENSITIVITY; - if (settings.StickDeadzone == -1) - settings.StickDeadzone = DEFAULT_DEADZONE; - if (settings.CameraPitchLimit == -1.0f) - settings.CameraPitchLimit = DEFAULT_PITCH_LIMIT; cameraSpeed = settings.CameraSpeed; cameraKeySpeed = settings.CameraKeySpeed; cameraSpeedModifier = settings.CameraSpeedModifier; cameraSensitivity = settings.CameraSensitivity; stickDeadzone = settings.StickDeadzone; cameraPitchLimit = settings.CameraPitchLimit; - config.CameraSettings = settings; toggleOffsetPerspective = config.PerspectiveCameraEnabled; if (config.Selected != "") @@ -116,9 +100,6 @@ namespace MHWNewCamera cameraRoll = preset.Roll; } - keyboardEnabled = config.KeyboardEnabled; - keyboardBinds = config.KeyboardBinds; - ConfigManager.SaveConfig(this); // Hook where we can adjust the camera position. @@ -483,12 +464,12 @@ namespace MHWNewCamera ImGui.InputInt("Stick Deadzone", ref stickDeadzone, 10); if (ImGui.Button("Default")) { - cameraSpeed = DEFAULT_SPEED; - cameraKeySpeed = DEFAULT_KEY_SPEED; - cameraSpeedModifier = DEFAULT_SPEED_MODIFIER; - cameraSensitivity = DEFAULT_SENSITIVITY; - stickDeadzone = DEFAULT_DEADZONE; - cameraPitchLimit = DEFAULT_PITCH_LIMIT; + cameraSpeed = Config.Settings.DEFAULT_SPEED; + cameraKeySpeed = Config.Settings.DEFAULT_KEY_SPEED; + cameraSpeedModifier = Config.Settings.DEFAULT_SPEED_MODIFIER; + cameraSensitivity = Config.Settings.DEFAULT_SENSITIVITY; + stickDeadzone = Config.Settings.DEFAULT_DEADZONE; + cameraPitchLimit = Config.Settings.DEFAULT_PITCH_LIMIT; } ImGui.SameLine(); if (ImGui.Button("Reset")) @@ -692,12 +673,12 @@ namespace MHWNewCamera if (Input.IsDown(keyboardBinds.IncreaseFOV)) { - cameraFov += adjustedKeySpeed; + cameraFov += adjustedKeySpeed / 2.0f; } if (Input.IsDown(keyboardBinds.DecreaseFOV)) { - cameraFov -= adjustedKeySpeed; + cameraFov -= adjustedKeySpeed / 2.0f; } if (Input.IsDown(keyboardBinds.Forward)) @@ -739,6 +720,13 @@ namespace MHWNewCamera if (player != null) { + if (offsetPerspective && player != lastPlayer) + { + // Update target camera on player change. + targetCamera = camera; + previousFov = -1.0f; + } + lastPlayer = player; if (toggleOffsetPerspective && !offsetPerspective) { offsetPerspective = true; -- cgit v1.2.3-101-g0448