diff --git a/direct/src/directtools/DirectCameraControl.py b/direct/src/directtools/DirectCameraControl.py index a474a7099c..cd071ea25a 100644 --- a/direct/src/directtools/DirectCameraControl.py +++ b/direct/src/directtools/DirectCameraControl.py @@ -32,6 +32,8 @@ class DirectCameraControl(PandaObject): self.actionEvents = [ ['DIRECT-mouse2', self.mouseFlyStart], ['DIRECT-mouse2Up', self.mouseFlyStop], + ] + self.keyEvents = [ ['c', self.centerCamIn, 0.5], ['f', self.fitOnWidget], ['h', self.homeCam], @@ -625,12 +627,15 @@ class DirectCameraControl(PandaObject): # Continue return Task.cont - def enableMouseFly(self): + def enableMouseFly(self, fKeyEvents = 1): # disable C++ fly interface base.disableMouse() # Enable events for event in self.actionEvents: self.accept(event[0], event[1], extraArgs = event[2:]) + if fKeyEvents: + for event in self.keyEvents: + self.accept(event[0], event[1], extraArgs = event[2:]) # Show marker self.coaMarker.reparentTo(direct.group) @@ -640,6 +645,8 @@ class DirectCameraControl(PandaObject): # Ignore events for event in self.actionEvents: self.ignore(event[0]) + for event in self.keyEvents: + self.ignore(event[0]) # Kill tasks self.removeManipulateCameraTask() taskMgr.remove('stickToWidget') diff --git a/direct/src/directtools/DirectSession.py b/direct/src/directtools/DirectSession.py index baaa46f46a..1859c2aabd 100644 --- a/direct/src/directtools/DirectSession.py +++ b/direct/src/directtools/DirectSession.py @@ -145,11 +145,14 @@ class DirectSession(PandaObject): ['SGE_Delete', self.removeNodePath], ['SGE_Set Name', self.getAndSetName], ] - self.keyEvents = ['escape', 'delete', 'control', 'control-up', - 'shift', 'shift-up', 'alt', 'alt-up', - 'page_up', 'page_down', + self.modifierEvents = ['control', 'control-up', + 'shift', 'shift-up', + 'alt', 'alt-up', + ] + self.keyEvents = ['escape', 'delete', 'page_up', 'page_down', '[', '{', ']', '}', - 'shift-a', 'b', 'control-f', 'l', 'shift-l', 'o', 'p', 'r', + 'shift-a', 'b', 'control-f', + 'l', 'shift-l', 'o', 'p', 'r', 'shift-r', 's', 't', 'v', 'w'] self.mouseEvents = ['mouse1', 'mouse1-up', 'shift-mouse1', 'shift-mouse1-up', @@ -199,6 +202,7 @@ class DirectSession(PandaObject): self.selected.reset() # Accept appropriate hooks self.enableKeyEvents() + self.enableModifierEvents() self.enableMouseEvents() self.enableActionEvents() # Set flag @@ -219,6 +223,7 @@ class DirectSession(PandaObject): # Accept appropriate hooks self.enableMouseEvents() self.enableActionEvents() + self.enableModifierEvents() # Set flag self.fEnabled = 1 @@ -230,6 +235,7 @@ class DirectSession(PandaObject): # Turn off object manipulation self.manipulationControl.disableManipulation() self.disableKeyEvents() + self.disableModifierEvents() self.disableMouseEvents() self.disableActionEvents() # Kill tasks @@ -255,6 +261,7 @@ class DirectSession(PandaObject): self.disableActionEvents() # But let mouse events pass through self.enableMouseEvents() + self.enableModifierEvents() def oobe(self): # If oobeMode was never set, set it to false and create the @@ -332,6 +339,10 @@ class DirectSession(PandaObject): for event in self.actionEvents: self.accept(event[0], event[1], extraArgs = event[2:]) + def enableModifierEvents(self): + for event in self.modifierEvents: + self.accept(event, self.inputHandler, [event]) + def enableKeyEvents(self): for event in self.keyEvents: self.accept(event, self.inputHandler, [event]) @@ -344,6 +355,10 @@ class DirectSession(PandaObject): for event, method in self.actionEvents: self.ignore(event) + def disableModifierEvents(self): + for event in self.modifierEvents: + self.ignore(event) + def disableKeyEvents(self): for event in self.keyEvents: self.ignore(event)