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(new GameObject("SpinnLH"), ((Component)L).gameObject.transform); SpinnHL.transform.localEulerAngles = new Vector3(45f, 0f, 0f); GeoL = Object.Instantiate(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(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(); 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(new GameObject("SpinnRH"), ((Component)R).gameObject.transform); SpinnHR.transform.localEulerAngles = new Vector3(45f, 0f, 0f); GeoR = Object.Instantiate(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(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(); 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() != (Object)null) { ((Component)RevolverDAL).gameObject.GetComponent().useGravity = false; ((Component)RevolverDAL).gameObject.GetComponent().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() != (Object)null) { ((Component)RevolverDAL).gameObject.GetComponent().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() != (Object)null) { ((Component)RevolverSAL).gameObject.GetComponent().useGravity = false; ((Component)RevolverSAL).gameObject.GetComponent().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() != (Object)null) { ((Component)RevolverSAL).gameObject.GetComponent().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() != (Object)null) { ((Component)RevolverDAL).gameObject.GetComponent().useGravity = true; ((Component)RevolverDAL).gameObject.GetComponent().isKinematic = false; ((Component)RevolverDAL).gameObject.GetComponent().AddForce(L.Input.VelLinearWorld * ((Vector3)(ref L.Input.VelLinearWorld)).magnitude * 0.1f, (ForceMode)1); if (num > 0f) { ((Component)RevolverDAL).gameObject.GetComponent().AddRelativeTorque(new Vector3(num2 * 0.01f, 0f, 0f), (ForceMode)2); } if (num <= 0f) { ((Component)RevolverDAL).gameObject.GetComponent().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() != (Object)null) { ((Component)RevolverSAL).gameObject.GetComponent().useGravity = true; ((Component)RevolverSAL).gameObject.GetComponent().isKinematic = false; ((Component)RevolverSAL).gameObject.GetComponent().AddForce(L.Input.VelLinearWorld * ((Vector3)(ref L.Input.VelLinearWorld)).magnitude * 0.1f, (ForceMode)1); if (num > 0f) { ((Component)RevolverSAL).gameObject.GetComponent().AddRelativeTorque(new Vector3(num2 * 0.01f, 0f, 0f), (ForceMode)2); } if (num <= 0f) { ((Component)RevolverSAL).gameObject.GetComponent().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() != (Object)null) { ((Component)RevolverDAR).gameObject.GetComponent().useGravity = false; ((Component)RevolverDAR).gameObject.GetComponent().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() != (Object)null) { ((Component)RevolverDAR).gameObject.GetComponent().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() != (Object)null) { ((Component)RevolverSAR).gameObject.GetComponent().useGravity = false; ((Component)RevolverSAR).gameObject.GetComponent().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() != (Object)null) { ((Component)RevolverSAR).gameObject.GetComponent().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() != (Object)null) { ((Component)RevolverDAR).gameObject.GetComponent().useGravity = true; ((Component)RevolverDAR).gameObject.GetComponent().isKinematic = false; ((Component)RevolverDAR).gameObject.GetComponent().AddForce(R.Input.VelLinearWorld * ((Vector3)(ref R.Input.VelLinearWorld)).magnitude * 0.1f, (ForceMode)1); if (num3 > 0f) { ((Component)RevolverDAR).gameObject.GetComponent().AddRelativeTorque(new Vector3(num4 * 0.01f, 0f, 0f), (ForceMode)2); } if (num3 <= 0f) { ((Component)RevolverDAR).gameObject.GetComponent().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() != (Object)null) { ((Component)RevolverSAR).gameObject.GetComponent().useGravity = true; ((Component)RevolverSAR).gameObject.GetComponent().isKinematic = false; ((Component)RevolverSAR).gameObject.GetComponent().AddForce(R.Input.VelLinearWorld * ((Vector3)(ref R.Input.VelLinearWorld)).magnitude * 0.1f, (ForceMode)1); if (num3 > 0f) { ((Component)RevolverSAR).gameObject.GetComponent().AddRelativeTorque(new Vector3(num4 * 0.01f, 0f, 0f), (ForceMode)2); } if (num3 <= 0f) { ((Component)RevolverSAR).gameObject.GetComponent().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() != (Object)null) { RevolverDAL = ((Component)L.m_currentInteractable).gameObject.GetComponent(); } if ((Object)(object)RevolverSAL == (Object)null && (Object)(object)((Component)L.m_currentInteractable).gameObject.GetComponent() != (Object)null) { RevolverSAL = ((Component)L.m_currentInteractable).gameObject.GetComponent(); } } 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() != (Object)null) { ((Component)RevolverDAL).gameObject.GetComponent().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() != (Object)null) { ((Component)RevolverSAL).gameObject.GetComponent().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() != (Object)null) { RevolverDAR = ((Component)R.m_currentInteractable).gameObject.GetComponent(); } if ((Object)(object)RevolverSAR == (Object)null && (Object)(object)((Component)R.m_currentInteractable).gameObject.GetComponent() != (Object)null) { RevolverSAR = ((Component)R.m_currentInteractable).gameObject.GetComponent(); } } 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() != (Object)null) { ((Component)RevolverDAR).gameObject.GetComponent().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() != (Object)null) { ((Component)RevolverSAR).gameObject.GetComponent().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(new GameObject("SpinnLH"), ((Component)L).gameObject.transform); SpinnHL.transform.localEulerAngles = new Vector3(45f, 0f, 0f); GeoL = Object.Instantiate(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(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(); 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(new GameObject("SpinnRH"), ((Component)R).gameObject.transform); SpinnHR.transform.localEulerAngles = new Vector3(45f, 0f, 0f); GeoR = Object.Instantiate(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(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(); 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() != (Object)null) { ((Component)RevolverDAL).gameObject.GetComponent().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() != (Object)null) { ((Component)RevolverDAL).gameObject.GetComponent().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() != (Object)null) { ((Component)RevolverDAR).gameObject.GetComponent().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() != (Object)null) { ((Component)RevolverSAL).gameObject.GetComponent().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() != (Object)null) { ((Component)RevolverDAL).gameObject.GetComponent().isKinematic = false; ((Component)RevolverDAL).gameObject.GetComponent().AddForce(L.Input.VelLinearWorld * ((Vector3)(ref L.Input.VelLinearWorld)).magnitude * 0.1f, (ForceMode)1); ((Component)RevolverDAL).gameObject.GetComponent().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() != (Object)null) { ((Component)RevolverSAL).gameObject.GetComponent().isKinematic = false; ((Component)RevolverSAL).gameObject.GetComponent().AddForce(L.Input.VelLinearWorld * ((Vector3)(ref L.Input.VelLinearWorld)).magnitude * 0.1f, (ForceMode)1); ((Component)RevolverSAL).gameObject.GetComponent().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() != (Object)null) { ((Component)RevolverDAR).gameObject.GetComponent().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() != (Object)null) { ((Component)RevolverDAR).gameObject.GetComponent().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() != (Object)null) { ((Component)RevolverSAR).gameObject.GetComponent().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() != (Object)null) { ((Component)RevolverSAR).gameObject.GetComponent().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() != (Object)null) { ((Component)RevolverDAR).gameObject.GetComponent().isKinematic = false; ((Component)RevolverDAR).gameObject.GetComponent().AddForce(R.Input.VelLinearWorld * ((Vector3)(ref R.Input.VelLinearWorld)).magnitude * 0.1f, (ForceMode)1); ((Component)RevolverDAR).gameObject.GetComponent().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() != (Object)null) { ((Component)RevolverSAR).gameObject.GetComponent().isKinematic = false; ((Component)RevolverSAR).gameObject.GetComponent().AddForce(R.Input.VelLinearWorld * ((Vector3)(ref R.Input.VelLinearWorld)).magnitude * 0.1f, (ForceMode)1); ((Component)RevolverSAR).gameObject.GetComponent().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() != (Object)null) { RevolverDAL = ((Component)L.m_currentInteractable).gameObject.GetComponent(); } if ((Object)(object)RevolverSAL == (Object)null && (Object)(object)((Component)L.m_currentInteractable).gameObject.GetComponent() != (Object)null) { RevolverSAL = ((Component)L.m_currentInteractable).gameObject.GetComponent(); } } 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() != (Object)null) { ((Component)RevolverDAL).gameObject.GetComponent().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() != (Object)null) { ((Component)RevolverSAL).gameObject.GetComponent().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() != (Object)null) { RevolverDAR = ((Component)R.m_currentInteractable).gameObject.GetComponent(); } if ((Object)(object)RevolverSAR == (Object)null && (Object)(object)((Component)R.m_currentInteractable).gameObject.GetComponent() != (Object)null) { RevolverSAR = ((Component)R.m_currentInteractable).gameObject.GetComponent(); } } 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() != (Object)null) { ((Component)RevolverDAR).gameObject.GetComponent().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() != (Object)null) { ((Component)RevolverSAR).gameObject.GetComponent().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"); } } }