private string SetAxis(IVirtualGamepad gamepad, Mapping mapping, bool isKeyDown, bool hasOppositeDown) { uint axis = (uint)mapping.Function; short axisValue = (short)mapping.TargetValue; short oldValue = gamepad.GetAxisState(axis); short newValue = (short)XboxAxisPosition.Center; if (isKeyDown && !hasOppositeDown) { newValue = axisValue; } if (hasOppositeDown && !isKeyDown) { if ((short)mapping.TargetValue == (short)XboxAxisPosition.Min) { newValue = (short)XboxAxisPosition.Max; } else { newValue = (short)XboxAxisPosition.Min; } } if (oldValue == newValue) { return(null); } gamepad.SetAxisState(axis, newValue); return(((XinputAxis)axis) + " Axis " + ((XboxAxisPosition)newValue)); }
private void SetAxis(IVirtualGamepad gamepad, Mapping mapping, bool isKeyDown, bool hasOppositeDown) { uint axis = (uint)mapping.Function; short axisValue = (short)mapping.TargetValue; short oldValue = gamepad.GetAxisState(axis); short newValue = isKeyDown ? axisValue : (short)XboxAxisPosition.Center; if (hasOppositeDown && !isKeyDown) { if ((short)mapping.TargetValue == (short)XboxAxisPosition.Min) { newValue = (short)XboxAxisPosition.Max; } else { newValue = (short)XboxAxisPosition.Min; } } if (oldValue == newValue) { return; } gamepad.SetAxisState(axis, newValue); }