Changeset 7615 for OpenSceneGraph/trunk/examples/osgmovie/osgmovie.cpp
- Timestamp:
- 12/06/07 18:53:22 (5 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
OpenSceneGraph/trunk/examples/osgmovie/osgmovie.cpp
r7594 r7615 35 35 36 36 #include <osgGA/TrackballManipulator> 37 #include <osgGA/StateSetManipulator> 37 38 #include <osgGA/EventVisitor> 38 39 … … 44 45 public: 45 46 46 MovieEventHandler():_trackMouse(false) {}47 MovieEventHandler():_trackMouse(false),playToggle_(true) {} 47 48 48 49 void setMouseTracking(bool track) { _trackMouse = track; } … … 55 56 virtual void getUsage(osg::ApplicationUsage& usage) const; 56 57 57 typedef std::vector< osg:: observer_ptr<osg::ImageStream> > ImageStreamList;58 typedef std::vector< osg::ref_ptr<osg::ImageStream> > ImageStreamList; 58 59 59 60 protected: … … 113 114 114 115 116 bool playToggle_; 115 117 bool _trackMouse; 116 118 ImageStreamList _imageStreamList; … … 197 199 case(osgGA::GUIEventAdapter::KEYDOWN): 198 200 { 199 if (ea.getKey()==' s')201 if (ea.getKey()=='p') 200 202 { 201 203 for(ImageStreamList::iterator itr=_imageStreamList.begin(); … … 203 205 ++itr) 204 206 { 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 } 240 220 } 241 221 return true; … … 253 233 return true; 254 234 } 255 else if (ea.getKey()==' l')235 else if (ea.getKey()=='L') 256 236 { 257 237 for(ImageStreamList::iterator itr=_imageStreamList.begin(); … … 283 263 void MovieEventHandler::getUsage(osg::ApplicationUsage& usage) const 284 264 { 285 usage.addKeyboardMouseBinding("p","Pause movie"); 286 usage.addKeyboardMouseBinding("s","Play movie"); 265 usage.addKeyboardMouseBinding("p","Play/Pause movie"); 287 266 usage.addKeyboardMouseBinding("r","Restart movie"); 288 267 usage.addKeyboardMouseBinding("l","Toggle looping of movie"); … … 466 445 // pass the model to the MovieEventHandler so it can pick out ImageStream's to manipulate. 467 446 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); 473 456 474 457 // report any errors if they have occured when parsing the program aguments.
