示例#1
0
 public void PreventRightTap()
 {
     _settings &= ~GestureSettings.RightTap;
     if ((_settings & GestureSettingsHelper.SupportedGestures) == GestureSettings.None)
     {
         IsCompleted = true;
     }
 }
 /// <summary>
 /// <para>Set the recognizable gestures to the ones specified in newMaskValues and return the old settings.</para>
 /// </summary>
 /// <param name="newMaskValue">A mask indicating which gestures are now recognizable.</param>
 /// <returns>
 /// <para>The previous value.</para>
 /// </returns>
 public GestureSettings SetRecognizableGestures(GestureSettings newMaskValue)
 {
     if (this.m_Recognizer != IntPtr.Zero)
     {
         return((GestureSettings)this.Internal_SetRecognizableGestures(this.m_Recognizer, (int)newMaskValue));
     }
     return(GestureSettings.None);
 }
示例#3
0
 public void PreventHolding()
 {
     StopHoldingTimer();
     _settings &= ~(GestureSettings.Hold | GestureSettings.HoldWithMouse);
     if ((_settings & GestureSettingsHelper.SupportedGestures) == GestureSettings.None)
     {
         IsCompleted = true;
     }
 }
 public TouchGesture(GestureSettings gestureSettings = null)
 {
     if (gestureSettings != null)
     {
         settings = gestureSettings;
     }
     else
     {
         settings = new GestureSettings();
     }
 }
示例#5
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;
        }
示例#6
0
    void Start()
    {
        m_AudioButtonPress = FindObjectOfType <AudioSource>();

        // Set up a GestureRecognizer to detect Select gestures.
        m_GestureRecognizer = new GestureRecognizer();
        GestureSettings m_GestureSettings = m_GestureRecognizer.GetRecognizableGestures();

        m_GestureSettings |= GestureSettings.DoubleTap;
        m_GestureRecognizer.SetRecognizableGestures(m_GestureSettings);
        SetupGestureEvents();
        m_GestureRecognizer.StartCapturingGestures();
    }
示例#7
0
        public GestureSettings SetRecognizableGestures(GestureSettings newMaskValue)
        {
            GestureSettings result;

            if (this.m_Recognizer != IntPtr.Zero)
            {
                result = (GestureSettings)this.Internal_SetRecognizableGestures(this.m_Recognizer, (int)newMaskValue);
            }
            else
            {
                result = GestureSettings.None;
            }
            return(result);
        }
示例#8
0
    void Start()
    {
        m_AudioButtonPress = FindObjectOfType <AudioSource>();

        m_GestureRecognizer = new GestureRecognizer();
        GestureSettings m_GestureSettings = m_GestureRecognizer.GetRecognizableGestures();

        m_GestureSettings |= GestureSettings.DoubleTap;
        m_GestureRecognizer.SetRecognizableGestures(m_GestureSettings);
        SetupGestureEvents();
        m_GestureRecognizer.StartCapturingGestures();

        if (!m_DisplayOnLoad)
        {
            gameObject.SetActive(false);
        }
    }
示例#9
0
        // Get the gesture mask for a tracker
        private GestureSettings GetGestureMask(TrackerConfig tracker)
        {
            GestureSettings gestureMask = GestureSettings.None;

            // Check for gestures
            foreach (var axis in tracker.json["buttons"].Children)
            {
                switch (axis["id"])
                {
                case "tap":
                    gestureMask |= GestureSettings.Tap;
                    break;

                case "double_tap":
                    gestureMask |= GestureSettings.DoubleTap;
                    break;

                case "hold":
                    gestureMask |= GestureSettings.Hold;
                    break;

                case "manipulation_x":
                case "manipulation_y":
                case "manipulation_z":
                    gestureMask |= GestureSettings.ManipulationTranslate;
                    break;

                case "navigation_x":
                    gestureMask |= GestureSettings.NavigationX;
                    break;

                case "navigation_y":
                    gestureMask |= GestureSettings.NavigationY;
                    break;

                case "navigation_z":
                    gestureMask |= GestureSettings.NavigationZ;
                    break;
                }
            }

            return(gestureMask);
        }
示例#10
0
    public void ChangeAcceptedGestures(GestureSettings[] gestures)
    {
        GestureSettings mask = new GestureSettings();

        gestureRecognizer.StopCapturingGestures();
        if (gestures != null)
        {
            foreach (GestureSettings g in gestures)
            {
                mask |= g;
            }
            gestureRecognizer.SetRecognizableGestures(mask);
        }
        else
        {
            gestureRecognizer.SetRecognizableGestures(GestureSettings.None);
        }
        gestureRecognizer.StartCapturingGestures();
    }
示例#11
0
            public Gesture(GestureRecognizer recognizer, PointerPoint down)
            {
                _recognizer = recognizer;
                _settings   = recognizer._gestureSettings & GestureSettingsHelper.SupportedGestures; // Keep only flags of supported gestures, so we can more quickly disable us if possible
                _settings  |= GestureSettings.Tap;                                                   // On WinUI, Tap is always raised no matter the flag set on the recognizer

                Down = down;
                PointerIdentifier = GetPointerIdentifier(down);
                PointerType       = (PointerDeviceType)down.PointerDevice.PointerDeviceType;

                // This is how WinUI behaves: it will fire the double tap
                // on Down for a double tap instead of the Up.
                if (TryRecognizeMultiTap())
                {
                    IsCompleted = true;
                }
                else if (SupportsHolding())
                {
                    StartHoldingTimer();
                }
            }
示例#12
0
        // Be aware that this class is not part of the UWP contract

        internal ManipulationStartingEventArgs(PointerIdentifier pointer, GestureSettings settings)
        {
            Pointer  = pointer;
            Settings = settings;
        }
 /// <summary>
 /// <para>Set the recognizable gestures to the ones specified in newMaskValues and return the old settings.</para>
 /// </summary>
 /// <param name="newMaskValue">A mask indicating which gestures are now recognizable.</param>
 /// <returns>
 /// <para>The previous value.</para>
 /// </returns>
 public GestureSettings SetRecognizableGestures(GestureSettings newMaskValue)
 {
     if (this.m_Recognizer != IntPtr.Zero)
     {
         return (GestureSettings) this.Internal_SetRecognizableGestures(this.m_Recognizer, (int) newMaskValue);
     }
     return GestureSettings.None;
 }
示例#14
0
 public GestureRecognizerBase(GestureSettings settings)
 {
     Recognizer = new GestureRecognizer();
     Recognizer.SetRecognizableGestures(settings);
 }
示例#15
0
 public TouchGesture(GestureSettings gestureSettings)
 {
     this.settings = gestureSettings;
 }
示例#16
0
 public TouchGesture(GestureSettings gestureSettings)
 {
     this.settings = gestureSettings;
     this.speed    = GameObject.Find("Clickmesh").GetComponent <Speed> ();
 }
示例#17
0
 /// <summary>
 /// Sets the current recognizable gestures to the specified set.  Returns
 /// the previous value.
 public GestureSettings SetRecognizableGestures(GestureSettings newMaskValue)
 {
     return((GestureSettings)SetRecognizableGestures_Internal((int)newMaskValue));
 }
示例#18
0
 /// <summary>
 /// Sets the current recognizable gestures to the specified set.  Returns
 /// the previous value.
 public GestureSettings SetRecognizableGestures(GestureSettings newMaskValue)
 {
     return(GestureSettings.None);
 }
示例#19
0
    public void Enable()
    {
        Disable();

#if UNITY_WSA
        // Is the holoLens
        if (display != null)
        {
            CreateTransmitter();

            // Add gesture recogniser if needed
            HoloLensData holoLens = display.HoloLensData();
            if (holoLens != null && holoLens.axesGestures.Count > 0)
            {
                recognizer = new GestureRecognizer();

                // The types of gestures to listen for
                GestureSettings gestureMask = GestureSettings.None;

                foreach (var gesture in holoLens.buttonGestures)
                {
                    switch (gesture.type)
                    {
                        case HoloLensData.ButtonGesture.Type.TAP:
                            gestureMask |= GestureSettings.Tap;
                            break;

                        case HoloLensData.ButtonGesture.Type.DOUBLE_TAP:
                            gestureMask |= GestureSettings.DoubleTap;
                            break;

                        case HoloLensData.ButtonGesture.Type.HOLD:
                            gestureMask |= GestureSettings.Hold;
                            recognizer.HoldStarted += GestureHoldStarted;
                            recognizer.HoldCompleted += GestureHoldCompleted;
                            recognizer.HoldCanceled += GestureHoldCanceled;
                            break;
                    }
                }

                if (gestureMask.HasFlag(GestureSettings.Tap) || gestureMask.HasFlag(GestureSettings.DoubleTap))
                    recognizer.Tapped += GestureTapped;

                foreach (var gesture in holoLens.axesGestures)
                {
                    switch (gesture.type)
                    {
                        case HoloLensData.AxesGesture.Type.MANIPULATION:
                            gestureMask |= GestureSettings.ManipulationTranslate;
                            recognizer.ManipulationStarted += GestureManipulationStarted;
                            recognizer.ManipulationCompleted += GestureManipulationCompleted;
                            recognizer.ManipulationCanceled += GestureManipulationCanceled;
                            recognizer.ManipulationUpdated += GestureManipulationUpdated; ;
                            break;

                        case HoloLensData.AxesGesture.Type.NAVIGATION:
                            if (gesture.mappingsX.Count != 0) { gestureMask |= GestureSettings.NavigationX; }
                            if (gesture.mappingsX.Count != 0) { gestureMask |= GestureSettings.NavigationY; }
                            if (gesture.mappingsX.Count != 0) { gestureMask |= GestureSettings.NavigationZ; }
                            recognizer.NavigationStarted += GestureNavigationStarted;
                            recognizer.NavigationCompleted += GestureNavigationCompleted;
                            recognizer.NavigationCanceled += GestureNavigationCanceled;
                            recognizer.NavigationUpdated += GestureNavigationUpdated; ;
                            break;
                    }
                }


                // Start the recogniser
                recognizer.SetRecognizableGestures(gestureMask);
                recognizer.StartCapturingGestures();
            }

            SetUpHoloLens();
        }
#endif
    }
示例#20
0
 public TouchGesture(GestureSettings gestureSettings)
 {
     this.settings = gestureSettings;
 }
示例#21
0
 public GestureSettings SetRecognizableGestures(GestureSettings newMaskValue)
 {
     return(new GestureSettings());
 }
        // Be aware that this class is not part of the UWP contract

        internal ManipulationStartingEventArgs(GestureSettings settings)
        {
            Settings = settings;
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="ManipulationInputProcessor" /> class.
        /// </summary>
        /// <param name="target">The target element.</param>
        /// <param name="referenceFrame">The element that will be used as a reference frame.</param>
        /// <param name="gestureSettings">The gesture recognizer settings.</param>
        public ManipulationInputProcessor(FrameworkElement target, FrameworkElement referenceFrame, GestureSettings gestureSettings)
        {
            this.gestureRecognizer = new GestureRecognizer {
                GestureSettings = gestureSettings
            };
            this.element   = target;
            this.reference = referenceFrame;

            // Set up pointer event handlers. These receive input events that are used by the gesture recognizer.
            this.reference.PointerCanceled += this.OnPointerCanceled;
            this.reference.PointerPressed  += this.OnPointerPressed;
            this.reference.PointerReleased += this.OnPointerReleased;
            this.reference.PointerMoved    += this.OnPointerMoved;
            this.reference.DoubleTapped    += this.OnDoubleTapped;

            // Set up event handlers to respond to gesture recognizer output
            ////this.gestureRecognizer.Tapped += this.OnTapped;
            ////this.gestureRecognizer.RightTapped += this.OnRightTapped;
            ////this.gestureRecognizer.ManipulationStarted += this.OnManipulationStarted;
            ////this.gestureRecognizer.ManipulationCompleted += this.OnManipulationCompleted;

            this.gestureRecognizer.ManipulationUpdated += this.OnManipulationUpdated;
        }