Ejemplo n.º 1
0
 def setMOLLYForceGroups(self):
     """
 Initialize MOLLY force fields and energies.
 """
     self.myMOLLYForcesBonded = ForceGroup()
     self.myMOLLYForcesHBonded = ForceGroup()
     self.myHBondForces = ForceGroup()
     self.mollyEnergy = ScalarStructure.ScalarStructure()
def shootFireworkRing(x, y, z, color1, color2, amp):
    f = ParticleEffect.ParticleEffect()
    p0 = Particles.Particles('particles-1')
    p0.setFactory('PointParticleFactory')
    p0.setRenderer('SparkleParticleRenderer')
    p0.setEmitter('RingEmitter')
    p0.setPoolSize(100)
    p0.setBirthRate(0.01)
    p0.setLitterSize(100)
    p0.setLitterSpread(0)
    p0.factory.setLifespanBase(1.5)
    p0.factory.setLifespanSpread(0.5)
    p0.factory.setMassBase(1.0)
    p0.factory.setMassSpread(0.0)
    p0.factory.setTerminalVelocityBase(20.0)
    p0.factory.setTerminalVelocitySpread(2.0)
    p0.renderer.setAlphaMode(BaseParticleRenderer.PRALPHAOUT)
    p0.renderer.setUserAlpha(1.0)
    p0.renderer.setCenterColor(color1)
    p0.renderer.setEdgeColor(color2)
    p0.renderer.setBirthRadius(0.29999999999999999)
    p0.renderer.setDeathRadius(0.29999999999999999)
    p0.renderer.setLifeScale(SparkleParticleRenderer.SPNOSCALE)
    p0.emitter.setEmissionType(BaseParticleEmitter.ETRADIATE)
    p0.emitter.setAmplitude(0)
    p0.emitter.setAmplitudeSpread(0)
    f0 = ForceGroup.ForceGroup('gravity')
    force0 = LinearSourceForce(Point3(x, y,
                                      z + 10), LinearDistanceForce.FTONEOVERR,
                               0.10000000000000001, 1.1000000000000001 * amp,
                               1)
    force0.setActive(1)
    f0.addForce(force0)
    force1 = LinearSinkForce(Point3(x, y, z + 10),
                             LinearDistanceForce.FTONEOVERR, 0.5, 2.0 * amp, 1)
    force1.setActive(1)
    f0.addForce(force1)
    f.addForceGroup(f0)
    p0.emitter.setRadius(4.0)
    f.addParticles(p0)
    f.setPos(x, y, z + 10)
    f.setHpr(0, random.random() * 180, random.random() * 180)
    sfx = loader.loadSfx('phase_4/audio/sfx/firework_distance_03.mp3')
    t = Sequence(Func(f.start, render, render),
                 Func(sfx.play),
                 Wait(0.5),
                 Func(p0.setBirthRate, 3),
                 Wait(1.5),
                 Func(f.cleanup),
                 name=getNextSequenceName('shootFireworkRing'))
    t.start()
def shootFireworkCircleSprite(x, y, z, color, texture, amp):
    f = ParticleEffect.ParticleEffect()
    p0 = Particles.Particles('particles-1')
    p0.setFactory('PointParticleFactory')
    p0.setRenderer('SpriteParticleRenderer')
    p0.setEmitter('SphereVolumeEmitter')
    p0.setPoolSize(100)
    p0.setBirthRate(0.01)
    p0.setLitterSize(100)
    p0.factory.setLifespanBase(2.0)
    p0.factory.setLifespanSpread(0.5)
    p0.factory.setTerminalVelocityBase(400.0)
    p0.factory.setTerminalVelocitySpread(40.0)
    p0.renderer.setAlphaMode(BaseParticleRenderer.PRALPHAUSER)
    p0.renderer.setUserAlpha(1.0)
    p0.renderer.setFromNode(texture)
    p0.renderer.setColor(color)
    p0.renderer.setXScaleFlag(1)
    p0.renderer.setYScaleFlag(1)
    p0.renderer.setInitialXScale(0.01)
    p0.renderer.setFinalXScale(0.040000000000000001)
    p0.renderer.setInitialYScale(0.01)
    p0.renderer.setFinalYScale(0.040000000000000001)
    p0.emitter.setEmissionType(BaseParticleEmitter.ETRADIATE)
    p0.emitter.setAmplitudeSpread(0.10000000000000001)
    p0.emitter.setAmplitude(amp)
    p0.emitter.setRadius(0.10000000000000001)
    f.addParticles(p0)
    circleForceGroup = ForceGroup.ForceGroup('gravity')
    force1 = LinearSinkForce(Point3(x, y, z - 100),
                             LinearDistanceForce.FTONEOVERRSQUARED, 2.0,
                             0.29999999999999999 * amp * 0.10000000000000001,
                             1)
    force1.setActive(1)
    circleForceGroup.addForce(force1)
    f.addForceGroup(circleForceGroup)
    f.setPos(x, y, z + 10)
    sfxName = random.choice(('phase_4/audio/sfx/firework_explosion_01.mp3',
                             'phase_4/audio/sfx/firework_explosion_02.mp3',
                             'phase_4/audio/sfx/firework_explosion_03.mp3'))
    sfx = loader.loadSfx(sfxName)
    t = Sequence(Func(f.start, render, render),
                 Func(sfx.play),
                 Wait(0.5),
                 Func(p0.setBirthRate, 3),
                 Wait(2.0),
                 Func(f.cleanup),
                 name=getNextSequenceName('shootFireworkSprite'))
    t.start()
def shootFireworkRocket(x, y, z, color1, color2, amp):
    f = ParticleEffect.ParticleEffect()
    p0 = Particles.Particles('particles-1')
    p0.setFactory('PointParticleFactory')
    p0.setRenderer('SparkleParticleRenderer')
    p0.setEmitter('SphereVolumeEmitter')
    p0.setPoolSize(110)
    p0.setBirthRate(0.01)
    p0.setLitterSize(2)
    p0.setLitterSpread(0)
    p0.factory.setLifespanBase(0.40000000000000002)
    p0.factory.setLifespanSpread(0.10000000000000001)
    p0.factory.setMassBase(1.0)
    p0.factory.setMassSpread(0.0)
    p0.factory.setTerminalVelocityBase(400.0)
    p0.factory.setTerminalVelocitySpread(0.0)
    p0.renderer.setAlphaMode(BaseParticleRenderer.PRALPHAOUT)
    p0.renderer.setUserAlpha(1.0)
    p0.renderer.setCenterColor(color1)
    p0.renderer.setEdgeColor(color2)
    p0.renderer.setBirthRadius(0.59999999999999998)
    p0.renderer.setDeathRadius(0.59999999999999998)
    p0.renderer.setLifeScale(SparkleParticleRenderer.SPNOSCALE)
    p0.emitter.setEmissionType(BaseParticleEmitter.ETRADIATE)
    p0.emitter.setAmplitude(amp)
    p0.emitter.setAmplitudeSpread(0.0)
    p0.emitter.setRadius(0.29999999999999999)
    f.addParticles(p0)
    gravityForceGroup = ForceGroup.ForceGroup('gravity')
    force0 = LinearVectorForce(Vec3(0.0, 0.0, -10.0), 1.0, 0)
    force0.setActive(1)
    gravityForceGroup.addForce(force0)
    f.addForceGroup(gravityForceGroup)
    f.setPos(x, y, z)
    sfxName = random.choice(('phase_4/audio/sfx/firework_whistle_01.mp3',
                             'phase_4/audio/sfx/firework_whistle_02.mp3'))
    sfx = loader.loadSfx(sfxName)
    t = Sequence(Func(f.start, render, render),
                 Func(sfx.play),
                 LerpPosInterval(f,
                                 2.0,
                                 Vec3(x, y, z + 20 * amp),
                                 blendType='easeInOut'),
                 Func(p0.setBirthRate, 3),
                 Wait(0.5),
                 Func(f.cleanup),
                 name=getNextSequenceName('shootFirework'))
    t.start()
Ejemplo n.º 5
0
def shootFireworkCircleGeneric(x, y, z, color1, color2, amp, poolSize):
    f = ParticleEffect.ParticleEffect()
    p0 = Particles.Particles('particles-1')
    p0.setFactory('PointParticleFactory')
    p0.setRenderer('SparkleParticleRenderer')
    p0.setEmitter('SphereVolumeEmitter')
    p0.setPoolSize(poolSize)
    p0.setBirthRate(0.01)
    p0.setLitterSize(poolSize)
    p0.factory.setLifespanBase(2.0)
    p0.factory.setLifespanSpread(0.5)
    p0.factory.setTerminalVelocityBase(400.0)
    p0.factory.setTerminalVelocitySpread(40.0)
    p0.renderer.setAlphaMode(BaseParticleRenderer.PRALPHAOUT)
    p0.renderer.setUserAlpha(1.0)
    p0.renderer.setCenterColor(color1)
    p0.renderer.setEdgeColor(color1)
    p0.renderer.setBirthRadius(0.4)
    p0.renderer.setDeathRadius(0.6)
    p0.renderer.setLifeScale(SparkleParticleRenderer.SPSCALE)
    p0.emitter.setEmissionType(BaseParticleEmitter.ETRADIATE)
    p0.emitter.setAmplitudeSpread(0.1)
    p0.emitter.setAmplitude(amp)
    p0.emitter.setRadius(0.1)
    f.addParticles(p0)
    circleForceGroup = ForceGroup.ForceGroup('gravity')
    force1 = LinearSinkForce(Point3(x, y, z - 100),
                             LinearDistanceForce.FTONEOVERRSQUARED, 2.0,
                             0.3 * amp * 0.1, 1)
    force1.setActive(1)
    circleForceGroup.addForce(force1)
    f.addForceGroup(circleForceGroup)
    f.setPos(x, y, z + 10)
    sfxName = random.choice(('phase_4/audio/sfx/firework_explosion_01.mp3',
                             'phase_4/audio/sfx/firework_explosion_02.mp3',
                             'phase_4/audio/sfx/firework_explosion_03.mp3'))
    sfx = loader.loadSfx(sfxName)
    t = Sequence(Func(f.start, render, render),
                 Func(sfx.play),
                 Wait(0.5),
                 Func(p0.setBirthRate, 3),
                 Wait(0.5),
                 Func(p0.renderer.setCenterColor, color2),
                 Func(p0.renderer.setEdgeColor, color2),
                 Wait(1.5),
                 Func(f.cleanup),
                 name=getNextSequenceName('shootFireworkCircle'))
    t.start()
Ejemplo n.º 6
0
if __name__ == "__main__":
    from direct.directbase.TestStart import *
    
    from panda3d.physics import LinearVectorForce
    from panda3d.core import Vec3
    import ParticleEffect
    from direct.tkpanels import ParticlePanel
    import Particles
    import ForceGroup
    
    # Showbase
    base.enableParticles()
    
    # ForceGroup
    fg = ForceGroup.ForceGroup()
    gravity = LinearVectorForce(Vec3(0.0, 0.0, -10.0))
    fg.addForce(gravity)
    
    # Particles
    p = Particles.Particles()

    # Particle effect
    pe = ParticleEffect.ParticleEffect('particle-fx')
    pe.reparentTo(render)
    #pe.setPos(0.0, 5.0, 4.0)
    pe.addForceGroup(fg)
    pe.addParticles(p)
    
    # Particle Panel
    pp = ParticlePanel.ParticlePanel(pe)