/// <summary> /// Emits around 20% of what is left to be emitted. /// </summary> /// <param name="allParticles">Emits particles into this collection</param> public void EmitParticles(List <ParticlePrimitive> allParticles) { int numToEmit = 0; if (mNumRemains < kMinToEmit) { // If only a few are left, emits all of them numToEmit = mNumRemains; } else { // Other wise, emits about 20% of what's left numToEmit = (int)Game1.RandomNumber(0.2f * mNumRemains); } // Left for future emitting. mNumRemains -= numToEmit; for (int i = 0; i < numToEmit; i++) { ParticlePrimitive p; // 40% chance emitting simple particle, 60% chance emitting the new reddish particle if (Game1.RandomNumber(1.0f) > 0.6f) { p = new ParticlePrimitive(mEmitPosition, 2f, 30); } else { p = new ReddishParticlePrimitive(mEmitPosition, 2f, 80); } allParticles.Add(p); } }
/// <summary> /// Emits around 20% of what is left to be emitted. /// </summary> /// <param name="allParticles">Emits particles into this collection</param> public void EmitParticles(List <ParticlePrimitive> allParticles) { int numToEmit = 0; if (mNumRemains < kMinToEmit) { numToEmit = mNumRemains; // if only a few left, emits all of them } else { numToEmit = (int)Game1.RandomNumber(0.2f * mNumRemains); } // other wise, emits about 20% of what's left mNumRemains -= numToEmit; // left for future emitting. for (int i = 0; i < numToEmit; i++) { ParticlePrimitive p = mParticleCreator.Invoke(mEmitPosition); allParticles.Add(p); } }
/// <summary> /// Create a particle at the position /// </summary> /// <param name="pos">Position to create the particle</param> public void AddParticleAt(Vector2 pos) { ParticlePrimitive particle = new ParticlePrimitive(pos, 2f, 50); mAllParticles.Add(particle); }