replacing particleEffect.cleanup() with particleEffect.disable() in ParticleInterval.cleanup(). This should allow us to reuse pooled effects in subsequent different particle intervals. Also, printing a more helpful error message when trying to use an already cleaned up ParticleEffect
This commit is contained in:
parent
d5a4a52182
commit
9fcac8b39c
|
|
@ -136,6 +136,6 @@ class ParticleInterval(Interval):
|
|||
def privFinalize(self):
|
||||
Interval.privFinalize(self)
|
||||
if self.cleanup and self.particleEffect:
|
||||
self.particleEffect.cleanup()
|
||||
self.particleEffect.disable()
|
||||
self.particleEffect = None
|
||||
|
||||
|
|
|
|||
|
|
@ -28,13 +28,12 @@ class ParticleEffect(NodePath):
|
|||
def cleanup(self):
|
||||
self.removeNode()
|
||||
self.disable()
|
||||
if hasattr(self, 'forceGroupDict'):
|
||||
if self.__isValid():
|
||||
for f in self.forceGroupDict.values():
|
||||
f.cleanup()
|
||||
del self.forceGroupDict
|
||||
if hasattr(self, 'particlesDict'):
|
||||
for p in self.particlesDict.values():
|
||||
p.cleanup()
|
||||
del self.forceGroupDict
|
||||
del self.particlesDict
|
||||
del self.renderParent
|
||||
|
||||
|
|
@ -53,7 +52,7 @@ class ParticleEffect(NodePath):
|
|||
|
||||
def enable(self):
|
||||
# band-aid added for client crash - grw
|
||||
if hasattr(self, 'forceGroupDict') and hasattr(self, 'particlesDict'):
|
||||
if self.__isValid():
|
||||
if (self.renderParent != None):
|
||||
for p in self.particlesDict.values():
|
||||
p.setRenderParent(self.renderParent.node())
|
||||
|
|
@ -66,7 +65,7 @@ class ParticleEffect(NodePath):
|
|||
def disable(self):
|
||||
self.detachNode()
|
||||
# band-aid added for client crash - grw
|
||||
if hasattr(self, 'forceGroupDict') and hasattr(self, 'particlesDict'):
|
||||
if self.__isValid():
|
||||
for p in self.particlesDict.values():
|
||||
p.setRenderParent(p.node)
|
||||
for f in self.forceGroupDict.values():
|
||||
|
|
@ -101,7 +100,7 @@ class ParticleEffect(NodePath):
|
|||
|
||||
forceGroup.nodePath.removeNode()
|
||||
forceGroup.particleEffect = None
|
||||
del self.forceGroupDict[forceGroup.getName()]
|
||||
self.forceGroupDict.pop(forceGroup.getName(), None)
|
||||
|
||||
def removeForce(self, force):
|
||||
for p in self.particlesDict.values():
|
||||
|
|
@ -125,7 +124,7 @@ class ParticleEffect(NodePath):
|
|||
self.notify.warning('removeParticles() - particles == None!')
|
||||
return
|
||||
particles.nodePath.detachNode()
|
||||
del self.particlesDict[particles.getName()]
|
||||
self.particlesDict.pop(particles.getName(), None)
|
||||
|
||||
# Remove all forces from the particles
|
||||
for fg in self.forceGroupDict.values():
|
||||
|
|
@ -216,5 +215,14 @@ class ParticleEffect(NodePath):
|
|||
particles.softStop()
|
||||
|
||||
def softStart(self):
|
||||
for particles in self.getParticlesList():
|
||||
particles.softStart()
|
||||
if self.__isValid():
|
||||
for particles in self.getParticlesList():
|
||||
particles.softStart()
|
||||
else:
|
||||
# Not asserting here since we want to crash live clients for more expedient bugfix
|
||||
# (Sorry, live clients)
|
||||
self.notify.error('Trying to start effect(%s) after cleanup.' % (self.getName(),))
|
||||
|
||||
def __isValid(self):
|
||||
return hasattr(self, 'forceGroupDict') and \
|
||||
hasattr(self, 'particlesDict')
|
||||
|
|
|
|||
Loading…
Reference in New Issue