mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 10:54:24 -04:00
Added message to move selected
This commit is contained in:
parent
55f269299d
commit
edabd48a6f
@ -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:
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user