Esempio n. 1
0
        /// <summary>
        /// Indicates whether hand is pinching
        /// </summary>
        /// <param name="activeController"></param>
        /// <param name="finger"></param>
        /// <returns></returns>
        public static bool IsFingerPinching(OVRInput.Controller activeController, OVRHand.HandFinger finger)
        {
            bool isLeftHand = (activeController & OVRInput.Controller.LHand) == OVRInput.Controller.LHand;
            var  curPinch   = isLeftHand ? HandsManager.Instance.GetLeftPinchMode(finger) : HandsManager.Instance.GetRightPinchMode(finger);

            return(curPinch == HandsManager.PinchMode.Pinched);
        }
Esempio n. 2
0
    public IObservable <bool> OnPinch(OVRHand.HandFinger finger)
    {
        if (!_onPinches.ContainsKey(finger))
        {
            _onPinches.Add(finger, CreateOnPinch(finger));
        }

        return(_onPinches[finger]);
    }
Esempio n. 3
0
    public IObservable <float> OnPinchEnded(OVRHand.HandFinger finger)
    {
        if (!_onPinchesEnded.ContainsKey(finger))
        {
            _onPinchesEnded.Add(finger, CreateOnPinch(finger).Where(p => !p).Select(_ => Time.time));
        }

        return(_onPinchesEnded[finger]);
    }
Esempio n. 4
0
    public IObservable <Unit> CreateOnDoublePinch(OVRHand.HandFinger finger)
    {
        var lastPinchStream =
            Observable.EveryUpdate().Select(_ => IsPinching(finger));

        var currentPinchStream = Observable.EveryUpdate()
                                 .Select(_ => IsPinching(finger)).Skip(1);

        var pinchStartedStream = Observable.Zip(currentPinchStream, lastPinchStream).Where(p => p[0] && !p[1]);

        return(pinchStartedStream.Buffer(TimeSpan.FromSeconds(1), 2).Where(pinches => pinches.Count >= 2).Select(x => Unit.Default));
    }
Esempio n. 5
0
    public IObservable <bool> CreateOnPinch(OVRHand.HandFinger finger)
    {
        var lastPinchStream =
            Observable.EveryUpdate().Select(_ => IsPinching(finger));

        var currentPinchStream = Observable.EveryUpdate()
                                 .Select(_ => IsPinching(finger)).Skip(1);

        return(Observable.Zip(lastPinchStream, currentPinchStream)
               .Where(p => p[0] != p[1])
               .Select(p => !p[0] && p[1]));
    }
Esempio n. 6
0
 static private bool IsFingerPinched(OVRHand hand, OVRHand.HandFinger finger)
 {
     return(hand.GetFingerConfidence(finger) == OVRHand.TrackingConfidence.High && hand.GetFingerIsPinching(finger) && hand.GetFingerPinchStrength(finger) >= PinchMaxStrength);
 }
Esempio n. 7
0
 public PinchMode GetLastRightPinchMode(OVRHand.HandFinger finger)
 {
     return(_lastPinchModeRight[(int)finger]);
 }
Esempio n. 8
0
 public PinchMode GetLastLeftPinchMode(OVRHand.HandFinger finger)
 {
     return(_lastPinchModeLeft[(int)finger]);
 }
Esempio n. 9
0
 public float GetFingerStrength(FingerType fingerType)
 {
     OVRHand.HandFinger finger = ConvertFingerType(fingerType);
     return(_hand.GetFingerPinchStrength(finger));
 }
Esempio n. 10
0
 public bool GetFingerIsPinching(FingerType fingerType)
 {
     OVRHand.HandFinger finger = ConvertFingerType(fingerType);
     return(_hand.GetFingerIsPinching(finger));
 }
Esempio n. 11
0
 public bool IsPinching(OVRHand.HandFinger finger)
 {
     return(_ovrHand.GetFingerIsPinching(finger));
 }