diff --git a/src/osgPlugins/osg/PointSprite.cpp b/src/osgPlugins/osg/PointSprite.cpp index b28fdf4d2..2f6fc0695 100644 --- a/src/osgPlugins/osg/PointSprite.cpp +++ b/src/osgPlugins/osg/PointSprite.cpp @@ -26,13 +26,40 @@ RegisterDotOsgWrapperProxy g_PointSpriteProxy ); -bool PointSprite_readLocalData(Object&, Input&) +bool PointSprite_readLocalData(Object& obj, Input& fr) { - return false; + bool iteratorAdvanced = false; + + PointSprite& ps = static_cast(obj); + + if (fr[0].matchWord("coordOriginMode")) + { + if (fr[1].matchWord("UPPER_LEFT")) + { + ps.setCoordOriginMode(PointSprite::UPPER_LEFT); + fr+=2; + iteratorAdvanced = true; + } + else if (fr[1].matchWord("LOWER_LEFT")) + { + ps.setCoordOriginMode(PointSprite::LOWER_LEFT); + fr+=2; + iteratorAdvanced = true; + } + } + + return iteratorAdvanced; } -bool PointSprite_writeLocalData(const Object&,Output&) +bool PointSprite_writeLocalData(const Object& obj, Output& fw) { + const PointSprite& ps = static_cast(obj); + + switch(ps.getCoordOriginMode()) + { + case(PointSprite::UPPER_LEFT): fw.indent() << "coordOriginMode UPPER_LEFT" << std::endl; break; + case(PointSprite::LOWER_LEFT): fw.indent() << "coordOriginMode LOWER_LEFT" << std::endl; break; + } return true; }