@woosh/meep-engine 2.110.7 → 2.110.9

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 (189) hide show
  1. package/build/bundle-worker-terrain.js +1 -1
  2. package/build/meep.cjs +115 -119
  3. package/build/meep.min.js +1 -1
  4. package/build/meep.module.js +115 -119
  5. package/editor/tools/v2/TransformControls.js +11 -6
  6. package/package.json +2 -1
  7. package/src/core/UUID.d.ts +3 -0
  8. package/src/core/UUID.d.ts.map +1 -1
  9. package/src/core/UUID.js +9 -7
  10. package/src/core/collection/array/arraySetDiff.d.ts.map +1 -1
  11. package/src/core/collection/array/arraySetDiff.js +0 -1
  12. package/src/core/collection/array/binarySearchHighIndex.d.ts.map +1 -1
  13. package/src/core/collection/array/binarySearchHighIndex.js +7 -1
  14. package/src/core/collection/array/computeHashArray.d.ts.map +1 -1
  15. package/src/core/collection/array/computeHashArray.js +3 -2
  16. package/src/core/collection/array/fastArrayEquals.d.ts +1 -0
  17. package/src/core/collection/array/fastArrayEquals.d.ts.map +1 -1
  18. package/src/core/collection/array/fastArrayEquals.js +1 -0
  19. package/src/core/collection/array/isArrayEqual.d.ts.map +1 -1
  20. package/src/core/collection/array/isArrayEqual.js +9 -12
  21. package/src/core/collection/array/isArrayEqual.spec.d.ts +2 -0
  22. package/src/core/collection/array/isArrayEqual.spec.d.ts.map +1 -0
  23. package/src/core/collection/array/isArrayEqual.spec.js +25 -0
  24. package/src/core/collection/array/typed/is_typed_array_equals.d.ts.map +1 -1
  25. package/src/core/collection/array/typed/is_typed_array_equals.js +1 -0
  26. package/src/core/function/makeSequenceLoop.d.ts.map +1 -0
  27. package/src/core/geom/3d/shape/AbstractShape3D.d.ts.map +1 -1
  28. package/src/core/geom/3d/shape/AbstractShape3D.js +14 -0
  29. package/src/core/geom/3d/shape/PointShape3D.d.ts +9 -0
  30. package/src/core/geom/3d/shape/PointShape3D.d.ts.map +1 -0
  31. package/src/core/geom/3d/shape/PointShape3D.js +14 -0
  32. package/src/core/geom/3d/shape/TransformedShape3D.d.ts.map +1 -1
  33. package/src/core/geom/3d/shape/TransformedShape3D.js +26 -8
  34. package/src/core/geom/3d/shape/UnionShape3D.d.ts.map +1 -1
  35. package/src/core/geom/3d/shape/UnionShape3D.js +33 -4
  36. package/src/core/geom/3d/shape/UnitCubeShape3D.d.ts.map +1 -1
  37. package/src/core/geom/3d/shape/UnitCubeShape3D.js +13 -6
  38. package/src/core/geom/3d/shape/UnitSphereShape3D.d.ts.map +1 -1
  39. package/src/core/geom/3d/shape/UnitSphereShape3D.js +10 -0
  40. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.d.ts +15 -8
  41. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.d.ts.map +1 -1
  42. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.js +33 -9
  43. package/src/core/geom/3d/tetrahedra/delaunay/compute_delaunay_tetrahedral_mesh.d.ts +1 -1
  44. package/src/core/geom/3d/tetrahedra/delaunay/compute_delaunay_tetrahedral_mesh.d.ts.map +1 -1
  45. package/src/core/geom/3d/tetrahedra/delaunay/compute_delaunay_tetrahedral_mesh.js +7 -7
  46. package/src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_build_from_grid.spec.d.ts +2 -0
  47. package/src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_build_from_grid.spec.d.ts.map +1 -0
  48. package/src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_build_from_grid.spec.js +38 -0
  49. package/src/core/geom/3d/tetrahedra/prototypeTetrahedraBuilder.js +42 -39
  50. package/src/core/geom/3d/v3_compute_triangle_normal.js +1 -1
  51. package/src/core/geom/3d/v3_negate_array.d.ts +9 -0
  52. package/src/core/geom/3d/v3_negate_array.d.ts.map +1 -0
  53. package/src/core/geom/3d/v3_negate_array.js +16 -0
  54. package/src/core/geom/Quaternion.d.ts.map +1 -1
  55. package/src/core/geom/Quaternion.js +30 -77
  56. package/src/core/geom/Vector3.d.ts +4 -0
  57. package/src/core/geom/Vector3.js +4 -4
  58. package/src/core/geom/vec3/v3_cross_array.d.ts +11 -0
  59. package/src/core/geom/vec3/v3_cross_array.d.ts.map +1 -0
  60. package/src/core/geom/vec3/v3_cross_array.js +31 -0
  61. package/src/core/geom/vec3/v3_displace_in_direction.js +3 -2
  62. package/src/core/geom/vec3/v3_displace_in_direction_array.d.ts +12 -0
  63. package/src/core/geom/vec3/v3_displace_in_direction_array.d.ts.map +1 -0
  64. package/src/core/geom/vec3/v3_displace_in_direction_array.js +22 -0
  65. package/src/core/geom/vec3/v3_dot_array_array.d.ts.map +1 -1
  66. package/src/core/geom/vec3/v3_dot_array_array.js +4 -1
  67. package/src/core/geom/vec3/v3_normalize_array.d.ts +3 -3
  68. package/src/core/geom/vec3/v3_normalize_array.d.ts.map +1 -1
  69. package/src/core/geom/vec3/v3_normalize_array.js +3 -3
  70. package/src/core/math/copysign.d.ts +1 -1
  71. package/src/core/math/copysign.js +1 -1
  72. package/src/core/math/epsilonEquals.d.ts.map +1 -1
  73. package/src/core/math/epsilonEquals.js +3 -2
  74. package/src/core/math/linalg/README.md +1 -1
  75. package/src/core/math/random/randomGaussian.spec.js +1 -1
  76. package/src/core/math/spline/spline_hermite3.d.ts +1 -1
  77. package/src/core/math/spline/spline_hermite3.js +1 -1
  78. package/src/core/process/delay.d.ts +6 -1
  79. package/src/core/process/delay.d.ts.map +1 -1
  80. package/src/core/process/delay.js +6 -1
  81. package/src/core/process/undo/Mark.d.ts +5 -5
  82. package/src/core/process/undo/Mark.d.ts.map +1 -1
  83. package/src/core/process/undo/Mark.js +6 -5
  84. package/src/core/process/worker/WorkerBuilder.d.ts +13 -2
  85. package/src/core/process/worker/WorkerBuilder.d.ts.map +1 -1
  86. package/src/core/process/worker/WorkerBuilder.js +9 -1
  87. package/src/core/process/worker/WorkerProxy.d.ts +16 -6
  88. package/src/core/process/worker/WorkerProxy.d.ts.map +1 -1
  89. package/src/core/process/worker/WorkerProxy.js +24 -5
  90. package/src/core/process/worker/extractTransferables.d.ts.map +1 -1
  91. package/src/core/process/worker/extractTransferables.js +3 -1
  92. package/src/engine/EngineHarness.d.ts +7 -1
  93. package/src/engine/EngineHarness.d.ts.map +1 -1
  94. package/src/engine/EngineHarness.js +12 -1
  95. package/src/engine/animation/clip/AnimationTrack.d.ts.map +1 -1
  96. package/src/engine/animation/clip/AnimationTrack.js +3 -0
  97. package/src/engine/animation/clip/bind_property_writer.d.ts +2 -2
  98. package/src/engine/animation/clip/bind_property_writer.d.ts.map +1 -1
  99. package/src/engine/animation/clip/bind_property_writer.js +22 -13
  100. package/src/engine/animation/clip/curve_from_track_data.d.ts.map +1 -1
  101. package/src/engine/animation/clip/curve_from_track_data.js +9 -1
  102. package/src/engine/animation/clip/ecd_bind_animation_curve.d.ts.map +1 -1
  103. package/src/engine/animation/clip/ecd_bind_animation_curve.js +6 -5
  104. package/src/engine/animation/curve/AnimationCurve.d.ts +21 -0
  105. package/src/engine/animation/curve/AnimationCurve.d.ts.map +1 -1
  106. package/src/engine/animation/curve/AnimationCurve.js +43 -15
  107. package/src/engine/animation/curve/AnimationCurve.spec.js +67 -0
  108. package/src/engine/animation/curve/Keyframe.d.ts +24 -3
  109. package/src/engine/animation/curve/Keyframe.d.ts.map +1 -1
  110. package/src/engine/animation/curve/Keyframe.js +49 -3
  111. package/src/engine/animation/curve/Keyframe.spec.js +11 -0
  112. package/src/engine/animation/curve/animation_curve_compute_aabb.d.ts +7 -0
  113. package/src/engine/animation/curve/animation_curve_compute_aabb.d.ts.map +1 -0
  114. package/src/engine/animation/curve/{compute_curve_aabb.js → animation_curve_compute_aabb.js} +1 -1
  115. package/src/engine/animation/curve/animation_curve_optimize.d.ts +8 -0
  116. package/src/engine/animation/curve/animation_curve_optimize.d.ts.map +1 -0
  117. package/src/engine/animation/curve/animation_curve_optimize.js +89 -0
  118. package/src/engine/animation/curve/animation_curve_optimize.spec.d.ts +2 -0
  119. package/src/engine/animation/curve/animation_curve_optimize.spec.d.ts.map +1 -0
  120. package/src/engine/animation/curve/animation_curve_optimize.spec.js +50 -0
  121. package/src/engine/animation/curve/draw/build_curve_editor.js +2 -2
  122. package/src/engine/animation/curve/evaluate_two_key_curve.d.ts +9 -0
  123. package/src/engine/animation/curve/evaluate_two_key_curve.d.ts.map +1 -0
  124. package/src/engine/animation/curve/evaluate_two_key_curve.js +23 -0
  125. package/src/engine/animation/curve/prototypeGLTF.js +14 -14
  126. package/src/engine/asset/loaders/material/computeTextureEquality.d.ts.map +1 -1
  127. package/src/engine/asset/loaders/material/computeTextureEquality.js +4 -6
  128. package/src/engine/asset/loaders/material/computeTextureHash.d.ts.map +1 -1
  129. package/src/engine/asset/loaders/material/computeTextureHash.js +6 -6
  130. package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescription.d.ts +6 -1
  131. package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescription.d.ts.map +1 -1
  132. package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescription.js +11 -6
  133. package/src/engine/ecs/guid/GUIDSerializationAdapter.spec.js +5 -5
  134. package/src/engine/ecs/guid/{GUID.d.ts → UUID.d.ts} +17 -12
  135. package/src/engine/ecs/guid/UUID.d.ts.map +1 -0
  136. package/src/engine/ecs/guid/{GUID.js → UUID.js} +35 -12
  137. package/src/engine/ecs/guid/UUID.spec.d.ts +2 -0
  138. package/src/engine/ecs/guid/UUID.spec.d.ts.map +1 -0
  139. package/src/engine/ecs/guid/{GUID.spec.js → UUID.spec.js} +18 -12
  140. package/src/engine/ecs/guid/UUIDSerializationAdapter.d.ts +18 -0
  141. package/src/engine/ecs/guid/UUIDSerializationAdapter.d.ts.map +1 -0
  142. package/src/engine/ecs/guid/{GUIDSerializationAdapter.js → UUIDSerializationAdapter.js} +5 -5
  143. package/src/engine/ecs/ik/InverseKinematics.js +3 -3
  144. package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.d.ts.map +1 -1
  145. package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.js +1 -140
  146. package/src/engine/graphics/ecs/trail2d/Trail2DSystem.js +1 -1
  147. package/src/engine/graphics/material/manager/MaterialManager.d.ts.map +1 -1
  148. package/src/engine/graphics/texture/isImageBitmap.d.ts +7 -0
  149. package/src/engine/graphics/texture/isImageBitmap.d.ts.map +1 -0
  150. package/src/engine/graphics/texture/isImageBitmap.js +12 -0
  151. package/src/engine/graphics/trail/x/RibbonXPlugin.d.ts.map +1 -1
  152. package/src/engine/graphics/trail/x/RibbonXPlugin.js +9 -1
  153. package/src/engine/input/ecs/systems/InputControllerSystem.js +1 -1
  154. package/src/engine/intelligence/blackboard/BlackboardDynamicStorageAdapter.d.ts +1 -1
  155. package/src/engine/intelligence/blackboard/BlackboardDynamicStorageAdapter.js +4 -4
  156. package/src/engine/physics/gjk/expanding_polytope_algorithm.d.ts +13 -0
  157. package/src/engine/physics/gjk/expanding_polytope_algorithm.d.ts.map +1 -0
  158. package/src/engine/physics/gjk/expanding_polytope_algorithm.js +395 -0
  159. package/src/engine/physics/gjk/expanding_polytope_algorithm.spec.d.ts +2 -0
  160. package/src/engine/physics/gjk/expanding_polytope_algorithm.spec.d.ts.map +1 -0
  161. package/src/engine/physics/gjk/expanding_polytope_algorithm.spec.js +46 -0
  162. package/src/engine/physics/inverse_kinematics/fabrik/fabrik3d_solve_primitive.d.ts +18 -0
  163. package/src/engine/physics/inverse_kinematics/fabrik/fabrik3d_solve_primitive.d.ts.map +1 -0
  164. package/src/engine/physics/inverse_kinematics/fabrik/fabrik3d_solve_primitive.js +277 -0
  165. package/src/engine/physics/inverse_kinematics/fabrik/fabrik3d_solve_primitive.spec.d.ts +2 -0
  166. package/src/engine/physics/inverse_kinematics/fabrik/fabrik3d_solve_primitive.spec.d.ts.map +1 -0
  167. package/src/engine/physics/inverse_kinematics/fabrik/fabrik3d_solve_primitive.spec.js +43 -0
  168. package/src/engine/physics/inverse_kinematics/fabrik/fabrik_solve.d.ts +12 -0
  169. package/src/engine/physics/inverse_kinematics/fabrik/fabrik_solve.d.ts.map +1 -0
  170. package/src/engine/physics/inverse_kinematics/fabrik/fabrik_solve.js +100 -0
  171. package/src/engine/physics/inverse_kinematics/fabrik/prototype.d.ts +2 -0
  172. package/src/engine/physics/inverse_kinematics/fabrik/prototype.d.ts.map +1 -0
  173. package/src/engine/physics/inverse_kinematics/fabrik/prototype.js +112 -0
  174. package/src/engine/physics/inverse_kinematics/two_joint_ik.d.ts +16 -0
  175. package/src/engine/physics/inverse_kinematics/two_joint_ik.d.ts.map +1 -0
  176. package/src/engine/physics/inverse_kinematics/two_joint_ik.js +127 -0
  177. package/src/view/elements/DropDownSelectionView.js +2 -2
  178. package/src/view/elements/tiles2d/Tile.d.ts.map +1 -1
  179. package/src/view/elements/tiles2d/Tile.js +2 -3
  180. package/src/core/math/makeSequenceLoop.d.ts.map +0 -1
  181. package/src/engine/animation/curve/compute_curve_aabb.d.ts +0 -7
  182. package/src/engine/animation/curve/compute_curve_aabb.d.ts.map +0 -1
  183. package/src/engine/ecs/guid/GUID.d.ts.map +0 -1
  184. package/src/engine/ecs/guid/GUID.spec.d.ts +0 -2
  185. package/src/engine/ecs/guid/GUID.spec.d.ts.map +0 -1
  186. package/src/engine/ecs/guid/GUIDSerializationAdapter.d.ts +0 -18
  187. package/src/engine/ecs/guid/GUIDSerializationAdapter.d.ts.map +0 -1
  188. /package/src/core/{math → function}/makeSequenceLoop.d.ts +0 -0
  189. /package/src/core/{math → function}/makeSequenceLoop.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"delay.d.ts","sourceRoot":"","sources":["../../../../src/core/process/delay.js"],"names":[],"mappings":"AAAA,qDAIC"}
1
+ {"version":3,"file":"delay.d.ts","sourceRoot":"","sources":["../../../../src/core/process/delay.js"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,kCAHW,MAAM,GACL,QAAQ,OAAO,CAAC,CAM3B"}
@@ -1,4 +1,9 @@
1
- export function delay(timeout_ms) {
1
+ /**
2
+ *
3
+ * @param {number} timeout_ms in milliseconds
4
+ * @return {Promise<unknown>}
5
+ */
6
+ export function delay(timeout_ms) {
2
7
  return new Promise((resolve, reject) => {
3
8
  setTimeout(resolve, timeout_ms);
4
9
  });
@@ -10,16 +10,16 @@ export class Mark {
10
10
  *
11
11
  * @type {number}
12
12
  */
13
- index: number;
13
+ memoryUsage: number;
14
14
  /**
15
15
  *
16
- * @type {D}
16
+ * @type {number}
17
17
  */
18
- description: D;
18
+ index: number;
19
19
  /**
20
20
  *
21
- * @type {number}
21
+ * @type {D}
22
22
  */
23
- memoryUsage: number;
23
+ description: D;
24
24
  }
25
25
  //# sourceMappingURL=Mark.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Mark.d.ts","sourceRoot":"","sources":["../../../../../src/core/process/undo/Mark.js"],"names":[],"mappings":"AAEA;IACI;;;;;OAKG;IACH,mBAJW,MAAM,kBAwBhB;IAjBG;;;OAGG;IACH,OAFU,MAAM,CAEE;IAElB;;;OAGG;IACH,eAA8B;IAE9B;;;OAGG;IACH,aAFU,MAAM,CAEI;CAE3B"}
1
+ {"version":3,"file":"Mark.d.ts","sourceRoot":"","sources":["../../../../../src/core/process/undo/Mark.js"],"names":[],"mappings":"AAEA;IAOI;;;;;OAKG;IACH,mBAJW,MAAM,kBAmBhB;IA3BD;;;OAGG;IACH,aAFU,MAAM,CAEA;IAWZ;;;OAGG;IACH,OAFU,MAAM,CAEE;IAElB;;;OAGG;IACH,eAA8B;CAGrC"}
@@ -1,6 +1,12 @@
1
1
  import { assert } from "../../assert.js";
2
2
 
3
3
  export class Mark {
4
+ /**
5
+ *
6
+ * @type {number}
7
+ */
8
+ memoryUsage = 0;
9
+
4
10
  /**
5
11
  * @template D
6
12
  * @param {number} index
@@ -22,10 +28,5 @@ export class Mark {
22
28
  */
23
29
  this.description = description;
24
30
 
25
- /**
26
- *
27
- * @type {number}
28
- */
29
- this.memoryUsage = 0;
30
31
  }
31
32
  }
@@ -1,8 +1,19 @@
1
1
  export default WorkerBuilder;
2
2
  declare class WorkerBuilder {
3
- imports: any[];
3
+ /**
4
+ *
5
+ * @type {string[]}
6
+ */
7
+ imports: string[];
4
8
  methods: {};
5
- functions: any[];
9
+ /**
10
+ *
11
+ * @type {{f:function, name:string}[]}
12
+ */
13
+ functions: {
14
+ f: Function;
15
+ name: string;
16
+ }[];
6
17
  preamble: LineBuilder;
7
18
  /**
8
19
  *
@@ -1 +1 @@
1
- {"version":3,"file":"WorkerBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/core/process/worker/WorkerBuilder.js"],"names":[],"mappings":";AAQA;IAEI,eAAa;IACb,YAAa;IACb,iBAAe;IACf,sBAA6B;IAE7B;;;OAGG;IACH,cAFW,MAAM,QAIhB;IAED;;;;OAIG;IACH,gBAHW,MAAM,UACN,WAAS,MAAM,QAIzB;IAED;;;;;OAKG;IACH,6CAKC;IAED;;;OAGG;IACH,mBAFW,MAAM,QAMhB;IAED;;;OAGG;IACH,SAFa,WAAW,CAyGvB;CACJ;wBAjKuB,8BAA8B;wBAC9B,kBAAkB"}
1
+ {"version":3,"file":"WorkerBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/core/process/worker/WorkerBuilder.js"],"names":[],"mappings":";AAQA;IAEI;;;OAGG;IACH,SAFU,MAAM,EAAE,CAEL;IACb,YAAa;IACb;;;OAGG;IACH,WAFU;QAAC,CAAC,WAAU;QAAC,MAAK,MAAM,CAAA;KAAC,EAAE,CAEtB;IACf,sBAA6B;IAE7B;;;OAGG;IACH,cAFW,MAAM,QAIhB;IAED;;;;OAIG;IACH,gBAHW,MAAM,UACN,WAAS,MAAM,QAIzB;IAED;;;;;OAKG;IACH,6CAKC;IAED;;;OAGG;IACH,mBAFW,MAAM,QAMhB;IAED;;;OAGG;IACH,SAFa,WAAW,CAyGvB;CACJ;wBAzKuB,8BAA8B;wBAC9B,kBAAkB"}
@@ -8,8 +8,16 @@ const RxMatchFunctionName = /(function\s*)([a-zA-Z0-9_]+)?(\s*\([^\]]*\)\s*\{.*)
8
8
 
9
9
  class WorkerBuilder {
10
10
 
11
+ /**
12
+ *
13
+ * @type {string[]}
14
+ */
11
15
  imports = [];
12
16
  methods = {};
17
+ /**
18
+ *
19
+ * @type {{f:function, name:string}[]}
20
+ */
13
21
  functions = [];
14
22
  preamble = new LineBuilder();
15
23
 
@@ -115,7 +123,7 @@ class WorkerBuilder {
115
123
  result.push(obj);
116
124
  } else if (obj.buffer instanceof ArrayBuffer) {
117
125
  result.push(obj.buffer);
118
- } else if (obj instanceof ImageBitmap) {
126
+ } else if (typeof ImageBitmap !== "undefined" && obj instanceof ImageBitmap) {
119
127
  result.push(obj);
120
128
  } else {
121
129
  for (var i in obj) {
@@ -1,7 +1,12 @@
1
1
  export default WorkerProxy;
2
2
  declare class WorkerProxy {
3
3
  constructor(url: any, methods: any);
4
- __pending: {};
4
+ /**
5
+ *
6
+ * @type {{}}
7
+ * @private
8
+ */
9
+ private __pending;
5
10
  __isRunning: boolean;
6
11
  /**
7
12
  *
@@ -20,12 +25,17 @@ declare class WorkerProxy {
20
25
  /**
21
26
  * Invoke a given method on the worker, as defined by the `WorkerBuilder`
22
27
  * @template T
23
- * @param {number} name Method's name
28
+ * @param {string} name Method's name
24
29
  * @param {Array} args
25
30
  * @return {Promise<T>} eventual result of the invoked method
26
31
  */
27
- $submitRequest<T>(name: number, args: any[]): Promise<T>;
28
- __makeMethod(name: any): void;
32
+ $submitRequest<T>(name: string, args: any[]): Promise<T>;
33
+ /**
34
+ *
35
+ * @param {string} name
36
+ * @private
37
+ */
38
+ private __makeMethod;
29
39
  __generateAPI(): void;
30
40
  /**
31
41
  *
@@ -38,10 +48,10 @@ declare class WorkerProxy {
38
48
  /**
39
49
  *
40
50
  * @param {number} id
41
- * @param {string} methodName
51
+ * @param {string} method_name
42
52
  * @returns {boolean}
43
53
  */
44
- cancelRequest(id: number, methodName: string): boolean;
54
+ cancelRequest(id: number, method_name: string): boolean;
45
55
  sendPendingRequests(): void;
46
56
  start(): void;
47
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"WorkerProxy.d.ts","sourceRoot":"","sources":["../../../../../src/core/process/worker/WorkerProxy.js"],"names":[],"mappings":";AAmCA;IAoBI,oCAKC;IAvBD,cAAe;IACf,qBAAoB;IAEpB;;;;OAIG;IACH,iBAAgB;IAEhB;;;;OAIG;IACH,qBAAiB;IAIb,SAAc;IACd,aAAsB;IAK1B;;;;;;OAMG;IACH,wBAJW,MAAM,2BAiDhB;IAED,8BAaC;IAED,sBAQC;IAED;;;;OAIG;IACH,wBAqCC;IAED,qBAEC;IAED,aAOC;IAED;;;;;OAKG;IACH,kBAJW,MAAM,cACN,MAAM,GACJ,OAAO,CAgCnB;IAED,4BAmBC;IAED,cAiBC;CACJ"}
1
+ {"version":3,"file":"WorkerProxy.d.ts","sourceRoot":"","sources":["../../../../../src/core/process/worker/WorkerProxy.js"],"names":[],"mappings":";AAqCA;IA0BI,oCAKC;IA7BD;;;;OAIG;IACH,kBAAe;IAEf,qBAAoB;IAEpB;;;;OAIG;IACH,iBAAgB;IAEhB;;;;OAIG;IACH,qBAAiB;IAIb,SAAc;IACd,aAAsB;IAK1B;;;;;;OAMG;IACH,wBAJW,MAAM,2BAmDhB;IAED;;;;OAIG;IACH,qBAeC;IAED,sBAQC;IAED;;;;OAIG;IACH,wBAqCC;IAED,qBAEC;IAED,aAOC;IAED;;;;;OAKG;IACH,kBAJW,MAAM,eACN,MAAM,GACJ,OAAO,CAkCnB;IAED,4BAmBC;IAED,cAiBC;CACJ"}
@@ -1,3 +1,5 @@
1
+ import { assert } from "../../assert.js";
2
+
1
3
  /**
2
4
  *
3
5
  * @param {Worker} worker
@@ -35,7 +37,13 @@ function needsSerialization(value) {
35
37
 
36
38
  class WorkerProxy {
37
39
 
40
+ /**
41
+ *
42
+ * @type {{}}
43
+ * @private
44
+ */
38
45
  __pending = {};
46
+
39
47
  __isRunning = false;
40
48
 
41
49
  /**
@@ -63,11 +71,13 @@ class WorkerProxy {
63
71
  /**
64
72
  * Invoke a given method on the worker, as defined by the `WorkerBuilder`
65
73
  * @template T
66
- * @param {number} name Method's name
74
+ * @param {string} name Method's name
67
75
  * @param {Array} args
68
76
  * @return {Promise<T>} eventual result of the invoked method
69
77
  */
70
78
  $submitRequest(name, args) {
79
+ assert.isString(name, "name");
80
+
71
81
  const pending = this.__pending[name];
72
82
 
73
83
  const argumentCount = args.length;
@@ -114,7 +124,14 @@ class WorkerProxy {
114
124
  });
115
125
  }
116
126
 
127
+ /**
128
+ *
129
+ * @param {string} name
130
+ * @private
131
+ */
117
132
  __makeMethod(name) {
133
+ assert.isString(name, 'name');
134
+
118
135
  if (this.__pending.hasOwnProperty(name)) {
119
136
  throw new Error(`Method '${name}' already defined`);
120
137
  }
@@ -199,15 +216,17 @@ class WorkerProxy {
199
216
  /**
200
217
  *
201
218
  * @param {number} id
202
- * @param {string} methodName
219
+ * @param {string} method_name
203
220
  * @returns {boolean}
204
221
  */
205
- cancelRequest(id, methodName) {
222
+ cancelRequest(id, method_name) {
223
+ assert.isString(method_name, 'method_name');
224
+
206
225
  //find request
207
- const requestQueue = this.__pending[methodName];
226
+ const requestQueue = this.__pending[method_name];
208
227
 
209
228
  if (requestQueue === undefined) {
210
- throw new Error(`No request queue for method name '${methodName}'`);
229
+ throw new Error(`No request queue for method name '${method_name}'`);
211
230
  }
212
231
 
213
232
  const n = requestQueue.length;
@@ -1 +1 @@
1
- {"version":3,"file":"extractTransferables.d.ts","sourceRoot":"","sources":["../../../../../src/core/process/worker/extractTransferables.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,oEAgBC"}
1
+ {"version":3,"file":"extractTransferables.d.ts","sourceRoot":"","sources":["../../../../../src/core/process/worker/extractTransferables.js"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,oEAgBC"}
@@ -1,3 +1,5 @@
1
+ import { isImageBitmap } from "../../../engine/graphics/texture/isImageBitmap.js";
2
+
1
3
  /**
2
4
  *
3
5
  * @param {*} obj
@@ -11,7 +13,7 @@ export function extractTransferables(obj, result) {
11
13
  result.push(obj);
12
14
  } else if (obj.buffer instanceof ArrayBuffer) {
13
15
  result.push(obj.buffer);
14
- } else if (obj instanceof ImageBitmap) {
16
+ } else if (isImageBitmap(obj)) {
15
17
  result.push(obj);
16
18
  } else {
17
19
  for (let i in obj) {
@@ -1,4 +1,10 @@
1
1
  export class EngineHarness {
2
+ /**
3
+ * Quick initialization of the engine in a sensible default configuration
4
+ * @param {(config:EngineConfiguration,engine:Engine)=>*} [configuration]
5
+ * @return {Promise<Engine>}
6
+ */
7
+ static bootstrap({ configuration }?: (config: EngineConfiguration, engine: Engine) => any): Promise<Engine>;
2
8
  /**
3
9
  *
4
10
  * @param {Engine} engine
@@ -111,7 +117,7 @@ export class EngineHarness {
111
117
  */
112
118
  readonly p: Promise<any> | null;
113
119
  /**
114
- * @param {(config:EngineConfiguration,engine:Engine)=>*} configuration
120
+ * @param {(config:EngineConfiguration,engine:Engine)=>*} [configuration]
115
121
  * @param {boolean} [enable_localization] Whether or not to load localization data
116
122
  * @returns {Promise<Engine>}
117
123
  */
@@ -1 +1 @@
1
- {"version":3,"file":"EngineHarness.d.ts","sourceRoot":"","sources":["../../../src/engine/EngineHarness.js"],"names":[],"mappings":"AA6DA;IAmBI;;;OAGG;IACH,6BAFW,MAAM,QAYhB;IAkED;;;;;;;;;;;;;OAaG;IACH;QAZyB,MAAM,EAApB,MAAM;QACyB,GAAG;QAClB,MAAM,GAAtB,OAAO;QACQ,QAAQ,GAAvB,MAAM;QACS,KAAK,GAApB,MAAM;QACS,GAAG,GAAlB,MAAM;QACU,QAAQ,GAAxB,OAAO;QACQ,WAAW,GAA1B,MAAM;QACS,WAAW,GAA1B,MAAM;QACS,WAAW,GAA1B,MAAM;QACJ,MAAM,CA+DlB;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,oQAnBW,MAAM,iBAmFhB;IAGD;;;;;;;;;;OAUG;IACH;QATyB,MAAM,EAApB,MAAM;QACyB,GAAG;QACnB,mBAAmB,GAAlC,MAAM;QACU,UAAU,GAA1B,OAAO;QACO,GAAG,GAAjB,KAAK;QACU,YAAY,GAA3B,MAAM;QACQ,OAAO,GAArB,KAAK;QACU,gBAAgB,GAA/B,MAAM;sBAqDhB;IAED;;;;;;;OAOG;IACH;QAN0B,YAAY,GAA3B,MAAM;QACQ,MAAM,EAApB,MAAM;QACS,WAAW,GAA1B,MAAM;QACyB,GAAG;QAChC,MAAM,CA2ClB;IAGD;;;;;;;;;;;OAWG;IACH,mGAVW,MAAM,GAQJ,OAAO,CAuDnB;IA3bG;;;OAGG;IACH,QAFU,MAAM,CAEiC;IAMjD;;;OAGG;IACH,YAFU,eAAQ,IAAI,CAET;IAmBjB;;;;OAIG;IACH,8DAJmB,mBAAmB,UAAQ,MAAM,WAEvC,QAAQ,MAAM,CAAC,CA2D3B;CA6VJ;;IAID;;;OAGG;IACH,uCAMC;;mBA1fkB,aAAa;oCACI,0BAA0B;oBAX1C,yBAAyB;mBAK1B,iBAAiB;sBATd,wBAAwB;oBAW1B,8BAA8B"}
1
+ {"version":3,"file":"EngineHarness.d.ts","sourceRoot":"","sources":["../../../src/engine/EngineHarness.js"],"names":[],"mappings":"AA6DA;IAmBI;;;;OAIG;IACH,8CAHmB,mBAAmB,UAAQ,MAAM,WACxC,QAAQ,MAAM,CAAC,CAM1B;IAED;;;OAGG;IACH,6BAFW,MAAM,QAYhB;IAkED;;;;;;;;;;;;;OAaG;IACH;QAZyB,MAAM,EAApB,MAAM;QACyB,GAAG;QAClB,MAAM,GAAtB,OAAO;QACQ,QAAQ,GAAvB,MAAM;QACS,KAAK,GAApB,MAAM;QACS,GAAG,GAAlB,MAAM;QACU,QAAQ,GAAxB,OAAO;QACQ,WAAW,GAA1B,MAAM;QACS,WAAW,GAA1B,MAAM;QACS,WAAW,GAA1B,MAAM;QACJ,MAAM,CA+DlB;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,oQAnBW,MAAM,iBAmFhB;IAGD;;;;;;;;;;OAUG;IACH;QATyB,MAAM,EAApB,MAAM;QACyB,GAAG;QACnB,mBAAmB,GAAlC,MAAM;QACU,UAAU,GAA1B,OAAO;QACO,GAAG,GAAjB,KAAK;QACU,YAAY,GAA3B,MAAM;QACQ,OAAO,GAArB,KAAK;QACU,gBAAgB,GAA/B,MAAM;sBAqDhB;IAED;;;;;;;OAOG;IACH;QAN0B,YAAY,GAA3B,MAAM;QACQ,MAAM,EAApB,MAAM;QACS,WAAW,GAA1B,MAAM;QACyB,GAAG;QAChC,MAAM,CA2ClB;IAGD;;;;;;;;;;;OAWG;IACH,mGAVW,MAAM,GAQJ,OAAO,CAuDnB;IAtcG;;;OAGG;IACH,QAFU,MAAM,CAEiC;IAMjD;;;OAGG;IACH,YAFU,eAAQ,IAAI,CAET;IA8BjB;;;;OAIG;IACH,8DAJmB,mBAAmB,UAAQ,MAAM,WAEvC,QAAQ,MAAM,CAAC,CA2D3B;CA6VJ;;IAID;;;OAGG;IACH,uCAMC;;mBArgBkB,aAAa;oCACI,0BAA0B;oBAX1C,yBAAyB;mBAK1B,iBAAiB;sBATd,wBAAwB;oBAW1B,8BAA8B"}
@@ -78,6 +78,17 @@ export class EngineHarness {
78
78
  this.p = null;
79
79
  }
80
80
 
81
+ /**
82
+ * Quick initialization of the engine in a sensible default configuration
83
+ * @param {(config:EngineConfiguration,engine:Engine)=>*} [configuration]
84
+ * @return {Promise<Engine>}
85
+ */
86
+ static async bootstrap({ configuration } = {}) {
87
+ const harness = new EngineHarness();
88
+
89
+ return harness.initialize({ configuration });
90
+ }
91
+
81
92
  /**
82
93
  *
83
94
  * @param {Engine} engine
@@ -95,7 +106,7 @@ export class EngineHarness {
95
106
  }
96
107
 
97
108
  /**
98
- * @param {(config:EngineConfiguration,engine:Engine)=>*} configuration
109
+ * @param {(config:EngineConfiguration,engine:Engine)=>*} [configuration]
99
110
  * @param {boolean} [enable_localization] Whether or not to load localization data
100
111
  * @returns {Promise<Engine>}
101
112
  */
@@ -1 +1 @@
1
- {"version":3,"file":"AnimationTrack.d.ts","sourceRoot":"","sources":["../../../../../src/engine/animation/clip/AnimationTrack.js"],"names":[],"mappings":"AAGA;;GAEG;AACH;IAwEI;;;;;OAKG;IACH,qBAJW,gBAAgB,SAChB,MAAM,GACL,cAAc,CAYzB;IAvFD;;;OAGG;IACH,MAFU,MAAM,CAEP;IAET;;;OAGG;IACH,MAFU,MAAM,EAAE,CAET;IAET;;;OAGG;IACH,QAFU,gBAAgB,CAEf;IAEX;;;;;OAKG;IACH,MAFU,MAAM,CAEP;IAET;;;OAGG;IACH,uBAYC;IAED;;;OAGG;IACH,yBAEC;IAED;;;;;OAKG;IACH,eAJW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,iBAClC,MAAM,QACN,MAAM,QAahB;IAqBL;;;OAGG;IACH,2BAFU,OAAO,CAEwB;CANxC"}
1
+ {"version":3,"file":"AnimationTrack.d.ts","sourceRoot":"","sources":["../../../../../src/engine/animation/clip/AnimationTrack.js"],"names":[],"mappings":"AAGA;;GAEG;AACH;IA2EI;;;;;OAKG;IACH,qBAJW,gBAAgB,SAChB,MAAM,GACL,cAAc,CAYzB;IA1FD;;;OAGG;IACH,MAFU,MAAM,CAEP;IAET;;;OAGG;IACH,MAFU,MAAM,EAAE,CAET;IAET;;;OAGG;IACH,QAFU,gBAAgB,CAEf;IAEX;;;;;OAKG;IACH,MAFU,MAAM,CAEP;IAET;;;OAGG;IACH,uBAYC;IAED;;;OAGG;IACH,yBAEC;IAED;;;;;OAKG;IACH,eAJW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,iBAClC,MAAM,QACN,MAAM,QAgBhB;IAqBL;;;OAGG;IACH,2BAFU,OAAO,CAEwB;CANxC"}
@@ -64,6 +64,9 @@ export class AnimationTrack {
64
64
  * @param {number} time
65
65
  */
66
66
  sample(output, output_offset, time) {
67
+ assert.isArrayLike(output, 'output');
68
+ assert.isNonNegativeInteger(output_offset, 'output_offset');
69
+
67
70
  const curves = this.curves;
68
71
  const curve_count = curves.length;
69
72
 
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  *
3
3
  * @param {EntityNode} node
4
- * @param {string} path
4
+ * @param {string[]} path_parts
5
5
  * @returns {BoundValueWriter}
6
6
  */
7
- export function bind_property_writer(node: EntityNode, path: string): BoundValueWriter;
7
+ export function bind_property_writer(node: EntityNode, path_parts: string[]): BoundValueWriter;
8
8
  import { BoundValueWriter } from "../curve/binding/BoundValueWriter.js";
9
9
  //# sourceMappingURL=bind_property_writer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bind_property_writer.d.ts","sourceRoot":"","sources":["../../../../../src/engine/animation/clip/bind_property_writer.js"],"names":[],"mappings":"AAqFA;;;;;GAKG;AACH,6DAHW,MAAM,GACJ,gBAAgB,CA4B5B;iCAnHgC,sCAAsC"}
1
+ {"version":3,"file":"bind_property_writer.d.ts","sourceRoot":"","sources":["../../../../../src/engine/animation/clip/bind_property_writer.js"],"names":[],"mappings":"AA2FA;;;;;GAKG;AACH,mEAHW,MAAM,EAAE,GACN,gBAAgB,CA+B5B;iCA3HgC,sCAAsC"}
@@ -1,3 +1,4 @@
1
+ import { assert } from "../../../core/assert.js";
1
2
  import Name from "../../ecs/name/Name.js";
2
3
  import { BoundQuaternionWriter } from "../curve/binding/BoundQuaternionWriter.js";
3
4
  import { BoundValueWriter } from "../curve/binding/BoundValueWriter.js";
@@ -24,14 +25,15 @@ function get_node_name(node) {
24
25
  /**
25
26
  * Following THREE.js PropertyBinding.findNode implementation
26
27
  * @param {EntityNode} root
27
- * @param {string} nodeName
28
+ * @param {string} node_name
28
29
  * @returns {EntityNode|undefined}
29
30
  */
30
- function find_node(root, nodeName) {
31
+ function find_node(root, node_name) {
32
+ assert.isString(node_name, 'node_name');
31
33
 
32
34
  const root_name = get_node_name(root);
33
35
 
34
- if (root_name === nodeName) {
36
+ if (root_name === node_name) {
35
37
  return root;
36
38
  }
37
39
 
@@ -40,14 +42,13 @@ function find_node(root, nodeName) {
40
42
 
41
43
  const child_count = children.length;
42
44
 
43
-
44
45
  for (let j = 0; j < child_count; j++) {
45
46
  /**
46
47
  * @type {EntityNode}
47
48
  */
48
49
  const child = children[j];
49
50
 
50
- const subtree_result = find_node(child, nodeName);
51
+ const subtree_result = find_node(child, node_name);
51
52
 
52
53
  if (subtree_result !== undefined) {
53
54
  return subtree_result;
@@ -59,13 +60,18 @@ function find_node(root, nodeName) {
59
60
  *
60
61
  * @param {EntityNode} root
61
62
  * @param {string[]} path_parts
63
+ * @param {number} part_first
64
+ * @param {number} part_last
62
65
  */
63
- function entity_node_resolve_path(root, path_parts) {
66
+ function entity_node_resolve_path(root, path_parts, part_first, part_last) {
67
+ assert.isNonNegativeInteger(part_first, 'part_first');
68
+ assert.isNonNegativeInteger(part_last, 'part_last');
69
+
70
+ assert.lessThan(part_last, path_parts.length, 'overflow');
64
71
 
65
72
  let node = root;
66
73
 
67
- const part_count = path_parts.length;
68
- for (let i = 0; i < part_count; i++) {
74
+ for (let i = part_first; i <= part_last; i++) {
69
75
 
70
76
  const part = path_parts[i];
71
77
 
@@ -86,15 +92,18 @@ function entity_node_resolve_path(root, path_parts) {
86
92
  /**
87
93
  *
88
94
  * @param {EntityNode} node
89
- * @param {string} path
95
+ * @param {string[]} path_parts
90
96
  * @returns {BoundValueWriter}
91
97
  */
92
- export function bind_property_writer(node, path) {
93
- const path_parts = path.split('.');
98
+ export function bind_property_writer(node, path_parts) {
99
+ assert.defined(path_parts, 'path_parts');
100
+ assert.isArray(path_parts, 'path_parts');
101
+
102
+ const part_count = path_parts.length;
94
103
 
95
- const property_name = path_parts[path_parts.length - 1];
104
+ const property_name = path_parts[part_count - 1];
96
105
 
97
- const parent = entity_node_resolve_path(node, path_parts.slice(0, path_parts.length - 1));
106
+ const parent = entity_node_resolve_path(node, path_parts, 0, part_count - 2);
98
107
 
99
108
  let writer;
100
109
 
@@ -1 +1 @@
1
- {"version":3,"file":"curve_from_track_data.d.ts","sourceRoot":"","sources":["../../../../../src/engine/animation/clip/curve_from_track_data.js"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AACH,mEANW,0BAA0B,UAC1B,MAAM,EAAE,GAAC,YAAY,SACrB,MAAM,EAAE,GAAC,YAAY,mBACrB,MAAM,mBACN,MAAM,QAchB;2CA1B0C,iCAAiC"}
1
+ {"version":3,"file":"curve_from_track_data.d.ts","sourceRoot":"","sources":["../../../../../src/engine/animation/clip/curve_from_track_data.js"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AACH,mEANW,0BAA0B,UAC1B,MAAM,EAAE,GAAC,YAAY,SACrB,MAAM,EAAE,GAAC,YAAY,mBACrB,MAAM,mBACN,MAAM,QAsBhB;2CAlC0C,iCAAiC"}
@@ -12,7 +12,15 @@ import { curve_from_track_data_linear } from "./curve_from_track_data_linear.js"
12
12
  * @param {number} component_count
13
13
  * @param {number} component_index
14
14
  */
15
- export function curve_from_track_data(curve, type, values, times, component_count, component_index) {
15
+ export function curve_from_track_data(
16
+ curve,
17
+ type,
18
+ values,
19
+ times,
20
+ component_count,
21
+ component_index
22
+ ) {
23
+
16
24
  switch (type) {
17
25
  case AnimationInterpolationKind.Discrete:
18
26
  return curve_from_track_data_discrete(curve, values, times, component_count, component_index);
@@ -1 +1 @@
1
- {"version":3,"file":"ecd_bind_animation_curve.d.ts","sourceRoot":"","sources":["../../../../../src/engine/animation/clip/ecd_bind_animation_curve.js"],"names":[],"mappings":"AAsGA;;;;GAIG;AACH,2DAFW,mBAAmB,wBA6B7B;8BApI6B,oBAAoB;qCACb,2BAA2B"}
1
+ {"version":3,"file":"ecd_bind_animation_curve.d.ts","sourceRoot":"","sources":["../../../../../src/engine/animation/clip/ecd_bind_animation_curve.js"],"names":[],"mappings":"AAoGA;;;;GAIG;AACH,2DAFW,mBAAmB,wBAgC7B;8BArI6B,oBAAoB;qCACb,2BAA2B"}
@@ -85,11 +85,9 @@ function convert_three_track_to_curves(track) {
85
85
  /**
86
86
  *
87
87
  * @param {THREE.KeyframeTrack} track
88
- * @param {EntityNode} node
89
88
  * @returns {AnimationTrack}
90
89
  */
91
- function convert_three_track(track, node) {
92
-
90
+ function convert_three_track(track) {
93
91
 
94
92
  const track_name = track.name;
95
93
 
@@ -120,9 +118,12 @@ export function convert_three_clip(node, clip) {
120
118
  for (let i = 0; i < track_count; i++) {
121
119
  try {
122
120
  const three_track = three_tracks[i];
123
- const meep_track = convert_three_track(three_track, node);
124
121
 
125
- const writer = bind_property_writer(node, three_track.name);
122
+ const meep_track = convert_three_track(three_track);
123
+
124
+ const property_path = three_track.name.split('.');
125
+
126
+ const writer = bind_property_writer(node, property_path);
126
127
 
127
128
  meep_clip.tracks.push(meep_track);
128
129
  clip_binding.tracks.push(AnimationTrackBinding.from(writer, meep_track));
@@ -89,6 +89,27 @@ export class AnimationCurve {
89
89
  */
90
90
  smoothTangents(index: number, weight: number): void;
91
91
  smoothAllTangents(): void;
92
+ /**
93
+ *
94
+ * @param {AnimationCurve} other
95
+ * @return {boolean}
96
+ */
97
+ equals(other: AnimationCurve): boolean;
98
+ /**
99
+ * The copy is deep
100
+ * @param {AnimationCurve} other
101
+ */
102
+ copy(other: AnimationCurve): void;
103
+ /**
104
+ *
105
+ * @return {AnimationCurve}
106
+ */
107
+ clone(): AnimationCurve;
108
+ /**
109
+ *
110
+ * @return {number}
111
+ */
112
+ hash(): number;
92
113
  toJSON(): {
93
114
  keys: any[];
94
115
  };
@@ -1 +1 @@
1
- {"version":3,"file":"AnimationCurve.d.ts","sourceRoot":"","sources":["../../../../../src/engine/animation/curve/AnimationCurve.js"],"names":[],"mappings":"AAkBA;;;GAGG;AACH;IAkFI;;;;OAIG;IACH,kBAHW,QAAQ,EAAE,GACR,cAAc,CAU1B;IAgJD;;;;;;;OAOG;IACH,6BANW,MAAM,eACN,MAAM,YACN,MAAM,aACN,MAAM,GACL,cAAc,CAUzB;IAED;;;;;;OAMG;IACH,4BALW,MAAM,YACN,MAAM,UACN,MAAM,GACL,cAAc,CAOzB;IAED;;;;;;;OAOG;IACH,0BANW,MAAM,eACN,MAAM,YACN,MAAM,aACN,MAAM,GACL,cAAc,CAYzB;IAhSD;;;OAGG;IACH,eAFU,QAAQ,EAAE,CAEV;IAEV;;;;OAIG;IACH,SAHW,QAAQ,GACN,MAAM,CAgClB;IAED;;;OAGG;IACH,cAFW,QAAQ,EAAE,QAUpB;IAED;;;;OAIG;IACH,YAHW,QAAQ,GACN,OAAO,CAYnB;IAED;;OAEG;IACH,cAEC;IAiBD;;;OAGG;IACH,qBAEC;IAED;;;OAGG;IACH,uBAUC;IAED;;;;OAIG;IACH,eAHW,MAAM,GACL,MAAM,CA2CjB;IAED;;;OAGG;IACH,qBAFW,MAAM,QAoBhB;IAED;;;;OAIG;IACH,sBAHW,MAAM,UACN,MAAM,QAWhB;IAED,0BAKC;IAED;;MAIC;IAED;;aAeC;CAqDJ;yBAlTwB,eAAe"}
1
+ {"version":3,"file":"AnimationCurve.d.ts","sourceRoot":"","sources":["../../../../../src/engine/animation/curve/AnimationCurve.js"],"names":[],"mappings":"AAqBA;;;GAGG;AACH;IAkFI;;;;OAIG;IACH,kBAHW,QAAQ,EAAE,GACR,cAAc,CAQ1B;IA2KD;;;;;;;OAOG;IACH,6BANW,MAAM,eACN,MAAM,YACN,MAAM,aACN,MAAM,GACL,cAAc,CAUzB;IAED;;;;;;OAMG;IACH,4BALW,MAAM,YACN,MAAM,UACN,MAAM,GACL,cAAc,CAOzB;IAED;;;;;;;OAOG;IACH,0BANW,MAAM,eACN,MAAM,YACN,MAAM,aACN,MAAM,GACL,cAAc,CAYzB;IAzTD;;;OAGG;IACH,eAFU,QAAQ,EAAE,CAEV;IAEV;;;;OAIG;IACH,SAHW,QAAQ,GACN,MAAM,CAgClB;IAED;;;OAGG;IACH,cAFW,QAAQ,EAAE,QAUpB;IAED;;;;OAIG;IACH,YAHW,QAAQ,GACN,OAAO,CAYnB;IAED;;OAEG;IACH,cAEC;IAeD;;;OAGG;IACH,qBAEC;IAED;;;OAGG;IACH,uBAUC;IAED;;;;OAIG;IACH,eAHW,MAAM,GACL,MAAM,CAiCjB;IAED;;;OAGG;IACH,qBAFW,MAAM,QAoBhB;IAED;;;;OAIG;IACH,sBAHW,MAAM,UACN,MAAM,QAWhB;IAED,0BAKC;IAED;;;;OAIG;IACH,cAHW,cAAc,GACb,OAAO,CAIlB;IAED;;;OAGG;IACH,YAFW,cAAc,QAIxB;IAED;;;OAGG;IACH,SAFY,cAAc,CAQzB;IAED;;;OAGG;IACH,QAFY,MAAM,CAIjB;IAED;;MAIC;IAED;;aAeC;CAqDJ;yBA3UwB,eAAe"}
@@ -1,9 +1,12 @@
1
1
  import { assert } from "../../../core/assert.js";
2
2
  import { binarySearchHighIndex } from "../../../core/collection/array/binarySearchHighIndex.js";
3
- import { inverseLerp } from "../../../core/math/inverseLerp.js";
3
+ import { computeHashArray } from "../../../core/collection/array/computeHashArray.js";
4
+ import { isArrayEqual } from "../../../core/collection/array/isArrayEqual.js";
4
5
  import { lerp } from "../../../core/math/lerp.js";
5
- import { spline_hermite3 } from "../../../core/math/spline/spline_hermite3.js";
6
+ import { invokeObjectClone } from "../../../core/model/object/invokeObjectClone.js";
7
+ import { invokeObjectHash } from "../../../core/model/object/invokeObjectHash.js";
6
8
  import { invokeObjectToJSON } from "../../../core/model/object/invokeObjectToJSON.js";
9
+ import { evaluate_two_key_curve } from "./evaluate_two_key_curve.js";
7
10
  import { Keyframe } from "./Keyframe.js";
8
11
 
9
12
  /**
@@ -112,8 +115,6 @@ export class AnimationCurve {
112
115
 
113
116
  curve.addMany(keys);
114
117
 
115
- curve.smoothAllTangents();
116
-
117
118
  return curve;
118
119
  }
119
120
 
@@ -171,17 +172,7 @@ export class AnimationCurve {
171
172
  if (time < keyframe1.time) {
172
173
  const keyframe0 = keys[i - 1];
173
174
 
174
- // convert to 0..1 region
175
- const normalized_time = inverseLerp(keyframe0.time, keyframe1.time, time);
176
-
177
- const time_distance = keyframe1.time - keyframe0.time;
178
-
179
- return spline_hermite3(
180
- normalized_time,
181
- keyframe0.value, keyframe1.value,
182
- keyframe0.outTangent * time_distance,
183
- keyframe1.inTangent * time_distance
184
- );
175
+ return evaluate_two_key_curve(time, keyframe0, keyframe1);
185
176
  }
186
177
  }
187
178
 
@@ -236,6 +227,43 @@ export class AnimationCurve {
236
227
  }
237
228
  }
238
229
 
230
+ /**
231
+ *
232
+ * @param {AnimationCurve} other
233
+ * @return {boolean}
234
+ */
235
+ equals(other) {
236
+ return isArrayEqual(this.keys, other.keys);
237
+ }
238
+
239
+ /**
240
+ * The copy is deep
241
+ * @param {AnimationCurve} other
242
+ */
243
+ copy(other) {
244
+ this.keys = other.keys.map(invokeObjectClone);
245
+ }
246
+
247
+ /**
248
+ *
249
+ * @return {AnimationCurve}
250
+ */
251
+ clone() {
252
+ const curve = new AnimationCurve();
253
+
254
+ curve.copy(this);
255
+
256
+ return curve;
257
+ }
258
+
259
+ /**
260
+ *
261
+ * @return {number}
262
+ */
263
+ hash() {
264
+ return computeHashArray(this.keys, invokeObjectHash);
265
+ }
266
+
239
267
  toJSON() {
240
268
  return {
241
269
  keys: this.keys.map(invokeObjectToJSON)