public static bool TryParseRawButton(MixedRealityInteractionMapping mapping, out OculusApi.RawButton button) { button = OculusApi.RawButton.None; if (mapping.InputType == DeviceInputType.ButtonPress) { if (mapping.KeyCode == KeyCode.JoystickButton0) { button = OculusApi.RawButton.A; return(true); } if (mapping.KeyCode == KeyCode.JoystickButton1) { button = OculusApi.RawButton.B; return(true); } if (mapping.KeyCode == KeyCode.JoystickButton2) { button = OculusApi.RawButton.X; return(true); } if (mapping.KeyCode == KeyCode.JoystickButton3) { button = OculusApi.RawButton.Y; return(true); } if (mapping.KeyCode == KeyCode.JoystickButton7) { button = OculusApi.RawButton.Start; return(true); } if (mapping.KeyCode == KeyCode.JoystickButton8) { button = OculusApi.RawButton.LThumbstick; return(true); } if (mapping.KeyCode == KeyCode.JoystickButton9) { button = OculusApi.RawButton.RThumbstick; return(true); } return(false); } if (mapping.InputType == DeviceInputType.TriggerPress) { if (mapping.AxisCodeX == ControllerMappingLibrary.AXIS_9) { button = OculusApi.RawButton.LIndexTrigger; return(true); } if (mapping.AxisCodeX == ControllerMappingLibrary.AXIS_10) { button = OculusApi.RawButton.RIndexTrigger; return(true); } return(false); } return(false); }
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 UpdateButtonDataPress(MixedRealityInteractionMapping interactionMapping) { Debug.Assert(interactionMapping.AxisType == AxisType.Digital); OculusApi.RawButton interactionButton = OculusApi.RawButton.None; Enum.TryParse <OculusApi.RawButton>(interactionMapping.InputName, out interactionButton); if (interactionButton != OculusApi.RawButton.None) { if (((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); } }