public void Update(GameTime gameTime)
            {
                float dt = (float)gameTime.ElapsedGameTime.TotalSeconds;

                m_moneyElapsedEmittionTime += dt;

                while (m_moneyElapsedEmittionTime > (1.0f / m_emissionRate))
                {
                    SpawnParticle();
                    m_moneyElapsedEmittionTime -= (1.0f / m_emissionRate);
                }

                for (int i = m_particles.Count - 1; i >= 0; --i)
                {
                    m_Particle p = m_particles[i];

                    p.m_life -= dt;
                    if (p.m_life <= 0.0f)
                    {
                        m_particles.RemoveAt(i);
                    }

                    p.m_acceleration.Y += m_gravity * dt;
                    p.m_acceleration.X += m_wind * dt;

                    p.m_velocity   += p.m_acceleration * dt;
                    p.m_position.X += p.m_velocity.X * dt;
                    p.m_position.Y -= p.m_velocity.Y * dt;

                    if (p.m_life <= 1.0f)
                    {
                        p.m_alpha = p.m_life * m_transparency;
                    }
                }
            }
            void SpawnParticle()
            {
                m_Particle p = new m_Particle();

                p.m_life         = fRand(m_minLife, m_maxLife);
                p.m_rotation     = 0.0f;
                p.m_color        = Color.Green;
                p.m_acceleration = new Vector2(m_wind, -m_gravity);
                p.m_velocity     = new Vector2(fRand(m_minVelocity.X, m_maxVelocity.X), fRand(m_minVelocity.Y, m_maxVelocity.Y));
                p.m_position     = new Vector2(fRand(-m_emissionSize.X, m_emissionSize.X) + m_position.X,
                                               fRand(-m_emissionSize.Y, m_emissionSize.Y) + m_position.Y);
                p.m_size  = new Vector2(fRand(m_minSize, m_maxSize));
                p.m_alpha = m_transparency;

                m_particles.Add(p);
            }