Exemplo n.º 1
0
  def __init__( self ):
    ParticleEffect.ParticleEffect.__init__( self )
    self.reset()
    self.setPos(0.000, 0.000, 0.000)
    self.setHpr(0.000, 0.000, 0.000)
    self.setScale(1.000, 1.000, 1.000)
    self.particle = Particles.Particles('particles-1')
    # Particles parameters
    self.particle.setFactory("PointParticleFactory")
    self.particle.setRenderer("LineParticleRenderer")
#    self.particle.setRenderer("PointParticleRenderer")
    self.particle.setEmitter("DiscEmitter")
    self.particle.setPoolSize( 4096 )
    self.particle.setBirthRate( 0.01 )
    self.particle.setLitterSize(10)
    self.particle.setLitterSpread(0)
    self.particle.setSystemLifespan(0.0000)
    self.particle.setLocalVelocityFlag(1)
    self.particle.setSystemGrowsOlderFlag(0)
    # Factory parameters
    self.particle.factory.setLifespanBase(1.5000)
    self.particle.factory.setLifespanSpread(0.0000)
    self.particle.factory.setMassBase(1.0000)
    self.particle.factory.setMassSpread(0.0000)
    self.particle.factory.setTerminalVelocityBase(400.0000)
    self.particle.factory.setTerminalVelocitySpread(0.0000)
    # Point factory parameters
    # Renderer parameters
    self.particle.renderer.setAlphaMode(BaseParticleRenderer.PRALPHANONE)
    self.particle.renderer.setUserAlpha(1.00)
#    # Point parameters
#    self.particle.renderer.setPointSize(1.00)
#    self.particle.renderer.setStartColor(Vec4(1.00, 1.00, 1.00, 1.00))
#    self.particle.renderer.setEndColor(Vec4(1.00, 1.00, 1.00, 1.00))
#    self.particle.renderer.setBlendType(PointParticleRenderer.PPONECOLOR)
#    self.particle.renderer.setBlendMethod(BaseParticleRenderer.PPNOBLEND)
    # Line parameters
#    self.particle.renderer.setHeadColor(Vec4(1.00, 1.00, 1.00, 1.00))
#    self.particle.renderer.setTailColor(Vec4(1.00, 1.00, 1.00, 1.00))
    self.particle.renderer.setHeadColor(Vec4(1.00, 1.00, 1.00, 1.0))
    self.particle.renderer.setTailColor(Vec4(1.00, 1.00, 1.00, 1.0))
    self.particle.renderer.setLineScaleFactor(1.00)
    # Emitter parameters
    self.particle.emitter.setEmissionType(BaseParticleEmitter.ETEXPLICIT)
    self.particle.emitter.setAmplitude(1.0000)
    self.particle.emitter.setAmplitudeSpread(0.0000)
    self.particle.emitter.setOffsetForce(Vec3(0.0000, 0.0000, 0.0000))
    self.particle.emitter.setExplicitLaunchVector(Vec3(0.0000, 0.0000, 0.0000))
    self.particle.emitter.setRadiateOrigin(Point3(0.0000, 0.0000, 0.0000))
    # Disc parameters
    self.particle.emitter.setRadius(1.0000)
    self.addParticles(self.particle)
    self.forceGroup = ForceGroup.ForceGroup('gravity')
    # Force parameters
    force0 = LinearVectorForce(Vec3(0.0000, 0.0000, -1.0000), 1.0000, 0)
    force0.setVectorMasks(1, 1, 1)
    force0.setActive(1)
    self.forceGroup.addForce(force0)
    self.addForceGroup(self.forceGroup)
Exemplo n.º 2
0
    def _make_pfx (self, enode, rnode, pos, radius, scale1, scale2,
                   birthrate, lifespan, zspinini, zspinfin, zspinvel,
                   poolsize, littersize, amplitude, ampspread, risefact,
                   texpath, color, alphamode, softstop):

        pfx = ParticleEffect()
        pfx.setPos(pos)

        p0 = make_particles()
        p0.setPoolSize(poolsize)
        p0.setBirthRate(birthrate)
        p0.setLitterSize(littersize)
        p0.setLitterSpread(0)
        #p0.setSystemLifespan(1.0)
        #p0.setLocalVelocityFlag(1)
        #p0.setSystemGrowsOlderFlag(0)

        # p0.setFactory("PointParticleFactory")
        # p0.factory.setLifespanBase(lifespan)
        # p0.factory.setLifespanSpread(0.0)
        # #p0.factory.setMassBase(1.00)
        # #p0.factory.setMassSpread(0.00)
        # #p0.factory.setTerminalVelocityBase(400.0000)
        # #p0.factory.setTerminalVelocitySpread(0.0000)

        p0.setFactory("ZSpinParticleFactory")
        p0.factory.setLifespanBase(lifespan)
        p0.factory.setLifespanSpread(0.0)
        #p0.factory.setMassBase(1.00)
        #p0.factory.setMassSpread(0.00)
        #p0.factory.setTerminalVelocityBase(400.0000)
        #p0.factory.setTerminalVelocitySpread(0.0000)
        p0.factory.setAngularVelocity(zspinvel)
        p0.factory.setFinalAngle(zspinfin)
        p0.factory.setInitialAngle(zspinini)

        p0.setRenderer("SpriteParticleRenderer")
        p0.renderer.setAlphaMode(alphamode)
        texpaths = texpath
        if not isinstance(texpath, (tuple, list)):
            texpaths = [texpaths]
        for texpath in texpaths:
            texture = base.load_texture("data", texpath)
            p0.renderer.addTexture(texture)
        # p0.renderer.setUserAlpha(alpha)
        p0.renderer.setColor(color)
        p0.renderer.setXScaleFlag(1)
        p0.renderer.setYScaleFlag(1)
        p0.renderer.setAnimAngleFlag(1)
        p0.renderer.setInitialXScale(scale1)
        p0.renderer.setFinalXScale(scale2)
        p0.renderer.setInitialYScale(scale1)
        p0.renderer.setFinalYScale(scale2)

        p0.setEmitter("SphereVolumeEmitter")
        p0.emitter.setRadius(radius)
        p0.emitter.setEmissionType(BaseParticleEmitter.ETRADIATE)
        p0.emitter.setAmplitude(amplitude)
        p0.emitter.setAmplitudeSpread(ampspread)
        #p0.emitter.setOffsetForce(Vec3(0.0000, 0.0000, 0.0000))
        #p0.emitter.setExplicitLaunchVector(Vec3(1.0000, 0.0000, 0.0000))
        #p0.emitter.setRadiateOrigin(Point3(0.0000, 0.0000, 0.0000))

        f0 = ForceGroup("vertex")
        force0 = LinearVectorForce(risefact * amplitude)
        force0.setActive(1)
        f0.addForce(force0)

        p0.setRenderParent(rnode)

        pfx.addForceGroup(f0)
        pfx.addParticles(p0)

        pfx.start(enode)
        if softstop:
            pfx.softStop()

        return pfx