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 }
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 }