From 829b858e5660f8fbf99b37c1afcccedd0a923836 Mon Sep 17 00:00:00 2001 From: NotAKidoS <37721153+NotAKidOnSteam@users.noreply.github.com> Date: Sat, 24 Jun 2023 13:47:14 -0500 Subject: [PATCH] [PlaySpaceScaleFix] Scale avatar local position. --- PlaySpaceScaleFix/HarmonyPatches.cs | 24 ++++++++++-------------- PlaySpaceScaleFix/Main.cs | 2 +- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/PlaySpaceScaleFix/HarmonyPatches.cs b/PlaySpaceScaleFix/HarmonyPatches.cs index 0fa87b9..6c5e6cc 100644 --- a/PlaySpaceScaleFix/HarmonyPatches.cs +++ b/PlaySpaceScaleFix/HarmonyPatches.cs @@ -1,5 +1,5 @@ using ABI_RC.Core.Player; -using ABI_RC.Systems.IK; +using ABI_RC.Core.Savior; using HarmonyLib; using UnityEngine; @@ -9,36 +9,32 @@ class PlayerSetupPatches { [HarmonyPrefix] [HarmonyPatch(typeof(PlayerSetup), nameof(PlayerSetup.SetPlaySpaceScale))] - private static void Prefix_PlayerSetup_SetPlaySpaceScale(ref PlayerSetup __instance, ref Vector3 __state) + static void Prefix_PlayerSetup_SetPlaySpaceScale(ref PlayerSetup __instance, ref Vector3 __state) { __state = __instance.vrCamera.transform.position; __state.y = __instance.transform.position.y; } - + [HarmonyPostfix] [HarmonyPatch(typeof(PlayerSetup), nameof(PlayerSetup.SetPlaySpaceScale))] - private static void Postfix_PlayerSetup_SetPlaySpaceScale(ref PlayerSetup __instance, ref Vector3 __state) + static void Postfix_PlayerSetup_SetPlaySpaceScale(ref PlayerSetup __instance, ref Vector3 __state) { - if (!PlaySpaceScaleFix.EntryEnabled.Value) + if (!PlaySpaceScaleFix.EntryEnabled.Value || !MetaPort.Instance.isUsingVr) return; Vector3 newPosition = __instance.vrCamera.transform.position; newPosition.y = __instance.transform.position.y; - + Vector3 offset = newPosition - __state; // Offset _PlayerLocal to keep player in place __instance.transform.position -= offset; - // TODO: Figure out why VRIK is wonky still - // PlayerSetup runs after VRIK solving?? Fuck - /** - if (IKSystem.vrik != null) + // Scale avatar local position to keep avatar in place + if (__instance._avatar != null) { - IKSystem.vrik.transform.position += offset; - IKSystem.vrik.solver.Reset(); - IKSystem.vrik.solver.AddPlatformMotion(offset, Quaternion.identity, __instance.transform.position); + Vector3 scaleDifference = __instance.DivideVectors(__instance._avatar.transform.localScale, __instance.lastScale); + __instance._avatar.transform.localPosition = Vector3.Scale(__instance._avatar.transform.localPosition, scaleDifference); } - **/ } } \ No newline at end of file diff --git a/PlaySpaceScaleFix/Main.cs b/PlaySpaceScaleFix/Main.cs index c5b328a..23f910c 100644 --- a/PlaySpaceScaleFix/Main.cs +++ b/PlaySpaceScaleFix/Main.cs @@ -14,7 +14,7 @@ public class PlaySpaceScaleFix : MelonMod { ApplyPatches(typeof(HarmonyPatches.PlayerSetupPatches)); } - + void ApplyPatches(Type type) { try