// ReSharper disable UnusedMember.Global
using System.Collections.Generic;
namespace RGB.NET.Core
{
///
/// Represents a basic effect-target.
///
/// The type this target represents.
public interface IEffectTarget
where T : IEffectTarget
{
#region Properties & Fields
///
/// Gets a readonly collection of all of this .
///
IEnumerable> Effects { get; }
#endregion
#region Methods
///
/// Updates all added to this target.
///
void UpdateEffects();
///
/// Adds an .
///
/// The to add.
void AddEffect(IEffect effect);
///
/// Removes an .
///
/// The to remove.
void RemoveEffect(IEffect effect);
///
/// Checks if the is added to this .
///
/// The to check.
/// true if the is added to this .; otherwise, false.
bool HasEffect(IEffect effect);
///
/// Checks if any of the provided generic type is added to this .
///
/// The generic type of the to check.
/// true if any of the provided type is added to this .; otherwise, false.
bool HasEffect() where TEffect : IEffect;
#endregion
}
}