@woosh/meep-engine 2.94.2 → 2.94.5

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 (67) hide show
  1. package/build/bundle-worker-image-decoder.js +1 -1
  2. package/build/bundle-worker-terrain.js +1 -1
  3. package/build/meep.cjs +138 -73
  4. package/build/meep.min.js +1 -1
  5. package/build/meep.module.js +138 -73
  6. package/editor/ecs/component/editors/ecs/Trail2DEditor.js +1 -1
  7. package/package.json +1 -1
  8. package/src/core/assert.d.ts +6 -0
  9. package/src/core/assert.d.ts.map +1 -1
  10. package/src/core/assert.js +13 -0
  11. package/src/core/binary/BitSet.js +3 -3
  12. package/src/core/binary/BitSet.spec.js +14 -12
  13. package/src/core/geom/2d/aabb/AABB2.d.ts.map +1 -1
  14. package/src/core/geom/2d/aabb/AABB2.js +34 -4
  15. package/src/core/geom/3d/util/make_justified_point_grid.d.ts +2 -1
  16. package/src/core/geom/3d/util/make_justified_point_grid.d.ts.map +1 -1
  17. package/src/core/geom/3d/util/make_justified_point_grid.js +6 -3
  18. package/src/core/geom/Quaternion.d.ts.map +1 -1
  19. package/src/core/geom/Quaternion.js +29 -18
  20. package/src/core/geom/Quaternion.spec.js +27 -1
  21. package/src/core/geom/vec3/v3_distance_sqr.d.ts.map +1 -1
  22. package/src/core/geom/vec3/v3_distance_sqr.js +4 -1
  23. package/src/core/json/resolvePath.d.ts +1 -1
  24. package/src/core/json/resolvePath.d.ts.map +1 -1
  25. package/src/core/json/resolvePath.js +5 -1
  26. package/src/core/math/clamp.js +1 -1
  27. package/src/core/math/clamp01.d.ts +5 -0
  28. package/src/core/math/clamp01.d.ts.map +1 -1
  29. package/src/core/math/clamp01.js +6 -0
  30. package/src/core/math/iabs.d.ts +9 -0
  31. package/src/core/math/iabs.d.ts.map +1 -0
  32. package/src/core/math/iabs.js +15 -0
  33. package/src/core/math/iabs.spec.d.ts +2 -0
  34. package/src/core/math/iabs.spec.d.ts.map +1 -0
  35. package/src/core/math/iabs.spec.js +9 -0
  36. package/src/engine/EngineConfiguration.d.ts.map +1 -1
  37. package/src/engine/EngineConfiguration.js +7 -0
  38. package/src/engine/EngineHarness.d.ts.map +1 -1
  39. package/src/engine/EngineHarness.js +0 -3
  40. package/src/engine/animation/AnimationUtils.d.ts.map +1 -1
  41. package/src/engine/animation/AnimationUtils.js +2 -1
  42. package/src/engine/ecs/System.d.ts.map +1 -1
  43. package/src/engine/ecs/System.js +6 -0
  44. package/src/engine/ecs/transform/Transform.d.ts.map +1 -1
  45. package/src/engine/ecs/transform/Transform.js +18 -13
  46. package/src/engine/ecs/transform/Transform.spec.js +50 -11
  47. package/src/engine/ecs/util/hideEntityGracefully.d.ts.map +1 -1
  48. package/src/engine/ecs/util/hideEntityGracefully.js +12 -11
  49. package/src/engine/graphics/ecs/trail2d/Trail2D.d.ts +10 -6
  50. package/src/engine/graphics/ecs/trail2d/Trail2D.d.ts.map +1 -1
  51. package/src/engine/graphics/ecs/trail2d/Trail2D.js +61 -13
  52. package/src/engine/graphics/ecs/trail2d/Trail2DFlags.d.ts +8 -0
  53. package/src/engine/graphics/ecs/trail2d/Trail2DFlags.d.ts.map +1 -0
  54. package/src/engine/graphics/ecs/trail2d/Trail2DFlags.js +10 -0
  55. package/src/engine/graphics/ecs/trail2d/Trail2DSystem.d.ts.map +1 -1
  56. package/src/engine/graphics/ecs/trail2d/Trail2DSystem.js +14 -33
  57. package/src/engine/graphics/ecs/trail2d/makeGradientTrail.d.ts.map +1 -1
  58. package/src/engine/graphics/ecs/trail2d/makeGradientTrail.js +2 -1
  59. package/src/engine/graphics/ecs/trail2d/prototypeTrail2D.d.ts +2 -0
  60. package/src/engine/graphics/ecs/trail2d/prototypeTrail2D.d.ts.map +1 -0
  61. package/src/engine/graphics/ecs/trail2d/prototypeTrail2D.js +65 -0
  62. package/src/engine/graphics/sh3/path_tracer/prototypePathTracer.js +1 -1
  63. package/src/engine/graphics/trail/x/RibbonX.d.ts +2 -2
  64. package/src/engine/graphics/trail/x/RibbonX.d.ts.map +1 -1
  65. package/src/engine/graphics/trail/x/RibbonX.js +16 -8
  66. package/src/engine/graphics/trail/x/simulator/RibbonXFixedPhysicsSimulator.d.ts.map +1 -1
  67. package/src/engine/graphics/trail/x/simulator/RibbonXFixedPhysicsSimulator.js +2 -1
@@ -502,6 +502,19 @@ assert.isFunction = function (value, name = 'value') {
502
502
  }
503
503
  };
504
504
 
505
+ /**
506
+ *
507
+ * @param {Object|*} value
508
+ * @param {string} [name]
509
+ */
510
+ assert.isObject = function (value, name = 'value') {
511
+ const typeofValue = typeof value;
512
+
513
+ if (typeofValue !== 'object') {
514
+ throw new Error(`expected ${name} to be an object, instead was '${typeofValue}'(=${value})`);
515
+ }
516
+ };
517
+
505
518
  /**
506
519
  *
507
520
  * @param {number|*} value
@@ -1707,7 +1720,7 @@ function dispatchViaProxy(handlers, args) {
1707
1720
  }
1708
1721
 
1709
1722
  /**
1710
- * Clamps a given value to the specified min/max range
1723
+ * Constrain a value to lie between specified min/max values
1711
1724
  * @param {number} value
1712
1725
  * @param {number} min
1713
1726
  * @param {number} max
@@ -1723,6 +1736,23 @@ function clamp$1(value, min, max) {
1723
1736
  }
1724
1737
  }
1725
1738
 
1739
+ /**
1740
+ * Clamps a value to 0..1 range
1741
+ * Same as `clamp(value, 0, 1)`
1742
+ * Works the same as `saturate` function in GLSL
1743
+ * @param {number} value
1744
+ * @returns {number}
1745
+ */
1746
+ function clamp01(value) {
1747
+ if (value < 0) {
1748
+ return 0;
1749
+ } else if (value > 1) {
1750
+ return 1;
1751
+ } else {
1752
+ return value;
1753
+ }
1754
+ }
1755
+
1726
1756
  /**
1727
1757
  * Very small value, used for comparison when compensation for rounding error is required
1728
1758
  * @type {number}
@@ -1752,16 +1782,6 @@ function lerp$1(a, b, fraction) {
1752
1782
  return (b - a) * fraction + a;
1753
1783
  }
1754
1784
 
1755
- /**
1756
- * Returns lowest value out of 2 supplied
1757
- * @param {number} a
1758
- * @param {number} b
1759
- * @returns {number}
1760
- */
1761
- function min2(a, b) {
1762
- return a < b ? a : b;
1763
- }
1764
-
1765
1785
  /**
1766
1786
  *
1767
1787
  * @param {number} v
@@ -4252,23 +4272,23 @@ let Quaternion$1 = class Quaternion {
4252
4272
  this.set(x, y, z, w);
4253
4273
  }
4254
4274
 
4255
-
4256
4275
  /**
4257
- * @see https://github.com/toji/gl-matrix/blob/master/src/gl-matrix/quat.js
4258
- * @param {Quaternion} other
4276
+ *
4277
+ * @param {Quaternion} from
4278
+ * @param {Quaternion} to
4259
4279
  * @param {number} t
4260
4280
  */
4261
- slerp(other, t) {
4281
+ slerpQuaternions(from, to, t) {
4262
4282
 
4263
- const ax = this.x,
4264
- ay = this.y,
4265
- az = this.z,
4266
- aw = this.w;
4283
+ const ax = from.x,
4284
+ ay = from.y,
4285
+ az = from.z,
4286
+ aw = from.w;
4267
4287
 
4268
- let bx = other.x,
4269
- by = other.y,
4270
- bz = other.z,
4271
- bw = other.w;
4288
+ let bx = to.x,
4289
+ by = to.y,
4290
+ bz = to.z,
4291
+ bw = to.w;
4272
4292
 
4273
4293
  let omega, cosom, sinom, scale0, scale1;
4274
4294
 
@@ -4306,6 +4326,16 @@ let Quaternion$1 = class Quaternion {
4306
4326
  this.set(_x, _y, _z, _w);
4307
4327
  }
4308
4328
 
4329
+
4330
+ /**
4331
+ * @see https://github.com/toji/gl-matrix/blob/master/src/gl-matrix/quat.js
4332
+ * @param {Quaternion} other
4333
+ * @param {number} t
4334
+ */
4335
+ slerp(other, t) {
4336
+ this.slerpQuaternions(this, other, t);
4337
+ }
4338
+
4309
4339
  /**
4310
4340
  * @see https://github.com/gareth-cross/quat/blob/master/include/quaternion.hpp
4311
4341
  * TODO implement
@@ -4587,9 +4617,9 @@ let Quaternion$1 = class Quaternion {
4587
4617
 
4588
4618
  /**
4589
4619
  *
4590
- * @param {number} x
4591
- * @param {number} y
4592
- * @param {number} z
4620
+ * @param {number} x in radians
4621
+ * @param {number} y in radians
4622
+ * @param {number} z in radians
4593
4623
  * @returns {Quaternion}
4594
4624
  */
4595
4625
  static fromEulerAngles(x, y, z) {
@@ -4616,9 +4646,9 @@ let Quaternion$1 = class Quaternion {
4616
4646
  result.copy(to);
4617
4647
  } else {
4618
4648
  // clamp to 1, to make sure we don't overshoot
4619
- const t = min2(1, max_delta / angle);
4649
+ const t = clamp01(max_delta / angle);
4620
4650
 
4621
- from.slerp(to, t);
4651
+ result.slerpQuaternions(from, to, t);
4622
4652
  }
4623
4653
 
4624
4654
  }
@@ -5001,6 +5031,24 @@ class Transform {
5001
5031
  toString() {
5002
5032
  return `{ position: ${this.position}, rotation: ${this.rotation}, scale: ${this.scale} }`;
5003
5033
  }
5034
+
5035
+ /**
5036
+ * @deprecated use {@link Quaternion.rotateTowards} instead
5037
+ * @param {Quaternion} sourceQuaternion
5038
+ * @param {Vector3} targetVector
5039
+ * @param {Number} limit
5040
+ */
5041
+ static adjustRotation(
5042
+ sourceQuaternion,
5043
+ targetVector,
5044
+ limit = Infinity
5045
+ ) {
5046
+ const q = new Quaternion$1();
5047
+
5048
+ q.lookRotation(targetVector);
5049
+
5050
+ sourceQuaternion.rotateTowards(q, limit);
5051
+ }
5004
5052
  }
5005
5053
 
5006
5054
  /**
@@ -5013,22 +5061,7 @@ Transform.typeName = "Transform";
5013
5061
  * @readonly
5014
5062
  * @type {boolean}
5015
5063
  */
5016
- Transform.prototype.isTransform = true;
5017
-
5018
-
5019
- /**
5020
- * @deprecated use {@link Quaternion.rotateTowards} instead
5021
- * @param {Quaternion} sourceQuaternion
5022
- * @param {Vector3} targetVector
5023
- * @param {Number} limit
5024
- */
5025
- Transform.adjustRotation = function (sourceQuaternion, targetVector, limit = Infinity) {
5026
- const q = new Quaternion$1();
5027
-
5028
- q.lookRotation(targetVector);
5029
-
5030
- sourceQuaternion.rotateTowards(q, limit);
5031
- };
5064
+ Transform.prototype.isTransform = true;
5032
5065
 
5033
5066
  /**
5034
5067
  * Common utilities
@@ -47275,6 +47308,16 @@ function max2(a, b) {
47275
47308
  return a < b ? b : a;
47276
47309
  }
47277
47310
 
47311
+ /**
47312
+ * Returns lowest value out of 2 supplied
47313
+ * @param {number} a
47314
+ * @param {number} b
47315
+ * @returns {number}
47316
+ */
47317
+ function min2(a, b) {
47318
+ return a < b ? a : b;
47319
+ }
47320
+
47278
47321
  /**
47279
47322
  *
47280
47323
  * @param {number} x
@@ -53300,23 +53343,6 @@ function bvh_query_leaves_ray(
53300
53343
  return result_cursor - result_offset;
53301
53344
  }
53302
53345
 
53303
- /**
53304
- * Clamps a value to 0..1 range
53305
- * Same as `clamp(value, 0, 1)`
53306
- * Works the same as `saturate` function in GLSL
53307
- * @param {number} value
53308
- * @returns {number}
53309
- */
53310
- function clamp01(value) {
53311
- if (value < 0) {
53312
- return 0;
53313
- } else if (value > 1) {
53314
- return 1;
53315
- } else {
53316
- return value;
53317
- }
53318
- }
53319
-
53320
53346
  /**
53321
53347
  * Returns lowest value out of 3 supplied
53322
53348
  * @param {number} a
@@ -68351,6 +68377,12 @@ class System {
68351
68377
 
68352
68378
  }
68353
68379
 
68380
+ /**
68381
+ * @readonly
68382
+ * @type {boolean}
68383
+ */
68384
+ System.prototype.isSystem = true;
68385
+
68354
68386
  /**
68355
68387
  * Fixed update function, every step happens with the same exact time increment
68356
68388
  * useful for systems that must have a fixed time step to be predictable and stable, such as physics
@@ -70086,7 +70118,7 @@ BitSet.prototype.nextSetBit = function (fromIndex) {
70086
70118
 
70087
70119
 
70088
70120
  //scan the rest of the words
70089
- const word_count = bit_length / 32;
70121
+ const word_count = (bit_length + 31) >> 5; // Math.ceil(x /32)
70090
70122
  for (; word_index < word_count; word_index++) {
70091
70123
  word = data[word_index];
70092
70124
 
@@ -70122,8 +70154,6 @@ BitSet.prototype.nextClearBit = function (fromIndex) {
70122
70154
  // treat first word specially, as we may need to mask out portion of a word to skip certain number of bits
70123
70155
  let bit_index = fromIndex & 31;
70124
70156
 
70125
- const set_length = this.__length;
70126
- const word_count = set_length / 32;
70127
70157
  const data = this.__data_uint32;
70128
70158
 
70129
70159
  if (bit_index !== 0) {
@@ -70143,6 +70173,8 @@ BitSet.prototype.nextClearBit = function (fromIndex) {
70143
70173
 
70144
70174
  word_index++;
70145
70175
  }
70176
+ const set_length = this.__length;
70177
+ const word_count = (set_length + 31) >> 5; // Math.ceil(x /32)
70146
70178
 
70147
70179
  //scan the rest
70148
70180
  for (; word_index < word_count; word_index++) {
@@ -74281,7 +74313,10 @@ function returnTrue() {
74281
74313
  * @param {number} z1
74282
74314
  * @returns {number}
74283
74315
  */
74284
- function v3_distance_sqr(x0, y0, z0, x1, y1, z1) {
74316
+ function v3_distance_sqr(
74317
+ x0, y0, z0,
74318
+ x1, y1, z1
74319
+ ) {
74285
74320
  const x = x0 - x1;
74286
74321
  const y = y0 - y1;
74287
74322
  const z = z0 - z1;
@@ -79697,10 +79732,24 @@ class AABB2 {
79697
79732
  * @param {Vector2} result
79698
79733
  */
79699
79734
  getCenter(result) {
79700
- result.set(
79701
- (this.x0 + this.x1) / 2,
79702
- (this.y0 + this.y1) / 2
79703
- );
79735
+ result.set(this.centerX, this.centerY);
79736
+ }
79737
+
79738
+ /**
79739
+ *
79740
+ * @return {number}
79741
+ */
79742
+ get centerX() {
79743
+ return (this.x0 + this.x1) * 0.5;
79744
+ }
79745
+
79746
+ /**
79747
+ *
79748
+ * @return {number}
79749
+ */
79750
+ get centerY() {
79751
+
79752
+ return (this.y0 + this.y1) * 0.5
79704
79753
  }
79705
79754
 
79706
79755
  /**
@@ -79711,6 +79760,14 @@ class AABB2 {
79711
79760
  return this.x1 - this.x0;
79712
79761
  }
79713
79762
 
79763
+ /**
79764
+ *
79765
+ * @return {number}
79766
+ */
79767
+ get width() {
79768
+ return this.getWidth();
79769
+ }
79770
+
79714
79771
  /**
79715
79772
  *
79716
79773
  * @returns {number}
@@ -79719,6 +79776,14 @@ class AABB2 {
79719
79776
  return this.y1 - this.y0;
79720
79777
  }
79721
79778
 
79779
+ /**
79780
+ *
79781
+ * @return {number}
79782
+ */
79783
+ get height() {
79784
+ return this.getHeight();
79785
+ }
79786
+
79722
79787
  /**
79723
79788
  *
79724
79789
  * @param {Number} x0
@@ -103909,6 +103974,7 @@ class EngineConfiguration {
103909
103974
  * @returns {boolean}
103910
103975
  */
103911
103976
  addSystem(system) {
103977
+
103912
103978
  this.systems.push(system);
103913
103979
 
103914
103980
  return true;
@@ -103918,6 +103984,7 @@ class EngineConfiguration {
103918
103984
  * @param {System} systems
103919
103985
  */
103920
103986
  addManySystems(...systems) {
103987
+
103921
103988
  systems.forEach(s => this.addSystem(s));
103922
103989
  }
103923
103990
 
@@ -113611,12 +113678,13 @@ function resolvePathByArray(object, parts, missingPropertyHandler) {
113611
113678
  /**
113612
113679
  *
113613
113680
  * @param {object} object
113614
- * @param {string} path
113681
+ * @param {string} path separated with forward slash "/"
113615
113682
  * @param {function} [missingPropertyHandler] Allows custom handling of missing properties
113616
113683
  * @returns {*}
113617
113684
  * @throws {Error} if a path can not be resolved
113618
113685
  */
113619
113686
  function resolvePath(object, path, missingPropertyHandler) {
113687
+
113620
113688
  const parts = path.split("/");
113621
113689
 
113622
113690
  return resolvePathByArray(object, parts, missingPropertyHandler);
@@ -115276,9 +115344,6 @@ class EngineHarness {
115276
115344
  terrain.splat.resize(1, 1, 1);
115277
115345
  terrain.splat.fillLayerWeights(0, 255);
115278
115346
 
115279
- terrain.build(engine.assetManager);
115280
-
115281
-
115282
115347
  const eb = new Entity();
115283
115348
 
115284
115349
  eb.add(new Transform());
@@ -1,5 +1,5 @@
1
+ import { Trail2DFlags } from "../../../../../src/engine/graphics/ecs/trail2d/Trail2DFlags.js";
1
2
  import { BitFlagsEditor } from "../common/BitFlagsEditor.js";
2
- import { Trail2DFlags } from "../../../../../src/engine/graphics/ecs/trail2d/Trail2D.js";
3
3
  import { ObjectEditor } from "../primitive/ObjectEditor.js";
4
4
 
5
5
  export class Trail2DEditor extends ObjectEditor {
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.94.2",
8
+ "version": "2.94.5",
9
9
  "main": "build/meep.module.js",
10
10
  "module": "build/meep.module.js",
11
11
  "exports": {
@@ -53,6 +53,12 @@ export namespace assert {
53
53
  * @param {string} [name]
54
54
  */
55
55
  export function isFunction(value: any, name?: string): void;
56
+ /**
57
+ *
58
+ * @param {Object|*} value
59
+ * @param {string} [name]
60
+ */
61
+ export function isObject(value: any, name?: string): void;
56
62
  /**
57
63
  *
58
64
  * @param {number|*} value
@@ -1 +1 @@
1
- {"version":3,"file":"assert.d.ts","sourceRoot":"","sources":["../../../src/core/assert.js"],"names":[],"mappings":"AA6BA,6CAIC;;IAsJD;;;;;OAKG;IACH,kEAQC;;;;;;;;;;;;;;;IAmBD;;;;;;OAMG;IACH,uGAGC;IAGD;;;;OAIG;IACH,0DAMC;IAED;;;;OAIG;IACH,0DAMC;IAED;;;;OAIG;IACH,2DAMC;IAED;;;;OAIG;IACH,4DAMC;IAED;;;;OAIG;IACH,2DAMC;IAED;;;;OAIG;IACH,sEAMC;IAED;;;;OAIG;IACH,4DAKC;IAED;;;;OAIG;IACH,+EAKC;IAGD;;;;OAIG;IACH,yDAMC;IAED;;;;OAIG;IACH,wDAIC;IAED;;;;OAIG;IACH,yDAMC;IAED;;;;OAIG;IACH,2DAIC;IAED;;;;OAIG;IACH,mEAIC;IAED;;;;;OAKG;IACH,2EAgBC;;AAlZD,wDAEC;AAED,6CAEC;AAbD,qDAKC;AAUD;;;;;GAKG;AACH,kCAJW,MAAM,KACN,MAAM,MACN,MAAM,QAIhB;AAQD;;;;;GAKG;AACH,gCAJW,MAAM,KACN,MAAM,MACN,MAAM,QAiBhB;AAyBD;;;;;GAKG;AACH,uCAJW,MAAM,KACN,MAAM,MACN,MAAM,QAiBhB;AA5CD;;;;;GAKG;AACH,6BAJW,MAAM,KACN,MAAM,MACN,MAAM,QAiBhB;AAyBD;;;;;GAKG;AACH,oCAJW,MAAM,KACN,MAAM,MACN,MAAM,QAiBhB;AAKD;;;;;GAKG;AACH,0CAHW,MAAM,cACN,MAAM,QAehB;AAED;;;;;GAKG;AACH,iEAFW,MAAM,QAIhB;AAED;;;;;GAKG;AACH,mEAFW,MAAM,QAIhB;AAED;;;;;GAKG;AACH,+IAFW,MAAM,QAMhB"}
1
+ {"version":3,"file":"assert.d.ts","sourceRoot":"","sources":["../../../src/core/assert.js"],"names":[],"mappings":"AA6BA,6CAIC;;IAsJD;;;;;OAKG;IACH,kEAQC;;;;;;;;;;;;;;;IAmBD;;;;;;OAMG;IACH,uGAGC;IAGD;;;;OAIG;IACH,0DAMC;IAED;;;;OAIG;IACH,0DAMC;IAED;;;;OAIG;IACH,2DAMC;IAED;;;;OAIG;IACH,4DAMC;IAED;;;;OAIG;IACH,0DAMC;IAED;;;;OAIG;IACH,2DAMC;IAED;;;;OAIG;IACH,sEAMC;IAED;;;;OAIG;IACH,4DAKC;IAED;;;;OAIG;IACH,+EAKC;IAGD;;;;OAIG;IACH,yDAMC;IAED;;;;OAIG;IACH,wDAIC;IAED;;;;OAIG;IACH,yDAMC;IAED;;;;OAIG;IACH,2DAIC;IAED;;;;OAIG;IACH,mEAIC;IAED;;;;;OAKG;IACH,2EAgBC;;AA/ZD,wDAEC;AAED,6CAEC;AAbD,qDAKC;AAUD;;;;;GAKG;AACH,kCAJW,MAAM,KACN,MAAM,MACN,MAAM,QAIhB;AAQD;;;;;GAKG;AACH,gCAJW,MAAM,KACN,MAAM,MACN,MAAM,QAiBhB;AAyBD;;;;;GAKG;AACH,uCAJW,MAAM,KACN,MAAM,MACN,MAAM,QAiBhB;AA5CD;;;;;GAKG;AACH,6BAJW,MAAM,KACN,MAAM,MACN,MAAM,QAiBhB;AAyBD;;;;;GAKG;AACH,oCAJW,MAAM,KACN,MAAM,MACN,MAAM,QAiBhB;AAKD;;;;;GAKG;AACH,0CAHW,MAAM,cACN,MAAM,QAehB;AAED;;;;;GAKG;AACH,iEAFW,MAAM,QAIhB;AAED;;;;;GAKG;AACH,mEAFW,MAAM,QAIhB;AAED;;;;;GAKG;AACH,+IAFW,MAAM,QAMhB"}
@@ -279,6 +279,19 @@ assert.isFunction = function (value, name = 'value') {
279
279
  }
280
280
  };
281
281
 
282
+ /**
283
+ *
284
+ * @param {Object|*} value
285
+ * @param {string} [name]
286
+ */
287
+ assert.isObject = function (value, name = 'value') {
288
+ const typeofValue = typeof value;
289
+
290
+ if (typeofValue !== 'object') {
291
+ throw new Error(`expected ${name} to be an object, instead was '${typeofValue}'(=${value})`);
292
+ }
293
+ };
294
+
282
295
  /**
283
296
  *
284
297
  * @param {number|*} value
@@ -286,7 +286,7 @@ BitSet.prototype.nextSetBit = function (fromIndex) {
286
286
 
287
287
 
288
288
  //scan the rest of the words
289
- const word_count = bit_length / 32;
289
+ const word_count = (bit_length + 31) >> 5; // Math.ceil(x /32)
290
290
  for (; word_index < word_count; word_index++) {
291
291
  word = data[word_index];
292
292
 
@@ -322,8 +322,6 @@ BitSet.prototype.nextClearBit = function (fromIndex) {
322
322
  // treat first word specially, as we may need to mask out portion of a word to skip certain number of bits
323
323
  let bit_index = fromIndex & 31;
324
324
 
325
- const set_length = this.__length;
326
- const word_count = set_length / 32;
327
325
  const data = this.__data_uint32;
328
326
 
329
327
  if (bit_index !== 0) {
@@ -343,6 +341,8 @@ BitSet.prototype.nextClearBit = function (fromIndex) {
343
341
 
344
342
  word_index++;
345
343
  }
344
+ const set_length = this.__length;
345
+ const word_count = (set_length + 31) >> 5; // Math.ceil(x /32)
346
346
 
347
347
  //scan the rest
348
348
  for (; word_index < word_count; word_index++) {
@@ -432,7 +432,18 @@ test('copy with only bit 33 set', () => {
432
432
  expect(b.size()).toBe(34);
433
433
  });
434
434
 
435
- test('performance, next set from 0', () => {
435
+ test('shift right by 1', () => {
436
+ const s = new BitSet();
437
+
438
+ s.set(0, true);
439
+
440
+ s.shift_right(1, 0, 1);
441
+
442
+ expect(s.get(0)).toBe(true);
443
+ expect(s.get(1)).toBe(true);
444
+ });
445
+
446
+ test.skip('performance, next set from 0', () => {
436
447
  const s = new BitSet();
437
448
 
438
449
  s.set(1024, true);
@@ -441,7 +452,8 @@ test('performance, next set from 0', () => {
441
452
  const v = s.nextSetBit(0);
442
453
  }
443
454
  });
444
- test('performance, next clear from 0', () => {
455
+
456
+ test.skip('performance, next clear from 0', () => {
445
457
  const s = new BitSet();
446
458
 
447
459
  for (let i = 0; i < 1024; i++) {
@@ -454,13 +466,3 @@ test('performance, next clear from 0', () => {
454
466
  });
455
467
 
456
468
 
457
- test('shift right by 1', () => {
458
- const s = new BitSet();
459
-
460
- s.set(0, true);
461
-
462
- s.shift_right(1, 0, 1);
463
-
464
- expect(s.get(0)).toBe(true);
465
- expect(s.get(1)).toBe(true);
466
- });
@@ -1 +1 @@
1
- {"version":3,"file":"AABB2.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/2d/aabb/AABB2.js"],"names":[],"mappings":";AAkBA;;;GAGG;AACH;IACI;;;;;;OAMG;IACH,gEA+BC;IApBG;;;OAGG;IACH,WAAY;IACZ;;;OAGG;IACH,WAAY;IACZ;;;OAGG;IACH,WAAY;IACZ;;;OAGG;IACH,WAAY;IAGhB;;;OAGG;IACH,WAFW,MAAM,QAIhB;IAED;;;OAGG;IACH,aAFW,MAAM,QAIhB;IAED;;;OAGG;IACH,gBAFW,MAAM,EAAE,QA8BlB;IAED;;;OAGG;IACH,sBAFW,MAAM,QAShB;IAED;;;;;OAKG;IACH,sBAJW,KAAK,UACL,KAAK,GACH,OAAO,CAcnB;IAED;;;;OAIG;IACH,qBAHW,KAAK,GACH,OAAO,CAcnB;IAED;;;;;;;OAOG;IACH,0EAMC;IAED;;;;OAIG;IACH,qBAHW,MAAM,KACN,MAAM,QAKhB;IAED;;;OAGG;IACH,QAFa,MAAM,CAIlB;IAED;;;OAGG;IACH,QAFa,MAAM,CAIlB;IAED;;;;;;OAMG;IACH,0BALW,OAAO,MACP,OAAO,UACP,OAAO,GACL,OAAO,CA0BnB;IAED;;;;OAIG;IACH,kCAHW,OAAO,UACP,OAAO,QAmBjB;IAED;;;;OAIG;IACH,wBAHW,KAAK,GACH,MAAM,CAIlB;IAED;;;;;;;OAOG;IACH,sBANW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACJ,MAAM,CA4BlB;IAED;;;OAGG;IACH,eAFa,MAAM,CASlB;IAED;;;OAGG;IACH,sBAFY,MAAM,CAYjB;IAED;;;;;OAKG;IACH,iBAJW,MAAM,KACN,MAAM,GACJ,OAAO,CAInB;IAED;;;OAGG;IACH,mBAFW,KAAK,QAIf;IAED;;;OAGG;IACH,kBAFW,OAAO,QAOjB;IAED;;;OAGG;IACH,YAFa,MAAM,CAIlB;IAED;;;OAGG;IACH,aAFa,MAAM,CAIlB;IAED;;;;;;;OAOG;IACH,0DAiBC;IAED;;;;OAIG;IACH,eAHW,MAAM,KACN,MAAM,QAOhB;IAED;;;;OAIG;IACH,aAHW,MAAM,UACN,MAAM,QAIhB;IAED;;;OAGG;IACH,SAFa,KAAK,CAIjB;IAED;;;;OAIG;IACH,YAHW,KAAK,GACH,KAAK,CAIjB;IAED;;;;OAIG;IACH,cAHW,KAAK,GACH,OAAO,CAOnB;IAED;;;;;;OAMG;IACH,UALW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,QAQhB;IAED;;;;;;OAMG;IACH,uBALW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,QAsBhB;IAED;;OAEG;IACH,oCAEC;IAED,mBAEC;IAED;;;;;MAOC;IAED,0BAEC;CACJ;;;qBAqCS,KAAK;qBAML,KAAK;;oBAhjBK,kBAAkB;AAwgBtC;;;;;;;GAOG;AACH,gDANW,KAAK,MACL,KAAK,MACL,OAAO,MACP,OAAO,GACL,OAAO,CAsBnB"}
1
+ {"version":3,"file":"AABB2.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/2d/aabb/AABB2.js"],"names":[],"mappings":";AAkBA;;;GAGG;AACH;IACI;;;;;;OAMG;IACH,gEA+BC;IApBG;;;OAGG;IACH,WAAY;IACZ;;;OAGG;IACH,WAAY;IACZ;;;OAGG;IACH,WAAY;IACZ;;;OAGG;IACH,WAAY;IAGhB;;;OAGG;IACH,WAFW,MAAM,QAIhB;IAED;;;OAGG;IACH,aAFW,MAAM,QAIhB;IAED;;;OAGG;IACH,gBAFW,MAAM,EAAE,QA8BlB;IAED;;;OAGG;IACH,sBAFW,MAAM,QAShB;IAED;;;;;OAKG;IACH,sBAJW,KAAK,UACL,KAAK,GACH,OAAO,CAcnB;IAED;;;;OAIG;IACH,qBAHW,KAAK,GACH,OAAO,CAcnB;IAED;;;;;;;OAOG;IACH,0EAMC;IAED;;;;OAIG;IACH,qBAHW,MAAM,KACN,MAAM,QAKhB;IAED;;;OAGG;IACH,QAFa,MAAM,CAIlB;IAED;;;OAGG;IACH,QAFa,MAAM,CAIlB;IAED;;;;;;OAMG;IACH,0BALW,OAAO,MACP,OAAO,UACP,OAAO,GACL,OAAO,CA0BnB;IAED;;;;OAIG;IACH,kCAHW,OAAO,UACP,OAAO,QAmBjB;IAED;;;;OAIG;IACH,wBAHW,KAAK,GACH,MAAM,CAIlB;IAED;;;;;;;OAOG;IACH,sBANW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACJ,MAAM,CA4BlB;IAED;;;OAGG;IACH,eAFa,MAAM,CASlB;IAED;;;OAGG;IACH,sBAFY,MAAM,CAYjB;IAED;;;;;OAKG;IACH,iBAJW,MAAM,KACN,MAAM,GACJ,OAAO,CAInB;IAED;;;OAGG;IACH,mBAFW,KAAK,QAIf;IAED;;;OAGG;IACH,kBAFW,OAAO,QAIjB;IAED;;;OAGG;IACH,sBAEC;IAED;;;OAGG;IACH,sBAGC;IAED;;;OAGG;IACH,YAFa,MAAM,CAIlB;IAED;;;OAGG;IACH,oBAEC;IAED;;;OAGG;IACH,aAFa,MAAM,CAIlB;IAED;;;OAGG;IACH,qBAEC;IAED;;;;;;;OAOG;IACH,0DAiBC;IAED;;;;OAIG;IACH,eAHW,MAAM,KACN,MAAM,QAOhB;IAED;;;;OAIG;IACH,aAHW,MAAM,UACN,MAAM,QAIhB;IAED;;;OAGG;IACH,SAFa,KAAK,CAIjB;IAED;;;;OAIG;IACH,YAHW,KAAK,GACH,KAAK,CAIjB;IAED;;;;OAIG;IACH,cAHW,KAAK,GACH,OAAO,CAOnB;IAED;;;;;;OAMG;IACH,UALW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,QAQhB;IAED;;;;;;OAMG;IACH,uBALW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,QAsBhB;IAED;;OAEG;IACH,oCAEC;IAED,mBAEC;IAED;;;;;MAOC;IAED,0BAEC;CACJ;;;qBAqCS,KAAK;qBAML,KAAK;;oBA9kBK,kBAAkB;AAsiBtC;;;;;;;GAOG;AACH,gDANW,KAAK,MACL,KAAK,MACL,OAAO,MACP,OAAO,GACL,OAAO,CAsBnB"}
@@ -359,10 +359,24 @@ class AABB2 {
359
359
  * @param {Vector2} result
360
360
  */
361
361
  getCenter(result) {
362
- result.set(
363
- (this.x0 + this.x1) / 2,
364
- (this.y0 + this.y1) / 2
365
- );
362
+ result.set(this.centerX, this.centerY);
363
+ }
364
+
365
+ /**
366
+ *
367
+ * @return {number}
368
+ */
369
+ get centerX() {
370
+ return (this.x0 + this.x1) * 0.5;
371
+ }
372
+
373
+ /**
374
+ *
375
+ * @return {number}
376
+ */
377
+ get centerY() {
378
+
379
+ return (this.y0 + this.y1) * 0.5
366
380
  }
367
381
 
368
382
  /**
@@ -373,6 +387,14 @@ class AABB2 {
373
387
  return this.x1 - this.x0;
374
388
  }
375
389
 
390
+ /**
391
+ *
392
+ * @return {number}
393
+ */
394
+ get width() {
395
+ return this.getWidth();
396
+ }
397
+
376
398
  /**
377
399
  *
378
400
  * @returns {number}
@@ -381,6 +403,14 @@ class AABB2 {
381
403
  return this.y1 - this.y0;
382
404
  }
383
405
 
406
+ /**
407
+ *
408
+ * @return {number}
409
+ */
410
+ get height() {
411
+ return this.getHeight();
412
+ }
413
+
384
414
  /**
385
415
  *
386
416
  * @param {Number} x0
@@ -4,6 +4,7 @@
4
4
  * @param {AABB3} aabb3
5
5
  * @param {number} spacing
6
6
  * @param {function(x:number,y:number,z:number)} callback
7
+ * @returns {number} total number of points placed
7
8
  */
8
- export function make_justified_point_grid(aabb3: AABB3, spacing: number, callback: any): void;
9
+ export function make_justified_point_grid(aabb3: AABB3, spacing: number, callback: any): number;
9
10
  //# sourceMappingURL=make_justified_point_grid.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"make_justified_point_grid.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/util/make_justified_point_grid.js"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,iEAHW,MAAM,uBAwBhB"}
1
+ {"version":3,"file":"make_justified_point_grid.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/util/make_justified_point_grid.js"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,iEAJW,MAAM,kBAEJ,MAAM,CAyBlB"}
@@ -6,12 +6,13 @@ import { max2 } from "../../../math/max2.js";
6
6
  * @param {AABB3} aabb3
7
7
  * @param {number} spacing
8
8
  * @param {function(x:number,y:number,z:number)} callback
9
+ * @returns {number} total number of points placed
9
10
  */
10
11
  export function make_justified_point_grid(aabb3, spacing, callback) {
11
12
 
12
- const steps_x = Math.ceil(aabb3.getExtentsX() / spacing);
13
- const steps_y = Math.ceil(aabb3.getExtentsY() / spacing);
14
- const steps_z = Math.ceil(aabb3.getExtentsZ() / spacing);
13
+ const steps_x = max2(1, Math.ceil(aabb3.getExtentsX() / spacing));
14
+ const steps_y = max2(1, Math.ceil(aabb3.getExtentsY() / spacing));
15
+ const steps_z = max2(1, Math.ceil(aabb3.getExtentsZ() / spacing));
15
16
 
16
17
  const spacing_x = aabb3.getExtentsX() / max2(1, steps_x - 1);
17
18
  const spacing_y = aabb3.getExtentsY() / max2(1, steps_y - 1);
@@ -28,4 +29,6 @@ export function make_justified_point_grid(aabb3, spacing, callback) {
28
29
  }
29
30
  }
30
31
  }
32
+
33
+ return steps_x * steps_y * steps_z;
31
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Quaternion.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Quaternion.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Quaternion.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Quaternion.js"],"names":[],"mappings":"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"}