示例#1
0
        protected virtual void OnPress(MouseButtonActionInfo info)
        {
            State = ControlState.Pressed;

            if (MousePress != null)
            {
                MousePress.Invoke(this, info);
            }
        }
示例#2
0
        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
        }
示例#3
0
        } // 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
        }
示例#5
0
 void IEventListener.ListenMousePress(UIMousePressEventArgs e)
 {
     MousePress?.Invoke(this, e);
 }
示例#6
0
        /// <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
        }
示例#7
0
 internal void InvokeMousePress(S sender, T state, UIMousePressEventArgs e) => MousePress.Invoke(new SenderInfo(sender, state), e);