diff --git a/DesktopVRIK/DesktopVRIK.cs b/DesktopVRIK/DesktopVRIK.cs index 06f66cc..9377ce1 100644 --- a/DesktopVRIK/DesktopVRIK.cs +++ b/DesktopVRIK/DesktopVRIK.cs @@ -13,12 +13,13 @@ public class DesktopVRIK : MonoBehaviour { public static DesktopVRIK Instance; - public bool Setting_Enabled; - public bool Setting_EmulateVRChatHipMovement; - public bool Setting_EnforceViewPosition; - public bool Setting_EmoteVRIK; - public bool Setting_EmoteLookAtIK; - public bool Setting_PlantFeet; + public bool Setting_Enabled, + Setting_EmulateVRChatHipMovement, + Setting_EnforceViewPosition, + Setting_EmoteVRIK, + Setting_EmoteLookAtIK, + Setting_PlantFeet; + public float Setting_EmulateVRChatHipMovementWeight; public Transform viewpoint; public Vector3 initialCamPos; @@ -49,7 +50,7 @@ public class DesktopVRIK : MonoBehaviour { float angle = PlayerSetup.Instance.desktopCamera.transform.localEulerAngles.x; angle = (angle > 180) ? angle - 360 : angle; - float weight = (1 - MovementSystem.Instance.movementVector.magnitude); + float weight = (Setting_EmulateVRChatHipMovementWeight - MovementSystem.Instance.movementVector.magnitude); Quaternion rotation = Quaternion.AngleAxis(angle * weight, IKSystem.Instance.avatar.transform.right); IKSystem.vrik.solver.AddRotationOffset(IKSolverVR.RotationOffset.Head, rotation); } diff --git a/DesktopVRIK/HarmonyPatches.cs b/DesktopVRIK/HarmonyPatches.cs index fb2d796..192163b 100644 --- a/DesktopVRIK/HarmonyPatches.cs +++ b/DesktopVRIK/HarmonyPatches.cs @@ -78,6 +78,8 @@ internal class HarmonyPatches { ___lookIK.enabled = false; } + IKSystem.vrik.transform.localPosition = Vector3.zero; + IKSystem.vrik.transform.localRotation = Quaternion.identity; } else if (!____emotePlaying && emotePlayed) { @@ -88,6 +90,8 @@ internal class HarmonyPatches { ___lookIK.enabled = true; } + IKSystem.vrik.transform.localPosition = Vector3.zero; + IKSystem.vrik.transform.localRotation = Quaternion.identity; } } diff --git a/DesktopVRIK/Main.cs b/DesktopVRIK/Main.cs index ffed9c8..bd6d50e 100644 --- a/DesktopVRIK/Main.cs +++ b/DesktopVRIK/Main.cs @@ -1,5 +1,6 @@ using ABI_RC.Core.Player; using MelonLoader; +using UnityEngine; namespace DesktopVRIK; @@ -7,12 +8,19 @@ public class DesktopVRIKMod : MelonMod { internal const string SettingsCategory = "DesktopVRIK"; private static MelonPreferences_Category m_categoryDesktopVRIK; - private static MelonPreferences_Entry m_entryEnabled, m_entryEmulateHipMovement, m_entryEnforceViewPosition, m_entryEmoteVRIK, m_entryEmoteLookAtIK, m_entryPlantFeet; + private static MelonPreferences_Entry m_entryEnabled, + m_entryEmulateHipMovement, + m_entryEnforceViewPosition, + m_entryEmoteVRIK, + m_entryEmoteLookAtIK, + m_entryPlantFeet; + private static MelonPreferences_Entry m_entryEmulateVRChatHipMovementWeight; public override void OnInitializeMelon() { m_categoryDesktopVRIK = MelonPreferences.CreateCategory(SettingsCategory); m_entryEnabled = m_categoryDesktopVRIK.CreateEntry("Enabled", true, description: "Attempt to give Desktop VRIK on avatar load."); m_entryEmulateHipMovement = m_categoryDesktopVRIK.CreateEntry("Emulate Hip Movement", true, description: "Emulates VRChat-like hip movement when moving head up/down on desktop."); + m_entryEmulateVRChatHipMovementWeight = m_categoryDesktopVRIK.CreateEntry("Hip Movement Weight", 1f, description: "The weight modifier for the hip movement."); m_entryEnforceViewPosition = m_categoryDesktopVRIK.CreateEntry("Enforce View Position", false, description: "Corrects view position to use VRIK offsets."); m_entryEmoteVRIK = m_categoryDesktopVRIK.CreateEntry("Disable Emote VRIK", true, description: "Disable VRIK while emoting. Only disable if you are ok with looking dumb."); m_entryEmoteLookAtIK = m_categoryDesktopVRIK.CreateEntry("Disable Emote LookAtIK", true, description: "Disable LookAtIK while emoting. This setting doesn't really matter, as LookAtIK isn't networked while doing an emote."); @@ -41,6 +49,7 @@ public class DesktopVRIKMod : MelonMod if (!DesktopVRIK.Instance) return; DesktopVRIK.Instance.Setting_Enabled = m_entryEnabled.Value; DesktopVRIK.Instance.Setting_EmulateVRChatHipMovement = m_entryEmulateHipMovement.Value; + DesktopVRIK.Instance.Setting_EmulateVRChatHipMovementWeight = Mathf.Clamp01(m_entryEmulateVRChatHipMovementWeight.Value); DesktopVRIK.Instance.Setting_EmoteVRIK = m_entryEmoteVRIK.Value; DesktopVRIK.Instance.Setting_EmoteLookAtIK = m_entryEmoteLookAtIK.Value; DesktopVRIK.Instance.Setting_PlantFeet = m_entryPlantFeet.Value; diff --git a/DesktopVRIK/Properties/AssemblyInfo.cs b/DesktopVRIK/Properties/AssemblyInfo.cs index a048daf..47ffe51 100644 --- a/DesktopVRIK/Properties/AssemblyInfo.cs +++ b/DesktopVRIK/Properties/AssemblyInfo.cs @@ -25,6 +25,6 @@ using System.Reflection; namespace DesktopVRIK.Properties; internal static class AssemblyInfoParams { - public const string Version = "1.0.3"; + public const string Version = "1.0.4"; public const string Author = "NotAKidoS"; } \ No newline at end of file