public override void OnAttach(XRHand emptyHand, Vector3 attachPositionWS, Quaternion attachRotationWS) { if (mounted) { _UnMount(); } if (!hand) { hand = emptyHand; (joint, jointBias) = BuildJoint(body, emptyHand.bodyToAttach, jointSettings); attachedPositionLS = transform.InverseTransformPoint(attachPositionWS); attachedRotationLS = Quaternion.Inverse(transform.rotation) * attachRotationWS; ResetMovement(); updateEvents.updateAttach.Invoke(emptyHand.playerRoot); _OnPickUp(); } else { if (!hand2Enabled) { hand.TransforAttached(emptyHand); hand = emptyHand; (joint, jointBias) = BuildJoint(body, emptyHand.bodyToAttach, jointSettings); attachedPositionLS = transform.InverseTransformPoint(attachPositionWS); attachedRotationLS = Quaternion.Inverse(transform.rotation) * attachRotationWS; //TODO Test Logic } else { if (hand2) { hand2.DetachIfAny(); } hand2 = emptyHand; (joint2, jointBias2) = BuildJoint(body, emptyHand.bodyToAttach, jointSettings); attached2PositionLS = transform.InverseTransformPoint(attachPositionWS); attached2RotationLS = Quaternion.Inverse(transform.rotation) * attachRotationWS; } } }