示例#1
0
        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));
        }
示例#2
0
        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);
        }