public float GetAxisValue(JoystickAxisAction action)
        {
            Joystick device = _actionToJoystick[action];
            Axis axis = _actionToAxis[action];
            JoystickAxis axisName = axis.Name;

            float invertion = axis.IsInverted ? -1 : 1;

            float value;
            if (axisName == JoystickAxis.X)
                value = device.Axes.X;
            else if (axisName == JoystickAxis.Y)
                value = device.Axes.Y;
            else if (axisName == JoystickAxis.Z)
                value = device.Axes.Z;
            else if (axisName == JoystickAxis.Rx)
                value = device.Axes.Rx;
            else if (axisName == JoystickAxis.Ry)
                value = device.Axes.Ry;
            else if (axisName == JoystickAxis.Rz)
                value = device.Axes.Rz;
            else if (axisName == JoystickAxis.U)
                value = device.Axes.U;
            else if (axisName == JoystickAxis.V)
                value = device.Axes.V;
            else 
                throw new NotImplementedException();

            value = (value - Int16.MaxValue)/Int16.MaxValue;    // -1 to +1
            return invertion * value; // Inverted axis
        } 
예제 #2
0
        public float GetAxisValue(JoystickAxisAction action)
        {
            Joystick     device   = _actionToJoystick[action];
            Axis         axis     = _actionToAxis[action];
            JoystickAxis axisName = axis.Name;

            float invertion = axis.IsInverted ? -1 : 1;

            float value;

            if (axisName == JoystickAxis.X)
            {
                value = device.Axes.X;
            }
            else if (axisName == JoystickAxis.Y)
            {
                value = device.Axes.Y;
            }
            else if (axisName == JoystickAxis.Z)
            {
                value = device.Axes.Z;
            }
            else if (axisName == JoystickAxis.Rx)
            {
                value = device.Axes.Rx;
            }
            else if (axisName == JoystickAxis.Ry)
            {
                value = device.Axes.Ry;
            }
            else if (axisName == JoystickAxis.Rz)
            {
                value = device.Axes.Rz;
            }
            else if (axisName == JoystickAxis.U)
            {
                value = device.Axes.U;
            }
            else if (axisName == JoystickAxis.V)
            {
                value = device.Axes.V;
            }
            else
            {
                throw new NotImplementedException();
            }

            value = (value - Int16.MaxValue) / Int16.MaxValue; // -1 to +1
            return(invertion * value);                         // Inverted axis
        }