def __init__(self, name=None, poolSize=1024): if (name == None): self.name = 'particles-%d' % Particles.id Particles.id += 1 else: self.name = name ParticleSystem.__init__(self, poolSize) # self.setBirthRate(0.02) # self.setLitterSize(10) # self.setLitterSpread(0) # Set up a physical node self.node = PhysicalNode(self.name) self.nodePath = NodePath(self.node) self.setRenderParent(self.node) self.node.addPhysical(self) self.factory = None self.factoryType = "undefined" # self.setFactory("PointParticleFactory") self.renderer = None self.rendererType = "undefined" # self.setRenderer("PointParticleRenderer") self.emitter = None self.emitterType = "undefined" # self.setEmitter("SphereVolumeEmitter") # Enable particles by default self.fEnabled = 0 #self.enable() self.geomReference = ""
def setRenderer(self, type): if (self.rendererType == type): return None if (self.renderer): self.renderer = None self.rendererType = type if (type == "PointParticleRenderer"): self.renderer = PointParticleRenderer() self.renderer.setPointSize(1.0) elif (type == "LineParticleRenderer"): self.renderer = LineParticleRenderer() elif (type == "GeomParticleRenderer"): self.renderer = GeomParticleRenderer() # This was moved here because we do not want to download # the direct tools with toontown. if __dev__: from panda3d.direct.directtools import DirectSelection npath = NodePath('default-geom') bbox = DirectSelection.DirectBoundingBox(npath) self.renderer.setGeomNode(bbox.lines.node()) elif (type == "SparkleParticleRenderer"): self.renderer = SparkleParticleRenderer() elif (type == "SpriteParticleRenderer"): self.renderer = SpriteParticleRendererExt.SpriteParticleRendererExt() # self.renderer.setTextureFromFile() else: print "unknown renderer type: %s" % type return None ParticleSystem.setRenderer(self, self.renderer)
def setEmitter(self, type): if (self.emitterType == type): return None if (self.emitter): self.emitter = None self.emitterType = type if (type == "ArcEmitter"): self.emitter = ArcEmitter() elif (type == "BoxEmitter"): self.emitter = BoxEmitter() elif (type == "DiscEmitter"): self.emitter = DiscEmitter() elif (type == "LineEmitter"): self.emitter = LineEmitter() elif (type == "PointEmitter"): self.emitter = PointEmitter() elif (type == "RectangleEmitter"): self.emitter = RectangleEmitter() elif (type == "RingEmitter"): self.emitter = RingEmitter() elif (type == "SphereSurfaceEmitter"): self.emitter = SphereSurfaceEmitter() elif (type == "SphereVolumeEmitter"): self.emitter = SphereVolumeEmitter() self.emitter.setRadius(1.0) elif (type == "TangentRingEmitter"): self.emitter = TangentRingEmitter() else: print "unknown emitter type: %s" % type return None ParticleSystem.setEmitter(self, self.emitter)
def setFactory(self, type): if (self.factoryType == type): return None if (self.factory): self.factory = None self.factoryType = type if (type == "PointParticleFactory"): self.factory = PointParticleFactory() elif (type == "ZSpinParticleFactory"): self.factory = ZSpinParticleFactory() elif (type == "OrientedParticleFactory"): self.factory = OrientedParticleFactory() else: print "unknown factory type: %s" % type return None self.factory.setLifespanBase(0.5) ParticleSystem.setFactory(self, self.factory)