from pandac.PandaModules import SpriteParticleRenderer class SpriteParticleRendererExt(SpriteParticleRenderer): """ SpriteParticleRenderer-extensions module: contains methods to extend functionality of the SpriteParticleRenderer class """ # Initialize class variables for texture, source file and node for texture and # node path textures to None. These will be initialized to a hardcoded default # or whatever the user specifies in his/her Configrc variable the first time they # are accessed # Will use instance copy of this in functions below sourceTextureName = None sourceFileName = None sourceNodeName = None def getSourceTextureName(self): if self.sourceTextureName == None: SpriteParticleRendererExt.sourceTextureName = base.config.GetString( 'particle-sprite-texture', 'phase_3/maps/eyes.jpg') # Return instance copy of class variable return self.sourceTextureName def setSourceTextureName(self, name): # Set instance copy of class variable self.sourceTextureName = name def setTextureFromFile(self, fileName = None): if fileName == None: fileName = self.getSourceTextureName() else: self.setSourceTextureName(fileName) t = loader.loadTexture(fileName) if (t != None): self.setTexture(t,fileName) else: print "Couldn't find rendererSpriteTexture file: %s" % fileName def addTextureFromFile(self, fileName = None): if(self.getNumAnims == 0): self.setTextureFromFile(fileName) return if fileName == None: fileName = self.getSourceTextureName() t = loader.loadTexture(fileName) if (t != None): self.addTexture(t,fileName) else: print "Couldn't find rendererSpriteTexture file: %s" % fileName def getSourceFileName(self): if self.sourceFileName == None: SpriteParticleRendererExt.sourceFileName = base.config.GetString( 'particle-sprite-model', 'phase_3.5/models/props/suit-particles') # Return instance copy of class variable return self.sourceFileName def setSourceFileName(self, name): # Set instance copy of class variable self.sourceFileName = name def getSourceNodeName(self): if self.sourceNodeName == None: SpriteParticleRendererExt.sourceNodeName = base.config.GetString( 'particle-sprite-node', '**/fire') # Return instance copy of class variable return self.sourceNodeName def setSourceNodeName(self, name): # Set instance copy of class variable self.sourceNodeName = name def setTextureFromNode(self, modelName = None, nodeName = None, sizeFromTexels = True): if modelName == None: modelName = self.getSourceFileName() else: self.setSourceFileName(modelName) if nodeName == None: nodeName = self.getSourceNodeName() else: self.setSourceNodeName(nodeName) # Load model and get texture m = loader.loadModelOnce(modelName) if (m == None): print "SpriteParticleRendererExt: Couldn't find model: %s!" % modelName return None nodeName = self.getSourceNodeName() np = m.find(nodeName) if np.isEmpty(): print "SpriteParticleRendererExt: Couldn't find node: %s!" % nodeName m.removeNode() return None self.setFromNode(np, modelName, nodeName, sizeFromTexels) m.removeNode() def addTextureFromNode(self, modelName = None, nodeName = None, sizeFromTexels = True): if(self.getNumAnims == 0): self.setTextureFromNode(modelName,nodeName,sizeFromTexels) return if modelName == None: modelName = self.getSourceFileName() if nodeName == None: nodeName = self.getSourceNodeName() # Load model and get texture m = loader.loadModelOnce(modelName) if (m == None): print "SpriteParticleRendererExt: Couldn't find model: %s!" % modelName return None np = m.find(nodeName) if np.isEmpty(): print "SpriteParticleRendererExt: Couldn't find node: %s!" % nodeName m.removeNode() return None self.addFromNode(np, modelName, nodeName, sizeFromTexels) m.removeNode()