mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 10:22:45 -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
|
self.particleEffect = None
|
||||||
|
|
||||||
def cleanup(self):
|
def cleanup(self):
|
||||||
for f in self.asList():
|
self.node.clear()
|
||||||
self.removeForce(f)
|
self.nodePath.removeNode()
|
||||||
self.nodePath.detachNode()
|
del self.nodePath
|
||||||
self.particleEffect = None
|
del self.node
|
||||||
|
del self.particleEffect
|
||||||
|
|
||||||
def enable(self):
|
def enable(self):
|
||||||
"""enable(self)
|
"""enable(self)
|
||||||
@ -78,9 +79,7 @@ class ForceGroup(DirectObject):
|
|||||||
def __getitem__(self, index):
|
def __getitem__(self, index):
|
||||||
"""__getItem__(self, index)"""
|
"""__getItem__(self, index)"""
|
||||||
numForces = self.node.getNumForces()
|
numForces = self.node.getNumForces()
|
||||||
if numForces == 0:
|
if ((index < 0) or (index >= numForces)):
|
||||||
raise IndexError
|
|
||||||
if ((index < 0) | (index >= self.node.getNumForces())):
|
|
||||||
raise IndexError
|
raise IndexError
|
||||||
return self.node.getForce(index)
|
return self.node.getForce(index)
|
||||||
|
|
||||||
|
@ -34,12 +34,15 @@ class ParticleEffect(NodePath):
|
|||||||
self.reparentTo(parent)
|
self.reparentTo(parent)
|
||||||
|
|
||||||
def cleanup(self):
|
def cleanup(self):
|
||||||
self.detachNode()
|
self.removeNode()
|
||||||
self.disable()
|
self.disable()
|
||||||
for f in self.forceGroupDict.values():
|
for f in self.forceGroupDict.values():
|
||||||
f.cleanup()
|
f.cleanup()
|
||||||
for p in self.particlesDict.values():
|
for p in self.particlesDict.values():
|
||||||
p.cleanup()
|
p.cleanup()
|
||||||
|
del self.renderParent
|
||||||
|
del self.particlesDict
|
||||||
|
del self.forceGroupDict
|
||||||
|
|
||||||
def reset(self):
|
def reset(self):
|
||||||
self.removeAllForces()
|
self.removeAllForces()
|
||||||
@ -83,8 +86,8 @@ class ParticleEffect(NodePath):
|
|||||||
self.forceGroupDict[forceGroup.getName()] = forceGroup
|
self.forceGroupDict[forceGroup.getName()] = forceGroup
|
||||||
|
|
||||||
# Associate the force group with all particles
|
# Associate the force group with all particles
|
||||||
for f in forceGroup.asList():
|
for i in range(len(forceGroup)):
|
||||||
self.addForce(f)
|
self.addForce(forceGroup[i])
|
||||||
|
|
||||||
def addForce(self, force):
|
def addForce(self, force):
|
||||||
"""addForce(force)"""
|
"""addForce(force)"""
|
||||||
@ -94,10 +97,10 @@ class ParticleEffect(NodePath):
|
|||||||
def removeForceGroup(self, forceGroup):
|
def removeForceGroup(self, forceGroup):
|
||||||
"""removeForceGroup(forceGroup)"""
|
"""removeForceGroup(forceGroup)"""
|
||||||
# Remove forces from all particles
|
# Remove forces from all particles
|
||||||
for f in forceGroup.asList():
|
for i in range(len(forceGroup)):
|
||||||
self.removeForce(f)
|
self.removeForce(forceGroup[i])
|
||||||
|
|
||||||
forceGroup.nodePath.detachNode()
|
forceGroup.nodePath.removeNode()
|
||||||
forceGroup.particleEffect = None
|
forceGroup.particleEffect = None
|
||||||
del self.forceGroupDict[forceGroup.getName()]
|
del self.forceGroupDict[forceGroup.getName()]
|
||||||
|
|
||||||
@ -117,8 +120,8 @@ class ParticleEffect(NodePath):
|
|||||||
|
|
||||||
# Associate all forces in all force groups with the particles
|
# Associate all forces in all force groups with the particles
|
||||||
for fg in self.forceGroupDict.values():
|
for fg in self.forceGroupDict.values():
|
||||||
for f in fg.asList():
|
for i in range(len(fg)):
|
||||||
particles.addForce(f)
|
particles.addForce(fg[i])
|
||||||
|
|
||||||
def removeParticles(self, particles):
|
def removeParticles(self, particles):
|
||||||
"""removeParticles(particles)"""
|
"""removeParticles(particles)"""
|
||||||
|
@ -72,11 +72,12 @@ class Particles(ParticleSystem.ParticleSystem):
|
|||||||
self.clearAngularForces()
|
self.clearAngularForces()
|
||||||
self.setRenderParent(self.node)
|
self.setRenderParent(self.node)
|
||||||
self.node.removePhysical(self)
|
self.node.removePhysical(self)
|
||||||
self.nodePath.detachNode()
|
self.nodePath.removeNode()
|
||||||
self.node = None
|
del self.node
|
||||||
self.factory = None
|
del self.nodePath
|
||||||
self.renderer = None
|
del self.factory
|
||||||
self.emitter = None
|
del self.renderer
|
||||||
|
del self.emitter
|
||||||
|
|
||||||
def enable(self):
|
def enable(self):
|
||||||
"""enable()"""
|
"""enable()"""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user