add support for compressed, drop support for shortened
parent
fb546b694e
commit
061911bdbf
|
@ -51,6 +51,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
// internal headers
|
// internal headers
|
||||||
#include "AssbinLoader.h"
|
#include "AssbinLoader.h"
|
||||||
#include "assbin_chunks.h"
|
#include "assbin_chunks.h"
|
||||||
|
#ifdef ASSIMP_BUILD_NO_OWN_ZLIB
|
||||||
|
# include <zlib.h>
|
||||||
|
#else
|
||||||
|
# include "../contrib/zlib/zlib.h"
|
||||||
|
#include "MemoryIOWrapper.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
using namespace Assimp;
|
using namespace Assimp;
|
||||||
|
|
||||||
|
@ -563,13 +569,31 @@ void AssbinImporter::InternReadFile( const std::string& pFile, aiScene* pScene,
|
||||||
shortened = Read<uint16_t>(stream) > 0;
|
shortened = Read<uint16_t>(stream) > 0;
|
||||||
compressed = Read<uint16_t>(stream) > 0;
|
compressed = Read<uint16_t>(stream) > 0;
|
||||||
|
|
||||||
|
if (shortened)
|
||||||
|
throw DeadlyImportError( "Shortened binaries are not supported!" );
|
||||||
|
|
||||||
stream->Seek( 256, aiOrigin_CUR ); // original filename
|
stream->Seek( 256, aiOrigin_CUR ); // original filename
|
||||||
stream->Seek( 128, aiOrigin_CUR ); // options
|
stream->Seek( 128, aiOrigin_CUR ); // options
|
||||||
stream->Seek( 64, aiOrigin_CUR ); // padding
|
stream->Seek( 64, aiOrigin_CUR ); // padding
|
||||||
|
|
||||||
if (compressed)
|
if (compressed)
|
||||||
{
|
{
|
||||||
// TODO
|
uLongf uncompressedSize = Read<uint32_t>(stream);
|
||||||
|
uLongf compressedSize = stream->FileSize() - stream->Tell();
|
||||||
|
|
||||||
|
unsigned char * compressedData = new unsigned char[ compressedSize ];
|
||||||
|
stream->Read( compressedData, 1, compressedSize );
|
||||||
|
|
||||||
|
unsigned char * uncompressedData = new unsigned char[ uncompressedSize ];
|
||||||
|
|
||||||
|
uncompress( uncompressedData, &uncompressedSize, compressedData, compressedSize );
|
||||||
|
|
||||||
|
MemoryIOStream io( uncompressedData, uncompressedSize );
|
||||||
|
|
||||||
|
ReadBinaryScene(&io,pScene);
|
||||||
|
|
||||||
|
delete[] uncompressedData;
|
||||||
|
delete[] compressedData;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue