mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-01 09:23:03 -04:00
particle cleanup and optimizations
This commit is contained in:
parent
b2c42c3275
commit
5be70f9340
@ -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)
|
||||
|
||||
|
@ -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)"""
|
||||
|
@ -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()"""
|
||||
|
Loading…
x
Reference in New Issue
Block a user