diff --git a/source/import/importer.js b/source/import/importer.js index 0db9051..128f753 100644 --- a/source/import/importer.js +++ b/source/import/importer.js @@ -225,7 +225,8 @@ OV.Importer = class } OV.LoadExternalLibrary ('loaders/fflate.min.js').then (() => { for (let i = 0; i < archives.length; i++) { - const archiveBuffer = new Uint8Array (archives[0].content); + const archiveFile = archives[i]; + const archiveBuffer = new Uint8Array (archiveFile.content); const decompressed = fflate.unzipSync (archiveBuffer); for (const fileName in decompressed) { if (Object.prototype.hasOwnProperty.call (decompressed, fileName)) { diff --git a/test/testfiles/zip/cube_with_materials_notexture.zip b/test/testfiles/zip/cube_with_materials_notexture.zip new file mode 100644 index 0000000..f1a1ee2 Binary files /dev/null and b/test/testfiles/zip/cube_with_materials_notexture.zip differ diff --git a/test/tests/importer_test.js b/test/tests/importer_test.js index 7769225..ccf224e 100644 --- a/test/tests/importer_test.js +++ b/test/tests/importer_test.js @@ -302,5 +302,24 @@ describe ('Importer Test', function () { assert.fail (); } }); - }); + }); + + it ('Multiple Zip Files', function (done) { + let files = [ + new FileObject ('zip', 'cube_with_materials_notexture.zip'), + new FileObject ('zip', 'textures.zip') + ]; + ImportFiles (files, { + success : function (importer, importResult) { + assert (!OV.IsModelEmpty (importResult.model)); + console.log (importResult.usedFiles); + assert.deepStrictEqual (importResult.usedFiles, ['cube_with_materials.obj', 'cube_with_materials.mtl', 'cube_texture.png']); + assert.deepStrictEqual (importResult.missingFiles, []); + done (); + }, + error : function (importer, importError) { + assert.fail (); + } + }); + }); });