diff --git a/direct/src/showbase/ShowBase.py b/direct/src/showbase/ShowBase.py index 8ff2ae125b..3fdabf2294 100644 --- a/direct/src/showbase/ShowBase.py +++ b/direct/src/showbase/ShowBase.py @@ -1813,6 +1813,10 @@ class ShowBase(DirectObject.DirectObject): self.oobeCullFrustum = 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: # Disable OOBE mode. if self.oobeCullFrustum != None: @@ -1827,6 +1831,12 @@ class ShowBase(DirectObject.DirectObject): self.mouseInterfaceNode.clearButton(KeyboardButton.control()) self.oobeTrackball.detachNode() + bt = self.buttonThrowers[0].node() + bt.setSpecificFlag(1) + bt.setButtonDownEvent('') + bt.setButtonRepeatEvent('') + bt.setButtonUpEvent('') + self.cam.reparentTo(self.camera) self.camNode.setLens(self.camLens) self.oobeCamera.reparentTo(self.hidden) @@ -1857,6 +1867,14 @@ class ShowBase(DirectObject.DirectObject): 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. #self.camNode.setLens(self.oobeLens) @@ -1864,6 +1882,14 @@ class ShowBase(DirectObject.DirectObject): self.oobeVis.reparentTo(self.camera) 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): """ While in OOBE mode (see above), cull the viewing frustum as if