*** empty log message ***
This commit is contained in:
parent
c4902890a0
commit
44cdf7429a
|
|
@ -0,0 +1,50 @@
|
|||
|
||||
"""
|
||||
SpriteParticleRenderer-extensions module: contains methods to extend functionality
|
||||
of the SpriteParticleRenderer class
|
||||
"""
|
||||
|
||||
# Initialize class variable for source file and node for node path textures
|
||||
# Will use instance copy of this in functions below
|
||||
sourceFileName = 'models/directmodels/smiley'
|
||||
sourceNodeName = 'Happy'
|
||||
|
||||
def getSourceFileName(self):
|
||||
# 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):
|
||||
# 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):
|
||||
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 "SpriteParticleRenderer: Couldn't find model: %s!" % modelName
|
||||
return None
|
||||
nodeName = self.renderer.getSourceNodeName()
|
||||
np = m.find(nodeName)
|
||||
if np.isEmpty():
|
||||
print "SpriteParticleRenderer: Couldn't find node: %s!" % nodeName
|
||||
return None
|
||||
self.renderer.setNodePath(np)
|
||||
m.removeNode()
|
||||
|
||||
|
||||
|
|
@ -27,9 +27,6 @@ import string
|
|||
import os
|
||||
import DirectNotifyGlobal
|
||||
|
||||
SparkleParticleRenderer.SparkleParticleRenderer.SPNOSCALE = 0
|
||||
SparkleParticleRenderer.SparkleParticleRenderer.SPSCALE = 1
|
||||
|
||||
class Particles(ParticleSystem.ParticleSystem):
|
||||
|
||||
notify = DirectNotifyGlobal.directNotify.newCategory('Particles')
|
||||
|
|
@ -143,11 +140,17 @@ class Particles(ParticleSystem.ParticleSystem):
|
|||
self.renderer = SparkleParticleRenderer.SparkleParticleRenderer()
|
||||
elif (type == "SpriteParticleRenderer"):
|
||||
self.renderer = SpriteParticleRenderer.SpriteParticleRenderer()
|
||||
t = loader.loadTexture('phase_3/maps/eyes.jpg')
|
||||
if (t == None):
|
||||
print "Couldn't find default texture: evil_eye.rgb!"
|
||||
return None
|
||||
self.renderer.setTexture(t)
|
||||
if (self.renderer.getSourceType() ==
|
||||
SpriteParticleRenderer.SpriteParticleRenderer.STTexture):
|
||||
t = loader.loadTexture('phase_3/maps/eyes.jpg')
|
||||
if (t == None):
|
||||
print "Couldn't find default texture: evil_eye.rgb!"
|
||||
return None
|
||||
self.renderer.setTexture(t)
|
||||
else:
|
||||
# Use default model file and node
|
||||
# See SpriteParticleRenderer-extensions.py
|
||||
self.renderer.setTextureFromNode()
|
||||
else:
|
||||
print "unknown renderer type: %s" % type
|
||||
return None
|
||||
|
|
@ -340,8 +343,14 @@ class Particles(ParticleSystem.ParticleSystem):
|
|||
file.write(targ + '.renderer.setLifeScale(SparkleParticleRenderer.' + lScale + ')\n')
|
||||
elif (self.rendererType == "SpriteParticleRenderer"):
|
||||
file.write('# Sprite parameters\n')
|
||||
tex = self.renderer.getTexture()
|
||||
file.write(targ + '.renderer.setTexture(loader.loadTexture(\'' + tex.getName() + '\'))\n')
|
||||
if (self.renderer.getSourceType() ==
|
||||
SpriteParticleRenderer.SpriteParticleRenderer.STTexture):
|
||||
tex = self.renderer.getTexture()
|
||||
file.write(targ + '.renderer.setTexture(loader.loadTexture(\'' + tex.getName() + '\'))\n')
|
||||
else:
|
||||
modelName = self.renderer.getSourceFileName()
|
||||
nodeName = self.renderer.getSourceNodeName()
|
||||
file.write(targ + '.renderer.setTextureFromNode(%s, %s)' % (modelName, nodeName))
|
||||
sColor = self.renderer.getColor()
|
||||
file.write((targ + '.renderer.setColor(Vec4(%.2f, %.2f, %.2f, %.2f))\n' % (sColor[0], sColor[1], sColor[2], sColor[3])))
|
||||
file.write(targ + '.renderer.setXScaleFlag(%d)\n' % self.renderer.getXScaleFlag())
|
||||
|
|
|
|||
|
|
@ -548,32 +548,69 @@ class ParticlePanel(AppShell):
|
|||
# Sprite #
|
||||
spritePage = self.rendererNotebook.add('SpriteParticleRenderer')
|
||||
f = Frame(spritePage)
|
||||
Label(f, width = 12, text = 'Texture Type:').pack(side = LEFT)
|
||||
self.rendererSpriteSourceType = IntVar()
|
||||
self.rendererSpriteSourceType.set(SpriteParticleRenderer.STTexture)
|
||||
self.rendererSpriteSTTexture = self.createRadiobutton(
|
||||
f, 'left',
|
||||
'Sprite Renderer', 'Texture Type',
|
||||
'Sprite particle renderer created from texture file',
|
||||
self.rendererSpriteSourceType, SpriteParticleRenderer.STTexture,
|
||||
self.setSpriteSourceType)
|
||||
self.rendererSpriteSTTexture = self.createRadiobutton(
|
||||
f, 'left',
|
||||
'Sprite Renderer', 'NodePath Type',
|
||||
'Sprite particle renderer created from node path',
|
||||
self.rendererSpriteSourceType, SpriteParticleRenderer.STFromNode,
|
||||
self.setSpriteSourceType)
|
||||
f.pack(fill = X)
|
||||
Label(f, width = 12, text = 'Texture').pack(side = LEFT)
|
||||
f = Frame(spritePage)
|
||||
Label(f, width = 6, text = 'Texture:').pack(side = LEFT)
|
||||
self.rendererSpriteTexture = StringVar()
|
||||
self.rendererSpriteTexture.set('phase_3/maps/eyes.jpg')
|
||||
self.rendererSpriteTextureEntry = Entry(
|
||||
f, width = 12,
|
||||
textvariable = self.rendererSpriteTexture)
|
||||
self.rendererSpriteTextureEntry.bind(
|
||||
'<Return>', self.setRendererSpriteTexture)
|
||||
self.rendererSpriteTextureEntry.pack(
|
||||
side = LEFT, expand = 1, fill = X)
|
||||
self.rendererSpriteTextureEntry.pack(side = LEFT, expand = 1, fill = X)
|
||||
f.pack(fill = X)
|
||||
f = Frame(spritePage)
|
||||
Label(f, width = 6, text = 'File:').pack(side = LEFT)
|
||||
self.rendererSpriteFile = StringVar()
|
||||
self.rendererSpriteFile.set(SpriteParticleRenderer.sourceFileName)
|
||||
self.rendererSpriteFileEntry = Entry(
|
||||
f, width = 12,
|
||||
textvariable = self.rendererSpriteFile)
|
||||
self.rendererSpriteFileEntry.pack(side = LEFT, expand = 1, fill = X)
|
||||
Label(f, width = 6, text = 'Node:').pack(side = LEFT)
|
||||
self.rendererSpriteNode = StringVar()
|
||||
self.rendererSpriteNode.set(SpriteParticleRenderer.sourceNodeName)
|
||||
self.rendererSpriteNodeEntry = Entry(
|
||||
f, width = 6,
|
||||
textvariable = self.rendererSpriteNode)
|
||||
self.rendererSpriteNodeEntry.pack(side = LEFT, expand = 1, fill = X)
|
||||
f.pack(fill = X)
|
||||
# Init entries
|
||||
self.setSpriteSourceType()
|
||||
self.setTextureButton = Button(spritePage, text = 'Set Texture',
|
||||
command = self.setRendererSpriteTexture)
|
||||
self.setTextureButton.pack(fill = X)
|
||||
f = Frame(spritePage)
|
||||
self.createCheckbutton(
|
||||
spritePage, 'Sprite Renderer', 'X Scale',
|
||||
f, 'Sprite Renderer', 'X Scale',
|
||||
("On: x scale is interpolated over particle's life; " +
|
||||
"Off: stays as start_X_Scale"),
|
||||
self.toggleRendererSpriteXScale, 0)
|
||||
self.toggleRendererSpriteXScale, 0, side = LEFT)
|
||||
self.createCheckbutton(
|
||||
spritePage, 'Sprite Renderer', 'Y Scale',
|
||||
f, 'Sprite Renderer', 'Y Scale',
|
||||
("On: y scale is interpolated over particle's life; " +
|
||||
"Off: stays as start_Y_Scale"),
|
||||
self.toggleRendererSpriteYScale, 0)
|
||||
self.toggleRendererSpriteYScale, 0, side = LEFT)
|
||||
self.createCheckbutton(
|
||||
spritePage, 'Sprite Renderer', 'Anim Angle',
|
||||
f, 'Sprite Renderer', 'Anim Angle',
|
||||
("On: particles that are set to spin on the Z axis will " +
|
||||
"spin appropriately"),
|
||||
self.toggleRendererSpriteAnimAngle, 0)
|
||||
self.toggleRendererSpriteAnimAngle, 0, side = LEFT)
|
||||
f.pack(fill = X)
|
||||
self.createFloater(spritePage, 'Sprite Renderer',
|
||||
'Initial X Scale',
|
||||
'Initial X scaling factor',
|
||||
|
|
@ -663,14 +700,14 @@ class ParticlePanel(AppShell):
|
|||
|
||||
### WIDGET UTILITY FUNCTIONS ###
|
||||
def createCheckbutton(self, parent, category, text,
|
||||
balloonHelp, command, initialState):
|
||||
balloonHelp, command, initialState, side = 'top'):
|
||||
bool = BooleanVar()
|
||||
bool.set(initialState)
|
||||
widget = Checkbutton(parent, text = text, anchor = W,
|
||||
variable = bool)
|
||||
# Do this after the widget so command isn't called on creation
|
||||
widget['command'] = command
|
||||
widget.pack(fill = X)
|
||||
widget.pack(fill = X, side = side)
|
||||
self.bind(widget, balloonHelp)
|
||||
self.widgetDict[category + '-' + text] = widget
|
||||
self.variableDict[category + '-' + text] = bool
|
||||
|
|
@ -1521,12 +1558,31 @@ class ParticlePanel(AppShell):
|
|||
lScale = SparkleParticleRenderer.SPSCALE
|
||||
self.particles.renderer.setLifeScale(lScale)
|
||||
# Sprite #
|
||||
def setRendererSpriteTexture(self, event):
|
||||
t = loader.loadTexture(self.rendererSpriteTexture.get())
|
||||
if (t != None):
|
||||
self.particles.renderer.setTexture(t)
|
||||
else:
|
||||
print "Couldn't find rendererSpriteTexture"
|
||||
def setSpriteSourceType(self):
|
||||
if self.rendererSpriteSourceType.get() == SpriteParticleRenderer.STTexture:
|
||||
self.rendererSpriteTextureEntry['state'] = 'normal'
|
||||
self.rendererSpriteFileEntry['state'] = 'disabled'
|
||||
self.rendererSpriteNodeEntry['state'] = 'disabled'
|
||||
self.rendererSpriteTextureEntry['background'] = 'SystemWindow'
|
||||
self.rendererSpriteFileEntry['background'] = '#C0C0C0'
|
||||
self.rendererSpriteNodeEntry['background'] = '#C0C0C0'
|
||||
else:
|
||||
self.rendererSpriteTextureEntry['state'] = 'disabled'
|
||||
self.rendererSpriteFileEntry['state'] = 'normal'
|
||||
self.rendererSpriteNodeEntry['state'] = 'normal'
|
||||
self.rendererSpriteTextureEntry['background'] = '#C0C0C0'
|
||||
self.rendererSpriteFileEntry['background'] = 'SystemWindow'
|
||||
self.rendererSpriteNodeEntry['background'] = 'SystemWindow'
|
||||
def setRendererSpriteTexture(self):
|
||||
if self.rendererSpriteSourceType.get() == SpriteParticleRenderer.STTexture:
|
||||
t = loader.loadTexture(self.rendererSpriteTexture.get())
|
||||
if (t != None):
|
||||
self.particles.renderer.setTexture(t)
|
||||
else:
|
||||
print "Couldn't find rendererSpriteTexture"
|
||||
else:
|
||||
self.particles.renderer.setTextureFromNode(
|
||||
self.rendererSpriteFile.get(), self.rendererSpriteNode.get())
|
||||
def toggleRendererSpriteXScale(self):
|
||||
self.particles.renderer.setXScaleFlag(
|
||||
self.getVariable('Sprite Renderer', 'X Scale').get())
|
||||
|
|
|
|||
Loading…
Reference in New Issue