Changeset 10799

Show
Ignore:
Timestamp:
11/20/09 11:54:39 (4 years ago)
Author:
robert
Message:

From Cedric Pinson, "here an update of osgmovie example with the following features:
- play and pause now stop and play all streams given in the command line
(not only the first)
- add key + - to increase decrease the speed of all streams
- add key o to display all stream frame rate
"

Files:
1 modified

Legend:

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

    r10193 r10799  
    4444public: 
    4545 
    46     MovieEventHandler():_playToggle(true),_trackMouse(false) {} 
     46    MovieEventHandler():_trackMouse(false) {} 
    4747 
    4848    void setMouseTracking(bool track) { _trackMouse = track; } 
     
    117117 
    118118 
    119     bool            _playToggle; 
    120119    bool            _trackMouse; 
    121120    ImageStreamList _imageStreamList; 
     
    212211                    ++itr) 
    213212                { 
    214                     _playToggle = !_playToggle; 
    215                     if ( _playToggle ) 
     213                    osg::ImageStream::StreamStatus playToggle = (*itr)->getStatus(); 
     214                    if (playToggle != osg::ImageStream::PLAYING) 
    216215                    { 
    217                         // playing, so pause 
    218                         std::cout<<"Play"<<std::endl; 
     216                        std::cout<< (*itr).get() << " Play"<<std::endl; 
    219217                        (*itr)->play(); 
    220218                    } 
     
    222220                    { 
    223221                        // playing, so pause 
    224                         std::cout<<"Pause"<<std::endl; 
     222                        std::cout<< (*itr).get() << " Pause"<<std::endl; 
    225223                        (*itr)->pause(); 
    226224                    } 
     
    234232                    ++itr) 
    235233                { 
    236                     std::cout<<"Restart"<<std::endl; 
     234                    std::cout<< (*itr).get() << " Restart"<<std::endl; 
    237235                    (*itr)->rewind(); 
    238236                    (*itr)->play(); 
     
    248246                    if ( (*itr)->getLoopingMode() == osg::ImageStream::LOOPING) 
    249247                    { 
    250                         std::cout<<"Toggle Looping Off"<<std::endl; 
     248                        std::cout<< (*itr).get() << " Toggle Looping Off"<<std::endl; 
    251249                        (*itr)->setLoopingMode( osg::ImageStream::NO_LOOPING ); 
    252250                    } 
    253251                    else 
    254252                    { 
    255                         std::cout<<"Toggle Looping On"<<std::endl; 
     253                        std::cout<< (*itr).get() << " Toggle Looping On"<<std::endl; 
    256254                        (*itr)->setLoopingMode( osg::ImageStream::LOOPING ); 
    257255                    } 
     256                } 
     257                return true; 
     258            } 
     259            else if (ea.getKey()=='+') 
     260            { 
     261                for(ImageStreamList::iterator itr=_imageStreamList.begin(); 
     262                    itr!=_imageStreamList.end(); 
     263                    ++itr) 
     264                { 
     265                    double tm = (*itr)->getTimeMultiplier(); 
     266                    tm += 0.1; 
     267                    (*itr)->setTimeMultiplier(tm); 
     268                    std::cout << (*itr).get() << " Increase speed rate "<< (*itr)->getTimeMultiplier() << std::endl; 
     269                } 
     270                return true; 
     271            } 
     272            else if (ea.getKey()=='-') 
     273            { 
     274                for(ImageStreamList::iterator itr=_imageStreamList.begin(); 
     275                    itr!=_imageStreamList.end(); 
     276                    ++itr) 
     277                { 
     278                    double tm = (*itr)->getTimeMultiplier(); 
     279                    tm -= 0.1; 
     280                    (*itr)->setTimeMultiplier(tm); 
     281                    std::cout << (*itr).get() << " Decrease speed rate "<< (*itr)->getTimeMultiplier() << std::endl; 
     282                } 
     283                return true; 
     284            } 
     285            else if (ea.getKey()=='o') 
     286            { 
     287                for(ImageStreamList::iterator itr=_imageStreamList.begin(); 
     288                    itr!=_imageStreamList.end(); 
     289                    ++itr) 
     290                { 
     291                    std::cout<< (*itr).get() << " Frame rate  "<< (*itr)->getFrameRate() <<std::endl; 
    258292                } 
    259293                return true; 
     
    273307    usage.addKeyboardMouseBinding("r","Restart movie"); 
    274308    usage.addKeyboardMouseBinding("l","Toggle looping of movie"); 
     309    usage.addKeyboardMouseBinding("+","Increase speed of movie"); 
     310    usage.addKeyboardMouseBinding("-","Decrease speed of movie"); 
     311    usage.addKeyboardMouseBinding("o","Display frame rate of movie"); 
    275312} 
    276313