void DrainTypedCharacters() { KeyEventData data; while (typedCharacters.Pop(out data)) { eventSink.PushEvent(data); } }
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); } }
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)); } }
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); }