Changeset 523


Ignore:
Timestamp:
09/24/10 14:12:50 (20 months ago)
Author:
ddangelo
Message:

-The Monitor setup automatically generates a keyboard device for all subdisplays and caches it for future use. Also uses this instance for the default actions of the viewer (Fullscreen, Position reset, ...)
-The combination "ALT-O" now triggers a run of the osg::optimizer on the root of the scenegraph of the given subdisplay. This can result in big performance benefit for badly balanced scenegraphs.

Location:
trunk/avango-display/python/avango/display
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/avango-display/python/avango/display/_device.py

    r484 r523  
    9292    Key8 = avango.SFBool() 
    9393    Key9 = avango.SFBool() 
     94     
     95    KeyO = avango.SFBool() 
    9496 
    9597    KeyX = avango.SFBool() 
     
    116118        self.__keymap[56] = self.Key8 
    117119        self.__keymap[57] = self.Key9 
     120         
     121        self.__keymap[111] = self.KeyO 
    118122 
    119123        self.__keymap[120] = self.KeyX 
     
    146150        for k in self.KeysPressed.value: 
    147151            pressed_keys.append(k) 
    148  
     152             
    149153        #pressed keys 
    150154        for key in pressed_keys: 
  • trunk/avango-display/python/avango/display/_display.py

    r518 r523  
    9090            self.connect_view_field(user_selector.ViewOut) 
    9191 
    92             self.view_created(camera,view,subdisplay) 
     92            self.view_created(camera, view, subdisplay) 
    9393 
    9494        if self._inspector and len(self._inspector.Children.value) == 0: 
  • trunk/avango-display/python/avango/display/setups/Monitor.py

    r518 r523  
    3636        self._subdisplay_window = {} 
    3737        self._subdisplay_window_events = {} 
     38        self._subdisplay_keyboard = {} 
    3839        self._subdisplay_camera = {} 
    3940 
     
    9293             
    9394            self.view_created(camera,view,subdisplay) 
     95             
     96        #generate and connect keyboard 
     97        self._subdisplay_keyboard[subdisplay] = avango.display.KeyboardDevice() 
     98        self._subdisplay_keyboard[subdisplay].connect(self._subdisplay_window_events[subdisplay]) 
    9499         
    95100        #configure trackball 
     
    100105        trackball.Enable.connect_from(display_view.EnableTrackball) 
    101106        toggle_field = avango.utils.make_key_toggle_trigger_alternate( 
    102                         avango.utils.make_bool2_and(self._subdisplay_window_events[subdisplay].KeyShift, 
    103                                                     self._subdisplay_window_events[subdisplay].KeyEnter), 
     107                        avango.utils.make_bool2_and(self._subdisplay_keyboard[subdisplay].KeyShift, 
     108                                                    self._subdisplay_keyboard[subdisplay].KeyEnter), 
    104109                       True) 
    105110        trackball.CenterToBoundingSphere.connect_from(toggle_field) 
     
    108113        trackball.SpinningTimeThreshold.value = 0.5 
    109114        trackball.Direction.connect_from(self._subdisplay_window[subdisplay].MousePositionNorm) 
    110         trackball.RotateTrigger.connect_from(self._subdisplay_window_events[subdisplay].MouseButtons_OnlyMiddle) 
    111         trackball.PanTrigger.connect_from(self._subdisplay_window_events[subdisplay].MouseButtons_LeftAndMiddle) 
    112         trackball.ZoomTrigger.connect_from(self._subdisplay_window_events[subdisplay].MouseButtons_OnlyRight) 
    113         trackball.ResetTrigger.connect_from(self._subdisplay_window_events[subdisplay].KeySpace) 
     115        trackball.RotateTrigger.connect_from(self._subdisplay_keyboard[subdisplay].MouseButtons_OnlyMiddle) 
     116        trackball.PanTrigger.connect_from(self._subdisplay_keyboard[subdisplay].MouseButtons_LeftAndMiddle) 
     117        trackball.ZoomTrigger.connect_from(self._subdisplay_keyboard[subdisplay].MouseButtons_OnlyRight) 
     118        trackball.ResetTrigger.connect_from(self._subdisplay_keyboard[subdisplay].KeySpace) 
    114119         
    115120        display_view.Camera.connect_from(trackball.Matrix) 
     
    122127        #show window decoration (Ctrl+Enter) 
    123128        toggle_field = avango.utils.make_key_toggle_trigger_alternate( 
    124                           avango.utils.make_bool2_and(self._subdisplay_window_events[subdisplay].KeyCtrl, 
    125                                                       self._subdisplay_window_events[subdisplay].KeyEnter), 
     129                          avango.utils.make_bool2_and(self._subdisplay_keyboard[subdisplay].KeyCtrl, 
     130                                                      self._subdisplay_keyboard[subdisplay].KeyEnter), 
    126131                          True) 
    127132        display_view.WindowDecoration.connect_from(toggle_field) 
     
    129134        #toggle fullscreen (Alt+Enter) 
    130135        toggle_field = avango.utils.make_key_toggle_trigger(  
    131                             avango.utils.make_bool2_and(self._subdisplay_window_events[subdisplay].KeyAlt, 
    132                                                         self._subdisplay_window_events[subdisplay].KeyEnter) ) 
     136                            avango.utils.make_bool2_and(self._subdisplay_keyboard[subdisplay].KeyAlt, 
     137                                                        self._subdisplay_keyboard[subdisplay].KeyEnter) ) 
    133138        display_view.ToggleFullScreen.connect_from(toggle_field) 
    134139        self._subdisplay_window[subdisplay].ToggleFullScreen.connect_from(display_view.ToggleFullScreen) 
     140         
     141        node_optimizer = avango.utils.nodes.NodeOptimizer() 
     142        node_optimizer.Node.connect_from(display_view.Root) 
     143        toggle_field = avango.utils.make_key_released_trigger(  
     144                            avango.utils.make_bool2_and(self._subdisplay_keyboard[subdisplay].KeyAlt, 
     145                                                        self._subdisplay_keyboard[subdisplay].KeyO) ) 
     146        node_optimizer.Trigger.connect_from(toggle_field) 
     147        self.keep_alive(node_optimizer) 
    135148         
    136149        return display_view 
     
    163176 
    164177        if interface == "Keyboard": 
    165             keyboard = avango.display.KeyboardDevice() 
    166             keyboard.connect(self._subdisplay_window_events[subdisplay]) 
    167             return keyboard 
     178            return self._subdisplay_keyboard[subdisplay] 
    168179 
    169180        elif interface == "Mouse": 
Note: See TracChangeset for help on using the changeset viewer.