Пример #1
0
        public static InputState FromGamePadState(GamePadState gamePadState, IDeadzoneConfiguration deadzones)
        {
            var ltDeadzone = deadzones.Lt;
            var rtDeadzone = deadzones.Rt;

            var buttons  = gamePadState.Buttons;
            var keys     = gamePadState.DPad;
            var triggers = gamePadState.Triggers;
            var sticks   = gamePadState.ThumbSticks;
            var lpoint   = Normalize(sticks.Left.X, sticks.Left.Y, deadzones.Ls);
            var rpoint   = Normalize(sticks.Right.X, sticks.Right.Y, deadzones.Rs);
            var ls       = new AnalogState(lpoint.X, lpoint.Y);
            var rs       = new AnalogState(rpoint.X, rpoint.Y);
            var dict     = new Dictionary <Button, ButtonState>
            {
                [Button.A]         = new ButtonState(buttons.A == XInputDotNetPure.ButtonState.Pressed),
                [Button.B]         = new ButtonState(buttons.B == XInputDotNetPure.ButtonState.Pressed),
                [Button.X]         = new ButtonState(buttons.X == XInputDotNetPure.ButtonState.Pressed),
                [Button.Y]         = new ButtonState(buttons.Y == XInputDotNetPure.ButtonState.Pressed),
                [Button.Back]      = new ButtonState(buttons.Back == XInputDotNetPure.ButtonState.Pressed),
                [Button.Start]     = new ButtonState(buttons.Start == XInputDotNetPure.ButtonState.Pressed),
                [Button.DPadLeft]  = new ButtonState(keys.Left == XInputDotNetPure.ButtonState.Pressed),
                [Button.DPadUp]    = new ButtonState(keys.Up == XInputDotNetPure.ButtonState.Pressed),
                [Button.DPadRight] = new ButtonState(keys.Right == XInputDotNetPure.ButtonState.Pressed),
                [Button.DPadDown]  = new ButtonState(keys.Down == XInputDotNetPure.ButtonState.Pressed),
                [Button.Lb]        = new ButtonState(buttons.LeftShoulder == XInputDotNetPure.ButtonState.Pressed),
                [Button.Rb]        = new ButtonState(buttons.RightShoulder == XInputDotNetPure.ButtonState.Pressed),
                [Button.Lt]        = new ButtonState(triggers.Left > ltDeadzone, Math.Min(1d, (triggers.Left - ltDeadzone) / (1d - ltDeadzone))),
                [Button.Rt]        = new ButtonState(triggers.Right > rtDeadzone, Math.Min(1d, (triggers.Right - rtDeadzone) / (1d - rtDeadzone))),
                [Button.Lsb]       = new ButtonState(buttons.LeftStick == XInputDotNetPure.ButtonState.Pressed),
                [Button.Rsb]       = new ButtonState(buttons.RightStick == XInputDotNetPure.ButtonState.Pressed)
            };

            return(new InputState(dict, ls, rs));
        }
Пример #2
0
 public InputState(IReadOnlyDictionary <Button, ButtonState> buttonStates, AnalogState leftAnalogState, AnalogState rightAnalogState)
 {
     ButtonStates     = buttonStates;
     LeftAnalogState  = leftAnalogState;
     RightAnalogState = rightAnalogState;
 }