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)
|
serverConfig.filmOffset)
|
||||||
self.serverList.append(server)
|
self.serverList.append(server)
|
||||||
self.startMoveCamTask()
|
self.startMoveCamTask()
|
||||||
|
self.startMoveSelectedTask()
|
||||||
def moveCamera(self, xyz, hpr):
|
|
||||||
self.notify.debug('moving unsynced camera')
|
|
||||||
for server in self.serverList:
|
|
||||||
server.sendMoveCam(xyz,hpr)
|
|
||||||
|
|
||||||
def startMoveCamTask(self):
|
def startMoveCamTask(self):
|
||||||
taskMgr.add(self.moveCameraTask, "moveCamTask", 49)
|
taskMgr.add(self.moveCameraTask, "moveCamTask", 49)
|
||||||
@ -45,7 +41,27 @@ class ClusterClient(DirectObject.DirectObject):
|
|||||||
base.camera.getPos(render),
|
base.camera.getPos(render),
|
||||||
base.camera.getHpr(render))
|
base.camera.getHpr(render))
|
||||||
return Task.cont
|
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):
|
def getNodePathFindCmd(self, nodePath):
|
||||||
import string
|
import string
|
||||||
pathString = `nodePath`
|
pathString = `nodePath`
|
||||||
@ -165,6 +181,15 @@ class DisplayConnection:
|
|||||||
datagram = self.msgHandler.makeCamMovementDatagram(xyz, hpr)
|
datagram = self.msgHandler.makeCamMovementDatagram(xyz, hpr)
|
||||||
self.cw.send(datagram, self.tcpConn)
|
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
|
# the following should only be called by a synchronized cluster manger
|
||||||
def getSwapReady(self):
|
def getSwapReady(self):
|
||||||
while 1:
|
while 1:
|
||||||
|
@ -15,6 +15,7 @@ CLUSTER_CAM_MOVEMENT = 3
|
|||||||
CLUSTER_SWAP_READY = 4
|
CLUSTER_SWAP_READY = 4
|
||||||
CLUSTER_SWAP_NOW = 5
|
CLUSTER_SWAP_NOW = 5
|
||||||
CLUSTER_COMMAND_STRING = 6
|
CLUSTER_COMMAND_STRING = 6
|
||||||
|
CLUSTER_SELECTED_MOVEMENT = 7
|
||||||
CLUSTER_EXIT = 100
|
CLUSTER_EXIT = 100
|
||||||
|
|
||||||
#Port number for cluster rendering
|
#Port number for cluster rendering
|
||||||
@ -143,6 +144,30 @@ class ClusterMsgHandler:
|
|||||||
(x,y,z,h,p,r)))
|
(x,y,z,h,p,r)))
|
||||||
return (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):
|
def makeCommandStringDatagram(self, commandString):
|
||||||
datagram = Datagram.Datagram()
|
datagram = Datagram.Datagram()
|
||||||
datagram.addUint32(self.packetNumber)
|
datagram.addUint32(self.packetNumber)
|
||||||
|
@ -86,6 +86,8 @@ class ClusterServer(DirectObject.DirectObject):
|
|||||||
self.handleCamFrustum(dgi)
|
self.handleCamFrustum(dgi)
|
||||||
elif (type == CLUSTER_CAM_MOVEMENT):
|
elif (type == CLUSTER_CAM_MOVEMENT):
|
||||||
self.handleCamMovement(dgi)
|
self.handleCamMovement(dgi)
|
||||||
|
elif (type == CLUSTER_SELECTED_MOVEMENT):
|
||||||
|
self.handleSelectedMovement(dgi)
|
||||||
elif (type == CLUSTER_COMMAND_STRING):
|
elif (type == CLUSTER_COMMAND_STRING):
|
||||||
self.handleCommandString(dgi)
|
self.handleCommandString(dgi)
|
||||||
elif (type == CLUSTER_SWAP_READY):
|
elif (type == CLUSTER_SWAP_READY):
|
||||||
@ -117,6 +119,12 @@ class ClusterServer(DirectObject.DirectObject):
|
|||||||
self.cameraJig.setPosHpr(render,x,y,z,h,p,r)
|
self.cameraJig.setPosHpr(render,x,y,z,h,p,r)
|
||||||
self.fPosReceived = 1
|
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):
|
def handleCommandString(self, dgi):
|
||||||
""" Handle arbitrary command string from client """
|
""" Handle arbitrary command string from client """
|
||||||
command = self.msgHandler.parseCommandStringDatagram(dgi)
|
command = self.msgHandler.parseCommandStringDatagram(dgi)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user