public static float ComputeHandGrabScore(IHandGrabber grabber, IHandGrabbable grabbable, out GrabTypeFlags handGrabTypes) { HandGrabAPI api = grabber.HandGrabApi; handGrabTypes = GrabTypeFlags.None; float handGrabScore = 0f; if (SupportsPinch(grabber, grabbable)) { float pinchStrength = api.GetHandPinchScore(grabbable.PinchGrabRules, false); if (pinchStrength > handGrabScore) { handGrabScore = pinchStrength; handGrabTypes = GrabTypeFlags.Pinch; } } if (SupportsPalm(grabber, grabbable)) { float palmStrength = api.GetHandPalmScore(grabbable.PalmGrabRules, false); if (palmStrength > handGrabScore) { handGrabScore = palmStrength; handGrabTypes = GrabTypeFlags.Palm; } } return(handGrabScore); }
public static bool ComputeShouldSelect(IHandGrabber grabber, IHandGrabbable grabbable, out GrabTypeFlags selectingGrabTypes) { if (grabbable == null) { selectingGrabTypes = GrabTypeFlags.None; return(false); } HandGrabAPI api = grabber.HandGrabApi; selectingGrabTypes = GrabTypeFlags.None; if (SupportsPinch(grabber, grabbable) && api.IsHandSelectPinchFingersChanged(grabbable.PinchGrabRules)) { selectingGrabTypes |= GrabTypeFlags.Pinch; } if (SupportsPalm(grabber, grabbable) && api.IsHandSelectPalmFingersChanged(grabbable.PalmGrabRules)) { selectingGrabTypes |= GrabTypeFlags.Palm; } return(selectingGrabTypes != GrabTypeFlags.None); }
public void InjectAllHandGrabInteractor(HandGrabAPI handGrabApi, IHand hand, Rigidbody rigidbody, GrabTypeFlags supportedGrabTypes, HandWristOffset gripPoint) { InjectHandGrabApi(handGrabApi); InjectHand(hand); InjectRigidbody(rigidbody); InjectSupportedGrabTypes(supportedGrabTypes); InjectGripPoint(gripPoint); }
private static bool SupportsPalm(IHandGrabber grabber, GrabTypeFlags grabTypes) { return((grabber.SupportedGrabTypes & GrabTypeFlags.Palm) != 0 && (grabTypes & GrabTypeFlags.Palm) != 0); }
public void InjectSupportedGrabTypes(GrabTypeFlags supportedGrabTypes) { _supportedGrabTypes = supportedGrabTypes; }
private bool CanSnapToPinchPoint(HandGrabInteractable interactable, GrabTypeFlags grabTypes) { return _pinchPoint != null && !interactable.UsesHandPose() && (grabTypes & GrabTypeFlags.Pinch) != 0; }