using Syntriax.Engine.Core; namespace Syntriax.Engine.Systems.Input; public interface IButtonInputs : IHasStateEnable { Event, ButtonCallbackArguments> OnAnyButtonPressed { get; } Event, ButtonCallbackArguments> OnAnyButtonReleased { get; } void RegisterOnPress(T button, Event, ButtonCallbackArguments>.EventHandler callback); void UnregisterOnPress(T button, Event, ButtonCallbackArguments>.EventHandler callback); void RegisterOnRelease(T button, Event, ButtonCallbackArguments>.EventHandler callback); void UnregisterOnRelease(T button, Event, ButtonCallbackArguments>.EventHandler callback); bool IsPressed(T button); readonly record struct ButtonCallbackArguments(T Button); }