Bladeren bron

first rev

Darren Ranalli 18 jaren geleden
bovenliggende
commit
2e9142fe53
1 gewijzigde bestanden met toevoegingen van 20 en 0 verwijderingen
  1. 20 0
      direct/src/showbase/LeakDetectors.py

+ 20 - 0
direct/src/showbase/LeakDetectors.py

@@ -0,0 +1,20 @@
+# objects that report different types of leaks to the ContainerLeakDetector
+
+class SceneGraphLeakDetector:
+    # is a scene graph leaking nodes?
+    def __init__(self, render):
+        self._render = render
+        if config.GetBool('leak-scene-graph', 0):
+            self._leakTaskName = 'leakNodes-%s' % serialNum()
+            self._leakNode()
+    def destroy(self):
+        if hasattr(self, '_leakTaskName'):
+            taskMgr.remove(self._leakTaskName)
+        del self._render
+    def __len__(self):
+        return self._render.getNumDescendants()
+    def __repr__(self):
+        return 'SceneGraphLeakDetector(%s)' % self._render
+    def _leakNode(self, task=None):
+        self._render.attachNewNode('leakNode-%s' % serialNum())
+        taskMgr.doMethodLater(10, self._leakNode, self._leakTaskName)