test_particle_floor.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. from panda3d.core import NodePath, Vec3
  2. from panda3d.physics import LinearVectorForce
  3. from direct.particles import ParticleEffect
  4. from direct.particles import Particles
  5. from direct.particles import ForceGroup
  6. class ParticleFloorTest(NodePath):
  7. def __init__(self):
  8. NodePath.__init__(self, "particleFloorTest")
  9. # Sort Order of Particles
  10. self.setDepthWrite(0)
  11. # Load Particle Effects
  12. self.f = ParticleEffect.ParticleEffect()
  13. self.f.reparentTo(self)
  14. self.p0 = Particles.Particles('particles-1')
  15. # Particles parameters
  16. self.p0.setFactory("PointParticleFactory")
  17. self.p0.setRenderer("PointParticleRenderer")
  18. self.p0.setEmitter("SphereVolumeEmitter")
  19. self.p0.setPoolSize(64)
  20. self.p0.setBirthRate(0.020)
  21. self.p0.setLitterSize(7)
  22. self.p0.setLitterSpread(2)
  23. self.p0.setSystemLifespan(0.0000)
  24. #self.p0.setLocalVelocityFlag(1)
  25. self.p0.setFloorZ(-1.0)
  26. self.p0.setSystemGrowsOlderFlag(0)
  27. # Factory parameters
  28. self.p0.factory.setLifespanBase(10.000)
  29. self.p0.factory.setLifespanSpread(0.50)
  30. self.p0.factory.setMassBase(1.80)
  31. self.p0.factory.setMassSpread(1.00)
  32. self.p0.factory.setTerminalVelocityBase(400.0000)
  33. self.p0.factory.setTerminalVelocitySpread(0.0000)
  34. self.f.addParticles(self.p0)
  35. f0 = ForceGroup.ForceGroup('frict')
  36. # Force parameters
  37. force0 = LinearVectorForce(Vec3(0., 0., -1.))
  38. force0.setActive(1)
  39. f0.addForce(force0)
  40. self.f.addForceGroup(f0)
  41. def start(self):
  42. self.f.enable()
  43. def test_ParticleFloorTest(base):
  44. base.enableParticles()
  45. pt = ParticleFloorTest()
  46. pt.reparentTo(base.render)
  47. pt.start()
  48. # base.camera.setY(-10.0)