public static bool TryCreateParticleEffect(int id, out MyParticleEffect effect, bool userDraw = false)
        {
            if (!MyParticlesLibrary.EffectExists(id))
            {
                effect = null;
                return(false);
            }

            effect = CreateParticleEffect(id, userDraw);
            return(effect != null);
        }
        static MyParticleEffect CreateParticleEffect(int id, bool userDraw = false)
        {
            //Because we can call Update() more times per frame
            WaitUntilUpdateCompleted();

            MyParticleEffect effect = MyParticlesLibrary.CreateParticleEffect(id);

            // This could more likely be caused by empty generation pool (which is allowed) then error in xml
            //System.Diagnostics.Debug.Assert(effect.GetGenerations().Count > 0);


            //Not in parallel
            userDraw = false;

            if (effect != null)
            {
                System.Diagnostics.Debug.Assert(m_updaterTask.IsComplete == true);

                if (!userDraw)
                {
                    lock (m_particleEffectsForUpdate)
                    {
                        m_particleEffectsForUpdate.Add(effect);
                    }
                }
                else
                {
                    effect.AutoDelete = false;
                }

                effect.UserDraw = userDraw;

                m_particleEffectsAll.Add(effect);
            }

            return(effect);
        }