Пример #1
0
        private void UpdateDualAxisData(MixedRealityInteractionMapping interactionMapping)
        {
            Debug.Assert(interactionMapping.AxisType == AxisType.DualAxis);

            OculusApi.RawAxis2D interactionAxis2D = OculusApi.RawAxis2D.None;
            Enum.TryParse <OculusApi.RawAxis2D>(interactionMapping.InputName, out interactionAxis2D);

            if (interactionAxis2D != OculusApi.RawAxis2D.None)
            {
                switch (interactionAxis2D)
                {
                case OculusApi.RawAxis2D.LThumbstick:
                    dualAxisPosition.x = currentState.LThumbstick.x;
                    dualAxisPosition.y = currentState.LThumbstick.y;

                    dualAxisPosition = OculusApi.CalculateAbsMax(Vector2.zero, dualAxisPosition);
                    break;

                case OculusApi.RawAxis2D.LTouchpad:
                    dualAxisPosition.x = currentState.LTouchpad.x;
                    dualAxisPosition.y = currentState.LTouchpad.y;

                    dualAxisPosition = OculusApi.CalculateAbsMax(Vector2.zero, dualAxisPosition);
                    break;

                case OculusApi.RawAxis2D.RThumbstick:
                    dualAxisPosition.x = currentState.RThumbstick.x;
                    dualAxisPosition.y = currentState.RThumbstick.y;

                    dualAxisPosition = OculusApi.CalculateAbsMax(Vector2.zero, dualAxisPosition);
                    break;

                case OculusApi.RawAxis2D.RTouchpad:
                    dualAxisPosition.x = currentState.RTouchpad.x;
                    dualAxisPosition.y = currentState.RTouchpad.y;

                    dualAxisPosition = OculusApi.CalculateAbsMax(Vector2.zero, dualAxisPosition);
                    break;
                }
            }

            // Update the interaction data source
            interactionMapping.Vector2Data = dualAxisPosition;

            interactionMapping.UpdateInteractionMappingVector2(InputSource, ControllerHandedness);
        }
        public static bool TryParseRawAxis2D(MixedRealityInteractionMapping mapping, out OculusApi.RawAxis2D axis)
        {
            axis = OculusApi.RawAxis2D.None;
            if (mapping.AxisType != AxisType.DualAxis)
            {
                return(false);
            }

            if (mapping.InputType == DeviceInputType.ThumbStick)
            {
                if (mapping.AxisCodeX == ControllerMappingLibrary.AXIS_1 || mapping.AxisCodeX == ControllerMappingLibrary.AXIS_2)
                {
                    axis = OculusApi.RawAxis2D.LThumbstick; return(true);
                }
                if (mapping.AxisCodeX == ControllerMappingLibrary.AXIS_4 || mapping.AxisCodeX == ControllerMappingLibrary.AXIS_5)
                {
                    axis = OculusApi.RawAxis2D.RThumbstick; return(true);
                }
            }
            return(false);
        }
        private void UpdateDualAxisData(MixedRealityInteractionMapping interactionMapping)
        {
            Debug.Assert(interactionMapping.AxisType == AxisType.DualAxis);

            OculusApi.RawAxis2D interactionAxis2D = OculusApi.RawAxis2D.None;
            OculusInteractionMapping.TryParseRawAxis2D(interactionMapping, out interactionAxis2D);
            //Enum.TryParse<OculusApi.RawAxis2D>(interactionMapping.InputName, out interactionAxis2D);

            if (interactionAxis2D != OculusApi.RawAxis2D.None)
            {
                switch (interactionAxis2D)
                {
                case OculusApi.RawAxis2D.LThumbstick:
                    dualAxisPosition.x = currentState.LThumbstick.x;
                    dualAxisPosition.y = currentState.LThumbstick.y;

                    //if (shouldApplyDeadzone)
                    //    dualAxisPosition = OculusApi.CalculateDeadzone(dualAxisPosition, OculusApi.AXIS_DEADZONE_THRESHOLD);

                    dualAxisPosition = OculusApi.CalculateAbsMax(Vector2.zero, dualAxisPosition);
                    break;

                case OculusApi.RawAxis2D.LTouchpad:
                    dualAxisPosition.x = currentState.LTouchpad.x;
                    dualAxisPosition.y = currentState.LTouchpad.y;

                    //if (shouldApplyDeadzone)
                    //    dualAxisPosition = OculusApi.CalculateDeadzone(dualAxisPosition, OculusApi.AXIS_DEADZONE_THRESHOLD);

                    dualAxisPosition = OculusApi.CalculateAbsMax(Vector2.zero, dualAxisPosition);
                    break;

                case OculusApi.RawAxis2D.RThumbstick:

                    dualAxisPosition.x = currentState.RThumbstick.x;
                    dualAxisPosition.y = currentState.RThumbstick.y;

                    //if (shouldApplyDeadzone)
                    //    dualAxisPosition = OculusApi.CalculateDeadzone(dualAxisPosition, OculusApi.AXIS_DEADZONE_THRESHOLD);

                    dualAxisPosition = OculusApi.CalculateAbsMax(Vector2.zero, dualAxisPosition);
                    break;

                case OculusApi.RawAxis2D.RTouchpad:

                    dualAxisPosition.x = currentState.RTouchpad.x;
                    dualAxisPosition.y = currentState.RTouchpad.y;

                    //if (shouldApplyDeadzone)
                    //    dualAxisPosition = OculusApi.CalculateDeadzone(dualAxisPosition, OculusApi.AXIS_DEADZONE_THRESHOLD);

                    dualAxisPosition = OculusApi.CalculateAbsMax(Vector2.zero, dualAxisPosition);
                    break;
                }
            }

            // Update the interaction data source
            interactionMapping.Vector2Data = dualAxisPosition;
            //interactionMapping.UpdateInteractionMappingVector2(InputSource, ControllerHandedness);
            if (interactionMapping.Changed)
            {
                InputSystem?.RaisePositionInputChanged(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, interactionMapping.Vector2Data);
            }
        }