Show
Ignore:
Timestamp:
12/06/07 18:53:22 (6 years ago)
Author:
robert
Message:

From Bob Kuehne, added extra event handlers

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • OpenSceneGraph/trunk/examples/osgmovie/osgmovie.cpp

    r7594 r7615  
    3535 
    3636#include <osgGA/TrackballManipulator> 
     37#include <osgGA/StateSetManipulator> 
    3738#include <osgGA/EventVisitor> 
    3839 
     
    4445public: 
    4546 
    46     MovieEventHandler():_trackMouse(false) {} 
     47    MovieEventHandler():_trackMouse(false),playToggle_(true) {} 
    4748     
    4849    void setMouseTracking(bool track) { _trackMouse = track; } 
     
    5556    virtual void getUsage(osg::ApplicationUsage& usage) const; 
    5657 
    57     typedef std::vector< osg::observer_ptr<osg::ImageStream> > ImageStreamList; 
     58    typedef std::vector< osg::ref_ptr<osg::ImageStream> > ImageStreamList; 
    5859 
    5960protected: 
     
    113114 
    114115 
     116    bool            playToggle_; 
    115117    bool            _trackMouse; 
    116118    ImageStreamList _imageStreamList; 
     
    197199        case(osgGA::GUIEventAdapter::KEYDOWN): 
    198200        { 
    199             if (ea.getKey()=='s') 
     201            if (ea.getKey()=='p') 
    200202            { 
    201203                for(ImageStreamList::iterator itr=_imageStreamList.begin(); 
     
    203205                    ++itr) 
    204206                { 
    205                     std::cout<<"Play"<<std::endl; 
    206                     (*itr)->play(); 
    207                 } 
    208                 return true; 
    209             } 
    210             else if (ea.getKey()=='p') 
    211             { 
    212                 for(ImageStreamList::iterator itr=_imageStreamList.begin(); 
    213                     itr!=_imageStreamList.end(); 
    214                     ++itr) 
    215                 { 
    216                     std::cout<<"Pause"<<std::endl; 
    217                     (*itr)->pause(); 
    218                 } 
    219                 return true; 
    220             } 
    221             else if (ea.getKey()=='+') 
    222             { 
    223                 for(ImageStreamList::iterator itr=_imageStreamList.begin(); 
    224                     itr!=_imageStreamList.end(); 
    225                     ++itr) 
    226                 { 
    227                     osg::ImageStream* movie = itr->get(); 
    228                     movie->setVolume(movie->getVolume()+0.1f); 
    229                 } 
    230                 return true; 
    231             } 
    232             else if (ea.getKey()=='-') 
    233             { 
    234                 for(ImageStreamList::iterator itr=_imageStreamList.begin(); 
    235                     itr!=_imageStreamList.end(); 
    236                     ++itr) 
    237                 { 
    238                     osg::ImageStream* movie = itr->get(); 
    239                     movie->setVolume(movie->getVolume()-0.1f); 
     207                    playToggle_ = !playToggle_; 
     208                    if ( playToggle_ ) 
     209                    { 
     210                        // playing, so pause 
     211                        std::cout<<"Play"<<std::endl; 
     212                        (*itr)->play(); 
     213                    } 
     214                    else 
     215                    { 
     216                        // playing, so pause 
     217                        std::cout<<"Pause"<<std::endl; 
     218                        (*itr)->pause(); 
     219                    } 
    240220                } 
    241221                return true; 
     
    253233                return true; 
    254234            } 
    255             else if (ea.getKey()=='l') 
     235            else if (ea.getKey()=='L') 
    256236            { 
    257237                for(ImageStreamList::iterator itr=_imageStreamList.begin(); 
     
    283263void MovieEventHandler::getUsage(osg::ApplicationUsage& usage) const 
    284264{ 
    285     usage.addKeyboardMouseBinding("p","Pause movie"); 
    286     usage.addKeyboardMouseBinding("s","Play movie"); 
     265    usage.addKeyboardMouseBinding("p","Play/Pause movie"); 
    287266    usage.addKeyboardMouseBinding("r","Restart movie"); 
    288267    usage.addKeyboardMouseBinding("l","Toggle looping of movie"); 
     
    466445    // pass the model to the MovieEventHandler so it can pick out ImageStream's to manipulate. 
    467446    MovieEventHandler* meh = new MovieEventHandler(); 
    468     meh->set(viewer.getSceneData()); 
    469     viewer.addEventHandler(meh); 
    470      
    471     // add in support for stats 
    472     viewer.addEventHandler(new osgViewer::StatsHandler()); 
     447    meh->set( viewer.getSceneData() ); 
     448    viewer.addEventHandler( meh ); 
     449 
     450    viewer.addEventHandler( new osgViewer::StatsHandler ); 
     451    viewer.addEventHandler( new osgGA::StateSetManipulator( viewer.getCamera()->getOrCreateStateSet() ) ); 
     452    viewer.addEventHandler( new osgViewer::WindowSizeHandler ); 
     453 
     454    // add the record camera path handler 
     455    viewer.addEventHandler(new osgViewer::RecordCameraPathHandler); 
    473456 
    474457    // report any errors if they have occured when parsing the program aguments.