1 #include <osgVolume/Layer>
2 #include <osgDB/ObjectWrapper>
3 #include <osgDB/InputStream>
4 #include <osgDB/OutputStream>
5 
checkLayers(const osgVolume::CompositeLayer & layer)6 static bool checkLayers( const osgVolume::CompositeLayer& layer )
7 {
8     return layer.getNumLayers()>0;
9 }
10 
readLayers(osgDB::InputStream & is,osgVolume::CompositeLayer & layer)11 static bool readLayers( osgDB::InputStream& is, osgVolume::CompositeLayer& layer )
12 {
13     unsigned int size = 0; is >> size >> is.BEGIN_BRACKET;
14     for ( unsigned int i=0; i<size; ++i )
15     {
16         osg::ref_ptr<osgVolume::Layer> child = is.readObjectOfType<osgVolume::Layer>();
17         if ( child ) layer.addLayer( child );
18     }
19     is >> is.END_BRACKET;
20     return true;
21 }
22 
writeLayers(osgDB::OutputStream & os,const osgVolume::CompositeLayer & layer)23 static bool writeLayers( osgDB::OutputStream& os, const osgVolume::CompositeLayer& layer )
24 {
25     unsigned int size = layer.getNumLayers();
26     os << size << os.BEGIN_BRACKET << std::endl;
27     for ( unsigned int i=0; i<size; ++i )
28     {
29         os << layer.getLayer(i);
30     }
31     os << os.END_BRACKET << std::endl;
32     return true;
33 }
34 
35 REGISTER_OBJECT_WRAPPER( osgVolume_CompositeLayer,
36                          new osgVolume::CompositeLayer,
37                          osgVolume::CompositeLayer,
38                          "osg::Object osgVolume::Layer osgVolume::CompositeLayer" )
39 {
40     ADD_USER_SERIALIZER( Layers );  // _layers
41 }
42