#include #include #include #include bool MultiTextureControl_readLocalData(osg::Object &obj, osgDB::Input &fr); bool MultiTextureControl_writeLocalData(const osg::Object &obj, osgDB::Output &fw); osgDB::RegisterDotOsgWrapperProxy MultiTextureControl_Proxy ( new osgFX::MultiTextureControl, "osgFX::MultiTextureControl", "Object Node osgFX::MultiTextureControl Group", MultiTextureControl_readLocalData, MultiTextureControl_writeLocalData ); bool MultiTextureControl_readLocalData(osg::Object &obj, osgDB::Input &fr) { osgFX::MultiTextureControl &mtc = static_cast(obj); bool iteratorAdvanced = false; bool matchFirst = false; if ((matchFirst=fr.matchSequence("TextureWeights {")) || fr.matchSequence("TextureWeights %i {")) { // set up coordinates. int entry = fr[0].getNoNestedBrackets(); if (matchFirst) { fr += 2; } else { fr += 3; } float weight=0.0f; unsigned int i=0; while (!fr.eof() && fr[0].getNoNestedBrackets()>entry) { if (fr[0].getFloat(weight)) { mtc.setTextureWeight(i,weight); ++fr; ++i; } else { ++fr; } } iteratorAdvanced = true; ++fr; } return iteratorAdvanced; } bool MultiTextureControl_writeLocalData(const osg::Object &obj, osgDB::Output &fw) { const osgFX::MultiTextureControl &mtc = static_cast(obj); fw.indent() << "TextureWeights "<