1 #include <osgParticle/MultiSegmentPlacer>
2 #include <osgDB/ObjectWrapper>
3 #include <osgDB/InputStream>
4 #include <osgDB/OutputStream>
5 
checkVertices(const osgParticle::MultiSegmentPlacer & placer)6 static bool checkVertices( const osgParticle::MultiSegmentPlacer& placer )
7 {
8     return placer.numVertices()>0;
9 }
10 
readVertices(osgDB::InputStream & is,osgParticle::MultiSegmentPlacer & placer)11 static 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)23 static 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