فهرست منبع

*** empty log message ***

Dave Schuyler 21 سال پیش
والد
کامیت
096cf1e553
1فایلهای تغییر یافته به همراه147 افزوده شده و 0 حذف شده
  1. 147 0
      direct/src/particles/ParticleFloorTest.py

+ 147 - 0
direct/src/particles/ParticleFloorTest.py

@@ -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()
+