LoadingManager.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  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. return this;
  49. };
  50. }
  51. var DefaultLoadingManager = new LoadingManager();
  52. export { DefaultLoadingManager, LoadingManager };