Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
 public void InjectAllHandGrabInteractor(HandGrabAPI handGrabApi,
     IHand hand, Rigidbody rigidbody, GrabTypeFlags supportedGrabTypes, HandWristOffset gripPoint)
 {
     InjectHandGrabApi(handGrabApi);
     InjectHand(hand);
     InjectRigidbody(rigidbody);
     InjectSupportedGrabTypes(supportedGrabTypes);
     InjectGripPoint(gripPoint);
 }
Exemplo n.º 4
0
 private static bool SupportsPalm(IHandGrabber grabber,
                                  GrabTypeFlags grabTypes)
 {
     return((grabber.SupportedGrabTypes & GrabTypeFlags.Palm) != 0 &&
            (grabTypes & GrabTypeFlags.Palm) != 0);
 }
Exemplo n.º 5
0
 public void InjectSupportedGrabTypes(GrabTypeFlags supportedGrabTypes)
 {
     _supportedGrabTypes = supportedGrabTypes;
 }
Exemplo n.º 6
0
 private bool CanSnapToPinchPoint(HandGrabInteractable interactable, GrabTypeFlags grabTypes)
 {
     return _pinchPoint != null
         && !interactable.UsesHandPose()
         && (grabTypes & GrabTypeFlags.Pinch) != 0;
 }