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); } }
private void UpdateButtonDataPress(MixedRealityInteractionMapping interactionMapping) { Debug.Assert(interactionMapping.AxisType == AxisType.Digital); OculusApi.RawButton interactionButton = OculusApi.RawButton.None; OculusInteractionMapping.TryParseRawButton(interactionMapping, out interactionButton); //Enum.TryParse<OculusApi.RawButton>(interactionMapping.InputName, out interactionButton); //TODO: SHould the "ShouldResolveController" function be used here? if (interactionButton != OculusApi.RawButton.None) { if ((((OculusApi.RawButton)currentState.Buttons & interactionButton) == 0) && (((OculusApi.RawButton)previousState.Buttons & interactionButton) != 0)) { interactionMapping.BoolData = false; } if ((((OculusApi.RawButton)currentState.Buttons & interactionButton) != 0) && (((OculusApi.RawButton)previousState.Buttons & interactionButton) == 0)) { interactionMapping.BoolData = true; } //interactionMapping.UpdateInteractionMappingBool(InputSource, ControllerHandedness); if (interactionMapping.Changed) { Debug.Log("On Changed"); if (interactionMapping.BoolData) { InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } else { InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } } if (interactionButton == OculusApi.RawButton.LHandTrigger || interactionButton == OculusApi.RawButton.RIndexTrigger) { InputSystem?.RaisePoseInputChanged(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, MixedRealityPose.ZeroIdentity); } } }
private void UpdateButtonDataNearTouch(MixedRealityInteractionMapping interactionMapping) { Debug.Assert(interactionMapping.AxisType == AxisType.Digital); OculusApi.RawNearTouch interactionButton = OculusApi.RawNearTouch.None; OculusInteractionMapping.TryParseRawNearTouch(interactionMapping, out interactionButton); //Enum.TryParse<OculusApi.RawNearTouch>(interactionMapping.InputName, out interactionButton); if (interactionButton != OculusApi.RawNearTouch.None) { if (((OculusApi.RawNearTouch)previousState.NearTouches & interactionButton) != 0) { interactionMapping.BoolData = false; } if ((((OculusApi.RawNearTouch)currentState.NearTouches & interactionButton) != 0) && (((OculusApi.RawNearTouch)previousState.NearTouches & interactionButton) == 0)) { interactionMapping.BoolData = true; } //interactionMapping.UpdateInteractionMappingBool(InputSource, ControllerHandedness); //if (interactionMapping.Changed) //{ // if (interactionMapping.BoolData) // { // InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); // } // else // { // InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); // } //} } }
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); } }