コード例 #1
0
        public static void RemoveParticleEffect(MyParticleEffect effect, bool fromBackground = false)
        {
            //System.Diagnostics.Debug.Assert(m_updateCompleted == true);

            //Because XNA can call Update() more times per frame
            if (!fromBackground)
            {
                WaitUntilUpdateCompleted();
            }

            bool remove = true;

            if (!effect.UserDraw /*&& effect.Enabled*/)
            {
                lock (m_particleEffectsForUpdate)
                {
                    //System.Diagnostics.Debug.Assert(m_particleEffectsForUpdate.Contains(effect));
                    remove = m_particleEffectsForUpdate.Contains(effect);
                    if (remove)
                    {
                        m_particleEffectsForUpdate.Remove(effect);
                    }
                }
            }

            m_particleEffectsAll.Remove(effect);
            if (remove)
            {
                MyParticlesLibrary.RemoveParticleEffectInstance(effect);
            }
        }