Browse Source

*** empty log message ***

Dustin Barnard 18 years ago
parent
commit
059a2000a2

+ 15 - 6
direct/src/cluster/ClusterClient.py

@@ -54,6 +54,7 @@ class ClusterClient(DirectObject.DirectObject):
 
         # A dictionary of objects that can be accessed by name
         self.objectMappings  = {}
+        self.objectHasColor  = {}
 
         # a dictionary of name objects and the corresponding names of
         # objects they are to control on the server side
@@ -133,18 +134,21 @@ class ClusterClient(DirectObject.DirectObject):
             #print object
             if (self.objectMappings.has_key(object)):
                 self.moveObject(self.objectMappings[object],name,serverList,
-                                self.controlOffsets[object])
+                                self.controlOffsets[object], self.objectHasColor[object])
                 
         #print "running control object"
         return Task.cont
 
-    def moveObject(self, nodePath, object, serverList, offset):
+    def moveObject(self, nodePath, object, serverList, offset, hasColor = True):
         self.notify.debug('moving object '+object)
         xyz = nodePath.getPos(render) + offset
         hpr = nodePath.getHpr(render)
         scale = nodePath.getScale(render)
         hidden = nodePath.isHidden()
-        color = nodePath.getColor()
+        if (hasColor):
+            color = nodePath.getColor()
+        else:
+            color = [1,1,1,1]
         for server in serverList:
             self.serverList[server].sendMoveNamedObject(xyz,hpr,scale,hidden,color,object)
 
@@ -176,9 +180,10 @@ class ClusterClient(DirectObject.DirectObject):
         return Task.cont
 
 
-    def addNamedObjectMapping(self,object,name):
+    def addNamedObjectMapping(self,object,name,hasColor = True):
         if (not self.objectMappings.has_key(name)):
             self.objectMappings[name] = object
+            self.objectHasColor[name] = hasColor
         else:
             self.notify.debug('attempt to add duplicate named object: '+name)
 
@@ -307,13 +312,17 @@ class ClusterClient(DirectObject.DirectObject):
 
     def handleNamedMovement(self, dgi):
         """ Update cameraJig position to reflect latest position """
-        (name,x, y, z, h, p, r, sx, sy, sz,r,g,b,a, hidden) = self.msgHandler.parseNamedMovementDatagram(
+    
+        (name,x, y, z, h, p, r, sx, sy, sz,red,g,b,a, hidden) = self.msgHandler.parseNamedMovementDatagram(
             dgi)
         #print "name"
+        #if (name == "camNode"):
+        #    print x,y,z,h,p,r, sx, sy, sz,red,g,b,a, hidden
         if (self.objectMappings.has_key(name)):
             self.objectMappings[name].setPosHpr(render, x, y, z, h, p, r)
             self.objectMappings[name].setScale(render,sx,sy,sz)
-            self.objectMappings[name].setColor(r,g,b,a)
+            if (self.objectHasColor[name]):
+                self.objectMappings[name].setColor(red,g,b,a)
             if (hidden):
                 self.objectMappings[name].hide()
             else:

+ 2 - 2
direct/src/cluster/ClusterMsgs.py

@@ -201,12 +201,12 @@ class ClusterMsgHandler:
         sx = dgi.getFloat32()
         sy = dgi.getFloat32()
         sz = dgi.getFloat32()
-        r = dgi.getFloat32()
+        red = dgi.getFloat32()
         g = dgi.getFloat32()
         b = dgi.getFloat32()
         a = dgi.getFloat32()        
         hidden = dgi.getBool()
-        return (name,x, y, z, h, p, r, sx, sy, sz, r, g, b, a, hidden)
+        return (name,x, y, z, h, p, r, sx, sy, sz, red, g, b, a, hidden)
 
 
     def makeSelectedMovementDatagram(self, xyz, hpr, scale):

+ 12 - 6
direct/src/cluster/ClusterServer.py

@@ -56,6 +56,7 @@ class ClusterServer(DirectObject.DirectObject):
         self.daemon = DirectD()
 
         self.objectMappings  = {}
+        self.objectHasColor  = {}
         self.controlMappings = {}
         self.controlOffsets  = {}
 
@@ -97,9 +98,10 @@ class ClusterServer(DirectObject.DirectObject):
         return Task.cont
 
 
-    def addNamedObjectMapping(self,object,name):
+    def addNamedObjectMapping(self,object,name,hasColor = True):
         if (not self.objectMappings.has_key(name)):
             self.objectMappings[name] = object
+            self.objectHasColor[name] = hasColor
         else:
             self.notify.debug('attempt to add duplicate named object: '+name)
 
@@ -136,17 +138,21 @@ class ClusterServer(DirectObject.DirectObject):
         for object in self.controlMappings:
             name       = self.controlMappings[object]
             if (self.objectMappings.has_key(object)):
-                self.moveObject(self.objectMappings[object],name,self.controlOffsets[object])
+                self.moveObject(self.objectMappings[object],name,self.controlOffsets[object],
+                                self.objectHasColor[object])
 
         return Task.cont
 
-    def moveObject(self, nodePath, object, offset):
+    def moveObject(self, nodePath, object, offset, hasColor):
         self.notify.debug('moving object '+object)
         #print "moving object",object
         xyz = nodePath.getPos(render) + offset
         hpr = nodePath.getHpr(render)
         scale = nodePath.getScale(render)
-        color = nodePath.getColor()
+        if (hasColor):
+            color = nodePath.getColor()
+        else:
+            color = [1,1,1,1]
         hidden = nodePath.isHidden()
         datagram = self.msgHandler.makeNamedObjectMovementDatagram(xyz,hpr,scale,color,hidden,object)
         self.cw.send(datagram, self.lastConnection)
@@ -256,12 +262,12 @@ class ClusterServer(DirectObject.DirectObject):
 
     def handleNamedMovement(self, dgi):
         """ Update cameraJig position to reflect latest position """
-        (name,x, y, z, h, p, r,sx,sy,sz, r, g, b, a, hidden) = self.msgHandler.parseNamedMovementDatagram(
+        (name,x, y, z, h, p, r,sx,sy,sz, red, g, b, a, hidden) = self.msgHandler.parseNamedMovementDatagram(
             dgi)
         if (self.objectMappings.has_key(name)):
             self.objectMappings[name].setPosHpr(render, x, y, z, h, p, r)
             self.objectMappings[name].setScale(render,sx,sy,sz)
-            self.objectMappings[name].setColor(r,g,b,a)
+            self.objectMappings[name].setColor(red,g,b,a)
             if (hidden):
                 self.objectMappings[name].hide()
             else: