UI/WheelPanel.cs

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 );
	}
}