babylon.assetsManager.js 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  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. img.src = this.url;
  106. };
  107. return ImageAssetTask;
  108. })();
  109. BABYLON.ImageAssetTask = ImageAssetTask;
  110. var AssetsManager = (function () {
  111. function AssetsManager(scene) {
  112. this._tasks = new Array();
  113. this._waitingTasksCount = 0;
  114. this.useDefaultLoadingScreen = true;
  115. this._scene = scene;
  116. }
  117. AssetsManager.prototype.addMeshTask = function (taskName, meshesNames, rootUrl, sceneFilename) {
  118. var task = new MeshAssetTask(taskName, meshesNames, rootUrl, sceneFilename);
  119. this._tasks.push(task);
  120. return task;
  121. };
  122. AssetsManager.prototype.addTextFileTask = function (taskName, url) {
  123. var task = new TextFileAssetTask(taskName, url);
  124. this._tasks.push(task);
  125. return task;
  126. };
  127. AssetsManager.prototype.addBinaryFileTask = function (taskName, url) {
  128. var task = new BinaryFileAssetTask(taskName, url);
  129. this._tasks.push(task);
  130. return task;
  131. };
  132. AssetsManager.prototype.addImageTask = function (taskName, url) {
  133. var task = new ImageAssetTask(taskName, url);
  134. this._tasks.push(task);
  135. return task;
  136. };
  137. AssetsManager.prototype._decreaseWaitingTasksCount = function () {
  138. this._waitingTasksCount--;
  139. if (this._waitingTasksCount === 0) {
  140. if (this.onFinish) {
  141. this.onFinish(this._tasks);
  142. }
  143. this._scene.getEngine().hideLoadingUI();
  144. }
  145. };
  146. AssetsManager.prototype._runTask = function (task) {
  147. var _this = this;
  148. task.run(this._scene, function () {
  149. if (_this.onTaskSuccess) {
  150. _this.onTaskSuccess(task);
  151. }
  152. _this._decreaseWaitingTasksCount();
  153. }, function () {
  154. if (_this.onTaskError) {
  155. _this.onTaskError(task);
  156. }
  157. _this._decreaseWaitingTasksCount();
  158. });
  159. };
  160. AssetsManager.prototype.reset = function () {
  161. this._tasks = new Array();
  162. return this;
  163. };
  164. AssetsManager.prototype.load = function () {
  165. this._waitingTasksCount = this._tasks.length;
  166. if (this._waitingTasksCount === 0) {
  167. if (this.onFinish) {
  168. this.onFinish(this._tasks);
  169. }
  170. return this;
  171. }
  172. if (this.useDefaultLoadingScreen) {
  173. this._scene.getEngine().displayLoadingUI();
  174. }
  175. for (var index = 0; index < this._tasks.length; index++) {
  176. var task = this._tasks[index];
  177. this._runTask(task);
  178. }
  179. return this;
  180. };
  181. return AssetsManager;
  182. })();
  183. BABYLON.AssetsManager = AssetsManager;
  184. })(BABYLON || (BABYLON = {}));
  185. //# sourceMappingURL=babylon.assetsManager.js.map