@woosh/meep-engine 2.131.10 → 2.131.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "description": "Pure JavaScript game engine. Fully featured and production ready.",
6
6
  "type": "module",
7
7
  "author": "Alexander Goldring",
8
- "version": "2.131.10",
8
+ "version": "2.131.11",
9
9
  "main": "build/meep.module.js",
10
10
  "module": "build/meep.module.js",
11
11
  "exports": {
@@ -35,8 +35,16 @@ export class AssetPreloader {
35
35
  progress: Signal<any, any, any, any, any, any, any, any>;
36
36
  levelFinished: Signal<any, any, any, any, any, any, any, any>;
37
37
  error: Signal<any, any, any, any, any, any, any, any>;
38
- loadStart: Signal<any, any, any, any, any, any, any, any>;
39
- completed: Signal<any, any, any, any, any, any, any, any>;
38
+ started: Signal<any, any, any, any, any, any, any, any>;
39
+ /**
40
+ * @type {Signal<number>}
41
+ */
42
+ completed: Signal<number>;
43
+ /**
44
+ * All assets are processed, even if some have errored out
45
+ * @type {Signal<number,number>}
46
+ */
47
+ resolved: Signal<number, number>;
40
48
  };
41
49
  /**
42
50
  *
@@ -1 +1 @@
1
- {"version":3,"file":"AssetPreloader.d.ts","sourceRoot":"","sources":["../../../../../src/engine/asset/preloader/AssetPreloader.js"],"names":[],"mappings":"AAsDA;;;;;;;;;;;;;;;;;GAiBG;AACH;IACI;;;OAGG;IACH,iBAFU,MAAM,CAEI;IAEpB;;;OAGG;IACH,iBAFU,aAAa,EAAE,EAAE,CAEf;IAEZ;;OAEG;IACH;;;;;;;MAOE;IAaF;;;;;;;OAOG;IACH,SANW,MAAM,QACN,MAAM,UACN,MAAM,aACN,MAAM,GACL,cAAc,CAqCzB;IAED;;;OAGG;IACH,aAFW;QAAC,GAAG,EAAC,MAAM,CAAC;QAAC,IAAI,EAAC,MAAM,CAAC;QAAC,KAAK,CAAC,EAAC,MAAM,CAAA;KAAC,EAAE,QAQpD;IAED;;;;OAIG;IACH,kCAFY,cAAc,CAmIzB;CACJ;AAED;;;GAGG;AACH,wBAFU,cAAc,CAEgB;AA5SxC;;GAEG;AACH;IA+BI;;;;OAIG;IACH,4BAFY,aAAa,CAQxB;IAxCG;;;OAGG;IACH,YAAe;IACf;;;OAGG;IACH,aAAgB;IAChB;;;OAGG;IACH,OAFU,MAAM,GAAC,UAAU,CAEK;IAChC;;;OAGG;IACH,UAFU,MAAM,CAEC;IAGrB;;;;;aAKC;CAcJ;mBAlDkB,uCAAuC;uBAEnC,iBAAiB"}
1
+ {"version":3,"file":"AssetPreloader.d.ts","sourceRoot":"","sources":["../../../../../src/engine/asset/preloader/AssetPreloader.js"],"names":[],"mappings":"AAsDA;;;;;;;;;;;;;;;;;GAiBG;AACH;IACI;;;OAGG;IACH,iBAFU,MAAM,CAEI;IAEpB;;;OAGG;IACH,iBAFU,aAAa,EAAE,EAAE,CAEf;IAEZ;;OAEG;IACH;;;;;;QAMI;;WAEG;mBADO,OAAO,MAAM,CAAC;QAGxB;;;WAGG;kBADO,OAAO,MAAM,EAAC,MAAM,CAAC;MAGjC;IAaF;;;;;;;OAOG;IACH,SANW,MAAM,QACN,MAAM,UACN,MAAM,aACN,MAAM,GACL,cAAc,CAqCzB;IAED;;;OAGG;IACH,aAFW;QAAC,GAAG,EAAC,MAAM,CAAC;QAAC,IAAI,EAAC,MAAM,CAAC;QAAC,KAAK,CAAC,EAAC,MAAM,CAAA;KAAC,EAAE,QAQpD;IAED;;;;OAIG;IACH,kCAFY,cAAc,CA+JzB;CACJ;AAED;;;GAGG;AACH,wBAFU,cAAc,CAEgB;AAhVxC;;GAEG;AACH;IA+BI;;;;OAIG;IACH,4BAFY,aAAa,CAQxB;IAxCG;;;OAGG;IACH,YAAe;IACf;;;OAGG;IACH,aAAgB;IAChB;;;OAGG;IACH,OAFU,MAAM,GAAC,UAAU,CAEK;IAChC;;;OAGG;IACH,UAFU,MAAM,CAEC;IAGrB;;;;;aAKC;CAcJ;mBAlDkB,uCAAuC;uBAEnC,iBAAiB"}
@@ -91,8 +91,16 @@ export class AssetPreloader {
91
91
  progress: new Signal(),
92
92
  levelFinished: new Signal(),
93
93
  error: new Signal(),
94
- loadStart: new Signal(),
94
+ started: new Signal(),
95
+ /**
96
+ * @type {Signal<number>}
97
+ */
95
98
  completed: new Signal(),
99
+ /**
100
+ * All assets are processed, even if some have errored out
101
+ * @type {Signal<number,number>}
102
+ */
103
+ resolved: new Signal(),
96
104
  };
97
105
 
98
106
  constructor() {
@@ -185,9 +193,35 @@ export class AssetPreloader {
185
193
  };
186
194
  });
187
195
 
188
- on.loadStart.send1(initEvent);
196
+ on.started.send1(initEvent);
189
197
  const numAssets = this.totalAssetCount;
198
+
190
199
  let numAssetsLoaded = 0;
200
+ let numAssetsFailed = 0;
201
+
202
+ let finished = false;
203
+
204
+ function try_finish() {
205
+ if (finished) {
206
+ // already done
207
+ return;
208
+ }
209
+
210
+ const totalProcessed = numAssetsLoaded + numAssetsFailed;
211
+
212
+ if (totalProcessed <= numAssets) {
213
+ // not done yet
214
+ return;
215
+ }
216
+
217
+ if (numAssetsFailed === 0) {
218
+ on.completed.send1(numAssetsLoaded);
219
+ }
220
+
221
+ on.resolved.send2(numAssetsLoaded, numAssetsFailed);
222
+
223
+ finished = true;
224
+ }
191
225
 
192
226
  /**
193
227
  * submit requests in batches in order of importance
@@ -237,10 +271,14 @@ export class AssetPreloader {
237
271
  on.levelFinished.dispatch(level);
238
272
  }
239
273
 
274
+ try_finish();
240
275
  }
241
276
 
242
277
  function assetLoadFailed(e) {
278
+ numAssetsFailed++;
243
279
  on.error.dispatch(e);
280
+
281
+ try_finish();
244
282
  }
245
283
 
246
284
  //sort batch by priority
@@ -275,7 +313,7 @@ export class AssetPreloader {
275
313
  function prod() {
276
314
 
277
315
  if (lastLoadedLevel < levels.length) {
278
-
316
+
279
317
  // load next
280
318
 
281
319
  const levelToLoad = lastLoadedLevel;
@@ -288,8 +326,6 @@ export class AssetPreloader {
288
326
 
289
327
  // we're done
290
328
 
291
- on.completed.send0();
292
-
293
329
  }
294
330
 
295
331
  }