1 #include <osgVolume/Layer> 2 #include <osgDB/ObjectWrapper> 3 #include <osgDB/InputStream> 4 #include <osgDB/OutputStream> 5 checkLayers(const osgVolume::CompositeLayer & layer)6static bool checkLayers( const osgVolume::CompositeLayer& layer ) 7 { 8 return layer.getNumLayers()>0; 9 } 10 readLayers(osgDB::InputStream & is,osgVolume::CompositeLayer & layer)11static 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)23static 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