mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-19 13:15:00 -04:00
A Fix for p2p messages
This commit is contained in:
parent
c5737877bd
commit
ac5fb48042
@ -40,12 +40,11 @@ class ServerRepository:
|
|||||||
self.ClientObjects = {}
|
self.ClientObjects = {}
|
||||||
self.DOIDnext = 1
|
self.DOIDnext = 1
|
||||||
self.DOIDrange = 1000000
|
self.DOIDrange = 1000000
|
||||||
self.DOIDtoClients = {}
|
self.DOIDtoClient = {}
|
||||||
self.DOIDtoZones = {}
|
self.DOIDtoZones = {}
|
||||||
self.DOIDtoDClass = {}
|
self.DOIDtoDClass = {}
|
||||||
self.ZonesToClients = {}
|
self.ZonesToClients = {}
|
||||||
self.ZonetoDOIDs = {}
|
self.ZonetoDOIDs = {}
|
||||||
self.RemovedDOIDs = []
|
|
||||||
self.dcFile = DCFile()
|
self.dcFile = DCFile()
|
||||||
self.dcSuffix = ''
|
self.dcSuffix = ''
|
||||||
self.readDCFile()
|
self.readDCFile()
|
||||||
@ -278,7 +277,8 @@ class ServerRepository:
|
|||||||
else:
|
else:
|
||||||
self.sendToZoneExcept(self.DOIDtoZones[doid], datagram, connection)
|
self.sendToZoneExcept(self.DOIDtoZones[doid], datagram, connection)
|
||||||
elif (dcfield.isP2p()):
|
elif (dcfield.isP2p()):
|
||||||
self.cw.send(datagram, self.DOIDtoClients[doid])
|
doidbase = (doid / self.DOIDrange) * self.DOIDrange
|
||||||
|
self.cw.send(datagram, self.DOIDtoClient[doidbase])
|
||||||
else:
|
else:
|
||||||
self.notify.warning(
|
self.notify.warning(
|
||||||
"Message is not broadcast, p2p, or broadcast+p2p")
|
"Message is not broadcast, p2p, or broadcast+p2p")
|
||||||
@ -321,13 +321,9 @@ class ServerRepository:
|
|||||||
|
|
||||||
def sendDOIDrange(self, connection):
|
def sendDOIDrange(self, connection):
|
||||||
# reuse DOID assignments if we can
|
# reuse DOID assignments if we can
|
||||||
if len(self.RemovedDOIDs) > 0:
|
id = self.DOIDnext + self.DOIDrange
|
||||||
id = self.RemovedDOIDs[0]
|
self.DOIDnext = self.DOIDnext + self.DOIDrange
|
||||||
self.RemovedDOIDs.remove(id)
|
self.DOIDtoClient[id] = connection
|
||||||
else:
|
|
||||||
id = self.DOIDnext + self.DOIDrange
|
|
||||||
self.DOIDnext = self.DOIDnext + self.DOIDrange
|
|
||||||
self.DOIDtoClients[id] = connection
|
|
||||||
self.ClientDOIDbase[connection] = id
|
self.ClientDOIDbase[connection] = id
|
||||||
datagram = NetDatagram()
|
datagram = NetDatagram()
|
||||||
datagram.addUint16(CLIENT_SET_DOID_RANGE)
|
datagram.addUint16(CLIENT_SET_DOID_RANGE)
|
||||||
@ -341,8 +337,7 @@ class ServerRepository:
|
|||||||
# the disconnected clients objects
|
# the disconnected clients objects
|
||||||
def handleClientDisconnect(self, connection):
|
def handleClientDisconnect(self, connection):
|
||||||
if (self.ClientIP.has_key(connection)):
|
if (self.ClientIP.has_key(connection)):
|
||||||
self.RemovedDOIDs.append(self.ClientDOIDbase[connection])
|
del self.DOIDtoClient[self.ClientDOIDbase[connection]]
|
||||||
del self.DOIDtoClients[self.ClientDOIDbase[connection]]
|
|
||||||
for zone in self.ClientZones[connection]:
|
for zone in self.ClientZones[connection]:
|
||||||
if len(self.ZonesToClients[zone]) == 1:
|
if len(self.ZonesToClients[zone]) == 1:
|
||||||
del self.ZonesToClients[zone]
|
del self.ZonesToClients[zone]
|
||||||
@ -361,7 +356,6 @@ class ServerRepository:
|
|||||||
del self.ClientZones[connection]
|
del self.ClientZones[connection]
|
||||||
del self.ClientDOIDbase[connection]
|
del self.ClientDOIDbase[connection]
|
||||||
del self.ClientObjects[connection]
|
del self.ClientObjects[connection]
|
||||||
self.RemovedDOIDs.sort()
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
# client told us it's zone(s), store information
|
# client told us it's zone(s), store information
|
||||||
|
Loading…
x
Reference in New Issue
Block a user