mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 10:22:45 -04:00
*** empty log message ***
This commit is contained in:
parent
b8ade26846
commit
096cf1e553
147
direct/src/particles/ParticleFloorTest.py
Executable file
147
direct/src/particles/ParticleFloorTest.py
Executable file
@ -0,0 +1,147 @@
|
||||
from direct.directbase.TestStart import *
|
||||
from direct.interval.IntervalGlobal import *
|
||||
from direct.actor import Actor
|
||||
from direct.particles import ParticleEffect
|
||||
from direct.particles import Particles
|
||||
from direct.particles import ForceGroup
|
||||
from direct.showbase import Pool
|
||||
|
||||
class ParticleFloorTest(NodePath):
|
||||
def __init__(self, pool=None):
|
||||
NodePath.__init__(self, "particleTest")
|
||||
self.pool = pool
|
||||
|
||||
# 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)
|
||||
if 0:
|
||||
# Z Spin factory parameters
|
||||
self.p0.factory.setInitialAngle(0.0000)
|
||||
self.p0.factory.setInitialAngleSpread(360.0000)
|
||||
self.p0.factory.enableAngularVelocity(1)
|
||||
self.p0.factory.setAngularVelocity(40.00)
|
||||
self.p0.factory.setAngularVelocitySpread(20.00)
|
||||
if 0:
|
||||
# Renderer parameters
|
||||
self.p0.renderer.setAlphaMode(BaseParticleRenderer.PRALPHAOUT)
|
||||
self.p0.renderer.setUserAlpha(1.0)
|
||||
# Sprite parameters
|
||||
self.p0.renderer.setTexture(loader.loadTexture('maps/smiley.rgb'))
|
||||
self.p0.renderer.setColor(Vec4(1.00, 1.00, 1.00, 1.00))
|
||||
self.p0.renderer.setXScaleFlag(1)
|
||||
self.p0.renderer.setYScaleFlag(1)
|
||||
self.p0.renderer.setZScaleFlag(1)
|
||||
self.p0.renderer.setAnimAngleFlag(1)
|
||||
self.p0.renderer.setInitialXScale(0.0012)
|
||||
self.p0.renderer.setFinalXScale(0.0035)
|
||||
self.p0.renderer.setInitialYScale(0.0012)
|
||||
self.p0.renderer.setFinalYScale(0.0035)
|
||||
self.p0.renderer.setInitialZScale(0.0012)
|
||||
self.p0.renderer.setFinalZScale(0.0035)
|
||||
self.p0.renderer.setNonanimatedTheta(0.0000)
|
||||
self.p0.renderer.setAlphaBlendMethod(BaseParticleRenderer.PPNOBLEND)
|
||||
self.p0.renderer.setAlphaDisable(0)
|
||||
if 0:
|
||||
# Emitter parameters
|
||||
self.p0.emitter.setEmissionType(BaseParticleEmitter.ETRADIATE)
|
||||
self.p0.emitter.setAmplitude(57.000)
|
||||
self.p0.emitter.setAmplitudeSpread(1.000)
|
||||
self.p0.emitter.setOffsetForce(Vec3(5.0000, 5.0000, 5.000))
|
||||
#self.p0.emitter.setExplicitLaunchVector(Vec3(0.0000, 0.0000, 1.0000))
|
||||
self.p0.emitter.setRadiateOrigin(Point3(0.0000, 0.0000, 0.0000))
|
||||
# Sphere Volume parameters
|
||||
self.p0.emitter.setRadius(0.500)
|
||||
self.f.addParticles(self.p0)
|
||||
if 0:
|
||||
f0 = ForceGroup.ForceGroup('frict')
|
||||
# Force parameters
|
||||
force0 = LinearFrictionForce(1., 1., 1.)
|
||||
force0.setActive(1)
|
||||
f0.addForce(force0)
|
||||
self.f.addForceGroup(f0)
|
||||
if 1:
|
||||
f0 = ForceGroup.ForceGroup('frict')
|
||||
# Force parameters
|
||||
force0 = LinearVectorForce(Vec3(0., 0., -1.))
|
||||
force0.setActive(1)
|
||||
f0.addForce(force0)
|
||||
self.f.addForceGroup(f0)
|
||||
|
||||
self.createTrack()
|
||||
|
||||
def createTrack(self, rate = 1):
|
||||
print "createTrack"
|
||||
self.track = Sequence(
|
||||
Func(self.p0.setBirthRate, 0.020),
|
||||
Func(self.f.enable),
|
||||
Func(self.f.reparentTo, self),
|
||||
Wait(0.3),
|
||||
Func(self.p0.setBirthRate, 100),
|
||||
Wait(1.5),
|
||||
Func(self.finish)
|
||||
)
|
||||
|
||||
def start(self):
|
||||
print "start"
|
||||
self.f.enable()
|
||||
self.f.reparentTo(self)
|
||||
|
||||
def play(self, rate = 1):
|
||||
print "play"
|
||||
self.track.start()
|
||||
|
||||
def loop(self, rate = 1):
|
||||
print "loop"
|
||||
self.track.loop()
|
||||
|
||||
def stop(self):
|
||||
if self.track:
|
||||
self.track.finish()
|
||||
|
||||
def finish(self):
|
||||
print "finish"
|
||||
self.stop()
|
||||
self.f.disable()
|
||||
self.reparentTo(hidden)
|
||||
if self.pool:
|
||||
self.pool.checkin(self)
|
||||
|
||||
def destroy(self):
|
||||
print "destroy"
|
||||
self.stop()
|
||||
self.f.cleanup()
|
||||
del self.f
|
||||
del self.p0
|
||||
self.removeNode()
|
||||
if self.pool:
|
||||
self.pool.remove(self)
|
||||
del self.pool
|
||||
del self.track
|
||||
|
||||
pt=ParticleFloorTest()
|
||||
pt.reparentTo(render)
|
||||
pt.start()
|
||||
|
Loading…
x
Reference in New Issue
Block a user