/// <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); }
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(); } } }
/// <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); }
/// <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); }