public void addState(string stateKey, AttachedEffect attachedEffect)
    {
        stateChanged = true;
        if (!attachedEffectStates.ContainsKey(stateKey))
        {
            attachedEffectStates[stateKey] = new SimplePriorityQueue <AttachedEffect>();
        }

        attachedEffectStates[stateKey].Enqueue(attachedEffect, attachedEffect.getAppliedStates()[stateKey]);
    }
 public void removeEffect(AttachedEffect attachedEffect)
 {
     foreach (var state in attachedEffect.getAppliedStates())
     {
         if (!attachedEffectStates.ContainsKey(state.Key) || attachedEffectStates[state.Key] == null || !attachedEffectStates[state.Key].Contains(attachedEffect))
         {
             continue;
         }
         attachedEffectStates[state.Key].Remove(attachedEffect);
     }
 }