#include #include #include #include #include #include #include #include #include #include #include bool Layer_readLocalData(osg::Object &obj, osgDB::Input &fr); bool Layer_writeLocalData(const osg::Object &obj, osgDB::Output &fw); osgDB::RegisterDotOsgWrapperProxy Layer_Proxy ( new osgTerrain::Layer, "Layer", "Object Layer", Layer_readLocalData, Layer_writeLocalData ); bool Layer_readLocalData(osg::Object& obj, osgDB::Input &fr) { osgTerrain::Layer& layer = static_cast(obj); bool itrAdvanced = false; osg::ref_ptr readObject = fr.readObjectOfType(osgDB::type_wrapper()); osgTerrain::Locator* locator = dynamic_cast(readObject.get()); if (locator) layer.setLocator(locator); if (fr[0].matchWord("Filter")) { unsigned int layerNum = 0; if (fr.matchSequence("Filter %i")) { fr[1].getUInt(layerNum); fr += 2; } else { ++fr; } if (fr[0].matchWord("NEAREST")) layer.setFilter(osgTerrain::Layer::NEAREST); else if (fr[0].matchWord("LINEAR")) layer.setFilter(osgTerrain::Layer::LINEAR); ++fr; itrAdvanced = true; } unsigned int minLevel=0; if (fr.read("MinLevel",minLevel)) { itrAdvanced = true; layer.setMinLevel(minLevel); } unsigned int maxLevel = MAXIMUM_NUMBER_OF_LEVELS; if (fr.read("MaxLevel",maxLevel)) { itrAdvanced = true; layer.setMaxLevel(maxLevel); } return itrAdvanced; } bool Layer_writeLocalData(const osg::Object& obj, osgDB::Output& fw) { const osgTerrain::Layer& layer = static_cast(obj); if (layer.getLocator() && !(layer.getLocator()->getDefinedInFile())) { fw.writeObject(*layer.getLocator()); } if (layer.getFilter()!=osgTerrain::Layer::LINEAR) { if (layer.getFilter()==osgTerrain::Layer::LINEAR) { fw.indent()<<"Filter LINEAER"<