Esempio n. 1
0
    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;
    }
Esempio n. 2
0
    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;
    }