diff --git a/direct/src/particles/ForceGroup.py b/direct/src/particles/ForceGroup.py index 97e41c74b2..1f062480af 100644 --- a/direct/src/particles/ForceGroup.py +++ b/direct/src/particles/ForceGroup.py @@ -27,10 +27,11 @@ class ForceGroup(DirectObject): self.particleEffect = None def cleanup(self): - for f in self.asList(): - self.removeForce(f) - self.nodePath.detachNode() - self.particleEffect = None + self.node.clear() + self.nodePath.removeNode() + del self.nodePath + del self.node + del self.particleEffect def enable(self): """enable(self) @@ -78,9 +79,7 @@ class ForceGroup(DirectObject): def __getitem__(self, index): """__getItem__(self, index)""" numForces = self.node.getNumForces() - if numForces == 0: - raise IndexError - if ((index < 0) | (index >= self.node.getNumForces())): + if ((index < 0) or (index >= numForces)): raise IndexError return self.node.getForce(index) diff --git a/direct/src/particles/ParticleEffect.py b/direct/src/particles/ParticleEffect.py index 5904b9c6cd..b18893f5d2 100644 --- a/direct/src/particles/ParticleEffect.py +++ b/direct/src/particles/ParticleEffect.py @@ -34,12 +34,15 @@ class ParticleEffect(NodePath): self.reparentTo(parent) def cleanup(self): - self.detachNode() + self.removeNode() self.disable() for f in self.forceGroupDict.values(): f.cleanup() for p in self.particlesDict.values(): p.cleanup() + del self.renderParent + del self.particlesDict + del self.forceGroupDict def reset(self): self.removeAllForces() @@ -83,8 +86,8 @@ class ParticleEffect(NodePath): self.forceGroupDict[forceGroup.getName()] = forceGroup # Associate the force group with all particles - for f in forceGroup.asList(): - self.addForce(f) + for i in range(len(forceGroup)): + self.addForce(forceGroup[i]) def addForce(self, force): """addForce(force)""" @@ -94,10 +97,10 @@ class ParticleEffect(NodePath): def removeForceGroup(self, forceGroup): """removeForceGroup(forceGroup)""" # Remove forces from all particles - for f in forceGroup.asList(): - self.removeForce(f) + for i in range(len(forceGroup)): + self.removeForce(forceGroup[i]) - forceGroup.nodePath.detachNode() + forceGroup.nodePath.removeNode() forceGroup.particleEffect = None del self.forceGroupDict[forceGroup.getName()] @@ -117,8 +120,8 @@ class ParticleEffect(NodePath): # Associate all forces in all force groups with the particles for fg in self.forceGroupDict.values(): - for f in fg.asList(): - particles.addForce(f) + for i in range(len(fg)): + particles.addForce(fg[i]) def removeParticles(self, particles): """removeParticles(particles)""" diff --git a/direct/src/particles/Particles.py b/direct/src/particles/Particles.py index 9873f7ba8d..06a9d54e7a 100644 --- a/direct/src/particles/Particles.py +++ b/direct/src/particles/Particles.py @@ -72,11 +72,12 @@ class Particles(ParticleSystem.ParticleSystem): self.clearAngularForces() self.setRenderParent(self.node) self.node.removePhysical(self) - self.nodePath.detachNode() - self.node = None - self.factory = None - self.renderer = None - self.emitter = None + self.nodePath.removeNode() + del self.node + del self.nodePath + del self.factory + del self.renderer + del self.emitter def enable(self): """enable()"""