mirror of
https://github.com/NotAKidoS/NAK_CVR_Mods.git
synced 2025-09-02 14:29:25 +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
|
//uses code from https://github.com/ljoonal/CVR-Plugins/tree/main/RotateIt
|
||||||
//GPL-3.0 license - Thank you ljoonal for being smart brain :plead:
|
//GPL-3.0 license - Thank you ljoonal for being smart brain :plead:
|
||||||
|
|
||||||
[HarmonyPostfix]
|
[HarmonyPostfix]
|
||||||
[HarmonyPatch(typeof(CVRPickupObject), "Update")]
|
[HarmonyPatch(typeof(CVRPickupObject), nameof(CVRPickupObject.Update))]
|
||||||
public static void GrabbedObjectPatch(ref CVRPickupObject __instance)
|
public static void GrabbedObjectPatch(ref CVRPickupObject __instance)
|
||||||
{
|
{
|
||||||
// Need to only run when the object is grabbed by the local player
|
if (__instance._controllerRay == null)
|
||||||
if (__instance._controllerRay == null) return;
|
return;
|
||||||
|
|
||||||
//and only if its a prop we support
|
if (__instance.gripType == CVRPickupObject.GripType.Origin)
|
||||||
if (__instance.gripType == CVRPickupObject.GripType.Origin) return;
|
return;
|
||||||
|
|
||||||
Quaternion originalRotation = __instance.transform.rotation;
|
Quaternion originalRotation = __instance.transform.rotation;
|
||||||
Transform referenceTransform = __instance._controllerRay.transform;
|
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.right, PickupPushPull_Module.Instance.objectRotation.y * Time.deltaTime);
|
||||||
__instance.transform.RotateAround(__instance.transform.position, referenceTransform.up, PickupPushPull_Module.Instance.objectRotation.x * 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;
|
__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 ABI_RC.Core.Savior;
|
||||||
using NAK.PickupPushPull.InputModules.Info;
|
using NAK.PickupPushPull.InputModules.Info;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
using ABI_RC.Systems.InputManagement;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.Events;
|
using UnityEngine.Events;
|
||||||
using Valve.VR;
|
using Valve.VR;
|
||||||
|
@ -13,11 +14,6 @@ namespace NAK.PickupPushPull.InputModules;
|
||||||
|
|
||||||
public class PickupPushPull_Module : CVRInputModule
|
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;
|
public Vector2 objectRotation = Vector2.zero;
|
||||||
|
|
||||||
//Global settings
|
//Global settings
|
||||||
|
@ -31,7 +27,7 @@ public class PickupPushPull_Module : CVRInputModule
|
||||||
//VR settings
|
//VR settings
|
||||||
public BindingOptionsVR.BindHand VR_RotateHand = BindingOptionsVR.BindHand.LeftHand;
|
public BindingOptionsVR.BindHand VR_RotateHand = BindingOptionsVR.BindHand.LeftHand;
|
||||||
public BindingOptionsVR.BindingOptions VR_RotateBind = BindingOptionsVR.BindingOptions.ButtonATouch;
|
public BindingOptionsVR.BindingOptions VR_RotateBind = BindingOptionsVR.BindingOptions.ButtonATouch;
|
||||||
private SteamVR_Action_Boolean VR_RotateBind_Boolean;
|
public SteamVR_Action_Boolean VR_RotateBind_Boolean;
|
||||||
|
|
||||||
//Local stuff
|
//Local stuff
|
||||||
private ControllerRay desktopControllerRay;
|
private ControllerRay desktopControllerRay;
|
||||||
|
@ -49,7 +45,6 @@ public class PickupPushPull_Module : CVRInputModule
|
||||||
public new void Start()
|
public new void Start()
|
||||||
{
|
{
|
||||||
_inputManager = CVRInputManager.Instance;
|
_inputManager = CVRInputManager.Instance;
|
||||||
Instance = this;
|
|
||||||
base.Start();
|
base.Start();
|
||||||
|
|
||||||
//Get desktop controller ray
|
//Get desktop controller ray
|
||||||
|
@ -175,9 +170,10 @@ public class PickupPushPull_Module : CVRInputModule
|
||||||
|
|
||||||
private void DoSteamVRInput()
|
private void DoSteamVRInput()
|
||||||
{
|
{
|
||||||
CVRPickupObject leftObject = (CVRPickupObject)_grabbedObject.GetValue(PlayerSetup.Instance.leftRay);
|
CVRPickupObject leftObject = PlayerSetup.Instance.leftRay.grabbedObject;
|
||||||
CVRPickupObject rightObject = (CVRPickupObject)_grabbedObject.GetValue(PlayerSetup.Instance.rightRay);
|
CVRPickupObject rightObject = PlayerSetup.Instance.rightRay.grabbedObject;
|
||||||
if (leftObject == null && rightObject == null) return;
|
if (leftObject == null && rightObject == null)
|
||||||
|
return;
|
||||||
|
|
||||||
bool canRotate = (leftObject != null && leftObject.gripType == CVRPickupObject.GripType.Free) ||
|
bool canRotate = (leftObject != null && leftObject.gripType == CVRPickupObject.GripType.Free) ||
|
||||||
(rightObject != null && rightObject.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;
|
objectRotation.y += EntryRotationSpeed * rawLookVector.y * -1;
|
||||||
|
|
||||||
_inputManager.lookVector = Vector2.zero;
|
_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.Player;
|
||||||
using ABI_RC.Core.Savior;
|
using ABI_RC.Core.Savior;
|
||||||
|
using ABI_RC.Systems.InputManagement;
|
||||||
using MelonLoader;
|
using MelonLoader;
|
||||||
using NAK.PickupPushPull.InputModules;
|
using NAK.PickupPushPull.InputModules;
|
||||||
|
|
||||||
|
@ -31,6 +32,8 @@ public class PickupPushPull : MelonMod
|
||||||
public static readonly MelonPreferences_Entry<BindingOptionsVR.BindingOptions> EntryVRRotateBind =
|
public static readonly MelonPreferences_Entry<BindingOptionsVR.BindingOptions> EntryVRRotateBind =
|
||||||
Category.CreateEntry<BindingOptionsVR.BindingOptions>("VR Binding", BindingOptionsVR.BindingOptions.ButtonATouch);
|
Category.CreateEntry<BindingOptionsVR.BindingOptions>("VR Binding", BindingOptionsVR.BindingOptions.ButtonATouch);
|
||||||
|
|
||||||
|
public static PickupPushPull_Module _pushPullModule;
|
||||||
|
|
||||||
public override void OnInitializeMelon()
|
public override void OnInitializeMelon()
|
||||||
{
|
{
|
||||||
foreach (var entry in Category.Entries)
|
foreach (var entry in Category.Entries)
|
||||||
|
@ -43,16 +46,16 @@ public class PickupPushPull : MelonMod
|
||||||
MelonLoader.MelonCoroutines.Start(WaitForLocalPlayer());
|
MelonLoader.MelonCoroutines.Start(WaitForLocalPlayer());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private System.Collections.IEnumerator WaitForLocalPlayer()
|
||||||
System.Collections.IEnumerator WaitForLocalPlayer()
|
|
||||||
{
|
{
|
||||||
while (PlayerSetup.Instance == null)
|
while (PlayerSetup.Instance == null)
|
||||||
yield return null;
|
yield return null;
|
||||||
|
|
||||||
CVRInputManager.Instance.gameObject.AddComponent<PickupPushPull_Module>();
|
_pushPullModule = new PickupPushPull_Module();
|
||||||
|
CVRInputManager.Instance.AddInputModule(_pushPullModule);
|
||||||
|
|
||||||
//update BlackoutController settings after it initializes
|
//update BlackoutController settings after it initializes
|
||||||
while (PickupPushPull_Module.Instance == null)
|
while (_pushPullModule == null)
|
||||||
yield return null;
|
yield return null;
|
||||||
|
|
||||||
UpdateVRBinding();
|
UpdateVRBinding();
|
||||||
|
@ -64,7 +67,8 @@ public class PickupPushPull : MelonMod
|
||||||
|
|
||||||
private void UpdateAllSettings()
|
private void UpdateAllSettings()
|
||||||
{
|
{
|
||||||
if (!PickupPushPull_Module.Instance) return;
|
if (PickupPushPull_Module.Instance == null)
|
||||||
|
return;
|
||||||
|
|
||||||
//Global settings
|
//Global settings
|
||||||
PickupPushPull_Module.Instance.EntryPushPullSpeed = EntryPushPullSpeed.Value * 50;
|
PickupPushPull_Module.Instance.EntryPushPullSpeed = EntryPushPullSpeed.Value * 50;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue