Esempio n. 1
0
    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);
    }
Esempio n. 2
0
    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
    }
Esempio n. 3
0
    //------------------------
    // 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);
    }
Esempio n. 4
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);
    }
Esempio n. 5
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);
        }
    }