Browse Source

moving doId2do to DoCollectionManager

Dave Schuyler 20 years ago
parent
commit
cbd8bf2164

+ 3 - 27
direct/src/distributed/ClientRepository.py

@@ -5,7 +5,7 @@ from MsgTypes import *
 from direct.task import Task
 from direct.task import Task
 from direct.directnotify import DirectNotifyGlobal
 from direct.directnotify import DirectNotifyGlobal
 import CRCache
 import CRCache
-import ConnectionRepository
+from direct.distributed.ConnectionRepository import ConnectionRepository
 from direct.showbase import PythonUtil
 from direct.showbase import PythonUtil
 import ParentMgr
 import ParentMgr
 import RelatedObjectMgr
 import RelatedObjectMgr
@@ -14,7 +14,7 @@ from ClockDelta import *
 from PyDatagram import PyDatagram
 from PyDatagram import PyDatagram
 from PyDatagramIterator import PyDatagramIterator
 from PyDatagramIterator import PyDatagramIterator
 
 
-class ClientRepository(ConnectionRepository.ConnectionRepository):
+class ClientRepository(ConnectionRepository):
     """
     """
     This maintains a client-side connection with a Panda server.
     This maintains a client-side connection with a Panda server.
     It currently supports several different versions of the server:
     It currently supports several different versions of the server:
@@ -25,7 +25,7 @@ class ClientRepository(ConnectionRepository.ConnectionRepository):
     notify = DirectNotifyGlobal.directNotify.newCategory("ClientRepository")
     notify = DirectNotifyGlobal.directNotify.newCategory("ClientRepository")
 
 
     def __init__(self):
     def __init__(self):
-        ConnectionRepository.ConnectionRepository.__init__(self, base.config)
+        ConnectionRepository.__init__(self, base.config)
 
 
         self.context=100000
         self.context=100000
         self.setClientDatagram(1)
         self.setClientDatagram(1)
@@ -36,11 +36,6 @@ class ClientRepository(ConnectionRepository.ConnectionRepository):
             # with set locationa and set interest
             # with set locationa and set interest
             self.old_setzone_interest_handle = None
             self.old_setzone_interest_handle = None
 
 
-        # Dict of {DistributedObject ids : DistributedObjects}
-        self.doId2do = {}
-        if wantOtpServer:
-            # Dict of {parent DistributedObject id : {zoneIds : [child DistributedObject ids]}}
-            self.__doHierarchy = {}
         self.readDCFile()
         self.readDCFile()
         self.cache=CRCache.CRCache()
         self.cache=CRCache.CRCache()
         self.serverDelta = 0
         self.serverDelta = 0
@@ -917,31 +912,12 @@ class ClientRepository(ConnectionRepository.ConnectionRepository):
     def replaceMethod(self, oldMethod, newFunction):
     def replaceMethod(self, oldMethod, newFunction):
         return 0
         return 0
 
 
-    def getAllOfType(self, type):
-        # Returns a list of all DistributedObjects in the repository
-        # of a particular type.
-        result = []
-        for obj in self.doId2do.values():
-            if isinstance(obj, type):
-                result.append(obj)
-        return result
-
-    def findAnyOfType(self, type):
-        # Searches the repository for any object of the given type.
-        for obj in self.doId2do.values():
-            if isinstance(obj, type):
-                return obj
-        return None
-
     def isLocalId(self,id):
     def isLocalId(self,id):
         return ((id >= self.DOIDbase) and (id < self.DOIDlast))
         return ((id >= self.DOIDbase) and (id < self.DOIDlast))
 
 
     def haveCreateAuthority(self):
     def haveCreateAuthority(self):
         return (self.DOIDlast > self.DOIDnext)
         return (self.DOIDlast > self.DOIDnext)
 
 
-    def getDoHierarchy(self):
-        return self.__doHierarchy
-
     def getWorld(self, doId):
     def getWorld(self, doId):
         # Get the world node for this object
         # Get the world node for this object
         obj = self.doId2do[doId]
         obj = self.doId2do[doId]

+ 4 - 33
direct/src/distributed/ConnectionRepository.py

@@ -2,13 +2,15 @@ from pandac.PandaModules import *
 from direct.task import Task
 from direct.task import Task
 from direct.directnotify import DirectNotifyGlobal
 from direct.directnotify import DirectNotifyGlobal
 from direct.distributed.DoInterestManager import DoInterestManager
 from direct.distributed.DoInterestManager import DoInterestManager
+from direct.distributed.DoCollectionManager import DoCollectionManager
 from PyDatagram import PyDatagram
 from PyDatagram import PyDatagram
 from PyDatagramIterator import PyDatagramIterator
 from PyDatagramIterator import PyDatagramIterator
 
 
 import types
 import types
 import imp
 import imp
 
 
-class ConnectionRepository(DoInterestManager, CConnectionRepository):
+class ConnectionRepository(
+        DoInterestManager, DoCollectionManager, CConnectionRepository):
     """
     """
     This is a base class for things that know how to establish a
     This is a base class for things that know how to establish a
     connection (and exchange datagrams) with a gameserver.  This
     connection (and exchange datagrams) with a gameserver.  This
@@ -20,6 +22,7 @@ class ConnectionRepository(DoInterestManager, CConnectionRepository):
     def __init__(self, config):
     def __init__(self, config):
         assert self.notify.debugCall()
         assert self.notify.debugCall()
         DoInterestManager.__init__(self)
         DoInterestManager.__init__(self)
+        DoCollectionManager.__init__(self)
         CConnectionRepository.__init__(self)
         CConnectionRepository.__init__(self)
         self.setPythonRepository(self)
         self.setPythonRepository(self)
 
 
@@ -56,20 +59,6 @@ class ConnectionRepository(DoInterestManager, CConnectionRepository):
         # DC file.  The AIRepository will redefine this to 'AI'.
         # DC file.  The AIRepository will redefine this to 'AI'.
         self.dcSuffix = ''
         self.dcSuffix = ''
 
 
-    if __debug__:
-        def printObjects(self):
-            format="%10s %10s %10s %30s %20s"
-            title=format%("parentId", "zoneId", "doId", "dclass", "name")
-            print title
-            print '-'*len(title)
-            for distObj in self.doId2do.values():
-                print format%(
-                    distObj.__dict__.get("parentId"),
-                    distObj.__dict__.get("zoneId"),
-                    distObj.__dict__.get("doId"),
-                    distObj.dclass.getName(),
-                    distObj.__dict__.get("name"))
-
     def readDCFile(self, dcFileNames = None):
     def readDCFile(self, dcFileNames = None):
         """
         """
         Reads in the dc files listed in dcFileNames, or if
         Reads in the dc files listed in dcFileNames, or if
@@ -413,21 +402,3 @@ class ConnectionRepository(DoInterestManager, CConnectionRepository):
         if self.networkPlugPulled():
         if self.networkPlugPulled():
             self.notify.info('*** RESTORING SIMULATED PULLED-NETWORK-PLUG ***')
             self.notify.info('*** RESTORING SIMULATED PULLED-NETWORK-PLUG ***')
             self.setSimulatedDisconnect(0)
             self.setSimulatedDisconnect(0)
-
-    def doFind(self, str):
-        """
-        Returns list of distributed objects with matching str in value.
-        """
-        for value in self.doId2do.values():
-            if `value`.find(str) >= 0:
-                return value
-
-    def doFindAll(self, str):
-        """
-        Returns list of distributed objects with matching str in value.
-        """
-        matches = []
-        for value in self.doId2do.values():
-            if `value`.find(str) >= 0:
-                matches.append(value)
-        return matches