void OnMouseWheelScrolled(object sender, MouseWheelScrollEventArgs args) { int axis = args.Wheel switch { Mouse.Wheel.HorizontalWheel => 0, Mouse.Wheel.VerticalWheel => 1, _ => throw ExceptionHelper.Invalid(nameof(args.Wheel), args.Wheel, InvalidType.unexpected) }; MouseHovering?.OnMouseScrolled(Float2.Create(axis, args.Delta)); } }
void OnMouseMoved(object sender, MouseMoveEventArgs args) { IHoverable touching = Find(args.As()); if (MouseHovering != touching) { touching?.OnMouseHovered(new MouseHover(args, MouseHover.Type.enter)); MouseHovering?.OnMouseHovered(new MouseHover(args, MouseHover.Type.exit)); MouseHovering = touching; } else { MouseHovering?.OnMouseHovered(new MouseHover(args, MouseHover.Type.roam)); } }