Updated to better handle failed source loads for the spriteParticleRenderer.

This commit is contained in:
Josh Wilson 2005-09-28 22:23:44 +00:00
parent fa89b32ba1
commit 479e3d39c5
1 changed files with 37 additions and 45 deletions

View File

@ -663,26 +663,8 @@ class ParticlePanel(AppShell):
rendererSpriteScalePage = rendererSpriteNotebook.add('Scale')
rendererSpriteBlendPage = rendererSpriteNotebook.add('Blend')
rendererSpriteInterpolationPage = rendererSpriteNotebook.add('Interpolate')
# p = Frame(rendererSpriteTexturePage)
# p.pack(fill = X)
# Label(p, width = 12, text = 'Texture Type:').pack(side = LEFT)
# self.rendererSpriteSourceType = IntVar()
# self.rendererSpriteSourceType.set(0)
# self.rendererSpriteSTTexture = self.createRadiobutton(
# p, 'left',
# 'Sprite Renderer', 'Texture Type',
# 'Sprite particle renderer created from texture file',
# self.rendererSpriteSourceType, 0,
# self.setSpriteSourceType)
# self.rendererSpriteSTTexture = self.createRadiobutton(
# p, 'left',
# 'Sprite Renderer', 'NodePath Type',
# 'Sprite particle renderer created from node path',
# self.rendererSpriteSourceType, 1,
# self.setSpriteSourceType)
# self.rendererSpriteSTTexture.pack(side = LEFT, expand = 1, fill = X)
##################################################################################
p = Frame(rendererSpriteTexturePage)
p.pack(fill = BOTH, expand = 1)
@ -1829,13 +1811,13 @@ class ParticlePanel(AppShell):
parent = self.rendererSpriteAnimationFrame
if ren.addTextureFromFile():
animId = len(self.rendererSpriteAnimationWidgetList)
animId = len([x for x in self.rendererSpriteAnimationWidgetList if x and x.valid])
anim = ren.getAnim(animId)
self.rendererSpriteAnimationWidgetList.append(
self.createSpriteAnimationTextureWidget(parent,anim,`animId`))
else:
animId = len(self.rendererSpriteAnimationWidgetList)
animId = len([x for x in self.rendererSpriteAnimationWidgetList if x and x.valid])
anim = SpriteAnim.STTexture
self.rendererSpriteAnimationWidgetList.append(
self.createSpriteAnimationTextureWidget(parent,anim,`animId`))
@ -1845,13 +1827,13 @@ class ParticlePanel(AppShell):
parent = self.rendererSpriteAnimationFrame
if ren.addTextureFromNode():
animId = len(self.rendererSpriteAnimationWidgetList)
animId = len([x for x in self.rendererSpriteAnimationWidgetList if x and x.valid])
anim = ren.getAnim(animId)
self.rendererSpriteAnimationWidgetList.append(
self.createSpriteAnimationNodeWidget(parent,anim,`animId`))
else:
animId = len(self.rendererSpriteAnimationWidgetList)
animId = len([x for x in self.rendererSpriteAnimationWidgetList if x and x.valid])
anim = SpriteAnim.STFromNode
self.rendererSpriteAnimationWidgetList.append(
self.createSpriteAnimationNodeWidget(parent,anim,`animId`))
@ -2202,14 +2184,14 @@ class ParticlePanel(AppShell):
if(anim == SpriteAnim.STTexture or
anim == SpriteAnim.STFromNode):
frame.ready = False
frame.valid = False
frame.animSourceType = anim
if(anim == SpriteAnim.STTexture):
type = 'Texture'
else:
type = 'From Node'
else:
frame.ready = True
frame.valid = True
if(anim.getSourceType()==SpriteAnim.STTexture):
frame.animSourceType = SpriteAnim.STTexture
@ -2234,7 +2216,7 @@ class ParticlePanel(AppShell):
Label(f, text = 'Texture: ', font = ('MSSansSerif',12), width=7).pack(side = LEFT)
strVar = StringVar()
entry = Entry(f,textvariable = strVar).pack(padx=3, pady=3,side=LEFT,fill=X,expand=1)
if frame.ready:
if frame.valid:
strVar.set(anim.getTexSource())
else:
strVar.set('Base model path: ' + `getModelPath().getValue()`)
@ -2242,7 +2224,9 @@ class ParticlePanel(AppShell):
def checkForTexture(strVar = strVar):
tex = loader.loadTexture(strVar.get())
if tex:
frame.ready = True
frame.valid = True
else:
frame.valid = False
self.writeSpriteRendererAnimations()
Button(f, text = 'Update',
@ -2263,7 +2247,7 @@ class ParticlePanel(AppShell):
Label(lf, text = 'Model: ', font = ('MSSansSerif',12), width=7).pack(side = LEFT)
mStrVar = StringVar()
entry = Entry(lf,textvariable = mStrVar).pack(padx=3, pady=3,side=LEFT,fill=X,expand=1)
if frame.ready:
if frame.valid:
mStrVar.set(anim.getModelSource())
else:
mStrVar.set('Base model path: ' + `getModelPath().getValue()`)
@ -2278,7 +2262,7 @@ class ParticlePanel(AppShell):
Label(lf, text = 'Node: ', font = ('MSSansSerif',12), width=7).pack(side = LEFT)
nStrVar = StringVar()
entry = Entry(lf,textvariable = nStrVar).pack(padx=3, pady=3,side=LEFT,fill=X,expand=1)
if frame.ready:
if frame.valid:
nStrVar.set(anim.getNodeSource())
else:
nStrVar.set('**/*')
@ -2292,7 +2276,12 @@ class ParticlePanel(AppShell):
if mod:
node = mod.find(nodeStrVar.get())
if node:
frame.ready = True
frame.valid = True
else:
frame.valid = False
else:
frame.valid = False
self.writeSpriteRendererAnimations()
Button(mlf, text = 'Update',
@ -2302,6 +2291,7 @@ class ParticlePanel(AppShell):
return frame
# get animation info from renderer into panel
def readSpriteRendererAnimations(self):
ren = self.particles.getRenderer()
@ -2318,28 +2308,30 @@ class ParticlePanel(AppShell):
else:
w = self.createSpriteAnimationNodeWidget(self.rendererSpriteAnimationFrame,anim,`len(self.rendererSpriteAnimationWidgetList)`)
self.rendererSpriteAnimationWidgetList.append(w)
# set animation info from panel into renderer
def writeSpriteRendererAnimations(self):
ren = self.particles.getRenderer()
for x in range(ren.getNumAnims()):
ren.removeAnimation(0)
widgetList = [x for x in self.rendererSpriteAnimationWidgetList if x and x.ready]
for x in range(len(widgetList)):
if(self.rendererSpriteAnimationWidgetList[x].animSourceType == SpriteAnim.STTexture):
texSource = self.getVariable('Sprite Renderer', `x` + ' Anim Texture').get()
if(x == 0):
ren.setTextureFromFile(texSource)
for x in range(len(self.rendererSpriteAnimationWidgetList)):
widget = self.rendererSpriteAnimationWidgetList[x]
if(widget and widget.valid):
if(widget.animSourceType == SpriteAnim.STTexture):
texSource = self.getVariable('Sprite Renderer', `x` + ' Anim Texture').get()
if(x == 0):
ren.setTextureFromFile(texSource)
else:
ren.addTextureFromFile(texSource)
else:
ren.addTextureFromFile(texSource)
else:
modelSource = self.getVariable('Sprite Renderer', `x` + ' Anim Model').get()
nodeSource = self.getVariable('Sprite Renderer', `x` + ' Anim Node').get()
if(x == 0):
ren.setTextureFromNode(modelSource,nodeSource)
else:
ren.addTextureFromNode(modelSource,nodeSource)
modelSource = self.getVariable('Sprite Renderer', `x` + ' Anim Model').get()
nodeSource = self.getVariable('Sprite Renderer', `x` + ' Anim Node').get()
if(x == 0):
ren.setTextureFromNode(modelSource,nodeSource)
else:
ren.addTextureFromNode(modelSource,nodeSource)
## FORCEGROUP COMMANDS ##
def updateForceWidgets(self):