static bool writeInfluenceMap( osgDB::OutputStream& os, const osgAnimation::RigGeometry& geom ) { const osgAnimation::VertexInfluenceMap* map = geom.getInfluenceMap(); os.writeSize(map->size()); os << os.BEGIN_BRACKET << std::endl; for ( osgAnimation::VertexInfluenceMap::const_iterator itr=map->begin(); itr!=map->end(); ++itr ) { std::string name = itr->first; const osgAnimation::VertexInfluence& vi = itr->second; if ( name.empty() ) name = "Empty"; os << os.PROPERTY("VertexInfluence"); os.writeWrappedString(name); os.writeSize(vi.size()) ; os << os.BEGIN_BRACKET << std::endl; for ( osgAnimation::VertexInfluence::const_iterator vitr=vi.begin(); vitr != vi.end(); ++vitr ) { os << vitr->first << vitr->second << std::endl; } os << os.END_BRACKET << std::endl; } os << os.END_BRACKET << std::endl; return true; }
static bool writeImages( osgDB::OutputStream& os, const osg::ImageSequence& image) { const osg::ImageSequence::ImageDataList& imageDataList = image.getImageDataList(); os.writeSize(imageDataList.size()); os << os.BEGIN_BRACKET << std::endl; for ( osg::ImageSequence::ImageDataList::const_iterator itr=imageDataList.begin(); itr!=imageDataList.end(); ++itr ) { os.writeObject( (*itr)._image.get() ); } os << os.END_BRACKET << std::endl; return true; }
static bool writeFileNames( osgDB::OutputStream& os, const osg::ImageSequence& image ) { const osg::ImageSequence::ImageDataList& imageDataList = image.getImageDataList(); os.writeSize(imageDataList.size()); os << os.BEGIN_BRACKET << std::endl; for ( osg::ImageSequence::ImageDataList::const_iterator itr=imageDataList.begin(); itr!=imageDataList.end(); ++itr ) { os.writeWrappedString( itr->_filename ); os << std::endl; } os << os.END_BRACKET << std::endl; return true; }
//------------------------------------------------------------------------------ static bool writeModules( osgDB::OutputStream& os, const osgCuda::Computation& computation ) { const osgCompute::ModuleList modList = computation.getModules(); // Count attached resources unsigned int numMods = 0; for( osgCompute::ModuleListCnstItr modItr = modList.begin(); modItr != modList.end(); ++modItr ) if( !(*modItr)->getLibraryName().empty() ) numMods++; // Write attached resources os << numMods << osgDB::BEGIN_BRACKET << std::endl; for( osgCompute::ModuleListCnstItr modItr = modList.begin(); modItr != modList.end(); ++modItr ) { if( !(*modItr)->getLibraryName().empty() ) { os.writeWrappedString( (*modItr)->getLibraryName() ); os << std::endl; } } os << osgDB::END_BRACKET << std::endl; return true; }
static bool writeText(osgDB::OutputStream &os, const osgText::TextBase &text) { bool isACString = true; const osgText::String &string = text.getText(); for (osgText::String::const_iterator itr = string.begin(); itr != string.end(); ++itr) { if (*itr == 0 || *itr > 256) { isACString = false; break; } } os << isACString; if (isACString) { std::string acString; for (osgText::String::const_iterator itr = string.begin(); itr != string.end(); ++itr) { acString += (char)(*itr); } os.writeWrappedString(acString); os << std::endl; } else { osg::ref_ptr<osg::UIntArray> array = new osg::UIntArray(string.begin(), string.end()); os << array.get(); } return true; }
static bool writeInternalFormat( osgDB::OutputStream& os, const osg::Texture& tex ) { if ( os.isBinary() && tex.getInternalFormatMode()!=osg::Texture::USE_USER_DEFINED_FORMAT ) os << GLENUM(GL_NONE) << std::endl; // Avoid use of OpenGL extensions else os << GLENUM(tex.getInternalFormat()) << std::endl; return true; }
static bool writeValues( osgDB::OutputStream& os, const osgSim::MultiSwitch& node ) { const osgSim::MultiSwitch::SwitchSetList& switches = node.getSwitchSetList(); os.writeSize( switches.size() ); os << os.BEGIN_BRACKET << std::endl; for ( unsigned int i=0; i<switches.size(); ++i ) { const osgSim::MultiSwitch::ValueList& values = node.getValueList(i); os << os.PROPERTY("SwitchSet"); os.writeSize( values.size() ); os << os.BEGIN_BRACKET << std::endl; for ( osgSim::MultiSwitch::ValueList::const_iterator itr=values.begin(); itr!=values.end(); ++itr ) { os << *itr << std::endl; } os << os.END_BRACKET << std::endl; } os << os.END_BRACKET << std::endl; return true; }
static bool writeTextureWeights( osgDB::OutputStream& os, const osgFX::MultiTextureControl& ctrl ) { unsigned int size = ctrl.getNumTextureWeights(); os.writeSize(size); os << os.BEGIN_BRACKET << std::endl; for ( unsigned int i=0; i<size; ++i ) { os << ctrl.getTextureWeight(i); } os << os.END_BRACKET << std::endl; return true; }
static bool writeFeedBackVaryingsName( osgDB::OutputStream& os, const osg::Program& attr ) { unsigned int size = attr.getNumTransformFeedBackVaryings(); os.writeSize(size); os << os.BEGIN_BRACKET << std::endl; for ( unsigned int i=0; i<size; ++i ) { os << attr.getTransformFeedBackVarying(i)<< std::endl; } os << os.END_BRACKET << std::endl; return true; }
static bool writeFileNames( osgDB::OutputStream& os, const osg::ProxyNode& node ) { os << node.getNumFileNames() << os.BEGIN_BRACKET << std::endl; for ( unsigned int i=0; i<node.getNumFileNames(); ++i ) { os.writeWrappedString( node.getFileName(i) ); os << std::endl; } os << os.END_BRACKET << std::endl; return true; }
static bool writeShaders( osgDB::OutputStream& os, const osg::Program& attr ) { unsigned int size = attr.getNumShaders(); os.writeSize(size); os << os.BEGIN_BRACKET << std::endl; for ( unsigned int i=0; i<size; ++i ) { os << attr.getShader(i); } os << os.END_BRACKET << std::endl; return true; }
static bool writeShaderSource( osgDB::OutputStream& os, const osg::Shader& shader ) { std::vector<std::string> lines; std::istringstream iss( shader.getShaderSource() ); std::string line; while ( std::getline(iss, line) ) { lines.push_back( line ); } os.writeSize(lines.size()); os << os.BEGIN_BRACKET << std::endl; for ( std::vector<std::string>::const_iterator itr=lines.begin(); itr!=lines.end(); ++itr ) { os.writeWrappedString( *itr ); os << std::endl; } os << os.END_BRACKET << std::endl; return true; }
static bool writeStackedTransforms( osgDB::OutputStream& os, const osgAnimation::UpdateMatrixTransform& obj ) { const osgAnimation::StackedTransform& transform = obj.getStackedTransforms(); os.writeSize(transform.size()); os << os.BEGIN_BRACKET << std::endl; for ( osgAnimation::StackedTransform::const_iterator itr=transform.begin(); itr!=transform.end(); ++itr ) { os << itr->get(); } os << os.END_BRACKET << std::endl; return true; }
static bool writeRangeList( osgDB::OutputStream& os, const osg::LOD& node ) { const osg::LOD::RangeList& ranges = node.getRangeList(); os.writeSize(ranges.size()); os << os.BEGIN_BRACKET << std::endl; for ( osg::LOD::RangeList::const_iterator itr=ranges.begin(); itr!=ranges.end(); ++itr ) { os << itr->first << itr->second << std::endl; } os << os.END_BRACKET << std::endl; return true; }
static bool writeMatrices( osgDB::OutputStream& os, const osg::VertexProgram& vp ) { const osg::VertexProgram::MatrixList& matrices = vp.getMatrices(); os.writeSize(matrices.size()); os << os.BEGIN_BRACKET << std::endl; for ( osg::VertexProgram::MatrixList::const_iterator itr=matrices.begin(); itr!=matrices.end(); ++itr ) { os << (unsigned int)itr->first << osg::Matrixd(itr->second) << std::endl; } os << os.END_BRACKET << std::endl; return true; }
static bool writeLocalParameters( osgDB::OutputStream& os, const osg::VertexProgram& vp ) { const osg::VertexProgram::LocalParamList& params = vp.getLocalParameters(); os.writeSize(params.size()); os << os.BEGIN_BRACKET << std::endl; for ( osg::VertexProgram::LocalParamList::const_iterator itr=params.begin(); itr!=params.end(); ++itr ) { os << itr->first << osg::Vec4d(itr->second) << std::endl; } os << os.END_BRACKET << std::endl; return true; }
static bool writeAnimations( osgDB::OutputStream& os, const osgAnimation::AnimationManagerBase& manager ) { const osgAnimation::AnimationList& animations = manager.getAnimationList(); os.writeSize(animations.size()); os << osgDB::BEGIN_BRACKET << std::endl; for ( osgAnimation::AnimationList::const_iterator itr=animations.begin(); itr!=animations.end(); ++itr ) { os << itr->get(); } os << osgDB::END_BRACKET << std::endl; return true; }
static bool writeColorMap( osgDB::OutputStream& os, const osg::TransferFunction1D& func ) { const osg::TransferFunction1D::ColorMap& map = func.getColorMap(); os.writeSize(map.size()); os << os.BEGIN_BRACKET << std::endl; for ( osg::TransferFunction1D::ColorMap::const_iterator itr=map.begin(); itr!=map.end(); ++itr ) { os << itr->first << itr->second << std::endl; } os << os.END_BRACKET << std::endl; return true; }
static bool writeLocatorCallbacks( osgDB::OutputStream& os, const osgVolume::Locator& locator ) { const osgVolume::Locator::LocatorCallbacks& callbacks = locator.getLocatorCallbacks(); os.writeSize( callbacks.size() ); os << os.BEGIN_BRACKET << std::endl; for ( osgVolume::Locator::LocatorCallbacks::const_iterator itr=callbacks.begin(); itr!=callbacks.end(); ++itr ) { os << itr->get(); } os << os.END_BRACKET << std::endl; return true; }
static bool writePositionList( osgDB::OutputStream& os, const osg::Billboard& node ) { const osg::Billboard::PositionList& posList = node.getPositionList(); os.writeSize(posList.size()); os<< os.BEGIN_BRACKET << std::endl; for ( osg::Billboard::PositionList::const_iterator itr=posList.begin(); itr!=posList.end(); ++itr ) { os << osg::Vec3d(*itr) << std::endl; } os << os.END_BRACKET << std::endl; return true; }
//------------------------------------------------------------------------------ static bool writeResources( osgDB::OutputStream& os, const osgCuda::Computation& computation ) { const osgCompute::ResourceHandleList resList = computation.getResources(); // Count attached resources unsigned int numRes = 0; for( osgCompute::ResourceHandleListCnstItr resItr = resList.begin(); resItr != resList.end(); ++resItr ) if( resItr->_serialize ) numRes++; // Write attached resources os << numRes << osgDB::BEGIN_BRACKET << std::endl; for( osgCompute::ResourceHandleListCnstItr resItr = resList.begin(); resItr != resList.end(); ++resItr ) { if( resItr->_serialize ) { osgCompute::GLMemory* iom = dynamic_cast<osgCompute::GLMemory*>( (*resItr)._resource.get() ); if( iom != NULL ) { // if layered interoperability object then store the interoperability object osg::Object* ioo = dynamic_cast<osg::Object*>( iom->getAdapter() ); if( ioo ) os.writeObject( ioo ); } else { os.writeObject( (*resItr)._resource.get() ); } } } os << osgDB::END_BRACKET << std::endl; return true; }
static bool writeLayers( osgDB::OutputStream& os, const osgTerrain::CompositeLayer& layer ) { unsigned int size = layer.getNumLayers(); os << size << os.BEGIN_BRACKET << std::endl; for ( unsigned int i=0; i<size; ++i ) { const osgTerrain::Layer* child = layer.getLayer(i); std::string type = child ? std::string("Object") : std::string("File"); os << type; if ( child ) { os << child; } else { os.writeWrappedString( layer.getCompoundName(i) ); os << std::endl; } } os << os.END_BRACKET << std::endl; return true; }
static bool writeTransformUpdating( osgDB::OutputStream& os, const osgManipulator::Dragger& dragger ) { const osgManipulator::Dragger::DraggerCallbacks& callbacks = dragger.getDraggerCallbacks(); os.writeSize( callbacks.size() ); os << osgDB::BEGIN_BRACKET << std::endl; for ( osgManipulator::Dragger::DraggerCallbacks::const_iterator itr=callbacks.begin(); itr!=callbacks.end(); ++itr ) { osgManipulator::DraggerTransformCallback* dtcb = dynamic_cast<osgManipulator::DraggerTransformCallback*>( itr->get() ); if ( dtcb ) { os << std::string("DraggerTransformCallback") << osgDB::BEGIN_BRACKET << std::endl; os << dtcb->getTransform(); } else { os << std::string("DraggerCallback") << osgDB::BEGIN_BRACKET << std::endl; } os << osgDB::END_BRACKET << std::endl; } os << osgDB::END_BRACKET << std::endl; return true; }
static bool writeFont(osgDB::OutputStream &os, const osgText::TextBase &text) { os.writeWrappedString(text.getFont()->getFileName()); os << std::endl; return true; }
static bool writeLightingMap( osgDB::OutputStream& os, const osgFX::AnisotropicLighting& effect ) { os.writeWrappedString( effect.getLightingMap()->getFileName() ); os << std::endl; return true; }