@@ -9,7 +9,40 @@ var Loader = function ( editor ) {
99
1010 this . texturePath = '' ;
1111
12- this . loadFile = function ( file ) {
12+ this . loadFiles = function ( files ) {
13+
14+ if ( files . length > 0 ) {
15+
16+ var filesMap = createFileMap ( files ) ;
17+
18+ var manager = new THREE . LoadingManager ( ) ;
19+ manager . setURLModifier ( function ( url ) {
20+
21+ var file = filesMap [ url ] ;
22+
23+ if ( file ) {
24+
25+ console . log ( 'Loading' , url ) ;
26+
27+ return URL . createObjectURL ( file ) ;
28+
29+ }
30+
31+ return url ;
32+
33+ } ) ;
34+
35+ for ( var i = 0 ; i < files . length ; i ++ ) {
36+
37+ scope . loadFile ( files [ i ] , manager ) ;
38+
39+ }
40+
41+ }
42+
43+ } ;
44+
45+ this . loadFile = function ( file , manager ) {
1346
1447 var filename = file . name ;
1548 var extension = filename . split ( '.' ) . pop ( ) . toLowerCase ( ) ;
@@ -19,6 +52,7 @@ var Loader = function ( editor ) {
1952
2053 var size = '(' + Math . floor ( event . total / 1000 ) . format ( ) + ' KB)' ;
2154 var progress = Math . floor ( ( event . loaded / event . total ) * 100 ) + '%' ;
55+
2256 console . log ( 'Loading' , filename , size , progress ) ;
2357
2458 } ) ;
@@ -141,7 +175,7 @@ var Loader = function ( editor ) {
141175
142176 var contents = event . target . result ;
143177
144- var loader = new THREE . ColladaLoader ( ) ;
178+ var loader = new THREE . ColladaLoader ( manager ) ;
145179 var collada = loader . parse ( contents ) ;
146180
147181 collada . scene . name = filename ;
@@ -159,7 +193,7 @@ var Loader = function ( editor ) {
159193
160194 var contents = event . target . result ;
161195
162- var loader = new THREE . FBXLoader ( ) ;
196+ var loader = new THREE . FBXLoader ( manager ) ;
163197 var object = loader . parse ( contents ) ;
164198
165199 editor . execute ( new AddObjectCommand ( object ) ) ;
@@ -183,7 +217,7 @@ var Loader = function ( editor ) {
183217
184218 } else {
185219
186- loader = new THREE . GLTFLoader ( ) ;
220+ loader = new THREE . GLTFLoader ( manager ) ;
187221
188222 }
189223
@@ -477,7 +511,7 @@ var Loader = function ( editor ) {
477511
478512 default :
479513
480- alert ( 'Unsupported file format (' + extension + ').' ) ;
514+ // alert( 'Unsupported file format (' + extension + ').' );
481515
482516 break ;
483517
@@ -596,6 +630,21 @@ var Loader = function ( editor ) {
596630
597631 }
598632
633+ function createFileMap ( files ) {
634+
635+ var map = { } ;
636+
637+ for ( var i = 0 ; i < files . length ; i ++ ) {
638+
639+ var file = files [ i ] ;
640+ map [ file . name ] = file ;
641+
642+ }
643+
644+ return map ;
645+
646+ }
647+
599648 function handleZIP ( contents ) {
600649
601650 var zip = new JSZip ( contents ) ;
@@ -621,11 +670,15 @@ var Loader = function ( editor ) {
621670
622671 if ( file ) {
623672
673+ console . log ( 'Loading' , url ) ;
674+
624675 var blob = new Blob ( [ file . asArrayBuffer ( ) ] , { type : 'application/octet-stream' } ) ;
625676 return URL . createObjectURL ( blob ) ;
626677
627678 }
628679
680+ return url ;
681+
629682 } ) ;
630683
631684 var extension = file . name . split ( '.' ) . pop ( ) . toLowerCase ( ) ;
0 commit comments