internal override void Update(GuiMouseState mouseState) { foreach (var widget in children) { if (this.BoundingRect.Intersects(widget.BoundingRect)) { widget.Update(mouseState); } } }
public Gui() { var width = Game.Instance.Canvas.Width; var height = Game.Instance.Canvas.Height; surface = new CanvasSurface(Rect.FromBox(0, 0, width, height)); Game.Instance.Platform.OnWinResized += OnWinResized; mouse_state = new GuiMouseState(); theme = new DefaultTheme(Game.Instance.Canvas.DefaultFont); root = new GuiContainer(this, width, height); Game.Instance.Canvas.AddSurface(surface); }
internal override void Update(GuiMouseState mouseState) { if (this.ContainsPoint(mouseState.MouseX, mouseState.MouseY)) { if (!this.Hovered) { this.Hovered = true; Gui.InvalidateVisual(); } if (mouseState.MouseLeftDown && !this.Active) { this.Active = true; OnPressed?.Invoke(this, EventArgs.Empty); Gui.InvalidateVisual(); } else if (!mouseState.MouseLeftDown && this.Active) { this.Active = false; OnReleased?.Invoke(this, EventArgs.Empty); OnClick?.Invoke(this, EventArgs.Empty); Gui.InvalidateVisual(); } } else { if (this.Hovered) { if (this.Active) { this.Active = false; } this.Hovered = false; Gui.InvalidateVisual(); } } }