/// <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);
        }
示例#2
0
 /// <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;
 }