namespace Syntriax.Engine.StateMachine; public readonly record struct StateTransition(IState State, IReadOnlyList> Conditions) { public static implicit operator (IState state, IReadOnlyList> conditions)(StateTransition value) => (value.State, value.Conditions); public static implicit operator StateTransition((IState state, IReadOnlyList> conditions) value) => new(value.state, value.conditions); public bool CanTransition => !Conditions.Any(c => !c.Invoke()); }