public override void affect(ref Particle[] particles)
 {
     int parts = particles.Length;
     for (int i = 0; i < parts; i++)
     {
         particles[i].vector *= strength;
     }
 }
 public override void affect(ref Particle[] particles)
 {
     int parts = particles.Length;
     for (int i = 0; i < parts; i++)
     {
         if (particles[i].position.Y < level)
             particles[i].alive = false;
     }
 }
        public void generateParticles(int amnt)
        {
            int curPos = 0;

            for (int i = 0; i < amnt; i++)
            {
                bool placed = false;

                while (!placed)
                {
                    if (!particles[curPos].alive)
                    {
                        Vector3 randomPos = new Vector3((float)(0.5 - rnd.NextDouble()), (float)(rnd.NextDouble() * 0.5f), (float)(0.5 - rnd.NextDouble())) * spreadRadius * 2;
                        Particle curPat = new Particle(randomPos);

                        curPat.rendertype = rnd.Next(meshes.Length);
                        curPat.size = particleSize;
                        curPat.spawnTime = gameWindow.frameTime;
                        curPat.lifeTime = particleLifeTime;
                        curPat.alive = true;

                        particles[curPos] = curPat;

                        placed = true;
                    }

                    curPos++;

                    if (curPos == particles.Length)
                    {
                        return;
                    }
                }
            }
        }
 public virtual void affect(ref Particle[] particles)
 {
 }
 public override void affect(ref Particle[] particles)
 {
     int parts = particles.Length;
     float timestamp = gameWindow.frameTime;
     for (int i = 0; i < parts; i++)
     {
         if (particles[i].spawnTime + particles[i].lifeTime < timestamp)
             particles[i].alive = false;
     }
 }