diff --git a/direct/src/interval/Interval.py b/direct/src/interval/Interval.py index 2e6b843a96..958f299169 100644 --- a/direct/src/interval/Interval.py +++ b/direct/src/interval/Interval.py @@ -14,7 +14,6 @@ class Interval(DirectObject): # create Interval DirectNotify category notify = directNotify.newCategory("Interval") - #notify.setDebug(1) playbackCounter = 0 diff --git a/direct/src/particles/ForceGroup.py b/direct/src/particles/ForceGroup.py index 62e2b735c2..559543a1dc 100644 --- a/direct/src/particles/ForceGroup.py +++ b/direct/src/particles/ForceGroup.py @@ -3,17 +3,19 @@ from DirectObject import * from PhysicsManagerGlobal import * import ForceNode +import DirectNotifyGlobal class ForceGroup(DirectObject): - forceNum = 1 + notify = DirectNotifyGlobal.directNotify.newCategory('ForceGroup') + id = 1 def __init__(self, name = None): """__init__(self)""" if (name == None): - self.name = 'ForceGroup-%d' % self.forceNum - self.forceNum = self.forceNum + 1 + self.name = 'ForceGroup-%d' % ForceGroup.id + ForceGroup.id += 1 else: self.name = name @@ -24,7 +26,13 @@ class ForceGroup(DirectObject): self.particleEffect = None # Default to enabled - self.enable() + #self.enable() + + def cleanup(self): + self.disable() + self.nodePath.removeNode() + self.node = None + self.particleEffect = None def enable(self): """enable(self) diff --git a/direct/src/particles/ParticleEffect.py b/direct/src/particles/ParticleEffect.py index aba5f7e614..f94281ebf9 100644 --- a/direct/src/particles/ParticleEffect.py +++ b/direct/src/particles/ParticleEffect.py @@ -10,7 +10,7 @@ class ParticleEffect(NodePath): notify = DirectNotifyGlobal.directNotify.newCategory('ParticleEffect') id = 1 - def __init__(self, name=None): + def __init__(self, name=None, particles=None): """__init__()""" NodePath.__init__(self) if (name == None): @@ -25,7 +25,17 @@ class ParticleEffect(NodePath): self.particlesDict = {} self.forceGroupDict = {} # The effect's particle system - self.addParticles(Particles.Particles()) + if (particles != None): + self.addParticles(particles) + + def cleanup(self): + for f in self.forceGroupDict.values(): + f.cleanup() + for p in self.particlesDict.values(): + p.cleanup() + forceGroupDict = {} + particlesDict = {} + self.removeNode() def enable(self): """enable()""" diff --git a/direct/src/particles/Particles.py b/direct/src/particles/Particles.py index 933fe6690c..068847f4b6 100644 --- a/direct/src/particles/Particles.py +++ b/direct/src/particles/Particles.py @@ -67,7 +67,17 @@ class Particles(ParticleSystem.ParticleSystem): # Enable particles by default self.fEnabled = 0 - self.enable() + #self.enable() + + def cleanup(self): + self.disable() + self.setRenderParent(self.node) + self.node.removePhysical(self) + self.nodePath.removeNode() + self.node = None + self.factory = None + self.renderer = None + self.emitter = None def enable(self): """enable()""" @@ -86,6 +96,9 @@ class Particles(ParticleSystem.ParticleSystem): def isEnabled(self): return self.fEnabled + def getNode(self): + return self.node + def setFactory(self, type): """setFactory(type)""" if (self.factoryType == type): diff --git a/direct/src/tkpanels/ParticlePanel.py b/direct/src/tkpanels/ParticlePanel.py index 0d7ce0ae2c..1ab3871250 100644 --- a/direct/src/tkpanels/ParticlePanel.py +++ b/direct/src/tkpanels/ParticlePanel.py @@ -37,7 +37,8 @@ class ParticlePanel(AppShell): self.particleEffect = particleEffect else: # Or create a new one if none given - pe = ParticleEffect.ParticleEffect('effect-1') + particles = Particles.Particles() + pe = ParticleEffect.ParticleEffect('effect-1', particles) self.particleEffect = pe pe.reparentTo(render) pe.enable()