virtual ReadResult readObject(std::istream& fin, const osgDB::ReaderWriter::Options* options) const { osgDB::Input fr; fr.attach(&fin); fr.setOptions(options); typedef std::vector< osg::ref_ptr<osgViewer::View> > ViewList; ViewList viewList; // load all nodes in file, placing them in a group. while(!fr.eof()) { osg::ref_ptr<osg::Object> object = fr.readObject(); osgViewer::View* view = dynamic_cast<osgViewer::View*>(object.get()); if (view) { viewList.push_back(view); } else fr.advanceOverCurrentFieldOrBlock(); } if (viewList.empty()) { return ReadResult("No data loaded"); } else if (viewList.size()==1) { return viewList.front().get(); } else { OSG_NOTICE<<"Found multiple view's, just taking first"<<std::endl; return viewList.front().get(); } }