@woosh/meep-engine 2.169.1 → 2.169.3

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 (709) hide show
  1. package/editor/ecs/component/editors/NumericIntervalEditor.js +18 -35
  2. package/editor/ecs/component/editors/ObservedIntegerEditor.js +22 -43
  3. package/editor/ecs/component/editors/ObservedStringEditor.js +34 -51
  4. package/editor/ecs/component/editors/common/makeV3_editor.js +12 -30
  5. package/editor/ecs/component/editors/common/two_way_sync.js +50 -0
  6. package/editor/ecs/component/editors/geom/QuaternionEditor.js +20 -35
  7. package/editor/ecs/component/editors/geom/Vector1Editor.js +5 -28
  8. package/editor/ecs/component/editors/primitive/NumberEditor.js +15 -31
  9. package/editor/tools/paint/TerrainHeightPaintTool.js +22 -31
  10. package/editor/tools/paint/TerrainPaintTool.js +85 -13
  11. package/editor/tools/paint/TerrainTexturePaintTool.js +18 -29
  12. package/editor/view/ecs/components/TerrainController.js +1 -4
  13. package/package.json +1 -1
  14. package/src/DUPLICATION_AUDIT_2026_08_07/00_core_reuse_surface.md +738 -0
  15. package/src/DUPLICATION_AUDIT_2026_08_07/A_core_math_geom.md +79 -0
  16. package/src/DUPLICATION_AUDIT_2026_08_07/B_core_data.md +93 -0
  17. package/src/DUPLICATION_AUDIT_2026_08_07/C_gfx_render.md +80 -0
  18. package/src/DUPLICATION_AUDIT_2026_08_07/D_gfx_features.md +164 -0
  19. package/src/DUPLICATION_AUDIT_2026_08_07/E_physics.md +69 -0
  20. package/src/DUPLICATION_AUDIT_2026_08_07/F_sound.md +102 -0
  21. package/src/DUPLICATION_AUDIT_2026_08_07/G_net_save.md +129 -0
  22. package/src/DUPLICATION_AUDIT_2026_08_07/H_engine_misc.md +72 -0
  23. package/src/DUPLICATION_AUDIT_2026_08_07/I_generation_view.md +74 -0
  24. package/src/DUPLICATION_AUDIT_2026_08_07/K_crosscutting.md +169 -0
  25. package/src/DUPLICATION_AUDIT_2026_08_07.md +254 -0
  26. package/src/DUPLICATION_AUDIT_REMEDIATION.md +250 -0
  27. package/src/core/bvh2/bvh3/query/bvh_collect_user_data.js +2 -2
  28. package/src/core/bvh2/bvh3/query/bvh_query_leaves_generic.js +77 -77
  29. package/src/core/bvh2/bvh3/query/bvh_query_leaves_ray.js +90 -90
  30. package/src/core/bvh2/bvh3/query/bvh_query_leaves_ray_segment.js +94 -94
  31. package/src/core/bvh2/bvh3/query/bvh_query_user_data_generic.js +86 -86
  32. package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_aabb.js +2 -2
  33. package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_capsule.js +2 -2
  34. package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_frustum.js +2 -2
  35. package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_sphere.js +2 -2
  36. package/src/core/bvh2/bvh3/query/bvh_query_user_data_ray.js +96 -96
  37. package/src/core/bvh2/bvh3/query/bvh_query_user_data_ray_segment.js +100 -100
  38. package/src/core/bvh2/bvh3/query/compute_tight_near_far_clipping_planes.js +2 -2
  39. package/src/core/bvh8/aabb3_round_to_float32.d.ts +16 -0
  40. package/src/core/bvh8/aabb3_round_to_float32.d.ts.map +1 -0
  41. package/src/core/bvh8/aabb3_round_to_float32.js +22 -0
  42. package/src/core/bvh8/bvh8_geometry_validate.d.ts.map +1 -1
  43. package/src/core/bvh8/bvh8_geometry_validate.js +1 -12
  44. package/src/core/bvh8/bvh8_geometry_validate_indirect.d.ts.map +1 -1
  45. package/src/core/bvh8/bvh8_geometry_validate_indirect.js +1 -12
  46. package/src/core/cache/Cache.d.ts +13 -0
  47. package/src/core/cache/Cache.d.ts.map +1 -1
  48. package/src/core/cache/Cache.js +13 -0
  49. package/src/core/color/operations/color_darken.d.ts +5 -2
  50. package/src/core/color/operations/color_darken.d.ts.map +1 -1
  51. package/src/core/color/operations/color_darken.js +24 -33
  52. package/src/core/color/operations/color_desaturate.d.ts +5 -2
  53. package/src/core/color/operations/color_desaturate.d.ts.map +1 -1
  54. package/src/core/color/operations/color_desaturate.js +24 -33
  55. package/src/core/color/operations/color_lighten.d.ts +5 -2
  56. package/src/core/color/operations/color_lighten.d.ts.map +1 -1
  57. package/src/core/color/operations/color_lighten.js +24 -33
  58. package/src/core/color/operations/color_saturate.d.ts +5 -2
  59. package/src/core/color/operations/color_saturate.d.ts.map +1 -1
  60. package/src/core/color/operations/color_saturate.js +24 -33
  61. package/src/core/color/operations/color_scale_okhsv_channel.d.ts +28 -0
  62. package/src/core/color/operations/color_scale_okhsv_channel.d.ts.map +1 -0
  63. package/src/core/color/operations/color_scale_okhsv_channel.js +45 -0
  64. package/src/core/geom/2d/hash-grid/SpatialHashGrid.d.ts.map +1 -1
  65. package/src/core/geom/2d/hash-grid/SpatialHashGrid.js +12 -0
  66. package/src/core/geom/2d/line/segment2_intersects_segment2_2d.d.ts.map +1 -1
  67. package/src/core/geom/2d/line/segment2_intersects_segment2_2d.js +25 -29
  68. package/src/core/geom/2d/line/segment2_segment_compute_intersection_array_2d.d.ts.map +1 -1
  69. package/src/core/geom/2d/line/segment2_segment_compute_intersection_array_2d.js +46 -51
  70. package/src/core/geom/2d/line/segment2_segment_intersection_fractions.d.ts +31 -0
  71. package/src/core/geom/2d/line/segment2_segment_intersection_fractions.d.ts.map +1 -0
  72. package/src/core/geom/2d/line/segment2_segment_intersection_fractions.js +52 -0
  73. package/src/core/geom/2d/quad-tree/qt_collect_by_circle.d.ts +6 -1
  74. package/src/core/geom/2d/quad-tree/qt_collect_by_circle.d.ts.map +1 -1
  75. package/src/core/geom/2d/quad-tree/qt_collect_by_circle.js +39 -65
  76. package/src/core/geom/2d/quad-tree/qt_match_data_by_circle.d.ts +15 -5
  77. package/src/core/geom/2d/quad-tree/qt_match_data_by_circle.d.ts.map +1 -1
  78. package/src/core/geom/2d/quad-tree/qt_match_data_by_circle.js +101 -70
  79. package/src/core/geom/2d/r-tree/StaticR2Tree.d.ts.map +1 -1
  80. package/src/core/geom/2d/r-tree/StaticR2Tree.js +7 -3
  81. package/src/core/geom/3d/aabb/aabb3_intersects_ray_segment.d.ts +7 -8
  82. package/src/core/geom/3d/aabb/aabb3_intersects_ray_segment.d.ts.map +1 -1
  83. package/src/core/geom/3d/aabb/aabb3_intersects_ray_segment.js +15 -51
  84. package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_bff.d.ts.map +1 -1
  85. package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_bff.js +13 -14
  86. package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_lscm.d.ts.map +1 -1
  87. package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_lscm.js +2 -17
  88. package/src/core/geom/3d/atlas/segment/atlas_chart_roundness_delta.d.ts +22 -0
  89. package/src/core/geom/3d/atlas/segment/atlas_chart_roundness_delta.d.ts.map +1 -0
  90. package/src/core/geom/3d/atlas/segment/atlas_chart_roundness_delta.js +30 -0
  91. package/src/core/geom/3d/atlas/segment/atlas_segment_charts.d.ts +19 -0
  92. package/src/core/geom/3d/atlas/segment/atlas_segment_charts.d.ts.map +1 -1
  93. package/src/core/geom/3d/atlas/segment/atlas_segment_charts.js +5 -9
  94. package/src/core/geom/3d/atlas/segment/atlas_segment_charts_atomic.d.ts.map +1 -1
  95. package/src/core/geom/3d/atlas/segment/atlas_segment_charts_atomic.js +4 -12
  96. package/src/core/geom/3d/frustum/read_frustum_corner.d.ts +5 -0
  97. package/src/core/geom/3d/frustum/read_frustum_corner.d.ts.map +1 -1
  98. package/src/core/geom/3d/frustum/read_frustum_corner.js +8 -5
  99. package/src/core/geom/3d/line/line3_segment_segment_closest_point_pair.d.ts +33 -0
  100. package/src/core/geom/3d/line/line3_segment_segment_closest_point_pair.d.ts.map +1 -0
  101. package/src/core/geom/3d/line/line3_segment_segment_closest_point_pair.js +71 -0
  102. package/src/core/geom/3d/mat4/m4_compose.d.ts +5 -0
  103. package/src/core/geom/3d/mat4/m4_compose.d.ts.map +1 -1
  104. package/src/core/geom/3d/mat4/m4_compose.js +22 -53
  105. package/src/core/geom/3d/mat4/m4_decompose.d.ts +7 -3
  106. package/src/core/geom/3d/mat4/m4_decompose.d.ts.map +1 -1
  107. package/src/core/geom/3d/mat4/m4_decompose.js +64 -76
  108. package/src/core/geom/3d/mat4/m4_decompose_array.d.ts +28 -0
  109. package/src/core/geom/3d/mat4/m4_decompose_array.d.ts.map +1 -0
  110. package/src/core/geom/3d/mat4/m4_decompose_array.js +157 -0
  111. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale.d.ts +2 -0
  112. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale.d.ts.map +1 -1
  113. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale.js +10 -44
  114. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_scalar.d.ts +27 -0
  115. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_scalar.d.ts.map +1 -0
  116. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_scalar.js +67 -0
  117. package/src/core/geom/3d/plane/orient3d_fast.d.ts.map +1 -1
  118. package/src/core/geom/3d/plane/orient3d_fast.js +2 -22
  119. package/src/core/geom/3d/plane/orient3d_fast_point.d.ts +28 -0
  120. package/src/core/geom/3d/plane/orient3d_fast_point.d.ts.map +1 -0
  121. package/src/core/geom/3d/plane/orient3d_fast_point.js +47 -0
  122. package/src/core/geom/3d/quaternion/quat3_nlerp.d.ts +48 -0
  123. package/src/core/geom/3d/quaternion/quat3_nlerp.d.ts.map +1 -0
  124. package/src/core/geom/3d/quaternion/quat3_nlerp.js +72 -0
  125. package/src/core/geom/3d/shape/AbstractShape3D.d.ts +9 -0
  126. package/src/core/geom/3d/shape/AbstractShape3D.d.ts.map +1 -1
  127. package/src/core/geom/3d/shape/AbstractShape3D.js +44 -1
  128. package/src/core/geom/3d/shape/BoxShape3D.d.ts.map +1 -1
  129. package/src/core/geom/3d/shape/BoxShape3D.js +2 -1
  130. package/src/core/geom/3d/shape/CapsuleShape3D.d.ts.map +1 -1
  131. package/src/core/geom/3d/shape/CapsuleShape3D.js +2 -1
  132. package/src/core/geom/3d/shape/ConvexHullShape3D.d.ts +0 -1
  133. package/src/core/geom/3d/shape/ConvexHullShape3D.d.ts.map +1 -1
  134. package/src/core/geom/3d/shape/ConvexHullShape3D.js +25 -56
  135. package/src/core/geom/3d/shape/CylinderShape3D.d.ts.map +1 -1
  136. package/src/core/geom/3d/shape/CylinderShape3D.js +2 -1
  137. package/src/core/geom/3d/shape/HeightMapShape3D.d.ts.map +1 -1
  138. package/src/core/geom/3d/shape/HeightMapShape3D.js +3 -5
  139. package/src/core/geom/3d/shape/MeshShape3D.d.ts +0 -11
  140. package/src/core/geom/3d/shape/MeshShape3D.d.ts.map +1 -1
  141. package/src/core/geom/3d/shape/MeshShape3D.js +27 -106
  142. package/src/core/geom/3d/shape/Triangle3D.d.ts +1 -1
  143. package/src/core/geom/3d/shape/Triangle3D.d.ts.map +1 -1
  144. package/src/core/geom/3d/shape/Triangle3D.js +10 -31
  145. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_carve_outside_surface.d.ts.map +1 -1
  146. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_carve_outside_surface.js +8 -57
  147. package/src/core/geom/3d/topology/simplify/decimate_edge_collapse_snap.d.ts +8 -1
  148. package/src/core/geom/3d/topology/simplify/decimate_edge_collapse_snap.d.ts.map +1 -1
  149. package/src/core/geom/3d/topology/simplify/decimate_edge_collapse_snap.js +281 -272
  150. package/src/core/geom/3d/topology/simplify/quadratic/build_vertex_quadrics.d.ts.map +1 -1
  151. package/src/core/geom/3d/topology/simplify/quadratic/build_vertex_quadrics.js +3 -4
  152. package/src/core/geom/3d/topology/simplify/quadratic/quadric3_set_from_plane_through_point.d.ts +22 -0
  153. package/src/core/geom/3d/topology/simplify/quadratic/quadric3_set_from_plane_through_point.d.ts.map +1 -0
  154. package/src/core/geom/3d/topology/simplify/quadratic/quadric3_set_from_plane_through_point.js +27 -0
  155. package/src/core/geom/3d/topology/struct/binary/io/bt_boundary_loop.d.ts +24 -0
  156. package/src/core/geom/3d/topology/struct/binary/io/bt_boundary_loop.d.ts.map +1 -0
  157. package/src/core/geom/3d/topology/struct/binary/io/bt_boundary_loop.js +73 -0
  158. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_close_boundary_holes.d.ts.map +1 -1
  159. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_close_boundary_holes.js +2 -53
  160. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compute_vertex_quadrics.d.ts.map +1 -1
  161. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compute_vertex_quadrics.js +3 -4
  162. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_fill_small_holes.d.ts.map +1 -1
  163. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_fill_small_holes.js +3 -33
  164. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_from_indexed_geometry.d.ts.map +1 -1
  165. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_from_indexed_geometry.js +4 -37
  166. package/src/core/geom/3d/topology/struct/binary/io/face/bt_face_poke.d.ts.map +1 -1
  167. package/src/core/geom/3d/topology/struct/binary/io/face/bt_face_poke.js +3 -32
  168. package/src/core/geom/3d/topology/struct/binary/query/bt_face_read_triangle.d.ts +32 -0
  169. package/src/core/geom/3d/topology/struct/binary/query/bt_face_read_triangle.d.ts.map +1 -0
  170. package/src/core/geom/3d/topology/struct/binary/query/bt_face_read_triangle.js +66 -0
  171. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path.d.ts.map +1 -1
  172. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path.js +703 -728
  173. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path_polyanya.d.ts.map +1 -1
  174. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path_polyanya.js +13 -24
  175. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.d.ts.map +1 -1
  176. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.js +8 -54
  177. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_surface_ray_parity.d.ts +35 -0
  178. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_surface_ray_parity.d.ts.map +1 -0
  179. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_surface_ray_parity.js +82 -0
  180. package/src/core/geom/3d/triangle/tri3_closest_point.d.ts +29 -0
  181. package/src/core/geom/3d/triangle/tri3_closest_point.d.ts.map +1 -0
  182. package/src/core/geom/3d/triangle/tri3_closest_point.js +65 -0
  183. package/src/core/geom/3d/triangle/tri3_flatten_isometric.d.ts +42 -0
  184. package/src/core/geom/3d/triangle/tri3_flatten_isometric.d.ts.map +1 -0
  185. package/src/core/geom/3d/triangle/tri3_flatten_isometric.js +79 -0
  186. package/src/core/geom/Vector2.d.ts.map +1 -1
  187. package/src/core/geom/Vector2.js +2 -1
  188. package/src/core/geom/random/random_orthonormal_basis.d.ts +21 -0
  189. package/src/core/geom/random/random_orthonormal_basis.d.ts.map +1 -0
  190. package/src/core/geom/random/random_orthonormal_basis.js +31 -0
  191. package/src/core/geom/vec2/v2_rotate.d.ts +18 -0
  192. package/src/core/geom/vec2/v2_rotate.d.ts.map +1 -0
  193. package/src/core/geom/vec2/v2_rotate.js +21 -0
  194. package/src/core/geom/vec2/v2_rotate_cos_sin.d.ts +19 -0
  195. package/src/core/geom/vec2/v2_rotate_cos_sin.d.ts.map +1 -0
  196. package/src/core/geom/vec2/v2_rotate_cos_sin.js +21 -0
  197. package/src/core/graph/csr/csr_graph_from_undirected_edge_list.d.ts +30 -0
  198. package/src/core/graph/csr/csr_graph_from_undirected_edge_list.d.ts.map +1 -0
  199. package/src/core/graph/csr/csr_graph_from_undirected_edge_list.js +94 -0
  200. package/src/core/graph/layout/CircleLayout.d.ts.map +1 -1
  201. package/src/core/graph/layout/CircleLayout.js +6 -29
  202. package/src/core/graph/layout/box/BoxLayouter.d.ts.map +1 -1
  203. package/src/core/graph/layout/box/BoxLayouter.js +2 -26
  204. package/src/core/graph/layout/box/position_box_next_to_box.d.ts.map +1 -1
  205. package/src/core/graph/layout/box/position_box_next_to_box.js +2 -1
  206. package/src/core/graph/layout/computeDisconnectedSubGraphs.d.ts.map +1 -1
  207. package/src/core/graph/layout/computeDisconnectedSubGraphs.js +14 -3
  208. package/src/core/graph/layout/graph_peel_topological_layer.d.ts +25 -0
  209. package/src/core/graph/layout/graph_peel_topological_layer.d.ts.map +1 -0
  210. package/src/core/graph/layout/graph_peel_topological_layer.js +45 -0
  211. package/src/core/math/hash/hash_mix2.d.ts +21 -0
  212. package/src/core/math/hash/hash_mix2.d.ts.map +1 -0
  213. package/src/core/math/hash/hash_mix2.js +22 -0
  214. package/src/core/math/hash/hash_mix3.d.ts +16 -0
  215. package/src/core/math/hash/hash_mix3.d.ts.map +1 -0
  216. package/src/core/math/hash/hash_mix3.js +19 -0
  217. package/src/core/math/lookup/LUT_HEATMAP.d.ts +17 -0
  218. package/src/core/math/lookup/LUT_HEATMAP.d.ts.map +1 -0
  219. package/src/core/math/lookup/LUT_HEATMAP.js +30 -0
  220. package/src/core/math/noise/curl_noise_3d.d.ts +6 -0
  221. package/src/core/math/noise/curl_noise_3d.d.ts.map +1 -1
  222. package/src/core/math/noise/curl_noise_3d.js +18 -27
  223. package/src/core/math/statistics/hammersley_sequence.d.ts +28 -16
  224. package/src/core/math/statistics/hammersley_sequence.d.ts.map +1 -1
  225. package/src/core/math/statistics/hammersley_sequence.js +53 -34
  226. package/src/core/primitives/strings/string_jaro_distance.d.ts +2 -2
  227. package/src/core/primitives/strings/string_jaro_distance.js +4 -4
  228. package/src/core/science/units/MEASUREMENT_UNITS_SI.d.ts +3 -0
  229. package/src/core/science/units/MEASUREMENT_UNITS_SI.d.ts.map +1 -1
  230. package/src/core/science/units/MEASUREMENT_UNITS_SI.js +5 -16
  231. package/src/engine/Engine.d.ts.map +1 -1
  232. package/src/engine/Engine.js +0 -2
  233. package/src/engine/animation/TransitionFunctions.d.ts +31 -0
  234. package/src/engine/animation/TransitionFunctions.d.ts.map +1 -1
  235. package/src/engine/animation/TransitionFunctions.js +44 -0
  236. package/src/engine/animation/curve/animation_curve_binary_codec.d.ts +29 -0
  237. package/src/engine/animation/curve/animation_curve_binary_codec.d.ts.map +1 -0
  238. package/src/engine/animation/curve/animation_curve_binary_codec.js +60 -0
  239. package/src/engine/animation/curve/draw/canvas_point_to_curve.d.ts +16 -0
  240. package/src/engine/animation/curve/draw/canvas_point_to_curve.d.ts.map +1 -0
  241. package/src/engine/animation/curve/draw/canvas_point_to_curve.js +22 -0
  242. package/src/engine/animation/curve/draw/curve_point_to_canvas.d.ts +27 -0
  243. package/src/engine/animation/curve/draw/curve_point_to_canvas.d.ts.map +1 -0
  244. package/src/engine/animation/curve/draw/curve_point_to_canvas.js +38 -0
  245. package/src/engine/animation/curve/draw/position_canvas_to_curve.d.ts +2 -0
  246. package/src/engine/animation/curve/draw/position_canvas_to_curve.d.ts.map +1 -1
  247. package/src/engine/animation/curve/draw/position_canvas_to_curve.js +22 -24
  248. package/src/engine/animation/curve/draw/position_curve_to_canvas.d.ts +2 -0
  249. package/src/engine/animation/curve/draw/position_curve_to_canvas.d.ts.map +1 -1
  250. package/src/engine/animation/curve/draw/position_curve_to_canvas.js +22 -25
  251. package/src/engine/animation/curve/editor/canvas2dDrawWorldAxisLabels.d.ts.map +1 -1
  252. package/src/engine/animation/curve/editor/canvas2dDrawWorldAxisLabels.js +3 -2
  253. package/src/engine/animation/curve/editor/canvas2dPlotCurvePoints.d.ts.map +1 -1
  254. package/src/engine/animation/curve/editor/canvas2dPlotCurvePoints.js +14 -14
  255. package/src/engine/animation/removeEntityWithMeshParticlesEffect.d.ts.map +1 -1
  256. package/src/engine/animation/removeEntityWithMeshParticlesEffect.js +5 -0
  257. package/src/engine/asset/loaders/GLTFAssetLoader.d.ts.map +1 -1
  258. package/src/engine/asset/loaders/GLTFAssetLoader.js +25 -51
  259. package/src/engine/asset/loaders/SoundAssetLoader.d.ts.map +1 -1
  260. package/src/engine/asset/loaders/SoundAssetLoader.js +12 -1
  261. package/src/engine/asset/loaders/material/StaticMaterialCache.d.ts +3 -2
  262. package/src/engine/asset/loaders/material/StaticMaterialCache.d.ts.map +1 -1
  263. package/src/engine/asset/loaders/material/StaticMaterialCache.js +16 -55
  264. package/src/engine/asset/loaders/material/TextureCoalescer.d.ts +32 -0
  265. package/src/engine/asset/loaders/material/TextureCoalescer.d.ts.map +1 -0
  266. package/src/engine/asset/loaders/material/TextureCoalescer.js +68 -0
  267. package/src/engine/asset/loaders/material/traverseMaterialTextures.d.ts +10 -2
  268. package/src/engine/asset/loaders/material/traverseMaterialTextures.d.ts.map +1 -1
  269. package/src/engine/asset/loaders/material/traverseMaterialTextures.js +10 -2
  270. package/src/engine/control/first-person/abilities/Mantle.d.ts.map +1 -1
  271. package/src/engine/control/first-person/abilities/Mantle.js +10 -26
  272. package/src/engine/ecs/dynamic_actions/actions/definition/WeightedRandomActionDescription.d.ts.map +1 -1
  273. package/src/engine/ecs/dynamic_actions/actions/definition/WeightedRandomActionDescription.js +5 -0
  274. package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.d.ts +22 -2
  275. package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.d.ts.map +1 -1
  276. package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.js +92 -41
  277. package/src/engine/ecs/gui/GUIElementSystem.d.ts +9 -0
  278. package/src/engine/ecs/gui/GUIElementSystem.d.ts.map +1 -1
  279. package/src/engine/ecs/gui/GUIElementSystem.js +23 -3
  280. package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.d.ts +3 -1
  281. package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.d.ts.map +1 -1
  282. package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.js +14 -16
  283. package/src/engine/ecs/gui/parallax/GuiElementParallaxSystem.d.ts.map +1 -1
  284. package/src/engine/ecs/gui/parallax/GuiElementParallaxSystem.js +16 -29
  285. package/src/engine/ecs/gui/position/ViewportPositionSystem.d.ts.map +1 -1
  286. package/src/engine/ecs/gui/position/ViewportPositionSystem.js +4 -2
  287. package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.d.ts.map +1 -1
  288. package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.js +12 -74
  289. package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.d.ts.map +1 -1
  290. package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.js +10 -73
  291. package/src/engine/ecs/ik/ik_probe_terrain_contact.d.ts +38 -0
  292. package/src/engine/ecs/ik/ik_probe_terrain_contact.d.ts.map +1 -0
  293. package/src/engine/ecs/ik/ik_probe_terrain_contact.js +119 -0
  294. package/src/engine/ecs/terrain/util/paintTerrainOverlayViaLookupTable.d.ts +0 -1
  295. package/src/engine/ecs/terrain/util/paintTerrainOverlayViaLookupTable.d.ts.map +1 -1
  296. package/src/engine/ecs/terrain/util/paintTerrainOverlayViaLookupTable.js +2 -14
  297. package/src/engine/ecs/transform/Transform64.d.ts +306 -0
  298. package/src/engine/ecs/transform/Transform64.d.ts.map +1 -0
  299. package/src/engine/ecs/transform/Transform64.js +591 -0
  300. package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.d.ts +12 -1
  301. package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.d.ts.map +1 -1
  302. package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.js +14 -10
  303. package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.d.ts.map +1 -1
  304. package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.js +7 -28
  305. package/src/engine/graphics/ecs/highlight/renderer/HighlightDecodeShader.d.ts +1 -2
  306. package/src/engine/graphics/ecs/highlight/renderer/HighlightDecodeShader.d.ts.map +1 -1
  307. package/src/engine/graphics/ecs/highlight/renderer/HighlightDecodeShader.js +4 -12
  308. package/src/engine/graphics/ecs/highlight/renderer/OutlineRenderer.d.ts.map +1 -1
  309. package/src/engine/graphics/ecs/highlight/renderer/OutlineRenderer.js +2 -11
  310. package/src/engine/graphics/ecs/highlight/renderer/makeBlurShader_9.d.ts +1 -2
  311. package/src/engine/graphics/ecs/highlight/renderer/makeBlurShader_9.d.ts.map +1 -1
  312. package/src/engine/graphics/ecs/highlight/renderer/makeBlurShader_9.js +3 -11
  313. package/src/engine/graphics/ecs/highlight/renderer/makeDilationShader.d.ts +1 -2
  314. package/src/engine/graphics/ecs/highlight/renderer/makeDilationShader.d.ts.map +1 -1
  315. package/src/engine/graphics/ecs/highlight/renderer/makeDilationShader.js +3 -11
  316. package/src/engine/graphics/ecs/highlight/renderer/make_screen_space_quad_material.d.ts +33 -0
  317. package/src/engine/graphics/ecs/highlight/renderer/make_screen_space_quad_material.d.ts.map +1 -0
  318. package/src/engine/graphics/ecs/highlight/renderer/make_screen_space_quad_material.js +44 -0
  319. package/src/engine/graphics/ecs/highlight/system/HighlightSystemBase.d.ts +55 -0
  320. package/src/engine/graphics/ecs/highlight/system/HighlightSystemBase.d.ts.map +1 -0
  321. package/src/engine/graphics/ecs/highlight/system/HighlightSystemBase.js +205 -0
  322. package/src/engine/graphics/ecs/highlight/system/MeshHighlightSystem.d.ts +4 -45
  323. package/src/engine/graphics/ecs/highlight/system/MeshHighlightSystem.d.ts.map +1 -1
  324. package/src/engine/graphics/ecs/highlight/system/MeshHighlightSystem.js +39 -162
  325. package/src/engine/graphics/ecs/highlight/system/RenderableHighlightSystem.d.ts +4 -51
  326. package/src/engine/graphics/ecs/highlight/system/RenderableHighlightSystem.d.ts.map +1 -1
  327. package/src/engine/graphics/ecs/highlight/system/RenderableHighlightSystem.js +34 -164
  328. package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.d.ts +5 -57
  329. package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.d.ts.map +1 -1
  330. package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.js +48 -175
  331. package/src/engine/graphics/ecs/light/shadow/extend_shadow_camera_near_for_casters.d.ts.map +1 -1
  332. package/src/engine/graphics/ecs/light/shadow/extend_shadow_camera_near_for_casters.js +7 -25
  333. package/src/engine/graphics/ecs/make_bvh_depth_range_computer.d.ts +26 -0
  334. package/src/engine/graphics/ecs/make_bvh_depth_range_computer.d.ts.map +1 -0
  335. package/src/engine/graphics/ecs/make_bvh_depth_range_computer.js +33 -0
  336. package/src/engine/graphics/ecs/mesh/MeshSystem.d.ts.map +1 -1
  337. package/src/engine/graphics/ecs/mesh/MeshSystem.js +2 -5
  338. package/src/engine/graphics/ecs/mesh/SkeletonUtils.d.ts +3 -3
  339. package/src/engine/graphics/ecs/mesh/SkeletonUtils.js +4 -4
  340. package/src/engine/graphics/ecs/mesh-v2/DeferredBoundsQueue.d.ts +48 -0
  341. package/src/engine/graphics/ecs/mesh-v2/DeferredBoundsQueue.d.ts.map +1 -0
  342. package/src/engine/graphics/ecs/mesh-v2/DeferredBoundsQueue.js +88 -0
  343. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometry.d.ts +28 -0
  344. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometry.d.ts.map +1 -1
  345. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometry.js +79 -0
  346. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometryFlags.js +21 -3
  347. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.d.ts +13 -1
  348. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.d.ts.map +1 -1
  349. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.js +46 -12
  350. package/src/engine/graphics/ecs/render_layers_compute_depth_range.d.ts +35 -0
  351. package/src/engine/graphics/ecs/render_layers_compute_depth_range.d.ts.map +1 -0
  352. package/src/engine/graphics/ecs/render_layers_compute_depth_range.js +64 -0
  353. package/src/engine/graphics/ecs/trail2d/Trail2DSystem.d.ts.map +1 -1
  354. package/src/engine/graphics/ecs/trail2d/Trail2DSystem.js +2 -5
  355. package/src/engine/graphics/ecs/trail3d/Trail3DSystem.d.ts.map +1 -1
  356. package/src/engine/graphics/ecs/trail3d/Trail3DSystem.js +2 -5
  357. package/src/engine/graphics/ecs/water/WaterSystem.d.ts.map +1 -1
  358. package/src/engine/graphics/ecs/water/WaterSystem.js +2 -5
  359. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_nearest.d.ts.map +1 -1
  360. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_nearest.js +22 -94
  361. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_overlap_clipping_volume.d.ts.map +1 -1
  362. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_overlap_clipping_volume.js +17 -57
  363. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_raycast.d.ts.map +1 -1
  364. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_raycast.js +17 -57
  365. package/src/engine/graphics/geometry/buffered/query/nearest_point_on_triangle_record.d.ts +30 -0
  366. package/src/engine/graphics/geometry/buffered/query/nearest_point_on_triangle_record.d.ts.map +1 -0
  367. package/src/engine/graphics/geometry/buffered/query/nearest_point_on_triangle_record.js +87 -0
  368. package/src/engine/graphics/geometry/buffered/query/query_bvh_geometry_nearest.d.ts.map +1 -1
  369. package/src/engine/graphics/geometry/buffered/query/query_bvh_geometry_nearest.js +11 -55
  370. package/src/engine/graphics/geometry/buffered/read_triangle_vertices.d.ts +29 -0
  371. package/src/engine/graphics/geometry/buffered/read_triangle_vertices.d.ts.map +1 -0
  372. package/src/engine/graphics/geometry/buffered/read_triangle_vertices.js +102 -0
  373. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderDepthV0.d.ts.map +1 -1
  374. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderDepthV0.js +17 -122
  375. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderLitV0.d.ts.map +1 -1
  376. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderLitV0.js +15 -194
  377. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderNormalsV0.d.ts.map +1 -1
  378. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderNormalsV0.js +12 -108
  379. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderPerPixelV0.d.ts.map +1 -1
  380. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderPerPixelV0.js +14 -183
  381. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderV0.d.ts.map +1 -1
  382. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderV0.js +12 -154
  383. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderViewportDepthV0.d.ts.map +1 -1
  384. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderViewportDepthV0.js +10 -94
  385. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderWireframeV0.d.ts.map +1 -1
  386. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderWireframeV0.js +8 -72
  387. package/src/engine/graphics/impostors/octahedral/shader/glsl/common.glsl +10 -0
  388. package/src/engine/graphics/impostors/voxel/bake/read_atlas_to_samples.d.ts.map +1 -1
  389. package/src/engine/graphics/impostors/voxel/bake/read_atlas_to_samples.js +79 -58
  390. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderDepthV0.d.ts.map +1 -1
  391. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderDepthV0.js +11 -22
  392. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderLitV0.d.ts.map +1 -1
  393. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderLitV0.js +7 -16
  394. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderNormalsV0.d.ts.map +1 -1
  395. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderNormalsV0.js +5 -9
  396. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderV0.d.ts.map +1 -1
  397. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderV0.js +4 -19
  398. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderViewportDepthV0.d.ts.map +1 -1
  399. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderViewportDepthV0.js +5 -9
  400. package/src/engine/graphics/material/SplatMaterial.d.ts.map +1 -1
  401. package/src/engine/graphics/material/SplatMaterial.js +2 -17
  402. package/src/engine/graphics/material/WaterMaterial.d.ts.map +1 -1
  403. package/src/engine/graphics/material/WaterMaterial.js +3 -18
  404. package/src/engine/graphics/material/manager/compilers/CoalesceTextures.d.ts +4 -4
  405. package/src/engine/graphics/material/manager/compilers/CoalesceTextures.d.ts.map +1 -1
  406. package/src/engine/graphics/material/manager/compilers/CoalesceTextures.js +25 -70
  407. package/src/engine/graphics/particles/ecs/ParticleEmitterSystem.d.ts.map +1 -1
  408. package/src/engine/graphics/particles/ecs/ParticleEmitterSystem.js +2 -5
  409. package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.d.ts +8 -11
  410. package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.d.ts.map +1 -1
  411. package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.js +20 -21
  412. package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.d.ts +39 -0
  413. package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.d.ts.map +1 -0
  414. package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.js +45 -0
  415. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.d.ts +6 -8
  416. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.d.ts.map +1 -1
  417. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.js +2 -13
  418. package/src/engine/graphics/particles/particular/engine/utils/distributeParticlesOnObject3D.d.ts.map +1 -1
  419. package/src/engine/graphics/particles/particular/engine/utils/distributeParticlesOnObject3D.js +16 -78
  420. package/src/engine/graphics/particles/particular/engine/utils/distribute_points_on_indexed_triangles.d.ts +45 -0
  421. package/src/engine/graphics/particles/particular/engine/utils/distribute_points_on_indexed_triangles.d.ts.map +1 -0
  422. package/src/engine/graphics/particles/particular/engine/utils/distribute_points_on_indexed_triangles.js +168 -0
  423. package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.d.ts.map +1 -1
  424. package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.js +11 -115
  425. package/src/engine/graphics/postprocess/threejs/shaders/CopyShader.d.ts +24 -16
  426. package/src/engine/graphics/postprocess/threejs/shaders/CopyShader.d.ts.map +1 -1
  427. package/src/engine/graphics/postprocess/threejs/shaders/CopyShader.js +15 -47
  428. package/src/engine/graphics/render/buffer/simple-fx/ao/AmbientOcclusionPostProcessEffect.d.ts +4 -0
  429. package/src/engine/graphics/render/buffer/simple-fx/ao/AmbientOcclusionPostProcessEffect.d.ts.map +1 -1
  430. package/src/engine/graphics/render/buffer/simple-fx/ao/AmbientOcclusionPostProcessEffect.js +4 -0
  431. package/src/engine/graphics/sh3/build_injected_shader.d.ts +51 -0
  432. package/src/engine/graphics/sh3/build_injected_shader.d.ts.map +1 -0
  433. package/src/engine/graphics/sh3/build_injected_shader.js +56 -0
  434. package/src/engine/graphics/sh3/gi/material/MaterialTransformer.d.ts.map +1 -1
  435. package/src/engine/graphics/sh3/gi/material/MaterialTransformer.js +10 -1
  436. package/src/engine/graphics/sh3/gi/material/chunk_lpv_get_irradiance_at.d.ts.map +1 -1
  437. package/src/engine/graphics/sh3/gi/material/chunk_lpv_get_irradiance_at.js +17 -0
  438. package/src/engine/graphics/sh3/gi/material/common.d.ts +1 -1
  439. package/src/engine/graphics/sh3/gi/material/common.js +6 -222
  440. package/src/engine/graphics/sh3/gi/material/space_fragment/build_fragment_shader.d.ts.map +1 -1
  441. package/src/engine/graphics/sh3/gi/material/space_fragment/build_fragment_shader.js +7 -11
  442. package/src/engine/graphics/sh3/gi/material/space_fragment/build_vertex_shader.d.ts.map +1 -1
  443. package/src/engine/graphics/sh3/gi/material/space_fragment/build_vertex_shader.js +27 -29
  444. package/src/engine/graphics/sh3/gi/material/space_vertex/build_fragment_shader.d.ts.map +1 -1
  445. package/src/engine/graphics/sh3/gi/material/space_vertex/build_fragment_shader.js +7 -11
  446. package/src/engine/graphics/sh3/gi/material/space_vertex/build_vertex_shader.d.ts.map +1 -1
  447. package/src/engine/graphics/sh3/gi/material/space_vertex/build_vertex_shader.js +7 -12
  448. package/src/engine/graphics/sh3/grid_dilate_average.d.ts +38 -0
  449. package/src/engine/graphics/sh3/grid_dilate_average.d.ts.map +1 -0
  450. package/src/engine/graphics/sh3/grid_dilate_average.js +175 -0
  451. package/src/engine/graphics/sh3/lightmap/lightmap_dilate.d.ts +4 -0
  452. package/src/engine/graphics/sh3/lightmap/lightmap_dilate.d.ts.map +1 -1
  453. package/src/engine/graphics/sh3/lightmap/lightmap_dilate.js +7 -70
  454. package/src/engine/graphics/sh3/lpg/light_probe_grid_dilate.d.ts +6 -0
  455. package/src/engine/graphics/sh3/lpg/light_probe_grid_dilate.d.ts.map +1 -1
  456. package/src/engine/graphics/sh3/lpg/light_probe_grid_dilate.js +14 -113
  457. package/src/engine/graphics/sh3/lpg/material/chunk_lpg_get_irradiance_at.d.ts.map +1 -1
  458. package/src/engine/graphics/sh3/lpg/material/chunk_lpg_get_irradiance_at.js +7 -0
  459. package/src/engine/graphics/sh3/lpg/material/space_fragment/build_fragment_shader.d.ts.map +1 -1
  460. package/src/engine/graphics/sh3/lpg/material/space_fragment/build_fragment_shader.js +5 -8
  461. package/src/engine/graphics/sh3/lpg/material/space_fragment/build_vertex_shader.d.ts.map +1 -1
  462. package/src/engine/graphics/sh3/lpg/material/space_fragment/build_vertex_shader.js +5 -8
  463. package/src/engine/graphics/sh3/lpg/material/space_vertex/build_fragment_shader.d.ts.map +1 -1
  464. package/src/engine/graphics/sh3/lpg/material/space_vertex/build_fragment_shader.js +5 -8
  465. package/src/engine/graphics/sh3/lpg/material/space_vertex/build_vertex_shader.d.ts.map +1 -1
  466. package/src/engine/graphics/sh3/lpg/material/space_vertex/build_vertex_shader.js +5 -8
  467. package/src/engine/graphics/sh3/lpv/depth/chunk_probe_depth_sampling.d.ts +38 -0
  468. package/src/engine/graphics/sh3/lpv/depth/chunk_probe_depth_sampling.d.ts.map +1 -0
  469. package/src/engine/graphics/sh3/lpv/depth/chunk_probe_depth_sampling.js +265 -0
  470. package/src/engine/graphics/sh3/lpv/depth/octahedral/shader/visualize.frag.glsl +11 -0
  471. package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/VLPDepthMapVisualisation.d.ts.map +1 -1
  472. package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/VLPDepthMapVisualisation.js +5 -1
  473. package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/visualise.frag.glsl +189 -419
  474. package/src/engine/graphics/sh3/shader/visualize.frag.d.ts +1 -1
  475. package/src/engine/graphics/sh3/shader/visualize.frag.js +7 -0
  476. package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.d.ts +102 -0
  477. package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.d.ts.map +1 -0
  478. package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.js +277 -0
  479. package/src/engine/graphics/shaders/chunks/glsl_packing.d.ts +29 -0
  480. package/src/engine/graphics/shaders/chunks/glsl_packing.d.ts.map +1 -0
  481. package/src/engine/graphics/shaders/chunks/glsl_packing.js +30 -0
  482. package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.d.ts +40 -0
  483. package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.d.ts.map +1 -0
  484. package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.js +57 -0
  485. package/src/engine/graphics/shaders/lib/make_clouds_uniforms.d.ts +22 -0
  486. package/src/engine/graphics/shaders/lib/make_clouds_uniforms.d.ts.map +1 -0
  487. package/src/engine/graphics/shaders/lib/make_clouds_uniforms.js +39 -0
  488. package/src/engine/graphics/texture/attribute_spec_to_three_format.d.ts +6 -0
  489. package/src/engine/graphics/texture/attribute_spec_to_three_format.d.ts.map +1 -1
  490. package/src/engine/graphics/texture/attribute_spec_to_three_format.js +9 -9
  491. package/src/engine/graphics/texture/channel_count_to_format_prefix.d.ts +14 -0
  492. package/src/engine/graphics/texture/channel_count_to_format_prefix.d.ts.map +1 -0
  493. package/src/engine/graphics/texture/channel_count_to_format_prefix.js +26 -0
  494. package/src/engine/graphics/texture/computeThreeTextureInternalFormatFromDataType.d.ts.map +1 -1
  495. package/src/engine/graphics/texture/computeThreeTextureInternalFormatFromDataType.js +2 -20
  496. package/src/engine/graphics/texture/normalized_internal_format.d.ts.map +1 -1
  497. package/src/engine/graphics/texture/normalized_internal_format.js +2 -20
  498. package/src/engine/graphics/texture/sampler/convertTexture2Sampler2D.d.ts.map +1 -1
  499. package/src/engine/graphics/texture/sampler/convertTexture2Sampler2D.js +9 -3
  500. package/src/engine/input/devices/gamepad/GamepadDeviceLayout.d.ts +54 -0
  501. package/src/engine/input/devices/gamepad/GamepadDeviceLayout.d.ts.map +1 -0
  502. package/src/engine/input/devices/gamepad/GamepadDeviceLayout.js +323 -0
  503. package/src/engine/input/devices/gamepad/GamepadHandle.d.ts +21 -2
  504. package/src/engine/input/devices/gamepad/GamepadHandle.d.ts.map +1 -1
  505. package/src/engine/input/devices/gamepad/GamepadHandle.js +39 -11
  506. package/src/engine/input/devices/gamepad/GamepadLayout.d.ts +128 -0
  507. package/src/engine/input/devices/gamepad/GamepadLayout.d.ts.map +1 -0
  508. package/src/engine/input/devices/gamepad/GamepadLayout.js +160 -0
  509. package/src/engine/input/devices/gamepad/GamepadStandardMapping.d.ts +10 -0
  510. package/src/engine/input/devices/gamepad/GamepadStandardMapping.d.ts.map +1 -1
  511. package/src/engine/input/devices/gamepad/GamepadStandardMapping.js +11 -0
  512. package/src/engine/input/devices/gamepad/GamepadStick.d.ts +5 -1
  513. package/src/engine/input/devices/gamepad/GamepadStick.d.ts.map +1 -1
  514. package/src/engine/input/devices/gamepad/GamepadStick.js +5 -1
  515. package/src/engine/input/devices/gamepad/gamepad_layout_database.d.ts +27 -0
  516. package/src/engine/input/devices/gamepad/gamepad_layout_database.d.ts.map +1 -0
  517. package/src/engine/input/devices/gamepad/gamepad_layout_database.js +144 -0
  518. package/src/engine/input/devices/gamepad/gamepad_read_hat_axis.d.ts +25 -0
  519. package/src/engine/input/devices/gamepad/gamepad_read_hat_axis.d.ts.map +1 -0
  520. package/src/engine/input/devices/gamepad/gamepad_read_hat_axis.js +61 -0
  521. package/src/engine/input/devices/gamepad/prototypeGamepadTester.d.ts +2 -0
  522. package/src/engine/input/devices/gamepad/prototypeGamepadTester.d.ts.map +1 -0
  523. package/src/engine/input/devices/gamepad/prototypeGamepadTester.js +2124 -0
  524. package/src/engine/input/ecs/util/TopDownCameraControllerHelper.d.ts.map +1 -1
  525. package/src/engine/input/ecs/util/TopDownCameraControllerHelper.js +3 -33
  526. package/src/engine/intelligence/behavior/util/RandomDelayBehavior.d.ts.map +1 -1
  527. package/src/engine/intelligence/behavior/util/RandomDelayBehavior.js +5 -0
  528. package/src/engine/network/adapters/QuaternionInterpolationAdapter.d.ts.map +1 -1
  529. package/src/engine/network/adapters/QuaternionInterpolationAdapter.js +18 -19
  530. package/src/engine/network/adapters/TransformInterpolationAdapter.d.ts.map +1 -1
  531. package/src/engine/network/adapters/TransformInterpolationAdapter.js +18 -13
  532. package/src/engine/network/orchestrator/NetworkPeer.d.ts.map +1 -1
  533. package/src/engine/network/orchestrator/NetworkPeer.js +2 -1
  534. package/src/engine/network/sim/ActionLog.d.ts +9 -6
  535. package/src/engine/network/sim/ActionLog.d.ts.map +1 -1
  536. package/src/engine/network/sim/ActionLog.js +43 -80
  537. package/src/engine/network/sim/SmoothingState.d.ts.map +1 -1
  538. package/src/engine/network/sim/SmoothingState.js +27 -28
  539. package/src/engine/network/state/FrameBufferRing.d.ts +84 -0
  540. package/src/engine/network/state/FrameBufferRing.d.ts.map +1 -0
  541. package/src/engine/network/state/FrameBufferRing.js +168 -0
  542. package/src/engine/network/state/InputRing.d.ts +14 -12
  543. package/src/engine/network/state/InputRing.d.ts.map +1 -1
  544. package/src/engine/network/state/InputRing.js +37 -76
  545. package/src/engine/network/transport/LoopbackTransport.d.ts.map +1 -1
  546. package/src/engine/network/transport/LoopbackTransport.js +10 -31
  547. package/src/engine/network/transport/Transport.d.ts +42 -2
  548. package/src/engine/network/transport/Transport.d.ts.map +1 -1
  549. package/src/engine/network/transport/Transport.js +87 -3
  550. package/src/engine/network/transport/adapters/NodeUDPTransport.d.ts.map +1 -1
  551. package/src/engine/network/transport/adapters/NodeUDPTransport.js +7 -33
  552. package/src/engine/network/transport/adapters/SimulatedTransport.d.ts.map +1 -1
  553. package/src/engine/network/transport/adapters/SimulatedTransport.js +17 -28
  554. package/src/engine/network/transport/adapters/WebRTCDataChannelTransport.d.ts.map +1 -1
  555. package/src/engine/network/transport/adapters/WebRTCDataChannelTransport.js +6 -32
  556. package/src/engine/network/transport/adapters/WebSocketTransport.d.ts.map +1 -1
  557. package/src/engine/network/transport/adapters/WebSocketTransport.js +6 -32
  558. package/src/engine/network/transport/adapters/WebTransportTransport.d.ts.map +1 -1
  559. package/src/engine/network/transport/adapters/WebTransportTransport.js +11 -22
  560. package/src/engine/physics/constraint/solve_constraints.d.ts.map +1 -1
  561. package/src/engine/physics/constraint/solve_constraints.js +18 -48
  562. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  563. package/src/engine/physics/fluid/ecs/FluidSystem.d.ts +3 -3
  564. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_scalar.d.ts.map +1 -1
  565. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_scalar.js +7 -0
  566. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.d.ts.map +1 -1
  567. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.js +11 -18
  568. package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.d.ts.map +1 -1
  569. package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.js +7 -0
  570. package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.d.ts.map +1 -1
  571. package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.js +15 -57
  572. package/src/engine/physics/fluid/solver/v3_grid_apply_scalar_advection.d.ts.map +1 -1
  573. package/src/engine/physics/fluid/solver/v3_grid_apply_scalar_advection.js +7 -0
  574. package/src/engine/physics/fluid/solver/v3_grid_limit8_at_indices.d.ts +28 -0
  575. package/src/engine/physics/fluid/solver/v3_grid_limit8_at_indices.d.ts.map +1 -0
  576. package/src/engine/physics/fluid/solver/v3_grid_limit8_at_indices.js +38 -0
  577. package/src/engine/physics/fluid/solver/v3_mac_advect_maccormack_velocity.d.ts.map +1 -1
  578. package/src/engine/physics/fluid/solver/v3_mac_advect_maccormack_velocity.js +12 -14
  579. package/src/engine/physics/fluid/solver/v3_mac_apply_vorticity_confinement.d.ts.map +1 -1
  580. package/src/engine/physics/fluid/solver/v3_mac_apply_vorticity_confinement.js +9 -0
  581. package/src/engine/physics/mls-mpm/MLS_MPM.d.ts +13 -1
  582. package/src/engine/physics/mls-mpm/MLS_MPM.d.ts.map +1 -1
  583. package/src/engine/physics/mls-mpm/MLS_MPM.js +15 -4
  584. package/src/engine/physics/narrowphase/box_triangle_contact.d.ts.map +1 -1
  585. package/src/engine/physics/narrowphase/box_triangle_contact.js +9 -0
  586. package/src/engine/physics/narrowphase/capsule_contacts.d.ts.map +1 -1
  587. package/src/engine/physics/narrowphase/capsule_contacts.js +10 -11
  588. package/src/engine/physics/narrowphase/sphere_triangle_contact.d.ts.map +1 -1
  589. package/src/engine/physics/narrowphase/sphere_triangle_contact.js +7 -12
  590. package/src/engine/physics/solver/apply_impulse_to_body.d.ts +36 -0
  591. package/src/engine/physics/solver/apply_impulse_to_body.d.ts.map +1 -0
  592. package/src/engine/physics/solver/apply_impulse_to_body.js +86 -0
  593. package/src/engine/physics/solver/solve_contacts.d.ts.map +1 -1
  594. package/src/engine/physics/solver/solve_contacts.js +1 -53
  595. package/src/engine/plugin/EnginePlugin.d.ts +3 -0
  596. package/src/engine/plugin/EnginePlugin.d.ts.map +1 -1
  597. package/src/engine/plugin/EnginePlugin.js +3 -0
  598. package/src/engine/save/storage/IndexedDBStorage.d.ts +1 -0
  599. package/src/engine/save/storage/IndexedDBStorage.d.ts.map +1 -1
  600. package/src/engine/save/storage/IndexedDBStorage.js +50 -50
  601. package/src/engine/sound/ecs/SoundControllerSystem.d.ts.map +1 -1
  602. package/src/engine/sound/ecs/SoundControllerSystem.js +2 -10
  603. package/src/engine/sound/simulation/AcousticSimulator.d.ts.map +1 -1
  604. package/src/engine/sound/simulation/AcousticSimulator.js +2 -1
  605. package/src/engine/sound/simulation/core/AcousticOccluderIndex.d.ts.map +1 -1
  606. package/src/engine/sound/simulation/core/AcousticOccluderIndex.js +4 -6
  607. package/src/engine/sound/simulation/core/OcclusionSolver.d.ts.map +1 -1
  608. package/src/engine/sound/simulation/core/OcclusionSolver.js +2 -9
  609. package/src/engine/sound/simulation/probe/ProbeVisibilityRecheck.d.ts.map +1 -1
  610. package/src/engine/sound/simulation/probe/ProbeVisibilityRecheck.js +9 -14
  611. package/src/engine/sound/simulation/probe/bakeReverbBands.d.ts.map +1 -1
  612. package/src/engine/sound/simulation/probe/bakeReverbBands.js +2 -6
  613. package/src/engine/sound/simulation/probe/bakeVisibility.d.ts.map +1 -1
  614. package/src/engine/sound/simulation/probe/bakeVisibility.js +4 -34
  615. package/src/engine/sound/simulation/probe/probe_densify_portals.d.ts.map +1 -1
  616. package/src/engine/sound/simulation/probe/probe_densify_portals.js +3 -6
  617. package/src/engine/sound/simulation/probe/probe_edge_key.d.ts +31 -0
  618. package/src/engine/sound/simulation/probe/probe_edge_key.d.ts.map +1 -0
  619. package/src/engine/sound/simulation/probe/probe_edge_key.js +38 -0
  620. package/src/engine/sound/simulation/probe/probe_sdf_grid.d.ts +10 -3
  621. package/src/engine/sound/simulation/probe/probe_sdf_grid.d.ts.map +1 -1
  622. package/src/engine/sound/simulation/probe/probe_sdf_grid.js +10 -22
  623. package/src/engine/sound/simulation/probe/probe_visibility_augment.d.ts.map +1 -1
  624. package/src/engine/sound/simulation/probe/probe_visibility_augment.js +12 -48
  625. package/src/engine/sound/simulation/probe/probe_visibility_bridge_components.d.ts.map +1 -1
  626. package/src/engine/sound/simulation/probe/probe_visibility_bridge_components.js +4 -3
  627. package/src/engine/sound/simulation/render/foaReverbImpulseResponse.d.ts +5 -4
  628. package/src/engine/sound/simulation/render/foaReverbImpulseResponse.d.ts.map +1 -1
  629. package/src/engine/sound/simulation/render/foaReverbImpulseResponse.js +23 -31
  630. package/src/engine/sound/simulation/render/reverbImpulseResponse.d.ts +1 -8
  631. package/src/engine/sound/simulation/render/reverbImpulseResponse.d.ts.map +1 -1
  632. package/src/engine/sound/simulation/render/reverbImpulseResponse.js +21 -31
  633. package/src/engine/sound/simulation/render/reverb_band_tails.d.ts +55 -0
  634. package/src/engine/sound/simulation/render/reverb_band_tails.d.ts.map +1 -0
  635. package/src/engine/sound/simulation/render/reverb_band_tails.js +93 -0
  636. package/src/engine/sound/sopra/definition/EventDescriptionSerializationAdapter.d.ts.map +1 -1
  637. package/src/engine/sound/sopra/definition/EventDescriptionSerializationAdapter.js +6 -22
  638. package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.d.ts.map +1 -1
  639. package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.js +7 -3
  640. package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClipSerializationAdapter.d.ts.map +1 -1
  641. package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClipSerializationAdapter.js +7 -22
  642. package/src/engine/sound/sopra/definition/clip/ContainerAudioClip.d.ts.map +1 -1
  643. package/src/engine/sound/sopra/definition/clip/ContainerAudioClip.js +28 -0
  644. package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.d.ts.map +1 -1
  645. package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.js +1 -5
  646. package/src/engine/sound/sopra/definition/clip/SequenceContainerAudioClip.d.ts.map +1 -1
  647. package/src/engine/sound/sopra/definition/clip/SequenceContainerAudioClip.js +1 -13
  648. package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.d.ts.map +1 -1
  649. package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.js +2 -8
  650. package/src/engine/sound/sopra/definition/effect/ReverbEffect.d.ts +3 -0
  651. package/src/engine/sound/sopra/definition/effect/ReverbEffect.d.ts.map +1 -1
  652. package/src/engine/sound/sopra/definition/effect/ReverbEffect.js +26 -14
  653. package/src/engine/sound/sopra/runtime/BusGraph.d.ts.map +1 -1
  654. package/src/engine/sound/sopra/runtime/BusGraph.js +21 -33
  655. package/src/engine/sound/sopra/runtime/EventInstance.js +1 -1
  656. package/src/engine/ui/apply_pointer_tilt_3d.d.ts +25 -0
  657. package/src/engine/ui/apply_pointer_tilt_3d.d.ts.map +1 -0
  658. package/src/engine/ui/apply_pointer_tilt_3d.js +50 -0
  659. package/src/engine/ui/bindings/processors/DomElementProcessorTilt3D.d.ts.map +1 -1
  660. package/src/engine/ui/bindings/processors/DomElementProcessorTilt3D.js +9 -26
  661. package/src/generation/filtering/numeric/CellFilterCache.d.ts.map +1 -1
  662. package/src/generation/filtering/numeric/CellFilterCache.js +4 -21
  663. package/src/generation/filtering/numeric/complex/CellFilterSobel.d.ts.map +1 -1
  664. package/src/generation/filtering/numeric/complex/CellFilterSobel.js +11 -20
  665. package/src/generation/filtering/numeric/math/CellFilterPower.d.ts +1 -1
  666. package/src/generation/filtering/numeric/math/CellFilterPower.d.ts.map +1 -1
  667. package/src/generation/filtering/numeric/math/CellFilterPower.js +1 -5
  668. package/src/generation/filtering/numeric/process/computeCellFilterGradient.d.ts.map +1 -1
  669. package/src/generation/filtering/numeric/process/computeCellFilterGradient.js +13 -15
  670. package/src/generation/filtering/numeric/process/computeCellFilterSobel.d.ts +20 -0
  671. package/src/generation/filtering/numeric/process/computeCellFilterSobel.d.ts.map +1 -0
  672. package/src/generation/filtering/numeric/process/computeCellFilterSobel.js +36 -0
  673. package/src/generation/filtering/numeric/util/CellFilterDisplaced.d.ts.map +1 -1
  674. package/src/generation/filtering/numeric/util/CellFilterDisplaced.js +11 -6
  675. package/src/generation/filtering/numeric/util/populateSampler2DFromCellFilter.d.ts.map +1 -1
  676. package/src/generation/filtering/numeric/util/populateSampler2DFromCellFilter.js +18 -36
  677. package/src/generation/filtering/numeric/util/write_cell_filter_to_sampler2d.d.ts +21 -0
  678. package/src/generation/filtering/numeric/util/write_cell_filter_to_sampler2d.d.ts.map +1 -0
  679. package/src/generation/filtering/numeric/util/write_cell_filter_to_sampler2d.js +47 -0
  680. package/src/generation/filtering/util/cell_filter_weights_pick.d.ts +25 -0
  681. package/src/generation/filtering/util/cell_filter_weights_pick.d.ts.map +1 -0
  682. package/src/generation/filtering/util/cell_filter_weights_pick.js +54 -0
  683. package/src/generation/grid/generation/discrete/GridTaskConnectRooms.d.ts.map +1 -1
  684. package/src/generation/grid/generation/discrete/GridTaskConnectRooms.js +14 -1
  685. package/src/generation/markers/GridActionRuleSet.d.ts.map +1 -1
  686. package/src/generation/markers/GridActionRuleSet.js +10 -7
  687. package/src/generation/markers/GridCellActionPlaceMarker.d.ts.map +1 -1
  688. package/src/generation/markers/GridCellActionPlaceMarker.js +10 -12
  689. package/src/generation/markers/actions/probability/MarkerNodeActionSelectWeighted.d.ts.map +1 -1
  690. package/src/generation/markers/actions/probability/MarkerNodeActionSelectWeighted.js +7 -42
  691. package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.d.ts.map +1 -1
  692. package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.js +11 -6
  693. package/src/generation/placement/GridCellPlacementRule.d.ts.map +1 -1
  694. package/src/generation/placement/GridCellPlacementRule.js +10 -7
  695. package/src/generation/placement/action/GridCellActionPlaceTags.d.ts.map +1 -1
  696. package/src/generation/placement/action/GridCellActionPlaceTags.js +10 -4
  697. package/src/generation/placement/action/random/weighted/CellActionSelectWeightedRandom.d.ts.map +1 -1
  698. package/src/generation/placement/action/random/weighted/CellActionSelectWeightedRandom.js +2 -38
  699. package/src/generation/placement/action/util/GridCellDisplacedAction.d.ts.map +1 -1
  700. package/src/generation/placement/action/util/GridCellDisplacedAction.js +11 -6
  701. package/src/generation/rules/cell/CellMatcherGridPattern.d.ts.map +1 -1
  702. package/src/generation/rules/cell/CellMatcherGridPattern.js +11 -4
  703. package/src/generation/theme/ThemeEngine.d.ts.map +1 -1
  704. package/src/generation/theme/ThemeEngine.js +7 -12
  705. package/src/view/elements/Group.d.ts +24 -3
  706. package/src/view/elements/Group.d.ts.map +1 -1
  707. package/src/view/elements/Group.js +56 -34
  708. package/src/view/minimap/gl/MinimapMarkersGL.d.ts.map +1 -1
  709. package/src/view/minimap/gl/MinimapMarkersGL.js +3 -1
@@ -1,27 +1,18 @@
1
- import { sdnoise3 } from "./sdnoise.js";
2
-
3
-
4
- const p_x0 = [];
5
- const p_y0 = [];
6
- const p_z0 = [];
7
-
8
- /**
9
- *
10
- * @param {number[]} result
11
- * @param {number} x
12
- * @param {number} y
13
- * @param {number} z
14
- */
15
- export function curl_noise_3d(result, x,y,z) {
16
- sdnoise3(p_x0, x, y, z);
17
- sdnoise3(p_y0, x + 31.341, y - 43.23, z + 12.34);
18
- sdnoise3(p_z0, x - 231.141, y + 124.123, z -54.4341);
19
-
20
- const _x = p_z0[1] - p_y0[2];
21
- const _y = p_x0[2] - p_z0[0];
22
- const _z = p_y0[0] - p_x0[1];
23
-
24
- result[0] = _x;
25
- result[1] = _y;
26
- result[2] = _z;
27
- }
1
+ import { curl_noise_3dt } from "./curl_noise_3dt.js";
2
+
3
+ /**
4
+ * Divergence-free 3D curl noise.
5
+ *
6
+ * This is the time-independent face of {@link curl_noise_3dt}: sampling the animated field at `w = 0`.
7
+ * `0` is a real point on the time axis, not a sentinel. The three decorrelation offsets that separate the
8
+ * potential-field components live in `curl_noise_3dt` only — duplicating them here meant retuning one
9
+ * field silently decorrelated it from the other.
10
+ *
11
+ * @param {number[]} result
12
+ * @param {number} x
13
+ * @param {number} y
14
+ * @param {number} z
15
+ */
16
+ export function curl_noise_3d(result, x, y, z) {
17
+ curl_noise_3dt(result, x, y, z, 0);
18
+ }
@@ -1,22 +1,34 @@
1
1
  /**
2
- * Second coordinate of the Hammersley set: the van der Corput radical inverse
3
- * of `i` in base `R`.
2
+ * Writes the `i`-th point of the `N`-point Hammersley set to `output`.
4
3
  *
5
- * Computed in closed form, as {@link halton_sequence} does. The previous
6
- * incremental formulation restarted from zero and applied `i` successive
7
- * additions, so for any base whose reciprocal is not exactly representable --
8
- * base 3 among them -- rounding accumulated until the comparisons inside it
9
- * stopped agreeing with exact arithmetic and the sequence collapsed onto a
10
- * short cycle. It was also O(i) per element, and therefore quadratic to
11
- * enumerate; this is O(log i).
4
+ * The point is `( i/N, Φ_b(i) )`, one radical inverse per entry of `bases`.
5
+ * Only the leading `i/N` distinguishes the Hammersley set from the Halton
6
+ * sequence -- every coordinate after it is a radical inverse, identical to the
7
+ * corresponding Halton coordinate. That one term is the whole construction: it
8
+ * buys a log factor of star discrepancy, O((log N)^(s-1) / N) against Halton's
9
+ * O((log N)^s / N), and it is paid for with `N`.
12
10
  *
13
- * The radical inverse does not depend on the size of the set, so the `count`
14
- * parameter this used to take is gone: the first Hammersley coordinate is
15
- * `i / count` and belongs to the caller. It was never read by the body.
11
+ * Which is why this is a *set* and not a sequence. `N` is fixed before the
12
+ * first point, and adding one moves every point already emitted. Where samples
13
+ * are drawn until some quality bar is met, rather than counted out in advance,
14
+ * the extensible {@link halton_sequence} is the one that applies.
16
15
  *
17
- * @param {number} i index of sequence element
18
- * @param {number} R a prime number
19
- * @returns {number} value in [0,1)
16
+ * ### This is the slow path
17
+ *
18
+ * Prefer {@link hammersley_sequence_2d}, which is the two-dimensional base-2
19
+ * case -- overwhelmingly the common one, and the only one anything in this tree
20
+ * currently asks for. It resolves its second coordinate through
21
+ * {@link radical_inverse_VdC_base_2}: a single bit reversal and a multiply, no
22
+ * loop. This function has no such route. Each coordinate costs a digit loop
23
+ * with a division per digit, so a point runs `bases.length` of them. Generate
24
+ * the set once into a buffer, as {@link generate_hammersley_jitter} does; do
25
+ * not call it per sample inside a hot loop.
26
+ *
27
+ * @param {number[]|Float32Array|Float64Array} output receives `1 + bases.length` values
28
+ * @param {number} output_offset
29
+ * @param {number} i index of the point within the set
30
+ * @param {number} N size of the set; `i` must lie in [0, N)
31
+ * @param {number[]} bases one per dimension after the first, pairwise coprime -- consecutive primes, canonically
20
32
  */
21
- export function hammersley_sequence(i: number, R: number): number;
33
+ export function hammersley_sequence(output: number[] | Float32Array | Float64Array, output_offset: number, i: number, N: number, bases: number[]): void;
22
34
  //# sourceMappingURL=hammersley_sequence.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hammersley_sequence.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/statistics/hammersley_sequence.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,uCAJW,MAAM,KACN,MAAM,GACJ,MAAM,CAelB"}
1
+ {"version":3,"file":"hammersley_sequence.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/statistics/hammersley_sequence.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,4CANW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,iBAClC,MAAM,KACN,MAAM,KACN,MAAM,SACN,MAAM,EAAE,QAmBlB"}
@@ -1,34 +1,53 @@
1
- /**
2
- * Second coordinate of the Hammersley set: the van der Corput radical inverse
3
- * of `i` in base `R`.
4
- *
5
- * Computed in closed form, as {@link halton_sequence} does. The previous
6
- * incremental formulation restarted from zero and applied `i` successive
7
- * additions, so for any base whose reciprocal is not exactly representable --
8
- * base 3 among them -- rounding accumulated until the comparisons inside it
9
- * stopped agreeing with exact arithmetic and the sequence collapsed onto a
10
- * short cycle. It was also O(i) per element, and therefore quadratic to
11
- * enumerate; this is O(log i).
12
- *
13
- * The radical inverse does not depend on the size of the set, so the `count`
14
- * parameter this used to take is gone: the first Hammersley coordinate is
15
- * `i / count` and belongs to the caller. It was never read by the body.
16
- *
17
- * @param {number} i index of sequence element
18
- * @param {number} R a prime number
19
- * @returns {number} value in [0,1)
20
- */
21
- export function hammersley_sequence(i, R) {
22
-
23
- let result = 0;
24
- let f = 1;
25
- let n = i;
26
-
27
- while (n > 0) {
28
- f = f / R;
29
- result = result + f * (n % R);
30
- n = (n / R) >>> 0;
31
- }
32
-
33
- return result;
34
- }
1
+ import { assert } from "../../assert.js";
2
+ import { halton_sequence } from "./halton_sequence.js";
3
+
4
+ /**
5
+ * Writes the `i`-th point of the `N`-point Hammersley set to `output`.
6
+ *
7
+ * The point is `( i/N, Φ_b(i) )`, one radical inverse per entry of `bases`.
8
+ * Only the leading `i/N` distinguishes the Hammersley set from the Halton
9
+ * sequence -- every coordinate after it is a radical inverse, identical to the
10
+ * corresponding Halton coordinate. That one term is the whole construction: it
11
+ * buys a log factor of star discrepancy, O((log N)^(s-1) / N) against Halton's
12
+ * O((log N)^s / N), and it is paid for with `N`.
13
+ *
14
+ * Which is why this is a *set* and not a sequence. `N` is fixed before the
15
+ * first point, and adding one moves every point already emitted. Where samples
16
+ * are drawn until some quality bar is met, rather than counted out in advance,
17
+ * the extensible {@link halton_sequence} is the one that applies.
18
+ *
19
+ * ### This is the slow path
20
+ *
21
+ * Prefer {@link hammersley_sequence_2d}, which is the two-dimensional base-2
22
+ * case -- overwhelmingly the common one, and the only one anything in this tree
23
+ * currently asks for. It resolves its second coordinate through
24
+ * {@link radical_inverse_VdC_base_2}: a single bit reversal and a multiply, no
25
+ * loop. This function has no such route. Each coordinate costs a digit loop
26
+ * with a division per digit, so a point runs `bases.length` of them. Generate
27
+ * the set once into a buffer, as {@link generate_hammersley_jitter} does; do
28
+ * not call it per sample inside a hot loop.
29
+ *
30
+ * @param {number[]|Float32Array|Float64Array} output receives `1 + bases.length` values
31
+ * @param {number} output_offset
32
+ * @param {number} i index of the point within the set
33
+ * @param {number} N size of the set; `i` must lie in [0, N)
34
+ * @param {number[]} bases one per dimension after the first, pairwise coprime -- consecutive primes, canonically
35
+ */
36
+ export function hammersley_sequence(
37
+ output, output_offset,
38
+ i, N, bases
39
+ ) {
40
+ assert.isNonNegativeInteger(output_offset, 'output_offset');
41
+ assert.isNonNegativeInteger(i, 'i');
42
+ assert.isPositiveInteger(N, 'N');
43
+ assert.lessThan(i, N, 'point index must lie within the set');
44
+ assert.isArray(bases, 'bases');
45
+
46
+ output[output_offset] = i / N;
47
+
48
+ const dimensions = bases.length;
49
+
50
+ for (let d = 0; d < dimensions; d++) {
51
+ output[output_offset + 1 + d] = halton_sequence(bases[d], i);
52
+ }
53
+ }
@@ -3,8 +3,8 @@
3
3
  * Higher value means more similarity.
4
4
  * @param {string} first
5
5
  * @param {string} second
6
- * @param {number} first_length
7
- * @param {number} second_length
6
+ * @param {number} first_length length of the first string
7
+ * @param {number} second_length length of the second string
8
8
  * @return {number}
9
9
  */
10
10
  export function string_jaro_distance(first: string, second: string, first_length: number, second_length: number): number;
@@ -8,16 +8,16 @@ import { min2 } from "../../math/min2.js";
8
8
  * Higher value means more similarity.
9
9
  * @param {string} first
10
10
  * @param {string} second
11
- * @param {number} first_length
12
- * @param {number} second_length
11
+ * @param {number} first_length length of the first string
12
+ * @param {number} second_length length of the second string
13
13
  * @return {number}
14
14
  */
15
15
  export function string_jaro_distance(
16
16
  first, second,
17
17
  first_length, second_length
18
18
  ) {
19
- assert.isString(first,'first');
20
- assert.isString(second,'second');
19
+ assert.isString(first, 'first');
20
+ assert.isString(second, 'second');
21
21
 
22
22
  // TODO can do better for short strings under 32 characters by using int32 bitmask. This would avoid allocation entirely
23
23
  const matches1 = BitSet.fixedSize(first_length);
@@ -7,6 +7,9 @@
7
7
  * with no derived shorthand. Compound matrices like Newton or Volt fall back to base-unit
8
8
  * rendering (`kg·m/s^2`, `kg·m^2/s^3·A`).
9
9
  *
10
+ * The ordering invariant (array index === UnitDimension ordinal) is defined once, by
11
+ * {@link UNIT_DIMENSION_MAPPING}; this is an alias of it so the two cannot drift apart.
12
+ *
10
13
  * @type {NamedUnit[]}
11
14
  */
12
15
  export const MEASUREMENT_UNITS_SI: NamedUnit[];
@@ -1 +1 @@
1
- {"version":3,"file":"MEASUREMENT_UNITS_SI.d.ts","sourceRoot":"","sources":["../../../../../src/core/science/units/MEASUREMENT_UNITS_SI.js"],"names":[],"mappings":"AAQA;;;;;;;;;;GAUG;AACH,mCAFU,WAAW,CAUnB"}
1
+ {"version":3,"file":"MEASUREMENT_UNITS_SI.d.ts","sourceRoot":"","sources":["../../../../../src/core/science/units/MEASUREMENT_UNITS_SI.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AACH,mCAFU,WAAW,CAEsC"}
@@ -1,10 +1,4 @@
1
- import { METER } from "./si/METER.js";
2
- import { KILOGRAM } from "./si/KILOGRAM.js";
3
- import { SECOND } from "./si/SECOND.js";
4
- import { AMPERE } from "./si/AMPERE.js";
5
- import { KELVIN } from "./si/KELVIN.js";
6
- import { MOLE } from "./si/MOLE.js";
7
- import { CANDELA } from "./si/CANDELA.js";
1
+ import { UNIT_DIMENSION_MAPPING } from "./UNIT_DIMENSION_MAPPING.js";
8
2
 
9
3
  /**
10
4
  * The 7 SI base units in their ISO order: length, mass, time, electric current, temperature,
@@ -15,14 +9,9 @@ import { CANDELA } from "./si/CANDELA.js";
15
9
  * with no derived shorthand. Compound matrices like Newton or Volt fall back to base-unit
16
10
  * rendering (`kg·m/s^2`, `kg·m^2/s^3·A`).
17
11
  *
12
+ * The ordering invariant (array index === UnitDimension ordinal) is defined once, by
13
+ * {@link UNIT_DIMENSION_MAPPING}; this is an alias of it so the two cannot drift apart.
14
+ *
18
15
  * @type {NamedUnit[]}
19
16
  */
20
- export const MEASUREMENT_UNITS_SI = [
21
- METER,
22
- KILOGRAM,
23
- SECOND,
24
- AMPERE,
25
- KELVIN,
26
- MOLE,
27
- CANDELA
28
- ];
17
+ export const MEASUREMENT_UNITS_SI = UNIT_DIMENSION_MAPPING;
@@ -1 +1 @@
1
- {"version":3,"file":"Engine.d.ts","sourceRoot":"","sources":["../../../src/engine/Engine.js"],"names":[],"mappings":";AAuDA;IAoEI;;;;;;;;OAQG;IACH,8FANW,aAAa,EA0OvB;IA3RD;;;OAGG;IACH,UAFU,cAAc,GAAC,IAAI,CAEb;IAEhB;;;OAGG;IACH,OAFU,WAAW,GAAC,IAAI,CAEb;IAEb,qBAA4B;IAE5B;;;;;;;;;OASG;IACH,0BAFU,uBAAuB,CAEe;IAEhD;;;OAGG;IACH,kBAFU,mBAAmB,CAEO;IAEpC;;;;OAIG;IACH,iBAFU,MAAM,CAEM;IAEtB;;;;OAIG;IACH,mBAFU,kBAAkB,CAEa;IAmBrC;;;OAGG;IACH,yBAAwB;IAKxB;;;OAGG;IACH,aAFU,gBAAgB,CAEe;IAGzC,yCAAkE;IAK9D,mBAAkC;IAMtC;;;OAGG;IACH,cAFU,aAAa,MAAM,CAAC,CAK5B;IAEF,8CAiCE;IA4BF;;;OAGG;IACH,SAFU,WAAW,CAEoB;IAEzC;;;OAGG;IACH,oCAA0C;IAE1C;;;OAGG;IACH,sCAFU,2BAA2B,CAE+B;IAEpE,yBAAoC;IAGpC;;OAEG;IACH,aAAkB;IAElB;;;OAGG;IACH,SAFU,OAAO,CAEwB;IAGzC,2BAAsC;IAOtC,+BAA6E;IA4C7E;;;OAGG;IACH,KAFU,SAAS,CAEO;IAE1B;;;OAGG;IACH,uBAFU,YAAY,CAEqD;IAI3E;;;;MAIC;IAaD;;;OAGG;IACH,kBAFU,OAAO,CAEW;IAiGhC,wBAgCC;IApBG,oBAAwB;IAsB5B,2BAgCC;IAED,oBAiBC;IAED;;;OAGG;IACH,+CAUC;IAED,eA6BC;IAED;;;OAGG;IACH,sBAmDC;IAqBD;;OAEG;IACH,sBA2BC;IAED,aAEC;IAED;;OAEG;IACH,4BAOC;IAIL;;;OAGG;IACH,mBAFU,OAAO,CAEQ;;CAPxB;+BAhrB8B,8BAA8B;wBAUrC,wBAAwB;0BApBtB,0CAA0C;wCAc5B,iDAAiD;oCAGrD,iCAAiC;mBAElD,wBAAwB;+BArBZ,gDAAgD;iCAO9C,+CAA+C;6BAFnD,yBAAyB;uCAIf,6DAA6D;4BASxE,0BAA0B;+BApBvB,iCAAiC;4CAapB,qDAAqD;AAgBjG;IACI,gDAA2D;IAC3D,0BAAkC;IAClC,iCAAyC;CAC5C;6BAlC4B,sCAAsC;4DAHP,OAAO;sBA8B7C,mBAAmB;yBAJhB,yBAAyB;8BALpB,kCAAkC;2BADrC,mCAAmC;8BADhC,kCAAkC;sBAZ1C,+BAA+B;+BAKtB,qCAAqC;8BAItC,wBAAwB;4BAX1B,kCAAkC;oBAH1C,yBAAyB"}
1
+ {"version":3,"file":"Engine.d.ts","sourceRoot":"","sources":["../../../src/engine/Engine.js"],"names":[],"mappings":";AAuDA;IAoEI;;;;;;;;OAQG;IACH,8FANW,aAAa,EAwOvB;IAzRD;;;OAGG;IACH,UAFU,cAAc,GAAC,IAAI,CAEb;IAEhB;;;OAGG;IACH,OAFU,WAAW,GAAC,IAAI,CAEb;IAEb,qBAA4B;IAE5B;;;;;;;;;OASG;IACH,0BAFU,uBAAuB,CAEe;IAEhD;;;OAGG;IACH,kBAFU,mBAAmB,CAEO;IAEpC;;;;OAIG;IACH,iBAFU,MAAM,CAEM;IAEtB;;;;OAIG;IACH,mBAFU,kBAAkB,CAEa;IAmBrC;;;OAGG;IACH,yBAAwB;IAKxB;;;OAGG;IACH,aAFU,gBAAgB,CAEe;IAGzC,yCAAkE;IAK9D,mBAAkC;IAMtC;;;OAGG;IACH,cAFU,aAAa,MAAM,CAAC,CAK5B;IAEF,8CAiCE;IA4BF;;;OAGG;IACH,SAFU,WAAW,CAEoB;IAEzC;;;OAGG;IACH,oCAA0C;IAE1C;;;OAGG;IACH,sCAFU,2BAA2B,CAE+B;IAEpE,yBAAoC;IAGpC;;OAEG;IACH,aAAkB;IAElB;;;OAGG;IACH,SAFU,OAAO,CAEwB;IAGzC,2BAAsC;IAOtC,+BAA6E;IA4C7E;;;OAGG;IACH,KAFU,SAAS,CAEO;IAE1B;;;OAGG;IACH,uBAFU,YAAY,CAEqD;IAI3E;;;;MAIC;IAWD;;;OAGG;IACH,kBAFU,OAAO,CAEW;IAiGhC,wBAgCC;IApBG,oBAAwB;IAsB5B,2BAgCC;IAED,oBAiBC;IAED;;;OAGG;IACH,+CAUC;IAED,eA6BC;IAED;;;OAGG;IACH,sBAmDC;IAqBD;;OAEG;IACH,sBA2BC;IAED,aAEC;IAED;;OAEG;IACH,4BAOC;IAIL;;;OAGG;IACH,mBAFU,OAAO,CAEQ;;CAPxB;+BA9qB8B,8BAA8B;wBAUrC,wBAAwB;0BApBtB,0CAA0C;wCAc5B,iDAAiD;oCAGrD,iCAAiC;mBAElD,wBAAwB;+BArBZ,gDAAgD;iCAO9C,+CAA+C;6BAFnD,yBAAyB;uCAIf,6DAA6D;4BASxE,0BAA0B;+BApBvB,iCAAiC;4CAapB,qDAAqD;AAgBjG;IACI,gDAA2D;IAC3D,0BAAkC;IAClC,iCAAyC;CAC5C;6BAlC4B,sCAAsC;4DAHP,OAAO;sBA8B7C,mBAAmB;yBAJhB,yBAAyB;8BALpB,kCAAkC;2BADrC,mCAAmC;8BADhC,kCAAkC;sBAZ1C,+BAA+B;+BAKtB,qCAAqC;8BAItC,wBAAwB;4BAX1B,kCAAkC;oBAH1C,yBAAyB"}
@@ -339,8 +339,6 @@ class Engine {
339
339
  gamepad: new GamepadDevice()
340
340
  };
341
341
 
342
- //init level engine
343
-
344
342
  this.devices.pointer.start();
345
343
  this.devices.keyboard.start();
346
344
  this.devices.gamepad.start();
@@ -1,4 +1,14 @@
1
1
  export default TransitionFunctions;
2
+ /**
3
+ * Engine-wide easing enum. Members are compared by identity by serialization adapters
4
+ * (see `model/game/story/behaviors/camera/CameraMoveToTargetBehaviorSerializationAdapter.js`),
5
+ * so members may be added but never re-pointed.
6
+ *
7
+ * `EaseIn`/`EaseOut`/`EaseInOut` are the quadratic tier, `EaseInCubic`/`EaseOutCubic`/`EaseInOutCubic`
8
+ * the cubic one. A curve-valued expression of the same three concepts lives alongside as
9
+ * {@link CURVE_EASE_IN }/`CURVE_EASE_OUT`/`CURVE_EASE_IN_OUT` in `engine/animation/curve/preset/`
10
+ * — use those where an {@link AnimationCurve } is wanted rather than a plain function.
11
+ */
2
12
  type TransitionFunctions = (x: number) => number;
3
13
  declare namespace TransitionFunctions {
4
14
  export { linear as Linear };
@@ -7,6 +17,9 @@ declare namespace TransitionFunctions {
7
17
  export { easeOutQuad as EaseOut };
8
18
  export { easeInOutQuad as EaseInOut };
9
19
  export let CubicEaseIn: (arg0: number) => number;
20
+ export { easeInCubic as EaseInCubic };
21
+ export { easeOutCubic as EaseOutCubic };
22
+ export { easeInOutCubic as EaseInOutCubic };
10
23
  }
11
24
  /**
12
25
  * @param {number} x
@@ -36,4 +49,22 @@ declare function easeOutQuad(x: number): number;
36
49
  * @returns {number}
37
50
  */
38
51
  declare function easeInOutQuad(t: number): number;
52
+ /**
53
+ * Back-loaded ease — gentle start, accelerating finish.
54
+ * @param {number} t [0..1]
55
+ * @returns {number}
56
+ */
57
+ declare function easeInCubic(t: number): number;
58
+ /**
59
+ * Front-loaded ease — fast rise then gentle settle.
60
+ * @param {number} t [0..1]
61
+ * @returns {number}
62
+ */
63
+ declare function easeOutCubic(t: number): number;
64
+ /**
65
+ * Smoothstep-style ease — slow-fast-slow. Sharper than {@link easeInOutQuad}.
66
+ * @param {number} t [0..1]
67
+ * @returns {number}
68
+ */
69
+ declare function easeInOutCubic(t: number): number;
39
70
  //# sourceMappingURL=TransitionFunctions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TransitionFunctions.d.ts","sourceRoot":"","sources":["../../../../src/engine/animation/TransitionFunctions.js"],"names":[],"mappings":";+BAIc,MAAM,KAAK,MAAM;;;;;;;;;AAY/B;;;GAGG;AACH,2BAHW,MAAM,GACJ,MAAM,CAIlB;AAED;;;GAGG;AACH,yBAHW,MAAM,GACJ,MAAM,CAKlB;AAED;;;;GAIG;AACH,+BAHW,MAAM,GACJ,MAAM,CAIlB;AAED;;;;GAIG;AACH,gCAHW,MAAM,GACJ,MAAM,CAIlB;AAED;;;;GAIG;AACH,kCAHW,MAAM,GACJ,MAAM,CAIlB"}
1
+ {"version":3,"file":"TransitionFunctions.d.ts","sourceRoot":"","sources":["../../../../src/engine/animation/TransitionFunctions.js"],"names":[],"mappings":";;;;;;;;;;;+BAYc,MAAM,KAAK,MAAM;;;;;;;;;;;;AAmB/B;;;GAGG;AACH,2BAHW,MAAM,GACJ,MAAM,CAIlB;AAED;;;GAGG;AACH,yBAHW,MAAM,GACJ,MAAM,CAKlB;AAED;;;;GAIG;AACH,+BAHW,MAAM,GACJ,MAAM,CAIlB;AAED;;;;GAIG;AACH,gCAHW,MAAM,GACJ,MAAM,CAIlB;AAED;;;;GAIG;AACH,kCAHW,MAAM,GACJ,MAAM,CAIlB;AAED;;;;GAIG;AACH,gCAHW,MAAM,GACJ,MAAM,CAIlB;AAED;;;;GAIG;AACH,iCAHW,MAAM,GACJ,MAAM,CAIlB;AAED;;;;GAIG;AACH,mCAHW,MAAM,GACJ,MAAM,CAMlB"}
@@ -1,6 +1,14 @@
1
1
  import { makeCubicCurve } from "../../core/math/spline/makeCubicCurve.js";
2
2
 
3
3
  /**
4
+ * Engine-wide easing enum. Members are compared by identity by serialization adapters
5
+ * (see `model/game/story/behaviors/camera/CameraMoveToTargetBehaviorSerializationAdapter.js`),
6
+ * so members may be added but never re-pointed.
7
+ *
8
+ * `EaseIn`/`EaseOut`/`EaseInOut` are the quadratic tier, `EaseInCubic`/`EaseOutCubic`/`EaseInOutCubic`
9
+ * the cubic one. A curve-valued expression of the same three concepts lives alongside as
10
+ * {@link CURVE_EASE_IN}/`CURVE_EASE_OUT`/`CURVE_EASE_IN_OUT` in `engine/animation/curve/preset/`
11
+ * — use those where an {@link AnimationCurve} is wanted rather than a plain function.
4
12
  *
5
13
  * @enum {(x: number) => number}
6
14
  */
@@ -10,7 +18,14 @@ const TransitionFunctions = {
10
18
  EaseIn: easeInQuad,
11
19
  EaseOut: easeOutQuad,
12
20
  EaseInOut: easeInOutQuad,
21
+ /**
22
+ * NOTE: despite the name this is a cubic *Bézier* through (0,1,0.98,1), not `t³`.
23
+ * It rises almost immediately and then flattens. For `t³` use {@link TransitionFunctions.EaseInCubic}.
24
+ */
13
25
  CubicEaseIn: makeCubicCurve(0, 1, 0.98, 1),
26
+ EaseInCubic: easeInCubic,
27
+ EaseOutCubic: easeOutCubic,
28
+ EaseInOutCubic: easeInOutCubic,
14
29
  };
15
30
 
16
31
 
@@ -58,4 +73,33 @@ function easeInOutQuad(t) {
58
73
  return t < .5 ? 2 * t * t : -1 + (4 - 2 * t) * t;
59
74
  }
60
75
 
76
+ /**
77
+ * Back-loaded ease — gentle start, accelerating finish.
78
+ * @param {number} t [0..1]
79
+ * @returns {number}
80
+ */
81
+ function easeInCubic(t) {
82
+ return t * t * t;
83
+ }
84
+
85
+ /**
86
+ * Front-loaded ease — fast rise then gentle settle.
87
+ * @param {number} t [0..1]
88
+ * @returns {number}
89
+ */
90
+ function easeOutCubic(t) {
91
+ return 1 - Math.pow(1 - t, 3);
92
+ }
93
+
94
+ /**
95
+ * Smoothstep-style ease — slow-fast-slow. Sharper than {@link easeInOutQuad}.
96
+ * @param {number} t [0..1]
97
+ * @returns {number}
98
+ */
99
+ function easeInOutCubic(t) {
100
+ return t < 0.5
101
+ ? 4 * t * t * t
102
+ : 1 - Math.pow(-2 * t + 2, 3) / 2;
103
+ }
104
+
61
105
  export default TransitionFunctions;
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Binary wire codec for {@link AnimationCurve}: a `uintVar` keyframe count followed by
3
+ * `time / value / inTangent / outTangent` as float32 per key.
4
+ *
5
+ * WHY this exists: {@link AnimationCurve} has no registered binary class adapter of its own, so every binary
6
+ * adapter that owns a curve-valued FIELD has to spell the payload out inline. Two sopra adapters
7
+ * (`EventDescriptionSerializationAdapter` for the attenuation curve, `BlendContainerAudioClipSerializationAdapter`
8
+ * for the per-child blend curves) had written the same four float32s out and read them back — four hand-written
9
+ * copies of one wire format, where changing the payload (adding wrap modes, packing tangents) in three of the
10
+ * four places leaves the fourth silently mis-reading a stream it thinks it understands.
11
+ *
12
+ * This is deliberately a plain read/write PAIR rather than a registered `ObjectBasedClassSerializationAdapter`:
13
+ * routing curves through the object adapter would prefix each one with a class tag and change the bytes on the
14
+ * wire, breaking every already-serialized payload. The format here is byte-identical to what the sopra adapters
15
+ * previously emitted inline.
16
+ *
17
+ * @param {BinaryBuffer} buffer
18
+ * @param {AnimationCurve} curve
19
+ */
20
+ export function serialize_animation_curve(buffer: BinaryBuffer, curve: AnimationCurve): void;
21
+ /**
22
+ * Read back a curve written by {@link serialize_animation_curve}.
23
+ *
24
+ * @param {BinaryBuffer} buffer
25
+ * @returns {AnimationCurve} a fresh curve
26
+ */
27
+ export function deserialize_animation_curve(buffer: BinaryBuffer): AnimationCurve;
28
+ import { AnimationCurve } from "./AnimationCurve.js";
29
+ //# sourceMappingURL=animation_curve_binary_codec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animation_curve_binary_codec.d.ts","sourceRoot":"","sources":["../../../../../src/engine/animation/curve/animation_curve_binary_codec.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;GAkBG;AACH,uEAFW,cAAc,QAgBxB;AAED;;;;;GAKG;AACH,mEAFa,cAAc,CAiB1B;+BA3D8B,qBAAqB"}
@@ -0,0 +1,60 @@
1
+ import { AnimationCurve } from "./AnimationCurve.js";
2
+ import { Keyframe } from "./Keyframe.js";
3
+
4
+ /**
5
+ * Binary wire codec for {@link AnimationCurve}: a `uintVar` keyframe count followed by
6
+ * `time / value / inTangent / outTangent` as float32 per key.
7
+ *
8
+ * WHY this exists: {@link AnimationCurve} has no registered binary class adapter of its own, so every binary
9
+ * adapter that owns a curve-valued FIELD has to spell the payload out inline. Two sopra adapters
10
+ * (`EventDescriptionSerializationAdapter` for the attenuation curve, `BlendContainerAudioClipSerializationAdapter`
11
+ * for the per-child blend curves) had written the same four float32s out and read them back — four hand-written
12
+ * copies of one wire format, where changing the payload (adding wrap modes, packing tangents) in three of the
13
+ * four places leaves the fourth silently mis-reading a stream it thinks it understands.
14
+ *
15
+ * This is deliberately a plain read/write PAIR rather than a registered `ObjectBasedClassSerializationAdapter`:
16
+ * routing curves through the object adapter would prefix each one with a class tag and change the bytes on the
17
+ * wire, breaking every already-serialized payload. The format here is byte-identical to what the sopra adapters
18
+ * previously emitted inline.
19
+ *
20
+ * @param {BinaryBuffer} buffer
21
+ * @param {AnimationCurve} curve
22
+ */
23
+ export function serialize_animation_curve(buffer, curve) {
24
+ const keys = curve.keys;
25
+ const key_count = keys.length;
26
+
27
+ buffer.writeUintVar(key_count);
28
+
29
+ for (let i = 0; i < key_count; i++) {
30
+ const key = keys[i];
31
+
32
+ buffer.writeFloat32(key.time);
33
+ buffer.writeFloat32(key.value);
34
+ buffer.writeFloat32(key.inTangent);
35
+ buffer.writeFloat32(key.outTangent);
36
+ }
37
+ }
38
+
39
+ /**
40
+ * Read back a curve written by {@link serialize_animation_curve}.
41
+ *
42
+ * @param {BinaryBuffer} buffer
43
+ * @returns {AnimationCurve} a fresh curve
44
+ */
45
+ export function deserialize_animation_curve(buffer) {
46
+ const curve = new AnimationCurve();
47
+
48
+ const key_count = buffer.readUintVar();
49
+
50
+ for (let i = 0; i < key_count; i++) {
51
+ const time = buffer.readFloat32();
52
+ const value = buffer.readFloat32();
53
+ const inTangent = buffer.readFloat32();
54
+ const outTangent = buffer.readFloat32();
55
+
56
+ curve.add(Keyframe.from(time, value, inTangent, outTangent));
57
+ }
58
+
59
+ return curve;
60
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Map a point in canvas space (pixels) back to curve space (time, value).
3
+ *
4
+ * Inverse of {@link curve_point_to_canvas}; see that function for why the mapping lives in exactly
5
+ * one place. Written as an out-parameter form so callers on a drag path do not allocate.
6
+ *
7
+ * @param {Float32Array|Float64Array|number[]} out receives 2 floats: curve time then curve value
8
+ * @param {number} out_offset
9
+ * @param {Vector2} size canvas size in pixels
10
+ * @param {AABB2} frame region of curve space made visible
11
+ * @param {Vector2} margin pixels reserved on each side of the plot
12
+ * @param {number} x canvas x
13
+ * @param {number} y canvas y
14
+ */
15
+ export function canvas_point_to_curve(out: Float32Array | Float64Array | number[], out_offset: number, size: Vector2, frame: AABB2, margin: Vector2, x: number, y: number): void;
16
+ //# sourceMappingURL=canvas_point_to_curve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvas_point_to_curve.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/animation/curve/draw/canvas_point_to_curve.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,2CARW,YAAY,GAAC,YAAY,GAAC,MAAM,EAAE,cAClC,MAAM,mDAIN,MAAM,KACN,MAAM,QAShB"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Map a point in canvas space (pixels) back to curve space (time, value).
3
+ *
4
+ * Inverse of {@link curve_point_to_canvas}; see that function for why the mapping lives in exactly
5
+ * one place. Written as an out-parameter form so callers on a drag path do not allocate.
6
+ *
7
+ * @param {Float32Array|Float64Array|number[]} out receives 2 floats: curve time then curve value
8
+ * @param {number} out_offset
9
+ * @param {Vector2} size canvas size in pixels
10
+ * @param {AABB2} frame region of curve space made visible
11
+ * @param {Vector2} margin pixels reserved on each side of the plot
12
+ * @param {number} x canvas x
13
+ * @param {number} y canvas y
14
+ */
15
+ export function canvas_point_to_curve(out, out_offset, size, frame, margin, x, y) {
16
+
17
+ const u = (x - margin.x) / (size.x - margin.x * 2);
18
+ const v = 1 - (y - margin.y) / (size.y - margin.y * 2);
19
+
20
+ out[out_offset] = u * frame.width + frame.x0;
21
+ out[out_offset + 1] = v * frame.height + frame.y0;
22
+ }
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Map a point in curve space (time, value) to canvas space (pixels).
3
+ *
4
+ * The frame is stretched to fill the canvas minus a symmetric pixel margin on each side, and the
5
+ * value axis is flipped so larger values are higher on screen.
6
+ *
7
+ * This is the ONE definition of the curve-editor's coordinate mapping. It exists because the editor
8
+ * used to draw the curve through an inline copy of this arithmetic
9
+ * ({@link canvas2dPlotCurvePoints}) while hit-testing, marker placement and panning went through
10
+ * {@link position_curve_to_canvas} / {@link position_canvas_to_curve} — the same formula written
11
+ * twice, so a change to the margin or anchoring convention in one desynced what the user clicks
12
+ * from what they see. Written as an out-parameter form because the plot calls it once per pixel
13
+ * column.
14
+ *
15
+ * Inverse of {@link canvas_point_to_curve}.
16
+ *
17
+ * @param {Float32Array|Float64Array|number[]} out receives 2 floats: canvas x then canvas y
18
+ * @param {number} out_offset
19
+ * @param {Vector2} size canvas size in pixels
20
+ * @param {AABB2} frame region of curve space made visible; a zero-width or zero-height frame
21
+ * collapses that axis onto the low edge of the plot rather than producing a non-finite coordinate
22
+ * @param {Vector2} margin pixels reserved on each side of the plot
23
+ * @param {number} x curve time
24
+ * @param {number} y curve value
25
+ */
26
+ export function curve_point_to_canvas(out: Float32Array | Float64Array | number[], out_offset: number, size: Vector2, frame: AABB2, margin: Vector2, x: number, y: number): void;
27
+ //# sourceMappingURL=curve_point_to_canvas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"curve_point_to_canvas.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/animation/curve/draw/curve_point_to_canvas.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,2CATW,YAAY,GAAC,YAAY,GAAC,MAAM,EAAE,cAClC,MAAM,mDAKN,MAAM,KACN,MAAM,QAchB"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Map a point in curve space (time, value) to canvas space (pixels).
3
+ *
4
+ * The frame is stretched to fill the canvas minus a symmetric pixel margin on each side, and the
5
+ * value axis is flipped so larger values are higher on screen.
6
+ *
7
+ * This is the ONE definition of the curve-editor's coordinate mapping. It exists because the editor
8
+ * used to draw the curve through an inline copy of this arithmetic
9
+ * ({@link canvas2dPlotCurvePoints}) while hit-testing, marker placement and panning went through
10
+ * {@link position_curve_to_canvas} / {@link position_canvas_to_curve} — the same formula written
11
+ * twice, so a change to the margin or anchoring convention in one desynced what the user clicks
12
+ * from what they see. Written as an out-parameter form because the plot calls it once per pixel
13
+ * column.
14
+ *
15
+ * Inverse of {@link canvas_point_to_curve}.
16
+ *
17
+ * @param {Float32Array|Float64Array|number[]} out receives 2 floats: canvas x then canvas y
18
+ * @param {number} out_offset
19
+ * @param {Vector2} size canvas size in pixels
20
+ * @param {AABB2} frame region of curve space made visible; a zero-width or zero-height frame
21
+ * collapses that axis onto the low edge of the plot rather than producing a non-finite coordinate
22
+ * @param {Vector2} margin pixels reserved on each side of the plot
23
+ * @param {number} x curve time
24
+ * @param {number} y curve value
25
+ */
26
+ export function curve_point_to_canvas(out, out_offset, size, frame, margin, x, y) {
27
+
28
+ const curve_width = frame.width;
29
+ const curve_width_multiplier = curve_width > 0 ? 1 / curve_width : 0;
30
+ const u = (x - frame.x0) * curve_width_multiplier;
31
+
32
+ const curve_height = frame.height;
33
+ const curve_height_multiplier = curve_height > 0 ? 1 / curve_height : 0;
34
+ const v = 1 - (y - frame.y0) * curve_height_multiplier;
35
+
36
+ out[out_offset] = margin.x + u * (size.x - margin.x * 2);
37
+ out[out_offset + 1] = margin.y + v * (size.y - margin.y * 2);
38
+ }
@@ -1,4 +1,6 @@
1
1
  /**
2
+ * Allocating convenience wrapper around {@link canvas_point_to_curve}; use that directly on any
3
+ * path that runs per-pixel or per-frame.
2
4
  *
3
5
  * @param {Vector2} size
4
6
  * @param {AABB2} frame
@@ -1 +1 @@
1
- {"version":3,"file":"position_canvas_to_curve.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/animation/curve/draw/position_canvas_to_curve.js"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,+CAPW,OAAO,wBAEP,OAAO,KACP,MAAM,KACN,MAAM,GACL,OAAO,CAclB;oBAvBmB,kCAAkC"}
1
+ {"version":3,"file":"position_canvas_to_curve.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/animation/curve/draw/position_canvas_to_curve.js"],"names":[],"mappings":"AAKA;;;;;;;;;;GAUG;AACH,+CAPW,OAAO,wBAEP,OAAO,KACP,MAAM,KACN,MAAM,GACL,OAAO,CAOlB;oBArBmB,kCAAkC"}