Set scale for cluster message

This commit is contained in:
Mark Mine 2002-05-04 00:39:24 +00:00
parent 28a83773d6
commit 1fb3d30012
4 changed files with 23 additions and 13 deletions

View File

@ -83,7 +83,7 @@ class ClusterClient(DirectObject.DirectObject):
scale = VBase3(1)
decomposeMatrix(last.getMat(), scale, hpr, xyz)
for server in self.serverList:
server.sendMoveSelected(xyz,hpr)
server.sendMoveSelected(xyz,hpr,scale)
return Task.cont
def getNodePathFindCmd(self, nodePath):
@ -206,13 +206,15 @@ class DisplayConnection:
datagram = self.msgHandler.makeCamMovementDatagram(xyz, hpr)
self.cw.send(datagram, self.tcpConn)
def sendMoveSelected(self,xyz,hpr):
def sendMoveSelected(self,xyz,hpr,scale):
ClusterClient.notify.debug("send move selected...")
ClusterClient.notify.debug("packet %d xyz,hpr=%f %f %f %f %f %f" %
(self.msgHandler.packetNumber,
xyz[0],xyz[1],xyz[2],
hpr[0],hpr[1],hpr[2]))
datagram = self.msgHandler.makeSelectedMovementDatagram(xyz, hpr)
ClusterClient.notify.debug(
"packet %d xyz,hpr=%f %f %f %f %f %f %f %f %f" %
(self.msgHandler.packetNumber,
xyz[0],xyz[1],xyz[2],
hpr[0],hpr[1],hpr[2],
scale[0],scale[1],scale[2]))
datagram = self.msgHandler.makeSelectedMovementDatagram(xyz, hpr,scale)
self.cw.send(datagram, self.tcpConn)
# the following should only be called by a synchronized cluster manger

View File

@ -154,7 +154,7 @@ class ClusterMsgHandler:
(x,y,z,h,p,r)))
return (x,y,z,h,p,r)
def makeSelectedMovementDatagram(self,xyz,hpr):
def makeSelectedMovementDatagram(self,xyz,hpr,scale):
datagram = Datagram.Datagram()
datagram.addUint32(self.packetNumber)
self.packetNumber = self.packetNumber + 1
@ -165,6 +165,9 @@ class ClusterMsgHandler:
datagram.addFloat32(hpr[0])
datagram.addFloat32(hpr[1])
datagram.addFloat32(hpr[2])
datagram.addFloat32(scale[0])
datagram.addFloat32(scale[1])
datagram.addFloat32(scale[2])
return datagram
def parseSelectedMovementDatagram(self, dgi):
@ -174,9 +177,12 @@ class ClusterMsgHandler:
h=dgi.getFloat32()
p=dgi.getFloat32()
r=dgi.getFloat32()
self.notify.debug(' new position=%f %f %f %f %f %f' %
(x,y,z,h,p,r))
return (x,y,z,h,p,r)
sx=dgi.getFloat32()
sy=dgi.getFloat32()
sz=dgi.getFloat32()
self.notify.debug(' new position=%f %f %f %f %f %f %f %f %f' %
(x,y,z,h,p,r,sx,sy,sz))
return (x,y,z,h,p,r,sx,sy,sz)
def makeCommandStringDatagram(self, commandString):
datagram = Datagram.Datagram()

View File

@ -193,9 +193,10 @@ class ClusterServer(DirectObject.DirectObject):
def handleSelectedMovement(self,dgi):
""" Update cameraJig position to reflect latest position """
(x,y,z,h,p,r) = self.msgHandler.parseSelectedMovementDatagram(dgi)
(x,y,z,h,p,r,sx,sy,sz) = self.msgHandler.parseSelectedMovementDatagram(
dgi)
if last:
last.setPosHpr(x,y,z,h,p,r)
last.setPosHprScale(x,y,z,h,p,r,sx,sy,sz)
def handleCommandString(self, dgi):
""" Handle arbitrary command string from client """

View File

@ -173,6 +173,7 @@ class DirectSession(PandaObject):
self.cluster = ClusterServer(base.cameraList[0], base.camList[0])
else:
self.cluster = DummyClusterClient()
__builtin__.cluster = self.cluster
def enable(self):
# Make sure old tasks are shut down