Code/WeaponImporter/WeaponHoldSystem.cs
namespace WeaponImporter;

/// <summary>
/// Reads every <see cref="WeaponHold"/>'s action triggers after components update and before
/// the animgraph evaluates (Stage.UpdateBones, order -1), so auto-reset graph triggers set by
/// game code in OnUpdate are never missed.
/// </summary>
public sealed class WeaponHoldSystem : GameObjectSystem
{
    public WeaponHoldSystem( Scene scene ) : base( scene )
    {
        Listen( Stage.UpdateBones, -1, ReadTriggers, "WeaponHold.ReadTriggers" );
    }

    private void ReadTriggers()
    {
        foreach ( var hold in Scene.GetAllComponents<WeaponHold>() )
        {
            if ( hold.Active )
                hold.ReadTriggers();
        }
    }
}