// Poistee efektin kaikista listoista ja // päivittää ContainsOverridingEffects propertyn valueta. private void RemoveFromLists(Effect effect) { allEffects.Remove(effect); if (effect is DrawableEffect) { DrawableEffect drawable = (DrawableEffect)effect; drawableEffects.Remove(drawable); foreach (DrawableEffect drawableEffect in drawableEffects) { if (drawableEffect.IsOverridingDraw) { ContainsOverridingEffects = true; break; } ContainsOverridingEffects = false; } } else { notDrawableEffects.Remove(effect); } }
/// <summary> /// Remove metodi jolla poistetaan drawable efektejä. /// </summary> public void RemoveEffect(Predicate <DrawableEffect> predicate) { DrawableEffect effect = drawableEffects.Find(e => predicate(e)); if (effect == null) { throw new NullReferenceException("Drawable effect with given predicate was not found."); } else { RemoveFromLists(effect); } }
/// <summary> /// Lisää uuden efektin cointaineriin. /// </summary> public void AddEffects(Effect effect) { // Kästätään suoraan drawableksi, palauttaa nullin jos tyyppi ei ole oikea. DrawableEffect drawableEffect = effect as DrawableEffect; allEffects.Add(effect); // Lisätään efekti oikeaan listaan. if (drawableEffect != null) { drawableEffects.Add(drawableEffect); } else { notDrawableEffects.Add(effect); } if (drawableEffect != null && drawableEffect.IsOverridingDraw) { ContainsOverridingEffects = true; } }