Updates to osgDB::Archive, and IVE plugin to support usage via the Archive.

This commit is contained in:
Robert Osfield
2004-10-28 12:16:47 +00:00
parent e97364899b
commit 90e5586777
3 changed files with 129 additions and 19 deletions

View File

@@ -20,6 +20,11 @@ class IVEReaderWriter : public ReaderWriter
return equalCaseInsensitive(extension,"ive");
}
virtual ReadResult readObject(const std::string& file, const Options* options)
{
return readNode(file, options);
}
virtual ReadResult readNode(const std::string& file, const Options* options)
{
std::string ext = osgDB::getLowerCaseFileExtension(file);
@@ -42,6 +47,11 @@ class IVEReaderWriter : public ReaderWriter
return readNode(istream,local_opt.get());
}
virtual ReadResult readObject(std::istream& fin, const Options* options)
{
return readNode(fin, options);
}
virtual ReadResult readNode(std::istream& fin, const Options* options)
{
#define IVE_CATCH_EXCEPTIONS
@@ -64,6 +74,15 @@ class IVEReaderWriter : public ReaderWriter
#endif
}
virtual WriteResult writeObject(const Object& object,const std::string& fileName, const osgDB::ReaderWriter::Options* options)
{
const Node* node = dynamic_cast<const Node*>(&object);
if (node) return writeNode( *node, fileName, options );
return WriteResult::FILE_NOT_HANDLED;
}
virtual WriteResult writeNode(const Node& node,const std::string& fileName, const osgDB::ReaderWriter::Options* options)
{
std::string ext = getFileExtension(fileName);
@@ -75,6 +94,13 @@ class IVEReaderWriter : public ReaderWriter
return result;
}
virtual WriteResult writeObject(const Object& object,std::ostream& fout, const osgDB::ReaderWriter::Options* options)
{
const Node* node = dynamic_cast<const Node*>(&object);
if (node) return writeNode( *node, fout, options );
return WriteResult::FILE_NOT_HANDLED;
}
virtual WriteResult writeNode(const Node& node,std::ostream& fout, const osgDB::ReaderWriter::Options* options)
{
try