allow read of zipped script
This commit is contained in:
parent
4abc97f44b
commit
518048bc64
@ -310,6 +310,38 @@ osgDB::ReaderWriter::ReadResult ZipArchive::readNode(const std::string& file,con
|
||||
|
||||
return rresult;
|
||||
}
|
||||
osgDB::ReaderWriter::ReadResult ZipArchive::readScript(const std::string& file,const osgDB::ReaderWriter::Options* options) const{
|
||||
osgDB::ReaderWriter::ReadResult rresult = osgDB::ReaderWriter::ReadResult::FILE_NOT_HANDLED;
|
||||
|
||||
std::string ext = osgDB::getLowerCaseFileExtension(file);
|
||||
if (!_zipLoaded || !acceptsExtension(ext)) return osgDB::ReaderWriter::ReadResult::FILE_NOT_HANDLED;
|
||||
|
||||
const ZIPENTRY* ze = GetZipEntry(file);
|
||||
if(ze != NULL)
|
||||
{
|
||||
std::stringstream buffer;
|
||||
|
||||
osgDB::ReaderWriter* rw = ReadFromZipEntry(ze, options, buffer);
|
||||
if (rw != NULL)
|
||||
{
|
||||
// Setup appropriate options
|
||||
osg::ref_ptr<osgDB::ReaderWriter::Options> local_opt = options ?
|
||||
options->cloneOptions() :
|
||||
new osgDB::ReaderWriter::Options;
|
||||
|
||||
local_opt->setPluginStringData("STREAM_FILENAME", osgDB::getSimpleFileName(ze->name));
|
||||
|
||||
osgDB::ReaderWriter::ReadResult readResult = rw->readScript(buffer,local_opt.get());
|
||||
if (readResult.success())
|
||||
{
|
||||
return readResult;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return rresult;
|
||||
}
|
||||
|
||||
|
||||
|
||||
osgDB::ReaderWriter::ReadResult ZipArchive::readShader(const std::string& file,const osgDB::ReaderWriter::Options* options) const
|
||||
@ -350,6 +382,11 @@ osgDB::ReaderWriter::WriteResult ZipArchive::writeObject(const osg::Object& /*ob
|
||||
return osgDB::ReaderWriter::WriteResult(osgDB::ReaderWriter::WriteResult::FILE_NOT_HANDLED);
|
||||
}
|
||||
|
||||
osgDB::ReaderWriter::WriteResult ZipArchive::writeScript(const osg::Script& /*obj*/,const std::string& /*fileName*/,const osgDB::ReaderWriter::Options*) const
|
||||
{
|
||||
return osgDB::ReaderWriter::WriteResult(osgDB::ReaderWriter::WriteResult::FILE_NOT_HANDLED);
|
||||
}
|
||||
|
||||
osgDB::ReaderWriter::WriteResult ZipArchive::writeImage(const osg::Image& /*image*/,const std::string& /*fileName*/,const osgDB::ReaderWriter::Options*) const
|
||||
{
|
||||
return osgDB::ReaderWriter::WriteResult(osgDB::ReaderWriter::WriteResult::FILE_NOT_HANDLED);
|
||||
|
@ -55,12 +55,14 @@ class ZipArchive : public osgDB::Archive
|
||||
virtual osgDB::ReaderWriter::ReadResult readHeightField(const std::string& /*fileName*/,const osgDB::ReaderWriter::Options* =NULL) const;
|
||||
virtual osgDB::ReaderWriter::ReadResult readNode(const std::string& /*fileName*/, const osgDB::ReaderWriter::Options* =NULL) const;
|
||||
virtual osgDB::ReaderWriter::ReadResult readShader(const std::string& /*fileName*/, const osgDB::ReaderWriter::Options* =NULL) const;
|
||||
virtual osgDB::ReaderWriter::ReadResult readScript(const std::string& /*fileName*/, const osgDB::ReaderWriter::Options* =NULL) const;
|
||||
|
||||
virtual osgDB::ReaderWriter::WriteResult writeObject(const osg::Object& /*obj*/, const std::string& /*fileName*/,const osgDB::ReaderWriter::Options* =NULL) const;
|
||||
virtual osgDB::ReaderWriter::WriteResult writeImage(const osg::Image& /*image*/, const std::string& /*fileName*/,const osgDB::ReaderWriter::Options* =NULL) const;
|
||||
virtual osgDB::ReaderWriter::WriteResult writeHeightField(const osg::HeightField& /*heightField*/, const std::string& /*fileName*/,const osgDB::ReaderWriter::Options* =NULL) const;
|
||||
virtual osgDB::ReaderWriter::WriteResult writeNode(const osg::Node& /*node*/, const std::string& /*fileName*/,const osgDB::ReaderWriter::Options* =NULL) const;
|
||||
virtual osgDB::ReaderWriter::WriteResult writeShader(const osg::Shader& /*shader*/, const std::string& /*fileName*/,const osgDB::ReaderWriter::Options* =NULL) const;
|
||||
virtual osgDB::ReaderWriter::WriteResult writeScript(const osg::Script& /*script*/, const std::string& /*fileName*/,const osgDB::ReaderWriter::Options* =NULL) const;
|
||||
|
||||
protected:
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user