Browse Source

*** empty log message ***

Mike Goslin 23 years ago
parent
commit
ed5ff3d496
2 changed files with 19 additions and 23 deletions
  1. 3 4
      direct/src/interval/ParticleInterval.py
  2. 16 19
      direct/src/particles/ParticleEffect.py

+ 3 - 4
direct/src/interval/ParticleInterval.py

@@ -43,17 +43,16 @@ class ParticleInterval(Interval.Interval):
         # Update particle effect based on current time
         if (t >= self.getDuration()):
             # If duration reached or stop event received, stop particle effect 
-            ParticleEffect.cleanupParticleEffect(self.particleEffect)
+            self.particleEffect.cleanup()
             self.ignore(self.stopEvent)
             self.cleanedUp = 1
         elif (event == Interval.IVAL_INIT):
             # IVAL_INIT event, start new particle effect
-            ParticleEffect.startParticleEffect(self.particleEffect,
-                                                self.parent, self.worldRelative)
+            self.particleEffect.start(self.parent, self.worldRelative)
             # Accept event to kill particle effect 
             self.acceptOnce(self.stopEvent,
                         lambda s = self: 
-                ParticleEffect.cleanupParticleEffect(s.particleEffect))
+                s.particleEffect.cleanup())
         # Print debug information
         assert(self.notify.debug('updateFunc() - %s: t = %f' % (self.name, t)))
             

+ 16 - 19
direct/src/particles/ParticleEffect.py

@@ -3,25 +3,6 @@ import Particles
 import ForceGroup
 import DirectNotifyGlobal
 
-
-# NOTE: these two calls were moved here from BattleParticles
-# to avoid DIRECT depending on TOONTOWN! - gregw
-def startParticleEffect(effect, parent, worldRelative=1):
-    assert(effect != None and parent != None)
-    #notify.debug('startParticleEffect() - name: %s' % effect.getName())
-    particles = effect.getParticlesNamed('particles-1')
-    if (worldRelative == 1):
-        particles.setRenderParent(render.node())
-    effect.enable()
-    effect.reparentTo(parent)
-
-def cleanupParticleEffect(effect):
-    assert(effect != None)
-    #notify.debug('cleanupParticleEffect() - %s' % effect.getName())
-    effect.disable()
-    effect.reparentTo(hidden)
-    effect.cleanup()
-
 class ParticleEffect(NodePath):
 
     notify = DirectNotifyGlobal.directNotify.newCategory('ParticleEffect')
@@ -44,8 +25,18 @@ class ParticleEffect(NodePath):
         # The effect's particle system
         if (particles != None):
             self.addParticles(particles)
+        self.worldRelative = 0
+
+    def start(self, parent=None, worldRelative=1):
+        assert(self.notify.debug('start() - name: %s' % self.name))
+        self.worldRelative = worldRelative
+        self.enable()
+        if (parent != None):
+            self.reparentTo(parent)
 
     def cleanup(self):
+        self.reparentTo(hidden)
+        self.disable()
         for f in self.forceGroupDict.values():
             f.cleanup()
         for p in self.particlesDict.values():
@@ -62,6 +53,9 @@ class ParticleEffect(NodePath):
 
     def enable(self):
         """enable()"""
+        if (self.worldRelative == 1):
+            for p in self.particlesDict.values():
+                p.setRenderParent(render.node())
         for f in self.forceGroupDict.values():
             f.enable()
         for p in self.particlesDict.values():
@@ -70,6 +64,9 @@ class ParticleEffect(NodePath):
 
     def disable(self):
         """disable()"""
+        if (self.worldRelative == 1):
+            for p in self.particlesDict.values():
+                p.setRenderParent(hidden.node()) 
         for f in self.forceGroupDict.values():
             f.disable()
         for p in self.particlesDict.values():