示例#1
0
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;
}
示例#4
0
//------------------------------------------------------------------------------
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;
}
示例#5
0
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;
}
示例#7
0
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;
}
示例#8
0
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;
}
示例#9
0
文件: Program.cpp 项目: yueying/osg
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;
}
示例#10
0
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;
}
示例#11
0
文件: Program.cpp 项目: BodyViz/osg
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;
}
示例#12
0
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;
}
示例#13
0
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;
}
示例#14
0
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;
}
示例#15
0
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;
}
示例#16
0
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;
}
示例#17
0
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;
}
示例#18
0
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;
}
示例#19
0
文件: Locator.cpp 项目: 3dcl/osg
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;
}
示例#20
0
文件: Billboard.cpp 项目: yueying/osg
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;
}
示例#21
0
//------------------------------------------------------------------------------
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;
}
示例#22
0
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;
}
示例#23
0
文件: Dragger.cpp 项目: aalex/osg
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;
}
示例#24
0
static bool writeFont(osgDB::OutputStream &os, const osgText::TextBase &text)
{
    os.writeWrappedString(text.getFont()->getFileName());
    os << std::endl;
    return true;
}
示例#25
0
static bool writeLightingMap( osgDB::OutputStream& os, const osgFX::AnisotropicLighting& effect )
{
    os.writeWrappedString( effect.getLightingMap()->getFileName() );
    os << std::endl; return true;
}