*** empty log message ***

This commit is contained in:
Dave Schuyler 2004-10-11 21:52:16 +00:00
parent b8ade26846
commit 096cf1e553

View 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()