public void AddModifier(EntityModifier modifier, float duration = Mathf.Infinity)
    {
        Type type = modifier.GetType();

        if (!modifiers.ContainsKey(type))
        {
            ModifierList list = new ModifierList(type);
            modifiers.Add(type, list);
        }

        modifiers[type].Add(modifier, duration);
        CallEvent(type);
    }
    public bool ContainsModifier(EntityModifier modifier)
    {
        Type type = modifier.GetType();

        if (modifiers.ContainsKey(type))
        {
            for (int i = 0; i < modifiers[type].Count; i++)
            {
                if (modifiers[type][i] == modifier)
                {
                    return(true);
                }
            }
        }

        return(false);
    }
 public int GetModifierCount(EntityModifier modifier) => GetModifierCount(modifier.GetType());
 public void SetModifierAsDirty(EntityModifier modifier) => SetModifierAsDirty(modifier.GetType());
 public void RemoveModifierListener(UnityAction call, EntityModifier modifier) => RemoveModifierListener(call, modifier.GetType());
 public ModifierList(EntityModifier modifier)
 {
     modifierType = modifier.GetType();
 }
 public void RemoveModifier(EntityModifier modifier)
 {
     modifiers[modifier.GetType()].Remove(modifier);
 }