Added time synchronization
This commit is contained in:
parent
637052eddc
commit
ed6ed31206
|
|
@ -82,10 +82,11 @@ class ClusterClient(DirectObject.DirectObject):
|
|||
taskMgr.add(self.synchronizeTimeTask, "synchronizeTimeTask", -40)
|
||||
|
||||
def synchronizeTimeTask(self,task):
|
||||
frameCount = globalClock.getFrameCount()
|
||||
frameTime = globalClock.getFrameTime()
|
||||
dt = globalClock.getDt()
|
||||
for server in self.serverList:
|
||||
server.sendTimeData(frameTime, dt)
|
||||
server.sendTimeData(frameCount, frameTime, dt)
|
||||
return Task.cont
|
||||
|
||||
def startMoveCamTask(self):
|
||||
|
|
@ -293,9 +294,10 @@ class DisplayConnection:
|
|||
datagram = self.msgHandler.makeExitDatagram()
|
||||
self.cw.send(datagram, self.tcpConn)
|
||||
|
||||
def sendTimeData(self,frameTime, dt):
|
||||
def sendTimeData(self,frameCount, frameTime, dt):
|
||||
ClusterClient.notify.debug("send time data...")
|
||||
datagram = self.msgHandler.makeTimeDataDatagram(frameTime, dt)
|
||||
datagram = self.msgHandler.makeTimeDataDatagram(
|
||||
frameCount, frameTime, dt)
|
||||
self.cw.send(datagram, self.tcpConn)
|
||||
|
||||
class ClusterConfigItem:
|
||||
|
|
|
|||
|
|
@ -226,20 +226,22 @@ class ClusterMsgHandler:
|
|||
datagram.addUint8(CLUSTER_EXIT)
|
||||
return datagram
|
||||
|
||||
def makeTimeDataDatagram(self,frameTime, dt):
|
||||
def makeTimeDataDatagram(self,frameCount, frameTime, dt):
|
||||
datagram = PyDatagram()
|
||||
datagram.addUint32(self.packetNumber)
|
||||
self.packetNumber = self.packetNumber + 1
|
||||
datagram.addUint8(CLUSTER_TIME_DATA)
|
||||
datagram.addUint32(frameCount)
|
||||
datagram.addFloat32(frameTime)
|
||||
datagram.addFloat32(dt)
|
||||
return datagram
|
||||
|
||||
def parseTimeDataDatagram(self, dgi):
|
||||
frameCount=dgi.getUint32()
|
||||
frameTime=dgi.getFloat32()
|
||||
dt=dgi.getFloat32()
|
||||
self.notify.debug('time data=%f %f' % (frameTime, dt))
|
||||
return (frameTime, dt)
|
||||
return (frameCount, frameTime, dt)
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -50,8 +50,8 @@ class ClusterServer(DirectObject.DirectObject):
|
|||
if clusterSyncFlag:
|
||||
self.startSwapCoordinator()
|
||||
base.graphicsEngine.setAutoFlip(0)
|
||||
# Set global clock mode to non-real time
|
||||
globalClock.setMode(ClockObject.MNonRealTime)
|
||||
# Set global clock mode to slave mode
|
||||
globalClock.setMode(ClockObject.MSlave)
|
||||
# Send verification of startup to client
|
||||
self.daemon = DirectD()
|
||||
# These must be passed in as bootstrap arguments and stored in
|
||||
|
|
@ -204,9 +204,9 @@ class ClusterServer(DirectObject.DirectObject):
|
|||
|
||||
def handleTimeData(self,dgi):
|
||||
""" Update cameraJig position to reflect latest position """
|
||||
(frameTime, dt) = self.msgHandler.parseTimeDataDatagram(dgi)
|
||||
(frameCount,frameTime,dt) = self.msgHandler.parseTimeDataDatagram(dgi)
|
||||
# Use frame time from client for both real and frame time
|
||||
globalClock.setRealTime(frameTime)
|
||||
globalClock.setFrameCount(frameCount)
|
||||
globalClock.setFrameTime(frameTime)
|
||||
globalClock.setDt(dt)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue