- Timestamp:
- 01/03/06 17:52:06 (7 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
OpenSceneGraph/trunk/examples/osgkeyboardmouse/osgkeyboardmouse.cpp
r4952 r4955 15 15 16 16 #include <osgDB/ReadFile> 17 #include <osgDB/WriteFile> 17 18 18 19 #include <osgFX/Scribe> 19 20 21 22 class CreateModelToSaveVisitor : public osg::NodeVisitor 23 { 24 public: 25 26 CreateModelToSaveVisitor(): 27 osg::NodeVisitor(osg::NodeVisitor::TRAVERSE_ALL_CHILDREN) 28 { 29 _group = new osg::Group; 30 _addToModel = false; 31 } 32 33 virtual void apply(osg::Node& node) 34 { 35 osgFX::Scribe* scribe = dynamic_cast<osgFX::Scribe*>(&node); 36 if (scribe) 37 { 38 for(unsigned int i=0; i<scribe->getNumChildren(); ++i) 39 { 40 _group->addChild(scribe->getChild(i)); 41 } 42 } 43 else 44 { 45 traverse(node); 46 } 47 } 48 49 osg::ref_ptr<osg::Group> _group; 50 bool _addToModel; 51 }; 20 52 21 53 class MyKeyboardMouseCallback : public Producer::KeyboardMouseCallback … … 48 80 { 49 81 if (key==' ') resetTrackball(); 82 else if (key=='o') saveSelectedModel(); 50 83 } 51 84 … … 186 219 } 187 220 221 void saveSelectedModel() 222 { 223 CreateModelToSaveVisitor cmtsv; 224 _sceneView->getSceneData()->accept(cmtsv); 225 226 if (cmtsv._group->getNumChildren()>0) 227 { 228 osgDB::writeNodeFile(*cmtsv._group, "selected_model.osg"); 229 } 230 } 231 188 232 private: 189 233
