@woosh/meep-engine 2.86.4 → 2.86.6

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.
@@ -54282,13 +54282,6 @@ Color.black = Object.freeze(new Color(0, 0, 0));
54282
54282
  */
54283
54283
  Color.transparent = Object.freeze(new Color(0, 0, 0, 0));
54284
54284
 
54285
- /**
54286
- * No-operation function. Does nothing. Useful when a callback is required to avoid checks for a missing function.
54287
- * @param {*} arguments
54288
- */
54289
- function noop() {
54290
- }
54291
-
54292
54285
  /**
54293
54286
  * Returns true if two 1D lines overlap, touch is not considered overlap
54294
54287
  * Parameters are assumed to be ordered, a1 > a0, b1 > b0
@@ -58477,16 +58470,16 @@ class TerrainTileManager {
58477
58470
  return Promise.resolve(tile);
58478
58471
 
58479
58472
  } else {
58480
- const promise = new Promise((resolve, reject) => {
58481
- tile.onBuilt.addOne(resolve);
58482
- tile.onDestroyed.addOne(reject);
58483
- });
58484
58473
 
58485
58474
  if (!tile.isBuildInProgress) {
58486
- this.build(x, y, noop, noop);
58475
+ return new Promise((resolve, reject) => this.build(x, y, resolve, reject));
58476
+ } else {
58477
+ return new Promise((resolve, reject) => {
58478
+ tile.onBuilt.addOne(resolve);
58479
+ tile.onDestroyed.addOne(reject);
58480
+ });
58487
58481
  }
58488
58482
 
58489
- return promise;
58490
58483
  }
58491
58484
 
58492
58485
  }
@@ -58602,7 +58595,7 @@ class TerrainTileManager {
58602
58595
 
58603
58596
  const tile = this.tiles[tile_index];
58604
58597
 
58605
- if(!tile.isBuilt){
58598
+ if (!tile.isBuilt) {
58606
58599
  continue;
58607
58600
  }
58608
58601
 
@@ -58699,6 +58692,8 @@ class TerrainTileManager {
58699
58692
  // console.timeEnd(processName);
58700
58693
 
58701
58694
  this.on.tileBuilt.send1(tile);
58695
+
58696
+ resolve(tile);
58702
58697
  }, reject);
58703
58698
  }
58704
58699
  }
@@ -63657,6 +63652,13 @@ function array_push_if_unique(array, element) {
63657
63652
  return false;
63658
63653
  }
63659
63654
 
63655
+ /**
63656
+ * No-operation function. Does nothing. Useful when a callback is required to avoid checks for a missing function.
63657
+ * @param {*} arguments
63658
+ */
63659
+ function noop() {
63660
+ }
63661
+
63660
63662
  /**
63661
63663
  * Created by Alex on 25/08/2016.
63662
63664
  */
@@ -65119,8 +65121,10 @@ class Terrain {
65119
65121
  const promisedTiles = [];
65120
65122
 
65121
65123
  tiles.traverse(function (tile) {
65122
- const x = tile.gridPosition.x;
65123
- const y = tile.gridPosition.y;
65124
+ const position = tile.gridPosition;
65125
+
65126
+ const x = position.x;
65127
+ const y = position.y;
65124
65128
 
65125
65129
  const tilePromise = tiles.obtain(x, y);
65126
65130
 
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "description": "Fully featured ECS game engine written in JavaScript",
6
6
  "type": "module",
7
7
  "author": "Alexander Goldring",
8
- "version": "2.86.4",
8
+ "version": "2.86.6",
9
9
  "main": "build/meep.module.js",
10
10
  "module": "build/meep.module.js",
11
11
  "exports": {
@@ -1 +1 @@
1
- {"version":3,"file":"Terrain.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/ecs/terrain/ecs/Terrain.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Terrain.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/ecs/terrain/ecs/Terrain.js"],"names":[],"mappings":"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"}
@@ -595,8 +595,10 @@ class Terrain {
595
595
  const promisedTiles = [];
596
596
 
597
597
  tiles.traverse(function (tile) {
598
- const x = tile.gridPosition.x;
599
- const y = tile.gridPosition.y;
598
+ const position = tile.gridPosition;
599
+
600
+ const x = position.x;
601
+ const y = position.y;
600
602
 
601
603
  const tilePromise = tiles.obtain(x, y);
602
604
 
@@ -1 +1 @@
1
- {"version":3,"file":"TerrainTileManager.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/ecs/terrain/tiles/TerrainTileManager.js"],"names":[],"mappings":";AAiCA;IA6DI;;;;;OAKG;IACH,wCAJW,OAAO,EA8BjB;IA5FD;;;OAGG;IACH,OAFU,WAAW,EAAE,CAEZ;IAEX;;;MAGE;IAEF;;;OAGG;IACH,UAFU,OAAO,CAEc;IAE/B;;;OAGG;IACH,WAFU,OAAO,CAEa;IAC9B;;;OAGG;IACH,YAFU,eAAe,CAEW;IAEpC;;;OAGG;IACH,OAFU,OAAO,CAES;IAG1B;;;;OAIG;IACH,oBAAmC;IAEnC;;;OAGG;IACH,cAFU,GAAG,CAEG;IAEhB;;;OAGG;IACH,aAFU,eAAe,CAEe;IAExC;;;OAGG;IACH,yBAFU,OAAO,CAEe;IAqB5B,6BAA2C;IAG3C;;;OAGG;IACH,yBAA8B;IAQlC,iCAWC;IAED,8BAEC;IAED;;;;OAIG;IACH,2BAHW,MAAM,cACN,MAAM,QA8BhB;IAED,mBAIC;IAED;;;OAGG;IACH,yBAFW,WAAW,QAerB;IAED;;;;OAIG;IACH,6CASC;IAED,qBAmBC;IAED;;OAEG;IACH,gBAIC;IAED;;;;;;OAMG;IACH,qBALW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,QAuBhB;IAGD;;;;;;;OAOG;IACH,oCANW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACJ,WAAW,EAAE,CAgCzB;IAED,wBAqDC;IAED;;;;;OAKG;IACH,oBAJW,MAAM,KACN,MAAM,GACJ,MAAM,CAYlB;IAED;;;;;OAKG;IACH,UAJW,MAAM,KACN,MAAM,GACJ,WAAW,GAAC,SAAS,CAiBjC;IAED;;;;;OAKG;IACH,wBAJW,MAAM,KACN,MAAM,GACJ,WAAW,CAavB;IAED;;;;;OAKG;IACH,4BAJW,MAAM,KACN,MAAM,GACL,WAAW,GAAC,SAAS,CAahC;IAED;;;;;OAKG;IACH,+BAJW,MAAM,KACN,MAAM,GACJ,QAAQ,WAAW,CAAC,CAYhC;IAED;;;;;;OAMG;IACH,UALW,MAAM,KACN,MAAM,GACJ,QAAQ,WAAW,CAAC,CA4BhC;IAED;;;OAGG;IACH,cAFW,WAAW,QAcrB;IAED,gBASC;IAED;;;;;;OAMG;IACH,cAJW,MAAM,KACN,MAAM,QACN,WAAW,QAsCrB;IAED;;;;;;;;;;OAUG;IACH,yBATW,aAAa,WACb,MAAM,WACN,MAAM,WACN,MAAM,cACN,MAAM,cACN,MAAM,cACN,MAAM,GACJ,OAAO,CAuDnB;IAED;;;;;;OAMG;IACH,kCALW,aAAa,KACb,MAAM,KACN,MAAM,GACL,OAAO,CAOlB;IAED;;;;;;OAMG;IACH,SALW,MAAM,KACN,MAAM,6CA2DhB;CACJ;wBA7rBuB,kBAAkB;mBAZvB,0CAA0C;oBAKzC,kCAAkC;4BAG1B,2CAA2C;oBAZnD,mCAAmC;gCAUvB,mDAAmD;0BAGzD,yCAAyC;8BALrC,2CAA2C"}
1
+ {"version":3,"file":"TerrainTileManager.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/ecs/terrain/tiles/TerrainTileManager.js"],"names":[],"mappings":";AA+BA;IA6DI;;;;;OAKG;IACH,wCAJW,OAAO,EA8BjB;IA5FD;;;OAGG;IACH,OAFU,WAAW,EAAE,CAEZ;IAEX;;;MAGE;IAEF;;;OAGG;IACH,UAFU,OAAO,CAEc;IAE/B;;;OAGG;IACH,WAFU,OAAO,CAEa;IAC9B;;;OAGG;IACH,YAFU,eAAe,CAEW;IAEpC;;;OAGG;IACH,OAFU,OAAO,CAES;IAG1B;;;;OAIG;IACH,oBAAmC;IAEnC;;;OAGG;IACH,cAFU,GAAG,CAEG;IAEhB;;;OAGG;IACH,aAFU,eAAe,CAEe;IAExC;;;OAGG;IACH,yBAFU,OAAO,CAEe;IAqB5B,6BAA2C;IAG3C;;;OAGG;IACH,yBAA8B;IAQlC,iCAWC;IAED,8BAEC;IAED;;;;OAIG;IACH,2BAHW,MAAM,cACN,MAAM,QA8BhB;IAED,mBAIC;IAED;;;OAGG;IACH,yBAFW,WAAW,QAerB;IAED;;;;OAIG;IACH,6CASC;IAED,qBAmBC;IAED;;OAEG;IACH,gBAIC;IAED;;;;;;OAMG;IACH,qBALW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,QAuBhB;IAGD;;;;;;;OAOG;IACH,oCANW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACJ,WAAW,EAAE,CAgCzB;IAED,wBAqDC;IAED;;;;;OAKG;IACH,oBAJW,MAAM,KACN,MAAM,GACJ,MAAM,CAYlB;IAED;;;;;OAKG;IACH,UAJW,MAAM,KACN,MAAM,GACJ,WAAW,GAAC,SAAS,CAiBjC;IAED;;;;;OAKG;IACH,wBAJW,MAAM,KACN,MAAM,GACJ,WAAW,CAavB;IAED;;;;;OAKG;IACH,4BAJW,MAAM,KACN,MAAM,GACL,WAAW,GAAC,SAAS,CAahC;IAED;;;;;OAKG;IACH,+BAJW,MAAM,KACN,MAAM,GACJ,QAAQ,WAAW,CAAC,CAYhC;IAED;;;;;;OAMG;IACH,UALW,MAAM,KACN,MAAM,GACJ,QAAQ,WAAW,CAAC,CA4BhC;IAED;;;OAGG;IACH,cAFW,WAAW,QAcrB;IAED,gBASC;IAED;;;;;;OAMG;IACH,cAJW,MAAM,KACN,MAAM,QACN,WAAW,QAsCrB;IAED;;;;;;;;;;OAUG;IACH,yBATW,aAAa,WACb,MAAM,WACN,MAAM,WACN,MAAM,cACN,MAAM,cACN,MAAM,cACN,MAAM,GACJ,OAAO,CAuDnB;IAED;;;;;;OAMG;IACH,kCALW,aAAa,KACb,MAAM,KACN,MAAM,GACL,OAAO,CAOlB;IAED;;;;;;OAMG;IACH,SALW,MAAM,KACN,MAAM,6CA6DhB;CACJ;wBA/rBuB,kBAAkB;mBAVvB,0CAA0C;oBAGzC,kCAAkC;4BAG1B,2CAA2C;oBAVnD,mCAAmC;gCAQvB,mDAAmD;0BAGzD,yCAAyC;8BALrC,2CAA2C"}
@@ -11,8 +11,6 @@ import { bvh_query_leaves_ray } from "../../../../core/bvh2/bvh3/query/bvh_query
11
11
  import { isArrayEqualStrict } from "../../../../core/collection/array/isArrayEqualStrict.js";
12
12
  import { Color } from "../../../../core/color/Color.js";
13
13
  import Signal from '../../../../core/events/signal/Signal.js';
14
-
15
- import { noop } from "../../../../core/function/noop.js";
16
14
  import { aabb2_overlap_exists } from "../../../../core/geom/2d/aabb/aabb2_overlap_exists.js";
17
15
  import { SurfacePoint3 } from "../../../../core/geom/3d/SurfacePoint3.js";
18
16
  import Vector2 from '../../../../core/geom/Vector2.js';
@@ -492,16 +490,16 @@ class TerrainTileManager {
492
490
  return Promise.resolve(tile);
493
491
 
494
492
  } else {
495
- const promise = new Promise((resolve, reject) => {
496
- tile.onBuilt.addOne(resolve);
497
- tile.onDestroyed.addOne(reject);
498
- });
499
493
 
500
494
  if (!tile.isBuildInProgress) {
501
- this.build(x, y, noop, noop);
495
+ return new Promise((resolve, reject) => this.build(x, y, resolve, reject));
496
+ } else {
497
+ return new Promise((resolve, reject) => {
498
+ tile.onBuilt.addOne(resolve);
499
+ tile.onDestroyed.addOne(reject);
500
+ });
502
501
  }
503
502
 
504
- return promise;
505
503
  }
506
504
 
507
505
  }
@@ -619,7 +617,7 @@ class TerrainTileManager {
619
617
 
620
618
  const tile = this.tiles[tile_index];
621
619
 
622
- if(!tile.isBuilt){
620
+ if (!tile.isBuilt) {
623
621
  continue;
624
622
  }
625
623
 
@@ -721,6 +719,8 @@ class TerrainTileManager {
721
719
  // console.timeEnd(processName);
722
720
 
723
721
  this.on.tileBuilt.send1(tile);
722
+
723
+ resolve(tile);
724
724
  }, reject);
725
725
  }
726
726
  }
@@ -6,4 +6,5 @@
6
6
  * @param {number} [quality]
7
7
  */
8
8
  export function sampler2d_blur_gaussian(output: Sampler2D, input: Sampler2D, size: number, quality?: number): void;
9
+ import { Sampler2D } from "../Sampler2D.js";
9
10
  //# sourceMappingURL=sampler2d_blur_gaussian.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sampler2d_blur_gaussian.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/texture/sampler/filter/sampler2d_blur_gaussian.js"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,mFAHW,MAAM,YACN,MAAM,QAmFhB"}
1
+ {"version":3,"file":"sampler2d_blur_gaussian.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/texture/sampler/filter/sampler2d_blur_gaussian.js"],"names":[],"mappings":"AA+BA;;;;;;GAMG;AACH,gDALW,SAAS,SACT,SAAS,QACT,MAAM,YACN,MAAM,QAkFhB;0BAnHyB,iBAAiB"}
@@ -1,6 +1,33 @@
1
1
  import { gaussian } from "../../../../../core/math/gaussian.js";
2
2
  import { makeNextOdd } from "../../../../../core/math/makeNextOdd.js";
3
3
  import { max2 } from "../../../../../core/math/max2.js";
4
+ import { Sampler2D } from "../Sampler2D.js";
5
+
6
+
7
+ let temp_data = new Float64Array(1);
8
+
9
+ /**
10
+ *
11
+ * @param {number} sample_count
12
+ * @param {Float32Array} kernel
13
+ */
14
+ function build_kernel(sample_count, kernel) {
15
+ const sigma = 10;
16
+
17
+ let kernel_power_sum = 0;
18
+ for (let i = 0; i < sample_count; i++) {
19
+ const local = i - sample_count * 0.5;
20
+
21
+ const power = gaussian(sigma, local);
22
+ kernel[i] = power;
23
+ kernel_power_sum += power;
24
+ }
25
+
26
+ // normalize kernel
27
+ for (let i = 0; i < sample_count; i++) {
28
+ kernel[i] /= kernel_power_sum;
29
+ }
30
+ }
4
31
 
5
32
  /**
6
33
  *
@@ -13,28 +40,26 @@ export function sampler2d_blur_gaussian(output, input, size, quality = 1) {
13
40
 
14
41
  const sample_count = max2(3, makeNextOdd(Math.round(size * quality)));
15
42
 
16
-
17
43
  const kernel = new Float32Array(sample_count);
18
44
 
19
- const sigma = 10;
20
-
21
- for (let i = 0; i < sample_count; i++) {
22
- const local = i - sample_count * 0.5;
23
-
24
- kernel[i] = gaussian(sigma, local);
25
- }
45
+ build_kernel(sample_count, kernel);
26
46
 
27
47
  const width = input.width;
28
48
  const height = input.height;
49
+ const channel_count = input.itemSize;
50
+
51
+ const total_value_count = width * height * channel_count;
52
+ if (temp_data.length < total_value_count) {
53
+ temp_data = new Float64Array(total_value_count);
54
+ }
29
55
 
30
56
  let source = input;
31
- let target = output;
57
+ let target = new Sampler2D(temp_data, channel_count, width, height);
32
58
 
33
59
  const half_samples = (sample_count - 1) * 0.5;
34
60
  const local_u_scale = width / (sample_count - 1);
35
61
  const local_v_scale = height / (sample_count - 1);
36
62
 
37
- const channel_count = input.itemSize;
38
63
  const sample = new Float64Array(channel_count);
39
64
 
40
65
  // horizonal pass
@@ -63,6 +88,7 @@ export function sampler2d_blur_gaussian(output, input, size, quality = 1) {
63
88
  }
64
89
 
65
90
  source = target;
91
+ target = output;
66
92
 
67
93
  // vertical pass
68
94
  for (let y = 0; y < height; y++) {