Added message to move selected

This commit is contained in:
Mark Mine 2002-04-16 00:52:30 +00:00
parent 55f269299d
commit edabd48a6f
3 changed files with 64 additions and 6 deletions

View File

@ -31,11 +31,7 @@ class ClusterClient(DirectObject.DirectObject):
serverConfig.filmOffset)
self.serverList.append(server)
self.startMoveCamTask()
def moveCamera(self, xyz, hpr):
self.notify.debug('moving unsynced camera')
for server in self.serverList:
server.sendMoveCam(xyz,hpr)
self.startMoveSelectedTask()
def startMoveCamTask(self):
taskMgr.add(self.moveCameraTask, "moveCamTask", 49)
@ -45,7 +41,27 @@ class ClusterClient(DirectObject.DirectObject):
base.camera.getPos(render),
base.camera.getHpr(render))
return Task.cont
def moveCamera(self, xyz, hpr):
self.notify.debug('moving unsynced camera')
for server in self.serverList:
server.sendMoveCam(xyz,hpr)
def startMoveSelectedTask(self):
taskMgr.add(self.moveSelectedTask, "moveSelectedTask", 48)
def moveSelectedTask(self, state):
# Update cluster if current display is a cluster client
if (last is not None):
self.notify.debug('moving selected node path')
xyz = Point3(0)
hpr = VBase3(0)
scale = VBase3(1)
decomposeMatrix(last.getMat(), scale, hpr, xyz)
for server in self.serverList:
server.sendMoveSelected(xyz,hpr)
return Task.cont
def getNodePathFindCmd(self, nodePath):
import string
pathString = `nodePath`
@ -165,6 +181,15 @@ class DisplayConnection:
datagram = self.msgHandler.makeCamMovementDatagram(xyz, hpr)
self.cw.send(datagram, self.tcpConn)
def sendMoveSelected(self,xyz,hpr):
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)
self.cw.send(datagram, self.tcpConn)
# the following should only be called by a synchronized cluster manger
def getSwapReady(self):
while 1:

View File

@ -15,6 +15,7 @@ CLUSTER_CAM_MOVEMENT = 3
CLUSTER_SWAP_READY = 4
CLUSTER_SWAP_NOW = 5
CLUSTER_COMMAND_STRING = 6
CLUSTER_SELECTED_MOVEMENT = 7
CLUSTER_EXIT = 100
#Port number for cluster rendering
@ -143,6 +144,30 @@ class ClusterMsgHandler:
(x,y,z,h,p,r)))
return (x,y,z,h,p,r)
def makeSelectedMovementDatagram(self,xyz,hpr):
datagram = Datagram.Datagram()
datagram.addUint32(self.packetNumber)
self.packetNumber = self.packetNumber + 1
datagram.addUint8(CLUSTER_SELECTED_MOVEMENT)
datagram.addFloat32(xyz[0])
datagram.addFloat32(xyz[1])
datagram.addFloat32(xyz[2])
datagram.addFloat32(hpr[0])
datagram.addFloat32(hpr[1])
datagram.addFloat32(hpr[2])
return datagram
def parseSelectedMovementDatagram(self, dgi):
x=dgi.getFloat32()
y=dgi.getFloat32()
z=dgi.getFloat32()
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)
def makeCommandStringDatagram(self, commandString):
datagram = Datagram.Datagram()
datagram.addUint32(self.packetNumber)

View File

@ -86,6 +86,8 @@ class ClusterServer(DirectObject.DirectObject):
self.handleCamFrustum(dgi)
elif (type == CLUSTER_CAM_MOVEMENT):
self.handleCamMovement(dgi)
elif (type == CLUSTER_SELECTED_MOVEMENT):
self.handleSelectedMovement(dgi)
elif (type == CLUSTER_COMMAND_STRING):
self.handleCommandString(dgi)
elif (type == CLUSTER_SWAP_READY):
@ -117,6 +119,12 @@ class ClusterServer(DirectObject.DirectObject):
self.cameraJig.setPosHpr(render,x,y,z,h,p,r)
self.fPosReceived = 1
def handleSelectedMovement(self,dgi):
""" Update cameraJig position to reflect latest position """
(x,y,z,h,p,r) = self.msgHandler.parseSelectedMovementDatagram(dgi)
if last:
last.setPosHpr(x,y,z,h,p,r)
def handleCommandString(self, dgi):
""" Handle arbitrary command string from client """
command = self.msgHandler.parseCommandStringDatagram(dgi)