diff --git a/include/osgTerrain/Locator b/include/osgTerrain/Locator index 5f9d586a7..3ce14ffcc 100644 --- a/include/osgTerrain/Locator +++ b/include/osgTerrain/Locator @@ -105,6 +105,9 @@ class OSGTERRAIN_EXPORT Locator : public osg::Object void setDefinedInFile(bool flag) { _definedInFile = flag; } bool getDefinedInFile() const { return _definedInFile; } + + void setTransformScaledByResolution(bool scaledByResolution) { _transformScaledByResolution = scaledByResolution; } + bool getTransformScaledByResolution() const { return _transformScaledByResolution; } protected: @@ -120,6 +123,7 @@ class OSGTERRAIN_EXPORT Locator : public osg::Object osg::Matrixd _inverse; bool _definedInFile; + bool _transformScaledByResolution; }; diff --git a/src/osgPlugins/osgTerrain/Terrain.cpp b/src/osgPlugins/osgTerrain/Terrain.cpp index 2503792bd..156780215 100644 --- a/src/osgPlugins/osgTerrain/Terrain.cpp +++ b/src/osgPlugins/osgTerrain/Terrain.cpp @@ -79,6 +79,8 @@ osgTerrain::Layer* readLayer(osgDB::Input& fr, bool& itrAdvanced) fr += 2; localAdvanced = true; } + + if (fr.matchSequence("CoordinateSystem %w") || fr.matchSequence("CoordinateSystem %s") ) @@ -89,6 +91,13 @@ osgTerrain::Layer* readLayer(osgDB::Input& fr, bool& itrAdvanced) localAdvanced = true; } + if (fr.matchSequence("TransformScaledByResolution %w")) + { + locator->setTransformScaledByResolution(fr[1].matchWord("TRUE") || fr[1].matchWord("True") || fr[1].matchWord("true")); + fr += 2; + localAdvanced = true; + } + if (fr.matchSequence("Transform {")) { int tansform_entry = fr[0].getNoNestedBrackets(); @@ -518,7 +527,9 @@ bool writeLocator(const osgTerrain::Locator& locator, osgDB::Output& fw) fw<<"PROJECTED"<