public static IEnumerator<float> ToxicBulletEffect(GameObject thisObject)
 {
     while (true)
     {
         thisObject.LerpColor(Color.LimeGreen, .7f);
         yield return .7f;
         thisObject.LerpColor(Color.DarkGreen, .7f);
         yield return .4f;
     }
 }
        public IEnumerator<float> ModulatePhasingLong(GameObject thisObject)
        {
            Random rand = new Random();
            Color thisColor = thisObject.Color;

            Vector2[] positions = new Vector2[]
            {
                new Vector2(350, 200),
                new Vector2(350, 80),
                new Vector2(90, 200),
                new Vector2(90, 80),
                new Vector2(550, 200),
                new Vector2(550, 80)
            };

            while (true)
            {
                yield return 5f;
                thisObject.Phasing = true;
                if(this is PhantomBoss)
                    AudioManager.PlaySoundEffect(GameScene.PhaseOutSound, .8f, 0f);
                thisObject.LerpColor(Color.Transparent, 2f);
                yield return 2f;

                // New position!
                LerpPosition(positions[rand.Next(0, 6)], 4.5f);

                yield return 5f;

                if (this is PhantomBoss)
                    AudioManager.PlaySoundEffect(GameScene.PhaseInSound, .8f, 0f);

                thisObject.LerpColor(thisColor, 2f);
                yield return 2f;
                thisObject.Phasing = false;
                yield return 2f;
            }
        }
        public IEnumerator<float> ModulatePhasing(GameObject thisObject)
        {
            Color thisColor = thisObject.Color;
            while (true)
            {
                yield return 1f;
                thisObject.Phasing = true;
                thisObject.LerpColor(Color.Transparent, 1f);
                float startTime = currentGameTime;

                yield return 2.5f;

                float deltaTime = currentGameTime - startTime;
                thisObject.LerpColor(thisColor, 1f);
                yield return 1f;
                thisObject.Phasing = false;
                yield return 2f;
            }
        }