public static bool TryParseRawAxis1D(MixedRealityInteractionMapping mapping, out OculusApi.RawAxis1D axis)
        {
            axis = OculusApi.RawAxis1D.None;
            if (mapping.AxisType != AxisType.SingleAxis)
            {
                return(false);
            }

            if (mapping.InputType == DeviceInputType.Trigger)
            {
                if (mapping.AxisCodeX == ControllerMappingLibrary.AXIS_9)
                {
                    axis = OculusApi.RawAxis1D.LIndexTrigger; return(true);
                }
                if (mapping.AxisCodeX == ControllerMappingLibrary.AXIS_10)
                {
                    axis = OculusApi.RawAxis1D.RIndexTrigger; return(true);
                }
                if (mapping.AxisCodeX == ControllerMappingLibrary.AXIS_11)
                {
                    axis = OculusApi.RawAxis1D.LHandTrigger;  return(true);
                }
                if (mapping.AxisCodeX == ControllerMappingLibrary.AXIS_12)
                {
                    axis = OculusApi.RawAxis1D.RHandTrigger;  return(true);
                }
            }
            return(false);
        }
        private void UpdateSingleAxisData(MixedRealityInteractionMapping interactionMapping)
        {
            Debug.Assert(interactionMapping.AxisType == AxisType.SingleAxis);

            OculusApi.RawAxis1D interactionAxis1D = OculusApi.RawAxis1D.None;
            OculusInteractionMapping.TryParseRawAxis1D(interactionMapping, out interactionAxis1D);
            //Enum.TryParse<OculusApi.RawAxis1D>(interactionMapping.InputName, out interactionAxis1D);

            if (interactionAxis1D != OculusApi.RawAxis1D.None)
            {
                switch (interactionAxis1D)
                {
                case OculusApi.RawAxis1D.LIndexTrigger:
                    singleAxisValue = currentState.LIndexTrigger;

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

                    singleAxisValue = OculusApi.CalculateAbsMax(0, singleAxisValue);
                    break;

                case OculusApi.RawAxis1D.LHandTrigger:
                    singleAxisValue = currentState.LHandTrigger;

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

                    singleAxisValue = OculusApi.CalculateAbsMax(0, singleAxisValue);
                    break;

                case OculusApi.RawAxis1D.RIndexTrigger:
                    singleAxisValue = currentState.RIndexTrigger;

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

                    singleAxisValue = OculusApi.CalculateAbsMax(0, singleAxisValue);
                    break;

                case OculusApi.RawAxis1D.RHandTrigger:
                    singleAxisValue = currentState.RHandTrigger;

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

                    singleAxisValue = OculusApi.CalculateAbsMax(0, singleAxisValue);
                    break;
                }
            }

            // Update the interaction data source
            interactionMapping.FloatData = singleAxisValue;

            //interactionMapping.UpdateInteractionMappingFloat(InputSource, ControllerHandedness);
            if (interactionMapping.Changed)
            {
                InputSystem?.RaiseFloatInputChanged(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, interactionMapping.FloatData);
            }
        }
Beispiel #3
0
        private void UpdateSingleAxisData(MixedRealityInteractionMapping interactionMapping)
        {
            Debug.Assert(interactionMapping.AxisType == AxisType.SingleAxis);

            OculusApi.RawAxis1D interactionAxis1D = OculusApi.RawAxis1D.None;
            Enum.TryParse <OculusApi.RawAxis1D>(interactionMapping.InputName, out interactionAxis1D);

            if (interactionAxis1D != OculusApi.RawAxis1D.None)
            {
                switch (interactionAxis1D)
                {
                case OculusApi.RawAxis1D.LIndexTrigger:
                    singleAxisValue = currentState.LIndexTrigger;

                    singleAxisValue = OculusApi.CalculateAbsMax(0, singleAxisValue);
                    break;

                case OculusApi.RawAxis1D.LHandTrigger:
                    singleAxisValue = currentState.LHandTrigger;

                    singleAxisValue = OculusApi.CalculateAbsMax(0, singleAxisValue);
                    break;

                case OculusApi.RawAxis1D.RIndexTrigger:
                    singleAxisValue = currentState.RIndexTrigger;

                    singleAxisValue = OculusApi.CalculateAbsMax(0, singleAxisValue);
                    break;

                case OculusApi.RawAxis1D.RHandTrigger:

                    singleAxisValue = currentState.RHandTrigger;

                    singleAxisValue = OculusApi.CalculateAbsMax(0, singleAxisValue);
                    break;
                }
            }

            // Update the interaction data source
            interactionMapping.FloatData = singleAxisValue;

            interactionMapping.UpdateInteractionMappingFloat(InputSource, ControllerHandedness);
        }