5using BrowserMouseEventArgs = Microsoft.AspNetCore.Components.Web.
MouseEventArgs;
6using BrowserWheelEventArgs = Microsoft.AspNetCore.Components.Web.WheelEventArgs;
18 private readonly HashSet<GondwanaMouseButton> _pressed =
new();
19 private readonly
object _pressedLock =
new();
20 private PointF _currentPosition;
22 private int _scrollDelta;
25 public Point
CurrentPosition => _component.ToScreenPx(_currentPosition.X, _currentPosition.Y);
33 return new HashSet<GondwanaMouseButton>(_pressed);
40 public int ScrollDelta => Interlocked.Exchange(ref _scrollDelta, 0);
61 ArgumentNullException.ThrowIfNull(component);
62 _component = component;
64 _component.MouseDown += OnMouseDown;
65 _component.MouseUp += OnMouseUp;
66 _component.MouseMove += OnMouseMove;
67 _component.Wheel += OnWheel;
70 private void OnMouseDown(BrowserMouseEventArgs e)
73 _pressed.Add(MapButton(e.Button));
77 private void OnMouseUp(BrowserMouseEventArgs e)
80 _pressed.Remove(MapButton(e.Button));
84 private void OnMouseMove(BrowserMouseEventArgs e) => UpdatePosition(e);
86 private void OnWheel(BrowserWheelEventArgs e)
90 Interlocked.Add(ref _scrollDelta, (
int)(-e.DeltaY));
93 private void UpdatePosition(BrowserMouseEventArgs e)
95 _currentPosition =
new PointF((
float)e.OffsetX, (
float)e.OffsetY);
103 private static GondwanaMouseButton MapButton(
long button) => button
switch
105 0 => GondwanaMouseButton.Left,
106 1 => GondwanaMouseButton.Middle,
107 2 => GondwanaMouseButton.Right,
108 _ => GondwanaMouseButton.None
114 _component.MouseDown -= OnMouseDown;
115 _component.MouseUp -= OnMouseUp;
116 _component.MouseMove -= OnMouseMove;
117 _component.Wheel -= OnWheel;
A Blazor component that presents Gondwana game frames on an HTML <canvas> element and forwards keyboa...
Provides the shared DOM input surface used by Gondwana's Blazor bitmap and GPU render components.