Browse Source

"Changed the way interest is maintained in the world by the local avatar (such as when teleporting, using doors or tunnels, or entering the game). Moved tunnels to be peers of the islands, rather than their children (in the interest graph). This enables the player to teleport to any game area. Enabled teleport to a friend (still needs work)"

Josh Wilson 18 years ago
parent
commit
9029fd64fc

+ 14 - 0
direct/src/distributed/DistributedCartesianGrid.py

@@ -33,6 +33,7 @@ class DistributedCartesianGrid(DistributedNode, CartesianGridBase):
         self.visAvatar = None
         self.visAvatar = None
         self.gridVisContext = None
         self.gridVisContext = None
         # Do we have grid lines visualized?
         # Do we have grid lines visualized?
+        self._onOffState = False
         if __debug__:
         if __debug__:
             self.haveGridLines = 0
             self.haveGridLines = 0
 
 
@@ -77,6 +78,11 @@ class DistributedCartesianGrid(DistributedNode, CartesianGridBase):
 
 
     @report(types = ['frameCount', 'avLocation'], dConfigParam = 'want-connector-report')
     @report(types = ['frameCount', 'avLocation'], dConfigParam = 'want-connector-report')
     def startProcessVisibility(self, avatar):
     def startProcessVisibility(self, avatar):
+        if not self._onOffState:
+            # if we've been told that we're OFF, don't try
+            # to process visibilty
+            return
+        
         assert not self.cr._noNewInterests
         assert not self.cr._noNewInterests
         if self.cr.noNewInterests():
         if self.cr.noNewInterests():
             self.notify.warning(
             self.notify.warning(
@@ -223,9 +229,11 @@ class DistributedCartesianGrid(DistributedNode, CartesianGridBase):
 
 
 
 
     def turnOff(self):
     def turnOff(self):
+        self._onOffState = False
         self.stopProcessVisibility()
         self.stopProcessVisibility()
         
         
     def turnOn(self, av = None):
     def turnOn(self, av = None):
+        self._onOffState = True
         if av:
         if av:
             self.startProcessVisibility(av)
             self.startProcessVisibility(av)
         
         
@@ -363,3 +371,9 @@ class DistributedCartesianGrid(DistributedNode, CartesianGridBase):
             if not self.haveGridLines:
             if not self.haveGridLines:
                 self.initializeGridLines()
                 self.initializeGridLines()
             self.updateGrid()
             self.updateGrid()
+
+    def setWorldContext(self, worldContext):
+        pass
+    
+    def clearWorldContext(self, event = None):
+        pass

+ 7 - 0
direct/src/distributed/DoInterestManager.py

@@ -49,6 +49,8 @@ class InterestState:
         for event in self.events:
         for event in self.events:
             messenger.send(event)
             messenger.send(event)
         self.clearEvents()
         self.clearEvents()
+    def setDesc(self, desc):
+        self.desc = desc
     def isPendingDelete(self):
     def isPendingDelete(self):
         return self.state == InterestState.StatePendingDel
         return self.state == InterestState.StatePendingDel
     def __repr__(self):
     def __repr__(self):
@@ -149,6 +151,11 @@ class DoInterestManager(DirectObject.DirectObject):
             return False
             return False
         return DoInterestManager._interests.has_key(handle.asInt())
         return DoInterestManager._interests.has_key(handle.asInt())
 
 
+    def updateInterestDescription(self, handle, desc):
+        iState = DoInterestManager._interests.get(handle.asInt())
+        if iState:
+            iState.setDesc(desc)
+            
     def addInterest(self, parentId, zoneIdList, description, event=None, auto=False):
     def addInterest(self, parentId, zoneIdList, description, event=None, auto=False):
         """
         """
         Look into a (set of) zone(s).
         Look into a (set of) zone(s).