Ignore:
Timestamp:
Feb 21, 2011, 6:35:43 PM (13 years ago)
Author:
Torben Dannhauer
Message:

Pseudoloader works!

Next step: learn how to perform mdifications in the pseudoloader.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • experimental/TerrainTest/ReaderWriterTerrainMod.cpp

    r251 r252  
    44{
    55        supportsExtension( "terrainmod", "Terrain modification pseudo loader");
     6
     7        std::string extensionToAdd = ".terrainmod";
    68}
    7 
    8 //ReaderWriterTerrainMod::~ReaderWriterTerrainMod()
    9 //{
    10 //}
    119
    1210ReaderWriterTerrainMod::ReadResult ReaderWriterTerrainMod::readNode( const std::string& file, const osgDB::ReaderWriter::Options* options) const
    1311{
     12        // Check if its a valid file for this pseudo loader
    1413        std::string ext = osgDB::getLowerCaseFileExtension( file );
    1514        if( !acceptsExtension(ext) )
    1615                return ReadResult::FILE_NOT_HANDLED;
    1716
    18         std::string fileName = osgDB::findDataFile( file, options );
     17        // Strip the pseudo-loader extension
     18    std::string realName = osgDB::getNameLessExtension( file );
     19
     20        // check if stripped file exists
     21        std::string fileName = osgDB::findDataFile( realName, options );
    1922        if( fileName.empty() )
    2023                return ReadResult::FILE_NOT_FOUND;
    2124
    22         // Strip the pseudo-loader extension
    23     std::string realName = osgDB::getNameLessExtension( fileName );
    24 
    2525        // Load real file
    26         osg::Node *node = osgDB::readNodeFile( realName, options );
     26        osg::Node *node = osgDB::readNodeFile( fileName, options );
    2727    if( !node )
    2828    {
    2929        // propagate the read failure upwards
    30         OSG_WARN << "Subfile \"" << realName << "\" could not be loaded" << std::endl;
     30        OSG_WARN << "Subfile \"" << fileName << "\" could not be loaded" << std::endl;
    3131        return ReadResult::FILE_NOT_HANDLED;
    3232    }
    3333
    34         // Modify Node
    35         OSG_NOTIFY( osg::ALWAYS ) << "Doing modification in pseudoloader!" << std::endl;
    36 
    3734        // Traverse through loaded graph, check for PagedLOD and modify all filenames of external references
    38         ModificationVisitor modVisitor;
     35        ModificationVisitor modVisitor(extensionToAdd);
    3936        node->accept( modVisitor );
    40 
    41         std::string extensionToAdd = ".terrainmod";
    42 
    4337
    4438        return node;
    4539}
    4640
    47 
    4841// Add ourself to the Registry to instantiate the reader/writer.
    4942REGISTER_OSGPLUGIN(terrainmod, ReaderWriterTerrainMod)
Note: See TracChangeset for help on using the changeset viewer.