Exemple #1
0
 protected void SetState(ref HVRButtonState buttonState, bool pressed)
 {
     if (pressed)
     {
         if (!buttonState.Active)
         {
             buttonState.JustActivated = true;
             buttonState.Active        = true;
         }
     }
     else
     {
         if (buttonState.Active)
         {
             buttonState.Active          = false;
             buttonState.JustDeactivated = true;
         }
     }
 }
        protected override void CheckButtonState(HVRButtons button, ref HVRButtonState buttonState)
        {
            ResetButton(ref buttonState);

            switch (button)
            {
            case HVRButtons.Grip:
                buttonState.Value = Grip;

                if (!InputMap.GripUseAnalog)
                {
                    SetButtonState(button, ref buttonState, GripButton);
                }

                if (InputMap.GripUseAnalog || InputMap.GripUseEither && !buttonState.Active)
                {
                    SetButtonState(button, ref buttonState, Grip >= InputMap.GripThreshold);
                }


                break;

            case HVRButtons.Trigger:
                buttonState.Value = Trigger;
                if (InputMap.TriggerUseAnalog)
                {
                    SetButtonState(button, ref buttonState, Trigger >= InputMap.TriggerThreshold);
                }
                else
                {
                    SetButtonState(button, ref buttonState, TriggerButton);
                }
                break;

            case HVRButtons.Primary:
                SetButtonState(button, ref buttonState, PrimaryButton);
                break;

            case HVRButtons.PrimaryTouch:
                SetButtonState(button, ref buttonState, PrimaryTouch);
                break;

            case HVRButtons.Secondary:
                SetButtonState(button, ref buttonState, SecondaryButton);
                break;

            case HVRButtons.SecondaryTouch:
                SetButtonState(button, ref buttonState, SecondaryTouch);
                break;

            case HVRButtons.Menu:
                SetButtonState(button, ref buttonState, MenuButton);
                break;

            case HVRButtons.JoystickButton:
                SetButtonState(button, ref buttonState, JoystickClicked);
                break;

            case HVRButtons.TrackPadButton:
                SetButtonState(button, ref buttonState, TrackPadClicked);
                break;

            case HVRButtons.JoystickTouch:
                SetButtonState(button, ref buttonState, JoystickTouch);
                break;

            case HVRButtons.TrackPadTouch:
                SetButtonState(button, ref buttonState, TrackPadTouch);
                break;

            case HVRButtons.TriggerTouch:
                SetButtonState(button, ref buttonState, TriggerTouch);
                break;

            case HVRButtons.ThumbTouch:
                SetButtonState(button, ref buttonState, ThumbTouch);
                break;

            case HVRButtons.TriggerNearTouch:
                SetButtonState(button, ref buttonState, TriggerNearTouch);
                break;

            case HVRButtons.ThumbNearTouch:
                SetButtonState(button, ref buttonState, ThumbNearTouch);
                break;

            case HVRButtons.TrackPadLeft:
                SetButtonState(button, ref buttonState, TrackPadClicked && TrackpadAxis.x <= -InputMap.Axis2DLeftThreshold);
                break;

            case HVRButtons.TrackPadRight:
                SetButtonState(button, ref buttonState, TrackPadClicked && TrackpadAxis.x >= InputMap.Axis2DRighThreshold);
                break;

            case HVRButtons.TrackPadUp:
                SetButtonState(button, ref buttonState, TrackPadClicked && TrackpadAxis.y >= InputMap.Axis2DUpThreshold);
                break;

            case HVRButtons.TrackPadDown:
                SetButtonState(button, ref buttonState, TrackPadClicked && TrackpadAxis.y <= -InputMap.Axis2DDownThreshold);
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(button), button, null);
            }
        }
        private void Update()
        {
            var controller = HVRInputManager.Instance.LeftController;

            LeftTrigger = controller.Trigger;
            LeftGrip    = controller.Grip;

            LeftJoystickAxis = controller.JoystickAxis;
            LeftTrackpadAxis = controller.TrackpadAxis;

            LeftGripButtonState           = controller.GripButtonState;
            LeftTriggerButtonState        = controller.TriggerButtonState;
            LeftPrimaryButtonState        = controller.PrimaryButtonState;
            LeftSecondaryButtonState      = controller.SecondaryButtonState;
            LeftMenuButtonState           = controller.MenuButtonState;
            LeftPrimaryTouchButtonState   = controller.PrimaryTouchButtonState;
            LeftSecondaryTouchButtonState = controller.SecondaryTouchButtonState;
            LeftJoystickButtonState       = controller.JoystickButtonState;
            LeftTrackpadButtonState       = controller.TrackpadButtonState;

            LeftJoystickTouchState = controller.JoystickTouchState;
            LeftTrackPadTouchState = controller.TrackPadTouchState;
            LeftTriggerTouchState  = controller.TriggerTouchState;
            LeftThumbTouchState    = controller.ThumbTouchState;

            LeftTriggerNearTouchState = controller.TriggerNearTouchState;
            LeftThumbNearTouchState   = controller.ThumbNearTouchState;

            LeftTrackPadUp    = controller.TrackPadUp;
            LeftTrackPadLeft  = controller.TrackPadLeft;
            LeftTrackPadRight = controller.TrackPadRight;
            LeftTrackPadDown  = controller.TrackPadDown;

            controller = HVRInputManager.Instance.RightController;

            RightTrigger = controller.Trigger;
            RightGrip    = controller.Grip;

            RightJoystickAxis = controller.JoystickAxis;
            RightTrackpadAxis = controller.TrackpadAxis;

            RightGripButtonState           = controller.GripButtonState;
            RightTriggerButtonState        = controller.TriggerButtonState;
            RightPrimaryButtonState        = controller.PrimaryButtonState;
            RightSecondaryButtonState      = controller.SecondaryButtonState;
            RightMenuButtonState           = controller.MenuButtonState;
            RightPrimaryTouchButtonState   = controller.PrimaryTouchButtonState;
            RightSecondaryTouchButtonState = controller.SecondaryTouchButtonState;
            RightJoystickButtonState       = controller.JoystickButtonState;
            RightTrackpadButtonState       = controller.TrackpadButtonState;

            RightJoystickTouchState = controller.JoystickTouchState;
            RightTrackPadTouchState = controller.TrackPadTouchState;
            RightTriggerTouchState  = controller.TriggerTouchState;
            RightThumbTouchState    = controller.ThumbTouchState;

            RightTriggerNearTouchState = controller.TriggerNearTouchState;
            RightThumbNearTouchState   = controller.ThumbNearTouchState;

            RightTrackPadUp    = controller.TrackPadUp;
            RightTrackPadLeft  = controller.TrackPadLeft;
            RightTrackPadRight = controller.TrackPadRight;
            RightTrackPadDown  = controller.TrackPadDown;
        }
Exemple #4
0
 protected void ResetState(ref HVRButtonState buttonState)
 {
     buttonState.JustDeactivated = false;
     buttonState.JustActivated   = false;
     buttonState.Value           = 0f;
 }
Exemple #5
0
        protected override void CheckButtonState(HVRButtons button, ref HVRButtonState buttonState)
        {
            ResetButton(ref buttonState);

            if (!InputMap)
            {
                return;
            }

            var trackPadIsPrimary = InputMap.TrackPadAxis == InputAxes.Primary2DAxis;

            switch (button)
            {
            case HVRButtons.Grip:
                Device.TryGetFeatureValue(CommonUsages.grip, out Grip);
                buttonState.Value = Grip;
                SetButtonState(button, ref buttonState, Grip >= InputMap.GripThreshold);
                break;

            case HVRButtons.Trigger:
                Device.TryGetFeatureValue(CommonUsages.trigger, out Trigger);
                buttonState.Value = Trigger;
                SetButtonState(button, ref buttonState, Trigger >= InputMap.TriggerThreshold);
                break;

            case HVRButtons.Primary:
                SetButtonState(button, ref buttonState, IsPressed(Device, InputMap.Primary));
                PrimaryButton = buttonState.Active;
                break;

            case HVRButtons.PrimaryTouch:
                SetButtonState(button, ref buttonState, IsPressed(Device, InputMap.PrimaryTouch));
                PrimaryTouch = buttonState.Active;
                break;

            case HVRButtons.Secondary:
                SetButtonState(button, ref buttonState, IsPressed(Device, InputMap.Secondary));
                SecondaryButton = buttonState.Active;
                break;

            case HVRButtons.SecondaryTouch:
                SetButtonState(button, ref buttonState, IsPressed(Device, InputMap.SecondaryTouch));
                SecondaryTouch = buttonState.Active;
                break;

            case HVRButtons.Menu:
                SetButtonState(button, ref buttonState, IsPressed(Device, InputMap.Menu));
                MenuButton = buttonState.Active;
                break;

            case HVRButtons.JoystickButton:
                SetButtonState(button, ref buttonState, IsPressed(Device, InputMap.JoystickButton));
                JoystickClicked = buttonState.Active;
                break;

            case HVRButtons.TrackPadButton:
                SetButtonState(button, ref buttonState, IsPressed(Device, InputMap.TrackPadButton));
                TrackPadClicked = buttonState.Active;
                break;

            case HVRButtons.JoystickTouch:
                SetButtonState(button, ref buttonState, IsPressed(Device, InputMap.JoystickTouch));
                JoystickTouch = buttonState.Active;
                break;

            case HVRButtons.TrackPadTouch:
                SetButtonState(button, ref buttonState, IsPressed(Device, InputMap.TrackPadTouch));
                TrackPadTouch = buttonState.Active;
                break;

            case HVRButtons.TriggerTouch:
#if USING_XR_MANAGEMENT
                Device.TryGetFeatureValue(indexTouch, out TriggerTouch);
#else
                Device.TryGetFeatureValue(legacyIndexTouch, out var temp);

                TriggerTouch = temp > 0f;
#endif

                SetButtonState(button, ref buttonState, TriggerTouch);
                break;

            case HVRButtons.TrackPadLeft:
                SetButtonState(button,
                               ref TrackPadLeft,
                               IsPressed(Device, trackPadIsPrimary ? HVRXRInputFeatures.PrimaryAxis2DLeft : HVRXRInputFeatures.SecondaryAxis2DLeft));
                break;

            case HVRButtons.TrackPadRight:
                SetButtonState(button,
                               ref TrackPadRight,
                               IsPressed(Device, trackPadIsPrimary ? HVRXRInputFeatures.PrimaryAxis2DRight : HVRXRInputFeatures.SecondaryAxis2DRight));
                break;

            case HVRButtons.TrackPadUp:
                SetButtonState(button,
                               ref TrackPadUp,
                               IsPressed(Device, trackPadIsPrimary ? HVRXRInputFeatures.PrimaryAxis2DUp : HVRXRInputFeatures.SecondaryAxis2DUp));
                break;

            case HVRButtons.TrackPadDown:
                SetButtonState(button,
                               ref TrackPadDown,
                               IsPressed(Device, trackPadIsPrimary ? HVRXRInputFeatures.PrimaryAxis2DDown : HVRXRInputFeatures.SecondaryAxis2DDown));
                break;
            }
        }