public void RemoveAura(Aura aura, object referenceObject) { var activeAura = _activeAuras .FirstOrDefault(x => x.AuraType == aura && x.ReferenceObject == referenceObject); if (activeAura == null) { return; } activeAura.Remove(); _activeAuras.Remove(activeAura); OnAuraRemoved?.Invoke(activeAura); }
public void Tick(float deltaTime) { foreach (var activeAura in _activeAuras) { activeAura.Tick(deltaTime); } var completeAuras = _activeAuras .Where(x => x.HasExpired) .ToList(); completeAuras.AddRange(_activeAuras.Where(x => x.Stacks < 1)); foreach (var completeAura in completeAuras) { completeAura.Remove(); _activeAuras.Remove(completeAura); OnAuraRemoved?.Invoke(completeAura); } }