Show
Ignore:
Timestamp:
07/03/09 21:16:53 (3 years ago)
Author:
robert
Message:

Added Dragger::s/getActivationModKeyMask(..) and Dragger::s/getActivationKeyEvent(...) methods to make it possible to have draggers that only respond when you press a specified modified key or standard key.

Changed the optional dragger in osgvolume to require the shift key to be pressed for the dragger to become active.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • OpenSceneGraph/trunk/include/osgManipulator/Dragger

    r10446 r10454  
    218218        bool getHandleEvents() const { return _handleEvents; } 
    219219 
     220        void setActivationModKeyMask(unsigned int mask) { _activationModKeyMask = mask; } 
     221        unsigned int getActivationModKeyMask() const { return _activationModKeyMask; } 
     222 
     223        void setActivationKeyEvent(int key) { _activationKeyEvent = key; } 
     224        int getActivationKeyEvent() const { return _activationKeyEvent; } 
     225 
     226 
     227        virtual void traverse(osg::NodeVisitor& nv); 
     228 
     229        virtual bool handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa); 
     230        virtual bool handle(const PointerInfo&, const osgGA::GUIEventAdapter&, osgGA::GUIActionAdapter&) { return false; } 
     231 
     232 
     233        typedef std::vector< osg::ref_ptr<Constraint> > Constraints; 
     234 
     235        void addConstraint(Constraint* constraint); 
     236        void removeConstraint(Constraint* constraint); 
     237 
     238        Constraints& getConstraints() { return _constraints; } 
     239        const Constraints& getConstraints() const { return _constraints; } 
     240 
     241 
     242        typedef std::vector< osg::ref_ptr<DraggerCallback> > DraggerCallbacks; 
     243 
     244        void addDraggerCallback(DraggerCallback* dc); 
     245        void removeDraggerCallback(DraggerCallback* dc); 
     246 
     247        DraggerCallbacks& getDraggerCallbacks() { return _draggerCallbacks; } 
     248        const DraggerCallbacks& getDraggerCallbacks() const { return _draggerCallbacks; } 
     249 
     250        void addTransformUpdating(MatrixTransform* transform); 
     251        void removeTransformUpdating(MatrixTransform* transform); 
     252 
     253        /** Setup default geometry for dragger. */ 
     254        virtual void setupDefaultGeometry() {} 
     255 
     256    protected: 
     257 
     258        Dragger(); 
     259        Dragger(const Dragger& rhs, const osg::CopyOp& copyop = osg::CopyOp::SHALLOW_COPY); 
     260 
     261        virtual ~Dragger(); 
     262 
     263        virtual bool receive(const MotionCommand& command); 
     264        void dispatch(MotionCommand& command); 
     265 
    220266        void setDraggerActive(bool active) { _draggerActive = active; } 
    221267        bool getDraggerActive() const { return _draggerActive; } 
    222268 
    223  
    224         virtual void traverse(osg::NodeVisitor& nv); 
    225  
    226         virtual bool handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa); 
    227         virtual bool handle(const PointerInfo&, const osgGA::GUIEventAdapter&, osgGA::GUIActionAdapter&) { return false; } 
    228  
    229  
    230         typedef std::vector< osg::ref_ptr<Constraint> > Constraints; 
    231  
    232         void addConstraint(Constraint* constraint); 
    233         void removeConstraint(Constraint* constraint); 
    234  
    235         Constraints& getConstraints() { return _constraints; } 
    236         const Constraints& getConstraints() const { return _constraints; } 
    237  
    238  
    239         typedef std::vector< osg::ref_ptr<DraggerCallback> > DraggerCallbacks; 
    240  
    241         void addDraggerCallback(DraggerCallback* dc); 
    242         void removeDraggerCallback(DraggerCallback* dc); 
    243  
    244         DraggerCallbacks& getDraggerCallbacks() { return _draggerCallbacks; } 
    245         const DraggerCallbacks& getDraggerCallbacks() const { return _draggerCallbacks; } 
    246  
    247         void addTransformUpdating(MatrixTransform* transform); 
    248         void removeTransformUpdating(MatrixTransform* transform); 
    249  
    250         /** Setup default geometry for dragger. */ 
    251         virtual void setupDefaultGeometry() {} 
    252  
    253     protected: 
    254  
    255         Dragger(); 
    256         Dragger(const Dragger& rhs, const osg::CopyOp& copyop = osg::CopyOp::SHALLOW_COPY); 
    257  
    258         virtual ~Dragger(); 
    259  
    260         virtual bool receive(const MotionCommand& command); 
    261         void dispatch(MotionCommand& command); 
    262  
    263269        bool                            _handleEvents; 
    264270        bool                            _draggerActive; 
     271 
     272        unsigned int                    _activationModKeyMask; 
     273        int                             _activationKeyEvent; 
     274        bool                            _activationPermittedByModKeyMask; 
     275        bool                            _activationPermittedByKeyEvent; 
     276 
    265277        osgManipulator::PointerInfo     _pointer; 
    266278