bool handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa) { osgViewer::Viewer* viewer = dynamic_cast<osgViewer::Viewer*>(&aa); if (!viewer) return false; if (_filenames.empty()) return false; switch(ea.getEventType()) { case(osgGA::GUIEventAdapter::KEYUP): { if (ea.getKey()=='l') { osg::ref_ptr<osg::Node> model = osgDB::readNodeFile( _filenames[_position] ); ++_position; if (_position>=_filenames.size()) _position = 0; if (model.valid()) { viewer->setSceneData(model.get()); } return true; } } default: break; } return false; }