diff --git a/direct/src/cluster/ClusterClient.py b/direct/src/cluster/ClusterClient.py index 176efbb83f..b95048bcb0 100644 --- a/direct/src/cluster/ClusterClient.py +++ b/direct/src/cluster/ClusterClient.py @@ -108,7 +108,7 @@ class ClusterClient(DirectObject.DirectObject): def startControlObjectTask(self): self.notify.debug("moving control objects") - taskMgr.add(self.controlObjectTask,"controlObjectTask") + taskMgr.add(self.controlObjectTask,"controlObjectTask",50) def startSynchronizeTimeTask(self): self.notify.debug('broadcasting frame time') @@ -203,16 +203,36 @@ class ClusterClient(DirectObject.DirectObject): self.controlMappings[objectName] = [controlledName,serverList] self.controlOffsets[objectName] = offset else: - self.notify.debug('attempt to add duplicate controlled object: '+name) + oldList = self.controlMappings[objectName] + mergedList = [] + for item in oldList: + mergedList.append(item) + for item in serverList: + if (item is not in mergedList): + mergedList.append(item) + + #self.notify.debug('attempt to add duplicate controlled object: '+name) def setControlMappingOffset(self,objectName,offset): if (self.controlMappings.has_key(objectName)): self.controlOffsets[objectName] = offset - def removeControlMapping(self,name): + def removeControlMapping(self,name, serverList = None): if (self.controlMappings.has_key(name)): - self.controlMappings.pop(name) + if (serverList == None): + self.controlMappings.pop(name) + else: + list = self.controlMappings[key][1] + newList = [] + for server in list: + if (server is not in serverList): + newList.append(server) + self.controlMappings[key][1] = newList + if (len(newList) == 0): + self.controlMappings.pop(name) + + def getNodePathFindCmd(self, nodePath): import string pathString = `nodePath` diff --git a/direct/src/cluster/ClusterServer.py b/direct/src/cluster/ClusterServer.py index d585673510..c1de8a7f3b 100644 --- a/direct/src/cluster/ClusterServer.py +++ b/direct/src/cluster/ClusterServer.py @@ -110,6 +110,8 @@ class ClusterServer(DirectObject.DirectObject): self.objectMappings.pop(name) + + def addControlMapping(self,objectName,controlledName, offset = None): if (not self.controlMappings.has_key(objectName)): self.controlMappings[objectName] = controlledName @@ -131,7 +133,7 @@ class ClusterServer(DirectObject.DirectObject): def startControlObjectTask(self): self.notify.debug("moving control objects") - taskMgr.add(self.controlObjectTask,"controlObjectTask") + taskMgr.add(self.controlObjectTask,"controlObjectTask",50) def controlObjectTask(self, task): #print "running control object task"