/// <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);
            }
        }
예제 #2
0
        /// <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);
        }