瀏覽代碼

Put some bullet proofing around cleanup and enable funcs

Greg Wiatroski 20 年之前
父節點
當前提交
a3702b8a8f
共有 1 個文件被更改,包括 19 次插入13 次删除
  1. 19 13
      direct/src/particles/ParticleEffect.py

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

@@ -36,13 +36,17 @@ class ParticleEffect(NodePath):
     def cleanup(self):
         self.removeNode()
         self.disable()
-        for f in self.forceGroupDict.values():
-            f.cleanup()
-        for p in self.particlesDict.values():
-            p.cleanup()
+        if hasattr(self, 'forceGroupDict'):
+            for f in self.forceGroupDict.values():
+                f.cleanup()
+            del self.forceGroupDict
+        if hasattr(self, 'particlesDict'):
+            for p in self.particlesDict.values():
+                p.cleanup()
+            del self.particlesDict
         del self.renderParent
-        del self.particlesDict
-        del self.forceGroupDict
+
+
 
     def reset(self):
         self.removeAllForces()
@@ -52,14 +56,16 @@ class ParticleEffect(NodePath):
 
     def enable(self):
         """enable()"""
-        if (self.renderParent != None):
+        # band-aid added for client crash - grw
+        if hasattr(self, 'forceGroupDict') and hasattr(self, 'particlesGroupDict'): 
+            if (self.renderParent != None):
+                for p in self.particlesDict.values():
+                    p.setRenderParent(self.renderParent.node())
+            for f in self.forceGroupDict.values():
+                f.enable()
             for p in self.particlesDict.values():
-                p.setRenderParent(self.renderParent.node())
-        for f in self.forceGroupDict.values():
-            f.enable()
-        for p in self.particlesDict.values():
-            p.enable()
-        self.fEnabled = 1
+                p.enable()
+            self.fEnabled = 1
 
     def disable(self):
         """disable()"""