From 00f8393402f5d68f525c9f844dfa1c544d16ec6c Mon Sep 17 00:00:00 2001 From: NotAKidoS <37721153+NotAKidOnSteam@users.noreply.github.com> Date: Mon, 14 Aug 2023 18:54:18 -0500 Subject: [PATCH] [PickupPushPull] Cleanup --- PickupPushPull/HarmonyPatches.cs | 12 +++---- .../InputModules/Info/EI_SteamVR_Info.cs | 33 ------------------- .../InputModules/PickupPushPull_Module.cs | 19 ++++------- PickupPushPull/Main.cs | 14 +++++--- 4 files changed, 21 insertions(+), 57 deletions(-) delete mode 100644 PickupPushPull/InputModules/Info/EI_SteamVR_Info.cs diff --git a/PickupPushPull/HarmonyPatches.cs b/PickupPushPull/HarmonyPatches.cs index f622275..2bc4964 100644 --- a/PickupPushPull/HarmonyPatches.cs +++ b/PickupPushPull/HarmonyPatches.cs @@ -10,15 +10,16 @@ internal class HarmonyPatches { //uses code from https://github.com/ljoonal/CVR-Plugins/tree/main/RotateIt //GPL-3.0 license - Thank you ljoonal for being smart brain :plead: + [HarmonyPostfix] - [HarmonyPatch(typeof(CVRPickupObject), "Update")] + [HarmonyPatch(typeof(CVRPickupObject), nameof(CVRPickupObject.Update))] public static void GrabbedObjectPatch(ref CVRPickupObject __instance) { - // Need to only run when the object is grabbed by the local player - if (__instance._controllerRay == null) return; + if (__instance._controllerRay == null) + return; - //and only if its a prop we support - if (__instance.gripType == CVRPickupObject.GripType.Origin) return; + if (__instance.gripType == CVRPickupObject.GripType.Origin) + return; Quaternion originalRotation = __instance.transform.rotation; Transform referenceTransform = __instance._controllerRay.transform; @@ -26,7 +27,6 @@ internal class HarmonyPatches __instance.transform.RotateAround(__instance.transform.position, referenceTransform.right, PickupPushPull_Module.Instance.objectRotation.y * Time.deltaTime); __instance.transform.RotateAround(__instance.transform.position, referenceTransform.up, PickupPushPull_Module.Instance.objectRotation.x * Time.deltaTime); - // Add the new difference between the og rotation and our newly added rotation the the stored offset. __instance.initialRotationalOffset *= Quaternion.Inverse(__instance.transform.rotation) * originalRotation; } } \ No newline at end of file diff --git a/PickupPushPull/InputModules/Info/EI_SteamVR_Info.cs b/PickupPushPull/InputModules/Info/EI_SteamVR_Info.cs deleted file mode 100644 index cd72c64..0000000 --- a/PickupPushPull/InputModules/Info/EI_SteamVR_Info.cs +++ /dev/null @@ -1,33 +0,0 @@ -using ABI_RC.Core.Savior; -using System.Reflection; - -namespace NAK.PickupPushPull.InputModules.Info; - -// Stolen from my scrapped Enhanced Input mod -internal class EI_SteamVR_Info -{ - //General Inputs - internal static readonly FieldInfo im_vrMovementAction = typeof(InputModuleSteamVR).GetField("vrMovementAction", BindingFlags.NonPublic | BindingFlags.Instance); - internal static readonly FieldInfo im_vrJumpAction = typeof(InputModuleSteamVR).GetField("vrJumpAction", BindingFlags.NonPublic | BindingFlags.Instance); - internal static readonly FieldInfo im_vrLookAction = typeof(InputModuleSteamVR).GetField("vrLookAction", BindingFlags.NonPublic | BindingFlags.Instance); - internal static readonly FieldInfo im_vrMuteAction = typeof(InputModuleSteamVR).GetField("vrMuteAction", BindingFlags.NonPublic | BindingFlags.Instance); - internal static readonly FieldInfo im_vrMenuButton = typeof(InputModuleSteamVR).GetField("vrMenuButton", BindingFlags.NonPublic | BindingFlags.Instance); - internal static readonly FieldInfo im_vrTriggerValue = typeof(InputModuleSteamVR).GetField("vrTriggerValue", BindingFlags.NonPublic | BindingFlags.Instance); - internal static readonly FieldInfo im_vrGripValue = typeof(InputModuleSteamVR).GetField("vrGripValue", BindingFlags.NonPublic | BindingFlags.Instance); - //Vive Controllers - internal static readonly FieldInfo im_vrTouchPadValue = typeof(InputModuleSteamVR).GetField("vrTouchPadValue", BindingFlags.NonPublic | BindingFlags.Instance); - internal static readonly FieldInfo im_vrTouchPadClick = typeof(InputModuleSteamVR).GetField("vrTouchPadClick", BindingFlags.NonPublic | BindingFlags.Instance); - internal static readonly FieldInfo im_vrTouchPadTouch = typeof(InputModuleSteamVR).GetField("vrTouchPadTouch", BindingFlags.NonPublic | BindingFlags.Instance); - //Knuckles Controllers - internal static readonly FieldInfo im_steamVrIndexSkeletonLeft = typeof(InputModuleSteamVR).GetField("steamVrIndexSkeletonLeft", BindingFlags.NonPublic | BindingFlags.Instance); - internal static readonly FieldInfo im_steamVrIndexSkeletonRight = typeof(InputModuleSteamVR).GetField("steamVrIndexSkeletonRight", BindingFlags.NonPublic | BindingFlags.Instance); - internal static readonly FieldInfo im_steamVrIndexGestureToggle = typeof(InputModuleSteamVR).GetField("steamVrIndexGestureToggle", BindingFlags.NonPublic | BindingFlags.Instance); - //Touch Controllers - internal static readonly FieldInfo im_steamVrTriggerTouch = typeof(InputModuleSteamVR).GetField("steamVrTriggerTouch", BindingFlags.Public | BindingFlags.Instance); - internal static readonly FieldInfo im_steamVrGripTouch = typeof(InputModuleSteamVR).GetField("steamVrGripTouch", BindingFlags.Public | BindingFlags.Instance); - internal static readonly FieldInfo im_steamVrStickTouch = typeof(InputModuleSteamVR).GetField("steamVrStickTouch", BindingFlags.Public | BindingFlags.Instance); - internal static readonly FieldInfo im_steamVrButtonATouch = typeof(InputModuleSteamVR).GetField("steamVrButtonATouch", BindingFlags.Public | BindingFlags.Instance); - internal static readonly FieldInfo im_steamVrButtonBTouch = typeof(InputModuleSteamVR).GetField("steamVrButtonBTouch", BindingFlags.Public | BindingFlags.Instance); - //SteamVR Specific - //internal static readonly FieldInfo im_steamVrVibration = typeof(InputModuleSteamVR).GetField("steamVrVibration", BindingFlags.NonPublic | BindingFlags.Instance); -} diff --git a/PickupPushPull/InputModules/PickupPushPull_Module.cs b/PickupPushPull/InputModules/PickupPushPull_Module.cs index 510a7db..0986a6d 100644 --- a/PickupPushPull/InputModules/PickupPushPull_Module.cs +++ b/PickupPushPull/InputModules/PickupPushPull_Module.cs @@ -5,6 +5,7 @@ using ABI_RC.Core.Player; using ABI_RC.Core.Savior; using NAK.PickupPushPull.InputModules.Info; using System.Reflection; +using ABI_RC.Systems.InputManagement; using UnityEngine; using UnityEngine.Events; using Valve.VR; @@ -13,11 +14,6 @@ namespace NAK.PickupPushPull.InputModules; public class PickupPushPull_Module : CVRInputModule { - //Reflection shit - private static readonly FieldInfo _grabbedObject = typeof(ControllerRay).GetField("grabbedObject", BindingFlags.NonPublic | BindingFlags.Instance); - - //Global stuff - public static PickupPushPull_Module Instance; public Vector2 objectRotation = Vector2.zero; //Global settings @@ -31,7 +27,7 @@ public class PickupPushPull_Module : CVRInputModule //VR settings public BindingOptionsVR.BindHand VR_RotateHand = BindingOptionsVR.BindHand.LeftHand; public BindingOptionsVR.BindingOptions VR_RotateBind = BindingOptionsVR.BindingOptions.ButtonATouch; - private SteamVR_Action_Boolean VR_RotateBind_Boolean; + public SteamVR_Action_Boolean VR_RotateBind_Boolean; //Local stuff private ControllerRay desktopControllerRay; @@ -49,7 +45,6 @@ public class PickupPushPull_Module : CVRInputModule public new void Start() { _inputManager = CVRInputManager.Instance; - Instance = this; base.Start(); //Get desktop controller ray @@ -175,9 +170,10 @@ public class PickupPushPull_Module : CVRInputModule private void DoSteamVRInput() { - CVRPickupObject leftObject = (CVRPickupObject)_grabbedObject.GetValue(PlayerSetup.Instance.leftRay); - CVRPickupObject rightObject = (CVRPickupObject)_grabbedObject.GetValue(PlayerSetup.Instance.rightRay); - if (leftObject == null && rightObject == null) return; + CVRPickupObject leftObject = PlayerSetup.Instance.leftRay.grabbedObject; + CVRPickupObject rightObject = PlayerSetup.Instance.rightRay.grabbedObject; + if (leftObject == null && rightObject == null) + return; bool canRotate = (leftObject != null && leftObject.gripType == CVRPickupObject.GripType.Free) || (rightObject != null && rightObject.gripType == CVRPickupObject.GripType.Free); @@ -191,10 +187,7 @@ public class PickupPushPull_Module : CVRInputModule objectRotation.y += EntryRotationSpeed * rawLookVector.y * -1; _inputManager.lookVector = Vector2.zero; - return; } - - CVRInputManager.Instance.objectPushPull += CVRInputManager.Instance.floatDirection * EntryPushPullSpeed * Time.deltaTime; } } \ No newline at end of file diff --git a/PickupPushPull/Main.cs b/PickupPushPull/Main.cs index bce687b..4b9a282 100644 --- a/PickupPushPull/Main.cs +++ b/PickupPushPull/Main.cs @@ -1,5 +1,6 @@ using ABI_RC.Core.Player; using ABI_RC.Core.Savior; +using ABI_RC.Systems.InputManagement; using MelonLoader; using NAK.PickupPushPull.InputModules; @@ -31,6 +32,8 @@ public class PickupPushPull : MelonMod public static readonly MelonPreferences_Entry EntryVRRotateBind = Category.CreateEntry("VR Binding", BindingOptionsVR.BindingOptions.ButtonATouch); + public static PickupPushPull_Module _pushPullModule; + public override void OnInitializeMelon() { foreach (var entry in Category.Entries) @@ -43,16 +46,16 @@ public class PickupPushPull : MelonMod MelonLoader.MelonCoroutines.Start(WaitForLocalPlayer()); } - - System.Collections.IEnumerator WaitForLocalPlayer() + private System.Collections.IEnumerator WaitForLocalPlayer() { while (PlayerSetup.Instance == null) yield return null; - CVRInputManager.Instance.gameObject.AddComponent(); + _pushPullModule = new PickupPushPull_Module(); + CVRInputManager.Instance.AddInputModule(_pushPullModule); //update BlackoutController settings after it initializes - while (PickupPushPull_Module.Instance == null) + while (_pushPullModule == null) yield return null; UpdateVRBinding(); @@ -64,7 +67,8 @@ public class PickupPushPull : MelonMod private void UpdateAllSettings() { - if (!PickupPushPull_Module.Instance) return; + if (PickupPushPull_Module.Instance == null) + return; //Global settings PickupPushPull_Module.Instance.EntryPushPullSpeed = EntryPushPullSpeed.Value * 50;