@woosh/meep-engine 2.120.0 → 2.120.2
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/README.md +1 -1
- package/package.json +1 -1
- package/src/core/binary/FLOAT32_MAX.d.ts +2 -0
- package/src/core/binary/FLOAT32_MAX.d.ts.map +1 -0
- package/src/core/binary/FLOAT32_MAX.js +1 -0
- package/src/core/collection/RingBuffer.d.ts +2 -3
- package/src/core/collection/RingBuffer.d.ts.map +1 -1
- package/src/core/collection/RingBuffer.js +9 -4
- package/src/core/color/Color.d.ts.map +1 -1
- package/src/core/color/Color.js +15 -1
- package/src/core/geom/2d/circle/Circle.d.ts +7 -5
- package/src/core/geom/2d/circle/Circle.d.ts.map +1 -1
- package/src/core/geom/2d/circle/Circle.js +7 -5
- package/src/core/geom/2d/circle/circle_area.d.ts +7 -0
- package/src/core/geom/2d/circle/circle_area.d.ts.map +1 -0
- package/src/core/geom/2d/circle/circle_area.js +8 -0
- package/src/core/geom/Quaternion.d.ts.map +1 -1
- package/src/core/geom/Quaternion.js +57 -23
- package/src/core/geom/Vector4.d.ts.map +1 -1
- package/src/core/geom/Vector4.js +32 -0
- package/src/core/geom/mat2/M2_IDENTITY.d.ts +6 -0
- package/src/core/geom/mat2/M2_IDENTITY.d.ts.map +1 -0
- package/src/core/geom/mat2/M2_IDENTITY.js +8 -0
- package/src/core/geom/mat2/m2_is_diagonal.d.ts +8 -0
- package/src/core/geom/mat2/m2_is_diagonal.d.ts.map +1 -0
- package/src/core/geom/mat2/m2_is_diagonal.js +9 -0
- package/src/core/geom/mat2/m2_is_orthogonal.d.ts +8 -0
- package/src/core/geom/mat2/m2_is_orthogonal.d.ts.map +1 -0
- package/src/core/geom/mat2/m2_is_orthogonal.js +23 -0
- package/src/core/geom/mat2/m2_transpose.d.ts +9 -0
- package/src/core/geom/mat2/m2_transpose.d.ts.map +1 -0
- package/src/core/geom/mat2/m2_transpose.js +17 -0
- package/src/core/graph/graph_compute_adjacency_matrix.d.ts +7 -5
- package/src/core/graph/graph_compute_adjacency_matrix.d.ts.map +1 -1
- package/src/core/graph/graph_compute_adjacency_matrix.js +11 -5
- package/src/core/graph/graph_compute_distance_matrix.d.ts.map +1 -1
- package/src/core/graph/graph_compute_distance_matrix.js +30 -56
- package/src/core/graph/graph_compute_laplacian_matrix.d.ts +6 -6
- package/src/core/graph/graph_compute_laplacian_matrix.js +6 -6
- package/src/core/json/abstractJSONDeserializer.d.ts.map +1 -1
- package/src/core/json/abstractJSONDeserializer.js +7 -1
- package/src/core/math/bell_membership_function.d.ts.map +1 -1
- package/src/core/math/bell_membership_function.js +6 -1
- package/src/core/math/linalg/m2/m2_polar_decomp.d.ts +19 -0
- package/src/core/math/linalg/m2/m2_polar_decomp.d.ts.map +1 -0
- package/src/core/math/linalg/m2/m2_polar_decomp.js +27 -0
- package/src/core/math/linalg/m2/m2_polar_decomp_noS.d.ts +15 -0
- package/src/core/math/linalg/m2/m2_polar_decomp_noS.d.ts.map +1 -0
- package/src/core/math/linalg/m2/m2_polar_decomp_noS.js +32 -0
- package/src/core/math/linalg/m2/m2_svd.d.ts +19 -0
- package/src/core/math/linalg/m2/m2_svd.d.ts.map +1 -0
- package/src/core/math/linalg/m2/m2_svd.js +96 -0
- package/src/core/math/linalg/solve_linear_system_GEPP_2x2.d.ts +1 -1
- package/src/core/math/linalg/solve_linear_system_GEPP_2x2.js +1 -1
- package/src/core/model/node-graph/node/NodeDescription.d.ts.map +1 -1
- package/src/core/model/node-graph/node/NodeDescription.js +14 -0
- package/src/core/model/node-graph/type/DataType.d.ts.map +1 -1
- package/src/core/model/node-graph/type/DataType.js +4 -0
- package/src/core/process/WatchDog.d.ts +41 -12
- package/src/core/process/WatchDog.d.ts.map +1 -1
- package/src/core/process/WatchDog.js +47 -16
- package/src/engine/development/performance/RingBufferMetric.d.ts +1 -1
- package/src/engine/development/performance/RingBufferMetric.d.ts.map +1 -1
- package/src/engine/ecs/Entity.js +2 -2
- package/src/engine/ecs/EntityComponentDataset.d.ts.map +1 -1
- package/src/engine/ecs/EntityComponentDataset.js +31 -13
- package/src/engine/ecs/EntityManager.d.ts.map +1 -1
- package/src/engine/ecs/EntityManager.js +10 -1
- package/src/engine/ecs/EntityObserver.d.ts.map +1 -1
- package/src/engine/ecs/EntityObserver.js +2 -10
- package/src/engine/ecs/EntityReference.d.ts +10 -2
- package/src/engine/ecs/EntityReference.d.ts.map +1 -1
- package/src/engine/ecs/EntityReference.js +24 -6
- package/src/engine/ecs/terrain/ecs/Terrain.d.ts.map +1 -1
- package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSerializationAdapter.js +3 -3
- package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSerializationUpgrader_0_1.d.ts +4 -0
- package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSerializationUpgrader_0_1.d.ts.map +1 -0
- package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSerializationUpgrader_0_1.js +24 -0
- package/src/engine/ecs/terrain/ecs/splat/SplatMapping.d.ts.map +1 -1
- package/src/engine/ecs/terrain/ecs/splat/SplatMapping.js +3 -9
- package/src/engine/ecs/terrain/overlay/TerrainOverlay.d.ts.map +1 -1
- package/src/engine/ecs/terrain/overlay/TerrainOverlay.js +14 -8
- package/src/engine/ecs/transform/Transform.d.ts +5 -1
- package/src/engine/ecs/transform/Transform.d.ts.map +1 -1
- package/src/engine/ecs/transform/Transform.js +5 -1
- package/src/engine/graphics/texture/sampler/Sampler2D.d.ts +349 -50
- package/src/engine/intelligence/behavior/ecs/DieBehavior.d.ts +3 -0
- package/src/engine/intelligence/behavior/ecs/DieBehavior.d.ts.map +1 -1
- package/src/engine/intelligence/behavior/ecs/DieBehavior.js +4 -0
- package/src/engine/intelligence/behavior/ecs/KillBehavior.d.ts +17 -0
- package/src/engine/intelligence/behavior/ecs/KillBehavior.d.ts.map +1 -0
- package/src/engine/intelligence/behavior/ecs/KillBehavior.js +47 -0
- package/src/engine/intelligence/blackboard/BlackboardStack.d.ts +1 -1
- package/src/engine/intelligence/blackboard/BlackboardStack.js +1 -1
- package/src/engine/navigation/ecs/path_following/PathFollowerSerializationAdapter.d.ts.map +1 -1
- package/src/engine/navigation/ecs/path_following/PathFollowerSerializationAdapter.js +3 -1
- package/src/engine/navigation/ecs/path_following/PathFollowerSerializationUpgrader_2_3.d.ts.map +1 -1
- package/src/engine/navigation/ecs/path_following/PathFollowerSerializationUpgrader_2_3.js +3 -7
- package/src/engine/navigation/ecs/path_following/PathFollowerSerializationUpgrader_3_4.d.ts +5 -0
- package/src/engine/navigation/ecs/path_following/PathFollowerSerializationUpgrader_3_4.d.ts.map +1 -0
- package/src/engine/navigation/ecs/path_following/PathFollowerSerializationUpgrader_3_4.js +19 -0
- package/src/engine/physics/mls-mpm/MLS_MPM.d.ts +1 -1
- package/src/engine/physics/mls-mpm/MLS_MPM.d.ts.map +1 -1
- package/src/engine/physics/mls-mpm/MLS_MPM.js +9 -114
- package/src/engine/physics/mls-mpm/README.md +5 -0
- package/src/generation/grid/generation/GridTaskDensityMarkerDistribution.d.ts +7 -6
- package/src/generation/grid/generation/GridTaskDensityMarkerDistribution.d.ts.map +1 -1
- package/src/generation/grid/generation/GridTaskDensityMarkerDistribution.js +51 -43
- package/editor/actions/concrete/ModifyPatchSampler2DAction.d.ts +0 -48
- package/editor/actions/concrete/ModifyPatchTextureArray2DAction.d.ts.map +0 -1
- package/editor/actions/concrete/PaintTerrainOverlayAction.d.ts.map +0 -1
- package/editor/actions/concrete/PatchTerrainHeightAction.d.ts.map +0 -1
- package/editor/actions/concrete/SelectionAddAction.d.ts.map +0 -1
- package/editor/actions/concrete/SelectionClearAction.d.ts.map +0 -1
- package/editor/actions/concrete/SelectionRemoveAction.d.ts.map +0 -1
- package/editor/actions/concrete/TransformModifyAction.d.ts.map +0 -1
- package/editor/actions/concrete/WriteGridValueAction.d.ts.map +0 -1
- package/src/engine/ecs/read_entity_reference.d.ts +0 -9
- package/src/engine/ecs/read_entity_reference.d.ts.map +0 -1
- package/src/engine/ecs/read_entity_reference.js +0 -15
- package/src/engine/physics/ammo/Body.js +0 -103
- package/src/engine/physics/ammo/PhysicsWorker.d.ts +0 -72
- package/src/engine/physics/ammo/PhysicsWorker.d.ts.map +0 -1
- package/src/engine/physics/ammo/PhysicsWorker.js +0 -437
- package/src/engine/physics/ammo/World.d.ts +0 -68
- package/src/engine/physics/ammo/World.d.ts.map +0 -1
- package/src/engine/physics/ammo/World.js +0 -336
- package/src/engine/physics/ammo/shapes/BoxShape.d.ts +0 -10
- package/src/engine/physics/ammo/shapes/BoxShape.d.ts.map +0 -1
- package/src/engine/physics/ammo/shapes/BoxShape.js +0 -11
- package/src/engine/physics/ammo/shapes/CapsuleShape.d.ts +0 -9
- package/src/engine/physics/ammo/shapes/CapsuleShape.d.ts.map +0 -1
- package/src/engine/physics/ammo/shapes/CapsuleShape.js +0 -10
- package/src/engine/physics/ammo/shapes/MeshShape.d.ts +0 -8
- package/src/engine/physics/ammo/shapes/MeshShape.d.ts.map +0 -1
- package/src/engine/physics/ammo/shapes/MeshShape.js +0 -9
- package/src/engine/physics/ammo/shapes/PlaneShape.d.ts +0 -11
- package/src/engine/physics/ammo/shapes/PlaneShape.d.ts.map +0 -1
- package/src/engine/physics/ammo/shapes/PlaneShape.js +0 -14
- package/src/engine/physics/ammo/shapes/Shape.d.ts +0 -7
- package/src/engine/physics/ammo/shapes/Shape.d.ts.map +0 -1
- package/src/engine/physics/ammo/shapes/Shape.js +0 -9
- package/src/engine/physics/ammo/shapes/SphereShape.d.ts +0 -8
- package/src/engine/physics/ammo/shapes/SphereShape.d.ts.map +0 -1
- package/src/engine/physics/ammo/shapes/SphereShape.js +0 -9
- package/src/engine/physics/cannon/CannonJSPhysicsSystem.d.ts +0 -15
- package/src/engine/physics/cannon/CannonJSPhysicsSystem.d.ts.map +0 -1
- package/src/engine/physics/cannon/CannonJSPhysicsSystem.js +0 -196
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@ To help get you started, various samples are provided under `/samples` folder. F
|
|
|
13
13
|
|
|
14
14
|
## Quality
|
|
15
15
|
|
|
16
|
-
Meep is covered by 2,
|
|
16
|
+
Meep is covered by 2,458 unit tests
|
|
17
17
|
|
|
18
18
|
The aim is not to have 100% coverage, [but to ensure quality](https://about.codecov.io/blog/the-case-against-100-code-coverage/). As a result, the tests are written to cover complex code first and to exhaustively validate critical algorithms.
|
|
19
19
|
Most of the test code is significantly larger than the code that is being tested.
|
package/package.json
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FLOAT32_MAX.d.ts","sourceRoot":"","sources":["../../../../src/core/binary/FLOAT32_MAX.js"],"names":[],"mappings":"AAAA,0BAA2B,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const FLOAT32_MAX = 3.4028234663852886e+38;
|
|
@@ -2,12 +2,11 @@
|
|
|
2
2
|
* Fixed-sized container structure, where ends are connected into a circle/ring
|
|
3
3
|
* This is a FIFO structure (first in, first out)
|
|
4
4
|
* @see https://en.wikipedia.org/wiki/Circular_buffer
|
|
5
|
+
* @template V
|
|
5
6
|
*/
|
|
6
|
-
export class RingBuffer {
|
|
7
|
+
export class RingBuffer<V> {
|
|
7
8
|
/**
|
|
8
|
-
* @template V
|
|
9
9
|
* @param {number} size
|
|
10
|
-
* @constructor
|
|
11
10
|
*/
|
|
12
11
|
constructor(size: number);
|
|
13
12
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RingBuffer.d.ts","sourceRoot":"","sources":["../../../../src/core/collection/RingBuffer.js"],"names":[],"mappings":"AAGA
|
|
1
|
+
{"version":3,"file":"RingBuffer.d.ts","sourceRoot":"","sources":["../../../../src/core/collection/RingBuffer.js"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,wBAFa,CAAC;IAGV;;OAEG;IACH,kBAFW,MAAM,EAoChB;IA7BG;;;OAGG;IACH,MAFU,MAAM,CAEA;IAEhB;;;OAGG;IACH,MAFU,MAAM,CAEH;IAEb;;;OAGG;IACH,MAFU,MAAM,CAEH;IAEb;;;OAGG;IACH,OAFU,MAAM,CAEF;IAEd;;;OAGG;IACH,MAFU,CAAC,EAAE,CAEc;IAG/B;;;OAGG;IACH,iBAFW,MAAM,QAsBhB;IAED;;;OAGG;IACH,WAFY,CAAC,CAIZ;IAED;;;;OAIG;IACH,oBAHW,MAAM,GACJ,CAAC,CAUb;IAED,cAIC;IAED;;;OAGG;IACH,cAFW,CAAC,QAuBX;IAED;;;OAGG;IACH,SAFa,CAAC,GAAC,SAAS,CAcvB;IAED;;;OAGG;IACH,4BAFW,MAAM,QA8BhB;IAED;;;;;OAKG;IACH,oBAJW,CAAS,IAAC,EAAD,CAAC,KAAE,OAAO,YACnB,GAAC,GACC,CAAC,GAAC,SAAS,CAoBvB;IAED;;;;OAIG;IACH,iBAHW,CAAS,IAAC,EAAD,CAAC,QAAC,YACX,GAAC,QAgBX;IAED;;;;OAIG;IACH,gBAHW,CAAC,GACC,OAAO,CAInB;CACJ"}
|
|
@@ -5,12 +5,11 @@ import { min2 } from "../math/min2.js";
|
|
|
5
5
|
* Fixed-sized container structure, where ends are connected into a circle/ring
|
|
6
6
|
* This is a FIFO structure (first in, first out)
|
|
7
7
|
* @see https://en.wikipedia.org/wiki/Circular_buffer
|
|
8
|
+
* @template V
|
|
8
9
|
*/
|
|
9
10
|
export class RingBuffer {
|
|
10
11
|
/**
|
|
11
|
-
* @template V
|
|
12
12
|
* @param {number} size
|
|
13
|
-
* @constructor
|
|
14
13
|
*/
|
|
15
14
|
constructor(size) {
|
|
16
15
|
assert.isNumber(size, 'size');
|
|
@@ -59,6 +58,10 @@ export class RingBuffer {
|
|
|
59
58
|
return;
|
|
60
59
|
}
|
|
61
60
|
|
|
61
|
+
/**
|
|
62
|
+
*
|
|
63
|
+
* @type {V[]}
|
|
64
|
+
*/
|
|
62
65
|
const array = new Array(new_size);
|
|
63
66
|
|
|
64
67
|
this.data = array;
|
|
@@ -158,17 +161,19 @@ export class RingBuffer {
|
|
|
158
161
|
const tail = this.tail;
|
|
159
162
|
const count = this.count;
|
|
160
163
|
|
|
164
|
+
const data = this.data;
|
|
165
|
+
|
|
161
166
|
for (let i = index; i < count; i++) {
|
|
162
167
|
const p = tail + i;
|
|
163
168
|
|
|
164
169
|
const j = (p) % size;
|
|
165
170
|
const k = (p + 1) % size;
|
|
166
171
|
|
|
167
|
-
|
|
172
|
+
data[j] = data[k];
|
|
168
173
|
}
|
|
169
174
|
|
|
170
175
|
// Clear the last element (important for GC if holding objects)
|
|
171
|
-
|
|
176
|
+
data[(tail + count - 1) % size] = undefined;
|
|
172
177
|
|
|
173
178
|
// update head and handle underflow
|
|
174
179
|
this.head = (this.head - 1 + size) % size;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Color.d.ts","sourceRoot":"","sources":["../../../../src/core/color/Color.js"],"names":[],"mappings":"AAmBA;;;GAGG;AACH;
|
|
1
|
+
{"version":3,"file":"Color.d.ts","sourceRoot":"","sources":["../../../../src/core/color/Color.js"],"names":[],"mappings":"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"}
|
package/src/core/color/Color.js
CHANGED
|
@@ -63,7 +63,7 @@ export class Color {
|
|
|
63
63
|
|
|
64
64
|
/**
|
|
65
65
|
* @readonly
|
|
66
|
-
* @type {Signal<number,number,number,number,number,number,number,number>}
|
|
66
|
+
* @type {Signal<number,number,number,number, number,number,number,number>}
|
|
67
67
|
*/
|
|
68
68
|
this.onChanged = new Signal();
|
|
69
69
|
}
|
|
@@ -575,6 +575,20 @@ export class Color {
|
|
|
575
575
|
this.set(r, g, b, a);
|
|
576
576
|
}
|
|
577
577
|
|
|
578
|
+
/**
|
|
579
|
+
*
|
|
580
|
+
* @param {number[]|Float32Array} source
|
|
581
|
+
* @param {number} [offset]
|
|
582
|
+
* @returns {Color}
|
|
583
|
+
*/
|
|
584
|
+
static fromArray(source, offset){
|
|
585
|
+
const r = new Color();
|
|
586
|
+
|
|
587
|
+
r.fromArray(source,offset);
|
|
588
|
+
|
|
589
|
+
return r;
|
|
590
|
+
}
|
|
591
|
+
|
|
578
592
|
|
|
579
593
|
/**
|
|
580
594
|
*
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
export default Circle;
|
|
2
|
+
/**
|
|
3
|
+
* A circle or a 2-dimensional sphere. Represented as a position (x,y) and radius (r)
|
|
4
|
+
*/
|
|
2
5
|
declare class Circle {
|
|
3
6
|
/**
|
|
4
|
-
*
|
|
5
|
-
* @param {
|
|
6
|
-
* @param {
|
|
7
|
-
* @param {
|
|
8
|
-
* @constructor
|
|
7
|
+
*
|
|
8
|
+
* @param {number} [x=0]
|
|
9
|
+
* @param {number} [y=0]
|
|
10
|
+
* @param {number} [r=0] radius
|
|
9
11
|
*/
|
|
10
12
|
constructor(x?: number, y?: number, r?: number);
|
|
11
13
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Circle.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/2d/circle/Circle.js"],"names":[],"mappings":";AAEA;IACI
|
|
1
|
+
{"version":3,"file":"Circle.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/2d/circle/Circle.js"],"names":[],"mappings":";AAEA;;GAEG;AACH;IACI;;;;;OAKG;IACH,gBAJW,MAAM,MACN,MAAM,MACN,MAAM,EAoBhB;IAjBG;;;OAGG;IACH,UAAU;IAEV;;;OAGG;IACH,UAAU;IAEV;;;OAGG;IACH,UAAU;IAGd;;;OAGG;IACH,qBAFW,OAAO,QAIjB;IAED;;;;OAIG;IACH,2CAGC;IAED;;;;OAIG;IACH,gBAHW,MAAM,GACJ,OAAO,CAYnB;IAED;;;;OAIG;IACH,cAHW,MAAM,GACJ,OAAO,CAInB;IAED;;;;;OAKG;IACH,OAJW,MAAM,KACN,MAAM,KACN,MAAM,QAOhB;IAED;;;OAGG;IACH,YAFW,MAAM,QAIhB;IAED;;;OAGG;IACH,SAFa,MAAM,CAIlB;CACJ"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { circle_intersects_circle } from "./circle_intersects_circle.js";
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* A circle or a 2-dimensional sphere. Represented as a position (x,y) and radius (r)
|
|
5
|
+
*/
|
|
3
6
|
class Circle {
|
|
4
7
|
/**
|
|
5
|
-
*
|
|
6
|
-
* @param {
|
|
7
|
-
* @param {
|
|
8
|
-
* @param {
|
|
9
|
-
* @constructor
|
|
8
|
+
*
|
|
9
|
+
* @param {number} [x=0]
|
|
10
|
+
* @param {number} [y=0]
|
|
11
|
+
* @param {number} [r=0] radius
|
|
10
12
|
*/
|
|
11
13
|
constructor(x = 0, y = 0, r = 0) {
|
|
12
14
|
/**
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"circle_area.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/2d/circle/circle_area.js"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,oCAHW,MAAM,GACJ,MAAM,CAIlB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Quaternion.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Quaternion.js"],"names":[],"mappings":";AAqBA;IAqOI;;;;;OAKG;IACH,2BAJW,OAAO,SACP,MAAM,GACJ,UAAU,CAQtB;
|
|
1
|
+
{"version":3,"file":"Quaternion.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Quaternion.js"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,10 @@ const scratch_v3_c = new Vector3();
|
|
|
19
19
|
const sin = Math.sin;
|
|
20
20
|
const cos = Math.cos;
|
|
21
21
|
|
|
22
|
+
/**
|
|
23
|
+
* Rotation representation in 3d space
|
|
24
|
+
* @see https://en.wikipedia.org/wiki/Quaternion
|
|
25
|
+
*/
|
|
22
26
|
class Quaternion {
|
|
23
27
|
/**
|
|
24
28
|
*
|
|
@@ -268,6 +272,8 @@ class Quaternion {
|
|
|
268
272
|
* @param {number} angle
|
|
269
273
|
*/
|
|
270
274
|
fromAxisAngle(axis, angle) {
|
|
275
|
+
assert.defined(axis,'axis');
|
|
276
|
+
|
|
271
277
|
this._fromAxisAngle(axis.x, axis.y, axis.z, angle);
|
|
272
278
|
}
|
|
273
279
|
|
|
@@ -384,6 +390,10 @@ class Quaternion {
|
|
|
384
390
|
return rad;
|
|
385
391
|
}
|
|
386
392
|
|
|
393
|
+
/**
|
|
394
|
+
*
|
|
395
|
+
* @returns {this}
|
|
396
|
+
*/
|
|
387
397
|
normalize() {
|
|
388
398
|
let l = this.length();
|
|
389
399
|
|
|
@@ -395,12 +405,14 @@ class Quaternion {
|
|
|
395
405
|
const m = 1 / l;
|
|
396
406
|
this.multiplyScalar(m);
|
|
397
407
|
}
|
|
408
|
+
|
|
409
|
+
return this;
|
|
398
410
|
}
|
|
399
411
|
|
|
400
412
|
/**
|
|
401
413
|
*
|
|
402
414
|
* @param {number} val
|
|
403
|
-
* @return {
|
|
415
|
+
* @return {this}
|
|
404
416
|
*/
|
|
405
417
|
multiplyScalar(val) {
|
|
406
418
|
return this.set(
|
|
@@ -413,15 +425,17 @@ class Quaternion {
|
|
|
413
425
|
|
|
414
426
|
/**
|
|
415
427
|
* @param {Quaternion} other
|
|
428
|
+
* @returns {this}
|
|
416
429
|
*/
|
|
417
430
|
multiply(other) {
|
|
418
|
-
this.multiplyQuaternions(this, other);
|
|
431
|
+
return this.multiplyQuaternions(this, other);
|
|
419
432
|
}
|
|
420
433
|
|
|
421
434
|
/**
|
|
422
435
|
*
|
|
423
436
|
* @param {Quaternion} first
|
|
424
437
|
* @param {Quaternion} second
|
|
438
|
+
* @returns {this}
|
|
425
439
|
*/
|
|
426
440
|
multiplyQuaternions(first, second) {
|
|
427
441
|
const aX = first.x;
|
|
@@ -434,7 +448,7 @@ class Quaternion {
|
|
|
434
448
|
const bZ = second.z;
|
|
435
449
|
const bW = second.w;
|
|
436
450
|
|
|
437
|
-
this._multiplyQuaternions(aX, aY, aZ, aW, bX, bY, bZ, bW)
|
|
451
|
+
return this._multiplyQuaternions(aX, aY, aZ, aW, bX, bY, bZ, bW)
|
|
438
452
|
}
|
|
439
453
|
|
|
440
454
|
/**
|
|
@@ -447,9 +461,12 @@ class Quaternion {
|
|
|
447
461
|
* @param {number} by
|
|
448
462
|
* @param {number} bz
|
|
449
463
|
* @param {number} bw
|
|
450
|
-
* @
|
|
464
|
+
* @returns {this}
|
|
451
465
|
*/
|
|
452
|
-
_multiplyQuaternions(
|
|
466
|
+
_multiplyQuaternions(
|
|
467
|
+
ax, ay, az, aw,
|
|
468
|
+
bx, by, bz, bw
|
|
469
|
+
) {
|
|
453
470
|
|
|
454
471
|
// see http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm
|
|
455
472
|
|
|
@@ -478,9 +495,12 @@ class Quaternion {
|
|
|
478
495
|
*
|
|
479
496
|
* @param {Quaternion} other
|
|
480
497
|
* @param {number} max_delta in radians
|
|
498
|
+
* @returns {this}
|
|
481
499
|
*/
|
|
482
500
|
rotateTowards(other, max_delta) {
|
|
483
501
|
Quaternion.rotateTowards(this, this, other, max_delta);
|
|
502
|
+
|
|
503
|
+
return this;
|
|
484
504
|
}
|
|
485
505
|
|
|
486
506
|
/**
|
|
@@ -504,9 +524,11 @@ class Quaternion {
|
|
|
504
524
|
* @param {function():number} random
|
|
505
525
|
*/
|
|
506
526
|
setRandom(random) {
|
|
527
|
+
assert.isFunction(random,'random');
|
|
528
|
+
|
|
507
529
|
this.set(random(), random(), random(), random());
|
|
508
530
|
|
|
509
|
-
this.normalize();
|
|
531
|
+
return this.normalize();
|
|
510
532
|
}
|
|
511
533
|
|
|
512
534
|
/**
|
|
@@ -655,6 +677,7 @@ class Quaternion {
|
|
|
655
677
|
* @param {number} x angle in X axis in radians
|
|
656
678
|
* @param {number} y angle in Y axis in radians
|
|
657
679
|
* @param {number} z angle in Z axis in radians
|
|
680
|
+
* @returns {this}
|
|
658
681
|
*/
|
|
659
682
|
fromEulerAnglesXYZ(x, y, z) {
|
|
660
683
|
const half_x = x * 0.5;
|
|
@@ -674,7 +697,7 @@ class Quaternion {
|
|
|
674
697
|
const _z = c1 * c2 * s3 + s1 * s2 * c3;
|
|
675
698
|
const _w = c1 * c2 * c3 - s1 * s2 * s3;
|
|
676
699
|
|
|
677
|
-
this.set(_x, _y, _z, _w);
|
|
700
|
+
return this.set(_x, _y, _z, _w);
|
|
678
701
|
}
|
|
679
702
|
|
|
680
703
|
/**
|
|
@@ -685,6 +708,7 @@ class Quaternion {
|
|
|
685
708
|
* @param {number} x angle in X axis in radians
|
|
686
709
|
* @param {number} y angle in Y axis in radians
|
|
687
710
|
* @param {number} z angle in Z axis in radians
|
|
711
|
+
* @returns {this}
|
|
688
712
|
*/
|
|
689
713
|
fromEulerAnglesYXZ(x, y, z) {
|
|
690
714
|
const scaled_x = x * 0.5;
|
|
@@ -704,7 +728,7 @@ class Quaternion {
|
|
|
704
728
|
const _z = c1 * c2 * s3 - s1 * s2 * c3;
|
|
705
729
|
const _w = c1 * c2 * c3 + s1 * s2 * s3;
|
|
706
730
|
|
|
707
|
-
this.set(_x, _y, _z, _w);
|
|
731
|
+
return this.set(_x, _y, _z, _w);
|
|
708
732
|
}
|
|
709
733
|
|
|
710
734
|
/**
|
|
@@ -715,6 +739,7 @@ class Quaternion {
|
|
|
715
739
|
* @param {number} x angle in X axis in radians
|
|
716
740
|
* @param {number} y angle in Y axis in radians
|
|
717
741
|
* @param {number} z angle in Z axis in radians
|
|
742
|
+
* @returns {this}
|
|
718
743
|
*/
|
|
719
744
|
fromEulerAnglesZXY(x, y, z) {
|
|
720
745
|
const scaled_x = x * 0.5;
|
|
@@ -734,7 +759,7 @@ class Quaternion {
|
|
|
734
759
|
const _z = c1 * c2 * s3 + s1 * s2 * c3;
|
|
735
760
|
const _w = c1 * c2 * c3 - s1 * s2 * s3;
|
|
736
761
|
|
|
737
|
-
this.set(_x, _y, _z, _w);
|
|
762
|
+
return this.set(_x, _y, _z, _w);
|
|
738
763
|
}
|
|
739
764
|
|
|
740
765
|
/**
|
|
@@ -745,6 +770,7 @@ class Quaternion {
|
|
|
745
770
|
* @param {number} x angle in X axis in radians
|
|
746
771
|
* @param {number} y angle in Y axis in radians
|
|
747
772
|
* @param {number} z angle in Z axis in radians
|
|
773
|
+
* @returns {this}
|
|
748
774
|
*/
|
|
749
775
|
fromEulerAnglesZYX(x, y, z) {
|
|
750
776
|
const scaled_x = x * 0.5;
|
|
@@ -764,7 +790,7 @@ class Quaternion {
|
|
|
764
790
|
const _z = c1 * c2 * s3 - s1 * s2 * c3;
|
|
765
791
|
const _w = c1 * c2 * c3 + s1 * s2 * s3;
|
|
766
792
|
|
|
767
|
-
this.set(_x, _y, _z, _w);
|
|
793
|
+
return this.set(_x, _y, _z, _w);
|
|
768
794
|
}
|
|
769
795
|
|
|
770
796
|
/**
|
|
@@ -775,6 +801,7 @@ class Quaternion {
|
|
|
775
801
|
* @param {number} x angle in X axis in radians
|
|
776
802
|
* @param {number} y angle in Y axis in radians
|
|
777
803
|
* @param {number} z angle in Z axis in radians
|
|
804
|
+
* @returns {this}
|
|
778
805
|
*/
|
|
779
806
|
fromEulerAnglesYZX(x, y, z) {
|
|
780
807
|
const scaled_x = x * 0.5;
|
|
@@ -794,7 +821,7 @@ class Quaternion {
|
|
|
794
821
|
const _z = c1 * c2 * s3 - s1 * s2 * c3;
|
|
795
822
|
const _w = c1 * c2 * c3 - s1 * s2 * s3;
|
|
796
823
|
|
|
797
|
-
this.set(_x, _y, _z, _w);
|
|
824
|
+
return this.set(_x, _y, _z, _w);
|
|
798
825
|
}
|
|
799
826
|
|
|
800
827
|
/**
|
|
@@ -805,6 +832,7 @@ class Quaternion {
|
|
|
805
832
|
* @param {number} x angle in X axis in radians
|
|
806
833
|
* @param {number} y angle in Y axis in radians
|
|
807
834
|
* @param {number} z angle in Z axis in radians
|
|
835
|
+
* @returns {this}
|
|
808
836
|
*/
|
|
809
837
|
fromEulerAnglesXZY(x, y, z) {
|
|
810
838
|
const scaled_x = x * 0.5;
|
|
@@ -824,7 +852,7 @@ class Quaternion {
|
|
|
824
852
|
const _z = c1 * c2 * s3 + s1 * s2 * c3;
|
|
825
853
|
const _w = c1 * c2 * c3 + s1 * s2 * s3;
|
|
826
854
|
|
|
827
|
-
this.set(_x, _y, _z, _w);
|
|
855
|
+
return this.set(_x, _y, _z, _w);
|
|
828
856
|
}
|
|
829
857
|
|
|
830
858
|
/**
|
|
@@ -832,6 +860,7 @@ class Quaternion {
|
|
|
832
860
|
* Based on blog post: http://lolengine.net/blog/2013/09/18/beautiful-maths-quaternion-from-vectors
|
|
833
861
|
* @param {Vector3} from
|
|
834
862
|
* @param {Vector3} to
|
|
863
|
+
* @returns {this}
|
|
835
864
|
*/
|
|
836
865
|
fromUnitVectors(from, to) {
|
|
837
866
|
assert.ok(from.isNormalized(), `from vector is not normalized, length = ${from.length()}`);
|
|
@@ -890,7 +919,7 @@ class Quaternion {
|
|
|
890
919
|
const wZ = inv_m * crossZ;
|
|
891
920
|
|
|
892
921
|
|
|
893
|
-
this.set(
|
|
922
|
+
return this.set(
|
|
894
923
|
wX,
|
|
895
924
|
wY,
|
|
896
925
|
wZ,
|
|
@@ -900,12 +929,13 @@ class Quaternion {
|
|
|
900
929
|
|
|
901
930
|
/**
|
|
902
931
|
* @param {number[]} m4x4
|
|
932
|
+
* @returns {this}
|
|
903
933
|
*/
|
|
904
934
|
setFromRotationMatrix(m4x4) {
|
|
905
935
|
assert.defined(m4x4, 'm4x4');
|
|
906
936
|
assert.isArrayLike(m4x4, 'm4x4');
|
|
907
937
|
|
|
908
|
-
this.__setFromRotationMatrix(
|
|
938
|
+
return this.__setFromRotationMatrix(
|
|
909
939
|
m4x4[0], m4x4[4], m4x4[8],
|
|
910
940
|
m4x4[1], m4x4[5], m4x4[9],
|
|
911
941
|
m4x4[2], m4x4[6], m4x4[10]
|
|
@@ -926,7 +956,7 @@ class Quaternion {
|
|
|
926
956
|
* @param {number} m31
|
|
927
957
|
* @param {number} m32
|
|
928
958
|
* @param {number} m33
|
|
929
|
-
* @returns {
|
|
959
|
+
* @returns {this}
|
|
930
960
|
*/
|
|
931
961
|
__setFromRotationMatrix(
|
|
932
962
|
m11, m12, m13,
|
|
@@ -1008,18 +1038,21 @@ class Quaternion {
|
|
|
1008
1038
|
* Linear interpolation
|
|
1009
1039
|
* @param {Quaternion} other
|
|
1010
1040
|
* @param {number} t fractional value between 0 and 1
|
|
1041
|
+
* @returns {this}
|
|
1011
1042
|
*/
|
|
1012
1043
|
lerp(other, t) {
|
|
1013
1044
|
|
|
1014
|
-
this.lerpQuaternions(this, other, t);
|
|
1045
|
+
return this.lerpQuaternions(this, other, t);
|
|
1015
1046
|
|
|
1016
1047
|
}
|
|
1017
1048
|
|
|
1018
1049
|
/**
|
|
1019
|
-
*
|
|
1050
|
+
* Linear interpolation of two quaternions
|
|
1051
|
+
* Pretty good, not as good as slerp, but close enough for most application
|
|
1020
1052
|
* @param {Quaternion} first
|
|
1021
1053
|
* @param {Quaternion} second
|
|
1022
1054
|
* @param {number} t
|
|
1055
|
+
* @returns {this}
|
|
1023
1056
|
*/
|
|
1024
1057
|
lerpQuaternions(first, second, t) {
|
|
1025
1058
|
|
|
@@ -1034,7 +1067,7 @@ class Quaternion {
|
|
|
1034
1067
|
const w = lerp(first.w, second.w, t);
|
|
1035
1068
|
|
|
1036
1069
|
|
|
1037
|
-
|
|
1070
|
+
return this.set(x, y, z, w);
|
|
1038
1071
|
}
|
|
1039
1072
|
|
|
1040
1073
|
/**
|
|
@@ -1042,6 +1075,7 @@ class Quaternion {
|
|
|
1042
1075
|
* @param {Quaternion} from
|
|
1043
1076
|
* @param {Quaternion} to
|
|
1044
1077
|
* @param {number} t coefficient, how much between the input quats?
|
|
1078
|
+
* @returns {this}
|
|
1045
1079
|
*/
|
|
1046
1080
|
slerpQuaternions(from, to, t) {
|
|
1047
1081
|
assert.isNumber(t, 't');
|
|
@@ -1095,7 +1129,7 @@ class Quaternion {
|
|
|
1095
1129
|
const _z = scale0 * az + scale1 * bz;
|
|
1096
1130
|
const _w = scale0 * aw + scale1 * bw;
|
|
1097
1131
|
|
|
1098
|
-
this.set(_x, _y, _z, _w);
|
|
1132
|
+
return this.set(_x, _y, _z, _w);
|
|
1099
1133
|
}
|
|
1100
1134
|
|
|
1101
1135
|
|
|
@@ -1110,7 +1144,7 @@ class Quaternion {
|
|
|
1110
1144
|
|
|
1111
1145
|
/**
|
|
1112
1146
|
*
|
|
1113
|
-
* @param {function} handler
|
|
1147
|
+
* @param {function(x:number,y:number,z:number,w:number)} handler
|
|
1114
1148
|
*/
|
|
1115
1149
|
process(handler) {
|
|
1116
1150
|
handler(this.x, this.y, this.z, this.w);
|
|
@@ -1121,7 +1155,7 @@ class Quaternion {
|
|
|
1121
1155
|
/**
|
|
1122
1156
|
*
|
|
1123
1157
|
* @param {Quaternion} other
|
|
1124
|
-
* @returns {
|
|
1158
|
+
* @returns {this}
|
|
1125
1159
|
*/
|
|
1126
1160
|
copy(other) {
|
|
1127
1161
|
return this.set(other.x, other.y, other.z, other.w);
|
|
@@ -1145,7 +1179,7 @@ class Quaternion {
|
|
|
1145
1179
|
* @param {number} y
|
|
1146
1180
|
* @param {number} z
|
|
1147
1181
|
* @param {number} w
|
|
1148
|
-
* @returns {
|
|
1182
|
+
* @returns {this}
|
|
1149
1183
|
*/
|
|
1150
1184
|
set(x, y, z, w) {
|
|
1151
1185
|
assert.isNumber(x, 'x');
|
|
@@ -1180,7 +1214,7 @@ class Quaternion {
|
|
|
1180
1214
|
|
|
1181
1215
|
/**
|
|
1182
1216
|
*
|
|
1183
|
-
* @returns {
|
|
1217
|
+
* @returns {this}
|
|
1184
1218
|
*/
|
|
1185
1219
|
conjugate() {
|
|
1186
1220
|
return this.set(-this.x, -this.y, -this.z, this.w);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Vector4.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Vector4.js"],"names":[],"mappings":";AAMA;
|
|
1
|
+
{"version":3,"file":"Vector4.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Vector4.js"],"names":[],"mappings":";AAMA;IA2YI;;;;;;OAMG;IACH,gBALW,OAAO,MACP,OAAO,qBAEP,OAAO,QASjB;IAxZD;;;;;;;;OAQG;IACH,4DAOC;IANG,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IAEV,eAA6B;IAOjC;;;OAGG;IACH,SAFW,MAAM,EAIhB;IAVD,SAMW,MAAM,CAJhB;IAcD;;;OAGG;IACH,SAFW,MAAM,EAIhB;IAVD,SAMW,MAAM,CAJhB;IAcD;;;OAGG;IACH,SAFW,MAAM,EAIhB;IAVD,SAMW,MAAM,CAJhB;IAcD;;;OAGG;IACH,SAFW,MAAM,EAIhB;IAVD,SAMW,MAAM,CAJhB;IAUD;;;;OAIG;IACH,qBAHW,MAAM,EAAE,WACR,MAAM,QAShB;IAED;;;;OAIG;IACH,oBAHW,MAAM,EAAE,WACR,MAAM,QAOhB;IAED;;;;;;;OAOG;IACH,iDAFa,OAAO,CAkCnB;IAED;;;OAGG;IACH,oBAFW,OAAO,QAQjB;IAED;;;;OAIG;IACH,+BAFa,OAAO,CAOnB;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,kBAlBW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACJ,OAAO,CAoBnB;IAED;;;;OAIG;IACH,WAHW,OAAO,GACL,MAAM,CAIlB;IAED;;;;OAIG;IACH,SAHW,OAAO,GAAC,OAAO,GACb,OAAO,CASnB;IAED;;;;OAIG;IACH,qBAHW,OAAO,GACL,OAAO,CAUnB;IAED;;;;OAIG;IACH,WAHW,OAAO,GACL,OAAO,CAInB;IAED;;;OAGG;IACH,SAFa,OAAO,CAQnB;IAED;;;OAGG;IACH,mBAFW,UAAU,QAyBpB;IAED;;;;OAIG;IACH,aAHW,OAAO,GACL,OAAO,CAInB;IAED;;;OAGG;IACH,QAFY,MAAM,CASjB;IAED;;;;OAIG;IACH,gBAJW,OAAO,MACP,OAAO,mBAKjB;IAED;;;OAGG;IACH,gBAFW,MAAM,EAAE,QAOlB;IAED;;OAEG;IACH,WAFa,MAAM,EAAE,CAQpB;IAED;;;;OAIG;IACH,mBAHW,MAAM,EAAE,UACR,MAAM,QAIhB;IAED;;;;;MAOC;IAED,0BAEC;IAED;;;OAGG;IACH,uBAFW,YAAY,QAOtB;IAED;;;OAGG;IACH,yBAFW,YAAY,QAStB;IAED,sDAOC;CAiBJ"}
|
package/src/core/geom/Vector4.js
CHANGED
|
@@ -27,18 +27,50 @@ class Vector4 {
|
|
|
27
27
|
return this.x;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
+
/**
|
|
31
|
+
*
|
|
32
|
+
* @param {number} v
|
|
33
|
+
*/
|
|
34
|
+
set 0(v) {
|
|
35
|
+
this.x = v;
|
|
36
|
+
}
|
|
37
|
+
|
|
30
38
|
get 1() {
|
|
31
39
|
return this.y;
|
|
32
40
|
}
|
|
33
41
|
|
|
42
|
+
/**
|
|
43
|
+
*
|
|
44
|
+
* @param {number} v
|
|
45
|
+
*/
|
|
46
|
+
set 1(v) {
|
|
47
|
+
this.y = v;
|
|
48
|
+
}
|
|
49
|
+
|
|
34
50
|
get 2() {
|
|
35
51
|
return this.z;
|
|
36
52
|
}
|
|
37
53
|
|
|
54
|
+
/**
|
|
55
|
+
*
|
|
56
|
+
* @param {number} v
|
|
57
|
+
*/
|
|
58
|
+
set 2(v) {
|
|
59
|
+
this.z = v;
|
|
60
|
+
}
|
|
61
|
+
|
|
38
62
|
get 3() {
|
|
39
63
|
return this.w;
|
|
40
64
|
}
|
|
41
65
|
|
|
66
|
+
/**
|
|
67
|
+
*
|
|
68
|
+
* @param {number} v
|
|
69
|
+
*/
|
|
70
|
+
set 3(v) {
|
|
71
|
+
this.w = v;
|
|
72
|
+
}
|
|
73
|
+
|
|
42
74
|
/**
|
|
43
75
|
*
|
|
44
76
|
* @param {number[]} array
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"M2_IDENTITY.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/mat2/M2_IDENTITY.js"],"names":[],"mappings":"AAAA;;;GAGG;AACH,0BAFU,QAAQ,CAAC,MAAM,EAAE,CAAC,CAKzB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"m2_is_diagonal.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/mat2/m2_is_diagonal.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,kCAJW,MAAM,EAAE,cACR,MAAM,GACJ,OAAO,CAInB"}
|