public static void ClearAllDelegates()
    {
        if (NextEngineEffect != null)
        {
            foreach (var d in NextEngineEffect.GetInvocationList())
            {
                NextEngineEffect -= (d as NextEngineDelegate);
            }
        }

        if (EnemyEffect != null)
        {
            foreach (var d in EnemyEffect.GetInvocationList())
            {
                EnemyEffect -= (d as EnemyEffectDelegate);
            }
        }
    }
    public static void ApplyEngineEffects()
    {
        if (NextEngineEffect == null)
        {
            return;
        }
        NextEngineEffect();
        if (NextEngineEffect != null)
        {
            foreach (var d in NextEngineEffect.GetInvocationList())
            {
                NextEngineEffect -= (d as NextEngineDelegate);
            }
        }

        if (NextNextEngineEffect != null)
        {
            foreach (var d in NextNextEngineEffect.GetInvocationList())
            {
                NextEngineEffect     += (d as NextEngineDelegate);
                NextNextEngineEffect -= (d as NextEngineDelegate);
            }
        }
    }