public static void Update()
        {
#if Windows
            if (_pollInterval > 0 && _frames++ >= _pollInterval)
            {
                _ps4Manager.PollDevices();
                _frames = 0;
            }
#endif
            _keyboardPrevious = _keyboardCurrent;
            _keyboardCurrent  = Keyboard.GetState();
            _mousePrevious    = _mouseCurrent;
            _mouseCurrent     = Mouse.GetState();
            foreach (var controller in _controllers)
            {
                controller.Update();
            }

            if (_actions != null)
            {
                for (var a = 0; a < _actionCount; a++)
                {
                    for (var p = 0; p < _players; p++)
                    {
                        var act = _actions[a, p];
                        act.Update(_keyboardCurrent, _controllers.TryGetValue(act.ControllerIndex, out var controller) ? controller : null);
                    }
                }
            }
        }
예제 #2
0
        public static Tuple <Ps4Manager, Timer> GetManagerWithTimedPoll(int ms, Action <Ps4Controller> onControllerConnected)
        {
            var poll    = new Timer();
            var manager = new Ps4Manager(onControllerConnected);

            poll.Elapsed  += (s, e) => manager.PollDevices();
            poll.Interval  = ms;
            poll.AutoReset = true;
            poll.Enabled   = true;
            return(Tuple.Create(manager, poll));
        }