1 #include <osgParticle/MultiSegmentPlacer> 2 #include <osgDB/ObjectWrapper> 3 #include <osgDB/InputStream> 4 #include <osgDB/OutputStream> 5 checkVertices(const osgParticle::MultiSegmentPlacer & placer)6static bool checkVertices( const osgParticle::MultiSegmentPlacer& placer ) 7 { 8 return placer.numVertices()>0; 9 } 10 readVertices(osgDB::InputStream & is,osgParticle::MultiSegmentPlacer & placer)11static bool readVertices( osgDB::InputStream& is, osgParticle::MultiSegmentPlacer& placer ) 12 { 13 unsigned int size = 0; is >> size >> is.BEGIN_BRACKET; 14 for ( unsigned int i=0; i<size; ++i ) 15 { 16 osg::Vec3d vec; is >> vec; 17 placer.addVertex( vec ); 18 } 19 is >> is.END_BRACKET; 20 return true; 21 } 22 writeVertices(osgDB::OutputStream & os,const osgParticle::MultiSegmentPlacer & placer)23static bool writeVertices( osgDB::OutputStream& os, const osgParticle::MultiSegmentPlacer& placer ) 24 { 25 unsigned int size = placer.numVertices(); 26 os << size << os.BEGIN_BRACKET << std::endl; 27 for ( unsigned int i=0; i<size; ++i ) 28 { 29 os << osg::Vec3d(placer.getVertex(i)); 30 } 31 os << std::endl; 32 os << os.END_BRACKET << std::endl; 33 return true; 34 } 35 36 REGISTER_OBJECT_WRAPPER( osgParticleMultiSegmentPlacer, 37 new osgParticle::MultiSegmentPlacer, 38 osgParticle::MultiSegmentPlacer, 39 "osg::Object osgParticle::Placer osgParticle::MultiSegmentPlacer" ) 40 { 41 ADD_USER_SERIALIZER( Vertices ); // _vx 42 } 43