class Explosion: def __init__(self, base): self.base = base self.p = Particles() self.p.setFactory("PointParticleFactory") self.p.setRenderer("LineParticleRenderer") self.p.setEmitter("SphereSurfaceEmitter") self.p.setPoolSize(256) self.p.setBirthRate(0.01) self.p.setLitterSize(256) self.p.setSystemLifespan(2) self.p.factory.setLifespanBase(5.0000) self.p.renderer.setTailColor(Vec4(1.0, 1.0, 0.0, 1.0)) self.p.renderer.setHeadColor(Vec4(1.0, 0.0, 0.0, 1.0)) self.p.renderer.setAlphaMode(BaseParticleRenderer.PRALPHAOUT) self.p.renderer.setUserAlpha(1.00) self.p.renderer.setLineScaleFactor(32.00) self.p.emitter.setRadius(2.0000) self.p.setRenderParent(base.render) self.p.enable() self.pn = base.render.attachNewNode("particleExpNode") # self.pn.setDepthWrite(False) # self.pn.setBin("fixed", 0) self.pe = ParticleEffect("exp-effect", self.p) self.pe.reparentTo(self.pn) self.pe.enable()
def __init__(self): 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) p0 = Particles('particles-1') # Particles parameters p0.setFactory("PointParticleFactory") p0.setRenderer("SpriteParticleRenderer") p0.setEmitter("SphereVolumeEmitter") p0.setPoolSize(1024) p0.setBirthRate(0.0200) p0.setLitterSize(1) p0.setLitterSpread(0) p0.setSystemLifespan(0.0000) p0.setLocalVelocityFlag(1) p0.setSystemGrowsOlderFlag(0) # Factory parameters p0.factory.setLifespanBase(3.0000) p0.factory.setLifespanSpread(0.0000) p0.factory.setMassBase(1.0000) p0.factory.setMassSpread(0.0000) p0.factory.setTerminalVelocityBase(400.0000) p0.factory.setTerminalVelocitySpread(0.0000) # Point factory parameters # Renderer parameters p0.renderer.setAlphaMode(BaseParticleRenderer.PRALPHAUSER) p0.renderer.setUserAlpha(1.00) # Sprite parameters p0.renderer.addTextureFromFile('./image/particle.png') p0.renderer.setColor(Vec4(0.40, 0.40, 1.00, 0.50)) p0.renderer.setXScaleFlag(0) p0.renderer.setYScaleFlag(0) p0.renderer.setAnimAngleFlag(0) p0.renderer.setInitialXScale(0.03000) p0.renderer.setFinalXScale(1.0000) p0.renderer.setInitialYScale(0.03000) p0.renderer.setFinalYScale(1.0000) p0.renderer.setNonanimatedTheta(0.0000) p0.renderer.setAlphaBlendMethod(BaseParticleRenderer.PPBLENDLINEAR) p0.renderer.setAlphaDisable(0) # Emitter parameters p0.emitter.setEmissionType(BaseParticleEmitter.ETRADIATE) p0.emitter.setAmplitude(0.5000) p0.emitter.setAmplitudeSpread(0.0000) 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)) # Sphere Volume parameters p0.emitter.setRadius(0.0100) self.addParticles(p0) f0 = ForceGroup('force-1') # Force parameters force0 = LinearVectorForce(Vec3(0.0000, 0.0000, -1.0000), 3.0000, 0) force0.setVectorMasks(1, 1, 1) force0.setActive(1) f0.addForce(force0) self.addForceGroup(f0)
def fire(self): self.fire = ParticleEffect() self.fire.reset() self.fire.setPos(0.000, 0.000, 0.000) self.fire.setHpr(0.000, 0.000, 0.000) self.fire.setScale(10.000, 10.000, 10.000) p0 = Particles('particles-1') # Particles parameters p0.setFactory("PointParticleFactory") p0.setRenderer("SpriteParticleRenderer") p0.setEmitter("DiscEmitter") p0.setPoolSize(1024) p0.setBirthRate(0.0200) p0.setLitterSize(10) p0.setLitterSpread(0) p0.setSystemLifespan(1200.0000) p0.setLocalVelocityFlag(1) p0.setSystemGrowsOlderFlag(0) # Factory parameters p0.factory.setLifespanBase(2.0000) p0.factory.setLifespanSpread(0.0000) p0.factory.setMassBase(1.0000) p0.factory.setMassSpread(0.0000) p0.factory.setTerminalVelocityBase(400.0000) p0.factory.setTerminalVelocitySpread(0.0000) # Point factory parameters # Renderer parameters p0.renderer.setAlphaMode(BaseParticleRenderer.PRALPHAOUT) p0.renderer.setUserAlpha(0.22) # Sprite parameters p0.renderer.addTextureFromFile('models/gamedev/sparkle.png') p0.renderer.setColor(Vec4(1.00, 1.00, 1.00, 1.00)) p0.renderer.setXScaleFlag(1) p0.renderer.setYScaleFlag(1) p0.renderer.setAnimAngleFlag(0) p0.renderer.setInitialXScale(0.5000) p0.renderer.setFinalXScale(2.0000) p0.renderer.setInitialYScale(1.0000) p0.renderer.setFinalYScale(2.0000) p0.renderer.setNonanimatedTheta(0.0000) p0.renderer.setAlphaBlendMethod(BaseParticleRenderer.PPNOBLEND) p0.renderer.setAlphaDisable(0) # Emitter parameters p0.emitter.setEmissionType(BaseParticleEmitter.ETRADIATE) p0.emitter.setAmplitude(1.0000) p0.emitter.setAmplitudeSpread(0.0000) p0.emitter.setOffsetForce(Vec3(0.0000, 0.0000, 3.0000)) p0.emitter.setExplicitLaunchVector(Vec3(1.0000, 0.0000, 0.0000)) p0.emitter.setRadiateOrigin(Point3(0.0000, 0.0000, 0.0000)) # Disc parameters p0.emitter.setRadius(0.5000) self.fire.addParticles(p0) self.fire.setPos(self.playerModel2.getPos()) t = Sequence(Func(self.fire.start, render, render),Wait(20),Func(self.cleanFire)) t.start()
def __init__(self): 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) p0 = Particles('particles-1') # Particles parameters p0.setFactory("ZSpinParticleFactory") p0.setRenderer("SpriteParticleRenderer") p0.setEmitter("LineEmitter") p0.setPoolSize(1024) p0.setBirthRate(0.3000) p0.setLitterSize(1) p0.setLitterSpread(0) p0.setSystemLifespan(0.0000) p0.setLocalVelocityFlag(0) p0.setSystemGrowsOlderFlag(0) # Factory parameters p0.factory.setLifespanBase(15.0000) p0.factory.setLifespanSpread(0.0000) p0.factory.setMassBase(1.0000) p0.factory.setMassSpread(0.0000) p0.factory.setTerminalVelocityBase(400.0000) p0.factory.setTerminalVelocitySpread(0.0000) # Z Spin factory parameters p0.factory.setInitialAngle(0.0000) p0.factory.setInitialAngleSpread(0.0000) p0.factory.enableAngularVelocity(1) p0.factory.setAngularVelocity(60.0000) p0.factory.setAngularVelocitySpread(10.0000) # Renderer parameters p0.renderer.setAlphaMode(BaseParticleRenderer.PRALPHAUSER) p0.renderer.setUserAlpha(0.20) # Sprite parameters p0.renderer.addTextureFromFile('./image/star_particle.png') p0.renderer.setColor(Vec4(1.00, 1.00, 1.00, 1.00)) p0.renderer.setXScaleFlag(0) p0.renderer.setYScaleFlag(0) p0.renderer.setAnimAngleFlag(1) p0.renderer.setInitialXScale(0.0500) p0.renderer.setInitialYScale(0.0500) p0.renderer.setNonanimatedTheta(0.0000) p0.renderer.setAlphaBlendMethod(BaseParticleRenderer.PPBLENDLINEAR) p0.renderer.setAlphaDisable(0) # Emitter parameters p0.emitter.setEmissionType(BaseParticleEmitter.ETEXPLICIT) p0.emitter.setAmplitude(0.1500) p0.emitter.setAmplitudeSpread(0.0500) p0.emitter.setOffsetForce(Vec3(0.0000, 0.0000, 0.0000)) p0.emitter.setExplicitLaunchVector(Vec3(0.0000, 0.0000, -1.0000)) p0.emitter.setRadiateOrigin(Point3(0.0000, 0.0000, 0.0000)) # Line parameters p0.emitter.setEndpoint1(Point3(-1.0000, 0.0000, 0.0000)) p0.emitter.setEndpoint2(Point3(1.0000, 0.0000, 0.0000)) self.addParticles(p0)
def load_particle_config(self): self.particles = ParticleEffect() self.particles.reset() self.particles.setPos(0.000, 0.000, 0.000) self.particles.setHpr(0.000, 0.000, 0.000) self.particles.setScale(1.000, 1.000, 1.000) p0 = Particles('particles-1') # Particles parameters p0.setFactory("PointParticleFactory") p0.setRenderer("SpriteParticleRenderer") p0.setEmitter("SphereVolumeEmitter") p0.setPoolSize(20) p0.setBirthRate(0.0100) p0.setLitterSize(20) p0.setLitterSpread(0) p0.setSystemLifespan(1.0100) p0.setLocalVelocityFlag(1) p0.setSystemGrowsOlderFlag(1) # Factory parameters p0.factory.setLifespanBase(1.0000) p0.factory.setLifespanSpread(0.0000) p0.factory.setMassBase(1.0000) p0.factory.setMassSpread(0.0100) p0.factory.setTerminalVelocityBase(1200.0000) p0.factory.setTerminalVelocitySpread(0.0000) # Point factory parameters # Renderer parameters p0.renderer.setAlphaMode(BaseParticleRenderer.PRALPHAOUT) p0.renderer.setUserAlpha(0.05) # Sprite parameters p0.renderer.setTexture(self.app.loader.loadTexture('effects/dust.png')) p0.renderer.setColor(Vec4(1.00, 0.10, 0.10, 0.50)) p0.renderer.setXScaleFlag(2) p0.renderer.setYScaleFlag(2) p0.renderer.setAnimAngleFlag(0) p0.renderer.setInitialXScale(0.100 * self.level) p0.renderer.setFinalXScale(0.200 * self.level) p0.renderer.setInitialYScale(0.100 * self.level) p0.renderer.setFinalYScale(0.200 * self.level) p0.renderer.setNonanimatedTheta(0.0000) p0.renderer.setAlphaBlendMethod(BaseParticleRenderer.PPBLENDLINEAR) p0.renderer.setAlphaDisable(0) # Emitter parameters p0.emitter.setEmissionType(BaseParticleEmitter.ETRADIATE) p0.emitter.setAmplitude(1.0000) p0.emitter.setAmplitudeSpread(0.0000) 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)) # Sphere Volume parameters p0.emitter.setRadius(0.1000) self.particles.addParticles(p0) f0 = ForceGroup('gravity') # Force parameters self.particles.addForceGroup(f0)
def setParticleConfig(self, filepath): if filepath is not None: # check if model file is in pandaModelPath filepath = str(Filename.fromOsSpecific(filepath)) # add the model path to the panda-path pandaPath = None from pandac.PandaModules import getModelPath for searchPath in str(getModelPath()).split(): if searchPath == filepath: pandaPath = searchPath if pandaPath is None: pandaPath = '/'.join(filepath.split('/')[:-1]) from pandac.PandaModules import getModelPath getModelPath().appendPath(pandaPath) self.particleFilename = filepath try: #Start of the code from steam.ptf self.particleSystem.loadConfig(Filename(filepath)) self.setFilepath(filepath) except: print "W: particleSystemWrapper.setParticleConfig: Error loading file" print " -", filepath traceback.print_exc() print " - Creating dummy particle Effect" # create new one if loading failed (particlepanel requires at least one particle) particles = Particles() particles.setBirthRate(0.02) particles.setLitterSize(10) particles.setLitterSpread(0) particles.setFactory("PointParticleFactory") particles.setRenderer("PointParticleRenderer") particles.setEmitter("SphereVolumeEmitter") particles.enable() self.particleSystem.addParticles(particles) self.clearFilepath() #Sets particles to birth relative to the teapot, but to render at toplevel self.particleSystem.start(self.getNodepath()) # a bugfix, somewhere must be some color assigned to most nodes, i dont know why # this looks very bad on particle systems self.getNodepath().setColorOff(0)
def setParticleConfig(self, filepath): if filepath is not None: # check if model file is in pandaModelPath filepath = str(Filename.fromOsSpecific(filepath)) # add the model path to the panda-path pandaPath = None from pandac.PandaModules import getModelPath for searchPath in str(getModelPath()).split(): if searchPath == filepath: pandaPath = searchPath if pandaPath is None: pandaPath = '/'.join(filepath.split('/')[:-1]) from pandac.PandaModules import getModelPath getModelPath().appendPath( pandaPath ) self.particleFilename = filepath try: #Start of the code from steam.ptf self.particleSystem.loadConfig(Filename(filepath)) self.setFilepath(filepath) except: print "W: particleSystemWrapper.setParticleConfig: Error loading file" print " -", filepath traceback.print_exc() print " - Creating dummy particle Effect" # create new one if loading failed (particlepanel requires at least one particle) particles = Particles() particles.setBirthRate(0.02) particles.setLitterSize(10) particles.setLitterSpread(0) particles.setFactory("PointParticleFactory") particles.setRenderer("PointParticleRenderer") particles.setEmitter("SphereVolumeEmitter") particles.enable() self.particleSystem.addParticles(particles) self.clearFilepath() #Sets particles to birth relative to the teapot, but to render at toplevel self.particleSystem.start(self.getNodepath()) # a bugfix, somewhere must be some color assigned to most nodes, i dont know why # this looks very bad on particle systems self.getNodepath().setColorOff(0)
def buildMainMenu(self): self.toggleCursor(False) start_game_button = DirectButton(text="Start", scale=.1, command=None) select_level_button = DirectButton(text="Select Level", scale=.1, command=None) game_options_button = DirectButton(text="Settings", scale=.1, command=None) exit_button = DirectButton(text="Exit", scale=.1, command=exit) BUTTON_SPACING = .2 BUTTON_HEIGHT = start_game_button.getSy() button_positions = self.evenButtonPositions(BUTTON_SPACING, BUTTON_HEIGHT, 4) start_game_button.setPos(Vec3(0, 0, button_positions[0])) select_level_button.setPos(Vec3(0, 0, button_positions[1])) game_options_button.setPos(Vec3(0, 0, button_positions[2])) exit_button.setPos(Vec3(0, 0, button_positions[3])) self.guiElements.append(start_game_button) self.guiElements.append(select_level_button) self.guiElements.append(game_options_button) self.guiElements.append(exit_button) particles = Particles() particles.setPoolSize(1000) particles.setBirthRate(.1) particles.setLitterSize(10) particles.setLitterSpread(3) particles.setFactory("PointParticleFactory") particles.setRenderer("PointParticleRenderer") particles.setEmitter("SphereVolumeEmitter") particles.enable() self.effect = ParticleEffect("peffect", particles) self.effect.reparentTo(render) #self.effect.setPos(self.avatar.objectNP.getX(), self.avatar.objectNP.getY(), self.avatar.objectNP.getZ() + 5) self.effect.setPos(-1, 0, 0) self.effect.enable()
def __init__(self): ShowBase.__init__(self) self.enableParticles() particles = Particles() particles.setPoolSize(1000) particles.setBirthRate(0.1) particles.setLitterSize(10) particles.setLitterSpread(3) particles.setFactory("PointParticleFactory") particles.setRenderer("GeomParticleRenderer") particles.setEmitter("SphereVolumeEmitter") smiley = loader.loadModel("smiley") smiley.setScale(0.1) particles.getRenderer().setGeomNode(smiley.node()) particles.enable() self.effect = ParticleEffect("peffect", particles) self.effect.reparentTo(render) self.effect.enable() self.cam.setPos(0, -10, 0)
def explode(self,cEntry): self.explosion = ParticleEffect() self.explosion.reset() self.explosion.setPos(cEntry.getIntoNodePath().getParent().getPos()) self.explosion.setHpr(0.000, 0.000, 0.000) self.explosion.setScale(10.000, 10.000, 10.000) p0 = Particles('particles-1') # Particles parameters p0.setFactory("PointParticleFactory") p0.setRenderer("LineParticleRenderer") p0.setEmitter("SphereVolumeEmitter") p0.setPoolSize(10000) p0.setBirthRate(0.0500) p0.setLitterSize(10000) p0.setLitterSpread(0) p0.setSystemLifespan(2.0000) p0.setLocalVelocityFlag(1) p0.setSystemGrowsOlderFlag(1) # Factory parameters p0.factory.setLifespanBase(2.0000) p0.factory.setLifespanSpread(0.0000) p0.factory.setMassBase(.5000) p0.factory.setMassSpread(0.0500) p0.factory.setTerminalVelocityBase(400.0000) p0.factory.setTerminalVelocitySpread(0.0000) # Point factory parameters # Renderer parameters p0.renderer.setAlphaMode(BaseParticleRenderer.PRALPHAOUT) p0.renderer.setUserAlpha(1.00) # Line parameters p0.renderer.setHeadColor(Vec4(1.00, 0.00, 0.00, 1.00)) p0.renderer.setTailColor(Vec4(1.00, 1.00, 0.00, 1.00)) p0.renderer.setLineScaleFactor(3.00) # Emitter parameters p0.emitter.setEmissionType(BaseParticleEmitter.ETRADIATE) p0.emitter.setAmplitude(10.0000) p0.emitter.setAmplitudeSpread(0.0000) p0.emitter.setOffsetForce(Vec3(0.0000, 0.0000, -0.4930)) p0.emitter.setExplicitLaunchVector(Vec3(1.0000, 0.0000, 0.0000)) p0.emitter.setRadiateOrigin(Point3(0.0000, 0.0000, 0.0000)) # Sphere Volume parameters p0.emitter.setRadius(0.5000) self.explosion.addParticles(p0) f0 = ForceGroup('gravity') # Force parameters self.explosion.addForceGroup(f0) cHandler = CollisionHandlerEvent() cHandler.addInPattern('%fn-into-%in') cSphereB = CollisionSphere(cEntry.getIntoNodePath().getParent().getPos(),1) cNodeB = CollisionNode("explosion") cNodeB.addSolid(cSphereB) cNodePathB = self.explosion.attachNewNode(cNodeB) self.cTrav.addCollider(cNodePathB,cHandler) cNodePathB.show() self.accept("player1-into-explosion",self.player2Wins) self.accept("player2-into-explosion",self.player1Wins) #f.reparentTo(self.playerModel) #self.explosion.setPos(self.playerModel.getPos()) t = Sequence(Func(self.explosion.start, render, render),Wait(2),Func(self.cleanExplo)) t.start() cEntry.getFromNodePath().getParent().removeNode()