LoaderUtils.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. /**
  2. * @author mrdoob / http://mrdoob.com/
  3. */
  4. var LoaderUtils = {
  5. createFilesMap: function ( files ) {
  6. var map = {};
  7. for ( var i = 0; i < files.length; i ++ ) {
  8. var file = files[ i ];
  9. map[ file.name ] = file;
  10. }
  11. return map;
  12. },
  13. getFilesFromItemList: function ( items, onDone ) {
  14. // TOFIX: setURLModifier() breaks when the file being loaded is not in root
  15. var itemsCount = 0;
  16. var itemsTotal = 0;
  17. var files = [];
  18. var filesMap = {};
  19. function onEntryHandled() {
  20. itemsCount ++;
  21. if ( itemsCount === itemsTotal ) {
  22. onDone( files, filesMap );
  23. }
  24. }
  25. function handleEntry( entry ) {
  26. if ( entry.isDirectory ) {
  27. var reader = entry.createReader();
  28. reader.readEntries( function ( entries ) {
  29. for ( var i = 0; i < entries.length; i ++ ) {
  30. handleEntry( entries[ i ] );
  31. }
  32. onEntryHandled();
  33. } );
  34. } else if ( entry.isFile ) {
  35. entry.file( function ( file ) {
  36. files.push( file );
  37. filesMap[ entry.fullPath.substr( 1 ) ] = file;
  38. onEntryHandled();
  39. } );
  40. }
  41. itemsTotal ++;
  42. }
  43. for ( var i = 0; i < items.length; i ++ ) {
  44. handleEntry( items[ i ].webkitGetAsEntry() );
  45. }
  46. }
  47. };
  48. export { LoaderUtils };