public static bool GetDPADButtonUp(InputDPADButton button)
        {
            if (_instance._inputDevice == InputDevice.KeyboardAndMouse)
            {
                return(false);
            }
            if (button == InputDPADButton.Any)
            {
                return((Mathf.Approximately(_instance._currentDpadValues.x, 0.0f) && !Mathf.Approximately(_instance._lastDpadValues.x, 0.0f)) ||
                       (Mathf.Approximately(_instance._currentDpadValues.y, 0.0f) && !Mathf.Approximately(_instance._lastDpadValues.y, 0.0f)));
            }

            bool state = false;

            switch (button)
            {
            case InputDPADButton.Left_Up:
                state = (_instance._currentDpadValues.x > -1.0f && _instance._lastDpadValues.x <= -1.0f &&
                         _instance._currentDpadValues.y < 1.0f && _instance._lastDpadValues.y >= 1.0f);
                break;

            case InputDPADButton.Right_Up:
                state = (_instance._currentDpadValues.x < 1.0f && _instance._lastDpadValues.x >= 1.0f &&
                         _instance._currentDpadValues.y < 1.0f && _instance._lastDpadValues.y >= 1.0f);
                break;

            case InputDPADButton.Left_Down:
                state = (_instance._currentDpadValues.x > -1.0f && _instance._lastDpadValues.x <= -1.0f &&
                         _instance._currentDpadValues.y > -1.0f && _instance._lastDpadValues.y <= -1.0f);
                break;

            case InputDPADButton.Right_Down:
                state = (_instance._currentDpadValues.x <1.0f && _instance._lastDpadValues.x >= 1.0f &&
                                                         _instance._currentDpadValues.y> -1.0f && _instance._lastDpadValues.y <= -1.0f);
                break;

            case InputDPADButton.Left:
                state = (_instance._currentDpadValues.x > -1.0f && _instance._lastDpadValues.x <= -1.0f);
                break;

            case InputDPADButton.Right:
                state = (_instance._currentDpadValues.x < 1.0f && _instance._lastDpadValues.x >= 1.0f);
                break;

            case InputDPADButton.Up:
                state = (_instance._currentDpadValues.y < 1.0f && _instance._lastDpadValues.y >= 1.0f);
                break;

            case InputDPADButton.Down:
                state = (_instance._currentDpadValues.y > -1.0f && _instance._lastDpadValues.y <= -1.0f);
                break;

            default:
                break;
            }

            return(state);
        }
        public static bool GetDPADButtonUp(InputDPADButton button)
        {
            if (_instance._inputDevice == InputDevice.KeyboardAndMouse)
                return false;
            if (button == InputDPADButton.Any) {
                return ((Mathf.Approximately (_instance._currentDpadValues.x, 0.0f) && !Mathf.Approximately (_instance._lastDpadValues.x, 0.0f)) ||
                    (Mathf.Approximately (_instance._currentDpadValues.y, 0.0f) && !Mathf.Approximately (_instance._lastDpadValues.y, 0.0f)));
            }

            bool state = false;
            switch (button) {
            case InputDPADButton.Left_Up:
                state = (_instance._currentDpadValues.x > -1.0f && _instance._lastDpadValues.x <= -1.0f &&
                    _instance._currentDpadValues.y < 1.0f && _instance._lastDpadValues.y >= 1.0f);
                break;
            case InputDPADButton.Right_Up:
                state = (_instance._currentDpadValues.x < 1.0f && _instance._lastDpadValues.x >= 1.0f &&
                    _instance._currentDpadValues.y < 1.0f && _instance._lastDpadValues.y >= 1.0f);
                break;
            case InputDPADButton.Left_Down:
                state = (_instance._currentDpadValues.x > -1.0f && _instance._lastDpadValues.x <= -1.0f &&
                    _instance._currentDpadValues.y > -1.0f && _instance._lastDpadValues.y <= -1.0f);
                break;
            case InputDPADButton.Right_Down:
                state = (_instance._currentDpadValues.x < 1.0f && _instance._lastDpadValues.x >= 1.0f &&
                    _instance._currentDpadValues.y > -1.0f && _instance._lastDpadValues.y <= -1.0f);
                break;
            case InputDPADButton.Left:
                state = (_instance._currentDpadValues.x > -1.0f && _instance._lastDpadValues.x <= -1.0f);
                break;
            case InputDPADButton.Right:
                state = (_instance._currentDpadValues.x < 1.0f && _instance._lastDpadValues.x >= 1.0f);
                break;
            case InputDPADButton.Up:
                state = (_instance._currentDpadValues.y < 1.0f && _instance._lastDpadValues.y >= 1.0f);
                break;
            case InputDPADButton.Down:
                state = (_instance._currentDpadValues.y > -1.0f && _instance._lastDpadValues.y <= -1.0f);
                break;
            default:
                break;
            }

            return state;
        }