Browse Source

Set scale for cluster message

Mark Mine 23 years ago
parent
commit
1fb3d30012

+ 9 - 7
direct/src/cluster/ClusterClient.py

@@ -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

+ 10 - 4
direct/src/cluster/ClusterMsgs.py

@@ -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()

+ 3 - 2
direct/src/cluster/ClusterServer.py

@@ -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 """

+ 1 - 0
direct/src/directtools/DirectSession.py

@@ -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