protected virtual void OnPress(MouseButtonActionInfo info) { State = ControlState.Pressed; if (MousePress != null) { MousePress.Invoke(this, info); } }
public virtual void Update(Game context) { #region Fire Mouse Events int mouseX = context.MouseX; int mouseY = context.MouseY; if ((mouseX != mouseLastX || mouseY != mouseLastY) && PointWithin(mouseX, mouseY, TopLeft, BottomRight)) { MouseMove?.Invoke(mouseX, mouseY); if (context.GetMouse(Mouse.Any).Down) { for (int i = 0; i < 3; i++) { Mouse current = (Mouse)i; if (context.GetMouse(current).Down) { MouseDrag?.Invoke(mouseX, mouseY, current); } } } } mouseLastX = mouseX; mouseLastY = mouseY; for (int i = 0; i < 3; i++) { Mouse current = (Mouse)i; if (context.GetMouse(current).Down) { MouseDown?.Invoke(mouseX, mouseY, current); } if (context.GetMouse(current).Up) { MouseUp?.Invoke(mouseX, mouseY, current); } if (context.GetMouse(current).Pressed) { MousePress?.Invoke(mouseX, mouseY, current); } } #endregion Fire Mouse Events }
} // UpdateMouse private void UpdateButtons() { MouseEventArgs e = new MouseEventArgs(); foreach (InputMouseButton btn in mouseButtons) { ButtonState bs; if (btn.Button == MouseButton.Left) bs = Mouse.State.LeftButton; else if (btn.Button == MouseButton.Right) bs = Mouse.State.RightButton; else if (btn.Button == MouseButton.Middle) bs = Mouse.State.MiddleButton; else if (btn.Button == MouseButton.XButton1) bs = Mouse.State.XButton1; else if (btn.Button == MouseButton.XButton2) bs = Mouse.State.XButton2; else continue; bool pressed = (bs == ButtonState.Pressed); // The current state if (pressed && !btn.Pressed) // If is pressed and the last frame wasn't pressed. { btn.Pressed = true; BuildMouseEvent(btn.Button, ref e); if (MouseDown != null) MouseDown.Invoke(this, e); if (MousePress != null) MousePress.Invoke(this, e); } else if (!pressed && btn.Pressed) // If isn't pressed and the last frame was pressed. { btn.Pressed = false; BuildMouseEvent(btn.Button, ref e); if (MouseUp != null) MouseUp.Invoke(this, e); } else if (pressed && btn.Pressed) // If is pressed and was pressed. { e.Button = btn.Button; BuildMouseEvent(btn.Button, ref e); if (MousePress != null) MousePress.Invoke(this, e); } } } // UpdateButtons
//////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// private void UpdateButtons(MouseState state, GameTime gameTime) { #if (!XBOX && !XBOX_FAKE) MouseEventArgs e = new MouseEventArgs(); foreach (InputMouseButton btn in mouseButtons) { ButtonState bs = ButtonState.Released; if (btn.Button == MouseButton.Left) { bs = state.LeftButton; } else if (btn.Button == MouseButton.Right) { bs = state.RightButton; } else if (btn.Button == MouseButton.Middle) { bs = state.MiddleButton; } else if (btn.Button == MouseButton.XButton1) { bs = state.XButton1; } else if (btn.Button == MouseButton.XButton2) { bs = state.XButton2; } else { continue; } bool pressed = (bs == ButtonState.Pressed); if (pressed) { double ms = gameTime.ElapsedGameTime.TotalMilliseconds; if (pressed) { btn.Countdown -= ms; } } if ((pressed) && (!btn.Pressed)) { btn.Pressed = true; BuildMouseEvent(state, btn.Button, ref e); if (MouseDown != null) { MouseDown.Invoke(this, e); } if (MousePress != null) { MousePress.Invoke(this, e); } } else if ((!pressed) && (btn.Pressed)) { btn.Pressed = false; btn.Countdown = RepeatDelay; BuildMouseEvent(state, btn.Button, ref e); if (MouseUp != null) { MouseUp.Invoke(this, e); } } else if (btn.Pressed && btn.Countdown < 0) { e.Button = btn.Button; btn.Countdown = RepeatRate; BuildMouseEvent(state, btn.Button, ref e); if (MousePress != null) { MousePress.Invoke(this, e); } } } #endif }
void IEventListener.ListenMousePress(UIMousePressEventArgs e) { MousePress?.Invoke(this, e); }
/// <param name="gameTime">Snapshot of the application's timing values.</param> /// <param name="state">Current state of the mouse device.</param> /// <summary> /// Updates the state of the Mouse buttons. /// </summary> private void UpdateButtons(MouseState state, GameTime gameTime) { #if (!XBOX && !XBOX_FAKE) var e = new MouseEventArgs(); // Update the state of the buttons in the mouse button list. foreach (var btn in mouseButtons) { // Current button state of the current gamepad button. var bs = ButtonState.Released; if (btn.Button == MouseButton.Left) { bs = state.LeftButton; } else if (btn.Button == MouseButton.Right) { bs = state.RightButton; } else if (btn.Button == MouseButton.Middle) { bs = state.MiddleButton; } else if (btn.Button == MouseButton.XButton1) { bs = state.XButton1; } else if (btn.Button == MouseButton.XButton2) { bs = state.XButton2; } else { continue; } // Current state button pressed? var pressed = (bs == ButtonState.Pressed); if (pressed) { // Update the repeat delay timer for the associated button. var ms = gameTime.ElapsedGameTime.TotalMilliseconds; if (pressed) { btn.Countdown -= ms; } } // Button was just pressed? if ((pressed) && (!btn.Pressed)) { // "Press" the associated button. btn.Pressed = true; BuildMouseEvent(state, btn.Button, ref e); // Fire the MouseDown and MousePress events. if (MouseDown != null) { MouseDown.Invoke(this, e); } // Fire the repeat MousePress event. } // Button was just released? else if ((!pressed) && (btn.Pressed)) { // "Release" the associated button and reset the repeat delay timer. btn.Pressed = false; btn.Countdown = RepeatDelay; BuildMouseEvent(state, btn.Button, ref e); // Fire the MouseUp event. if (MouseUp != null) { MouseUp.Invoke(this, e); } } // Button is held down and it's time to fire a repeat press event? else if (btn.Pressed && btn.Countdown < 0) { // Update event args and reset timer. e.Button = btn.Button; btn.Countdown = RepeatRate; BuildMouseEvent(state, btn.Button, ref e); // Fire the repeat MousePress event. if (MousePress != null) { MousePress.Invoke(this, e); } } } #endif }
internal void InvokeMousePress(S sender, T state, UIMousePressEventArgs e) => MousePress.Invoke(new SenderInfo(sender, state), e);