void Awake() { //Instantiate the NavigationRecognizer. NavigationRecognizer = new UnityEngine.XR.WSA.Input.GestureRecognizer(); //Add NavigationX GestureSettings to the NavigationRecognizer's RecognizableGestures. NavigationRecognizer.SetRecognizableGestures(UnityEngine.XR.WSA.Input.GestureSettings.NavigationX); NavigationRecognizer.NavigationStartedEvent += NavigationRecognizer_NavigationStartedEvent; NavigationRecognizer.NavigationUpdatedEvent += NavigationRecognizer_NavigationUpdatedEvent; NavigationRecognizer.NavigationCompletedEvent += NavigationRecognizer_NavigationCompletedEvent; NavigationRecognizer.NavigationCanceledEvent += NavigationRecognizer_NavigationCanceledEvent; // Instantiate the ManipulationRecognizer. ManipulationRecognizer = new UnityEngine.XR.WSA.Input.GestureRecognizer(); // Add the ManipulationTranslate GestureSetting to the ManipulationRecognizer's RecognizableGestures. ManipulationRecognizer.SetRecognizableGestures(UnityEngine.XR.WSA.Input.GestureSettings.ManipulationTranslate); ManipulationRecognizer.ManipulationStartedEvent += ManipulationRecognizer_ManipulationStartedEvent; ManipulationRecognizer.ManipulationUpdatedEvent += ManipulationRecognizer_ManipulationUpdatedEvent; ManipulationRecognizer.ManipulationCompletedEvent += ManipulationRecognizer_ManipulationCompletedEvent; ManipulationRecognizer.ManipulationCanceledEvent += ManipulationRecognizer_ManipulationCanceledEvent; SetActiveRecognizer(ManipulationRecognizer); }
private void Start() { recognizer = new UnityEngine.XR.WSA.Input.GestureRecognizer(); recognizer.SetRecognizableGestures(UnityEngine.XR.WSA.Input.GestureSettings.Tap); recognizer.TappedEvent += Recognizer_TappedEvent; recognizer.StartCapturingGestures(); }
// This should be Start instead of Awake right? protected void Start() { ActiveRecognizer = new UnityEngine.XR.WSA.Input.GestureRecognizer(); ActiveRecognizer.SetRecognizableGestures(RecognizableGesures); ActiveRecognizer.TappedEvent += TappedCallback; ActiveRecognizer.NavigationStartedEvent += NavigationStartedCallback; ActiveRecognizer.NavigationUpdatedEvent += NavigationUpdatedCallback; ActiveRecognizer.NavigationCompletedEvent += NavigationCompletedCallback; ActiveRecognizer.NavigationCanceledEvent += NavigationCanceledCallback; ActiveRecognizer.HoldStartedEvent += HoldStartedCallback; ActiveRecognizer.HoldCompletedEvent += HoldCompletedCallback; ActiveRecognizer.HoldCanceledEvent += HoldCanceledCallback; ActiveRecognizer.ManipulationStartedEvent += ManipulationStartedCallback; ActiveRecognizer.ManipulationUpdatedEvent += ManipulationUpdatedCallback; ActiveRecognizer.ManipulationCompletedEvent += ManipulationCompletedCallback; ActiveRecognizer.ManipulationCanceledEvent += ManipulationCanceledCallback; ActiveRecognizer.StartCapturingGestures(); SetupEvents(true); UnityEngine.XR.WSA.Input.InteractionManager.InteractionSourcePressed += InteractionManager_SourcePressedCallback; UnityEngine.XR.WSA.Input.InteractionManager.InteractionSourceReleased += InteractionManager_SourceReleasedCallback; bLockFocus = true; }
void Awake() { //instantiate the gesture recognizers NavigationRecognizer = new UnityEngine.XR.WSA.Input.GestureRecognizer(); ManipulationRecognizer = new UnityEngine.XR.WSA.Input.GestureRecognizer(); //add the appropriate recognizable gestures to each one //for more info on these gestures refer to https://developer.microsoft.com/en-us/windows/mixed-reality/gestures NavigationRecognizer.SetRecognizableGestures(UnityEngine.XR.WSA.Input.GestureSettings.Tap | UnityEngine.XR.WSA.Input.GestureSettings.NavigationX); //NavigationX will keep track of Air tap & hold in the X direction ManipulationRecognizer.SetRecognizableGestures(UnityEngine.XR.WSA.Input.GestureSettings.ManipulationTranslate); //register the navigation event handlers with the functions below NavigationRecognizer.TappedEvent += NavTapped; NavigationRecognizer.NavigationStartedEvent += NavStarted; NavigationRecognizer.NavigationUpdatedEvent += NavUpdated; NavigationRecognizer.NavigationCompletedEvent += NavCompleted; NavigationRecognizer.NavigationCanceledEvent += NavCanceled; //register the manipulation event handlers with the functions below ManipulationRecognizer.ManipulationStartedEvent += ManStarted; ManipulationRecognizer.ManipulationUpdatedEvent += ManUpdated; ManipulationRecognizer.ManipulationCompletedEvent += ManCompleted; ManipulationRecognizer.ManipulationCanceledEvent += ManCanceled; ResetGestureRecognizers(); }
public static void UpdateAndResetGestures(this UnityEngine.XR.WSA.Input.GestureRecognizer recognizer, UnityEngine.XR.WSA.Input.GestureSettings gestureSettings) { bool reset = recognizer.IsCapturingGestures(); if (reset) { recognizer.CancelGestures(); } recognizer.SetRecognizableGestures(gestureSettings); if (reset) { recognizer.StartCapturingGestures(); } }
protected override void Start() { base.Start(); gestureRecognizer = new UnityEngine.XR.WSA.Input.GestureRecognizer(); gestureRecognizer.TappedEvent += OnTappedEvent; gestureRecognizer.HoldStartedEvent += OnHoldStartedEvent; gestureRecognizer.HoldCompletedEvent += OnHoldCompletedEvent; gestureRecognizer.HoldCanceledEvent += OnHoldCanceledEvent; gestureRecognizer.ManipulationStartedEvent += OnManipulationStartedEvent; gestureRecognizer.ManipulationUpdatedEvent += OnManipulationUpdatedEvent; gestureRecognizer.ManipulationCompletedEvent += OnManipulationCompletedEvent; gestureRecognizer.ManipulationCanceledEvent += OnManipulationCanceledEvent; gestureRecognizer.SetRecognizableGestures(UnityEngine.XR.WSA.Input.GestureSettings.Tap | UnityEngine.XR.WSA.Input.GestureSettings.ManipulationTranslate | UnityEngine.XR.WSA.Input.GestureSettings.Hold); // We need a separate gesture recognizer for navigation, since it isn't compatible with manipulation navigationGestureRecognizer = new UnityEngine.XR.WSA.Input.GestureRecognizer(); navigationGestureRecognizer.NavigationStartedEvent += OnNavigationStartedEvent; navigationGestureRecognizer.NavigationUpdatedEvent += OnNavigationUpdatedEvent; navigationGestureRecognizer.NavigationCompletedEvent += OnNavigationCompletedEvent; navigationGestureRecognizer.NavigationCanceledEvent += OnNavigationCanceledEvent; if (UseRailsNavigation) { navigationGestureRecognizer.SetRecognizableGestures(UnityEngine.XR.WSA.Input.GestureSettings.NavigationRailsX | UnityEngine.XR.WSA.Input.GestureSettings.NavigationRailsY | UnityEngine.XR.WSA.Input.GestureSettings.NavigationRailsZ); } else { navigationGestureRecognizer.SetRecognizableGestures(UnityEngine.XR.WSA.Input.GestureSettings.NavigationX | UnityEngine.XR.WSA.Input.GestureSettings.NavigationY | UnityEngine.XR.WSA.Input.GestureSettings.NavigationZ); } if (RecognizerStart == RecognizerStartBehavior.AutoStart) { gestureRecognizer.StartCapturingGestures(); navigationGestureRecognizer.StartCapturingGestures(); } }
public override void ActivateModule() { base.ActivateModule(); eventSystem.SetSelectedGameObject(eventSystem.currentSelectedGameObject, GetBaseEventData()); m_GestureRecognizer = new UnityEngine.XR.WSA.Input.GestureRecognizer(); m_GestureRecognizer.TappedEvent += GestureHandler_Tapped; m_GestureRecognizer.NavigationStartedEvent += GestureHandler_NavigationStarted; m_GestureRecognizer.NavigationUpdatedEvent += GestureHandler_NavigationUpdated; m_GestureRecognizer.NavigationCompletedEvent += GestureHandler_NavigationCompletedOrCanceled; m_GestureRecognizer.NavigationCanceledEvent += GestureHandler_NavigationCompletedOrCanceled; m_GestureRecognizer.SetRecognizableGestures( UnityEngine.XR.WSA.Input.GestureSettings.Tap | UnityEngine.XR.WSA.Input.GestureSettings.NavigationX | UnityEngine.XR.WSA.Input.GestureSettings.NavigationY | UnityEngine.XR.WSA.Input.GestureSettings.NavigationZ); m_GestureRecognizer.StartCapturingGestures(); }
//method to transition to a new GestureRecognizer public void Transition(UnityEngine.XR.WSA.Input.GestureRecognizer newRecognizer) { //check if input parameter is null if (newRecognizer == null) { return; } if (ActiveRecognizer != null) { //if the active recognizer isn't null and not the same as the new recognizer cancel all gesures and complete the switch if (ActiveRecognizer == newRecognizer) { return; } ActiveRecognizer.CancelGestures(); ActiveRecognizer = newRecognizer; } newRecognizer.StartCapturingGestures(); ActiveRecognizer = newRecognizer; }
public void SetActiveRecognizer(UnityEngine.XR.WSA.Input.GestureRecognizer newRecognizer) { if (newRecognizer == null) { return; } if (ActiveRecognizer != null) { if (ActiveRecognizer == newRecognizer) { return; } ActiveRecognizer.CancelGestures(); ActiveRecognizer.StopCapturingGestures(); } newRecognizer.StartCapturingGestures(); ActiveRecognizer = newRecognizer; }
public void Start() { m_datetime = DateTime.Now; StartCoroutine(DownloadPlaces(queryURL)); StartCoroutine(DownloadKeywords(queryURL)); this._gestureRecognizer = new UnityEngine.XR.WSA.Input.GestureRecognizer(); this._gestureRecognizer.SetRecognizableGestures( UnityEngine.XR.WSA.Input.GestureSettings.Tap | UnityEngine.XR.WSA.Input.GestureSettings.DoubleTap | UnityEngine.XR.WSA.Input.GestureSettings.Hold | UnityEngine.XR.WSA.Input.GestureSettings.ManipulationTranslate ); /* * this._gestureRecognizer.HoldStartedEvent += (source, ray) => * { * GameObject terrain = GameObject.Find("terrain"); * buttonObject = Instantiate(buttonZoomPrefab, this.gameObject.transform.position + new Vector3(0, 0.2f, 0), Quaternion.Euler(0, -90, 0)) as StableMenu; * buttonObject.transform.parent = terrain.transform; * }; */ // Repond to single and double tap. this._gestureRecognizer.TappedEvent += (source, count, ray) => { switch (count) { case 1: if (this._isMoving) { if (GazeManager.Instance.Hit) { // Cease moving this._isMoving = false; // Stop mapping observer SpatialMappingManager.Instance.StopObserver(); // var terrain = this.transform.Find("terrain"); if (terrain == null) { // Hide footprint this.transform.Find("base").GetComponent <MeshRenderer>().material.color = new Color32(100, 100, 100, 100); // Add Terrain _isFirstTimeLoading = true; } else { // Restore hit test terrain.gameObject.layer = 0; } } } else { // If single tap on stationary terrain then perform reverse geocode. // Exit if nothing found if (!GazeManager.Instance.Hit) { return; } if (GazeManager.Instance.FocusedObject == null) { return; } // Exit if not terrain if (GazeManager.Instance.FocusedObject.GetComponent <Terrain>() == null) { return; } //this.StartCoroutine(this.ChangeMapCoordinates(GazeManager.Instance.Position)); GameObject terrain = GameObject.Find("terrain"); buttonObject = Instantiate(buttonChoosePrefab, GazeManager.Instance.Position + new Vector3(0, 0.2f, 0), Quaternion.Euler(0, -90, 0)) as StableMenu; buttonObject.transform.parent = terrain.transform; //StartCoroutine(DownloadPlaces(queryURL)); //this.StartCoroutine(this.AddStreetAddress(GazeManager.Instance.Position)); } break; case 2: // Resume footprint/terrain movement. if (!this._isMoving) { // Set moving flag for update method this._isMoving = true; // Make terrain hittest invisible this.GetComponentInChildren <Terrain>().gameObject.layer = 2; // Resume mapping observer SpatialMappingManager.Instance.StartObserver(); } break; } }; this._gestureRecognizer.StartCapturingGestures(); // Create terrain footprint. var footprint = GameObject.CreatePrimitive(PrimitiveType.Quad); footprint.name = "base"; footprint.transform.position = new Vector3(0, 0, 0); footprint.transform.localRotation = Quaternion.FromToRotation( new Vector3(0, 1, 0), new Vector3(0, 0, 1) ); footprint.transform.localScale = new Vector3(SIZE, SIZE, 1f); footprint.layer = 2; // Ignore Raycast footprint.transform.parent = this.transform; }