Priority events

AzPriorityEventRef<T>

Use ordered readonly-ref dispatch for large struct payloads.

  • Large structs
  • Readonly ref
  • Ordered dispatch
  • Handler shape

Use AzPriorityEventRef<T> for ordered large-struct payload dispatch.

Use AzPriorityEventRef<T> for Large Struct Payloads

AzPriorityEventRef<T> passes payloads by in T. Use it for struct payloads where copy cost is worth avoiding.

public readonly struct HitReport
{
    public readonly Vector3 Origin;
    public readonly Vector3 HitPoint;
    public readonly Vector3 Normal;
    public readonly int TargetId;

    public HitReport(Vector3 origin, Vector3 hitPoint, Vector3 normal, int targetId)
    {
        Origin = origin;
        HitPoint = hitPoint;
        Normal = normal;
        TargetId = targetId;
    }
}

public static readonly AzPriorityEventRef<HitReport> HitReported = new();

private void OnEnable()
{
    CombatBus.HitReported.Subscribe(OnHitReported, slot: 3).AddTo(_subscriptions);
}

private void OnHitReported(in HitReport report)
{
    Debug.Log($"Hit target {report.TargetId}");
}

Use AzPriorityEventRef<T> when struct-copy cost is worth avoiding. For small values, AzPriorityEvent<T> is simpler.