babylon.assetsManager.js 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. var BABYLON;
  2. (function (BABYLON) {
  3. var MeshAssetTask = (function () {
  4. function MeshAssetTask(name, meshesNames, rootUrl, sceneFilename) {
  5. this.name = name;
  6. this.meshesNames = meshesNames;
  7. this.rootUrl = rootUrl;
  8. this.sceneFilename = sceneFilename;
  9. this.isCompleted = false;
  10. }
  11. MeshAssetTask.prototype.run = function (scene, onSuccess, onError) {
  12. var _this = this;
  13. BABYLON.SceneLoader.ImportMesh(this.meshesNames, this.rootUrl, this.sceneFilename, scene, function (meshes, particleSystems, skeletons) {
  14. _this.loadedMeshes = meshes;
  15. _this.loadedParticleSystems = particleSystems;
  16. _this.loadedSkeletons = skeletons;
  17. _this.isCompleted = true;
  18. if (_this.onSuccess) {
  19. _this.onSuccess(_this);
  20. }
  21. onSuccess();
  22. }, null, function () {
  23. if (_this.onError) {
  24. _this.onError(_this);
  25. }
  26. onError();
  27. });
  28. };
  29. return MeshAssetTask;
  30. })();
  31. BABYLON.MeshAssetTask = MeshAssetTask;
  32. var TextFileAssetTask = (function () {
  33. function TextFileAssetTask(name, url) {
  34. this.name = name;
  35. this.url = url;
  36. this.isCompleted = false;
  37. }
  38. TextFileAssetTask.prototype.run = function (scene, onSuccess, onError) {
  39. var _this = this;
  40. BABYLON.Tools.LoadFile(this.url, function (data) {
  41. _this.text = data;
  42. _this.isCompleted = true;
  43. if (_this.onSuccess) {
  44. _this.onSuccess(_this);
  45. }
  46. onSuccess();
  47. }, null, scene.database, false, function () {
  48. if (_this.onError) {
  49. _this.onError(_this);
  50. }
  51. onError();
  52. });
  53. };
  54. return TextFileAssetTask;
  55. })();
  56. BABYLON.TextFileAssetTask = TextFileAssetTask;
  57. var BinaryFileAssetTask = (function () {
  58. function BinaryFileAssetTask(name, url) {
  59. this.name = name;
  60. this.url = url;
  61. this.isCompleted = false;
  62. }
  63. BinaryFileAssetTask.prototype.run = function (scene, onSuccess, onError) {
  64. var _this = this;
  65. BABYLON.Tools.LoadFile(this.url, function (data) {
  66. _this.data = data;
  67. _this.isCompleted = true;
  68. if (_this.onSuccess) {
  69. _this.onSuccess(_this);
  70. }
  71. onSuccess();
  72. }, null, scene.database, true, function () {
  73. if (_this.onError) {
  74. _this.onError(_this);
  75. }
  76. onError();
  77. });
  78. };
  79. return BinaryFileAssetTask;
  80. })();
  81. BABYLON.BinaryFileAssetTask = BinaryFileAssetTask;
  82. var ImageAssetTask = (function () {
  83. function ImageAssetTask(name, url) {
  84. this.name = name;
  85. this.url = url;
  86. this.isCompleted = false;
  87. }
  88. ImageAssetTask.prototype.run = function (scene, onSuccess, onError) {
  89. var _this = this;
  90. var img = new Image();
  91. img.onload = function () {
  92. _this.image = img;
  93. _this.isCompleted = true;
  94. if (_this.onSuccess) {
  95. _this.onSuccess(_this);
  96. }
  97. onSuccess();
  98. };
  99. img.onerror = function () {
  100. if (_this.onError) {
  101. _this.onError(_this);
  102. }
  103. onError();
  104. };
  105. };
  106. return ImageAssetTask;
  107. })();
  108. BABYLON.ImageAssetTask = ImageAssetTask;
  109. var AssetsManager = (function () {
  110. function AssetsManager(scene) {
  111. this._tasks = new Array();
  112. this._waitingTasksCount = 0;
  113. this.useDefaultLoadingScreen = true;
  114. this._scene = scene;
  115. }
  116. AssetsManager.prototype.addMeshTask = function (taskName, meshesNames, rootUrl, sceneFilename) {
  117. var task = new MeshAssetTask(taskName, meshesNames, rootUrl, sceneFilename);
  118. this._tasks.push(task);
  119. return task;
  120. };
  121. AssetsManager.prototype.addTextFileTask = function (taskName, url) {
  122. var task = new TextFileAssetTask(taskName, url);
  123. this._tasks.push(task);
  124. return task;
  125. };
  126. AssetsManager.prototype.addBinaryFileTask = function (taskName, url) {
  127. var task = new BinaryFileAssetTask(taskName, url);
  128. this._tasks.push(task);
  129. return task;
  130. };
  131. AssetsManager.prototype.addImageTask = function (taskName, url) {
  132. var task = new ImageAssetTask(taskName, url);
  133. this._tasks.push(task);
  134. return task;
  135. };
  136. AssetsManager.prototype._decreaseWaitingTasksCount = function () {
  137. this._waitingTasksCount--;
  138. if (this._waitingTasksCount === 0) {
  139. if (this.onFinish) {
  140. this.onFinish(this._tasks);
  141. }
  142. this._scene.getEngine().hideLoadingUI();
  143. }
  144. };
  145. AssetsManager.prototype._runTask = function (task) {
  146. var _this = this;
  147. task.run(this._scene, function () {
  148. if (_this.onTaskSuccess) {
  149. _this.onTaskSuccess(task);
  150. }
  151. _this._decreaseWaitingTasksCount();
  152. }, function () {
  153. if (_this.onTaskError) {
  154. _this.onTaskError(task);
  155. }
  156. _this._decreaseWaitingTasksCount();
  157. });
  158. };
  159. AssetsManager.prototype.reset = function () {
  160. this._tasks = new Array();
  161. return this;
  162. };
  163. AssetsManager.prototype.load = function () {
  164. this._waitingTasksCount = this._tasks.length;
  165. if (this._waitingTasksCount === 0) {
  166. if (this.onFinish) {
  167. this.onFinish(this._tasks);
  168. }
  169. return this;
  170. }
  171. if (this.useDefaultLoadingScreen) {
  172. this._scene.getEngine().displayLoadingUI();
  173. }
  174. for (var index = 0; index < this._tasks.length; index++) {
  175. var task = this._tasks[index];
  176. this._runTask(task);
  177. }
  178. return this;
  179. };
  180. return AssetsManager;
  181. })();
  182. BABYLON.AssetsManager = AssetsManager;
  183. })(BABYLON || (BABYLON = {}));
  184. //# sourceMappingURL=babylon.assetsManager.js.map