@woosh/meep-engine 2.119.17 → 2.119.20

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.
Files changed (84) hide show
  1. package/README.md +2 -2
  2. package/build/bundle-worker-image-decoder.js +1 -1
  3. package/package.json +1 -1
  4. package/src/core/binary/BinaryBuffer.d.ts +2 -6
  5. package/src/core/binary/BinaryBuffer.d.ts.map +1 -1
  6. package/src/core/binary/BinaryBuffer.js +7 -8
  7. package/src/core/binary/BitSet.d.ts.map +1 -1
  8. package/src/core/binary/BitSet.js +2 -3
  9. package/src/core/bvh2/bvh3/BVH.d.ts.map +1 -1
  10. package/src/core/bvh2/bvh3/BVH.js +8 -0
  11. package/src/core/cache/FrequencySketch.js +1 -1
  12. package/src/core/codegen/LineBuilder.d.ts +7 -1
  13. package/src/core/codegen/LineBuilder.d.ts.map +1 -1
  14. package/src/core/codegen/LineBuilder.js +10 -1
  15. package/src/core/geom/2d/convex-hull/fixed_convex_hull_relaxation.d.ts.map +1 -1
  16. package/src/core/geom/2d/convex-hull/fixed_convex_hull_relaxation.js +1 -0
  17. package/src/core/geom/3d/Ray3.d.ts +12 -0
  18. package/src/core/geom/3d/Ray3.d.ts.map +1 -1
  19. package/src/core/geom/3d/Ray3.js +32 -0
  20. package/src/core/geom/3d/aabb/AABB3.d.ts.map +1 -1
  21. package/src/core/geom/3d/aabb/AABB3.js +17 -7
  22. package/src/core/geom/3d/sphere/harmonics/sh3_basis_at.d.ts +2 -2
  23. package/src/core/geom/3d/sphere/harmonics/sh3_basis_at.d.ts.map +1 -1
  24. package/src/core/geom/3d/sphere/harmonics/sh3_basis_at.js +11 -11
  25. package/src/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.d.ts.map +1 -1
  26. package/src/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.js +2 -1
  27. package/src/core/geom/3d/tetrahedra/bvh/tetrahedral_mesh_to_bvh.d.ts +8 -0
  28. package/src/core/geom/3d/tetrahedra/bvh/tetrahedral_mesh_to_bvh.d.ts.map +1 -0
  29. package/src/core/geom/3d/tetrahedra/bvh/tetrahedral_mesh_to_bvh.js +36 -0
  30. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_compute_tet_aabb3.d.ts +10 -0
  31. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_compute_tet_aabb3.d.ts.map +1 -0
  32. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_compute_tet_aabb3.js +49 -0
  33. package/src/core/geom/Vector3.d.ts.map +1 -1
  34. package/src/core/geom/Vector3.js +24 -0
  35. package/src/core/geom/random/randomPointInCircle.d.ts +3 -2
  36. package/src/core/geom/random/randomPointInCircle.d.ts.map +1 -1
  37. package/src/core/geom/random/randomPointInCircle.js +6 -3
  38. package/src/core/geom/vec2/v2_magnitude.d.ts +3 -5
  39. package/src/core/geom/vec2/v2_magnitude.d.ts.map +1 -1
  40. package/src/core/geom/vec2/v2_magnitude.js +3 -8
  41. package/src/core/graph/v2/NodeContainer.d.ts.map +1 -1
  42. package/src/core/graph/v2/NodeContainer.js +3 -9
  43. package/src/core/lang/reactive/AbstractCachingParser.d.ts +8 -5
  44. package/src/core/lang/reactive/AbstractCachingParser.d.ts.map +1 -1
  45. package/src/core/lang/reactive/AbstractCachingParser.js +19 -24
  46. package/src/core/lang/reactive/pegjs/ReactivePegParser.d.ts +2 -1
  47. package/src/core/lang/reactive/pegjs/ReactivePegParser.d.ts.map +1 -1
  48. package/src/core/localization/Localization.js +1 -1
  49. package/src/engine/achievements/AchievementManager.d.ts +1 -1
  50. package/src/engine/achievements/AchievementManager.d.ts.map +1 -1
  51. package/src/engine/achievements/AchievementManager.js +11 -28
  52. package/src/engine/ecs/EntityComponentDataset.d.ts.map +1 -1
  53. package/src/engine/ecs/EntityComponentDataset.js +5 -2
  54. package/src/engine/ecs/EntityReference.d.ts +6 -0
  55. package/src/engine/ecs/EntityReference.d.ts.map +1 -1
  56. package/src/engine/ecs/EntityReference.js +16 -1
  57. package/src/engine/ecs/storage/BinaryBufferDeSerializer.js +1 -1
  58. package/src/engine/graphics/sh3/prototypeSH3Probe.js +1 -1
  59. package/src/engine/graphics/texture/virtual/VirtualTextureTileLoader.d.ts +10 -0
  60. package/src/engine/graphics/texture/virtual/VirtualTextureTileLoader.d.ts.map +1 -1
  61. package/src/engine/graphics/texture/virtual/VirtualTextureTileLoader.js +39 -19
  62. package/src/engine/graphics/texture/virtual/VirtualTextureUsage.d.ts +8 -0
  63. package/src/engine/graphics/texture/virtual/VirtualTextureUsage.d.ts.map +1 -1
  64. package/src/engine/graphics/texture/virtual/VirtualTextureUsage.js +8 -1
  65. package/src/engine/graphics/texture/virtual/VirtualTextureUsageUpdater.d.ts.map +1 -1
  66. package/src/engine/graphics/texture/virtual/VirtualTextureUsageUpdater.js +2 -1
  67. package/src/engine/intelligence/behavior/composite/SequenceBehavior.d.ts.map +1 -1
  68. package/src/engine/intelligence/behavior/composite/SequenceBehavior.js +17 -5
  69. package/src/engine/intelligence/behavior/ecs/DieBehavior.d.ts.map +1 -1
  70. package/src/engine/intelligence/behavior/ecs/DieBehavior.js +2 -7
  71. package/src/engine/intelligence/behavior/ecs/SendEventBehavior.d.ts +4 -0
  72. package/src/engine/intelligence/behavior/ecs/SendEventBehavior.d.ts.map +1 -1
  73. package/src/engine/intelligence/behavior/ecs/SendEventBehavior.js +8 -7
  74. package/src/engine/intelligence/behavior/ecs/WaitForEventBehavior.d.ts.map +1 -1
  75. package/src/engine/intelligence/behavior/ecs/WaitForEventBehavior.js +21 -22
  76. package/src/core/bvh2/bvh3/query/cache/BVH_QUERY_CACHE_SIZE.d.ts +0 -2
  77. package/src/core/bvh2/bvh3/query/cache/BVH_QUERY_CACHE_SIZE.d.ts.map +0 -1
  78. package/src/core/bvh2/bvh3/query/cache/BVH_QUERY_CACHE_SIZE.js +0 -1
  79. package/src/core/bvh2/bvh3/query/cache/bvh_query_cache_hash_v3.d.ts +0 -9
  80. package/src/core/bvh2/bvh3/query/cache/bvh_query_cache_hash_v3.d.ts.map +0 -1
  81. package/src/core/bvh2/bvh3/query/cache/bvh_query_cache_hash_v3.js +0 -31
  82. package/src/core/geom/2d/lt-grid/LooseTightGrid.d.ts +0 -55
  83. package/src/core/geom/2d/lt-grid/LooseTightGrid.d.ts.map +0 -1
  84. package/src/core/geom/2d/lt-grid/LooseTightGrid.js +0 -221
@@ -212,4 +212,36 @@ export class Ray3 extends Float32Array {
212
212
  equals(other) {
213
213
  return array_range_equal_strict(this, 0, other, 0, 7);
214
214
  }
215
+
216
+ /**
217
+ *
218
+ * @param {number} origin_x
219
+ * @param {number} origin_y
220
+ * @param {number} origin_z
221
+ * @param {number} direction_x
222
+ * @param {number} direction_y
223
+ * @param {number} direction_z
224
+ * @param {number} t_max
225
+ * @return {Ray3}
226
+ */
227
+ static from(
228
+ origin_x, origin_y, origin_z,
229
+ direction_x, direction_y, direction_z,
230
+ t_max = Infinity
231
+ ) {
232
+
233
+ const ray = new Ray3();
234
+
235
+ ray[0] = origin_x;
236
+ ray[1] = origin_y;
237
+ ray[2] = origin_z;
238
+
239
+ ray[3] = direction_x;
240
+ ray[4] = direction_y;
241
+ ray[5] = direction_z;
242
+
243
+ ray[6] = t_max;
244
+
245
+ return ray;
246
+ }
215
247
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AABB3.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/aabb/AABB3.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AABB3.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/aabb/AABB3.js"],"names":[],"mappings":"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"}
@@ -576,11 +576,11 @@ export class AABB3 {
576
576
  * @param {Vector3} target
577
577
  */
578
578
  getExtents(target) {
579
- const x = (this.x1 - this.x0);
580
- const y = (this.y1 - this.y0);
581
- const z = (this.z1 - this.z0);
582
-
583
- target.set(x, y, z);
579
+ target.set(
580
+ this.width,
581
+ this.height,
582
+ this.height,
583
+ );
584
584
  }
585
585
 
586
586
  /**
@@ -627,7 +627,12 @@ export class AABB3 {
627
627
  const x = this.getCenterX();
628
628
  const y = this.getCenterY();
629
629
  const z = this.getCenterZ();
630
- target.set(x, y, z);
630
+
631
+ target.set(
632
+ x,
633
+ y,
634
+ z
635
+ );
631
636
 
632
637
  return target;
633
638
  }
@@ -709,7 +714,7 @@ export class AABB3 {
709
714
  * @param {number[]|Float32Array|Float64Array} result
710
715
  * @param {number} offset
711
716
  */
712
- writeToArray(result, offset = 0) {
717
+ writeToArray(result = [], offset = 0) {
713
718
  assert.isNonNegativeInteger(offset, 'offset');
714
719
 
715
720
  result[offset] = this.x0;
@@ -719,6 +724,8 @@ export class AABB3 {
719
724
  result[offset + 3] = this.x1;
720
725
  result[offset + 4] = this.y1;
721
726
  result[offset + 5] = this.z1;
727
+
728
+ return result;
722
729
  }
723
730
 
724
731
  /**
@@ -933,6 +940,9 @@ export class AABB3 {
933
940
  */
934
941
  AABB3.prototype.isAABB3 = true;
935
942
 
943
+ AABB3.prototype.toArray = AABB3.prototype.writeToArray;
944
+ AABB3.prototype.fromArray = AABB3.prototype.readFromArray;
945
+
936
946
  /**
937
947
  * Pretending to be an array
938
948
  * @readonly
@@ -5,7 +5,7 @@
5
5
  * @param {number} x
6
6
  * @param {number} y
7
7
  * @param {number} z
8
- * @param {number[]|ArrayLike<number>|Float32Array|Float64Array} shBasis
8
+ * @param {number[]|ArrayLike<number>|Float32Array|Float64Array} output output is written here
9
9
  */
10
- export function sh3_basis_at(x: number, y: number, z: number, shBasis: number[] | ArrayLike<number> | Float32Array | Float64Array): void;
10
+ export function sh3_basis_at(x: number, y: number, z: number, output: number[] | ArrayLike<number> | Float32Array | Float64Array): void;
11
11
  //# sourceMappingURL=sh3_basis_at.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sh3_basis_at.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/geom/3d/sphere/harmonics/sh3_basis_at.js"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,gCALW,MAAM,KACN,MAAM,KACN,MAAM,WACN,MAAM,EAAE,GAAC,UAAU,MAAM,CAAC,GAAC,YAAY,GAAC,YAAY,QA+B9D"}
1
+ {"version":3,"file":"sh3_basis_at.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/geom/3d/sphere/harmonics/sh3_basis_at.js"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,gCALW,MAAM,KACN,MAAM,KACN,MAAM,UACN,MAAM,EAAE,GAAC,UAAU,MAAM,CAAC,GAAC,YAAY,GAAC,YAAY,QA+B9D"}
@@ -8,9 +8,9 @@ import { assert } from "../../../../assert.js";
8
8
  * @param {number} x
9
9
  * @param {number} y
10
10
  * @param {number} z
11
- * @param {number[]|ArrayLike<number>|Float32Array|Float64Array} shBasis
11
+ * @param {number[]|ArrayLike<number>|Float32Array|Float64Array} output output is written here
12
12
  */
13
- export function sh3_basis_at(x, y, z, shBasis) {
13
+ export function sh3_basis_at(x, y, z, output) {
14
14
 
15
15
  assert.isNumber(x,'x');
16
16
  assert.notNaN(x,'x');
@@ -25,18 +25,18 @@ export function sh3_basis_at(x, y, z, shBasis) {
25
25
 
26
26
 
27
27
  // band 0
28
- shBasis[0] = 0.28209479177387814;
28
+ output[0] = 0.28209479177387814;
29
29
 
30
30
  // band 1
31
- shBasis[1] = -0.4886025119029199 * y;
32
- shBasis[2] = 0.4886025119029199 * z;
33
- shBasis[3] = -0.4886025119029199 * x;
31
+ output[1] = -0.4886025119029199 * y;
32
+ output[2] = 0.4886025119029199 * z;
33
+ output[3] = -0.4886025119029199 * x;
34
34
 
35
35
  // band 2
36
- shBasis[4] = 1.0925484305920792 * x * y;
37
- shBasis[5] = -1.0925484305920792 * y * z;
38
- shBasis[6] = 0.31539156525252005 * (3 * z * z - 1);
39
- shBasis[7] = -1.0925484305920792 * x * z;
40
- shBasis[8] = 0.5462742152960396 * (x * x - y * y);
36
+ output[4] = 1.0925484305920792 * x * y;
37
+ output[5] = -1.0925484305920792 * y * z;
38
+ output[6] = 0.31539156525252005 * (3 * z * z - 1);
39
+ output[7] = -1.0925484305920792 * x * z;
40
+ output[8] = 0.5462742152960396 * (x * x - y * y);
41
41
 
42
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sh3_dering_optimize_positive.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.js"],"names":[],"mappings":"AAgSA;;;;;;;GAOG;AACH,qDANW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,iBAClC,MAAM,aACN,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,oBAClC,MAAM,oBACN,MAAM,QAIhB"}
1
+ {"version":3,"file":"sh3_dering_optimize_positive.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.js"],"names":[],"mappings":"AAiSA;;;;;;;GAOG;AACH,qDANW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,iBAClC,MAAM,aACN,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,oBAClC,MAAM,oBACN,MAAM,QAIhB"}
@@ -2,6 +2,7 @@ import { mat3, vec3 } from "gl-matrix";
2
2
  import { assert } from "../../../../assert.js";
3
3
  import { array_copy } from "../../../../collection/array/array_copy.js";
4
4
  import { min2 } from "../../../../math/min2.js";
5
+ import { sinc } from "../../../../math/sinc.js";
5
6
  import { SH3_COEFFICIENTS } from "./SH3_COEFFICIENTS.js";
6
7
  import { sh3_rotate_bl } from "./sh3_rotate_bl.js";
7
8
  import { sh_index } from "./sh_index.js";
@@ -34,7 +35,7 @@ function sinc_window(l, w) {
34
35
  // a sinc window only has zonal harmonics
35
36
  let x = (Math.PI * l) / w;
36
37
 
37
- x = Math.sin(x) / x;
38
+ x = sinc(x);
38
39
 
39
40
  // The convolution of a SH function f and a ZH function h is just the product of both
40
41
  // scaled by 1 / K(0,l) -- the window coefficients include this scale factor.
@@ -0,0 +1,8 @@
1
+ /**
2
+ *
3
+ * @param {BVH} bvh
4
+ * @param {TetrahedralMesh} mesh
5
+ * @param {number[]} positions
6
+ */
7
+ export function tetrahedral_mesh_to_bvh(bvh: BVH, mesh: TetrahedralMesh, positions: number[]): void;
8
+ //# sourceMappingURL=tetrahedral_mesh_to_bvh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tetrahedral_mesh_to_bvh.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/geom/3d/tetrahedra/bvh/tetrahedral_mesh_to_bvh.js"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,oFAFW,MAAM,EAAE,QA4BlB"}
@@ -0,0 +1,36 @@
1
+ import { ELEMENT_WORD_COUNT } from "../../../../bvh2/bvh3/BVH.js";
2
+ import { tetrahedral_mesh_compute_tet_aabb3 } from "../tetrahedral_mesh_compute_tet_aabb3.js";
3
+
4
+ /**
5
+ *
6
+ * @param {BVH} bvh
7
+ * @param {TetrahedralMesh} mesh
8
+ * @param {number[]} positions
9
+ */
10
+ export function tetrahedral_mesh_to_bvh(bvh, mesh, positions) {
11
+
12
+ const count = mesh.count;
13
+
14
+ bvh.release_all();
15
+ bvh.node_capacity = Math.max(0, count * 2 - 1);
16
+
17
+ const float32 = bvh.data_float32;
18
+
19
+ for (let tet_index = 0; tet_index < count; tet_index++) {
20
+
21
+ const node_id = bvh.allocate_node();
22
+
23
+ const address = node_id * ELEMENT_WORD_COUNT
24
+
25
+ tetrahedral_mesh_compute_tet_aabb3(
26
+ float32, address,
27
+ mesh, tet_index, positions
28
+ );
29
+
30
+ bvh.node_set_user_data(node_id, tet_index);
31
+
32
+ bvh.insert_leaf(node_id);
33
+
34
+ }
35
+
36
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ *
3
+ * @param {number[]|Float32Array} out
4
+ * @param {number} out_offset
5
+ * @param {TetrahedralMesh} mesh
6
+ * @param {number} tet_index
7
+ * @param {number[]|Float32Array} positions
8
+ */
9
+ export function tetrahedral_mesh_compute_tet_aabb3(out: number[] | Float32Array, out_offset: number, mesh: TetrahedralMesh, tet_index: number, positions: number[] | Float32Array): void;
10
+ //# sourceMappingURL=tetrahedral_mesh_compute_tet_aabb3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tetrahedral_mesh_compute_tet_aabb3.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/tetrahedra/tetrahedral_mesh_compute_tet_aabb3.js"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wDANW,MAAM,EAAE,GAAC,YAAY,cACrB,MAAM,oCAEN,MAAM,aACN,MAAM,EAAE,GAAC,YAAY,QA0C/B"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ *
3
+ * @param {number[]|Float32Array} out
4
+ * @param {number} out_offset
5
+ * @param {TetrahedralMesh} mesh
6
+ * @param {number} tet_index
7
+ * @param {number[]|Float32Array} positions
8
+ */
9
+ export function tetrahedral_mesh_compute_tet_aabb3(
10
+ out, out_offset,
11
+ mesh, tet_index,
12
+ positions
13
+ ) {
14
+
15
+ const vertex_index = mesh.getVertexIndex(tet_index, 0);
16
+ out[out_offset] = out[out_offset + 3] = positions[vertex_index * 3];
17
+ out[out_offset + 1] = out[out_offset + 4] = positions[vertex_index * 3 + 1];
18
+ out[out_offset + 2] = out[out_offset + 5] = positions[vertex_index * 3 + 2];
19
+
20
+ for (let j = 1; j < 4; j++) {
21
+
22
+ const vertex_index = mesh.getVertexIndex(tet_index, j);
23
+
24
+ const v3 = vertex_index * 3;
25
+
26
+ const x = positions[v3];
27
+ const y = positions[v3 + 1];
28
+ const z = positions[v3 + 2];
29
+
30
+ if (x < out[out_offset]) {
31
+ out[out_offset] = x;
32
+ } else if (x > out[out_offset + 3]) {
33
+ out[out_offset + 3] = x;
34
+ }
35
+
36
+ if (y < out[out_offset + 1]) {
37
+ out[out_offset + 1] = y;
38
+ } else if (y > out[out_offset + 4]) {
39
+ out[out_offset + 4] = y;
40
+ }
41
+
42
+ if (z < out[out_offset + 2]) {
43
+ out[out_offset + 2] = z;
44
+ } else if (z > out[out_offset + 5]) {
45
+ out[out_offset + 5] = z;
46
+ }
47
+
48
+ }
49
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"Vector3.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Vector3.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Vector3.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Vector3.js"],"names":[],"mappings":"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"}
@@ -282,6 +282,30 @@ class Vector3 {
282
282
  );
283
283
  }
284
284
 
285
+ /**
286
+ *
287
+ * @param {number} x
288
+ * @param {number} y
289
+ * @param {number} z
290
+ * @returns {Vector3}
291
+ */
292
+ _divide(x, y, z) {
293
+ return this.set(
294
+ this.x / x,
295
+ this.y / y,
296
+ this.z / z,
297
+ )
298
+ }
299
+
300
+ /**
301
+ *
302
+ * @param {Vector3} other
303
+ * @returns {Vector3}
304
+ */
305
+ divide(other) {
306
+ return this._divide(other.x, other.y, other.z);
307
+ }
308
+
285
309
  /**
286
310
  * Subtract scalar value from each component of the vector
287
311
  * @param {number} val
@@ -2,7 +2,8 @@
2
2
  * Pick a random point within a unit circle
3
3
  * Based on: https://stackoverflow.com/questions/5837572/generate-a-random-point-within-a-circle-uniformly
4
4
  * @param {function} random
5
- * @param {Vector2} result
5
+ * @param {number[]|Float32Array} result
6
+ * @param {number} result_offset
6
7
  */
7
- export function randomPointInCircle(random: Function, result: Vector2): void;
8
+ export function randomPointInCircle(random: Function, result: number[] | Float32Array, result_offset: number): void;
8
9
  //# sourceMappingURL=randomPointInCircle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"randomPointInCircle.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/random/randomPointInCircle.js"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,6EASC"}
1
+ {"version":3,"file":"randomPointInCircle.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/random/randomPointInCircle.js"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,8DAHW,MAAM,EAAE,GAAC,YAAY,iBACrB,MAAM,QAahB"}
@@ -4,9 +4,10 @@ import { PI2 } from "../../math/PI2.js";
4
4
  * Pick a random point within a unit circle
5
5
  * Based on: https://stackoverflow.com/questions/5837572/generate-a-random-point-within-a-circle-uniformly
6
6
  * @param {function} random
7
- * @param {Vector2} result
7
+ * @param {number[]|Float32Array} result
8
+ * @param {number} result_offset
8
9
  */
9
- export function randomPointInCircle(random, result) {
10
+ export function randomPointInCircle(random, result, result_offset) {
10
11
  const r = Math.sqrt(random());
11
12
 
12
13
  const theta = random() * PI2;
@@ -14,5 +15,7 @@ export function randomPointInCircle(random, result) {
14
15
  const x = r * Math.cos(theta);
15
16
  const y = r * Math.sin(theta);
16
17
 
17
- result.set(x, y);
18
+ result[result_offset] = x;
19
+ result[result_offset + 1] = y;
20
+
18
21
  }
@@ -1,8 +1,6 @@
1
1
  /**
2
- *
3
- * @param {number} x
4
- * @param {number} y
5
- * @returns {number}
2
+ * @deprecated
6
3
  */
7
- export function v2_magnitude(x: number, y: number): number;
4
+ export const v2_magnitude: typeof v2_length;
5
+ import { v2_length } from "./v2_length.js";
8
6
  //# sourceMappingURL=v2_magnitude.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"v2_magnitude.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/vec2/v2_magnitude.js"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,gCAJW,MAAM,KACN,MAAM,GACJ,MAAM,CAIlB"}
1
+ {"version":3,"file":"v2_magnitude.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/vec2/v2_magnitude.js"],"names":[],"mappings":"AAEA;;GAEG;AACH,4CAAsC;0BALZ,gBAAgB"}
@@ -1,11 +1,6 @@
1
- import { v2_length_sqr } from "./v2_length_sqr.js";
1
+ import { v2_length } from "./v2_length.js";
2
2
 
3
3
  /**
4
- *
5
- * @param {number} x
6
- * @param {number} y
7
- * @returns {number}
4
+ * @deprecated
8
5
  */
9
- export function v2_magnitude(x, y) {
10
- return Math.sqrt(v2_length_sqr(x, y));
11
- }
6
+ export const v2_magnitude = v2_length;
@@ -1 +1 @@
1
- {"version":3,"file":"NodeContainer.d.ts","sourceRoot":"","sources":["../../../../../src/core/graph/v2/NodeContainer.js"],"names":[],"mappings":"AAEA;;;;GAIG;AACH;IACI;;;OAGG;IACH,MAFU,CAAC,CAEC;IAEZ;;;;OAIG;IACH,gBAAa;IAEb;;;;;OAKG;IACH,oBAAwB;IAExB;;;OAGG;IACH,sBAEC;IAED;;;OAGG;IACH,gBAFY,MAAM,CAIjB;IAED;;;OAGG;IACH,YAFY,SAAS,CAIpB;IAED;;;OAGG;IACH,mBAEC;IAED;;;OAGG;IACH,oBAEC;IAGD;;;OAGG;IACH,0BAUC;IAED;;;OAGG;IACH,yBAUC;IAGD;;;;OAIG;IACH,yBAHW,SAAS,GACP,MAAM,CAsBlB;IAED;;;;OAIG;IACH,yBAHW,SAAS,GACP,MAAM,CAsBlB;IAED;;;OAGG;IACH,wBAFY,MAAM,CAuBjB;IAGD;;;;OAIG;IACH,0BAHW,CAAC,GACC,OAAO,CAMnB;IAED;;;;;OAKG;IACH,+DAFa,MAAM,CAclB;IAED;;;;OAIG;IACH,sBAHW,CAAC,GACC,UAAQ,SAAS,CAwB7B;IAED;;;;OAIG;IACH,6BAHW,CAAC,GACC,UAAQ,SAAS,CA0B7B;IAED;;;;OAIG;IACH,kBAFa,OAAO,CAoBnB;IAED;;;;OAIG;IACH,qBAFa,OAAO,CAsBnB;CACJ"}
1
+ {"version":3,"file":"NodeContainer.d.ts","sourceRoot":"","sources":["../../../../../src/core/graph/v2/NodeContainer.js"],"names":[],"mappings":"AAAA;;;;GAIG;AACH;IACI;;;OAGG;IACH,MAFU,CAAC,CAEC;IAEZ;;;;OAIG;IACH,gBAAa;IAEb;;;;;OAKG;IACH,oBAAwB;IAExB;;;OAGG;IACH,sBAEC;IAED;;;OAGG;IACH,gBAFY,MAAM,CAIjB;IAED;;;OAGG;IACH,YAFY,SAAS,CAIpB;IAED;;;OAGG;IACH,mBAEC;IAED;;;OAGG;IACH,oBAEC;IAGD;;;OAGG;IACH,0BAUC;IAED;;;OAGG;IACH,yBAUC;IAGD;;;;OAIG;IACH,yBAHW,SAAS,GACP,MAAM,CAsBlB;IAED;;;;OAIG;IACH,yBAHW,SAAS,GACP,MAAM,CAsBlB;IAED;;;OAGG;IACH,wBAFY,MAAM,CAmBjB;IAGD;;;;OAIG;IACH,0BAHW,CAAC,GACC,OAAO,CAMnB;IAED;;;;;OAKG;IACH,+DAFa,MAAM,CAclB;IAED;;;;OAIG;IACH,sBAHW,CAAC,GACC,UAAQ,SAAS,CAwB7B;IAED;;;;OAIG;IACH,6BAHW,CAAC,GACC,UAAQ,SAAS,CA0B7B;IAED;;;;OAIG;IACH,kBAFa,OAAO,CAoBnB;IAED;;;;OAIG;IACH,qBAFa,OAAO,CAsBnB;CACJ"}
@@ -1,5 +1,3 @@
1
- import { EdgeDirectionType } from "../Edge.js";
2
-
3
1
  /**
4
2
  * Supplementary structure to `Graph`, holds edges and neighbour nodes for fast access
5
3
  * Used internally by `Graph`
@@ -170,11 +168,7 @@ export class NodeContainer {
170
168
  for (let i = 0; i < edge_count; i++) {
171
169
  const edge = edges[i];
172
170
 
173
- if (
174
- (edge.first === current_node && edge.direction === EdgeDirectionType.Forward)
175
- || (edge.second === current_node && edge.direction === EdgeDirectionType.Backward)
176
-
177
- ) {
171
+ if (edge.isDirectedTowards(current_node)) {
178
172
  r++;
179
173
  }
180
174
  }
@@ -262,8 +256,8 @@ export class NodeContainer {
262
256
  const edge = edges[i];
263
257
 
264
258
  if (
265
- (edge.second === other && edge.direction === EdgeDirectionType.Forward)
266
- || (edge.first === other && edge.direction === EdgeDirectionType.Backward)
259
+ (edge.second === other && edge.traversableForward())
260
+ || (edge.first === other && edge.traversableBackward())
267
261
 
268
262
  ) {
269
263
  return edge;
@@ -1,9 +1,12 @@
1
- export class AbstractCachingParser {
1
+ /**
2
+ * @template T
3
+ */
4
+ export class AbstractCachingParser<T> {
2
5
  /**
3
6
  * Parser cache
4
- * @type {Cache<string, *>}
7
+ * @type {Cache<string, T>}
5
8
  */
6
- __cache: Cache<string, any>;
9
+ __cache: Cache<string, T>;
7
10
  /**
8
11
  *
9
12
  * @param {string} code
@@ -14,9 +17,9 @@ export class AbstractCachingParser {
14
17
  /**
15
18
  *
16
19
  * @param {string} code
17
- * @returns {*}
20
+ * @returns {T}
18
21
  */
19
- parse(code: string): any;
22
+ parse(code: string): T;
20
23
  /**
21
24
  *
22
25
  * @param {string} code
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractCachingParser.d.ts","sourceRoot":"","sources":["../../../../../src/core/lang/reactive/AbstractCachingParser.js"],"names":[],"mappings":"AAMA;IAEQ;;;OAGG;IACH,SAFU,MAAM,MAAM,MAAI,CAKxB;IAGN;;;;;OAKG;IACH,wBAEC;IAED;;;;OAIG;IACH,YAHW,MAAM,OAoBhB;IAED;;;;OAIG;IACH,eAHW,MAAM,wCAgBhB;CACJ;sBAtEqB,sBAAsB;qBAEvB,wBAAwB"}
1
+ {"version":3,"file":"AbstractCachingParser.d.ts","sourceRoot":"","sources":["../../../../../src/core/lang/reactive/AbstractCachingParser.js"],"names":[],"mappings":"AAMA;;GAEG;AACH;IAEI;;;OAGG;IACH,SAFU,MAAM,MAAM,EAAE,CAAC,CAAC,CAKvB;IAGH;;;;;OAKG;IACH,wBAEC;IAED;;;;OAIG;IACH,YAHW,MAAM,GACJ,CAAC,CAWb;IAED;;;;OAIG;IACH,eAHW,MAAM,wCAgBhB;CACJ;sBAjEqB,sBAAsB;qBAEvB,wBAAwB"}
@@ -4,17 +4,20 @@ import { Cache } from "../../cache/Cache.js";
4
4
  import { noop } from "../../function/noop.js";
5
5
  import { computeStringHash } from "../../primitives/strings/computeStringHash.js";
6
6
 
7
+ /**
8
+ * @template T
9
+ */
7
10
  export class AbstractCachingParser {
8
- constructor() {
9
- /**
10
- * Parser cache
11
- * @type {Cache<string, *>}
12
- */
13
- this.__cache = new Cache({
14
- maxWeight: 1000,
15
- keyHashFunction: computeStringHash
16
- });
17
- }
11
+
12
+ /**
13
+ * Parser cache
14
+ * @type {Cache<string, T>}
15
+ */
16
+ __cache = new Cache({
17
+ maxWeight: 1000,
18
+ keyHashFunction: computeStringHash
19
+ });
20
+
18
21
 
19
22
  /**
20
23
  *
@@ -29,25 +32,17 @@ export class AbstractCachingParser {
29
32
  /**
30
33
  *
31
34
  * @param {string} code
32
- * @returns {*}
35
+ * @returns {T}
33
36
  */
34
37
  parse(code) {
35
- assert.typeOf(code, 'string', 'code');
38
+ assert.isString(code, 'code');
36
39
 
40
+ // applying trim increases chances of cache keys matching
37
41
  const trimmedCode = code.trim();
38
42
 
39
43
  assert.notEqual(trimmedCode, "", 'code is empty');
40
- //check cache
41
- let parseTree = this.__cache.get(trimmedCode);
42
-
43
- if (parseTree === null) {
44
- parseTree = this.__invoke_parser(trimmedCode);
45
-
46
- //cache compiled expression
47
- this.__cache.put(trimmedCode, parseTree);
48
- }
49
44
 
50
- return parseTree;
45
+ return this.__cache.getOrCompute(trimmedCode, this.__invoke_parser, this);
51
46
  }
52
47
 
53
48
  /**
@@ -56,8 +51,8 @@ export class AbstractCachingParser {
56
51
  * @param {function(e:Error)} [errorConsumer]
57
52
  */
58
53
  validate(code, errorConsumer = noop) {
59
- assert.typeOf(code, 'string', 'code');
60
- assert.typeOf(errorConsumer, 'function', 'errorConsumer');
54
+ assert.isString(code, 'code');
55
+ assert.isFunction(errorConsumer, 'errorConsumer');
61
56
 
62
57
  try {
63
58
  this.parse(code);
@@ -1,4 +1,5 @@
1
- export class ReactivePegParser extends AbstractCachingParser {
1
+ export class ReactivePegParser extends AbstractCachingParser<any> {
2
+ constructor();
2
3
  __invoke_parser(code: any): any;
3
4
  }
4
5
  export namespace ReactivePegParser {
@@ -1 +1 @@
1
- {"version":3,"file":"ReactivePegParser.d.ts","sourceRoot":"","sources":["../../../../../../src/core/lang/reactive/pegjs/ReactivePegParser.js"],"names":[],"mappings":"AAGA;IAEI,gCAEC;CACJ;;kBAIS,iBAAiB;;sCAZW,6BAA6B"}
1
+ {"version":3,"file":"ReactivePegParser.d.ts","sourceRoot":"","sources":["../../../../../../src/core/lang/reactive/pegjs/ReactivePegParser.js"],"names":[],"mappings":"AAGA;;IAEI,gCAEC;CACJ;;kBAIS,iBAAiB;;sCAZW,6BAA6B"}
@@ -209,7 +209,7 @@ export class Localization {
209
209
 
210
210
  const suggestions = similarities.slice(0, 3).map(p => p.key);
211
211
 
212
- return `No localization value for id='${id}', seed=${seed_string}, approximate matches: ${suggestions.join(', ')}`;
212
+ return `No localization value for id='${id}', seed=${seed_string}, best approximate matches: ${suggestions.join(', ')}`;
213
213
  });
214
214
 
215
215
  console.warn(message);
@@ -85,7 +85,7 @@ export class AchievementManager extends EnginePlugin {
85
85
  *
86
86
  * @param {AssetManager} assetManager
87
87
  */
88
- loadDefinitions(assetManager: AssetManager): Promise<any>;
88
+ loadDefinitions(assetManager: AssetManager): Promise<void>;
89
89
  /**
90
90
  * Visually present an achievement
91
91
  * @param {Achievement} achievement
@@ -1 +1 @@
1
- {"version":3,"file":"AchievementManager.d.ts","sourceRoot":"","sources":["../../../../src/engine/achievements/AchievementManager.js"],"names":[],"mappings":"AA0CA;IAGQ,WAAwB;IAExB;;;OAGG;IACH,SAFU,qBAAmB,IAAI,CAEd;IAEnB;;;OAGG;IACH,SAFU,WAAW,EAAE,CAEN;IAGjB;;;OAGG;IACH,cAFU,eAAa,IAAI,CAEH;IAExB;;;OAGG;IACH,YAFU,aAAW,IAAI,CAEH;IAEtB;;;OAGG;IACH,eAFU,gBAAc,IAAI,CAEH;IAEzB;;;OAGG;IACH,cAFU,eAAa,IAAI,CAEH;IAExB;;;OAGG;IACH,oBAFU,eAAe,CAEkB;IAG3C;;;OAGG;IACH,+BAFU,eAAe,CAE6B;IAEtD;;;OAGG;IACH,+BAFU,eAAe,CAE6B;IAEtD;;;OAGG;IACH,mBAFU,WAAW,CAKpB;IAUD,aAAkB;IAGtB;;;;OAIG;IACH,gCAFY,WAAW,GAAC,SAAS,CAIhC;IAGD;;;OAGG;IACH,yBA6BC;IAED;;;OAGG;IACH,sBAcC;IAED;;;OAGG;IACH,wBAUC;IAGD;;OAEG;IACH,iBAUC;IAED;;OAEG;IACH,mBAMC;IAED,uCAMC;IAED;;;OAGG;IACH,0DA6BC;IAED;;;OAGG;IACH,qBAFW,WAAW,QA4FrB;IAED;;;OAGG;IACH,+CAGC;IAED,mCAoDC;IAED,yBAOC;IAED,0BAEC;CACJ;6BAra4B,2BAA2B;4BAG5B,kBAAkB;4BAxBlB,qCAAqC;4BACrC,sDAAsD"}
1
+ {"version":3,"file":"AchievementManager.d.ts","sourceRoot":"","sources":["../../../../src/engine/achievements/AchievementManager.js"],"names":[],"mappings":"AA0CA;IAGQ,WAAwB;IAExB;;;OAGG;IACH,SAFU,qBAAmB,IAAI,CAEd;IAEnB;;;OAGG;IACH,SAFU,WAAW,EAAE,CAEN;IAGjB;;;OAGG;IACH,cAFU,eAAa,IAAI,CAEH;IAExB;;;OAGG;IACH,YAFU,aAAW,IAAI,CAEH;IAEtB;;;OAGG;IACH,eAFU,gBAAc,IAAI,CAEH;IAEzB;;;OAGG;IACH,cAFU,eAAa,IAAI,CAEH;IAExB;;;OAGG;IACH,oBAFU,eAAe,CAEkB;IAG3C;;;OAGG;IACH,+BAFU,eAAe,CAE6B;IAEtD;;;OAGG;IACH,+BAFU,eAAe,CAE6B;IAEtD;;;OAGG;IACH,mBAFU,WAAW,CAKpB;IAUD,aAAkB;IAGtB;;;;OAIG;IACH,gCAFY,WAAW,GAAC,SAAS,CAIhC;IAGD;;;OAGG;IACH,yBA6BC;IAED;;;OAGG;IACH,sBAcC;IAED;;;OAGG;IACH,wBAUC;IAGD;;OAEG;IACH,iBAUC;IAED;;OAEG;IACH,mBAMC;IAED,uCAMC;IAED;;;OAGG;IACH,2DAaC;IAED;;;OAGG;IACH,qBAFW,WAAW,QA2FrB;IAED;;;OAGG;IACH,+CAGC;IAED,mCAoDC;IAED,yBAOC;IAED,0BAEC;CACJ;6BApZ4B,2BAA2B;4BAG5B,kBAAkB;4BAxBlB,qCAAqC;4BACrC,sDAAsD"}