From 674f572415b6d8bfb819726d6390973ce80d61c8 Mon Sep 17 00:00:00 2001 From: SDraw Date: Sat, 9 Sep 2023 19:57:17 +0300 Subject: [PATCH] Removed animation override fix from AMT into GMF --- README.md | 2 +- ml_amt/Main.cs | 5 ++--- .../JumpHeight.cs} | 10 +++++----- ml_amt/Properties/AssemblyInfo.cs | 2 +- ml_amt/README.md | 2 -- ml_amt/Settings.cs | 15 ++------------- ml_amt/Utils.cs | 5 ----- ml_amt/ml_amt.csproj | 4 +++- ml_amt/resources/menu.js | 7 ------- {ml_amt/Fixes => ml_gmf}/AnimatorAnalyzer.cs | 2 +- .../Fixes/AnimationOverrides.cs | 18 ++++++++---------- ml_gmf/Main.cs | 1 + ml_gmf/README.md | 1 + 13 files changed, 25 insertions(+), 49 deletions(-) rename ml_amt/{Fixes/MovementJumpFix.cs => Overhauls/JumpHeight.cs} (86%) rename {ml_amt/Fixes => ml_gmf}/AnimatorAnalyzer.cs (99%) rename ml_amt/Fixes/AnimatorOverrideControllerFix.cs => ml_gmf/Fixes/AnimationOverrides.cs (61%) diff --git a/README.md b/README.md index c441ee2..f347f5e 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ Merged set of MelonLoader mods for ChilloutVR. **Table for game build 2022r171p2:** | Full name | Short name | Latest version | Available in [CVRMA](https://github.com/knah/CVRMelonAssistant) | |:---------:|:----------:|:--------------:| :----------------------------------------------------------------| -| [Avatar Motion Tweaker](/ml_amt/README.md) | ml_amt | 1.3.1 [:arrow_down:](../../releases/latest/download/ml_amt.dll)| ✔ Yes | +| [Avatar Motion Tweaker](/ml_amt/README.md) | ml_amt | 1.3.2 [:arrow_down:](../../releases/latest/download/ml_amt.dll)| ✔ Yes
:hourglass_flowing_sand: Update review | | [Desktop Head Tracking](/ml_dht/README.md)| ml_dht | - | ✔ Yes
:warning:Broken | | [Desktop Reticle Switch](/ml_drs/README.md)| ml_drs | 1.0.1 [:arrow_down:](../../releases/latest/download/ml_drs.dll)| ✔ Yes | | [Extended Game Notifications](/ml_egn/README.md) | ml_egn | 1.0.3 [:arrow_down:](../../releases/latest/download/ml_egn.dll)| ✔ Yes | diff --git a/ml_amt/Main.cs b/ml_amt/Main.cs index 75baebc..2d7aafe 100644 --- a/ml_amt/Main.cs +++ b/ml_amt/Main.cs @@ -41,9 +41,8 @@ namespace ml_amt new HarmonyLib.HarmonyMethod(typeof(AvatarMotionTweaker).GetMethod(nameof(OnPlayspaceScale_Postfix), BindingFlags.Static | BindingFlags.NonPublic)) ); - // Fixes - Fixes.AnimatorOverrideControllerFix.Init(HarmonyInstance); - Fixes.MovementJumpFix.Init(HarmonyInstance); + // Overhauls + Overhauls.JumpHeight.Init(HarmonyInstance); ModSupporter.Init(); MelonLoader.MelonCoroutines.Start(WaitForLocalPlayer()); diff --git a/ml_amt/Fixes/MovementJumpFix.cs b/ml_amt/Overhauls/JumpHeight.cs similarity index 86% rename from ml_amt/Fixes/MovementJumpFix.cs rename to ml_amt/Overhauls/JumpHeight.cs index df18bc5..845f885 100644 --- a/ml_amt/Fixes/MovementJumpFix.cs +++ b/ml_amt/Overhauls/JumpHeight.cs @@ -7,9 +7,9 @@ using System.Collections; using System.Reflection; using UnityEngine; -namespace ml_amt.Fixes +namespace ml_amt.Overhauls { - static class MovementJumpFix + static class JumpHeight { static FieldInfo ms_avatarHeight = typeof(PlayerSetup).GetField("_avatarHeight", BindingFlags.NonPublic | BindingFlags.Instance); @@ -20,17 +20,17 @@ namespace ml_amt.Fixes p_instance.Patch( typeof(PlayerSetup).GetMethod(nameof(PlayerSetup.SetupAvatar)), null, - new HarmonyLib.HarmonyMethod(typeof(MovementJumpFix).GetMethod(nameof(OnSetupAvatar_Postfix), BindingFlags.Static | BindingFlags.NonPublic)) + new HarmonyLib.HarmonyMethod(typeof(JumpHeight).GetMethod(nameof(OnSetupAvatar_Postfix), BindingFlags.Static | BindingFlags.NonPublic)) ); p_instance.Patch( typeof(CVRWorld).GetMethod("SetupWorldRules", BindingFlags.NonPublic | BindingFlags.Instance), null, - new HarmonyLib.HarmonyMethod(typeof(MovementJumpFix).GetMethod(nameof(OnWorldRulesSetup_Postfix), BindingFlags.Static | BindingFlags.NonPublic)) + new HarmonyLib.HarmonyMethod(typeof(JumpHeight).GetMethod(nameof(OnWorldRulesSetup_Postfix), BindingFlags.Static | BindingFlags.NonPublic)) ); p_instance.Patch( typeof(PlayerSetup).GetMethod("SetupIKScaling", BindingFlags.NonPublic | BindingFlags.Instance), null, - new HarmonyLib.HarmonyMethod(typeof(MovementJumpFix).GetMethod(nameof(OnSetupIKScaling_Postfix), BindingFlags.Static | BindingFlags.NonPublic)) + new HarmonyLib.HarmonyMethod(typeof(JumpHeight).GetMethod(nameof(OnSetupIKScaling_Postfix), BindingFlags.Static | BindingFlags.NonPublic)) ); Settings.ScaledJumpChange += OnScaledJumpChange; diff --git a/ml_amt/Properties/AssemblyInfo.cs b/ml_amt/Properties/AssemblyInfo.cs index 3ca3e42..9087be9 100644 --- a/ml_amt/Properties/AssemblyInfo.cs +++ b/ml_amt/Properties/AssemblyInfo.cs @@ -1,4 +1,4 @@ -[assembly: MelonLoader.MelonInfo(typeof(ml_amt.AvatarMotionTweaker), "AvatarMotionTweaker", "1.3.1", "SDraw", "https://github.com/SDraw/ml_mods_cvr")] +[assembly: MelonLoader.MelonInfo(typeof(ml_amt.AvatarMotionTweaker), "AvatarMotionTweaker", "1.3.2", "SDraw", "https://github.com/SDraw/ml_mods_cvr")] [assembly: MelonLoader.MelonGame(null, "ChilloutVR")] [assembly: MelonLoader.MelonOptionalDependencies("ml_prm", "ml_pmc")] [assembly: MelonLoader.MelonPlatform(MelonLoader.MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)] diff --git a/ml_amt/README.md b/ml_amt/README.md index 5ea9c4a..20149d3 100644 --- a/ml_amt/README.md +++ b/ml_amt/README.md @@ -24,8 +24,6 @@ Available mod's settings in `Settings - IK - Avatar Motion Tweaker`: #### Fixes/overhauls options * **Scaled locomotion jump:** scales locomotion jump according to relation between your player settings height and current avatar height (includes avatar scale); default value - `false`. * Note: Disabled in worlds that don't allow flight. -* **Fix animation overrides (chairs, etc.):** fixes animations overriding for avatars with AAS; default value - `true`. - * Note: This option is made to address [broken animator in chairs and combat worlds issue](https://feedback.abinteractive.net/p/gestures-getting-stuck-locally-upon-entering-vehicles-chairs). Available additional parameters for AAS animator: * **`Upright`:** defines linear coefficient between current viewpoint height and avatar's viewpoint height; float, range - [0.0, 1.0]. diff --git a/ml_amt/Settings.cs b/ml_amt/Settings.cs index 2d3f1b2..dda2ac9 100644 --- a/ml_amt/Settings.cs +++ b/ml_amt/Settings.cs @@ -16,8 +16,7 @@ namespace ml_amt DetectEmotes, FollowHips, ScaledJump, - MassCenter, - OverrideFix + MassCenter }; public static float CrouchLimit { get; private set; } = 0.75f; @@ -28,7 +27,6 @@ namespace ml_amt public static bool FollowHips { get; private set; } = true; public static bool MassCenter { get; private set; } = true; public static bool ScaledJump { get; private set; } = false; - public static bool OverrideFix { get; private set; } = true; static MelonLoader.MelonPreferences_Category ms_category = null; static List ms_entries = null; @@ -56,8 +54,7 @@ namespace ml_amt ms_category.CreateEntry(ModSetting.DetectEmotes.ToString(), DetectEmotes), ms_category.CreateEntry(ModSetting.FollowHips.ToString(), FollowHips), ms_category.CreateEntry(ModSetting.ScaledJump.ToString(), ScaledJump), - ms_category.CreateEntry(ModSetting.MassCenter.ToString(), MassCenter), - ms_category.CreateEntry(ModSetting.OverrideFix.ToString(), OverrideFix) + ms_category.CreateEntry(ModSetting.MassCenter.ToString(), MassCenter) }; CrouchLimit = ((int)ms_entries[(int)ModSetting.CrouchLimit].BoxedValue) * 0.01f; @@ -68,7 +65,6 @@ namespace ml_amt FollowHips = (bool)ms_entries[(int)ModSetting.FollowHips].BoxedValue; MassCenter = (bool)ms_entries[(int)ModSetting.MassCenter].BoxedValue; ScaledJump = (bool)ms_entries[(int)ModSetting.ScaledJump].BoxedValue; - OverrideFix = (bool)ms_entries[(int)ModSetting.OverrideFix].BoxedValue; MelonLoader.MelonCoroutines.Start(WaitMainMenuUi()); } @@ -167,13 +163,6 @@ namespace ml_amt ScaledJumpChange?.Invoke(ScaledJump); } break; - - case ModSetting.OverrideFix: - { - OverrideFix = bool.Parse(p_value); - OverrideFixChange?.Invoke(OverrideFix); - } - break; } ms_entries[(int)l_setting].BoxedValue = bool.Parse(p_value); diff --git a/ml_amt/Utils.cs b/ml_amt/Utils.cs index 729c2b5..7b272f2 100644 --- a/ml_amt/Utils.cs +++ b/ml_amt/Utils.cs @@ -12,7 +12,6 @@ namespace ml_amt static readonly FieldInfo ms_grounded = typeof(MovementSystem).GetField("_isGrounded", BindingFlags.NonPublic | BindingFlags.Instance); static readonly FieldInfo ms_groundedRaw = typeof(MovementSystem).GetField("_isGroundedRaw", BindingFlags.NonPublic | BindingFlags.Instance); static readonly FieldInfo ms_hasToes = typeof(IKSolverVR).GetField("hasToes", BindingFlags.NonPublic | BindingFlags.Instance); - static MethodInfo ms_getSineKeyframes = typeof(IKSolverVR).GetMethod("GetSineKeyframes", BindingFlags.NonPublic | BindingFlags.Static); public static bool IsInVR() => ((ABI_RC.Core.Savior.CheckVR.Instance != null) && ABI_RC.Core.Savior.CheckVR.Instance.hasVrDeviceLoaded); @@ -20,10 +19,6 @@ namespace ml_amt public static bool IsGroundedRaw(this MovementSystem p_instance) => (bool)ms_groundedRaw.GetValue(MovementSystem.Instance); public static bool HasToes(this IKSolverVR p_instance) => (bool)ms_hasToes.GetValue(p_instance); - public static Keyframe[] GetSineKeyframes(float p_mag) - { - return (Keyframe[])ms_getSineKeyframes.Invoke(null, new object[] { p_mag }); - } public static bool IsWorldSafe() => ((CVRWorld.Instance != null) && CVRWorld.Instance.allowFlying); public static float GetWorldJumpHeight() diff --git a/ml_amt/ml_amt.csproj b/ml_amt/ml_amt.csproj index 1cef59f..3917f0a 100644 --- a/ml_amt/ml_amt.csproj +++ b/ml_amt/ml_amt.csproj @@ -6,7 +6,7 @@ None AvatarMotionTweaker AvatarMotionTweaker - 1.3.1 + 1.3.2 x64 ml_amt @@ -16,6 +16,8 @@ 4 none false + false + TRACE diff --git a/ml_amt/resources/menu.js b/ml_amt/resources/menu.js index e67759c..5b15ac9 100644 --- a/ml_amt/resources/menu.js +++ b/ml_amt/resources/menu.js @@ -237,13 +237,6 @@ function inp_toggle_mod_amt(_obj, _callbackName) {
- -
-
Fix animator overrides (chairs, etc.):
-
-
-
-
`; document.getElementById('settings-ik').appendChild(l_block); diff --git a/ml_amt/Fixes/AnimatorAnalyzer.cs b/ml_gmf/AnimatorAnalyzer.cs similarity index 99% rename from ml_amt/Fixes/AnimatorAnalyzer.cs rename to ml_gmf/AnimatorAnalyzer.cs index 36900f8..102179d 100644 --- a/ml_amt/Fixes/AnimatorAnalyzer.cs +++ b/ml_gmf/AnimatorAnalyzer.cs @@ -2,7 +2,7 @@ using System.Linq; using UnityEngine; -namespace ml_amt.Fixes +namespace ml_gmf { class AnimatorAnalyzer { diff --git a/ml_amt/Fixes/AnimatorOverrideControllerFix.cs b/ml_gmf/Fixes/AnimationOverrides.cs similarity index 61% rename from ml_amt/Fixes/AnimatorOverrideControllerFix.cs rename to ml_gmf/Fixes/AnimationOverrides.cs index d375d51..87e14f9 100644 --- a/ml_amt/Fixes/AnimatorOverrideControllerFix.cs +++ b/ml_gmf/Fixes/AnimationOverrides.cs @@ -2,32 +2,30 @@ using System; using System.Reflection; -namespace ml_amt.Fixes +namespace ml_gmf.Fixes { - static class AnimatorOverrideControllerFix + static class AnimationOverrides { internal static void Init(HarmonyLib.Harmony p_instance) { - // AAS overriding fix p_instance.Patch( typeof(CVRAnimatorManager).GetMethod(nameof(CVRAnimatorManager.SetOverrideAnimation)), - new HarmonyLib.HarmonyMethod(typeof(AnimatorOverrideControllerFix).GetMethod(nameof(OnOverride_Prefix), BindingFlags.Static | BindingFlags.NonPublic)), - new HarmonyLib.HarmonyMethod(typeof(AnimatorOverrideControllerFix).GetMethod(nameof(OnOverride_Postfix), BindingFlags.Static | BindingFlags.NonPublic)) + new HarmonyLib.HarmonyMethod(typeof(AnimationOverrides).GetMethod(nameof(OnOverride_Prefix), BindingFlags.Static | BindingFlags.NonPublic)), + new HarmonyLib.HarmonyMethod(typeof(AnimationOverrides).GetMethod(nameof(OnOverride_Postfix), BindingFlags.Static | BindingFlags.NonPublic)) ); p_instance.Patch( typeof(CVRAnimatorManager).GetMethod(nameof(CVRAnimatorManager.RestoreOverrideAnimation)), - new HarmonyLib.HarmonyMethod(typeof(AnimatorOverrideControllerFix).GetMethod(nameof(OnOverride_Prefix), BindingFlags.Static | BindingFlags.NonPublic)), - new HarmonyLib.HarmonyMethod(typeof(AnimatorOverrideControllerFix).GetMethod(nameof(OnOverride_Postfix), BindingFlags.Static | BindingFlags.NonPublic)) + new HarmonyLib.HarmonyMethod(typeof(AnimationOverrides).GetMethod(nameof(OnOverride_Prefix), BindingFlags.Static | BindingFlags.NonPublic)), + new HarmonyLib.HarmonyMethod(typeof(AnimationOverrides).GetMethod(nameof(OnOverride_Postfix), BindingFlags.Static | BindingFlags.NonPublic)) ); } - // AnimatorOverrideController runtime animation replacement fix static void OnOverride_Prefix(ref CVRAnimatorManager __instance, out AnimatorAnalyzer __state) { __state = new AnimatorAnalyzer(); try { - if(Settings.OverrideFix && (__instance.animator != null)) + if(__instance.animator != null) { __state.AnalyzeFrom(__instance.animator); if(__state.IsEnabled()) @@ -44,7 +42,7 @@ namespace ml_amt.Fixes { try { - if(Settings.OverrideFix && (__instance.animator != null)) + if(__instance.animator != null) { __state.ApplyTo(__instance.animator); if(__state.IsEnabled()) diff --git a/ml_gmf/Main.cs b/ml_gmf/Main.cs index a4c840c..4826a2c 100644 --- a/ml_gmf/Main.cs +++ b/ml_gmf/Main.cs @@ -7,6 +7,7 @@ Fixes.ViveControls.Init(HarmonyInstance); Fixes.AvatarOverrides.Init(HarmonyInstance); Fixes.PostProccesVolumes.Init(); + Fixes.AnimationOverrides.Init(HarmonyInstance); } } } diff --git a/ml_gmf/README.md b/ml_gmf/README.md index f504474..5357f2b 100644 --- a/ml_gmf/README.md +++ b/ml_gmf/README.md @@ -11,6 +11,7 @@ This mod fixes some issues that are present in game * Additional feature: Disables gestures when moving with Vive controllers * Fix of post-processing layer volume trigger for VR camera ([feedback post](https://feedback.abinteractive.net/p/2023r171ex1-post-process-volume-effects-are-applied-based-on-playspace-center-instead-of-camera-s-in-vr-mode)) * Fix of shared `AnimatorOverrideController` between same avatars that leads to broken avatar animator +* Fix of animation replacement (chairs, etc.) that leads to broken avatar animator ([feedback post](https://feedback.abinteractive.net/p/gestures-getting-stuck-locally-upon-entering-vehicles-chairs)) # Notes Some of fixes will be implemented natively in game after 2023r172ex3