@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.
- package/build/bundle-worker-image-decoder.js +1 -1
- package/build/bundle-worker-terrain.js +1 -1
- package/build/meep.cjs +138 -73
- package/build/meep.min.js +1 -1
- package/build/meep.module.js +138 -73
- package/editor/ecs/component/editors/ecs/Trail2DEditor.js +1 -1
- package/package.json +1 -1
- package/src/core/assert.d.ts +6 -0
- package/src/core/assert.d.ts.map +1 -1
- package/src/core/assert.js +13 -0
- package/src/core/binary/BitSet.js +3 -3
- package/src/core/binary/BitSet.spec.js +14 -12
- package/src/core/geom/2d/aabb/AABB2.d.ts.map +1 -1
- package/src/core/geom/2d/aabb/AABB2.js +34 -4
- package/src/core/geom/3d/util/make_justified_point_grid.d.ts +2 -1
- package/src/core/geom/3d/util/make_justified_point_grid.d.ts.map +1 -1
- package/src/core/geom/3d/util/make_justified_point_grid.js +6 -3
- package/src/core/geom/Quaternion.d.ts.map +1 -1
- package/src/core/geom/Quaternion.js +29 -18
- package/src/core/geom/Quaternion.spec.js +27 -1
- package/src/core/geom/vec3/v3_distance_sqr.d.ts.map +1 -1
- package/src/core/geom/vec3/v3_distance_sqr.js +4 -1
- package/src/core/json/resolvePath.d.ts +1 -1
- package/src/core/json/resolvePath.d.ts.map +1 -1
- package/src/core/json/resolvePath.js +5 -1
- package/src/core/math/clamp.js +1 -1
- package/src/core/math/clamp01.d.ts +5 -0
- package/src/core/math/clamp01.d.ts.map +1 -1
- package/src/core/math/clamp01.js +6 -0
- package/src/core/math/iabs.d.ts +9 -0
- package/src/core/math/iabs.d.ts.map +1 -0
- package/src/core/math/iabs.js +15 -0
- package/src/core/math/iabs.spec.d.ts +2 -0
- package/src/core/math/iabs.spec.d.ts.map +1 -0
- package/src/core/math/iabs.spec.js +9 -0
- package/src/engine/EngineConfiguration.d.ts.map +1 -1
- package/src/engine/EngineConfiguration.js +7 -0
- package/src/engine/EngineHarness.d.ts.map +1 -1
- package/src/engine/EngineHarness.js +0 -3
- package/src/engine/animation/AnimationUtils.d.ts.map +1 -1
- package/src/engine/animation/AnimationUtils.js +2 -1
- package/src/engine/ecs/System.d.ts.map +1 -1
- package/src/engine/ecs/System.js +6 -0
- package/src/engine/ecs/transform/Transform.d.ts.map +1 -1
- package/src/engine/ecs/transform/Transform.js +18 -13
- package/src/engine/ecs/transform/Transform.spec.js +50 -11
- package/src/engine/ecs/util/hideEntityGracefully.d.ts.map +1 -1
- package/src/engine/ecs/util/hideEntityGracefully.js +12 -11
- package/src/engine/graphics/ecs/trail2d/Trail2D.d.ts +10 -6
- package/src/engine/graphics/ecs/trail2d/Trail2D.d.ts.map +1 -1
- package/src/engine/graphics/ecs/trail2d/Trail2D.js +61 -13
- package/src/engine/graphics/ecs/trail2d/Trail2DFlags.d.ts +8 -0
- package/src/engine/graphics/ecs/trail2d/Trail2DFlags.d.ts.map +1 -0
- package/src/engine/graphics/ecs/trail2d/Trail2DFlags.js +10 -0
- package/src/engine/graphics/ecs/trail2d/Trail2DSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/trail2d/Trail2DSystem.js +14 -33
- package/src/engine/graphics/ecs/trail2d/makeGradientTrail.d.ts.map +1 -1
- package/src/engine/graphics/ecs/trail2d/makeGradientTrail.js +2 -1
- package/src/engine/graphics/ecs/trail2d/prototypeTrail2D.d.ts +2 -0
- package/src/engine/graphics/ecs/trail2d/prototypeTrail2D.d.ts.map +1 -0
- package/src/engine/graphics/ecs/trail2d/prototypeTrail2D.js +65 -0
- package/src/engine/graphics/sh3/path_tracer/prototypePathTracer.js +1 -1
- package/src/engine/graphics/trail/x/RibbonX.d.ts +2 -2
- package/src/engine/graphics/trail/x/RibbonX.d.ts.map +1 -1
- package/src/engine/graphics/trail/x/RibbonX.js +16 -8
- package/src/engine/graphics/trail/x/simulator/RibbonXFixedPhysicsSimulator.d.ts.map +1 -1
- package/src/engine/graphics/trail/x/simulator/RibbonXFixedPhysicsSimulator.js +2 -1
package/build/meep.module.js
CHANGED
|
@@ -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
|
-
*
|
|
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
|
-
*
|
|
4258
|
-
* @param {Quaternion}
|
|
4276
|
+
*
|
|
4277
|
+
* @param {Quaternion} from
|
|
4278
|
+
* @param {Quaternion} to
|
|
4259
4279
|
* @param {number} t
|
|
4260
4280
|
*/
|
|
4261
|
-
|
|
4281
|
+
slerpQuaternions(from, to, t) {
|
|
4262
4282
|
|
|
4263
|
-
const ax =
|
|
4264
|
-
ay =
|
|
4265
|
-
az =
|
|
4266
|
-
aw =
|
|
4283
|
+
const ax = from.x,
|
|
4284
|
+
ay = from.y,
|
|
4285
|
+
az = from.z,
|
|
4286
|
+
aw = from.w;
|
|
4267
4287
|
|
|
4268
|
-
let bx =
|
|
4269
|
-
by =
|
|
4270
|
-
bz =
|
|
4271
|
-
bw =
|
|
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 =
|
|
4649
|
+
const t = clamp01(max_delta / angle);
|
|
4620
4650
|
|
|
4621
|
-
|
|
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 /
|
|
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(
|
|
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
|
-
|
|
79702
|
-
|
|
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
package/src/core/assert.d.ts
CHANGED
|
@@ -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
|
package/src/core/assert.d.ts.map
CHANGED
|
@@ -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;;
|
|
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"}
|
package/src/core/assert.js
CHANGED
|
@@ -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 /
|
|
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('
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
364
|
-
|
|
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):
|
|
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
|
|
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":";AA0BA;
|
|
1
|
+
{"version":3,"file":"Quaternion.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Quaternion.js"],"names":[],"mappings":"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"}
|