Exemple #1
0
 /// <summary>
 ///     Creates new instance of gamepad.
 /// </summary>
 /// <param name="id">GamepadState id, values are between 0-3.</param>
 internal Gamepad(ushort id)
 {
     if (id > 3)
     {
         throw new ArgumentException("Id value cannot be higher than 3.");
     }
     Id = id;
     XInputLib.Enable(true);
     UpdateState();
     //Events are being registered after initial state is set, so they aren't triggered by initial state setup.
     RegisterButtonEvents();
 }
Exemple #2
0
        /// <summary>
        ///     Vibrates gamepad.
        /// </summary>
        /// <param name="leftMotorSpeed">
        ///     Speed of the left motor. Valid values are in the range 0 to 1. Zero signifies no motor use; 1 signifies
        ///     100 percent motor use.
        /// </param>
        /// <param name="rightMotorSpeed">
        ///     Speed of the Right motor. Valid values are in the range 0 to 65,535. Zero signifies no motor use; 65,535 signifies
        ///     100 percent motor use.
        /// </param>
        public void Vibrate(float leftMotorSpeed, float rightMotorSpeed)
        {
            if (leftMotorSpeed > 1 || rightMotorSpeed > 1)
            {
                throw new ArgumentException("Motor speeds must be between 0 and 1.");
            }

            var vibration = new Vibration
            {
                LeftMotorSpeed  = (ushort)(leftMotorSpeed * 65535),
                RightMotorSpeed = (ushort)(rightMotorSpeed * 65535)
            };

            XInputLib.SetState(Id, ref vibration);
        }
Exemple #3
0
        /// <summary>
        ///     Updates gamepad state.
        /// </summary>
        public void UpdateState()
        {
            var state = new State();

            if (XInputLib.GetState(Id, ref state) == 0)
            {
                if (!IsActive)
                {
                    IsActive = true;
                }
                foreach (var button in Buttons.Values)
                {
                    button.UpdateState(state);
                }
            }
            else
            {
                if (IsActive)
                {
                    IsActive = false;
                }
            }
        }