public float GetInputAxisOrButtons(JoyMsg message, JoyInputType axis, JoyInputType upButton, JoyInputType downButton)
    {
        if (axis != JoyInputType.None)
        {
            return(GetInputFloat(message, axis));
        }

        return(GetInputFloat(message, upButton) - GetInputFloat(message, downButton));
    }
    public bool GetInputBool(JoyMsg message, JoyInputType inputType)
    {
        if (inputType >= JoyInputType.Button_0)
        {
            int buttonIndex = inputType - JoyInputType.Button_0;
            if (buttonIndex < 0 || buttonIndex >= message.buttons.Length)
            {
                return(false);
            }
            return(message.buttons[buttonIndex] != 0);
        }

        int axisIndex = inputType - JoyInputType.Axis_0;

        if (axisIndex < 0 || axisIndex >= message.axes.Length)
        {
            return(false);
        }
        return(message.axes[axisIndex] != 0);
    }
    public float GetInputFloat(JoyMsg message, JoyInputType inputType)
    {
        if (inputType >= JoyInputType.Button_0)
        {
            int buttonIndex = inputType - JoyInputType.Button_0;
            if (buttonIndex < 0 || buttonIndex >= message.buttons.Length)
            {
                return(0.0f);
            }
            return(message.buttons[buttonIndex] != 0 ? 1.0f : 0.0f);
        }

        int axisIndex = inputType - JoyInputType.Axis_0;

        if (axisIndex < 0 || axisIndex >= message.axes.Length)
        {
            return(0.0f);
        }
        return(message.axes[axisIndex]);
    }