void DrainTypedCharacters()
        {
            KeyEventData data;

            while (typedCharacters.Pop(out data))
            {
                eventSink.PushEvent(data);
            }
        }
Esempio n. 2
0
        public override void Update(GameTime gameTime)
        {
            frame        += 1;
            currentTime   = gameTime.TotalGameTime;
            currentFlags  = InputFlagsHelper.Create(Keyboard.GetState(), currentState);
            previousState = currentState;
            if (hasTransform)
            {
                currentState = TransformState(Mouse.GetState());
            }
            else
            {
                currentState = Mouse.GetState();
            }

            // collect some valid state, so on the _next_ update call we can detect changes and process events.
            if (!initialized)
            {
                initialized = true;
                return;
            }

            for (var index = 0; index < buttons.Count; index++)
            {
                var button = buttons[index];
                CheckButtonPressed(button);
                CheckButtonReleased(button);
            }

            if (currentState.Position != previousState.Position)
            {
                var args = new MouseEventData(MouseEventType.Moved, currentFlags, currentTime, frame, previousState, currentState);
                eventSink.PushEvent(args);
            }

            if (currentState.ScrollWheelValue != previousState.ScrollWheelValue)
            {
                var args = new MouseEventData(MouseEventType.WheelMoved, currentFlags, currentTime, frame, previousState, currentState);
                eventSink.PushEvent(args);
            }
        }
Esempio n. 3
0
        public override void Update(GameTime gameTime)
        {
            frame += 1;

            var currentTime  = gameTime.TotalGameTime;
            var currentFlags = InputFlagsHelper.Create(Keyboard.GetState(), Mouse.GetState());

            var touchCollection = TransformState(TouchPanel.GetState());

            for (var index = 0; index < touchCollection.Count; index++)
            {
                var touchLocation = touchCollection[index];
                switch (touchLocation.State)
                {
                case TouchLocationState.Pressed:
                    eventSink.PushEvent(new TouchEventData(currentTime, frame, currentFlags, TouchEventType.Pressed, touchLocation));
                    break;

                case TouchLocationState.Moved:
                    eventSink.PushEvent(new TouchEventData(currentTime, frame, currentFlags, TouchEventType.Moved, touchLocation));
                    break;

                case TouchLocationState.Released:
                    eventSink.PushEvent(new TouchEventData(currentTime, frame, currentFlags, TouchEventType.Released, touchLocation));
                    break;

                case TouchLocationState.Invalid:
                    eventSink.PushEvent(new TouchEventData(currentTime, frame, currentFlags, TouchEventType.Cancelled, touchLocation));
                    break;
                }
            }

            while (TouchPanel.IsGestureAvailable)
            {
                var gesture = hasTransform ? TransformGesture(TouchPanel.ReadGesture()) : TouchPanel.ReadGesture();
                eventSink.PushEvent(new TouchEventData(currentTime, frame, currentFlags, TouchEventType.Gestured, gesture));
            }
        }
Esempio n. 4
0
        void CheckAllButtons(int player)
        {
            var currentState  = currentStates[player];
            var previousState = previousStates[player];

            for (var i = 0; i < NonTriggerButtons.Count; i++)
            {
                var button = NonTriggerButtons[i];
                if (currentState.IsButtonDown(button) && previousState.IsButtonUp(button))
                {
                    eventSink.PushEvent(new GamePadEventData(GamePadEventType.ButtonDown, currentTime, frame, inputFlags, button));
                }

                if (currentState.IsButtonUp(button) && previousState.IsButtonDown(button))
                {
                    eventSink.PushEvent(new GamePadEventData(GamePadEventType.ButtonUp, currentTime, frame, inputFlags, button));
                }
            }

            // Checks triggers as buttons and floats
            CheckTriggers(currentState.Triggers.Left, previousState.Triggers.Left, Buttons.LeftTrigger);
            CheckTriggers(currentState.Triggers.Right, previousState.Triggers.Right, Buttons.RightTrigger);

            // Checks thumbsticks as vector2s
            CheckThumbSticks(currentState.ThumbSticks.Right, previousState.ThumbSticks.Right, Buttons.RightStick);
            CheckThumbSticks(currentState.ThumbSticks.Left, previousState.ThumbSticks.Left, Buttons.LeftStick);
        }