public async Task <DoAfterStatus> DoAfter(DoAfterEventArgs eventArgs) { // Setup var doAfter = new DoAfter(eventArgs); // Caller's gonna be responsible for this I guess var doAfterComponent = eventArgs.User.GetComponent <DoAfterComponent>(); doAfterComponent.Add(doAfter); IDamageableComponent?damageableComponent = null; // TODO: If the component's deleted this may not get unsubscribed? if (eventArgs.BreakOnDamage && eventArgs.User.TryGetComponent(out damageableComponent)) { damageableComponent.HealthChangedEvent += doAfter.HandleDamage; } await doAfter.AsTask; if (damageableComponent != null) { damageableComponent.HealthChangedEvent -= doAfter.HandleDamage; } return(doAfter.Status); }
public async Task <DoAfterStatus> DoAfter(DoAfterEventArgs eventArgs) { // Setup var doAfter = new DoAfter(eventArgs); // Caller's gonna be responsible for this I guess var doAfterComponent = eventArgs.User.GetComponent <DoAfterComponent>(); doAfterComponent.Add(doAfter); await doAfter.AsTask; return(doAfter.Status); }