// Token: 0x06003B61 RID: 15201 RVA: 0x0012B028 File Offset: 0x00129428 private void OffhandGrabbed(Grabbable grabbable) { if (this.m_grabbedGrabbable == grabbable) { this.GrabbableRelease(Vector3.zero, Vector3.zero); } }
// Token: 0x06003B5A RID: 15194 RVA: 0x0012AC5C File Offset: 0x0012905C private void GrabBegin() { float num = float.MaxValue; Grabbable grabbable = null; GrabPoint grabPoint = null; foreach (Grabbable grabbable2 in this.m_grabCandidates.Keys) { if (!grabbable2.IsGrabbed || grabbable2.AllowOffhandGrab) { foreach (GrabPoint grabPoint2 in grabbable2.GrabPoints) { Vector3 b = grabPoint2.GrabCollider.ClosestPointOnBounds(this.m_gripTransform.position); float sqrMagnitude = (this.m_gripTransform.position - b).sqrMagnitude; if (sqrMagnitude < num) { num = sqrMagnitude; grabbable = grabbable2; grabPoint = grabPoint2; } } } } this.GrabVolumeEnable(false); if (grabbable != null) { if (grabbable.IsGrabbed) { grabbable.GrabbedHand.OffhandGrabbed(grabbable); } this.GrabbableGrab(grabbable, grabPoint); } }
// Token: 0x06003B51 RID: 15185 RVA: 0x0012A9A8 File Offset: 0x00128DA8 private void OnTriggerExit(Collider otherCollider) { GrabTrigger component = otherCollider.GetComponent <GrabTrigger>(); if (component == null) { return; } Grabbable grabbable = component.Grabbable; int num = 0; if (!this.m_grabCandidates.TryGetValue(grabbable, out num)) { return; } if (num > 1) { this.m_grabCandidates[grabbable] = num - 1; } else { grabbable.OverlapEnd(this); this.m_grabCandidates.Remove(grabbable); } }
// Token: 0x06003B37 RID: 15159 RVA: 0x0012A3CB File Offset: 0x001287CB public void SetGrabbable(Grabbable grabbable) { if (this.m_grabbable != null) { throw new InvalidOperationException("GrabTrigger: Grabbable already set by a different grab point -- make sure multiple grab points are not referencing the same collider."); } this.m_grabbable = grabbable; }
// Token: 0x06003B50 RID: 15184 RVA: 0x0012A928 File Offset: 0x00128D28 private void OnTriggerEnter(Collider otherCollider) { GrabTrigger component = otherCollider.GetComponent <GrabTrigger>(); if (component == null) { return; } Grabbable grabbable = component.Grabbable; int num = 0; this.m_grabCandidates.TryGetValue(grabbable, out num); this.m_grabCandidates[grabbable] = num + 1; if (num == 0) { grabbable.OverlapBegin(this); if (this.m_wasGrabVolumeEnabled == this.m_grabVolumeEnabled) { this.m_trackedController.PlayHapticEvent(320f, 0.25f, 0.05f); } } }
// Token: 0x06003B5D RID: 15197 RVA: 0x0012AF1C File Offset: 0x0012931C private void GrabbableGrab(Grabbable grabbable, GrabPoint grabPoint) { this.m_grabbedGrabbable = grabbable; this.m_grabbedGrabbable.GrabBegin(this, grabPoint); this.m_grabbedHandPose = this.m_grabbedGrabbable.HandPose; }