Browse Source

disable mouse buttons while in oobe mode

David Rose 17 years ago
parent
commit
8f12774e74
1 changed files with 26 additions and 0 deletions
  1. 26 0
      direct/src/showbase/ShowBase.py

+ 26 - 0
direct/src/showbase/ShowBase.py

@@ -1813,6 +1813,10 @@ class ShowBase(DirectObject.DirectObject):
             self.oobeCullFrustum = None
             self.oobeCullFrustum = None
             self.oobeCullFrustumVis = None
             self.oobeCullFrustumVis = None
 
 
+            self.accept('oobe-down', self.__oobeButton, extraArgs = [''])
+            self.accept('oobe-repeat', self.__oobeButton, extraArgs = ['-repeat'])
+            self.accept('oobe-up', self.__oobeButton, extraArgs = ['-up'])
+
         if self.oobeMode:
         if self.oobeMode:
             # Disable OOBE mode.
             # Disable OOBE mode.
             if self.oobeCullFrustum != None:
             if self.oobeCullFrustum != None:
@@ -1827,6 +1831,12 @@ class ShowBase(DirectObject.DirectObject):
             self.mouseInterfaceNode.clearButton(KeyboardButton.control())
             self.mouseInterfaceNode.clearButton(KeyboardButton.control())
             self.oobeTrackball.detachNode()
             self.oobeTrackball.detachNode()
 
 
+            bt = self.buttonThrowers[0].node()
+            bt.setSpecificFlag(1)
+            bt.setButtonDownEvent('')
+            bt.setButtonRepeatEvent('')
+            bt.setButtonUpEvent('')
+
             self.cam.reparentTo(self.camera)
             self.cam.reparentTo(self.camera)
             self.camNode.setLens(self.camLens)
             self.camNode.setLens(self.camLens)
             self.oobeCamera.reparentTo(self.hidden)
             self.oobeCamera.reparentTo(self.hidden)
@@ -1857,6 +1867,14 @@ class ShowBase(DirectObject.DirectObject):
 
 
             self.cam.reparentTo(self.oobeCameraTrackball)
             self.cam.reparentTo(self.oobeCameraTrackball)
 
 
+            # Temporarily disable button events by routing them
+            # through the oobe filters.
+            bt = self.buttonThrowers[0].node()
+            bt.setSpecificFlag(0)
+            bt.setButtonDownEvent('oobe-down')
+            bt.setButtonRepeatEvent('oobe-repeat')
+            bt.setButtonUpEvent('oobe-up')
+
             # Don't change the camera lens--keep it with the original lens.
             # Don't change the camera lens--keep it with the original lens.
             #self.camNode.setLens(self.oobeLens)
             #self.camNode.setLens(self.oobeLens)
 
 
@@ -1864,6 +1882,14 @@ class ShowBase(DirectObject.DirectObject):
                 self.oobeVis.reparentTo(self.camera)
                 self.oobeVis.reparentTo(self.camera)
             self.oobeMode = 1
             self.oobeMode = 1
 
 
+    def __oobeButton(self, suffix, button):
+        if button.startswith('mouse'):
+            # Eat mouse buttons.
+            return
+
+        # Transmit other buttons.
+        messenger.send(button + suffix)
+
     def oobeCull(self):
     def oobeCull(self):
         """
         """
         While in OOBE mode (see above), cull the viewing frustum as if
         While in OOBE mode (see above), cull the viewing frustum as if