@woosh/meep-engine 2.119.83 → 2.119.85
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/editor/tools/v2/TransformControlsGizmo.js +2 -2
- package/editor/tools/v2/TransformControlsPlane.js +5 -1
- package/package.json +1 -1
- package/src/core/color/rgb_to_rgbe9995.d.ts +10 -0
- package/src/core/color/rgb_to_rgbe9995.d.ts.map +1 -0
- package/src/core/color/rgb_to_rgbe9995.js +51 -0
- package/src/core/color/rgbe9995_to_rgb.d.ts +9 -0
- package/src/core/color/rgbe9995_to_rgb.d.ts.map +1 -0
- package/src/core/color/rgbe9995_to_rgb.js +25 -0
- package/src/core/geom/2d/aabb/AABB2.d.ts.map +1 -1
- package/src/core/geom/2d/aabb/AABB2.js +46 -9
- package/src/core/geom/3d/aabb/AABB3.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/AABB3.js +48 -1
- package/src/core/geom/3d/mat4/allocate_m4.d.ts +1 -1
- package/src/core/geom/3d/mat4/allocate_m4.d.ts.map +1 -1
- package/src/core/geom/3d/mat4/allocate_m4.js +7 -33
- package/src/core/geom/3d/v3_compute_interior_angle.d.ts +22 -0
- package/src/core/geom/3d/v3_compute_interior_angle.d.ts.map +1 -0
- package/src/core/geom/3d/v3_compute_interior_angle.js +26 -0
- package/src/core/geom/ConicRay.d.ts +2 -2
- package/src/core/geom/ConicRay.d.ts.map +1 -1
- package/src/core/geom/ConicRay.js +14 -5
- package/src/core/geom/Quaternion.d.ts.map +1 -1
- package/src/core/geom/Quaternion.js +24 -18
- package/src/core/geom/Vector3.d.ts.map +1 -1
- package/src/core/geom/Vector3.js +4 -4
- package/src/core/math/epsilonEquals.d.ts.map +1 -1
- package/src/core/math/epsilonEquals.js +1 -0
- package/src/core/model/ObservedString.d.ts +64 -17
- package/src/engine/animation/keyed2/AnimationTrackPlayback.d.ts +5 -0
- package/src/engine/animation/keyed2/AnimationTrackPlayback.d.ts.map +1 -1
- package/src/engine/animation/keyed2/AnimationTrackPlayback.js +8 -0
- package/src/engine/animation/keyed2/behavior/AnimationBehavior.d.ts +5 -1
- package/src/engine/animation/keyed2/behavior/AnimationBehavior.d.ts.map +1 -1
- package/src/engine/animation/keyed2/behavior/AnimationBehavior.js +9 -3
- package/src/engine/ecs/animation/AnimationClip.d.ts +1 -1
- package/src/engine/ecs/name/Name.d.ts +0 -5
- package/src/engine/ecs/name/Name.d.ts.map +1 -1
- package/src/engine/ecs/transform/Transform.d.ts +178 -56
- package/src/engine/ecs/transform/Transform.js +1 -1
- package/src/engine/ecs/transform-attachment/TransformAttachment.d.ts.map +1 -1
- package/src/engine/physics/inverse_kinematics/two_joint_ik.d.ts.map +1 -1
- package/src/engine/physics/inverse_kinematics/two_joint_ik.js +6 -28
|
@@ -554,7 +554,7 @@ class TransformControlsGizmo extends GizmoNode {
|
|
|
554
554
|
|
|
555
555
|
_tempQuaternion.setFromEuler(_tempEuler.set(0, Math.PI / 2, 0));
|
|
556
556
|
_alignVector.copy(this.rotationAxis);
|
|
557
|
-
handle.transform.rotation.setFromRotationMatrix(_lookAtMatrix.lookAt(_zeroVector, _alignVector, _unitY));
|
|
557
|
+
handle.transform.rotation.setFromRotationMatrix(_lookAtMatrix.lookAt(_zeroVector, _alignVector, _unitY).elements);
|
|
558
558
|
handle.transform.rotation.multiply(_tempQuaternion);
|
|
559
559
|
handle.visible = this.dragging;
|
|
560
560
|
|
|
@@ -699,7 +699,7 @@ class TransformControlsGizmo extends GizmoNode {
|
|
|
699
699
|
|
|
700
700
|
if (handle.name.search('E') !== -1) {
|
|
701
701
|
|
|
702
|
-
handle.transform.rotation.setFromRotationMatrix(_lookAtMatrix.lookAt(this.eye, _zeroVector, _unitY));
|
|
702
|
+
handle.transform.rotation.setFromRotationMatrix(_lookAtMatrix.lookAt(this.eye, _zeroVector, _unitY).elements);
|
|
703
703
|
|
|
704
704
|
}
|
|
705
705
|
|
|
@@ -42,6 +42,10 @@ export class TransformControlsPlane extends GizmoNode {
|
|
|
42
42
|
|
|
43
43
|
let space = this.space;
|
|
44
44
|
|
|
45
|
+
/**
|
|
46
|
+
*
|
|
47
|
+
* @type {Transform}
|
|
48
|
+
*/
|
|
45
49
|
const transform = this.transform;
|
|
46
50
|
|
|
47
51
|
transform.position.copy(this.worldPosition);
|
|
@@ -108,7 +112,7 @@ export class TransformControlsPlane extends GizmoNode {
|
|
|
108
112
|
|
|
109
113
|
_tempMatrix.lookAt(_tempVector.set(0, 0, 0), _dirVector, _alignVector);
|
|
110
114
|
|
|
111
|
-
transform.rotation.setFromRotationMatrix(_tempMatrix);
|
|
115
|
+
transform.rotation.setFromRotationMatrix(_tempMatrix.elements);
|
|
112
116
|
|
|
113
117
|
}
|
|
114
118
|
|
package/package.json
CHANGED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert floating point RGB input to RGBE9995 Uint32 value
|
|
3
|
+
* TODO unverified
|
|
4
|
+
* @param {number} r
|
|
5
|
+
* @param {number} g
|
|
6
|
+
* @param {number} b
|
|
7
|
+
* @returns {number} Uint32
|
|
8
|
+
*/
|
|
9
|
+
export function rgb_to_rgbe9995(r: number, g: number, b: number): number;
|
|
10
|
+
//# sourceMappingURL=rgb_to_rgbe9995.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rgb_to_rgbe9995.d.ts","sourceRoot":"","sources":["../../../../src/core/color/rgb_to_rgbe9995.js"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,mCALW,MAAM,KACN,MAAM,KACN,MAAM,GACJ,MAAM,CAyClB"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { clamp } from "../math/clamp.js";
|
|
2
|
+
import { max3 } from "../math/max3.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Convert floating point RGB input to RGBE9995 Uint32 value
|
|
6
|
+
* TODO unverified
|
|
7
|
+
* @param {number} r
|
|
8
|
+
* @param {number} g
|
|
9
|
+
* @param {number} b
|
|
10
|
+
* @returns {number} Uint32
|
|
11
|
+
*/
|
|
12
|
+
export function rgb_to_rgbe9995(r, g, b) {
|
|
13
|
+
|
|
14
|
+
//see https://github.com/Stary2001/godot/blob/00c6ce9716ed542997bc2b59136bceb3729db970/core/color.h#L125
|
|
15
|
+
|
|
16
|
+
const pow2to9 = 512.0;
|
|
17
|
+
const B = 15.0;
|
|
18
|
+
//const float Emax = 31.0f;
|
|
19
|
+
const N = 9.0;
|
|
20
|
+
|
|
21
|
+
const sharedexp = 65408.000; //(( pow2to9 - 1.0f)/ pow2to9)*powf( 2.0f, 31.0f - 15.0f);
|
|
22
|
+
|
|
23
|
+
const cRed = clamp(r, 0, sharedexp);
|
|
24
|
+
const cGreen = clamp(g, 0, sharedexp);
|
|
25
|
+
const cBlue = clamp(b, 0, sharedexp);
|
|
26
|
+
|
|
27
|
+
const cMax = max3(cRed, cGreen, cBlue);
|
|
28
|
+
|
|
29
|
+
// expp = MAX(-B - 1, log2(maxc)) + 1 + B
|
|
30
|
+
|
|
31
|
+
const expp = Math.max(-B - 1.0, Math.floor(Math.log(cMax) / Math.LN2)) + 1.0 + B;
|
|
32
|
+
|
|
33
|
+
const sMax = Math.floor((cMax / Math.pow(2.0, expp - B - N)) + 0.5);
|
|
34
|
+
|
|
35
|
+
let exps = expp + 1.0;
|
|
36
|
+
|
|
37
|
+
if (0.0 <= sMax && sMax < pow2to9) {
|
|
38
|
+
exps = expp;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const sRed = Math.floor((cRed / Math.pow(2.0, exps - B - N)) + 0.5) >>> 0;
|
|
42
|
+
const sGreen = Math.floor((cGreen / Math.pow(2.0, exps - B - N)) + 0.5) >>> 0;
|
|
43
|
+
const sBlue = Math.floor((cBlue / Math.pow(2.0, exps - B - N)) + 0.5) >>> 0;
|
|
44
|
+
|
|
45
|
+
return (sRed & 0x1FF)
|
|
46
|
+
| ((sGreen & 0x1FF) << 9)
|
|
47
|
+
| ((sBlue & 0x1FF) << 18)
|
|
48
|
+
| ((exps & 0x1F) << 27)
|
|
49
|
+
;
|
|
50
|
+
|
|
51
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TODO unverified
|
|
3
|
+
* Decode RGBE (RGB + exponent) UINT32 value
|
|
4
|
+
* @param {number[]|Float32Array} out
|
|
5
|
+
* @param {number} out_offset
|
|
6
|
+
* @param {number} rgbe
|
|
7
|
+
*/
|
|
8
|
+
export function rgbe9995_to_rgb(out: number[] | Float32Array, out_offset: number, rgbe: number): void;
|
|
9
|
+
//# sourceMappingURL=rgbe9995_to_rgb.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rgbe9995_to_rgb.d.ts","sourceRoot":"","sources":["../../../../src/core/color/rgbe9995_to_rgb.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,qCAJW,MAAM,EAAE,GAAC,YAAY,cACrB,MAAM,QACN,MAAM,QAmBhB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TODO unverified
|
|
3
|
+
* Decode RGBE (RGB + exponent) UINT32 value
|
|
4
|
+
* @param {number[]|Float32Array} out
|
|
5
|
+
* @param {number} out_offset
|
|
6
|
+
* @param {number} rgbe
|
|
7
|
+
*/
|
|
8
|
+
export function rgbe9995_to_rgb(out, out_offset, rgbe) {
|
|
9
|
+
// see https://github.com/godotengine/godot/blob/4c4e67334412f73c9deba5e5d29afa8651418af2/core/math/color.cpp#L471
|
|
10
|
+
|
|
11
|
+
const r = rgbe & 0x1ff;
|
|
12
|
+
const g = (rgbe >> 9) & 0x1ff;
|
|
13
|
+
const b = (rgbe >> 18) & 0x1ff;
|
|
14
|
+
const e = (rgbe >> 27);
|
|
15
|
+
|
|
16
|
+
const scale = Math.pow(2.0, e - 15.0 - 9.0);
|
|
17
|
+
|
|
18
|
+
const _r = r * scale;
|
|
19
|
+
const _g = g * scale;
|
|
20
|
+
const _b = b * scale;
|
|
21
|
+
|
|
22
|
+
out[out_offset] = _r;
|
|
23
|
+
out[out_offset + 1] = _g;
|
|
24
|
+
out[out_offset + 2] = _b;
|
|
25
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AABB2.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/2d/aabb/AABB2.js"],"names":[],"mappings":";AAYA;;;GAGG;AACH;IACI;;;;;;OAMG;IACH,
|
|
1
|
+
{"version":3,"file":"AABB2.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/2d/aabb/AABB2.js"],"names":[],"mappings":";AAYA;;;GAGG;AACH;IACI;;;;;;OAMG;IACH,iBANW,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,EAuChB;IApBG;;;OAGG;IACH,IAFU,MAAM,CAEJ;IACZ;;;OAGG;IACH,IAFU,MAAM,CAEJ;IACZ;;;OAGG;IACH,IAFU,MAAM,CAEJ;IACZ;;;OAGG;IACH,IAFU,MAAM,CAEJ;IAGhB;;;OAGG;IACH,gBAEC;IAED;;;OAGG;IACH,gBAEC;IAED;;;OAGG;IACH,gBAEC;IAED;;;OAGG;IACH,gBAEC;IAED;;;OAGG;IACH,gBAFW,MAAM,QAQhB;IAED;;;OAGG;IACH,iBAFW,MAAM,QAQhB;IAED;;;OAGG;IACH,WAFW,MAAM,QAMhB;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;;;;;;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,mBAFW,OAAO,WAOjB;IAED;;;;OAIG;IACH,QAFa,MAAM,CAIlB;IAED;;;;OAIG;IACH,QAFa,MAAM,CAIlB;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,QAOhB;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;IAED;;;;OAIG;IACH,iBAJW,MAAM,EAAE,GAAC,YAAY,WACrB,MAAM,GACJ,MAAM,EAAE,GAAC,YAAY,CAUjC;CACJ;;;qBAqCS,KAAK;qBAML,KAAK;;oBApqBK,kBAAkB;AA4nBtC;;;;;;;GAOG;AACH,gDANW,KAAK,MACL,KAAK,MACL,OAAO,MACP,OAAO,GACL,OAAO,CAsBnB"}
|
|
@@ -16,13 +16,18 @@ import { aabb2_overlap_exists } from "./aabb2_overlap_exists.js";
|
|
|
16
16
|
*/
|
|
17
17
|
class AABB2 {
|
|
18
18
|
/**
|
|
19
|
-
* @param {
|
|
20
|
-
* @param {
|
|
21
|
-
* @param {
|
|
22
|
-
* @param {
|
|
19
|
+
* @param {number} [x0=0]
|
|
20
|
+
* @param {number} [y0=0]
|
|
21
|
+
* @param {number} [x1=0]
|
|
22
|
+
* @param {number} [y1=0]
|
|
23
23
|
* @constructor
|
|
24
24
|
*/
|
|
25
|
-
constructor(
|
|
25
|
+
constructor(
|
|
26
|
+
x0 = 0,
|
|
27
|
+
y0 = 0,
|
|
28
|
+
x1 = 0,
|
|
29
|
+
y1 = 0
|
|
30
|
+
) {
|
|
26
31
|
assert.isNumber(x0, `x0`);
|
|
27
32
|
assert.isNumber(y0, `y0`);
|
|
28
33
|
assert.isNumber(x1, `x1`);
|
|
@@ -35,26 +40,58 @@ class AABB2 {
|
|
|
35
40
|
|
|
36
41
|
/**
|
|
37
42
|
*
|
|
38
|
-
* @type {
|
|
43
|
+
* @type {number}
|
|
39
44
|
*/
|
|
40
45
|
this.x0 = x0;
|
|
41
46
|
/**
|
|
42
47
|
*
|
|
43
|
-
* @type {
|
|
48
|
+
* @type {number}
|
|
44
49
|
*/
|
|
45
50
|
this.y0 = y0;
|
|
46
51
|
/**
|
|
47
52
|
*
|
|
48
|
-
* @type {
|
|
53
|
+
* @type {number}
|
|
49
54
|
*/
|
|
50
55
|
this.x1 = x1;
|
|
51
56
|
/**
|
|
52
57
|
*
|
|
53
|
-
* @type {
|
|
58
|
+
* @type {number}
|
|
54
59
|
*/
|
|
55
60
|
this.y1 = y1;
|
|
56
61
|
}
|
|
57
62
|
|
|
63
|
+
/**
|
|
64
|
+
*
|
|
65
|
+
* @returns {number}
|
|
66
|
+
*/
|
|
67
|
+
get 0(){
|
|
68
|
+
return this.x0;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
*
|
|
73
|
+
* @returns {number}
|
|
74
|
+
*/
|
|
75
|
+
get 1(){
|
|
76
|
+
return this.y0;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
*
|
|
81
|
+
* @returns {number}
|
|
82
|
+
*/
|
|
83
|
+
get 2(){
|
|
84
|
+
return this.x1;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
*
|
|
89
|
+
* @returns {number}
|
|
90
|
+
*/
|
|
91
|
+
get 3(){
|
|
92
|
+
return this.y1;
|
|
93
|
+
}
|
|
94
|
+
|
|
58
95
|
/**
|
|
59
96
|
*
|
|
60
97
|
* @param {number} size
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AABB3.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/aabb/AABB3.js"],"names":[],"mappings":"AAeA;;;GAGG;AACH;IACI;;;;;;;;;OASG;IACH,iBARW,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,EAYhB;
|
|
1
|
+
{"version":3,"file":"AABB3.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/aabb/AABB3.js"],"names":[],"mappings":"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"}
|
|
@@ -51,53 +51,100 @@ export class AABB3 {
|
|
|
51
51
|
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
+
/**
|
|
55
|
+
*
|
|
56
|
+
* @returns {number}
|
|
57
|
+
*/
|
|
54
58
|
get 0() {
|
|
55
59
|
return this.x0;
|
|
56
60
|
}
|
|
57
61
|
|
|
58
62
|
|
|
63
|
+
/**
|
|
64
|
+
*
|
|
65
|
+
* @returns {number}
|
|
66
|
+
*/
|
|
59
67
|
get 1() {
|
|
60
68
|
return this.y0;
|
|
61
69
|
}
|
|
62
70
|
|
|
71
|
+
/**
|
|
72
|
+
*
|
|
73
|
+
* @returns {number}
|
|
74
|
+
*/
|
|
63
75
|
get 2() {
|
|
64
76
|
return this.z0;
|
|
65
77
|
}
|
|
66
78
|
|
|
67
79
|
|
|
80
|
+
/**
|
|
81
|
+
*
|
|
82
|
+
* @returns {number}
|
|
83
|
+
*/
|
|
68
84
|
get 3() {
|
|
69
85
|
return this.x1;
|
|
70
86
|
}
|
|
71
87
|
|
|
72
|
-
|
|
88
|
+
/**
|
|
89
|
+
*
|
|
90
|
+
* @returns {number}
|
|
91
|
+
*/
|
|
73
92
|
get 4() {
|
|
74
93
|
return this.y1;
|
|
75
94
|
}
|
|
76
95
|
|
|
96
|
+
/**
|
|
97
|
+
*
|
|
98
|
+
* @returns {number}
|
|
99
|
+
*/
|
|
77
100
|
get 5() {
|
|
78
101
|
return this.z1;
|
|
79
102
|
}
|
|
80
103
|
|
|
104
|
+
/**
|
|
105
|
+
*
|
|
106
|
+
* @param {number} v
|
|
107
|
+
*/
|
|
81
108
|
set 0(v) {
|
|
82
109
|
this.x0 = v;
|
|
83
110
|
}
|
|
84
111
|
|
|
112
|
+
/**
|
|
113
|
+
*
|
|
114
|
+
* @param {number} v
|
|
115
|
+
*/
|
|
85
116
|
set 1(v) {
|
|
86
117
|
this.y0 = v;
|
|
87
118
|
}
|
|
88
119
|
|
|
120
|
+
/**
|
|
121
|
+
*
|
|
122
|
+
* @param {number} v
|
|
123
|
+
*/
|
|
89
124
|
set 2(v) {
|
|
90
125
|
this.z0 = v;
|
|
91
126
|
}
|
|
92
127
|
|
|
128
|
+
/**
|
|
129
|
+
*
|
|
130
|
+
* @param {number} v
|
|
131
|
+
*/
|
|
93
132
|
set 3(v) {
|
|
94
133
|
this.x1 = v;
|
|
95
134
|
}
|
|
96
135
|
|
|
136
|
+
/**
|
|
137
|
+
*
|
|
138
|
+
* @param {number} v
|
|
139
|
+
*/
|
|
97
140
|
set 4(v) {
|
|
98
141
|
this.y1 = v;
|
|
99
142
|
}
|
|
100
143
|
|
|
144
|
+
/**
|
|
145
|
+
*
|
|
146
|
+
* @param {number} v
|
|
147
|
+
*/
|
|
101
148
|
set 5(v) {
|
|
102
149
|
this.z1 = v;
|
|
103
150
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"allocate_m4.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/mat4/allocate_m4.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"allocate_m4.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/mat4/allocate_m4.js"],"names":[],"mappings":"AAAA;;;GAGG;AACH,+BAFa,YAAY,CAaxB"}
|
|
@@ -1,42 +1,16 @@
|
|
|
1
|
-
import { MATRIX_4_IDENTITY } from "./MATRIX_4_IDENTITY.js";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Larger bucket sizes provide better cache locality
|
|
5
|
-
* Larger bucket sizes also cause more hanging GC references, as if one matrix element is still held - ENTIRE bucket is still referenced
|
|
6
|
-
* @type {number}
|
|
7
|
-
*/
|
|
8
|
-
const TRANSFORM_ALLOCATOR_BUCKET_CAPACITY = 16;
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
*
|
|
12
|
-
* @type {ArrayBuffer|null}
|
|
13
|
-
*/
|
|
14
|
-
let transform_bucket = null;
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
*
|
|
18
|
-
* @type {number}
|
|
19
|
-
*/
|
|
20
|
-
let transform_bucket_cursor = TRANSFORM_ALLOCATOR_BUCKET_CAPACITY;
|
|
21
|
-
|
|
22
|
-
const MATRIX_BYTE_SIZE = 4 * 16;
|
|
23
|
-
|
|
24
1
|
/**
|
|
25
|
-
* custom Float32Array allocator
|
|
2
|
+
* custom Float32Array allocator
|
|
26
3
|
* @returns {Float32Array}
|
|
27
4
|
*/
|
|
28
5
|
export function allocate_m4() {
|
|
29
|
-
if (transform_bucket_cursor >= TRANSFORM_ALLOCATOR_BUCKET_CAPACITY) {
|
|
30
|
-
transform_bucket = new ArrayBuffer(TRANSFORM_ALLOCATOR_BUCKET_CAPACITY * MATRIX_BYTE_SIZE);
|
|
31
|
-
transform_bucket_cursor = 0;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
const result = new Float32Array(transform_bucket, transform_bucket_cursor * MATRIX_BYTE_SIZE, 16);
|
|
35
6
|
|
|
36
|
-
|
|
37
|
-
result.set(MATRIX_4_IDENTITY);
|
|
7
|
+
const result = new Float32Array(16);
|
|
38
8
|
|
|
39
|
-
|
|
9
|
+
// initialize to identity matrix by setting diagonal values
|
|
10
|
+
result[0] = 1;
|
|
11
|
+
result[5] = 1;
|
|
12
|
+
result[10] = 1;
|
|
13
|
+
result[15] = 1;
|
|
40
14
|
|
|
41
15
|
return result;
|
|
42
16
|
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compute interior angle between three points
|
|
3
|
+
* Computed angle is around point B
|
|
4
|
+
* @param {{x:number, y:number, z:number}} a
|
|
5
|
+
* @param {{x:number, y:number, z:number}} b
|
|
6
|
+
* @param {{x:number, y:number, z:number}} c
|
|
7
|
+
* @returns {number} angle in radians
|
|
8
|
+
*/
|
|
9
|
+
export function v3_compute_interior_angle(a: {
|
|
10
|
+
x: number;
|
|
11
|
+
y: number;
|
|
12
|
+
z: number;
|
|
13
|
+
}, b: {
|
|
14
|
+
x: number;
|
|
15
|
+
y: number;
|
|
16
|
+
z: number;
|
|
17
|
+
}, c: {
|
|
18
|
+
x: number;
|
|
19
|
+
y: number;
|
|
20
|
+
z: number;
|
|
21
|
+
}): number;
|
|
22
|
+
//# sourceMappingURL=v3_compute_interior_angle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v3_compute_interior_angle.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/3d/v3_compute_interior_angle.js"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,6CALW;IAAC,CAAC,EAAC,MAAM,CAAC;IAAC,CAAC,EAAC,MAAM,CAAC;IAAC,CAAC,EAAC,MAAM,CAAA;CAAC,KAC9B;IAAC,CAAC,EAAC,MAAM,CAAC;IAAC,CAAC,EAAC,MAAM,CAAC;IAAC,CAAC,EAAC,MAAM,CAAA;CAAC,KAC9B;IAAC,CAAC,EAAC,MAAM,CAAC;IAAC,CAAC,EAAC,MAAM,CAAC;IAAC,CAAC,EAAC,MAAM,CAAA;CAAC,GAC5B,MAAM,CAiBlB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { v3_angle_between } from "../vec3/v3_angle_between.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Compute interior angle between three points
|
|
5
|
+
* Computed angle is around point B
|
|
6
|
+
* @param {{x:number, y:number, z:number}} a
|
|
7
|
+
* @param {{x:number, y:number, z:number}} b
|
|
8
|
+
* @param {{x:number, y:number, z:number}} c
|
|
9
|
+
* @returns {number} angle in radians
|
|
10
|
+
*/
|
|
11
|
+
export function v3_compute_interior_angle(a, b, c) {
|
|
12
|
+
//compute AB delta
|
|
13
|
+
const d_ab_x = a.x - b.x;
|
|
14
|
+
const d_ab_y = a.y - b.y;
|
|
15
|
+
const d_ab_z = a.z - b.z;
|
|
16
|
+
|
|
17
|
+
//compute CB delta
|
|
18
|
+
const d_cb_x = c.x - b.x;
|
|
19
|
+
const d_cb_y = c.y - b.y;
|
|
20
|
+
const d_cb_z = c.z - b.z;
|
|
21
|
+
|
|
22
|
+
return v3_angle_between(
|
|
23
|
+
d_ab_x, d_ab_y, d_ab_z,
|
|
24
|
+
d_cb_x, d_cb_y, d_cb_z,
|
|
25
|
+
)
|
|
26
|
+
}
|
|
@@ -9,10 +9,10 @@ export class ConicRay {
|
|
|
9
9
|
* @param {number} x
|
|
10
10
|
* @param {number} y
|
|
11
11
|
* @param {number} z
|
|
12
|
-
* @param {number}
|
|
12
|
+
* @param {number} half_angle
|
|
13
13
|
* @returns {ConicRay}
|
|
14
14
|
*/
|
|
15
|
-
static fromScalars(x: number, y: number, z: number,
|
|
15
|
+
static fromScalars(x: number, y: number, z: number, half_angle: number): ConicRay;
|
|
16
16
|
/**
|
|
17
17
|
* Must be normalized
|
|
18
18
|
* @readonly
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConicRay.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/ConicRay.js"],"names":[],"mappings":"AAQA;;;;GAIG;AACH;
|
|
1
|
+
{"version":3,"file":"ConicRay.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/ConicRay.js"],"names":[],"mappings":"AAQA;;;;GAIG;AACH;IA8KI;;;;;;;OAOG;IACH,sBANW,MAAM,KACN,MAAM,KACN,MAAM,cACN,MAAM,GACJ,QAAQ,CAkBpB;IApMD;;;;OAIG;IACH,oBAFU,OAAO,CAEgB;IAEjC;;;;OAIG;IACH,OAFU,MAAM,CAEN;IAEV;;;MAKC;IAED,0BAGC;IAED;;;OAGG;IACH,2CAGC;IAED;;;OAGG;IACH,6CAMC;IAED;;;;OAIG;IACH,cAHW,QAAQ,GACN,OAAO,CAMnB;IAED;;;;;OAKG;IACH,qBAJW,QAAQ,cACR,MAAM,GACJ,OAAO,CAKnB;IAED,eAKC;IAED;;;OAGG;IACH,YAFW,QAAQ,QAKlB;IAED;;;;OAIG;IACH,4BAHW,OAAO,GACL,OAAO,CAMnB;IAED;;;;;OAKG;IACH,gDAFW,OAAO,QAsEjB;CA2BJ;oBA/MmB,cAAc"}
|
|
@@ -66,7 +66,9 @@ export class ConicRay {
|
|
|
66
66
|
* @returns {boolean}
|
|
67
67
|
*/
|
|
68
68
|
equals(other) {
|
|
69
|
-
return this.angle === other.angle
|
|
69
|
+
return this.angle === other.angle
|
|
70
|
+
&& this.direction.equals(other.direction)
|
|
71
|
+
;
|
|
70
72
|
}
|
|
71
73
|
|
|
72
74
|
/**
|
|
@@ -188,16 +190,23 @@ export class ConicRay {
|
|
|
188
190
|
* @param {number} x
|
|
189
191
|
* @param {number} y
|
|
190
192
|
* @param {number} z
|
|
191
|
-
* @param {number}
|
|
193
|
+
* @param {number} half_angle
|
|
192
194
|
* @returns {ConicRay}
|
|
193
195
|
*/
|
|
194
|
-
static fromScalars(
|
|
195
|
-
|
|
196
|
+
static fromScalars(
|
|
197
|
+
x,
|
|
198
|
+
y,
|
|
199
|
+
z,
|
|
200
|
+
half_angle
|
|
201
|
+
) {
|
|
202
|
+
assert.isNumber(half_angle, 'angle');
|
|
203
|
+
assert.greaterThanOrEqual(half_angle, 0, 'half_angle must be non-negative');
|
|
196
204
|
|
|
197
205
|
const r = new ConicRay();
|
|
198
206
|
|
|
199
|
-
r.angle =
|
|
207
|
+
r.angle = half_angle;
|
|
200
208
|
r.direction.set(x, y, z);
|
|
209
|
+
r.direction.normalize();
|
|
201
210
|
|
|
202
211
|
return r;
|
|
203
212
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Quaternion.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Quaternion.js"],"names":[],"mappings":";AAqBA;
|
|
1
|
+
{"version":3,"file":"Quaternion.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Quaternion.js"],"names":[],"mappings":"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"}
|
|
@@ -884,16 +884,16 @@ class Quaternion {
|
|
|
884
884
|
}
|
|
885
885
|
|
|
886
886
|
/**
|
|
887
|
-
* @
|
|
888
|
-
* @param {Matrix4} m
|
|
887
|
+
* @param {number[]} m4x4
|
|
889
888
|
*/
|
|
890
|
-
setFromRotationMatrix(
|
|
891
|
-
|
|
889
|
+
setFromRotationMatrix(m4x4) {
|
|
890
|
+
assert.defined(m4x4,'m4x4');
|
|
891
|
+
assert.isArrayLike(m4x4,'m4x4');
|
|
892
892
|
|
|
893
893
|
this.__setFromRotationMatrix(
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
894
|
+
m4x4[0], m4x4[4], m4x4[8],
|
|
895
|
+
m4x4[1], m4x4[5], m4x4[9],
|
|
896
|
+
m4x4[2], m4x4[6], m4x4[10]
|
|
897
897
|
);
|
|
898
898
|
|
|
899
899
|
}
|
|
@@ -1023,14 +1023,16 @@ class Quaternion {
|
|
|
1023
1023
|
}
|
|
1024
1024
|
|
|
1025
1025
|
/**
|
|
1026
|
-
*
|
|
1026
|
+
* Spherical linear interpolation
|
|
1027
1027
|
* @param {Quaternion} from
|
|
1028
1028
|
* @param {Quaternion} to
|
|
1029
|
-
* @param {number} t
|
|
1029
|
+
* @param {number} t coefficient, how much between the input quats?
|
|
1030
1030
|
*/
|
|
1031
1031
|
slerpQuaternions(from, to, t) {
|
|
1032
1032
|
assert.isNumber(t, 't');
|
|
1033
1033
|
|
|
1034
|
+
// see https://github.com/glampert/vectormath/blob/7105ef341303fe83b3dacd6883d9333989126069/scalar/quaternion.hpp#L90
|
|
1035
|
+
|
|
1034
1036
|
const ax = from.x,
|
|
1035
1037
|
ay = from.y,
|
|
1036
1038
|
az = from.z,
|
|
@@ -1041,26 +1043,30 @@ class Quaternion {
|
|
|
1041
1043
|
bz = to.z,
|
|
1042
1044
|
bw = to.w;
|
|
1043
1045
|
|
|
1044
|
-
let
|
|
1046
|
+
let cos_angle, scale0, scale1;
|
|
1045
1047
|
|
|
1046
1048
|
// calc cosine
|
|
1047
|
-
|
|
1049
|
+
cos_angle = ax * bx + ay * by + az * bz + aw * bw;
|
|
1048
1050
|
|
|
1049
1051
|
// adjust signs (if necessary)
|
|
1050
|
-
if (
|
|
1051
|
-
|
|
1052
|
+
if (cos_angle < 0.0) {
|
|
1053
|
+
cos_angle = -cos_angle;
|
|
1052
1054
|
bx = -bx;
|
|
1053
1055
|
by = -by;
|
|
1054
1056
|
bz = -bz;
|
|
1055
1057
|
bw = -bw;
|
|
1056
1058
|
}
|
|
1059
|
+
|
|
1057
1060
|
// calculate coefficients
|
|
1058
|
-
if ((1.0 -
|
|
1061
|
+
if ((1.0 - cos_angle) > EPSILON) {
|
|
1059
1062
|
// standard case (slerp)
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1063
|
+
const angle = Math.acos(cos_angle);
|
|
1064
|
+
|
|
1065
|
+
const recip_sin_angle = 1 / sin(angle);
|
|
1066
|
+
|
|
1067
|
+
scale0 = sin((1.0 - t) * angle) * recip_sin_angle;
|
|
1068
|
+
scale1 = sin(t * angle) * recip_sin_angle;
|
|
1069
|
+
|
|
1064
1070
|
} else {
|
|
1065
1071
|
// "from" and "to" quaternions are very close
|
|
1066
1072
|
// ... so we can do a linear interpolation
|
|
@@ -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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"}
|
package/src/core/geom/Vector3.js
CHANGED
|
@@ -460,13 +460,13 @@ class Vector3 {
|
|
|
460
460
|
}
|
|
461
461
|
|
|
462
462
|
/**
|
|
463
|
-
* @param {number} [
|
|
463
|
+
* @param {number} [squared_error]
|
|
464
464
|
* @return {boolean}
|
|
465
465
|
*/
|
|
466
|
-
isNormalized(
|
|
467
|
-
const
|
|
466
|
+
isNormalized(squared_error = 1e-5) {
|
|
467
|
+
const length_sqr = this.lengthSqr();
|
|
468
468
|
|
|
469
|
-
return epsilonEquals(
|
|
469
|
+
return epsilonEquals(length_sqr, 1, squared_error);
|
|
470
470
|
}
|
|
471
471
|
|
|
472
472
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"epsilonEquals.d.ts","sourceRoot":"","sources":["../../../../src/core/math/epsilonEquals.js"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,iCALW,MAAM,KACN,MAAM,cACN,MAAM,GACJ,OAAO,
|
|
1
|
+
{"version":3,"file":"epsilonEquals.d.ts","sourceRoot":"","sources":["../../../../src/core/math/epsilonEquals.js"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,iCALW,MAAM,KACN,MAAM,cACN,MAAM,GACJ,OAAO,CAUnB"}
|
|
@@ -11,6 +11,7 @@ import { EPSILON } from "./EPSILON.js";
|
|
|
11
11
|
export function epsilonEquals(a, b, tolerance = EPSILON) {
|
|
12
12
|
assert.isNumber(a, 'a');
|
|
13
13
|
assert.isNumber(b, 'b');
|
|
14
|
+
|
|
14
15
|
assert.isNumber(tolerance, 'tolerance');
|
|
15
16
|
assert.greaterThanOrEqual(tolerance, 0, 'tolerance must be greater than 0');
|
|
16
17
|
|
|
@@ -1,17 +1,64 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
1
|
+
export default ObservedString;
|
|
2
|
+
declare class ObservedString extends String {
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
* @param {string} [value]
|
|
6
|
+
* @constructor
|
|
7
|
+
*/
|
|
8
|
+
constructor(value?: string);
|
|
9
|
+
/**
|
|
10
|
+
*
|
|
11
|
+
* @type {String}
|
|
12
|
+
* @private
|
|
13
|
+
*/
|
|
14
|
+
private __value;
|
|
15
|
+
onChanged: Signal<any, any, any, any, any, any, any, any>;
|
|
16
|
+
/**
|
|
17
|
+
*
|
|
18
|
+
* @param {String} value
|
|
19
|
+
* @returns {ObservedString}
|
|
20
|
+
*/
|
|
21
|
+
set(value: string): ObservedString;
|
|
22
|
+
/**
|
|
23
|
+
*
|
|
24
|
+
* @param {ObservedString} other
|
|
25
|
+
*/
|
|
26
|
+
copy(other: ObservedString): void;
|
|
27
|
+
/**
|
|
28
|
+
*
|
|
29
|
+
* @param {ObservedString} other
|
|
30
|
+
* @returns {boolean}
|
|
31
|
+
*/
|
|
32
|
+
equals(other: ObservedString): boolean;
|
|
33
|
+
/**
|
|
34
|
+
*
|
|
35
|
+
* @returns {String}
|
|
36
|
+
*/
|
|
37
|
+
getValue(): string;
|
|
38
|
+
/**
|
|
39
|
+
*
|
|
40
|
+
* @param {function} f
|
|
41
|
+
*/
|
|
42
|
+
process(f: Function): void;
|
|
43
|
+
toJSON(): string;
|
|
44
|
+
fromJSON(obj: any): void;
|
|
45
|
+
/**
|
|
46
|
+
*
|
|
47
|
+
* @param {BinaryBuffer} buffer
|
|
48
|
+
*/
|
|
49
|
+
toBinaryBuffer(buffer: BinaryBuffer): void;
|
|
50
|
+
/**
|
|
51
|
+
*
|
|
52
|
+
* @param {BinaryBuffer} buffer
|
|
53
|
+
*/
|
|
54
|
+
fromBinaryBuffer(buffer: BinaryBuffer): void;
|
|
55
|
+
hash(): number;
|
|
56
|
+
/**
|
|
57
|
+
* Used for optimized "instanceof" check
|
|
58
|
+
* @readonly
|
|
59
|
+
* @type {boolean}
|
|
60
|
+
*/
|
|
61
|
+
readonly isObservedString: boolean;
|
|
62
|
+
}
|
|
63
|
+
import Signal from "../events/signal/Signal.js";
|
|
64
|
+
//# sourceMappingURL=ObservedString.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnimationTrackPlayback.d.ts","sourceRoot":"","sources":["../../../../../src/engine/animation/keyed2/AnimationTrackPlayback.js"],"names":[],"mappings":";AAGA;IACI;;;;;;;;OAQG;IACH,4EAuBC;IAtBG,sBAAkB;IAClB,cAA+B;IAE/B,oBAAoC;IACpC,kBAAgC;IAEhC,uBAAuB;IACvB,8BAA8B;IAE9B,uBAAuB;IACvB,sBAAsB;IAEtB,gBAAmB;IAEnB,4BAA0D;IAG1D;;MAEC;IAKL;;;OAGG;IACH,gBAFa,QAAQ,IAAI,CAAC,CAUzB;IAED;;;OAGG;IACH,WAFW,OAAO,QAIjB;IAED,cAEC;IAED;;;OAGG;IACH,kBAFW,MAAM,QA2BhB;IAED;;;OAGG;IACH,cAFa,OAAO,CA2CnB;IAED;;;OAGG;IACH,mBAFW,MAAM,QA6BhB;IAED,eAOC;IAED;;;OAGG;IACH,0BAFW,MAAM,EAAE,QA2ClB;CACJ;
|
|
1
|
+
{"version":3,"file":"AnimationTrackPlayback.d.ts","sourceRoot":"","sources":["../../../../../src/engine/animation/keyed2/AnimationTrackPlayback.js"],"names":[],"mappings":";AAGA;IACI;;;;;;;;OAQG;IACH,4EAuBC;IAtBG,sBAAkB;IAClB,cAA+B;IAE/B,oBAAoC;IACpC,kBAAgC;IAEhC,uBAAuB;IACvB,8BAA8B;IAE9B,uBAAuB;IACvB,sBAAsB;IAEtB,gBAAmB;IAEnB,4BAA0D;IAG1D;;MAEC;IAKL;;;OAGG;IACH,oBAEC;IAED;;;OAGG;IACH,gBAFa,QAAQ,IAAI,CAAC,CAUzB;IAED;;;OAGG;IACH,WAFW,OAAO,QAIjB;IAED,cAEC;IAED;;;OAGG;IACH,kBAFW,MAAM,QA2BhB;IAED;;;OAGG;IACH,cAFa,OAAO,CA2CnB;IAED;;;OAGG;IACH,mBAFW,MAAM,QA6BhB;IAED,eAOC;IAED;;;OAGG;IACH,0BAFW,MAAM,EAAE,QA2ClB;CACJ;mBA9OkB,uCAAuC"}
|
|
@@ -4,8 +4,12 @@ export class AnimationBehavior extends Behavior<any> {
|
|
|
4
4
|
* @param {AnimationTrackPlayback} animation
|
|
5
5
|
*/
|
|
6
6
|
constructor(animation: AnimationTrackPlayback);
|
|
7
|
+
/**
|
|
8
|
+
*
|
|
9
|
+
* @type {AnimationTrackPlayback}
|
|
10
|
+
*/
|
|
7
11
|
animation: AnimationTrackPlayback;
|
|
8
|
-
initialize(): void;
|
|
12
|
+
initialize(_ignore_: any): void;
|
|
9
13
|
}
|
|
10
14
|
import { Behavior } from "../../../intelligence/behavior/Behavior.js";
|
|
11
15
|
//# sourceMappingURL=AnimationBehavior.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnimationBehavior.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/animation/keyed2/behavior/AnimationBehavior.js"],"names":[],"mappings":"AAGA;IACI;;;OAGG;IACH,+
|
|
1
|
+
{"version":3,"file":"AnimationBehavior.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/animation/keyed2/behavior/AnimationBehavior.js"],"names":[],"mappings":"AAGA;IACI;;;OAGG;IACH,+CAOC;IALG;;;OAGG;IACH,kCAA0B;IAqB9B,gCAEC;CACJ;yBAtCwB,4CAA4C"}
|
|
@@ -8,6 +8,10 @@ export class AnimationBehavior extends Behavior {
|
|
|
8
8
|
*/
|
|
9
9
|
constructor(animation) {
|
|
10
10
|
super();
|
|
11
|
+
/**
|
|
12
|
+
*
|
|
13
|
+
* @type {AnimationTrackPlayback}
|
|
14
|
+
*/
|
|
11
15
|
this.animation = animation;
|
|
12
16
|
}
|
|
13
17
|
|
|
@@ -18,16 +22,18 @@ export class AnimationBehavior extends Behavior {
|
|
|
18
22
|
* @returns {BehaviorStatus}
|
|
19
23
|
*/
|
|
20
24
|
tick(timeDelta) {
|
|
21
|
-
this.animation
|
|
25
|
+
const animation = this.animation;
|
|
22
26
|
|
|
23
|
-
|
|
27
|
+
animation.advance(timeDelta);
|
|
28
|
+
|
|
29
|
+
if (animation.position >= animation.track.timeEnd && !animation.loop) {
|
|
24
30
|
return BehaviorStatus.Succeeded;
|
|
25
31
|
}
|
|
26
32
|
|
|
27
33
|
return BehaviorStatus.Running;
|
|
28
34
|
}
|
|
29
35
|
|
|
30
|
-
initialize() {
|
|
36
|
+
initialize(_ignore_) {
|
|
31
37
|
this.animation.setPosition(this.animation.track.timeStart);
|
|
32
38
|
}
|
|
33
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Name.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/name/Name.js"],"names":[],"mappings":";AAEA;
|
|
1
|
+
{"version":3,"file":"Name.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/name/Name.js"],"names":[],"mappings":";AAEA;IASI;;;OAGG;IACH,sBAFa,MAAM,CAIlB;IAED;;;;OAIG;IACH,+CAFa,MAAM,CAIlB;IAED,cAMC;CACJ;;;;2BAnC0B,uCAAuC"}
|
|
@@ -1,56 +1,178 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Described position/rotation/scale in 3d space
|
|
3
|
+
* @class
|
|
4
|
+
*/
|
|
5
|
+
export class Transform {
|
|
6
|
+
/**
|
|
7
|
+
*
|
|
8
|
+
* @param json
|
|
9
|
+
* @returns {Transform}
|
|
10
|
+
*/
|
|
11
|
+
static fromJSON(json: any): Transform;
|
|
12
|
+
/**
|
|
13
|
+
*
|
|
14
|
+
* @param {number[]|Float32Array} mat
|
|
15
|
+
* @returns {Transform}
|
|
16
|
+
*/
|
|
17
|
+
static fromMatrix(mat: number[] | Float32Array): Transform;
|
|
18
|
+
/**
|
|
19
|
+
* @deprecated use {@link Quaternion.rotateTowards} instead
|
|
20
|
+
* @param {Quaternion} sourceQuaternion
|
|
21
|
+
* @param {Vector3} targetVector
|
|
22
|
+
* @param {Number} limit
|
|
23
|
+
*/
|
|
24
|
+
static adjustRotation(sourceQuaternion: Quaternion, targetVector: Vector3, limit?: number): void;
|
|
25
|
+
/**
|
|
26
|
+
* @type {Vector3}
|
|
27
|
+
* @readonly
|
|
28
|
+
*/
|
|
29
|
+
readonly position: Vector3;
|
|
30
|
+
/**
|
|
31
|
+
* @type {Quaternion}
|
|
32
|
+
* @readonly
|
|
33
|
+
*/
|
|
34
|
+
readonly rotation: Quaternion;
|
|
35
|
+
/**
|
|
36
|
+
* @type {Vector3}
|
|
37
|
+
* @readonly
|
|
38
|
+
*/
|
|
39
|
+
readonly scale: Vector3;
|
|
40
|
+
/**
|
|
41
|
+
* transform matrix, position, rotation and scale must match, but shear can be different
|
|
42
|
+
* @readonly
|
|
43
|
+
* @type {Float32Array}
|
|
44
|
+
*/
|
|
45
|
+
readonly matrix: Float32Array;
|
|
46
|
+
/**
|
|
47
|
+
* Various bit flags, see {@link TransformFlags}
|
|
48
|
+
* This should generally be accessed through {@link getFlag}/{@link setFlag} instead of modifying the value directly
|
|
49
|
+
* @type {number}
|
|
50
|
+
*/
|
|
51
|
+
flags: number;
|
|
52
|
+
/**
|
|
53
|
+
* Current "forward" direction
|
|
54
|
+
* NOTE that this vector is not live, meaning that if you modify transform, previously-obtained result will no longer be valid
|
|
55
|
+
* @returns {Vector3}
|
|
56
|
+
*/
|
|
57
|
+
get forward(): Vector3;
|
|
58
|
+
/**
|
|
59
|
+
* Current "up" direction
|
|
60
|
+
* @return {Vector3}
|
|
61
|
+
*/
|
|
62
|
+
get up(): Vector3;
|
|
63
|
+
/**
|
|
64
|
+
* Current "right" direction
|
|
65
|
+
* @return {Vector3}
|
|
66
|
+
*/
|
|
67
|
+
get right(): Vector3;
|
|
68
|
+
/**
|
|
69
|
+
* Attach change listener
|
|
70
|
+
* @param {function} handler
|
|
71
|
+
* @param {*} [thisArg]
|
|
72
|
+
*/
|
|
73
|
+
subscribe(handler: Function, thisArg?: any): void;
|
|
74
|
+
/**
|
|
75
|
+
* Disconnect change listener
|
|
76
|
+
* @param {function} handler
|
|
77
|
+
* @param {*} [thisArg]
|
|
78
|
+
*/
|
|
79
|
+
unsubscribe(handler: Function, thisArg?: any): void;
|
|
80
|
+
/**
|
|
81
|
+
*
|
|
82
|
+
* @param {number|TransformFlags} flag
|
|
83
|
+
* @returns {void}
|
|
84
|
+
*/
|
|
85
|
+
setFlag(flag: number | TransformFlags): void;
|
|
86
|
+
/**
|
|
87
|
+
*
|
|
88
|
+
* @param {number|TransformFlags} flag
|
|
89
|
+
* @returns {void}
|
|
90
|
+
*/
|
|
91
|
+
clearFlag(flag: number | TransformFlags): void;
|
|
92
|
+
/**
|
|
93
|
+
*
|
|
94
|
+
* @param {number|TransformFlags} flag
|
|
95
|
+
* @param {boolean} value
|
|
96
|
+
*/
|
|
97
|
+
writeFlag(flag: number | TransformFlags, value: boolean): void;
|
|
98
|
+
/**
|
|
99
|
+
*
|
|
100
|
+
* @param {number|TransformFlags} flag
|
|
101
|
+
* @returns {boolean}
|
|
102
|
+
*/
|
|
103
|
+
getFlag(flag: number | TransformFlags): boolean;
|
|
104
|
+
/**
|
|
105
|
+
* Update {@link matrix} attribute from current position/rotation/scale
|
|
106
|
+
*/
|
|
107
|
+
updateMatrix(): void;
|
|
108
|
+
/**
|
|
109
|
+
*
|
|
110
|
+
* @param {Vector3} target
|
|
111
|
+
* @param {Vector3} [up]
|
|
112
|
+
*/
|
|
113
|
+
lookAt(target: Vector3, up?: Vector3): void;
|
|
114
|
+
fromJSON(json: any): void;
|
|
115
|
+
toJSON(): {
|
|
116
|
+
position: any;
|
|
117
|
+
rotation: any;
|
|
118
|
+
scale: any;
|
|
119
|
+
};
|
|
120
|
+
/**
|
|
121
|
+
*
|
|
122
|
+
* @param {Transform} other
|
|
123
|
+
*/
|
|
124
|
+
copy(other: Transform): void;
|
|
125
|
+
/**
|
|
126
|
+
*
|
|
127
|
+
* @returns {Transform}
|
|
128
|
+
*/
|
|
129
|
+
clone(): Transform;
|
|
130
|
+
/**
|
|
131
|
+
*
|
|
132
|
+
* @param {Transform} other
|
|
133
|
+
* @returns {boolean}
|
|
134
|
+
*/
|
|
135
|
+
equals(other: Transform): boolean;
|
|
136
|
+
/**
|
|
137
|
+
*
|
|
138
|
+
* @returns {number}
|
|
139
|
+
*/
|
|
140
|
+
hash(): number;
|
|
141
|
+
/**
|
|
142
|
+
* Multiply two transforms, result it written into this one
|
|
143
|
+
* @param {Transform} a
|
|
144
|
+
* @param {Transform} b
|
|
145
|
+
*/
|
|
146
|
+
multiplyTransforms(a: Transform, b: Transform): void;
|
|
147
|
+
/**
|
|
148
|
+
*
|
|
149
|
+
* @param {mat4|number[]|Float32Array} matrix
|
|
150
|
+
*/
|
|
151
|
+
fromMatrix4(matrix: mat4 | number[] | Float32Array): void;
|
|
152
|
+
/**
|
|
153
|
+
* Write out the current transform to a supplied container
|
|
154
|
+
* @param {number[]|Float32Array} result
|
|
155
|
+
*/
|
|
156
|
+
toMatrix4(result: number[] | Float32Array): void;
|
|
157
|
+
/**
|
|
158
|
+
* reset transform, resulting transform is an identity matrix
|
|
159
|
+
* - position: [0,0,0]
|
|
160
|
+
* - rotation: [0,0,0,1]
|
|
161
|
+
* - scale: [1,1,1]
|
|
162
|
+
*/
|
|
163
|
+
makeIdentity(): void;
|
|
164
|
+
toString(): string;
|
|
165
|
+
/**
|
|
166
|
+
* @readonly
|
|
167
|
+
* @type {boolean}
|
|
168
|
+
*/
|
|
169
|
+
readonly isTransform: boolean;
|
|
170
|
+
#private;
|
|
171
|
+
}
|
|
172
|
+
export namespace Transform {
|
|
173
|
+
let typeName: string;
|
|
174
|
+
}
|
|
175
|
+
import Vector3 from "../../../core/geom/Vector3.js";
|
|
176
|
+
import Quaternion from "../../../core/geom/Quaternion.js";
|
|
177
|
+
import { TransformFlags } from "./TransformFlags.js";
|
|
178
|
+
//# sourceMappingURL=Transform.d.ts.map
|
|
@@ -53,7 +53,7 @@ export class Transform {
|
|
|
53
53
|
|
|
54
54
|
/**
|
|
55
55
|
* Various bit flags, see {@link TransformFlags}
|
|
56
|
-
* This should generally be accessed through getFlag/setFlag instead of modifying the value directly
|
|
56
|
+
* This should generally be accessed through {@link getFlag}/{@link setFlag} instead of modifying the value directly
|
|
57
57
|
* @type {number}
|
|
58
58
|
*/
|
|
59
59
|
flags = FLAGS_DEFAULT;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransformAttachment.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/transform-attachment/TransformAttachment.js"],"names":[],"mappings":";;;AAaA;IAEI;;;;OAIG;IACH,WAFU,SAAS,CAES;IAE5B;;;OAGG;IACH,QAFU,MAAM,CAEJ;IAEZ;;;OAGG;IACH,OAFU,MAAM,CAEM;IAEtB,mBAEC;IAED
|
|
1
|
+
{"version":3,"file":"TransformAttachment.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/transform-attachment/TransformAttachment.js"],"names":[],"mappings":";;;AAaA;IAEI;;;;OAIG;IACH,WAFU,SAAS,CAES;IAE5B;;;OAGG;IACH,QAFU,MAAM,CAEJ;IAEZ;;;OAGG;IACH,OAFU,MAAM,CAEM;IAEtB,mBAEC;IAED;;;;;;;;MAMC;IAED;;;;aAQC;IAMD;;;OAGG;IACH,4BAEC;IAVD,yBAEC;IAUD;;;;OAIG;IACH,cAHW,MAAM;QAlEjB;;;WAGG;;KA+DuC,GAC7B,IAAI,CAIhB;IAED;;;;OAIG;IACH,gBAHW,MAAM;QA3EjB;;;WAGG;;KAwEuC,GAC7B,IAAI,CAIhB;IAED;;;;OAIG;IACH,gBAHW,MAAM;QApFjB;;;WAGG;;KAiFuC,SAC/B,OAAO,QAQjB;IAED;;;;OAIG;IACH,cAHW,MAAM;QAjGjB;;;WAGG;;KA8FuC,GAC7B,OAAO,CAInB;CAEJ;;;;0BA3GyB,2BAA2B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"two_joint_ik.d.ts","sourceRoot":"","sources":["../../../../../src/engine/physics/inverse_kinematics/two_joint_ik.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"two_joint_ik.d.ts","sourceRoot":"","sources":["../../../../../src/engine/physics/inverse_kinematics/two_joint_ik.js"],"names":[],"mappings":"AA0BA;;;;;;;;;;;GAWG;AACH,gCAVW,OAAO,KACP,OAAO,KACP,OAAO,KACP,OAAO,OACP,MAAM,QACN,UAAU,QACV,UAAU,QACV,UAAU,QACV,UAAU,QAoEpB;oBAtGmB,+BAA+B;uBAD5B,kCAAkC"}
|
|
@@ -1,32 +1,8 @@
|
|
|
1
|
+
import { v3_compute_interior_angle } from "../../../core/geom/3d/v3_compute_interior_angle.js";
|
|
1
2
|
import Quaternion from "../../../core/geom/Quaternion.js";
|
|
2
|
-
import { v3_angle_between } from "../../../core/geom/vec3/v3_angle_between.js";
|
|
3
3
|
import Vector3 from "../../../core/geom/Vector3.js";
|
|
4
4
|
import { clamp } from "../../../core/math/clamp.js";
|
|
5
5
|
|
|
6
|
-
/**
|
|
7
|
-
* Compute interior angle between three points
|
|
8
|
-
* @param {Vector3} a
|
|
9
|
-
* @param {Vector3} b
|
|
10
|
-
* @param {Vector3} c
|
|
11
|
-
* @returns {number} angle in radians
|
|
12
|
-
*/
|
|
13
|
-
function computeInteriorAngle(a, b, c) {
|
|
14
|
-
//compute AB delta
|
|
15
|
-
const d_ab_x = a.x - b.x;
|
|
16
|
-
const d_ab_y = a.y - b.y;
|
|
17
|
-
const d_ab_z = a.z - b.z;
|
|
18
|
-
|
|
19
|
-
//compute CB delta
|
|
20
|
-
const d_cb_x = c.x - b.x;
|
|
21
|
-
const d_cb_y = c.y - b.y;
|
|
22
|
-
const d_cb_z = c.z - b.z;
|
|
23
|
-
|
|
24
|
-
return v3_angle_between(
|
|
25
|
-
d_ab_x, d_ab_y, d_ab_z,
|
|
26
|
-
d_cb_x, d_cb_y, d_cb_z,
|
|
27
|
-
)
|
|
28
|
-
}
|
|
29
|
-
|
|
30
6
|
const d = new Vector3();
|
|
31
7
|
|
|
32
8
|
const delta_ca = new Vector3();
|
|
@@ -46,6 +22,8 @@ const axis0_la = new Vector3();
|
|
|
46
22
|
const axis0_lb = new Vector3();
|
|
47
23
|
const axis1_la = new Vector3();
|
|
48
24
|
|
|
25
|
+
// TODO: investigate https://github.com/guillaumeblanc/ozz-animation/blob/master/src/animation/runtime/ik_two_bone_job.cc
|
|
26
|
+
|
|
49
27
|
/**
|
|
50
28
|
* Based on http://theorangeduck.com/page/simple-two-joint
|
|
51
29
|
* @param {Vector3} a Root bone position
|
|
@@ -74,9 +52,9 @@ export function two_joint_ik(
|
|
|
74
52
|
const lat = clamp(t.distanceTo(a), eps, maximum_extension);
|
|
75
53
|
|
|
76
54
|
//compute current interior angles
|
|
77
|
-
const ac_ab_0 =
|
|
78
|
-
const ba_bc_0 =
|
|
79
|
-
const ac_at_0 =
|
|
55
|
+
const ac_ab_0 = v3_compute_interior_angle(c, a, b);
|
|
56
|
+
const ba_bc_0 = v3_compute_interior_angle(a, b, c);
|
|
57
|
+
const ac_at_0 = v3_compute_interior_angle(c, a, t);
|
|
80
58
|
|
|
81
59
|
// Using the cosine rule to compute desired interior angles
|
|
82
60
|
const length_at_sqr = lat * lat;
|