static bool readInfluenceMap( osgDB::InputStream& is, osgAnimation::RigGeometry& geom ) { osg::ref_ptr<osgAnimation::VertexInfluenceMap> map = new osgAnimation::VertexInfluenceMap; unsigned int size = is.readSize(); is >> is.BEGIN_BRACKET; for ( unsigned int i=0; i<size; ++i ) { std::string name; unsigned int viSize = 0; is >> is.PROPERTY("VertexInfluence"); is.readWrappedString(name); viSize = is.readSize(); is >> is.BEGIN_BRACKET; osgAnimation::VertexInfluence vi; vi.setName( name ); vi.reserve( viSize ); for ( unsigned int j=0; j<viSize; ++j ) { int index = 0; float weight = 0.0f; is >> index >> weight; vi.push_back( osgAnimation::VertexIndexWeight(index, weight) ); } (*map)[name] = vi; is >> is.END_BRACKET; } is >> is.END_BRACKET; if ( !map->empty() ) geom.setInfluenceMap( map.get() ); return true; }
static bool readValues( osgDB::InputStream& is, osgSim::MultiSwitch& node ) { unsigned int size = is.readSize(); is >> is.BEGIN_BRACKET; for ( unsigned int i=0; i<size; ++i ) { is >> is.PROPERTY("SwitchSet"); unsigned int valueSize = is.readSize(); is >> is.BEGIN_BRACKET; osgSim::MultiSwitch::ValueList values; for ( unsigned int j=0; j<valueSize; ++j ) { bool value; is >> value; values.push_back( value ); } node.setValueList( i, values ); is >> is.END_BRACKET; } is >> is.END_BRACKET; return true; }