コード例 #1
0
        /// <summary>
        /// Check a HandFilter against a Leap Chirality.
        /// </summary>
        /// <param name="handedness"></param>
        /// <param name="hand"></param>
        /// <returns></returns>
        public static bool HandFilterMatchesChirality(Chirality handedness, HandFilter hand)
        {
            switch (handedness)
            {
            case Chirality.Left:
                if ((hand == HandFilter.Left) || (hand == HandFilter.Either))
                {
                    return(true);
                }
                break;

            case Chirality.Right:
                if ((hand == HandFilter.Right) || (hand == HandFilter.Either))
                {
                    return(true);
                }
                break;

            case Chirality.Either:
                if (hand != HandFilter.None)
                {
                    return(true);
                }
                break;

            default:
                break;
            }

            return(false);
        }
コード例 #2
0
    private void ChangeHandState(Hand hand, HandState state, HandFilter filter)
    {
        if (hand.trackingConfidence == TrackingConfidence.High)
        {
            if (state == HandState.Closed)
            {
                hand.CloseHand();
            }

            else
            {
                hand.OpenHand();
            }
        }
        else
        {
            if (state == HandState.Closed)
            {
                hand.CloseHand();
            }

            else
            {
                hand.OpenHand();
            }
        }
    }
コード例 #3
0
        /// <summary>
        /// Returns connected controllers
        /// </summary>
        /// <param name="filter"></param>
        /// <returns></returns>
        public static OVRInput.Controller GetConnectedControllers(HandFilter filter = HandFilter.Both)
        {
            OVRInput.Controller controller = OVRInput.GetConnectedControllers();

            if (((filter & HandFilter.Right) == HandFilter.Right) && (controller & OVRInput.Controller.RTouch) == OVRInput.Controller.RTouch)
            {
                return(OVRInput.Controller.RTouch);
            }

            if (((filter & HandFilter.Left) == HandFilter.Left) && (controller & OVRInput.Controller.LTouch) == OVRInput.Controller.LTouch)
            {
                return(OVRInput.Controller.LTouch);
            }

            if (((filter & HandFilter.Right) == HandFilter.Right) && (controller & OVRInput.Controller.RTrackedRemote) == OVRInput.Controller.RTrackedRemote)
            {
                return(OVRInput.Controller.RTrackedRemote);
            }

            if (((filter & HandFilter.Left) == HandFilter.Left) && (controller & OVRInput.Controller.LTrackedRemote) == OVRInput.Controller.LTrackedRemote)
            {
                return(OVRInput.Controller.LTrackedRemote);
            }

            controller = OVRInput.Controller.None;
            if (OVRPlugin.GetHandTrackingEnabled())
            {
                if ((filter & HandFilter.Both) == HandFilter.Both)
                {
                    return(OVRInput.Controller.Hands);
                }
                else if ((filter & HandFilter.Right) == HandFilter.Right)
                {
                    return(OVRInput.Controller.RHand);
                }
                else
                {
                    return(OVRInput.Controller.LHand);
                }
            }

            return(OVRInput.Controller.None);
        }
コード例 #4
0
        /// <summary>
        /// Check a HandFilter against a IsLeft boolean value.
        /// </summary>
        /// <param name="isLeft"></param>
        /// <param name="hand"></param>
        /// <returns>hand filter is valid given the supplied isLeft value.</returns>
        public static bool HandFilterMatchesSide(bool isLeft, HandFilter hand)
        {
            if (hand == HandFilter.Either)
            {
                return(true);
            }
            else if (hand == HandFilter.Both)
            {
                return(true);
            }
            else if (hand == HandFilter.Left)
            {
                return(isLeft);
            }
            else if (hand == HandFilter.Right)
            {
                return(!isLeft);
            }

            return(false);
        }