private Vector2 GetTouchPoint(TouchLocation touchLocation) { var point = ViewportAdapter?.PointToScreen((int)touchLocation.Position.X, (int)touchLocation.Position.Y) ?? touchLocation.Position.ToPoint(); return(new Vector2(point.X, point.Y)); }
public TouchEventArgs(ViewportAdapter viewportAdapter, TimeSpan time, TouchLocation location) { ViewportAdapter = viewportAdapter; RawTouchLocation = location; Time = time; Position = viewportAdapter?.PointToScreen((int)location.Position.X, (int)location.Position.Y) ?? location.Position.ToPoint(); }
public MouseEventArgs(ViewportAdapter viewportAdapter, TimeSpan time, MouseState previousState, MouseState currentState, MouseButton button = MouseButton.None) { PreviousState = previousState; CurrentState = currentState; Position = viewportAdapter?.PointToScreen(currentState.X, currentState.Y) ?? new Point(currentState.X, currentState.Y); Button = button; ScrollWheelValue = currentState.ScrollWheelValue; ScrollWheelDelta = currentState.ScrollWheelValue - previousState.ScrollWheelValue; Time = time; }
private void UpdateTouchState() { var position = ViewportAdapter.PointToScreen(InputManager.TouchPosition()); if (BoundingRectangle().Intersects(new Rectangle(position, Vector2.One.ToPoint()))) { if (InputManager.TouchDown()) { _touchedDown = true; TouchStarted?.Invoke(this, position); } else if (InputManager.TouchUp() && _touchedDown) { _touchedDown = false; Tap?.Invoke(this, position); Action?.Invoke(this, position); } } else { _touchedDown = false; } }
public WpfMouseEventArgs( ViewportAdapter viewportAdapter, TimeSpan time, MouseState previousState, MouseState currentState, MouseButton button = MouseButton.None) { this.PreviousState = previousState; this.CurrentState = currentState; this.Position = viewportAdapter != null?viewportAdapter.PointToScreen(currentState.X, currentState.Y) : new Point(currentState.X, currentState.Y); this.Button = button; this.ScrollWheelValue = currentState.ScrollWheelValue; this.ScrollWheelDelta = currentState.ScrollWheelValue - previousState.ScrollWheelValue; this.Time = time; }
protected override void Update(GameTime gameTime) { var keyboardState = Keyboard.GetState(); var mouseState = Mouse.GetState(); var previousViewportAdapter = _currentViewportAdapter; if (keyboardState.IsKeyDown(Keys.Escape)) { Exit(); } if (keyboardState.IsKeyDown(Keys.D)) { SwitchAdapter(_defaultViewportAdapter); } if (keyboardState.IsKeyDown(Keys.S)) { SwitchAdapter(_scalingViewportAdapter); } if (keyboardState.IsKeyDown(Keys.B)) { SwitchAdapter(_boxingViewportAdapter); } // if we've changed the viewport adapter mid game we need to reset the viewport back to the window size // this wouldn't normally be required if you're only ever using one viewport adapter if (previousViewportAdapter != _currentViewportAdapter) { GraphicsDevice.Viewport = new Viewport(0, 0, Window.ClientBounds.Width, Window.ClientBounds.Height); _currentViewportAdapter.Reset(); } // the viewport adapters can also scale mouse and touch input to the virtual resolution _mousePosition = _currentViewportAdapter.PointToScreen(mouseState.X, mouseState.Y); base.Update(gameTime); }
public void Process(int entityId) { var transform = _transform2DMapper.Get(entityId); var interaction = _interaction2DMapper.Get(entityId); // Check for Events bool isHovered = IsEntityHovered(transform, interaction, current_mouseState); bool wasHovered = IsEntityHovered(transform, interaction, prev_mouseState); // Interaction properties bool beingPressed = interaction.BeingPressed; bool beingDragged = interaction.BeingDragged; // MouseEnter if (CheckMouseEnter(isHovered, wasHovered)) { interaction.TriggerEvent("MouseEnter", BuildMouseEvent(entityId)); } // MouseLeave if (CheckMouseLeave(isHovered, wasHovered)) { interaction.TriggerEvent("MouseLeave", BuildMouseEvent(entityId)); } // MouseMove if (CheckMouseMove(isHovered)) { interaction.TriggerEvent("MouseMove", BuildMouseEvent(entityId)); } // MouseDown if (CheckMouseDown(isHovered)) { // Set Being Pressed Property if (!beingPressed && current_mouseState.LeftButton == ButtonState.Pressed) { interaction.BeingPressed = true; } interaction.TriggerEvent("MouseDown", BuildMouseEvent(entityId)); } // MouseUp if (CheckMouseUp(isHovered)) { interaction.TriggerEvent("MouseUp", BuildMouseEvent(entityId)); } // Click if (CheckClick(beingPressed, isHovered)) { interaction.TriggerEvent("Click", BuildMouseEvent(entityId)); } // DragStart if (CheckDragStart(beingDragged, beingPressed, isHovered)) { // Set Being Dragged Property interaction.BeingDragged = true; if (interaction.IsDraggable) { _draggingEntity = entityId; var mousePosition = _viewportAdapter == null ? current_mouseState.Position : _viewportAdapter.PointToScreen(current_mouseState.Position); var pos = Vector2 .Transform(interaction.Origin, transform.WorldMatrix) .ToPoint(); _dragStartPosition = mousePosition - pos; } interaction.TriggerEvent("DragStart", BuildDragEvent(entityId)); } // DragEnd if (CheckDragEnd(beingDragged)) { // Set Being Dragged Property interaction.BeingDragged = false; _draggingEntity = -1; _dragStartPosition = Point.Zero; interaction.TriggerEvent("DragEnd", BuildDragEvent(entityId)); } // DragMove if (CheckDragMove(beingDragged)) { // Move Entity if IsDraggable = true if (interaction.IsDraggable) { var mousePosition = _viewportAdapter == null ? current_mouseState.Position : _viewportAdapter.PointToScreen(current_mouseState.Position); var newPos = (mousePosition - _dragStartPosition).ToVector2(); newPos -= (transform.WorldPosition - transform.Position); transform.Position = newPos; } interaction.TriggerEvent("DragMove", BuildDragEvent(entityId)); } // DragEnter // DragLeave // Drop // BeingPressed - Check if Released if (beingPressed && current_mouseState.LeftButton == ButtonState.Released) { interaction.BeingPressed = false; } }
private void SetUpInput() { _eventDrivenInput = new MonoGameInput(this); var up = new Vector2(0, -250); var right = new Vector2(250, 0); //camera movment _eventDrivenInput.KeyDown += (sender, keyDown) => { switch (keyDown.Key) { case Keys.Escape: Exit(); break; case Keys.Q: _cameraRotation += 1; break; case Keys.W: _cameraRotation -= 1; break; case Keys.Up: _cameraDirection += up; break; case Keys.Down: _cameraDirection += -up; break; case Keys.Left: _cameraDirection += -right; break; case Keys.Right: _cameraDirection += right; break; } }; _eventDrivenInput.KeyUp += (sender, keyUp) => { switch (keyUp.Key) { case Keys.Q: _cameraRotation -= 1; break; case Keys.W: _cameraRotation += 1; break; case Keys.Up: _cameraDirection -= up; break; case Keys.Down: _cameraDirection -= -up; break; case Keys.Left: _cameraDirection -= -right; break; case Keys.Right: _cameraDirection -= right; break; } }; // zoom _eventDrivenInput.MouseWheel += (sender, mouseEvent) => { _camera.Zoom += mouseEvent.Delta.Value * 0.0001f; }; // look at _eventDrivenInput.MouseUp += (sender, mouseUp) => { if (mouseUp.Button == MouseButton.Left) { var p = _viewportAdapter.PointToScreen(mouseUp.X, mouseUp.Y); Trace.WriteLine(string.Format("{0},{1} => {2},{3}", mouseUp.X, mouseUp.Y, p.X, p.Y)); } }; }