from panda3d.core import NodePath
from panda3d.physics import LinearVectorForce
from direct.particles import ParticleEffect
from direct.particles import Particles
from direct.particles import ForceGroup
[docs]class ParticleFloorTest(NodePath):
[docs] def __init__(self):
NodePath.__init__(self, "particleFloorTest")
# Sort Order of Particles
self.setDepthWrite(0)
# Load Particle Effects
self.f = ParticleEffect.ParticleEffect()
self.f.reparentTo(self)
self.p0 = Particles.Particles('particles-1')
# Particles parameters
self.p0.setFactory("PointParticleFactory")
self.p0.setRenderer("PointParticleRenderer")
self.p0.setEmitter("SphereVolumeEmitter")
self.p0.setPoolSize(64)
self.p0.setBirthRate(0.020)
self.p0.setLitterSize(7)
self.p0.setLitterSpread(2)
self.p0.setSystemLifespan(0.0000)
#self.p0.setLocalVelocityFlag(1)
self.p0.setFloorZ(-1.0)
self.p0.setSystemGrowsOlderFlag(0)
# Factory parameters
self.p0.factory.setLifespanBase(10.000)
self.p0.factory.setLifespanSpread(0.50)
self.p0.factory.setMassBase(1.80)
self.p0.factory.setMassSpread(1.00)
self.p0.factory.setTerminalVelocityBase(400.0000)
self.p0.factory.setTerminalVelocitySpread(0.0000)
self.f.addParticles(self.p0)
f0 = ForceGroup.ForceGroup('frict')
# Force parameters
force0 = LinearVectorForce(Vec3(0., 0., -1.))
force0.setActive(1)
f0.addForce(force0)
self.f.addForceGroup(f0)
[docs] def start(self):
self.f.enable()
if __name__ == "__main__":
from direct.directbase.TestStart import *
pt = ParticleFloorTest()
pt.reparentTo(base.render)
pt.start()
base.camera.setY(-10.0)
base.run()