diff --git a/DesktopVRIK/BTKUI_Integration/BTKUI_Integration.cs b/DesktopVRIK/BTKUI_Integration/BTKUI_Integration.cs new file mode 100644 index 0000000..c0b9b1c --- /dev/null +++ b/DesktopVRIK/BTKUI_Integration/BTKUI_Integration.cs @@ -0,0 +1,30 @@ +using System.Runtime.CompilerServices; +using BTKUILib; +using BTKUILib.UIObjects; + +namespace NAK.Melons.DesktopVRIK.BTKUI_Integration; + +public static class BTKUI_Integration +{ + [MethodImpl(MethodImplOptions.NoInlining)] + public static void Init() + { + Page miscPage = QuickMenuAPI.MiscTabPage; + Category CategoryUI = miscPage.AddCategory("DesktopVRIK"); + + var setting_Enabled = CategoryUI.AddToggle(DesktopVRIKMod.m_entryEnabled.DisplayName, DesktopVRIKMod.m_entryEnabled.Description, DesktopVRIKMod.m_entryEnabled.Value); + setting_Enabled.OnValueUpdated += b => DesktopVRIKMod.m_entryEnabled.Value = b; + + var setting_EnforceViewPosition = CategoryUI.AddToggle(DesktopVRIKMod.m_entryEnforceViewPosition.DisplayName, DesktopVRIKMod.m_entryEnforceViewPosition.Description, DesktopVRIKMod.m_entryEnforceViewPosition.Value); + setting_EnforceViewPosition.OnValueUpdated += b => DesktopVRIKMod.m_entryEnforceViewPosition.Value = b; + + var setting_DisableEmoteVRIK = CategoryUI.AddToggle(DesktopVRIKMod.m_entryEmoteVRIK.DisplayName, DesktopVRIKMod.m_entryEmoteVRIK.Description, DesktopVRIKMod.m_entryEmoteVRIK.Value); + setting_DisableEmoteVRIK.OnValueUpdated += b => DesktopVRIKMod.m_entryEmoteVRIK.Value = b; + + var setting_DisableEmoteLookAtIK = CategoryUI.AddToggle(DesktopVRIKMod.m_entryEmoteLookAtIK.DisplayName, DesktopVRIKMod.m_entryEmoteLookAtIK.Description, DesktopVRIKMod.m_entryEmoteLookAtIK.Value); + setting_DisableEmoteLookAtIK.OnValueUpdated += b => DesktopVRIKMod.m_entryEmoteLookAtIK.Value = b; + + var setting_EmulateHipMovementWeight = miscPage.AddSlider(DesktopVRIKMod.m_entryEmulateVRChatHipMovementWeight.DisplayName, DesktopVRIKMod.m_entryEmulateVRChatHipMovementWeight.Description, DesktopVRIKMod.m_entryEmulateVRChatHipMovementWeight.Value, 0f, 1f); + setting_EmulateHipMovementWeight.OnValueUpdated += f => DesktopVRIKMod.m_entryEmulateVRChatHipMovementWeight.Value = f; + } +} \ No newline at end of file diff --git a/DesktopVRIK/DesktopVRIK.cs b/DesktopVRIK/DesktopVRIK.cs index 83b8408..99c2dee 100644 --- a/DesktopVRIK/DesktopVRIK.cs +++ b/DesktopVRIK/DesktopVRIK.cs @@ -7,19 +7,17 @@ using RootMotion.FinalIK; using UnityEngine; using UnityEngine.Events; -namespace DesktopVRIK; +namespace NAK.Melons.DesktopVRIK; public class DesktopVRIK : MonoBehaviour { public static DesktopVRIK Instance; - public bool Setting_Enabled, - Setting_EmulateVRChatHipMovement, - Setting_EnforceViewPosition, - Setting_EmoteVRIK, - Setting_EmoteLookAtIK, - Setting_PlantFeet; - public float Setting_EmulateVRChatHipMovementWeight; + public static bool Setting_Enabled, + Setting_EnforceViewPosition, + Setting_EmoteVRIK, + Setting_EmoteLookAtIK; + public static float Setting_EmulateVRChatHipMovementWeight; public Transform viewpoint; public Vector3 initialCamPos; @@ -31,6 +29,7 @@ public class DesktopVRIK : MonoBehaviour public void ChangeViewpointHandling(bool enabled) { + if (Setting_EnforceViewPosition == enabled) return; Setting_EnforceViewPosition = enabled; if (enabled) { @@ -39,28 +38,43 @@ public class DesktopVRIK : MonoBehaviour } PlayerSetup.Instance.desktopCamera.transform.localPosition = initialCamPos; } - + public void OnPreSolverUpdate() { + //this order matters, rotation offset will be choppy if avatar is not cenetered first //Reset avatar offset (VRIK will literally make you walk away from root otherwise) IKSystem.vrik.transform.localPosition = Vector3.zero; IKSystem.vrik.transform.localRotation = Quaternion.identity; //VRChat hip movement emulation - if (Setting_EmulateVRChatHipMovement) + if (Setting_EmulateVRChatHipMovementWeight != 0) { float angle = PlayerSetup.Instance.desktopCamera.transform.localEulerAngles.x; - angle = (angle > 180) ? angle - 360 : angle; - float weight = (Setting_EmulateVRChatHipMovementWeight - MovementSystem.Instance.movementVector.magnitude); - Quaternion rotation = Quaternion.AngleAxis(angle * weight, IKSystem.Instance.avatar.transform.right); + if (angle > 180) angle -= 360; + float leanAmount = angle * (1 - MovementSystem.Instance.movementVector.magnitude) * Setting_EmulateVRChatHipMovementWeight; + Quaternion rotation = Quaternion.AngleAxis(leanAmount, IKSystem.Instance.avatar.transform.right); IKSystem.vrik.solver.AddRotationOffset(IKSolverVR.RotationOffset.Head, rotation); } - IKSystem.vrik.solver.plantFeet = Setting_PlantFeet; + IKSystem.vrik.solver.plantFeet = true; } public void CalibrateDesktopVRIK(CVRAvatar avatar) { + //ikpose layer (specified by avatar author) + int? ikposeLayerIndex = PlayerSetup.Instance.animatorManager.GetAnimatorLayerIndex("IKPose"); + int? locoLayerIndex = PlayerSetup.Instance.animatorManager.GetAnimatorLayerIndex("Locomotion/Emotes"); + + if (ikposeLayerIndex != -1) + { + PlayerSetup.Instance.animatorManager.SetAnimatorLayerWeight("IKPose", 1f); + if (locoLayerIndex != -1) + { + PlayerSetup.Instance.animatorManager.SetAnimatorLayerWeight("Locomotion/Emotes", 0f); + } + IKSystem.Instance.animator.Update(0f); + } + + //Stuff to make bad armatures work (Fuck you Default Robot Kyle) - IKSystem.Instance.animator.cullingMode = AnimatorCullingMode.AlwaysAnimate; avatar.transform.localPosition = Vector3.zero; Quaternion originalRotation = avatar.transform.rotation; avatar.transform.rotation = Quaternion.identity; @@ -69,10 +83,11 @@ public class DesktopVRIK : MonoBehaviour IKSystem.vrik.fixTransforms = false; IKSystem.vrik.solver.plantFeet = false; - IKSystem.vrik.solver.locomotion.weight = 1f; + IKSystem.vrik.solver.locomotion.weight = 0f; IKSystem.vrik.solver.locomotion.angleThreshold = 30f; IKSystem.vrik.solver.locomotion.maxLegStretch = 0.75f; //nuke weights + IKSystem.vrik.AutoDetectReferences(); IKSystem.vrik.solver.spine.headClampWeight = 0f; IKSystem.vrik.solver.spine.minHeadHeight = 0f; IKSystem.vrik.solver.leftArm.positionWeight = 0f; @@ -115,7 +130,15 @@ public class DesktopVRIK : MonoBehaviour IKSystem.vrik.onPreSolverUpdate.AddListener(new UnityAction(this.OnPreSolverUpdate)); } - //(Fuck you Default Robot Kyle).. oh wait nvm, not related + if (ikposeLayerIndex != -1) + { + PlayerSetup.Instance.animatorManager.SetAnimatorLayerWeight("IKPose", 0f); + if (locoLayerIndex != -1) + { + PlayerSetup.Instance.animatorManager.SetAnimatorLayerWeight("Locomotion/Emotes", 1f); + } + } + avatar.transform.rotation = originalRotation; IKSystem.Instance.ResetIK(); } diff --git a/DesktopVRIK/DesktopVRIK.csproj b/DesktopVRIK/DesktopVRIK.csproj index c947a92..c432ed3 100644 --- a/DesktopVRIK/DesktopVRIK.csproj +++ b/DesktopVRIK/DesktopVRIK.csproj @@ -18,21 +18,21 @@ ..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\ChilloutVR\ChilloutVR_Data\Managed\Assembly-CSharp-firstpass.dll + + ..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\ChilloutVR\Mods\BTKUILib.dll + ..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\ChilloutVR\ChilloutVR_Data\Managed\Cohtml.Runtime.dll - - ..\..\Giamoz\Giamoz\bin\Debug\net472\Giamoz.dll - C:\Program Files (x86)\Steam\steamapps\common\ChilloutVR\MelonLoader\MelonLoader.dll - - C:\Program Files (x86)\Steam\steamapps\common\ChilloutVR\ChilloutVR_Data\Managed\SteamVR.dll - ..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\ChilloutVR\ChilloutVR_Data\Managed\UnityEngine.AnimationModule.dll + + ..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\ChilloutVR\ChilloutVR_Data\Managed\UnityEngine.AssetBundleModule.dll + C:\Program Files (x86)\Steam\steamapps\common\ChilloutVR\ChilloutVR_Data\Managed\UnityEngine.CoreModule.dll diff --git a/DesktopVRIK/HarmonyPatches.cs b/DesktopVRIK/HarmonyPatches.cs index 07629d0..7f4132e 100644 --- a/DesktopVRIK/HarmonyPatches.cs +++ b/DesktopVRIK/HarmonyPatches.cs @@ -4,7 +4,6 @@ using ABI_RC.Core.Savior; using ABI_RC.Systems.IK; using ABI_RC.Systems.IK.SubSystems; using ABI_RC.Systems.MovementSystem; -using ABI_RC.Core.Player.AvatarTracking.Local; using HarmonyLib; using RootMotion.FinalIK; using UnityEngine; @@ -33,17 +32,17 @@ using UnityEngine; **/ -namespace DesktopVRIK; +namespace NAK.Melons.DesktopVRIK.HarmonyPatches; -[HarmonyPatch] -internal class HarmonyPatches +class PlayerSetupPatches { + private static bool emotePlayed = false; [HarmonyPostfix] [HarmonyPatch(typeof(PlayerSetup), "SetupAvatarGeneral")] - private static void SetupDesktopIKSystem(ref CVRAvatar ____avatarDescriptor, ref Animator ____animator) + static void SetupDesktopIKSystem(ref CVRAvatar ____avatarDescriptor, ref Animator ____animator) { - if (!MetaPort.Instance.isUsingVr && DesktopVRIK.Instance.Setting_Enabled) + if (!MetaPort.Instance.isUsingVr && DesktopVRIK.Setting_Enabled) { if (____avatarDescriptor != null && ____animator != null && ____animator.isHuman) { @@ -53,11 +52,56 @@ internal class HarmonyPatches } } + [HarmonyPostfix] + [HarmonyPatch(typeof(PlayerSetup), "Update")] + private static void CorrectVRIK(ref bool ____emotePlaying, ref LookAtIK ___lookIK) + { + if (!MetaPort.Instance.isUsingVr && DesktopVRIK.Setting_Enabled) + { + bool changed = ____emotePlaying != emotePlayed; + if (changed) + { + emotePlayed = ____emotePlaying; + IKSystem.vrik.transform.localPosition = Vector3.zero; + IKSystem.vrik.transform.localRotation = Quaternion.identity; + if (DesktopVRIK.Setting_EmoteLookAtIK && ___lookIK != null) + { + ___lookIK.enabled = !____emotePlaying; + } + if (DesktopVRIK.Setting_EmoteVRIK) + { + BodySystem.TrackingEnabled = !____emotePlaying; + IKSystem.vrik.solver?.Reset(); + } + } + } + } + + [HarmonyPostfix] + [HarmonyPatch(typeof(PlayerSetup), "HandleDesktopCameraPosition")] + private static void Postfix_PlayerSetup_HandleDesktopCameraPosition(bool ignore, ref PlayerSetup __instance, ref MovementSystem ____movementSystem, ref int ___headBobbingLevel) + { + if (DesktopVRIK.Setting_Enabled && DesktopVRIK.Setting_EnforceViewPosition) + { + if (!____movementSystem.disableCameraControl || ignore) + { + if (___headBobbingLevel == 2 && DesktopVRIK.Instance.viewpoint != null) + { + __instance.desktopCamera.transform.localPosition = Vector3.zero; + __instance.desktopCameraRig.transform.position = DesktopVRIK.Instance.viewpoint.position; + } + } + } + } +} + +class IKSystemPatches +{ [HarmonyPostfix] [HarmonyPatch(typeof(IKSystem), "InitializeAvatar")] private static void InitializeDesktopAvatarVRIK(CVRAvatar avatar, ref VRIK ____vrik, ref HumanPoseHandler ____poseHandler, ref HumanPose ___humanPose) { - if (!MetaPort.Instance.isUsingVr && DesktopVRIK.Instance.Setting_Enabled) + if (!MetaPort.Instance.isUsingVr && DesktopVRIK.Setting_Enabled) { if (IKSystem.Instance.animator != null && IKSystem.Instance.animator.avatar != null && IKSystem.Instance.animator.avatar.isHuman) { @@ -66,11 +110,12 @@ internal class HarmonyPatches { ____poseHandler = new HumanPoseHandler(IKSystem.Instance.animator.avatar, IKSystem.Instance.animator.transform); } + ____poseHandler.GetHumanPose(ref ___humanPose); - for (int i = 0; i < TPoseMuscles.Length; i++) - { - IKSystem.Instance.ApplyMuscleValue((MuscleIndex)i, TPoseMuscles[i], ref ___humanPose.muscles); - } + //for (int i = 0; i < TPoseMuscles.Length; i++) + //{ + // IKSystem.Instance.ApplyMuscleValue((MuscleIndex)i, TPoseMuscles[i], ref ___humanPose.muscles); + //} ____poseHandler.SetHumanPose(ref ___humanPose); //need IKSystem to see VRIK component for setup @@ -85,158 +130,102 @@ internal class HarmonyPatches } } - private static bool emotePlayed = false; - - [HarmonyPostfix] - [HarmonyPatch(typeof(PlayerSetup), "Update")] - private static void CorrectVRIK(ref bool ____emotePlaying, ref LookAtIK ___lookIK) + private static readonly float[] TPoseMuscles = new float[] { - if (MetaPort.Instance.isUsingVr || DesktopVRIK.Instance == null) return; - - //might need to rework this in the future - if (____emotePlaying && !emotePlayed) - { - emotePlayed = true; - if (DesktopVRIK.Instance.Setting_EmoteVRIK) - { - BodySystem.TrackingEnabled = false; - //IKSystem.vrik.solver.Reset(); - } - if (DesktopVRIK.Instance.Setting_EmoteLookAtIK && ___lookIK != null) - { - ___lookIK.enabled = false; - } - IKSystem.vrik.transform.localPosition = Vector3.zero; - IKSystem.vrik.transform.localRotation = Quaternion.identity; - } - else if (!____emotePlaying && emotePlayed) - { - emotePlayed = false; - IKSystem.vrik.solver.Reset(); - BodySystem.TrackingEnabled = true; - if (___lookIK != null) - { - ___lookIK.enabled = true; - } - IKSystem.vrik.transform.localPosition = Vector3.zero; - IKSystem.vrik.transform.localRotation = Quaternion.identity; - } - } - - [HarmonyPostfix] - [HarmonyPatch(typeof(PlayerSetup), "HandleDesktopCameraPosition")] - private static void Postfix_PlayerSetup_HandleDesktopCameraPosition(bool ignore, ref PlayerSetup __instance, ref MovementSystem ____movementSystem, ref int ___headBobbingLevel) - { - if (DesktopVRIK.Instance.Setting_EnforceViewPosition) - { - if (!____movementSystem.disableCameraControl || ignore) - { - if (___headBobbingLevel == 2 && DesktopVRIK.Instance.viewpoint != null) - { - __instance.desktopCamera.transform.localPosition = Vector3.zero; - __instance.desktopCameraRig.transform.position = DesktopVRIK.Instance.viewpoint.position; - } - } - } - } - - private static readonly float[] TPoseMuscles = new float[] - { - 0f, - 0f, - 0f, - 0f, - 0f, - 0f, - 0f, - 0f, - 0f, - 0f, - 0f, - 0f, - 0f, - 0f, - 0f, - 0f, - 0f, - 0f, - 0f, - 0f, - 0f, - 0.6001086f, - 8.6213E-05f, - -0.0003308152f, - 0.9999163f, - -9.559652E-06f, - 3.41413E-08f, - -3.415095E-06f, - -1.024528E-07f, - 0.6001086f, - 8.602679E-05f, - -0.0003311098f, - 0.9999163f, - -9.510122E-06f, - 1.707468E-07f, - -2.732077E-06f, - 2.035554E-15f, - -2.748694E-07f, - 2.619475E-07f, - 0.401967f, - 0.3005583f, - 0.04102772f, - 0.9998822f, - -0.04634236f, - 0.002522987f, - 0.0003842837f, - -2.369134E-07f, - -2.232262E-07f, - 0.4019674f, - 0.3005582f, - 0.04103433f, - 0.9998825f, - -0.04634996f, - 0.00252335f, - 0.000383302f, - -1.52127f, - 0.2634507f, - 0.4322457f, - 0.6443988f, - 0.6669409f, - -0.4663372f, - 0.8116828f, - 0.8116829f, - 0.6678119f, - -0.6186608f, - 0.8116842f, - 0.8116842f, - 0.6677991f, - -0.619225f, - 0.8116842f, - 0.811684f, - 0.6670032f, - -0.465875f, - 0.811684f, - 0.8116836f, - -1.520098f, - 0.2613016f, - 0.432256f, - 0.6444503f, - 0.6668426f, - -0.4670413f, - 0.8116828f, - 0.8116828f, - 0.6677986f, - -0.6192409f, - 0.8116841f, - 0.811684f, - 0.6677839f, - -0.6198869f, - 0.8116839f, - 0.8116838f, - 0.6668782f, - -0.4667901f, - 0.8116842f, - 0.811684f - }; - -} \ No newline at end of file + 0f, + 0f, + 0f, + 0f, + 0f, + 0f, + 0f, + 0f, + 0f, + 0f, + 0f, + 0f, + 0f, + 0f, + 0f, + 0f, + 0f, + 0f, + 0f, + 0f, + 0f, + 0.6001086f, + 8.6213E-05f, + -0.0003308152f, + 0.9999163f, + -9.559652E-06f, + 3.41413E-08f, + -3.415095E-06f, + -1.024528E-07f, + 0.6001086f, + 8.602679E-05f, + -0.0003311098f, + 0.9999163f, + -9.510122E-06f, + 1.707468E-07f, + -2.732077E-06f, + 2.035554E-15f, + -2.748694E-07f, + 2.619475E-07f, + 0.401967f, + 0.3005583f, + 0.04102772f, + 0.9998822f, + -0.04634236f, + 0.002522987f, + 0.0003842837f, + -2.369134E-07f, + -2.232262E-07f, + 0.4019674f, + 0.3005582f, + 0.04103433f, + 0.9998825f, + -0.04634996f, + 0.00252335f, + 0.000383302f, + -1.52127f, + 0.2634507f, + 0.4322457f, + 0.6443988f, + 0.6669409f, + -0.4663372f, + 0.8116828f, + 0.8116829f, + 0.6678119f, + -0.6186608f, + 0.8116842f, + 0.8116842f, + 0.6677991f, + -0.619225f, + 0.8116842f, + 0.811684f, + 0.6670032f, + -0.465875f, + 0.811684f, + 0.8116836f, + -1.520098f, + 0.2613016f, + 0.432256f, + 0.6444503f, + 0.6668426f, + -0.4670413f, + 0.8116828f, + 0.8116828f, + 0.6677986f, + -0.6192409f, + 0.8116841f, + 0.811684f, + 0.6677839f, + -0.6198869f, + 0.8116839f, + 0.8116838f, + 0.6668782f, + -0.4667901f, + 0.8116842f, + 0.811684f + }; +} diff --git a/DesktopVRIK/Main.cs b/DesktopVRIK/Main.cs index 6a25069..e236813 100644 --- a/DesktopVRIK/Main.cs +++ b/DesktopVRIK/Main.cs @@ -2,35 +2,42 @@ using MelonLoader; using UnityEngine; -namespace DesktopVRIK; +namespace NAK.Melons.DesktopVRIK; 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_entryEmulateVRChatHipMovementWeight; + internal static MelonPreferences_Category m_categoryDesktopVRIK; + internal static MelonPreferences_Entry m_entryEnabled, + m_entryEnforceViewPosition, + m_entryEmoteVRIK, + m_entryEmoteLookAtIK; + internal 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", 0.5f, description: "The weight modifier for the hip movement."); + m_entryEnabled = m_categoryDesktopVRIK.CreateEntry("Enabled", true, description: "Toggle DesktopVRIK entirely. Requires avatar reload."); + m_entryEmulateVRChatHipMovementWeight = m_categoryDesktopVRIK.CreateEntry("Body Movement Weight", 0.5f, description: "Emulates VRChat-like body movement when looking up/down. Set to 0 to disable."); 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."); - m_entryPlantFeet = m_categoryDesktopVRIK.CreateEntry("Plant Feet", true, description: "Enables Plant Feet for VRIK while in Desktop. Keeps avatar on ground when entering Idle instead of hovering."); foreach (var setting in m_categoryDesktopVRIK.Entries) { setting.OnEntryValueChangedUntyped.Subscribe(OnUpdateSettings); } + //BTKUILib Misc Support + if (MelonMod.RegisteredMelons.Any(it => it.Info.Name == "BTKUILib")) + { + MelonLogger.Msg("Initializing BTKUILib support."); + BTKUI_Integration.BTKUI_Integration.Init(); + } + + //Apply patches (i stole) + ApplyPatches(typeof(HarmonyPatches.PlayerSetupPatches)); + ApplyPatches(typeof(HarmonyPatches.IKSystemPatches)); + MelonLoader.MelonCoroutines.Start(WaitForLocalPlayer()); } @@ -47,14 +54,25 @@ public class DesktopVRIKMod : MelonMod private void UpdateAllSettings() { 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; + DesktopVRIK.Setting_Enabled = m_entryEnabled.Value; + DesktopVRIK.Setting_EmulateVRChatHipMovementWeight = Mathf.Clamp01(m_entryEmulateVRChatHipMovementWeight.Value); + DesktopVRIK.Setting_EmoteVRIK = m_entryEmoteVRIK.Value; + DesktopVRIK.Setting_EmoteLookAtIK = m_entryEmoteLookAtIK.Value; DesktopVRIK.Instance.ChangeViewpointHandling(m_entryEnforceViewPosition.Value); } private void OnUpdateSettings(object arg1, object arg2) => UpdateAllSettings(); + + private void ApplyPatches(Type type) + { + try + { + HarmonyInstance.PatchAll(type); + } + catch (Exception e) + { + LoggerInstance.Msg($"Failed while patching {type.Name}!"); + LoggerInstance.Error(e); + } + } } \ No newline at end of file diff --git a/DesktopVRIK/Properties/AssemblyInfo.cs b/DesktopVRIK/Properties/AssemblyInfo.cs index 47ffe51..fecfa4f 100644 --- a/DesktopVRIK/Properties/AssemblyInfo.cs +++ b/DesktopVRIK/Properties/AssemblyInfo.cs @@ -6,13 +6,13 @@ using System.Reflection; [assembly: AssemblyVersion(AssemblyInfoParams.Version)] [assembly: AssemblyFileVersion(AssemblyInfoParams.Version)] [assembly: AssemblyInformationalVersion(AssemblyInfoParams.Version)] -[assembly: AssemblyTitle(nameof(DesktopVRIK))] +[assembly: AssemblyTitle(nameof(NAK.Melons.DesktopVRIK))] [assembly: AssemblyCompany(AssemblyInfoParams.Author)] -[assembly: AssemblyProduct(nameof(DesktopVRIK))] +[assembly: AssemblyProduct(nameof(NAK.Melons.DesktopVRIK))] [assembly: MelonInfo( - typeof(DesktopVRIK.DesktopVRIKMod), - nameof(DesktopVRIK), + typeof(NAK.Melons.DesktopVRIK.DesktopVRIKMod), + nameof(NAK.Melons.DesktopVRIK), AssemblyInfoParams.Version, AssemblyInfoParams.Author, downloadLink: "https://github.com/NotAKidOnSteam/DesktopVRIK" @@ -21,10 +21,11 @@ using System.Reflection; [assembly: MelonGame("Alpha Blend Interactive", "ChilloutVR")] [assembly: MelonPlatform(MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)] [assembly: MelonPlatformDomain(MelonPlatformDomainAttribute.CompatibleDomains.MONO)] +[assembly: MelonOptionalDependencies("BTKUILib")] namespace DesktopVRIK.Properties; internal static class AssemblyInfoParams { - public const string Version = "1.0.4"; + public const string Version = "1.0.5"; public const string Author = "NotAKidoS"; } \ No newline at end of file