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);
                }
            }
        }
Beispiel #3
0
        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);
            }
        }