def update(self, delta_t):
        self._lifetime -= delta_t

        positions = self._lifetime < 0.0
        number_of_deaths = np.sum(positions)

        self._lifetime[positions] = np.random.rand(number_of_deaths) * 2.0
        self.velocity[positions] = np.random.rand(number_of_deaths * 3).reshape(number_of_deaths, 3)
        self.velocity[positions, 0] = 2.0 * self.velocity[positions, 0] - 1.0
        self.velocity[positions, 1] = 1.0 * self.velocity[positions, 1] + 7.0
        self.velocity[positions, 2] = 2.0 * self.velocity[positions, 2] - 1.0
        self.position[positions] = np.tile([-0.5, -2.0, 0.0], number_of_deaths).reshape(number_of_deaths, 3)

        ParticleArray.update(self, delta_t)
 def __init__(self, number_of_particles):
     ParticleArray.__init__(self, mass=0.001, number_of_particles=number_of_particles)
     self.reset()
 def getReadOnlyParticle(self, i):
     p = ParticleArray.getReadOnlyParticle(self, i)
     p.geometry.setColor(np.array([0.1, 0.1, 0.6]))
     return p