*** empty log message ***

This commit is contained in:
Mike Goslin 2001-06-01 18:26:36 +00:00
parent 88afd02c4e
commit 21ae42085a
3 changed files with 36 additions and 21 deletions

View File

@ -10,7 +10,7 @@ class ForceGroup(DirectObject):
notify = DirectNotifyGlobal.directNotify.newCategory('ForceGroup')
id = 1
def __init__(self, name = None):
def __init__(self, name=None):
"""__init__(self)"""
if (name == None):
@ -24,12 +24,10 @@ class ForceGroup(DirectObject):
self.fEnabled = 0
self.particleEffect = None
# Default to enabled
#self.enable()
def cleanup(self):
self.disable()
for f in self.asList():
self.removeForce(f)
self.nodePath.removeNode()
self.node = None
self.particleEffect = None
@ -62,7 +60,7 @@ class ForceGroup(DirectObject):
def removeForce(self, force):
"""removeForce(self, force)"""
self.node.removeForce(force)
if (self.particleEffect):
if (self.particleEffect != None):
self.particleEffect.removeForce(force)
# Get/set

View File

@ -37,6 +37,12 @@ class ParticleEffect(NodePath):
particlesDict = {}
self.removeNode()
def reset(self):
self.removeAllForces()
self.removeAllParticles()
self.forceGroupDict = {}
self.particlesDict = {}
def enable(self):
"""enable()"""
for f in self.forceGroupDict.values():
@ -67,7 +73,7 @@ class ParticleEffect(NodePath):
self.forceGroupDict[forceGroup.getName()] = forceGroup
# Associate the force group with all particles
for f in forceGroup:
for f in forceGroup.asList():
self.addForce(f)
def addForce(self, force):
@ -77,19 +83,23 @@ class ParticleEffect(NodePath):
def removeForceGroup(self, forceGroup):
"""removeForceGroup(forceGroup)"""
# Remove forces from all particles
for f in forceGroup.asList():
self.removeForce(f)
forceGroup.nodePath.reparentTo(hidden)
forceGroup.particleEffect = None
self.forceGroupDict[forceGroup.getName()] = None
# Remove forces from all particles
for f in forceGroup:
self.removeForce(f)
del self.forceGroupDict[forceGroup.getName()]
def removeForce(self, force):
"""removeForce(force)"""
for p in self.particlesDict.values():
p.removeForce(force)
def removeAllForces(self):
for fg in self.forceGroupDict.values():
self.removeForceGroup(fg)
def addParticles(self, particles):
"""addParticles(particles)"""
particles.nodePath.reparentTo(self)
@ -97,19 +107,26 @@ class ParticleEffect(NodePath):
# Associate all forces in all force groups with the particles
for fg in self.forceGroupDict.values():
for f in fg:
for f in fg.asList():
particles.addForce(f)
def removeParticles(self, particles):
"""removeParticles(particles)"""
if (particles == None):
self.notify.warning('removeParticles() - particles == None!')
return
particles.nodePath.reparentTo(hidden)
self.particlesDict[particles.getName()] = None
del self.particlesDict[particles.getName()]
# Remove all forces from the particles
for fg in self.forceGroupDict.values():
for f in fg:
for f in fg.asList():
particles.removeForce(f)
def removeAllParticles(self):
for p in self.particlesDict.values():
self.removeParticles(p)
def getParticlesList(self):
"""getParticles()"""
return self.particlesDict.values()
@ -141,12 +158,7 @@ class ParticleEffect(NodePath):
f.write('\n')
# Make sure we start with a clean slate
f.write('for p in self.getParticlesList():\n')
f.write('\tself.removeParticles(p)\n')
f.write('for fg in self.getForceGroupList():\n')
f.write('\tself.removeForceGroup(fg)\n')
f.write('self.particlesDict = {}\n')
f.write('self.forceGroupDict = {}\n')
f.write('self.reset()\n')
pos = self.getPos()
hpr = self.getHpr()

View File

@ -71,6 +71,8 @@ class Particles(ParticleSystem.ParticleSystem):
def cleanup(self):
self.disable()
self.clearLinearForces()
self.clearAngularForces()
self.setRenderParent(self.node)
self.node.removePhysical(self)
self.nodePath.removeNode()
@ -189,6 +191,9 @@ class Particles(ParticleSystem.ParticleSystem):
def removeForce(self, force):
"""removeForce(force)"""
if (force == None):
self.notify.warning('removeForce() - force == None!')
return
if (force.isLinear()):
self.removeLinearForce(force)
else: