diff --git a/src/osgWrappers/serializers/osg/Geometry.cpp b/src/osgWrappers/serializers/osg/Geometry.cpp index 6b5cd2049..9f20d640f 100644 --- a/src/osgWrappers/serializers/osg/Geometry.cpp +++ b/src/osgWrappers/serializers/osg/Geometry.cpp @@ -97,6 +97,19 @@ ADD_ARRAYDATA_FUNCTIONS( FogCoordData ) ADD_ARRAYLIST_FUNCTIONS( TexCoordData, TexCoordArrayList ) ADD_ARRAYLIST_FUNCTIONS( VertexAttribData, VertexAttribArrayList ) +struct GeometryFinishedObjectReadCallback : public osgDB::FinishedObjectReadCallback +{ + virtual void objectRead(osgDB::InputStream&, osg::Object& obj) + { + osg::Geometry& geometry = static_cast(obj); + if (geometry.getUseVertexBufferObjects()) + { + geometry.setUseVertexBufferObjects(false); + geometry.setUseVertexBufferObjects(true); + } + } +}; + REGISTER_OBJECT_WRAPPER( Geometry, new osg::Geometry, osg::Geometry, @@ -112,4 +125,6 @@ REGISTER_OBJECT_WRAPPER( Geometry, ADD_USER_SERIALIZER( VertexAttribData ); // _vertexAttribList ADD_BOOL_SERIALIZER( FastPathHint, true ); // _fastPathHint //ADD_OBJECT_SERIALIZER( InternalOptimizedGeometry, osg::Geometry, NULL ); // _internalOptimizedGeometry + + wrapper->addFinishedObjectReadCallback( new GeometryFinishedObjectReadCallback() ); } diff --git a/src/osgWrappers/serializers/osgTerrain/TerrainTile.cpp b/src/osgWrappers/serializers/osgTerrain/TerrainTile.cpp index 48756203f..af5c76f46 100644 --- a/src/osgWrappers/serializers/osgTerrain/TerrainTile.cpp +++ b/src/osgWrappers/serializers/osgTerrain/TerrainTile.cpp @@ -60,22 +60,16 @@ static bool writeColorLayers( osgDB::OutputStream& os, const osgTerrain::Terrain return true; } -// TileLoadedCallback -static bool checkTileLoadedCallback( const osgTerrain::TerrainTile& tile ) -{ return true; } - -static bool readTileLoadedCallback( osgDB::InputStream& is, osgTerrain::TerrainTile& tile ) +struct TerrainTileFinishedObjectReadCallback : public osgDB::FinishedObjectReadCallback { - if ( osgTerrain::TerrainTile::getTileLoadedCallback().valid() ) - osgTerrain::TerrainTile::getTileLoadedCallback()->loaded( &tile, is.getOptions() ); - return true; -} + virtual void objectRead(osgDB::InputStream& is, osg::Object& obj) + { + osgTerrain::TerrainTile& tile = static_cast(obj); + if ( osgTerrain::TerrainTile::getTileLoadedCallback().valid() ) + osgTerrain::TerrainTile::getTileLoadedCallback()->loaded( &tile, is.getOptions() ); + } +}; -static bool writeTileLoadedCallback( osgDB::OutputStream& os, const osgTerrain::TerrainTile& tile ) -{ - os<addFinishedObjectReadCallback( new TerrainTileFinishedObjectReadCallback() ); }