deleting particles

I want to be able to create and delete some columns of particle.

Here is what I do to create the particles :

f = ParticleEffect()
f.reset()
f.setPos(0.000, 0.000, 0.000)
f.setHpr(0.000, 0.000, -90)
f.setScale(1.000, 1.000, 1.000)
#f.setScale(10,10,10)
p0 = Particles('particles-1')
# Particles parameters
p0.setFactory("PointParticleFactory")
p0.setRenderer("SpriteParticleRenderer")
p0.setEmitter("PointEmitter")
p0.setPoolSize(1024)
p0.setBirthRate(0.2000)
p0.setLitterSize(1)
p0.setLitterSpread(0)
p0.setSystemLifespan(0.0000)
p0.setLocalVelocityFlag(0)
p0.setSystemGrowsOlderFlag(0)
# Factory parameters
p0.factory.setLifespanBase(30.0000)
p0.factory.setLifespanSpread(1.0000)
p0.factory.setMassBase(1.0000)
p0.factory.setMassSpread(0.0000)
p0.factory.setTerminalVelocityBase(0.0000)
p0.factory.setTerminalVelocitySpread(0.0000)
# Point factory parameters
# Renderer parameters
p0.renderer.setAlphaMode(BaseParticleRenderer.PRALPHAUSER)
p0.renderer.setUserAlpha(0.80)
# Sprite parameters
p0.renderer.addTextureFromFile('particle.png')
p0.renderer.setColor(Vec4(1.00, 1.00, 1.00, 1.00))
p0.renderer.setXScaleFlag(0)
p0.renderer.setYScaleFlag(0)
p0.renderer.setAnimAngleFlag(1)
p0.renderer.setInitialXScale(self.particleRadius)
p0.renderer.setFinalXScale(self.particleRadius)
p0.renderer.setInitialYScale(self.particleRadius)
p0.renderer.setFinalYScale(self.particleRadius)
        
p0.renderer.setNonanimatedTheta(90.0000)
        p0.renderer.setAlphaBlendMethod(BaseParticleRenderer.PPBLENDLINEAR)
p0.renderer.setAlphaDisable(0)
# Emitter parameters
p0.emitter.setEmissionType(BaseParticleEmitter.ETEXPLICIT)
p0.emitter.setAmplitude(4.0000)
p0.emitter.setAmplitudeSpread(2.0000)
p0.emitter.setOffsetForce(Vec3(0.0000, 0.0000, 0.0000))
p0.emitter.setExplicitLaunchVector(Vec3(1.0000, 0.0000, 0.0000))
p0.emitter.setRadiateOrigin(Point3(0.0000, 0.0000, 0.0000))
# Point parameters
p0.emitter.setLocation(Point3(0.0000, 0.0000, 0.0000))
f.addParticles(p0)
t = Sequence(Func(f.start, render, render),)
t.start()
self.particle = f

I also put a collision tube around this column, in order to be able to pick it up:

self.collisionSolid = CollisionTube(
        0, 0, 0,
        0, 0, self.particleColumnHeight,
        self.particleRadius)
# create collision node
self.collisionNode = self.particle.attachNewNode(CollisionNode('collisionNode'))
self.collisionNode.node().addSolid(self.collisionSolid)
# rotate the collision node
self.collisionNode.setHpr(0,0,90)
# attach to collision mask      self.collisionNode.node().setIntoCollideMask(GeomNode.getDefaultCollideMask())

And here is what I do to destroy the particles :

self.particle.removeAllParticles()
self.particle.removeNode()

The problem is that the particles stay on the screen. The collisionTube is deleted, but the particles are still there. they just moved to the point (0,0,0) with the HPR of (0,0,0)

What do I have to do to remove them entirely ?
The documentation doesn’t say anything about that topic.

i found the particle system to be a bit buggy. Have you tried hiding them? If you need to recreate it just reuse this particle system. I had major pain with delete them. But it looks like about 5% of particle systems created never went a way like they should. I just used remove() function maybe you will have better luck.

Have you tried particle.cleanup()?

David

Thanks, the cleanup method works great.