private void UpdateEnterLeave() { bool leftMouseDown = InputManager.Instance.IsMouseDown(MouseButton.Left); bool rightMouseDown = InputManager.Instance.IsMouseDown(MouseButton.Right); bool middleMouseDown = InputManager.Instance.IsMouseDown(MouseButton.Middle); bool onLeftMouseDown = InputManager.Instance.OnMouseDown(MouseButton.Left); Point mouseScreenPos = InputManager.Instance.MouseScreenPos(); Point lastMouseScreenPos = InputManager.Instance.LastMouseScreenPos(); int mouseScrollWheelValue = InputManager.Instance.CurrentMouseScrollWheelValue(); int lastMouseScrollWheelValue = InputManager.Instance.LastMouseScrollWheelValue(); int mouseScrollWheelDelta = lastMouseScrollWheelValue - mouseScrollWheelValue; bool containsMouse = AbsoluteBounds.Contains(mouseScreenPos); bool lastContainsMouse = AbsoluteBounds.Contains(lastMouseScreenPos); if (containsMouse && !lastContainsMouse) { OnMouseEnter(new MouseEventArgs(leftMouseDown, rightMouseDown, middleMouseDown, mouseScreenPos, mouseScrollWheelDelta)); //input.Engine.Console.WriteLine("OnMouseEnter"); } else if (!containsMouse && lastContainsMouse) { OnMouseLeave(new MouseEventArgs(leftMouseDown, rightMouseDown, middleMouseDown, mouseScreenPos, mouseScrollWheelDelta)); //input.Engine.Console.WriteLine("OnMouseLeave"); } }
public virtual bool IsMouseOver() { IWrapper wrapper = GetWrapper(); if (wrapper is IWrapper) { return(AbsoluteBounds.Contains(wrapper.CurrentMousePosition)); } return(false); }
public override bool Update() { if (!AbsoluteBounds.Contains(InputManager.Instance.MouseScreenPos()) && InputManager.Instance.OnMouseDown(MouseButton.Left)) { RequestUnCapture(); } if (Text == null) { Text = ""; } if (!Selected) { anchorIndex = -1; caretIndex = Text.Length; } if (caretIndex > Text.Length) { caretIndex = Text.Length; } if (caretIndex < 0) { caretIndex = 0; } if (Selected) { // Blink the caret if (CaretBlinkTimer.Expired()) { displayCaret = !displayCaret; CaretBlinkTimer.Start(); } if (InputManager.Instance.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Right) || InputManager.Instance.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Left)) { displayCaret = true; } } else { displayCaret = false; } return(base.Update()); }
public override void Update(float time) { if (AbsoluteBounds.Contains(Input.MousePos.X, Input.MousePos.Y)) { hoverTime += time; } else { hoverTime = 0f; } if (hoverTime > 0 && Input.lastms.Buttons[0] && !Input.ms.Buttons[0]) { Click(); } base.Update(time); }
public override void Update(GameTime time) { if (AbsoluteBounds.Contains(new Point(Input.ms.X, Input.ms.Y))) { if (hoverTime == 0) { ClickSound.Play(); } hoverTime += (float)time.ElapsedGameTime.TotalSeconds; } else { hoverTime = 0f; } if (hoverTime > 0 && Input.ms.LeftButton == ButtonState.Released && Input.lastms.LeftButton == ButtonState.Pressed) { action(); } base.Update(time); }
public override void Update(GameTime time) { if (Input.ms.LeftButton == ButtonState.Released && Input.lastms.LeftButton == ButtonState.Pressed) { if (AbsoluteBounds.Contains(new Point(Input.ms.X, Input.ms.Y))) { Focused = true; } else { Focused = false; } } // typing if (Focused) { Keys[] ck = Input.ks.GetPressedKeys(); Keys[] lk = Input.lastks.GetPressedKeys(); for (int i = 0; i < ck.Length; i++) { if (!lk.Contains(ck[i])) { Keys k = ck[i]; KeyPressed(k); switch (k) { case Keys.Left: CursorPos = Math.Min(CursorPos + 1, Text.Length - 1); break; case Keys.Right: CursorPos = Math.Max(CursorPos - 1, 0); break; case Keys.Back: if (Text.Length > 0) { Text = Text.Remove(Text.Length - CursorPos - 1); } break; case Keys.Enter: EnterPressed(); break; case Keys.OemTilde: // for the command window break; default: char c; if (Input.TryConvertKeyboardInput(k, out c)) { if (CursorPos == 0) { Text += c; } else { Text = Text.Insert(Text.Length - CursorPos, c.ToString()); } } break; } } } t -= (float)time.ElapsedGameTime.TotalSeconds; if (t < 0) { t += 1; } } else { t = 1; } base.Update(time); }
/// <summary> /// Updates the control and its events /// </summary> public virtual bool Update() { bool interacted = false; if (Visible && Enabled) { foreach (Control child in Children) { child.UpdateEnterLeave(); } foreach (Control child in Children) { interacted = child.Update(); if (interacted) { break; } } if (ToolTip != null) { ToolTip.Update(); } if (!interacted) { Point mouseScreenPos = InputManager.Instance.MouseScreenPos(); bool containsMouse = AbsoluteBounds.Contains(mouseScreenPos); if (containsMouse) { bool leftMouseDown = InputManager.Instance.IsMouseDown(MouseButton.Left); bool rightMouseDown = InputManager.Instance.IsMouseDown(MouseButton.Right); bool middleMouseDown = InputManager.Instance.IsMouseDown(MouseButton.Middle); bool onLeftMouseDown = InputManager.Instance.OnMouseDown(MouseButton.Left); bool onRightMouseDown = InputManager.Instance.OnMouseDown(MouseButton.Right); bool onMiddleMouseDown = InputManager.Instance.OnMouseDown(MouseButton.Middle); bool onLeftMouseUp = InputManager.Instance.OnMouseUp(MouseButton.Left); bool onRightMouseUp = InputManager.Instance.OnMouseUp(MouseButton.Right); bool onMiddleMouseUp = InputManager.Instance.OnMouseUp(MouseButton.Middle); Point lastMouseScreenPos = InputManager.Instance.LastMouseScreenPos(); int mouseScrollWheelValue = InputManager.Instance.CurrentMouseScrollWheelValue(); int lastMouseScrollWheelValue = InputManager.Instance.LastMouseScrollWheelValue(); int mouseScrollWheelDelta = lastMouseScrollWheelValue - mouseScrollWheelValue; bool lastContainsMouse = AbsoluteBounds.Contains(lastMouseScreenPos); if (onLeftMouseDown || onRightMouseDown || onMiddleMouseDown) { OnMouseDown(new MouseEventArgs(onLeftMouseDown, onRightMouseDown, onMiddleMouseDown, mouseScreenPos, mouseScrollWheelDelta)); //input.Engine.Console.WriteLine($"OnMouseDown {onLeftMouseDown}:{onRightMouseDown}:{onMiddleMouseDown}"); } if (onLeftMouseUp || onRightMouseUp || onMiddleMouseUp) { OnMouseClick(new MouseEventArgs(onLeftMouseUp, onRightMouseUp, onMiddleMouseUp, mouseScreenPos, mouseScrollWheelDelta)); //input.Engine.Console.WriteLine($"OnMouseClick {onLeftMouseUp}:{onRightMouseUp}:{onMiddleMouseUp}"); OnMouseUp(new MouseEventArgs(onLeftMouseUp, onRightMouseUp, onMiddleMouseUp, mouseScreenPos, mouseScrollWheelDelta)); //input.Engine.Console.WriteLine($"OnMouseUp {onLeftMouseUp}:{onRightMouseUp}:{onMiddleMouseUp}"); } if (mouseScreenPos == lastMouseScreenPos) { OnMouseHover(new MouseEventArgs(leftMouseDown, middleMouseDown, rightMouseDown, mouseScreenPos, mouseScrollWheelDelta)); //input.Engine.Console.WriteLine("OnMouseHover"); } else if (mouseScreenPos != lastMouseScreenPos) { OnMouseMove(new MouseEventArgs(leftMouseDown, middleMouseDown, rightMouseDown, mouseScreenPos, mouseScrollWheelDelta)); //input.Engine.Console.WriteLine("OnMouseMove"); } if (mouseScrollWheelDelta != 0) { OnMouseWheel(new MouseEventArgs(leftMouseDown, middleMouseDown, rightMouseDown, mouseScreenPos, mouseScrollWheelDelta)); //input.Engine.Console.WriteLine($"OnMouseWheel {mouseScrollWheelDelta}"); } interacted = true; } } } OnUpdated(EventArgs.Empty); return(interacted); }
public virtual bool WasMouseOver() { IWrapper wrapper = GetWrapper(); return(AbsoluteBounds.Contains(wrapper.LastMousePosition)); }