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.