using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Logging;
using FistVR;
using HarmonyLib;
using UnityEngine;
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.0.0.0")]
[module: UnverifiableCode]
namespace JerryRevolver
{
[BepInPlugin("JerryDLL.JerryRevolver", "JR", "1.0.0")]
[BepInDependency("nrgill28.Sodalite", "1.4.1")]
[BepInProcess("h3vr.exe")]
public class LetRevolverSpinn : BaseUnityPlugin
{
public Revolver RevolverDAL;
public SingleActionRevolver RevolverSAL;
public Revolver RevolverDAR;
public SingleActionRevolver RevolverSAR;
public FVRViveHand L;
public FVRViveHand R;
public GameObject SpinnHL;
public GameObject SpinnHR;
public WaggleJoint WagL;
public WaggleJoint WagR;
public Transform SpinnPosL;
public Transform SpinnPosR;
public GameObject WagPosL;
public GameObject WagPosR;
public GameObject GeoL;
public GameObject GeoR;
private Quaternion prevRotationL;
private Quaternion prevRotationR;
private float ExtractRotationAroundX(Quaternion q)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_0009: Unknown result type (might be due to invalid IL or missing references)
//IL_000e: Unknown result type (might be due to invalid IL or missing references)
//IL_002b: Unknown result type (might be due to invalid IL or missing references)
//IL_0030: Unknown result type (might be due to invalid IL or missing references)
Vector3 up = Vector3.up;
Vector3 val = q * up;
Vector3 val2 = default(Vector3);
((Vector3)(ref val2))..ctor(0f, val.y, val.z);
Vector3 normalized = ((Vector3)(ref val2)).normalized;
return Mathf.Atan2(normalized.z, normalized.y) * 57.29578f;
}
private void Update()
{
//IL_002b: Unknown result type (might be due to invalid IL or missing references)
//IL_0045: Expected O, but got Unknown
//IL_0064: Unknown result type (might be due to invalid IL or missing references)
//IL_0074: Unknown result type (might be due to invalid IL or missing references)
//IL_008e: Expected O, but got Unknown
//IL_00ad: Unknown result type (might be due to invalid IL or missing references)
//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
//IL_00fb: Expected O, but got Unknown
//IL_011a: Unknown result type (might be due to invalid IL or missing references)
//IL_013e: Unknown result type (might be due to invalid IL or missing references)
//IL_01cb: Unknown result type (might be due to invalid IL or missing references)
//IL_01d0: Unknown result type (might be due to invalid IL or missing references)
//IL_03b6: Unknown result type (might be due to invalid IL or missing references)
//IL_03bb: Unknown result type (might be due to invalid IL or missing references)
//IL_03bc: Unknown result type (might be due to invalid IL or missing references)
//IL_03be: Unknown result type (might be due to invalid IL or missing references)
//IL_03c3: Unknown result type (might be due to invalid IL or missing references)
//IL_03c8: Unknown result type (might be due to invalid IL or missing references)
//IL_03cd: Unknown result type (might be due to invalid IL or missing references)
//IL_03ce: Unknown result type (might be due to invalid IL or missing references)
//IL_03cf: Unknown result type (might be due to invalid IL or missing references)
//IL_03d4: Unknown result type (might be due to invalid IL or missing references)
//IL_03d5: Unknown result type (might be due to invalid IL or missing references)
//IL_03da: Unknown result type (might be due to invalid IL or missing references)
//IL_03db: Unknown result type (might be due to invalid IL or missing references)
//IL_03e0: Unknown result type (might be due to invalid IL or missing references)
//IL_03e2: Unknown result type (might be due to invalid IL or missing references)
//IL_03f3: Unknown result type (might be due to invalid IL or missing references)
//IL_03f4: Unknown result type (might be due to invalid IL or missing references)
//IL_0404: Unknown result type (might be due to invalid IL or missing references)
//IL_0409: Unknown result type (might be due to invalid IL or missing references)
//IL_040b: Unknown result type (might be due to invalid IL or missing references)
//IL_040e: Unknown result type (might be due to invalid IL or missing references)
//IL_0413: Unknown result type (might be due to invalid IL or missing references)
//IL_0418: Unknown result type (might be due to invalid IL or missing references)
//IL_041d: Unknown result type (might be due to invalid IL or missing references)
//IL_041f: Unknown result type (might be due to invalid IL or missing references)
//IL_0421: Unknown result type (might be due to invalid IL or missing references)
//IL_0426: Unknown result type (might be due to invalid IL or missing references)
//IL_0428: Unknown result type (might be due to invalid IL or missing references)
//IL_042d: Unknown result type (might be due to invalid IL or missing references)
//IL_042f: Unknown result type (might be due to invalid IL or missing references)
//IL_0434: Unknown result type (might be due to invalid IL or missing references)
//IL_0437: Unknown result type (might be due to invalid IL or missing references)
//IL_044b: Unknown result type (might be due to invalid IL or missing references)
//IL_044d: Unknown result type (might be due to invalid IL or missing references)
//IL_0200: Unknown result type (might be due to invalid IL or missing references)
//IL_021a: Expected O, but got Unknown
//IL_0239: Unknown result type (might be due to invalid IL or missing references)
//IL_0249: Unknown result type (might be due to invalid IL or missing references)
//IL_0263: Expected O, but got Unknown
//IL_0282: Unknown result type (might be due to invalid IL or missing references)
//IL_02a6: Unknown result type (might be due to invalid IL or missing references)
//IL_02b6: Unknown result type (might be due to invalid IL or missing references)
//IL_02d0: Expected O, but got Unknown
//IL_02ef: Unknown result type (might be due to invalid IL or missing references)
//IL_0313: Unknown result type (might be due to invalid IL or missing references)
//IL_03a0: Unknown result type (might be due to invalid IL or missing references)
//IL_03a5: Unknown result type (might be due to invalid IL or missing references)
//IL_04a0: Unknown result type (might be due to invalid IL or missing references)
//IL_04a5: Unknown result type (might be due to invalid IL or missing references)
//IL_0684: Unknown result type (might be due to invalid IL or missing references)
//IL_0689: Unknown result type (might be due to invalid IL or missing references)
//IL_04c3: Unknown result type (might be due to invalid IL or missing references)
//IL_04c8: Unknown result type (might be due to invalid IL or missing references)
//IL_0d03: Unknown result type (might be due to invalid IL or missing references)
//IL_0d08: Unknown result type (might be due to invalid IL or missing references)
//IL_0a0c: Unknown result type (might be due to invalid IL or missing references)
//IL_0a30: Unknown result type (might be due to invalid IL or missing references)
//IL_0a54: Unknown result type (might be due to invalid IL or missing references)
//IL_092a: Unknown result type (might be due to invalid IL or missing references)
//IL_0944: Unknown result type (might be due to invalid IL or missing references)
//IL_094e: Unknown result type (might be due to invalid IL or missing references)
//IL_06a7: Unknown result type (might be due to invalid IL or missing references)
//IL_06ac: Unknown result type (might be due to invalid IL or missing references)
//IL_0636: Unknown result type (might be due to invalid IL or missing references)
//IL_065b: Unknown result type (might be due to invalid IL or missing references)
//IL_0ee7: Unknown result type (might be due to invalid IL or missing references)
//IL_0eec: Unknown result type (might be due to invalid IL or missing references)
//IL_0d26: Unknown result type (might be due to invalid IL or missing references)
//IL_0d2b: Unknown result type (might be due to invalid IL or missing references)
//IL_0bfb: Unknown result type (might be due to invalid IL or missing references)
//IL_0c1f: Unknown result type (might be due to invalid IL or missing references)
//IL_0c43: Unknown result type (might be due to invalid IL or missing references)
//IL_0b19: Unknown result type (might be due to invalid IL or missing references)
//IL_0b33: Unknown result type (might be due to invalid IL or missing references)
//IL_0b3d: Unknown result type (might be due to invalid IL or missing references)
//IL_0987: Unknown result type (might be due to invalid IL or missing references)
//IL_081a: Unknown result type (might be due to invalid IL or missing references)
//IL_083f: Unknown result type (might be due to invalid IL or missing references)
//IL_1271: Unknown result type (might be due to invalid IL or missing references)
//IL_1295: Unknown result type (might be due to invalid IL or missing references)
//IL_12b9: Unknown result type (might be due to invalid IL or missing references)
//IL_118d: Unknown result type (might be due to invalid IL or missing references)
//IL_11a7: Unknown result type (might be due to invalid IL or missing references)
//IL_11b1: Unknown result type (might be due to invalid IL or missing references)
//IL_0f0a: Unknown result type (might be due to invalid IL or missing references)
//IL_0f0f: Unknown result type (might be due to invalid IL or missing references)
//IL_0e99: Unknown result type (might be due to invalid IL or missing references)
//IL_0ebe: Unknown result type (might be due to invalid IL or missing references)
//IL_0b76: Unknown result type (might be due to invalid IL or missing references)
//IL_09c1: Unknown result type (might be due to invalid IL or missing references)
//IL_1635: Unknown result type (might be due to invalid IL or missing references)
//IL_1659: Unknown result type (might be due to invalid IL or missing references)
//IL_167e: Unknown result type (might be due to invalid IL or missing references)
//IL_16a3: Unknown result type (might be due to invalid IL or missing references)
//IL_1462: Unknown result type (might be due to invalid IL or missing references)
//IL_1486: Unknown result type (might be due to invalid IL or missing references)
//IL_14aa: Unknown result type (might be due to invalid IL or missing references)
//IL_137e: Unknown result type (might be due to invalid IL or missing references)
//IL_1398: Unknown result type (might be due to invalid IL or missing references)
//IL_13a2: Unknown result type (might be due to invalid IL or missing references)
//IL_11eb: Unknown result type (might be due to invalid IL or missing references)
//IL_107d: Unknown result type (might be due to invalid IL or missing references)
//IL_10a2: Unknown result type (might be due to invalid IL or missing references)
//IL_0bb0: Unknown result type (might be due to invalid IL or missing references)
//IL_181e: Unknown result type (might be due to invalid IL or missing references)
//IL_1842: Unknown result type (might be due to invalid IL or missing references)
//IL_1867: Unknown result type (might be due to invalid IL or missing references)
//IL_188c: Unknown result type (might be due to invalid IL or missing references)
//IL_13dc: Unknown result type (might be due to invalid IL or missing references)
//IL_1226: Unknown result type (might be due to invalid IL or missing references)
//IL_1788: Unknown result type (might be due to invalid IL or missing references)
//IL_17ad: Unknown result type (might be due to invalid IL or missing references)
//IL_1417: Unknown result type (might be due to invalid IL or missing references)
//IL_1abb: Unknown result type (might be due to invalid IL or missing references)
//IL_1adf: Unknown result type (might be due to invalid IL or missing references)
//IL_1b04: Unknown result type (might be due to invalid IL or missing references)
//IL_1b29: Unknown result type (might be due to invalid IL or missing references)
//IL_1971: Unknown result type (might be due to invalid IL or missing references)
//IL_1996: Unknown result type (might be due to invalid IL or missing references)
//IL_1ca4: Unknown result type (might be due to invalid IL or missing references)
//IL_1cc8: Unknown result type (might be due to invalid IL or missing references)
//IL_1ced: Unknown result type (might be due to invalid IL or missing references)
//IL_1d12: Unknown result type (might be due to invalid IL or missing references)
//IL_1c0e: Unknown result type (might be due to invalid IL or missing references)
//IL_1c33: Unknown result type (might be due to invalid IL or missing references)
//IL_1df7: Unknown result type (might be due to invalid IL or missing references)
//IL_1e1c: Unknown result type (might be due to invalid IL or missing references)
if ((Object)(object)L == (Object)null)
{
L = GM.CurrentMovementManager.Hands[0];
SpinnHL = Object.Instantiate<GameObject>(new GameObject("SpinnLH"), ((Component)L).gameObject.transform);
SpinnHL.transform.localEulerAngles = new Vector3(45f, 0f, 0f);
GeoL = Object.Instantiate<GameObject>(new GameObject("GeoL"), SpinnHL.gameObject.transform);
GeoL.transform.localPosition = new Vector3(0f, 0f, 0f);
GeoL.transform.localEulerAngles = new Vector3(270f, 0f, 0f);
WagPosL = Object.Instantiate<GameObject>(new GameObject("WPL"), GeoL.gameObject.transform);
WagPosL.transform.localPosition = new Vector3(0f, 0f, 0f);
WagPosL.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
WagL = SpinnHL.AddComponent<WaggleJoint>();
WagL.hingeGraphic = GeoL.transform;
WagL.distanceLimit = 0.05f;
WagL.angleLimitLeft = 0f;
WagL.angleLimitRight = 0f;
WagL.damping = 0.05f;
WagL.gravityScale = 0.25f;
prevRotationL = GeoL.transform.rotation;
}
if ((Object)(object)R == (Object)null)
{
R = GM.CurrentMovementManager.Hands[1];
SpinnHR = Object.Instantiate<GameObject>(new GameObject("SpinnRH"), ((Component)R).gameObject.transform);
SpinnHR.transform.localEulerAngles = new Vector3(45f, 0f, 0f);
GeoR = Object.Instantiate<GameObject>(new GameObject("GeoR"), SpinnHR.gameObject.transform);
GeoR.transform.localPosition = new Vector3(0f, 0f, 0f);
GeoR.transform.localEulerAngles = new Vector3(270f, 0f, 0f);
WagPosR = Object.Instantiate<GameObject>(new GameObject("WPR"), GeoR.gameObject.transform);
WagPosR.transform.localPosition = new Vector3(0f, 0f, 0f);
WagPosR.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
WagR = SpinnHR.AddComponent<WaggleJoint>();
WagR.hingeGraphic = GeoR.transform;
WagR.distanceLimit = 0.05f;
WagR.angleLimitLeft = 0f;
WagR.angleLimitRight = 0f;
WagR.damping = 0.05f;
WagR.gravityScale = 0.25f;
prevRotationR = GeoR.transform.rotation;
}
Quaternion rotation = GeoL.transform.rotation;
Quaternion val = rotation * Quaternion.Inverse(prevRotationL);
Quaternion q = Quaternion.Inverse(rotation) * val * rotation;
float num = ExtractRotationAroundX(q);
float num2 = num / Time.deltaTime;
prevRotationL = rotation;
Quaternion rotation2 = GeoR.transform.rotation;
Quaternion val2 = rotation2 * Quaternion.Inverse(prevRotationR);
Quaternion q2 = Quaternion.Inverse(rotation2) * val2 * rotation2;
float num3 = ExtractRotationAroundX(q2);
float num4 = num3 / Time.deltaTime;
prevRotationR = rotation2;
if (L.Input.TriggerFloat > 0.2f)
{
if (L.Input.GripPressed)
{
if ((Object)(object)RevolverDAL != (Object)null)
{
if (GeoL.transform.localEulerAngles.x >= 260f && GeoL.transform.localEulerAngles.x <= 280f)
{
if ((Object)(object)L.m_currentInteractable != (Object)(object)RevolverDAL)
{
WagL.angleLimitLeft = 0f;
WagL.angleLimitRight = 0f;
if ((Object)(object)((Component)RevolverDAL).gameObject.GetComponent<Rigidbody>() != (Object)null)
{
((Component)RevolverDAL).gameObject.GetComponent<Rigidbody>().useGravity = false;
((Component)RevolverDAL).gameObject.GetComponent<Rigidbody>().isKinematic = true;
}
((FVRInteractiveObject)RevolverDAL).IsSimpleInteract = false;
((FVRInteractiveObject)RevolverDAL).BeginInteraction(L);
L.ForceSetInteractable((FVRInteractiveObject)(object)RevolverDAL);
}
}
else
{
GM.CurrentMovementManager.Hands[0].Display_Controller.SetActive(false);
GM.CurrentMovementManager.Hands[0].Display_InteractionSphere.SetActive(false);
GM.CurrentMovementManager.Hands[0].Display_InteractionSphere_Palm.SetActive(false);
if ((Object)(object)((Component)RevolverDAL).gameObject.GetComponent<Rigidbody>() != (Object)null)
{
((Component)RevolverDAL).gameObject.GetComponent<Rigidbody>().isKinematic = true;
}
((FVRInteractiveObject)RevolverDAL).IsSimpleInteract = true;
((Component)RevolverDAL).gameObject.transform.position = WagPosL.transform.position;
((Component)RevolverDAL).gameObject.transform.eulerAngles = WagPosL.transform.eulerAngles;
}
}
if ((Object)(object)RevolverSAL != (Object)null)
{
if (GeoL.transform.localEulerAngles.x >= 260f && GeoL.transform.localEulerAngles.x <= 280f)
{
if ((Object)(object)L.m_currentInteractable != (Object)(object)RevolverSAL)
{
WagL.angleLimitLeft = 0f;
WagL.angleLimitRight = 0f;
if ((Object)(object)((Component)RevolverSAL).gameObject.GetComponent<Rigidbody>() != (Object)null)
{
((Component)RevolverSAL).gameObject.GetComponent<Rigidbody>().useGravity = false;
((Component)RevolverSAL).gameObject.GetComponent<Rigidbody>().isKinematic = true;
}
((FVRInteractiveObject)RevolverSAL).IsSimpleInteract = false;
((FVRInteractiveObject)RevolverSAL).BeginInteraction(L);
L.ForceSetInteractable((FVRInteractiveObject)(object)RevolverSAL);
}
}
else
{
GM.CurrentMovementManager.Hands[0].Display_Controller.SetActive(false);
GM.CurrentMovementManager.Hands[0].Display_InteractionSphere.SetActive(false);
GM.CurrentMovementManager.Hands[0].Display_InteractionSphere_Palm.SetActive(false);
if ((Object)(object)((Component)RevolverSAL).gameObject.GetComponent<Rigidbody>() != (Object)null)
{
((Component)RevolverSAL).gameObject.GetComponent<Rigidbody>().isKinematic = true;
}
((FVRInteractiveObject)RevolverSAL).IsSimpleInteract = true;
((Component)RevolverSAL).gameObject.transform.position = WagPosL.transform.position;
((Component)RevolverSAL).gameObject.transform.eulerAngles = WagPosL.transform.eulerAngles;
}
}
}
if (!L.Input.GripPressed)
{
WagL.angleLimitLeft = 3600f;
WagL.angleLimitRight = 3600f;
}
}
if (L.Input.TriggerFloat <= 0.2f)
{
if (!L.Input.GripPressed)
{
if ((Object)(object)RevolverDAL != (Object)null)
{
if ((Object)(object)((Component)RevolverDAL).gameObject.GetComponent<Rigidbody>() != (Object)null)
{
((Component)RevolverDAL).gameObject.GetComponent<Rigidbody>().useGravity = true;
((Component)RevolverDAL).gameObject.GetComponent<Rigidbody>().isKinematic = false;
((Component)RevolverDAL).gameObject.GetComponent<Rigidbody>().AddForce(L.Input.VelLinearWorld * ((Vector3)(ref L.Input.VelLinearWorld)).magnitude * 0.1f, (ForceMode)1);
if (num > 0f)
{
((Component)RevolverDAL).gameObject.GetComponent<Rigidbody>().AddRelativeTorque(new Vector3(num2 * 0.01f, 0f, 0f), (ForceMode)2);
}
if (num <= 0f)
{
((Component)RevolverDAL).gameObject.GetComponent<Rigidbody>().AddRelativeTorque(new Vector3(num2 * 0.01f, 0f, 0f), (ForceMode)2);
}
}
((Component)RevolverDAL).gameObject.transform.SetParent((Transform)null);
RevolverDAL = null;
SpinnPosL = null;
WagPosL.transform.localPosition = new Vector3(0f, 0f, 0f);
WagPosL.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
SpinnHL.transform.localPosition = new Vector3(0f, 0f, 0f);
GM.CurrentMovementManager.Hands[0].Display_Controller.SetActive(true);
GM.CurrentMovementManager.Hands[0].Display_InteractionSphere.SetActive(true);
GM.CurrentMovementManager.Hands[0].Display_InteractionSphere_Palm.SetActive(true);
}
if ((Object)(object)RevolverSAL != (Object)null)
{
if ((Object)(object)((Component)RevolverSAL).gameObject.GetComponent<Rigidbody>() != (Object)null)
{
((Component)RevolverSAL).gameObject.GetComponent<Rigidbody>().useGravity = true;
((Component)RevolverSAL).gameObject.GetComponent<Rigidbody>().isKinematic = false;
((Component)RevolverSAL).gameObject.GetComponent<Rigidbody>().AddForce(L.Input.VelLinearWorld * ((Vector3)(ref L.Input.VelLinearWorld)).magnitude * 0.1f, (ForceMode)1);
if (num > 0f)
{
((Component)RevolverSAL).gameObject.GetComponent<Rigidbody>().AddRelativeTorque(new Vector3(num2 * 0.01f, 0f, 0f), (ForceMode)2);
}
if (num <= 0f)
{
((Component)RevolverSAL).gameObject.GetComponent<Rigidbody>().AddRelativeTorque(new Vector3(num2 * 0.01f, 0f, 0f), (ForceMode)2);
}
}
((Component)RevolverSAL).gameObject.transform.SetParent((Transform)null);
RevolverSAL = null;
SpinnPosL = null;
WagPosL.transform.localPosition = new Vector3(0f, 0f, 0f);
WagPosL.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
SpinnHL.transform.localPosition = new Vector3(0f, 0f, 0f);
GM.CurrentMovementManager.Hands[0].Display_Controller.SetActive(true);
GM.CurrentMovementManager.Hands[0].Display_InteractionSphere.SetActive(true);
GM.CurrentMovementManager.Hands[0].Display_InteractionSphere_Palm.SetActive(true);
}
}
WagL.angleLimitLeft = 0f;
WagL.angleLimitRight = 0f;
}
if (R.Input.TriggerFloat > 0.2f)
{
if (R.Input.GripPressed)
{
if ((Object)(object)RevolverDAR != (Object)null)
{
if (GeoR.transform.localEulerAngles.x >= 260f && GeoR.transform.localEulerAngles.x <= 280f)
{
if ((Object)(object)R.m_currentInteractable != (Object)(object)RevolverDAR)
{
WagR.angleLimitLeft = 0f;
WagR.angleLimitRight = 0f;
if ((Object)(object)((Component)RevolverDAR).gameObject.GetComponent<Rigidbody>() != (Object)null)
{
((Component)RevolverDAR).gameObject.GetComponent<Rigidbody>().useGravity = false;
((Component)RevolverDAR).gameObject.GetComponent<Rigidbody>().isKinematic = true;
}
((FVRInteractiveObject)RevolverDAR).IsSimpleInteract = false;
((FVRInteractiveObject)RevolverDAR).BeginInteraction(R);
R.ForceSetInteractable((FVRInteractiveObject)(object)RevolverDAR);
}
}
else
{
GM.CurrentMovementManager.Hands[1].Display_Controller.SetActive(false);
GM.CurrentMovementManager.Hands[1].Display_InteractionSphere.SetActive(false);
GM.CurrentMovementManager.Hands[1].Display_InteractionSphere_Palm.SetActive(false);
if ((Object)(object)((Component)RevolverDAR).gameObject.GetComponent<Rigidbody>() != (Object)null)
{
((Component)RevolverDAR).gameObject.GetComponent<Rigidbody>().isKinematic = true;
}
((FVRInteractiveObject)RevolverDAR).IsSimpleInteract = true;
((Component)RevolverDAR).gameObject.transform.position = WagPosR.transform.position;
((Component)RevolverDAR).gameObject.transform.eulerAngles = WagPosR.transform.eulerAngles;
}
}
if ((Object)(object)RevolverSAR != (Object)null)
{
if (GeoR.transform.localEulerAngles.x >= 260f && GeoR.transform.localEulerAngles.x <= 280f)
{
if ((Object)(object)R.m_currentInteractable != (Object)(object)RevolverSAR)
{
WagR.angleLimitLeft = 0f;
WagR.angleLimitRight = 0f;
if ((Object)(object)((Component)RevolverSAR).gameObject.GetComponent<Rigidbody>() != (Object)null)
{
((Component)RevolverSAR).gameObject.GetComponent<Rigidbody>().useGravity = false;
((Component)RevolverSAR).gameObject.GetComponent<Rigidbody>().isKinematic = true;
}
((FVRInteractiveObject)RevolverSAR).IsSimpleInteract = false;
((FVRInteractiveObject)RevolverSAR).BeginInteraction(R);
R.ForceSetInteractable((FVRInteractiveObject)(object)RevolverSAR);
}
}
else
{
GM.CurrentMovementManager.Hands[1].Display_Controller.SetActive(false);
GM.CurrentMovementManager.Hands[1].Display_InteractionSphere.SetActive(false);
GM.CurrentMovementManager.Hands[1].Display_InteractionSphere_Palm.SetActive(false);
if ((Object)(object)((Component)RevolverSAR).gameObject.GetComponent<Rigidbody>() != (Object)null)
{
((Component)RevolverSAR).gameObject.GetComponent<Rigidbody>().isKinematic = true;
}
((FVRInteractiveObject)RevolverSAR).IsSimpleInteract = true;
((Component)RevolverSAR).gameObject.transform.position = WagPosR.transform.position;
((Component)RevolverSAR).gameObject.transform.eulerAngles = WagPosR.transform.eulerAngles;
}
}
}
if (!R.Input.GripPressed)
{
WagR.angleLimitLeft = 3600f;
WagR.angleLimitRight = 3600f;
}
}
if (R.Input.TriggerFloat <= 0.2f)
{
if (!R.Input.GripPressed)
{
if ((Object)(object)RevolverDAR != (Object)null)
{
if ((Object)(object)((Component)RevolverDAR).gameObject.GetComponent<Rigidbody>() != (Object)null)
{
((Component)RevolverDAR).gameObject.GetComponent<Rigidbody>().useGravity = true;
((Component)RevolverDAR).gameObject.GetComponent<Rigidbody>().isKinematic = false;
((Component)RevolverDAR).gameObject.GetComponent<Rigidbody>().AddForce(R.Input.VelLinearWorld * ((Vector3)(ref R.Input.VelLinearWorld)).magnitude * 0.1f, (ForceMode)1);
if (num3 > 0f)
{
((Component)RevolverDAR).gameObject.GetComponent<Rigidbody>().AddRelativeTorque(new Vector3(num4 * 0.01f, 0f, 0f), (ForceMode)2);
}
if (num3 <= 0f)
{
((Component)RevolverDAR).gameObject.GetComponent<Rigidbody>().AddRelativeTorque(new Vector3(num4 * 0.01f, 0f, 0f), (ForceMode)2);
}
}
((Component)RevolverDAR).gameObject.transform.SetParent((Transform)null);
RevolverDAR = null;
SpinnPosR = null;
WagPosR.transform.localPosition = new Vector3(0f, 0f, 0f);
WagPosR.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
SpinnHR.transform.localPosition = new Vector3(0f, 0f, 0f);
GM.CurrentMovementManager.Hands[1].Display_Controller.SetActive(true);
GM.CurrentMovementManager.Hands[1].Display_InteractionSphere.SetActive(true);
GM.CurrentMovementManager.Hands[1].Display_InteractionSphere_Palm.SetActive(true);
}
if ((Object)(object)RevolverSAR != (Object)null)
{
if ((Object)(object)((Component)RevolverSAR).gameObject.GetComponent<Rigidbody>() != (Object)null)
{
((Component)RevolverSAR).gameObject.GetComponent<Rigidbody>().useGravity = true;
((Component)RevolverSAR).gameObject.GetComponent<Rigidbody>().isKinematic = false;
((Component)RevolverSAR).gameObject.GetComponent<Rigidbody>().AddForce(R.Input.VelLinearWorld * ((Vector3)(ref R.Input.VelLinearWorld)).magnitude * 0.1f, (ForceMode)1);
if (num3 > 0f)
{
((Component)RevolverSAR).gameObject.GetComponent<Rigidbody>().AddRelativeTorque(new Vector3(num4 * 0.01f, 0f, 0f), (ForceMode)2);
}
if (num3 <= 0f)
{
((Component)RevolverSAR).gameObject.GetComponent<Rigidbody>().AddRelativeTorque(new Vector3(num4 * 0.01f, 0f, 0f), (ForceMode)2);
}
}
((Component)RevolverSAR).gameObject.transform.SetParent((Transform)null);
RevolverSAR = null;
SpinnPosR = null;
WagPosR.transform.localPosition = new Vector3(0f, 0f, 0f);
WagPosR.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
SpinnHR.transform.localPosition = new Vector3(0f, 0f, 0f);
GM.CurrentMovementManager.Hands[1].Display_Controller.SetActive(true);
GM.CurrentMovementManager.Hands[1].Display_InteractionSphere.SetActive(true);
GM.CurrentMovementManager.Hands[1].Display_InteractionSphere_Palm.SetActive(true);
}
}
WagR.angleLimitLeft = 0f;
WagR.angleLimitRight = 0f;
}
if ((Object)(object)L.m_currentInteractable != (Object)null)
{
if ((Object)(object)RevolverDAL == (Object)null && (Object)(object)((Component)L.m_currentInteractable).gameObject.GetComponent<Revolver>() != (Object)null)
{
RevolverDAL = ((Component)L.m_currentInteractable).gameObject.GetComponent<Revolver>();
}
if ((Object)(object)RevolverSAL == (Object)null && (Object)(object)((Component)L.m_currentInteractable).gameObject.GetComponent<SingleActionRevolver>() != (Object)null)
{
RevolverSAL = ((Component)L.m_currentInteractable).gameObject.GetComponent<SingleActionRevolver>();
}
}
if ((Object)(object)RevolverDAL != (Object)null && L.Input.TriggerFloat > 0.2f)
{
if ((Object)(object)SpinnPosL == (Object)null)
{
SpinnPosL = RevolverDAL.PoseSpinHolder;
SpinnHL.transform.position = ((Component)SpinnPosL).transform.position;
SpinnHL.transform.localEulerAngles = new Vector3(45f, 0f, 0f);
WagPosL.transform.position = ((Component)RevolverDAL).gameObject.transform.position;
WagPosL.transform.eulerAngles = ((Component)RevolverDAL).gameObject.transform.eulerAngles;
((Component)RevolverDAL).gameObject.transform.SetParent(((Component)L).gameObject.transform);
}
if (!L.Input.GripPressed)
{
GM.CurrentMovementManager.Hands[0].Display_Controller.SetActive(false);
GM.CurrentMovementManager.Hands[0].Display_InteractionSphere.SetActive(false);
GM.CurrentMovementManager.Hands[0].Display_InteractionSphere_Palm.SetActive(false);
if ((Object)(object)((Component)RevolverDAL).gameObject.GetComponent<Rigidbody>() != (Object)null)
{
((Component)RevolverDAL).gameObject.GetComponent<Rigidbody>().isKinematic = true;
}
((FVRInteractiveObject)RevolverDAL).IsSimpleInteract = true;
((Component)RevolverDAL).gameObject.transform.position = WagPosL.transform.position;
((Component)RevolverDAL).gameObject.transform.eulerAngles = WagPosL.transform.eulerAngles;
}
}
if ((Object)(object)RevolverSAL != (Object)null && L.Input.TriggerFloat > 0.2f)
{
if ((Object)(object)SpinnPosL == (Object)null)
{
SpinnPosL = RevolverSAL.PoseSpinHolder;
SpinnHL.transform.position = ((Component)SpinnPosL).transform.position;
SpinnHL.transform.localEulerAngles = new Vector3(45f, 0f, 0f);
WagPosL.transform.position = ((Component)RevolverSAL).gameObject.transform.position;
WagPosL.transform.eulerAngles = ((Component)RevolverSAL).gameObject.transform.eulerAngles;
((Component)RevolverSAL).gameObject.transform.SetParent(((Component)L).gameObject.transform);
}
if (!L.Input.GripPressed)
{
GM.CurrentMovementManager.Hands[0].Display_Controller.SetActive(false);
GM.CurrentMovementManager.Hands[0].Display_InteractionSphere.SetActive(false);
GM.CurrentMovementManager.Hands[0].Display_InteractionSphere_Palm.SetActive(false);
if ((Object)(object)((Component)RevolverSAL).gameObject.GetComponent<Rigidbody>() != (Object)null)
{
((Component)RevolverSAL).gameObject.GetComponent<Rigidbody>().isKinematic = true;
}
((FVRInteractiveObject)RevolverSAL).IsSimpleInteract = true;
((Component)RevolverSAL).gameObject.transform.position = WagPosL.transform.position;
((Component)RevolverSAL).gameObject.transform.eulerAngles = WagPosL.transform.eulerAngles;
}
}
if ((Object)(object)R.m_currentInteractable != (Object)null)
{
if ((Object)(object)RevolverDAR == (Object)null && (Object)(object)((Component)R.m_currentInteractable).gameObject.GetComponent<Revolver>() != (Object)null)
{
RevolverDAR = ((Component)R.m_currentInteractable).gameObject.GetComponent<Revolver>();
}
if ((Object)(object)RevolverSAR == (Object)null && (Object)(object)((Component)R.m_currentInteractable).gameObject.GetComponent<SingleActionRevolver>() != (Object)null)
{
RevolverSAR = ((Component)R.m_currentInteractable).gameObject.GetComponent<SingleActionRevolver>();
}
}
if ((Object)(object)RevolverDAR != (Object)null && R.Input.TriggerFloat > 0.2f)
{
if ((Object)(object)SpinnPosR == (Object)null)
{
SpinnPosR = RevolverDAR.PoseSpinHolder;
SpinnHR.transform.position = ((Component)SpinnPosR).transform.position;
SpinnHR.transform.localEulerAngles = new Vector3(45f, 0f, 0f);
WagPosR.transform.position = ((Component)RevolverDAR).gameObject.transform.position;
WagPosR.transform.eulerAngles = ((Component)RevolverDAR).gameObject.transform.eulerAngles;
((Component)RevolverDAR).gameObject.transform.SetParent(((Component)R).gameObject.transform);
}
if (!R.Input.GripPressed)
{
GM.CurrentMovementManager.Hands[1].Display_Controller.SetActive(false);
GM.CurrentMovementManager.Hands[1].Display_InteractionSphere.SetActive(false);
GM.CurrentMovementManager.Hands[1].Display_InteractionSphere_Palm.SetActive(false);
if ((Object)(object)((Component)RevolverDAR).gameObject.GetComponent<Rigidbody>() != (Object)null)
{
((Component)RevolverDAR).gameObject.GetComponent<Rigidbody>().isKinematic = true;
}
((FVRInteractiveObject)RevolverDAR).IsSimpleInteract = true;
((Component)RevolverDAR).gameObject.transform.position = WagPosR.transform.position;
((Component)RevolverDAR).gameObject.transform.eulerAngles = WagPosR.transform.eulerAngles;
}
}
if (!((Object)(object)RevolverSAR != (Object)null) || !(R.Input.TriggerFloat > 0.2f))
{
return;
}
if ((Object)(object)SpinnPosR == (Object)null)
{
SpinnPosR = RevolverSAR.PoseSpinHolder;
SpinnHR.transform.position = ((Component)SpinnPosR).transform.position;
SpinnHR.transform.localEulerAngles = new Vector3(45f, 0f, 0f);
WagPosR.transform.position = ((Component)RevolverSAR).gameObject.transform.position;
WagPosR.transform.eulerAngles = ((Component)RevolverSAR).gameObject.transform.eulerAngles;
((Component)RevolverSAR).gameObject.transform.SetParent(((Component)R).gameObject.transform);
}
if (!R.Input.GripPressed)
{
GM.CurrentMovementManager.Hands[1].Display_Controller.SetActive(false);
GM.CurrentMovementManager.Hands[1].Display_InteractionSphere.SetActive(false);
GM.CurrentMovementManager.Hands[1].Display_InteractionSphere_Palm.SetActive(false);
if ((Object)(object)((Component)RevolverSAR).gameObject.GetComponent<Rigidbody>() != (Object)null)
{
((Component)RevolverSAR).gameObject.GetComponent<Rigidbody>().isKinematic = true;
}
((FVRInteractiveObject)RevolverSAR).IsSimpleInteract = true;
((Component)RevolverSAR).gameObject.transform.position = WagPosR.transform.position;
((Component)RevolverSAR).gameObject.transform.eulerAngles = WagPosR.transform.eulerAngles;
}
}
}
}
namespace JerryRevolver2
{
[BepInPlugin("JerryDLL.JerryRevolver", "JR", "1.0.0")]
[BepInDependency("nrgill28.Sodalite", "1.4.1")]
[BepInProcess("h3vr.exe")]
public class LetRevolverSpinn2 : BaseUnityPlugin
{
public Revolver RevolverDAL;
public SingleActionRevolver RevolverSAL;
public Revolver RevolverDAR;
public SingleActionRevolver RevolverSAR;
public FVRViveHand L;
public FVRViveHand R;
public GameObject SpinnHL;
public GameObject SpinnHR;
public WaggleJoint WagL;
public WaggleJoint WagR;
public Transform SpinnPosL;
public Transform SpinnPosR;
public GameObject WagPosL;
public GameObject WagPosR;
public GameObject GeoL;
public GameObject GeoR;
private float lastAngleXL;
private bool isInitializedL = false;
private float lastAngleXR;
private bool isInitializedR = false;
private void Update()
{
//IL_002b: Unknown result type (might be due to invalid IL or missing references)
//IL_0045: Expected O, but got Unknown
//IL_0064: Unknown result type (might be due to invalid IL or missing references)
//IL_0074: Unknown result type (might be due to invalid IL or missing references)
//IL_008e: Expected O, but got Unknown
//IL_00ad: Unknown result type (might be due to invalid IL or missing references)
//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
//IL_00fb: Expected O, but got Unknown
//IL_011a: Unknown result type (might be due to invalid IL or missing references)
//IL_013e: Unknown result type (might be due to invalid IL or missing references)
//IL_01ea: Unknown result type (might be due to invalid IL or missing references)
//IL_0204: Expected O, but got Unknown
//IL_0223: Unknown result type (might be due to invalid IL or missing references)
//IL_0233: Unknown result type (might be due to invalid IL or missing references)
//IL_024d: Expected O, but got Unknown
//IL_026c: Unknown result type (might be due to invalid IL or missing references)
//IL_0290: Unknown result type (might be due to invalid IL or missing references)
//IL_02a0: Unknown result type (might be due to invalid IL or missing references)
//IL_02ba: Expected O, but got Unknown
//IL_02d9: Unknown result type (might be due to invalid IL or missing references)
//IL_02fd: Unknown result type (might be due to invalid IL or missing references)
//IL_03cd: Unknown result type (might be due to invalid IL or missing references)
//IL_03d2: Unknown result type (might be due to invalid IL or missing references)
//IL_07a4: Unknown result type (might be due to invalid IL or missing references)
//IL_07a9: Unknown result type (might be due to invalid IL or missing references)
//IL_07c2: Unknown result type (might be due to invalid IL or missing references)
//IL_07c7: Unknown result type (might be due to invalid IL or missing references)
//IL_0583: Unknown result type (might be due to invalid IL or missing references)
//IL_0588: Unknown result type (might be due to invalid IL or missing references)
//IL_03ef: Unknown result type (might be due to invalid IL or missing references)
//IL_03f4: Unknown result type (might be due to invalid IL or missing references)
//IL_0bd0: Unknown result type (might be due to invalid IL or missing references)
//IL_0bd5: Unknown result type (might be due to invalid IL or missing references)
//IL_0991: Unknown result type (might be due to invalid IL or missing references)
//IL_0996: Unknown result type (might be due to invalid IL or missing references)
//IL_09af: Unknown result type (might be due to invalid IL or missing references)
//IL_09b4: Unknown result type (might be due to invalid IL or missing references)
//IL_08db: Unknown result type (might be due to invalid IL or missing references)
//IL_08ff: Unknown result type (might be due to invalid IL or missing references)
//IL_0923: Unknown result type (might be due to invalid IL or missing references)
//IL_0856: Unknown result type (might be due to invalid IL or missing references)
//IL_0870: Unknown result type (might be due to invalid IL or missing references)
//IL_087a: Unknown result type (might be due to invalid IL or missing references)
//IL_08a7: Unknown result type (might be due to invalid IL or missing references)
//IL_05a5: Unknown result type (might be due to invalid IL or missing references)
//IL_05aa: Unknown result type (might be due to invalid IL or missing references)
//IL_0535: Unknown result type (might be due to invalid IL or missing references)
//IL_055a: Unknown result type (might be due to invalid IL or missing references)
//IL_0fab: Unknown result type (might be due to invalid IL or missing references)
//IL_0fb0: Unknown result type (might be due to invalid IL or missing references)
//IL_0fc9: Unknown result type (might be due to invalid IL or missing references)
//IL_0fce: Unknown result type (might be due to invalid IL or missing references)
//IL_0d88: Unknown result type (might be due to invalid IL or missing references)
//IL_0d8d: Unknown result type (might be due to invalid IL or missing references)
//IL_0bf3: Unknown result type (might be due to invalid IL or missing references)
//IL_0bf8: Unknown result type (might be due to invalid IL or missing references)
//IL_0ac8: Unknown result type (might be due to invalid IL or missing references)
//IL_0aec: Unknown result type (might be due to invalid IL or missing references)
//IL_0b10: Unknown result type (might be due to invalid IL or missing references)
//IL_0a43: Unknown result type (might be due to invalid IL or missing references)
//IL_0a5d: Unknown result type (might be due to invalid IL or missing references)
//IL_0a67: Unknown result type (might be due to invalid IL or missing references)
//IL_0a94: Unknown result type (might be due to invalid IL or missing references)
//IL_06eb: Unknown result type (might be due to invalid IL or missing references)
//IL_0710: Unknown result type (might be due to invalid IL or missing references)
//IL_1198: Unknown result type (might be due to invalid IL or missing references)
//IL_119d: Unknown result type (might be due to invalid IL or missing references)
//IL_11b6: Unknown result type (might be due to invalid IL or missing references)
//IL_11bb: Unknown result type (might be due to invalid IL or missing references)
//IL_10e2: Unknown result type (might be due to invalid IL or missing references)
//IL_1106: Unknown result type (might be due to invalid IL or missing references)
//IL_112a: Unknown result type (might be due to invalid IL or missing references)
//IL_105d: Unknown result type (might be due to invalid IL or missing references)
//IL_1077: Unknown result type (might be due to invalid IL or missing references)
//IL_1081: Unknown result type (might be due to invalid IL or missing references)
//IL_10ae: Unknown result type (might be due to invalid IL or missing references)
//IL_0dab: Unknown result type (might be due to invalid IL or missing references)
//IL_0db0: Unknown result type (might be due to invalid IL or missing references)
//IL_0d3a: Unknown result type (might be due to invalid IL or missing references)
//IL_0d5f: Unknown result type (might be due to invalid IL or missing references)
//IL_14a2: Unknown result type (might be due to invalid IL or missing references)
//IL_14c6: Unknown result type (might be due to invalid IL or missing references)
//IL_14eb: Unknown result type (might be due to invalid IL or missing references)
//IL_1510: Unknown result type (might be due to invalid IL or missing references)
//IL_12cf: Unknown result type (might be due to invalid IL or missing references)
//IL_12f3: Unknown result type (might be due to invalid IL or missing references)
//IL_1317: Unknown result type (might be due to invalid IL or missing references)
//IL_124a: Unknown result type (might be due to invalid IL or missing references)
//IL_1264: Unknown result type (might be due to invalid IL or missing references)
//IL_126e: Unknown result type (might be due to invalid IL or missing references)
//IL_129b: Unknown result type (might be due to invalid IL or missing references)
//IL_0ef2: Unknown result type (might be due to invalid IL or missing references)
//IL_0f17: Unknown result type (might be due to invalid IL or missing references)
//IL_168b: Unknown result type (might be due to invalid IL or missing references)
//IL_16af: Unknown result type (might be due to invalid IL or missing references)
//IL_16d4: Unknown result type (might be due to invalid IL or missing references)
//IL_16f9: Unknown result type (might be due to invalid IL or missing references)
//IL_15f5: Unknown result type (might be due to invalid IL or missing references)
//IL_161a: Unknown result type (might be due to invalid IL or missing references)
//IL_1928: Unknown result type (might be due to invalid IL or missing references)
//IL_194c: Unknown result type (might be due to invalid IL or missing references)
//IL_1971: Unknown result type (might be due to invalid IL or missing references)
//IL_1996: Unknown result type (might be due to invalid IL or missing references)
//IL_17de: Unknown result type (might be due to invalid IL or missing references)
//IL_1803: Unknown result type (might be due to invalid IL or missing references)
//IL_1b11: Unknown result type (might be due to invalid IL or missing references)
//IL_1b35: Unknown result type (might be due to invalid IL or missing references)
//IL_1b5a: Unknown result type (might be due to invalid IL or missing references)
//IL_1b7f: Unknown result type (might be due to invalid IL or missing references)
//IL_1a7b: Unknown result type (might be due to invalid IL or missing references)
//IL_1aa0: Unknown result type (might be due to invalid IL or missing references)
//IL_1c64: Unknown result type (might be due to invalid IL or missing references)
//IL_1c89: Unknown result type (might be due to invalid IL or missing references)
if ((Object)(object)L == (Object)null)
{
L = GM.CurrentMovementManager.Hands[0];
SpinnHL = Object.Instantiate<GameObject>(new GameObject("SpinnLH"), ((Component)L).gameObject.transform);
SpinnHL.transform.localEulerAngles = new Vector3(45f, 0f, 0f);
GeoL = Object.Instantiate<GameObject>(new GameObject("GeoL"), SpinnHL.gameObject.transform);
GeoL.transform.localPosition = new Vector3(0f, 0f, 0f);
GeoL.transform.localEulerAngles = new Vector3(270f, 0f, 0f);
WagPosL = Object.Instantiate<GameObject>(new GameObject("WPL"), GeoL.gameObject.transform);
WagPosL.transform.localPosition = new Vector3(0f, 0f, 0f);
WagPosL.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
WagL = SpinnHL.AddComponent<WaggleJoint>();
WagL.hingeGraphic = GeoL.transform;
WagL.distanceLimit = 0.05f;
WagL.angleLimitLeft = 0f;
WagL.angleLimitRight = 0f;
WagL.damping = 0.05f;
WagL.gravityScale = 0.25f;
}
if ((Object)(object)R == (Object)null)
{
R = GM.CurrentMovementManager.Hands[1];
SpinnHR = Object.Instantiate<GameObject>(new GameObject("SpinnRH"), ((Component)R).gameObject.transform);
SpinnHR.transform.localEulerAngles = new Vector3(45f, 0f, 0f);
GeoR = Object.Instantiate<GameObject>(new GameObject("GeoR"), SpinnHR.gameObject.transform);
GeoR.transform.localPosition = new Vector3(0f, 0f, 0f);
GeoR.transform.localEulerAngles = new Vector3(270f, 0f, 0f);
WagPosR = Object.Instantiate<GameObject>(new GameObject("WPR"), GeoR.gameObject.transform);
WagPosR.transform.localPosition = new Vector3(0f, 0f, 0f);
WagPosR.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
WagR = SpinnHR.AddComponent<WaggleJoint>();
WagR.hingeGraphic = GeoR.transform;
WagR.distanceLimit = 0.05f;
WagR.angleLimitLeft = 0f;
WagR.angleLimitRight = 0f;
WagR.damping = 0.05f;
WagR.gravityScale = 0.25f;
}
if (L.Input.TriggerFloat > 0.2f)
{
if (L.Input.GripPressed)
{
if ((Object)(object)RevolverDAL != (Object)null)
{
if (GeoL.transform.localEulerAngles.x >= 260f && GeoL.transform.localEulerAngles.x <= 280f)
{
WagL.angleLimitLeft = 0f;
WagL.angleLimitRight = 0f;
if ((Object)(object)((Component)RevolverDAL).gameObject.GetComponent<Rigidbody>() != (Object)null)
{
((Component)RevolverDAL).gameObject.GetComponent<Rigidbody>().isKinematic = true;
}
((FVRInteractiveObject)RevolverDAL).IsSimpleInteract = false;
if ((Object)(object)L.m_currentInteractable == (Object)null)
{
L.ForceSetInteractable((FVRInteractiveObject)(object)RevolverDAL);
}
}
else
{
GM.CurrentMovementManager.Hands[0].Display_Controller.SetActive(false);
GM.CurrentMovementManager.Hands[0].Display_InteractionSphere.SetActive(false);
GM.CurrentMovementManager.Hands[0].Display_InteractionSphere_Palm.SetActive(false);
if ((Object)(object)((Component)RevolverDAL).gameObject.GetComponent<Rigidbody>() != (Object)null)
{
((Component)RevolverDAL).gameObject.GetComponent<Rigidbody>().isKinematic = true;
}
((FVRInteractiveObject)RevolverDAL).IsSimpleInteract = true;
((Component)RevolverDAL).gameObject.transform.position = WagPosL.transform.position;
((Component)RevolverDAL).gameObject.transform.eulerAngles = WagPosL.transform.eulerAngles;
}
}
if ((Object)(object)RevolverSAL != (Object)null)
{
if (GeoL.transform.localEulerAngles.x >= 260f && GeoL.transform.localEulerAngles.x <= 280f)
{
WagL.angleLimitLeft = 0f;
WagL.angleLimitRight = 0f;
if ((Object)(object)((Component)RevolverDAR).gameObject.GetComponent<Rigidbody>() != (Object)null)
{
((Component)RevolverDAR).gameObject.GetComponent<Rigidbody>().isKinematic = true;
}
((FVRInteractiveObject)RevolverSAL).IsSimpleInteract = false;
if ((Object)(object)L.m_currentInteractable == (Object)null)
{
L.ForceSetInteractable((FVRInteractiveObject)(object)RevolverSAL);
}
}
else
{
GM.CurrentMovementManager.Hands[0].Display_Controller.SetActive(false);
GM.CurrentMovementManager.Hands[0].Display_InteractionSphere.SetActive(false);
GM.CurrentMovementManager.Hands[0].Display_InteractionSphere_Palm.SetActive(false);
if ((Object)(object)((Component)RevolverSAL).gameObject.GetComponent<Rigidbody>() != (Object)null)
{
((Component)RevolverSAL).gameObject.GetComponent<Rigidbody>().isKinematic = true;
}
((FVRInteractiveObject)RevolverSAL).IsSimpleInteract = true;
((Component)RevolverSAL).gameObject.transform.position = WagPosL.transform.position;
((Component)RevolverSAL).gameObject.transform.eulerAngles = WagPosL.transform.eulerAngles;
}
}
}
if (!L.Input.GripPressed)
{
WagL.angleLimitLeft = 3600f;
WagL.angleLimitRight = 3600f;
}
}
if (L.Input.TriggerFloat <= 0.2f)
{
if (!L.Input.GripPressed)
{
if ((Object)(object)RevolverDAL != (Object)null)
{
lastAngleXL = GeoL.transform.localEulerAngles.x;
float x = GeoL.transform.localEulerAngles.x;
float num = Mathf.DeltaAngle(lastAngleXL, x);
float num2 = num / Time.deltaTime;
lastAngleXL = x;
((Component)RevolverDAL).gameObject.transform.SetParent((Transform)null);
if ((Object)(object)((Component)RevolverDAL).gameObject.GetComponent<Rigidbody>() != (Object)null)
{
((Component)RevolverDAL).gameObject.GetComponent<Rigidbody>().isKinematic = false;
((Component)RevolverDAL).gameObject.GetComponent<Rigidbody>().AddForce(L.Input.VelLinearWorld * ((Vector3)(ref L.Input.VelLinearWorld)).magnitude * 0.1f, (ForceMode)1);
((Component)RevolverDAL).gameObject.GetComponent<Rigidbody>().AddRelativeTorque(new Vector3(num2 * 0.1f, 0f, 0f), (ForceMode)2);
}
RevolverDAL = null;
SpinnPosL = null;
WagPosL.transform.localPosition = new Vector3(0f, 0f, 0f);
WagPosL.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
SpinnHL.transform.localPosition = new Vector3(0f, 0f, 0f);
GM.CurrentMovementManager.Hands[0].Display_Controller.SetActive(true);
GM.CurrentMovementManager.Hands[0].Display_InteractionSphere.SetActive(true);
GM.CurrentMovementManager.Hands[0].Display_InteractionSphere_Palm.SetActive(true);
}
if ((Object)(object)RevolverSAL != (Object)null)
{
lastAngleXL = GeoL.transform.localEulerAngles.x;
float x2 = GeoL.transform.localEulerAngles.x;
float num3 = Mathf.DeltaAngle(lastAngleXL, x2);
float num4 = num3 / Time.deltaTime;
lastAngleXL = x2;
((Component)RevolverSAL).gameObject.transform.SetParent((Transform)null);
if ((Object)(object)((Component)RevolverSAL).gameObject.GetComponent<Rigidbody>() != (Object)null)
{
((Component)RevolverSAL).gameObject.GetComponent<Rigidbody>().isKinematic = false;
((Component)RevolverSAL).gameObject.GetComponent<Rigidbody>().AddForce(L.Input.VelLinearWorld * ((Vector3)(ref L.Input.VelLinearWorld)).magnitude * 0.1f, (ForceMode)1);
((Component)RevolverSAL).gameObject.GetComponent<Rigidbody>().AddRelativeTorque(new Vector3(num4 * 0.1f, 0f, 0f), (ForceMode)2);
}
RevolverSAL = null;
SpinnPosL = null;
WagPosL.transform.localPosition = new Vector3(0f, 0f, 0f);
WagPosL.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
SpinnHL.transform.localPosition = new Vector3(0f, 0f, 0f);
GM.CurrentMovementManager.Hands[0].Display_Controller.SetActive(true);
GM.CurrentMovementManager.Hands[0].Display_InteractionSphere.SetActive(true);
GM.CurrentMovementManager.Hands[0].Display_InteractionSphere_Palm.SetActive(true);
}
}
WagL.angleLimitLeft = 0f;
WagL.angleLimitRight = 0f;
}
if (R.Input.TriggerFloat > 0.2f)
{
if (R.Input.GripPressed)
{
if ((Object)(object)RevolverDAR != (Object)null)
{
if (GeoR.transform.localEulerAngles.x >= 260f && GeoR.transform.localEulerAngles.x <= 280f)
{
WagR.angleLimitLeft = 0f;
WagR.angleLimitRight = 0f;
if ((Object)(object)((Component)RevolverDAR).gameObject.GetComponent<Rigidbody>() != (Object)null)
{
((Component)RevolverDAR).gameObject.GetComponent<Rigidbody>().isKinematic = true;
}
((FVRInteractiveObject)RevolverDAR).IsSimpleInteract = false;
if ((Object)(object)R.m_currentInteractable == (Object)null)
{
R.ForceSetInteractable((FVRInteractiveObject)(object)RevolverDAR);
}
}
else
{
GM.CurrentMovementManager.Hands[1].Display_Controller.SetActive(false);
GM.CurrentMovementManager.Hands[1].Display_InteractionSphere.SetActive(false);
GM.CurrentMovementManager.Hands[1].Display_InteractionSphere_Palm.SetActive(false);
if ((Object)(object)((Component)RevolverDAR).gameObject.GetComponent<Rigidbody>() != (Object)null)
{
((Component)RevolverDAR).gameObject.GetComponent<Rigidbody>().isKinematic = true;
}
((FVRInteractiveObject)RevolverDAR).IsSimpleInteract = true;
((Component)RevolverDAR).gameObject.transform.position = WagPosR.transform.position;
((Component)RevolverDAR).gameObject.transform.eulerAngles = WagPosR.transform.eulerAngles;
}
}
if ((Object)(object)RevolverSAR != (Object)null)
{
if (GeoR.transform.localEulerAngles.x >= 260f && GeoR.transform.localEulerAngles.x <= 280f)
{
WagR.angleLimitLeft = 0f;
WagR.angleLimitRight = 0f;
if ((Object)(object)((Component)RevolverSAR).gameObject.GetComponent<Rigidbody>() != (Object)null)
{
((Component)RevolverSAR).gameObject.GetComponent<Rigidbody>().isKinematic = true;
}
((FVRInteractiveObject)RevolverSAR).IsSimpleInteract = false;
if ((Object)(object)R.m_currentInteractable == (Object)null)
{
R.ForceSetInteractable((FVRInteractiveObject)(object)RevolverSAR);
}
}
else
{
GM.CurrentMovementManager.Hands[1].Display_Controller.SetActive(false);
GM.CurrentMovementManager.Hands[1].Display_InteractionSphere.SetActive(false);
GM.CurrentMovementManager.Hands[1].Display_InteractionSphere_Palm.SetActive(false);
if ((Object)(object)((Component)RevolverSAR).gameObject.GetComponent<Rigidbody>() != (Object)null)
{
((Component)RevolverSAR).gameObject.GetComponent<Rigidbody>().isKinematic = true;
}
((FVRInteractiveObject)RevolverSAR).IsSimpleInteract = true;
((Component)RevolverSAR).gameObject.transform.position = WagPosR.transform.position;
((Component)RevolverSAR).gameObject.transform.eulerAngles = WagPosR.transform.eulerAngles;
}
}
}
if (!R.Input.GripPressed)
{
WagR.angleLimitLeft = 3600f;
WagR.angleLimitRight = 3600f;
}
}
if (R.Input.TriggerFloat <= 0.2f)
{
if (!R.Input.GripPressed)
{
if ((Object)(object)RevolverDAR != (Object)null)
{
lastAngleXR = GeoR.transform.localEulerAngles.x;
float x3 = GeoR.transform.localEulerAngles.x;
float num5 = Mathf.DeltaAngle(lastAngleXR, x3);
float num6 = num5 / Time.deltaTime;
lastAngleXR = x3;
((Component)RevolverDAR).gameObject.transform.SetParent((Transform)null);
if ((Object)(object)((Component)RevolverDAR).gameObject.GetComponent<Rigidbody>() != (Object)null)
{
((Component)RevolverDAR).gameObject.GetComponent<Rigidbody>().isKinematic = false;
((Component)RevolverDAR).gameObject.GetComponent<Rigidbody>().AddForce(R.Input.VelLinearWorld * ((Vector3)(ref R.Input.VelLinearWorld)).magnitude * 0.1f, (ForceMode)1);
((Component)RevolverDAR).gameObject.GetComponent<Rigidbody>().AddRelativeTorque(new Vector3(num6 * 0.1f, 0f, 0f), (ForceMode)2);
}
RevolverDAR = null;
SpinnPosR = null;
WagPosR.transform.localPosition = new Vector3(0f, 0f, 0f);
WagPosR.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
SpinnHR.transform.localPosition = new Vector3(0f, 0f, 0f);
GM.CurrentMovementManager.Hands[1].Display_Controller.SetActive(true);
GM.CurrentMovementManager.Hands[1].Display_InteractionSphere.SetActive(true);
GM.CurrentMovementManager.Hands[1].Display_InteractionSphere_Palm.SetActive(true);
}
if ((Object)(object)RevolverSAR != (Object)null)
{
lastAngleXR = GeoR.transform.localEulerAngles.x;
float x4 = GeoR.transform.localEulerAngles.x;
float num7 = Mathf.DeltaAngle(lastAngleXR, x4);
float num8 = num7 / Time.deltaTime;
lastAngleXR = x4;
((Component)RevolverSAR).gameObject.transform.SetParent((Transform)null);
if ((Object)(object)((Component)RevolverSAR).gameObject.GetComponent<Rigidbody>() != (Object)null)
{
((Component)RevolverSAR).gameObject.GetComponent<Rigidbody>().isKinematic = false;
((Component)RevolverSAR).gameObject.GetComponent<Rigidbody>().AddForce(R.Input.VelLinearWorld * ((Vector3)(ref R.Input.VelLinearWorld)).magnitude * 0.1f, (ForceMode)1);
((Component)RevolverSAR).gameObject.GetComponent<Rigidbody>().AddRelativeTorque(new Vector3(num8 * 0.1f, 0f, 0f), (ForceMode)2);
}
RevolverSAR = null;
SpinnPosR = null;
WagPosR.transform.localPosition = new Vector3(0f, 0f, 0f);
WagPosR.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
SpinnHR.transform.localPosition = new Vector3(0f, 0f, 0f);
GM.CurrentMovementManager.Hands[1].Display_Controller.SetActive(true);
GM.CurrentMovementManager.Hands[1].Display_InteractionSphere.SetActive(true);
GM.CurrentMovementManager.Hands[1].Display_InteractionSphere_Palm.SetActive(true);
}
}
WagR.angleLimitLeft = 0f;
WagR.angleLimitRight = 0f;
}
if ((Object)(object)L.m_currentInteractable != (Object)null)
{
if ((Object)(object)RevolverDAL == (Object)null && (Object)(object)((Component)L.m_currentInteractable).gameObject.GetComponent<Revolver>() != (Object)null)
{
RevolverDAL = ((Component)L.m_currentInteractable).gameObject.GetComponent<Revolver>();
}
if ((Object)(object)RevolverSAL == (Object)null && (Object)(object)((Component)L.m_currentInteractable).gameObject.GetComponent<SingleActionRevolver>() != (Object)null)
{
RevolverSAL = ((Component)L.m_currentInteractable).gameObject.GetComponent<SingleActionRevolver>();
}
}
if ((Object)(object)RevolverDAL != (Object)null && L.Input.TriggerFloat > 0.5f)
{
if ((Object)(object)SpinnPosL == (Object)null)
{
SpinnPosL = RevolverDAL.PoseSpinHolder;
SpinnHL.transform.position = ((Component)SpinnPosL).transform.position;
SpinnHL.transform.localEulerAngles = new Vector3(45f, 0f, 0f);
WagPosL.transform.position = ((Component)RevolverDAL).gameObject.transform.position;
WagPosL.transform.eulerAngles = ((Component)RevolverDAL).gameObject.transform.eulerAngles;
((Component)RevolverDAL).gameObject.transform.SetParent(((Component)L).gameObject.transform);
}
if (!L.Input.GripPressed)
{
GM.CurrentMovementManager.Hands[0].Display_Controller.SetActive(false);
GM.CurrentMovementManager.Hands[0].Display_InteractionSphere.SetActive(false);
GM.CurrentMovementManager.Hands[0].Display_InteractionSphere_Palm.SetActive(false);
if ((Object)(object)((Component)RevolverDAL).gameObject.GetComponent<Rigidbody>() != (Object)null)
{
((Component)RevolverDAL).gameObject.GetComponent<Rigidbody>().isKinematic = true;
}
((FVRInteractiveObject)RevolverDAL).IsSimpleInteract = true;
((Component)RevolverDAL).gameObject.transform.position = WagPosL.transform.position;
((Component)RevolverDAL).gameObject.transform.eulerAngles = WagPosL.transform.eulerAngles;
}
}
if ((Object)(object)RevolverSAL != (Object)null && L.Input.TriggerFloat > 0.5f)
{
if ((Object)(object)SpinnPosL == (Object)null)
{
SpinnPosL = RevolverSAL.PoseSpinHolder;
SpinnHL.transform.position = ((Component)SpinnPosL).transform.position;
SpinnHL.transform.localEulerAngles = new Vector3(45f, 0f, 0f);
WagPosL.transform.position = ((Component)RevolverSAL).gameObject.transform.position;
WagPosL.transform.eulerAngles = ((Component)RevolverSAL).gameObject.transform.eulerAngles;
((Component)RevolverSAL).gameObject.transform.SetParent(((Component)L).gameObject.transform);
}
if (!L.Input.GripPressed)
{
GM.CurrentMovementManager.Hands[0].Display_Controller.SetActive(false);
GM.CurrentMovementManager.Hands[0].Display_InteractionSphere.SetActive(false);
GM.CurrentMovementManager.Hands[0].Display_InteractionSphere_Palm.SetActive(false);
if ((Object)(object)((Component)RevolverSAL).gameObject.GetComponent<Rigidbody>() != (Object)null)
{
((Component)RevolverSAL).gameObject.GetComponent<Rigidbody>().isKinematic = true;
}
((FVRInteractiveObject)RevolverSAL).IsSimpleInteract = true;
((Component)RevolverSAL).gameObject.transform.position = WagPosL.transform.position;
((Component)RevolverSAL).gameObject.transform.eulerAngles = WagPosL.transform.eulerAngles;
}
}
if ((Object)(object)R.m_currentInteractable != (Object)null)
{
if ((Object)(object)RevolverDAR == (Object)null && (Object)(object)((Component)R.m_currentInteractable).gameObject.GetComponent<Revolver>() != (Object)null)
{
RevolverDAR = ((Component)R.m_currentInteractable).gameObject.GetComponent<Revolver>();
}
if ((Object)(object)RevolverSAR == (Object)null && (Object)(object)((Component)R.m_currentInteractable).gameObject.GetComponent<SingleActionRevolver>() != (Object)null)
{
RevolverSAR = ((Component)R.m_currentInteractable).gameObject.GetComponent<SingleActionRevolver>();
}
}
if ((Object)(object)RevolverDAR != (Object)null && R.Input.TriggerFloat > 0.5f)
{
if ((Object)(object)SpinnPosR == (Object)null)
{
SpinnPosR = RevolverDAR.PoseSpinHolder;
SpinnHR.transform.position = ((Component)SpinnPosR).transform.position;
SpinnHR.transform.localEulerAngles = new Vector3(45f, 0f, 0f);
WagPosR.transform.position = ((Component)RevolverDAR).gameObject.transform.position;
WagPosR.transform.eulerAngles = ((Component)RevolverDAR).gameObject.transform.eulerAngles;
((Component)RevolverDAR).gameObject.transform.SetParent(((Component)R).gameObject.transform);
}
if (!R.Input.GripPressed)
{
GM.CurrentMovementManager.Hands[1].Display_Controller.SetActive(false);
GM.CurrentMovementManager.Hands[1].Display_InteractionSphere.SetActive(false);
GM.CurrentMovementManager.Hands[1].Display_InteractionSphere_Palm.SetActive(false);
if ((Object)(object)((Component)RevolverDAR).gameObject.GetComponent<Rigidbody>() != (Object)null)
{
((Component)RevolverDAR).gameObject.GetComponent<Rigidbody>().isKinematic = true;
}
((FVRInteractiveObject)RevolverDAR).IsSimpleInteract = true;
((Component)RevolverDAR).gameObject.transform.position = WagPosR.transform.position;
((Component)RevolverDAR).gameObject.transform.eulerAngles = WagPosR.transform.eulerAngles;
}
}
if (!((Object)(object)RevolverSAR != (Object)null) || !(R.Input.TriggerFloat > 0.5f))
{
return;
}
if ((Object)(object)SpinnPosR == (Object)null)
{
SpinnPosR = RevolverSAR.PoseSpinHolder;
SpinnHR.transform.position = ((Component)SpinnPosR).transform.position;
SpinnHR.transform.localEulerAngles = new Vector3(45f, 0f, 0f);
WagPosR.transform.position = ((Component)RevolverSAR).gameObject.transform.position;
WagPosR.transform.eulerAngles = ((Component)RevolverSAR).gameObject.transform.eulerAngles;
((Component)RevolverSAR).gameObject.transform.SetParent(((Component)R).gameObject.transform);
}
if (!R.Input.GripPressed)
{
GM.CurrentMovementManager.Hands[1].Display_Controller.SetActive(false);
GM.CurrentMovementManager.Hands[1].Display_InteractionSphere.SetActive(false);
GM.CurrentMovementManager.Hands[1].Display_InteractionSphere_Palm.SetActive(false);
if ((Object)(object)((Component)RevolverSAR).gameObject.GetComponent<Rigidbody>() != (Object)null)
{
((Component)RevolverSAR).gameObject.GetComponent<Rigidbody>().isKinematic = true;
}
((FVRInteractiveObject)RevolverSAR).IsSimpleInteract = true;
((Component)RevolverSAR).gameObject.transform.position = WagPosR.transform.position;
((Component)RevolverSAR).gameObject.transform.eulerAngles = WagPosR.transform.eulerAngles;
}
}
}
}
namespace JerryAr.RevolverSpinner
{
[BepInPlugin("JerryAr.RevolverSpinner", "RevolverSpinner", "1.0.0")]
[BepInProcess("h3vr.exe")]
[Description("Built with MeatKit")]
public class RevolverSpinnerPlugin : BaseUnityPlugin
{
private static readonly string BasePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
internal static ManualLogSource Logger;
private void Awake()
{
Logger = ((BaseUnityPlugin)this).Logger;
LoadAssets();
}
private void LoadAssets()
{
Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly(), "JerryAr.RevolverSpinner");
}
}
}