LoadingManager.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. /**
  2. * @author mrdoob / http://mrdoob.com/
  3. */
  4. function LoadingManager( onLoad, onProgress, onError ) {
  5. var scope = this;
  6. var isLoading = false;
  7. var itemsLoaded = 0;
  8. var itemsTotal = 0;
  9. var urlModifier = undefined;
  10. this.onStart = undefined;
  11. this.onLoad = onLoad;
  12. this.onProgress = onProgress;
  13. this.onError = onError;
  14. this.itemStart = function ( url ) {
  15. itemsTotal ++;
  16. if ( isLoading === false ) {
  17. if ( scope.onStart !== undefined ) {
  18. scope.onStart( url, itemsLoaded, itemsTotal );
  19. }
  20. }
  21. isLoading = true;
  22. };
  23. this.itemEnd = function ( url ) {
  24. itemsLoaded ++;
  25. if ( scope.onProgress !== undefined ) {
  26. scope.onProgress( url, itemsLoaded, itemsTotal );
  27. }
  28. if ( itemsLoaded === itemsTotal ) {
  29. isLoading = false;
  30. if ( scope.onLoad !== undefined ) {
  31. scope.onLoad();
  32. }
  33. }
  34. };
  35. this.itemError = function ( url ) {
  36. if ( scope.onError !== undefined ) {
  37. scope.onError( url );
  38. }
  39. };
  40. this.resolveURL = function ( url ) {
  41. if ( urlModifier ) {
  42. return urlModifier( url );
  43. }
  44. return url;
  45. };
  46. this.setURLModifier = function ( transform ) {
  47. urlModifier = transform;
  48. };
  49. }
  50. var DefaultLoadingManager = new LoadingManager();
  51. export { DefaultLoadingManager, LoadingManager };