Small Sandbox.UI Panel subclass that forwards mouse wheel input to an Action<float> callback instead of consuming it. Used so the camera zoom responds while the pointer is over a UI panel.
using Sandbox.UI;
namespace HorizonRP;
/// <summary>
/// Un panneau qui reçoit la molette : sous le pointeur, l'interface la garde pour elle
/// (Panel.OnMouseWheel) et Input.MouseWheel reste à zéro, si bien que le zoom de l'appareil
/// photo ne répondait pas (Julien). <see cref="Wheel"/> reçoit le cran (positif : vers soi).
/// </summary>
public sealed class WheelPanel : Panel
{
public Action<float> Wheel { get; set; }
public override void OnMouseWheel( Vector2 value )
{
if ( Wheel is null )
{
base.OnMouseWheel( value );
return;
}
Wheel( value.y );
}
}