Browse Source

added ~objectcount and ~aiobjectcount

Darren Ranalli 19 years ago
parent
commit
1e5fdf94f6
2 changed files with 28 additions and 0 deletions
  1. 26 0
      direct/src/distributed/DoCollectionManager.py
  2. 2 0
      direct/src/showbase/PythonUtil.py

+ 26 - 0
direct/src/distributed/DoCollectionManager.py

@@ -80,6 +80,32 @@ class DoCollectionManager:
                     distObj.dclass.getName(),
                     distObj.__dict__.get("name"))
 
+    def _printObjects(self, table):
+        class2count = {}
+        for obj in self.getDoTable(ownerView=False).values():
+            className = obj.__class__.__name__
+            class2count.setdefault(className, 0)
+            class2count[className] += 1
+        count2classes = invertDictLossless(class2count)
+        counts = count2classes.keys()
+        counts.sort()
+        counts.reverse()
+        for count in counts:
+            count2classes[count].sort()
+            for name in count2classes[count]:
+                print '%s %s' % (count, name)
+
+    def printObjectCount(self):
+        # print object counts by distributed object type
+        print '==== OBJECT DUMP ===='
+        if self.hasOwnerView():
+            print '== doId2do'
+        self._printObjects(self.getDoTable(ownerView=False))
+        if self.hasOwnerView():
+            print ''
+            print '== doId2ownerView'
+            self._printObjects(self.getDoTable(ownerView=True))
+
     def getDoList(self, parentId, zoneId=None, classType=None):
         """
         parentId is any distributed object id.

+ 2 - 0
direct/src/showbase/PythonUtil.py

@@ -2763,3 +2763,5 @@ __builtin__.DelayedFunctor = DelayedFunctor
 __builtin__.FrameDelayedCall = FrameDelayedCall
 __builtin__.ArgumentEater = ArgumentEater
 __builtin__.ClassTree = ClassTree
+__builtin__.invertDict = invertDict
+__builtin__.invertDictLossless = invertDictLossless