public void GripDown() { // Storing a possible reference Transform closest = null; // switch based on grab type switch (m_grabType) { case (GrabType.Grip): // If grip, we grab from our grip detector closest = m_grabVol.closestInRange; break; /* * case(grabType.Distance): * // We cannot use the teleport ponter for grabbing -_- * closest = (m_pointer.GetPointerType() != "Teleport" && m_pointer.raycastTarget != null && m_pointer.raycastTarget.GetComponent<CustomGrabbable>()) ? m_pointer.raycastTarget.transform : null; * break; * case(grabType.Both): * // If grip, we grab from our grip detector * closest = m_gripDetector.closestInRange; * // closest is updated based on if it's already not null or not - if it is still null, we check the pointer * closest = (closest != null) ? closest : (m_pointer.GetPointerType() != "Teleport" && m_pointer.raycastTarget != null && m_pointer.raycastTarget.GetComponent<CustomGrabbable>()) ? m_pointer.raycastTarget.transform : null; * break; */ } // If closest is not == null, we grab it! if (closest != null && m_grabbedObject == null) { closest.GetComponent <XRGrabbable>().GrabBegin(this); m_grabbedObject = closest.GetComponent <XRGrabbable>(); m_grabVol.AddTransformIgnore(m_grabbedObject.transform); } return; }
public void GripUp() { if (m_grabbedObject == null) { return; } m_grabbedObject.GrabEnd(this, m_velocity, m_angularVelocity); m_grabVol.RemoveTransformIgnore(m_grabbedObject.transform); m_grabbedObject = null; /* * OVRPose localPose = new OVRPose { position = OVRInput.GetLocalControllerPosition(m_OVRController), orientation = OVRInput.GetLocalControllerRotation(m_OVRController) }; * OVRPose trackingSpace = transform.ToOVRPose() * localPose.Inverse(); * Vector3 linearVelocity = trackingSpace.orientation * OVRInput.GetLocalControllerVelocity(m_OVRController); * Vector3 angularVelocity = trackingSpace.orientation * OVRInput.GetLocalControllerAngularVelocity(m_OVRController); * angularVelocity *= -1; * m_grabbedObject.GrabEnd(this, linearVelocity, angularVelocity); * m_grabbedObject.GrabEnd(this, 0f, 0f); * m_grabbedObject = null; */ return; }