public virtual void OnXboxInputUpdate(XboxControllerEventData eventData) { if (string.IsNullOrEmpty(GamePadName)) { GamePadName = eventData.GamePadName; } if (XboxControllerMapping.GetButton_Down(SelectButton, eventData)) { CurrentGestureState = GestureState.SelectButtonPressed; InputManager.Instance.RaiseSourceDown(eventData.InputSource, eventData.SourceId, InteractionSourcePressInfo.Select); HoldStartedRoutine = StartCoroutine(HandleHoldStarted(eventData)); } if (XboxControllerMapping.GetButton_Pressed(SelectButton, eventData)) { HandleNavigation(eventData); } if (XboxControllerMapping.GetButton_Up(SelectButton, eventData)) { HandleSelectButtonReleased(eventData); } // Consume this event eventData.Use(); }
protected virtual void HandleNavigation(XboxControllerEventData eventData) { float displacementAlongX = XboxControllerMapping.GetAxis(HorizontalNavigationAxis, eventData); float displacementAlongY = XboxControllerMapping.GetAxis(VerticalNavigationAxis, eventData); if (displacementAlongX == 0.0f && displacementAlongY == 0.0f && CurrentGestureState != GestureState.NavigationStarted) { return; } NormalizedOffset.x = displacementAlongX; NormalizedOffset.y = displacementAlongY; NormalizedOffset.z = 0f; if (CurrentGestureState != GestureState.NavigationStarted) { if (CurrentGestureState == GestureState.HoldStarted) { InputManager.Instance.RaiseHoldCanceled(eventData.InputSource, eventData.SourceId); } CurrentGestureState = GestureState.NavigationStarted; // Raise navigation started event. InputManager.Instance.RaiseNavigationStarted(eventData.InputSource, eventData.SourceId); } else { // Raise navigation updated event. InputManager.Instance.RaiseNavigationUpdated(eventData.InputSource, eventData.SourceId, NormalizedOffset); } }