mirror of
https://github.com/NotAKidoS/NAK_CVR_Mods.git
synced 2025-09-02 06:19:22 +00:00
[PickupPushPull] Cleanup
This commit is contained in:
parent
cf0ec02c01
commit
00f8393402
4 changed files with 21 additions and 57 deletions
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
|
@ -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<BindingOptionsVR.BindingOptions> EntryVRRotateBind =
|
||||
Category.CreateEntry<BindingOptionsVR.BindingOptions>("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<PickupPushPull_Module>();
|
||||
_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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue