예제 #1
0
        /// <summary>
        /// Constructs a hand tracker object.
        /// </summary>
        /// <param name="handedness">Which hand to use.</param>
        public HandLocator(TrackerHandedness handedness)
        {
            _handedness = handedness;
#if UNITY_WSA
            InteractionManager.InteractionSourceUpdated += InteractionSourceUpdated;
#endif
        }
예제 #2
0
        public InputHandler(TrackerConfig tracker, TrackerHandedness handedness)
        {
            _tracker    = tracker;
            _handedness = handedness;

#if UNITY_WSA
            _gestureRecognizer = new GestureRecognizer();
            GestureSettings gestureMask = GetGestureMask(tracker);

            // Using gestures
            if (gestureMask != GestureSettings.None)
            {
                // Add tap to recognisor
                if (gestureMask.HasFlag(GestureSettings.Tap) || gestureMask.HasFlag(GestureSettings.DoubleTap))
                {
                    _gestureRecognizer.Tapped += GestureTapped;
                }

                // Add hold to recognisor
                if (gestureMask.HasFlag(GestureSettings.Hold))
                {
                    _gestureRecognizer.HoldStarted   += GestureHoldStarted;
                    _gestureRecognizer.HoldCompleted += GestureHoldCompleted;
                    _gestureRecognizer.HoldCanceled  += GestureHoldCanceled;
                }

                // Add manipulation to recognisor
                if (gestureMask.HasFlag(GestureSettings.ManipulationTranslate))
                {
                    _gestureRecognizer.ManipulationStarted   += GestureManipulationStarted;
                    _gestureRecognizer.ManipulationCompleted += GestureManipulationCompleted;
                    _gestureRecognizer.ManipulationCanceled  += GestureManipulationCanceled;
                    _gestureRecognizer.ManipulationUpdated   += GestureManipulationUpdated;;
                }

                // Add navigation to recognisor
                if (gestureMask.HasFlag(GestureSettings.NavigationX) || gestureMask.HasFlag(GestureSettings.NavigationY) ||
                    gestureMask.HasFlag(GestureSettings.NavigationZ))
                {
                    _gestureRecognizer.NavigationStarted   += GestureNavigationStarted;
                    _gestureRecognizer.NavigationCompleted += GestureNavigationCompleted;
                    _gestureRecognizer.NavigationCanceled  += GestureNavigationCanceled;
                    _gestureRecognizer.NavigationUpdated   += GestureNavigationUpdated;;
                }

                _gestureRecognizer.SetRecognizableGestures(gestureMask);
                _gestureRecognizer.StartCapturingGestures();
            }
#endif

            // Using speech recognition
            _speechRecognizer = new DictationRecognizer();
            _speechRecognizer.DictationResult += SpeechRecognition;
        }