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); }