/// <summary> /// Removes an effect /// </summary> /// <param name="effect">The effect to remove.</param> public virtual void RemoveEffect(IEffect <T> effect) { var effectTimeToRemove = EffectTimes.FirstOrDefault(x => x.Effect == effect); if (effectTimeToRemove == null) { return; } effect.OnDetach(EffectTarget); EffectTimes.Remove(effectTimeToRemove); }
/// <summary> /// Detaches the given effect. /// </summary> /// <param name="effect">The effect to detached.</param> /// <returns><c>true</c> if the effect could be detached; otherwise, <c>false</c>.</returns> public bool DetachEffect(IEffect effect) { bool retVal = false; lock (Effects) { if (effect != null) { EffectTimeContainer val = Effects.FirstOrDefault(x => x.Effect == effect); if (val != null) { effect.OnDetach(); Effects.Remove(val); retVal = true; } } } CheckUpdateLoop(); return retVal; }