@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.
Files changed (43) hide show
  1. package/editor/tools/v2/TransformControlsGizmo.js +2 -2
  2. package/editor/tools/v2/TransformControlsPlane.js +5 -1
  3. package/package.json +1 -1
  4. package/src/core/color/rgb_to_rgbe9995.d.ts +10 -0
  5. package/src/core/color/rgb_to_rgbe9995.d.ts.map +1 -0
  6. package/src/core/color/rgb_to_rgbe9995.js +51 -0
  7. package/src/core/color/rgbe9995_to_rgb.d.ts +9 -0
  8. package/src/core/color/rgbe9995_to_rgb.d.ts.map +1 -0
  9. package/src/core/color/rgbe9995_to_rgb.js +25 -0
  10. package/src/core/geom/2d/aabb/AABB2.d.ts.map +1 -1
  11. package/src/core/geom/2d/aabb/AABB2.js +46 -9
  12. package/src/core/geom/3d/aabb/AABB3.d.ts.map +1 -1
  13. package/src/core/geom/3d/aabb/AABB3.js +48 -1
  14. package/src/core/geom/3d/mat4/allocate_m4.d.ts +1 -1
  15. package/src/core/geom/3d/mat4/allocate_m4.d.ts.map +1 -1
  16. package/src/core/geom/3d/mat4/allocate_m4.js +7 -33
  17. package/src/core/geom/3d/v3_compute_interior_angle.d.ts +22 -0
  18. package/src/core/geom/3d/v3_compute_interior_angle.d.ts.map +1 -0
  19. package/src/core/geom/3d/v3_compute_interior_angle.js +26 -0
  20. package/src/core/geom/ConicRay.d.ts +2 -2
  21. package/src/core/geom/ConicRay.d.ts.map +1 -1
  22. package/src/core/geom/ConicRay.js +14 -5
  23. package/src/core/geom/Quaternion.d.ts.map +1 -1
  24. package/src/core/geom/Quaternion.js +24 -18
  25. package/src/core/geom/Vector3.d.ts.map +1 -1
  26. package/src/core/geom/Vector3.js +4 -4
  27. package/src/core/math/epsilonEquals.d.ts.map +1 -1
  28. package/src/core/math/epsilonEquals.js +1 -0
  29. package/src/core/model/ObservedString.d.ts +64 -17
  30. package/src/engine/animation/keyed2/AnimationTrackPlayback.d.ts +5 -0
  31. package/src/engine/animation/keyed2/AnimationTrackPlayback.d.ts.map +1 -1
  32. package/src/engine/animation/keyed2/AnimationTrackPlayback.js +8 -0
  33. package/src/engine/animation/keyed2/behavior/AnimationBehavior.d.ts +5 -1
  34. package/src/engine/animation/keyed2/behavior/AnimationBehavior.d.ts.map +1 -1
  35. package/src/engine/animation/keyed2/behavior/AnimationBehavior.js +9 -3
  36. package/src/engine/ecs/animation/AnimationClip.d.ts +1 -1
  37. package/src/engine/ecs/name/Name.d.ts +0 -5
  38. package/src/engine/ecs/name/Name.d.ts.map +1 -1
  39. package/src/engine/ecs/transform/Transform.d.ts +178 -56
  40. package/src/engine/ecs/transform/Transform.js +1 -1
  41. package/src/engine/ecs/transform-attachment/TransformAttachment.d.ts.map +1 -1
  42. package/src/engine/physics/inverse_kinematics/two_joint_ik.d.ts.map +1 -1
  43. 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
@@ -5,7 +5,7 @@
5
5
  "description": "Fully featured ECS game engine written in JavaScript",
6
6
  "type": "module",
7
7
  "author": "Alexander Goldring",
8
- "version": "2.119.83",
8
+ "version": "2.119.85",
9
9
  "main": "build/meep.module.js",
10
10
  "module": "build/meep.module.js",
11
11
  "exports": {
@@ -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,gEA+BC;IApBG;;;OAGG;IACH,WAAY;IACZ;;;OAGG;IACH,WAAY;IACZ;;;OAGG;IACH,WAAY;IACZ;;;OAGG;IACH,WAAY;IAGhB;;;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;;oBA/nBK,kBAAkB;AAulBtC;;;;;;;GAOG;AACH,gDANW,KAAK,MACL,KAAK,MACL,OAAO,MACP,OAAO,GACL,OAAO,CAsBnB"}
1
+ {"version":3,"file":"AABB2.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/2d/aabb/AABB2.js"],"names":[],"mappings":";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 {Number} [x0=0]
20
- * @param {Number} [y0=0]
21
- * @param {Number} [x1=0]
22
- * @param {Number} [y1=0]
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(x0 = 0, y0 = 0, x1 = 0, y1 = 0) {
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 {Number}
43
+ * @type {number}
39
44
  */
40
45
  this.x0 = x0;
41
46
  /**
42
47
  *
43
- * @type {Number}
48
+ * @type {number}
44
49
  */
45
50
  this.y0 = y0;
46
51
  /**
47
52
  *
48
- * @type {Number}
53
+ * @type {number}
49
54
  */
50
55
  this.x1 = x1;
51
56
  /**
52
57
  *
53
- * @type {Number}
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":"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"}
1
+ {"version":3,"file":"AABB3.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/aabb/AABB3.js"],"names":[],"mappings":"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"}
@@ -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,5 +1,5 @@
1
1
  /**
2
- * custom Float32Array allocator, allocated memory in continuous chunks
2
+ * custom Float32Array allocator
3
3
  * @returns {Float32Array}
4
4
  */
5
5
  export function allocate_m4(): Float32Array;
@@ -1 +1 @@
1
- {"version":3,"file":"allocate_m4.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/mat4/allocate_m4.js"],"names":[],"mappings":"AAuBA;;;GAGG;AACH,+BAFa,YAAY,CAgBxB"}
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, allocated memory in continuous chunks
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
- // initialize matrix
37
- result.set(MATRIX_4_IDENTITY);
7
+ const result = new Float32Array(16);
38
8
 
39
- transform_bucket_cursor++;
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} angle
12
+ * @param {number} half_angle
13
13
  * @returns {ConicRay}
14
14
  */
15
- static fromScalars(x: number, y: number, z: number, angle: number): ConicRay;
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;IA4KI;;;;;;;OAOG;IACH,sBANW,MAAM,KACN,MAAM,KACN,MAAM,SACN,MAAM,GACJ,QAAQ,CAWpB;IA3LD;;;;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,CAInB;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;CAoBJ;oBAtMmB,cAAc"}
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 && this.direction.equals(other.direction);
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} angle
193
+ * @param {number} half_angle
192
194
  * @returns {ConicRay}
193
195
  */
194
- static fromScalars(x, y, z, angle) {
195
- assert.greaterThanOrEqual(angle, 0, 'angle must be non-negative');
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 = 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":"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"}
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
- * @deprecated
888
- * @param {Matrix4} m
887
+ * @param {number[]} m4x4
889
888
  */
890
- setFromRotationMatrix(m) {
891
- const e = m.elements;
889
+ setFromRotationMatrix(m4x4) {
890
+ assert.defined(m4x4,'m4x4');
891
+ assert.isArrayLike(m4x4,'m4x4');
892
892
 
893
893
  this.__setFromRotationMatrix(
894
- e[0], e[4], e[8],
895
- e[1], e[5], e[9],
896
- e[2], e[6], e[10]
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 omega, cosom, sinom, scale0, scale1;
1046
+ let cos_angle, scale0, scale1;
1045
1047
 
1046
1048
  // calc cosine
1047
- cosom = ax * bx + ay * by + az * bz + aw * bw;
1049
+ cos_angle = ax * bx + ay * by + az * bz + aw * bw;
1048
1050
 
1049
1051
  // adjust signs (if necessary)
1050
- if (cosom < 0.0) {
1051
- cosom = -cosom;
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 - cosom) > EPSILON) {
1061
+ if ((1.0 - cos_angle) > EPSILON) {
1059
1062
  // standard case (slerp)
1060
- omega = Math.acos(cosom);
1061
- sinom = sin(omega);
1062
- scale0 = sin((1.0 - t) * omega) / sinom;
1063
- scale1 = sin(t * omega) / sinom;
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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"}
@@ -460,13 +460,13 @@ class Vector3 {
460
460
  }
461
461
 
462
462
  /**
463
- * @param {number} [squaredError]
463
+ * @param {number} [squared_error]
464
464
  * @return {boolean}
465
465
  */
466
- isNormalized(squaredError = 1e-5) {
467
- const lengthSq = this.lengthSqr();
466
+ isNormalized(squared_error = 1e-5) {
467
+ const length_sqr = this.lengthSqr();
468
468
 
469
- return epsilonEquals(lengthSq, 1, squaredError);
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,CASnB"}
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
- import Signal from "../events/signal/Signal";
2
-
3
- export default class ObservedString {
4
- get onChanged(): Signal
5
-
6
- constructor(value: string)
7
-
8
- set(value: string): void
9
-
10
- copy(other: ObservedString): void
11
-
12
- equals(other: ObservedString): boolean
13
-
14
- hash(): number
15
-
16
- getValue(): string
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
@@ -23,6 +23,11 @@ declare class AnimationTrackPlayback {
23
23
  on: {
24
24
  ended: Signal<any, any, any, any, any, any, any, any>;
25
25
  };
26
+ /**
27
+ *
28
+ * @returns {boolean}
29
+ */
30
+ get loop(): boolean;
26
31
  /**
27
32
  *
28
33
  * @returns {Promise<void>}
@@ -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;mBAtOkB,uCAAuC"}
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"}
@@ -36,6 +36,14 @@ class AnimationTrackPlayback {
36
36
  this.setPosition(0);
37
37
  }
38
38
 
39
+ /**
40
+ *
41
+ * @returns {boolean}
42
+ */
43
+ get loop() {
44
+ return this.__loop;
45
+ }
46
+
39
47
  /**
40
48
  *
41
49
  * @returns {Promise<void>}
@@ -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,+CAGC;IADG,kCAA0B;IAmB9B,mBAEC;CACJ;yBAhCwB,4CAA4C"}
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.advance(timeDelta);
25
+ const animation = this.animation;
22
26
 
23
- if (this.animation.position >= this.animation.track.timeEnd && !this.animation.loop) {
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
  }
@@ -35,7 +35,7 @@ export class AnimationClip {
35
35
  getFlag(v: number | AnimationClipFlag): boolean;
36
36
  fromJSON(json: any): void;
37
37
  toJSON(): {
38
- name: any;
38
+ name: string;
39
39
  repeatCount: number;
40
40
  weight: any;
41
41
  timeScale: any;
@@ -1,10 +1,5 @@
1
1
  export default Name;
2
2
  declare class Name extends ObservedString {
3
- /**
4
- *
5
- * @param {string} [value]
6
- */
7
- constructor(value?: string);
8
3
  /**
9
4
  *
10
5
  * @returns {string}
@@ -1 +1 @@
1
- {"version":3,"file":"Name.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/name/Name.js"],"names":[],"mappings":";AAEA;IACI;;;OAGG;IACH,oBAFW,MAAM,EAIhB;IAED;;;OAGG;IACH,sBAFa,MAAM,CAIlB;IAED;;;;OAIG;IACH,+CAFa,MAAM,CAIlB;IAED,cAMC;CACJ;;;;2BAnC0B,uCAAuC"}
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
- import Quaternion from "../../../core/geom/Quaternion";
2
- import Vector3 from "../../../core/geom/Vector3";
3
-
4
- export class Transform {
5
- readonly position: Vector3
6
- readonly rotation: Quaternion
7
- readonly scale: Vector3
8
-
9
- readonly forward: Readonly<Vector3>
10
- readonly up: Readonly<Vector3>
11
- readonly right: Readonly<Vector3>
12
-
13
- flags: number
14
-
15
- public readonly matrix: ArrayLike<number>
16
-
17
- public lookAt(target: Vector3, up?: Vector3): void
18
-
19
- static fromJSON(json: {
20
- position?: number | { x: number, y: number, z: number },
21
- scale?: number | { x: number, y: number, z: number },
22
- rotation?: { x: number, y: number, z: number, w: number },
23
- }): Transform
24
-
25
- fromJSON(json: {
26
- position?: number | { x: number, y: number, z: number },
27
- scale?: number | { x: number, y: number, z: number },
28
- rotation?: { x: number, y: number, z: number, w: number },
29
- }): void
30
-
31
- toJSON(): any
32
-
33
- copy(other: Transform): void
34
-
35
- clone(): Transform
36
-
37
- equals(other: Transform): boolean
38
-
39
- hash(): number
40
-
41
- toMatrix4(result: ArrayLike<number>): void
42
-
43
- fromMatrix4(matrix: ArrayLike<number>): void
44
-
45
- multiplyTransforms(a: Transform, b: Transform): void
46
-
47
- makeIdentity(): void
48
-
49
- setFlag(flag: number): void
50
-
51
- getFlag(flag: number): boolean
52
-
53
- clearFlag(flag: number): void
54
-
55
- writeFlag(flag: number, value: boolean): void
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;;;;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
+ {"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":"AAgDA;;;;;;;;;;;GAWG;AACH,gCAVW,OAAO,KACP,OAAO,KACP,OAAO,KACP,OAAO,OACP,MAAM,QACN,UAAU,QACV,UAAU,QACV,UAAU,QACV,UAAU,QAoEpB;oBA5HmB,+BAA+B;uBAF5B,kCAAkC"}
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 = computeInteriorAngle(c, a, b);
78
- const ba_bc_0 = computeInteriorAngle(a, b, c);
79
- const ac_at_0 = computeInteriorAngle(c, a, t);
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;