private bool GetOVRButtonPressDown(SVControllerType controller, SVInputButton button) { bool isRight = (controller == SVControllerType.SVController_Right); Dictionary <int, bool> buttonState = isRight ? this.buttonStateRight : this.buttonStateLeft; bool isDown = GetOVRButtonDown(controller, button); bool inputIsDown = buttonState.ContainsKey((int)button) && (bool)buttonState [(int)button]; bool isPressDown = (!inputIsDown && isDown); buttonState [(int)button] = isDown; return(isPressDown); }
public bool GetButtonPressDown(SVControllerType controller, SVInputButton button) { if (button == SVInputButton.SVButton_None || !ControllerIsConnected(controller)) { return(false); } #if USES_STEAM_VR return(Controller(controller).GetPressDown(GetSteamButtonMapping(button))); #elif USES_OPEN_VR return(GetOVRButtonPressDown(controller, button)); #else return(false); #endif }
//------------------------ // OVR Mappings //------------------------ #if USES_OPEN_VR private OVRInput.Button GetOVRButtonMapping(SVInputButton button) { switch (button) { case SVInputButton.SVButton_A: return(OVRInput.Button.One); case SVInputButton.SVButton_B: return(OVRInput.Button.Two); case SVInputButton.SVButton_System: return(OVRInput.Button.Start); case SVInputButton.SVButton_Thumbstick_Press: return(OVRInput.Button.PrimaryThumbstick); } return((OVRInput.Button) 0); }
//------------------------ // Steam Mappings //------------------------ #if USES_STEAM_VR private Valve.VR.EVRButtonId GetSteamButtonMapping(SVInputButton button) { switch (button) { case SVInputButton.SVButton_A: return(Valve.VR.EVRButtonId.k_EButton_A); case SVInputButton.SVButton_B: return(Valve.VR.EVRButtonId.k_EButton_A); case SVInputButton.SVButton_Grip: return(Valve.VR.EVRButtonId.k_EButton_Grip); case SVInputButton.SVButton_Menu: return(Valve.VR.EVRButtonId.k_EButton_ApplicationMenu); case SVInputButton.SVButton_System: return(Valve.VR.EVRButtonId.k_EButton_System); case SVInputButton.SVButton_Trigger: return(Valve.VR.EVRButtonId.k_EButton_SteamVR_Trigger); case SVInputButton.SVButton_Thumbstick_Down: return(Valve.VR.EVRButtonId.k_EButton_DPad_Down); case SVInputButton.SVButton_Thumbstick_Left: return(Valve.VR.EVRButtonId.k_EButton_DPad_Left); case SVInputButton.SVButton_Thumbstick_Right: return(Valve.VR.EVRButtonId.k_EButton_DPad_Right); case SVInputButton.SVButton_Thumbstick_Up: return(Valve.VR.EVRButtonId.k_EButton_DPad_Up); case SVInputButton.SVButton_Thumbstick_Press: return(Valve.VR.EVRButtonId.k_EButton_SteamVR_Touchpad); } return((Valve.VR.EVRButtonId) 0); }
private bool GetOVRButtonDown(SVControllerType controller, SVInputButton button) { bool isRight = (controller == SVControllerType.SVController_Right); OVRInput.Controller ovrController = (isRight ? OVRInput.Controller.RTouch : OVRInput.Controller.LTouch); switch (button) { // Buttons case SVInputButton.SVButton_A: case SVInputButton.SVButton_B: case SVInputButton.SVButton_System: case SVInputButton.SVButton_Thumbstick_Press: return(OVRInput.Get(GetOVRButtonMapping(button), ovrController)); // 2D Axis case SVInputButton.SVButton_Thumbstick_Down: case SVInputButton.SVButton_Thumbstick_Left: case SVInputButton.SVButton_Thumbstick_Right: case SVInputButton.SVButton_Thumbstick_Up: { OVRInput.Axis2D axis2D = OVRInput.Axis2D.PrimaryThumbstick; Vector2 vec = OVRInput.Get(axis2D, ovrController); if (button == SVInputButton.SVButton_Thumbstick_Down) { return(vec.y < -0.75); } else if (button == SVInputButton.SVButton_Thumbstick_Up) { return(vec.y > 0.75); } else if (button == SVInputButton.SVButton_Thumbstick_Left) { return(vec.x < -0.75); } else if (button == SVInputButton.SVButton_Thumbstick_Right) { return(vec.x > 0.75); } return(false); } // 1D Axis case SVInputButton.SVButton_Trigger: case SVInputButton.SVButton_Grip: { OVRInput.Axis1D axis = OVRInput.Axis1D.PrimaryIndexTrigger; if (button == SVInputButton.SVButton_Trigger) { axis = OVRInput.Axis1D.PrimaryIndexTrigger; } else if (button == SVInputButton.SVButton_Grip) { axis = OVRInput.Axis1D.PrimaryHandTrigger; } return(OVRInput.Get(axis, ovrController) > 0.75f); } default: return(false); } }