private void FixedUpdate() { int count = fireParticles.Count; for (int i = 0; i < count; ++i) { FireParticle particle = fireParticles.Dequeue(); if (!particle.Update(Time.fixedDeltaTime)) { for (int j = 0; j < particle.treeDepth; ++j) { FireParticle childParticle = new FireParticle(); //childParticle.age = Random.Range(0, particle.age); childParticle.particle.position = particle.particle.position; childParticle.particle.velocity.x += particle.particle.velocity.x; childParticle.particle.velocity.y += particle.particle.velocity.y; childParticle.particle.velocity.z += particle.particle.velocity.z; childParticle.treeDepth = Random.Range(0, particle.treeDepth); childParticle.color = particle.color + new Color(Random.Range(-0.10f, 0.10f), Random.Range(-0.10f, 0.10f), Random.Range(-0.10f, 0.10f)); fireParticles.Enqueue(childParticle); } particle.Dispose(); } else { fireParticles.Enqueue(particle); } } }
private void OnDestroy() { while (fireParticles.Count > 0) { FireParticle p = fireParticles.Dequeue(); if (p != null) { p.Dispose(); } } }