@woosh/meep-engine 2.169.1 → 2.169.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (680) 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 +8 -0
  106. package/src/core/geom/3d/mat4/m4_decompose.d.ts.map +1 -1
  107. package/src/core/geom/3d/mat4/m4_decompose.js +84 -76
  108. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale.d.ts +2 -0
  109. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale.d.ts.map +1 -1
  110. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale.js +10 -44
  111. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_scalar.d.ts +27 -0
  112. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_scalar.d.ts.map +1 -0
  113. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_scalar.js +67 -0
  114. package/src/core/geom/3d/plane/orient3d_fast.d.ts.map +1 -1
  115. package/src/core/geom/3d/plane/orient3d_fast.js +2 -22
  116. package/src/core/geom/3d/plane/orient3d_fast_point.d.ts +28 -0
  117. package/src/core/geom/3d/plane/orient3d_fast_point.d.ts.map +1 -0
  118. package/src/core/geom/3d/plane/orient3d_fast_point.js +47 -0
  119. package/src/core/geom/3d/quaternion/quat3_nlerp.d.ts +48 -0
  120. package/src/core/geom/3d/quaternion/quat3_nlerp.d.ts.map +1 -0
  121. package/src/core/geom/3d/quaternion/quat3_nlerp.js +72 -0
  122. package/src/core/geom/3d/shape/AbstractShape3D.d.ts +9 -0
  123. package/src/core/geom/3d/shape/AbstractShape3D.d.ts.map +1 -1
  124. package/src/core/geom/3d/shape/AbstractShape3D.js +44 -1
  125. package/src/core/geom/3d/shape/BoxShape3D.d.ts.map +1 -1
  126. package/src/core/geom/3d/shape/BoxShape3D.js +2 -1
  127. package/src/core/geom/3d/shape/CapsuleShape3D.d.ts.map +1 -1
  128. package/src/core/geom/3d/shape/CapsuleShape3D.js +2 -1
  129. package/src/core/geom/3d/shape/ConvexHullShape3D.d.ts +0 -1
  130. package/src/core/geom/3d/shape/ConvexHullShape3D.d.ts.map +1 -1
  131. package/src/core/geom/3d/shape/ConvexHullShape3D.js +25 -56
  132. package/src/core/geom/3d/shape/CylinderShape3D.d.ts.map +1 -1
  133. package/src/core/geom/3d/shape/CylinderShape3D.js +2 -1
  134. package/src/core/geom/3d/shape/HeightMapShape3D.d.ts.map +1 -1
  135. package/src/core/geom/3d/shape/HeightMapShape3D.js +3 -5
  136. package/src/core/geom/3d/shape/MeshShape3D.d.ts +0 -11
  137. package/src/core/geom/3d/shape/MeshShape3D.d.ts.map +1 -1
  138. package/src/core/geom/3d/shape/MeshShape3D.js +27 -106
  139. package/src/core/geom/3d/shape/Triangle3D.d.ts +1 -1
  140. package/src/core/geom/3d/shape/Triangle3D.d.ts.map +1 -1
  141. package/src/core/geom/3d/shape/Triangle3D.js +10 -31
  142. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_carve_outside_surface.d.ts.map +1 -1
  143. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_carve_outside_surface.js +8 -57
  144. package/src/core/geom/3d/topology/simplify/decimate_edge_collapse_snap.d.ts +8 -1
  145. package/src/core/geom/3d/topology/simplify/decimate_edge_collapse_snap.d.ts.map +1 -1
  146. package/src/core/geom/3d/topology/simplify/decimate_edge_collapse_snap.js +281 -272
  147. package/src/core/geom/3d/topology/simplify/quadratic/build_vertex_quadrics.d.ts.map +1 -1
  148. package/src/core/geom/3d/topology/simplify/quadratic/build_vertex_quadrics.js +3 -4
  149. package/src/core/geom/3d/topology/simplify/quadratic/quadric3_set_from_plane_through_point.d.ts +22 -0
  150. package/src/core/geom/3d/topology/simplify/quadratic/quadric3_set_from_plane_through_point.d.ts.map +1 -0
  151. package/src/core/geom/3d/topology/simplify/quadratic/quadric3_set_from_plane_through_point.js +27 -0
  152. package/src/core/geom/3d/topology/struct/binary/io/bt_boundary_loop.d.ts +24 -0
  153. package/src/core/geom/3d/topology/struct/binary/io/bt_boundary_loop.d.ts.map +1 -0
  154. package/src/core/geom/3d/topology/struct/binary/io/bt_boundary_loop.js +73 -0
  155. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_close_boundary_holes.d.ts.map +1 -1
  156. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_close_boundary_holes.js +2 -53
  157. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compute_vertex_quadrics.d.ts.map +1 -1
  158. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compute_vertex_quadrics.js +3 -4
  159. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_fill_small_holes.d.ts.map +1 -1
  160. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_fill_small_holes.js +3 -33
  161. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_from_indexed_geometry.d.ts.map +1 -1
  162. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_from_indexed_geometry.js +4 -37
  163. package/src/core/geom/3d/topology/struct/binary/io/face/bt_face_poke.d.ts.map +1 -1
  164. package/src/core/geom/3d/topology/struct/binary/io/face/bt_face_poke.js +3 -32
  165. package/src/core/geom/3d/topology/struct/binary/query/bt_face_read_triangle.d.ts +32 -0
  166. package/src/core/geom/3d/topology/struct/binary/query/bt_face_read_triangle.d.ts.map +1 -0
  167. package/src/core/geom/3d/topology/struct/binary/query/bt_face_read_triangle.js +66 -0
  168. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path.d.ts.map +1 -1
  169. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path.js +703 -728
  170. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path_polyanya.d.ts.map +1 -1
  171. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path_polyanya.js +13 -24
  172. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.d.ts.map +1 -1
  173. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.js +8 -54
  174. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_surface_ray_parity.d.ts +35 -0
  175. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_surface_ray_parity.d.ts.map +1 -0
  176. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_surface_ray_parity.js +82 -0
  177. package/src/core/geom/3d/triangle/tri3_closest_point.d.ts +29 -0
  178. package/src/core/geom/3d/triangle/tri3_closest_point.d.ts.map +1 -0
  179. package/src/core/geom/3d/triangle/tri3_closest_point.js +65 -0
  180. package/src/core/geom/3d/triangle/tri3_flatten_isometric.d.ts +42 -0
  181. package/src/core/geom/3d/triangle/tri3_flatten_isometric.d.ts.map +1 -0
  182. package/src/core/geom/3d/triangle/tri3_flatten_isometric.js +79 -0
  183. package/src/core/geom/Vector2.d.ts.map +1 -1
  184. package/src/core/geom/Vector2.js +2 -1
  185. package/src/core/geom/random/random_orthonormal_basis.d.ts +21 -0
  186. package/src/core/geom/random/random_orthonormal_basis.d.ts.map +1 -0
  187. package/src/core/geom/random/random_orthonormal_basis.js +31 -0
  188. package/src/core/geom/vec2/v2_rotate.d.ts +18 -0
  189. package/src/core/geom/vec2/v2_rotate.d.ts.map +1 -0
  190. package/src/core/geom/vec2/v2_rotate.js +21 -0
  191. package/src/core/geom/vec2/v2_rotate_cos_sin.d.ts +19 -0
  192. package/src/core/geom/vec2/v2_rotate_cos_sin.d.ts.map +1 -0
  193. package/src/core/geom/vec2/v2_rotate_cos_sin.js +21 -0
  194. package/src/core/graph/csr/csr_graph_from_undirected_edge_list.d.ts +30 -0
  195. package/src/core/graph/csr/csr_graph_from_undirected_edge_list.d.ts.map +1 -0
  196. package/src/core/graph/csr/csr_graph_from_undirected_edge_list.js +94 -0
  197. package/src/core/graph/layout/CircleLayout.d.ts.map +1 -1
  198. package/src/core/graph/layout/CircleLayout.js +6 -29
  199. package/src/core/graph/layout/box/BoxLayouter.d.ts.map +1 -1
  200. package/src/core/graph/layout/box/BoxLayouter.js +2 -26
  201. package/src/core/graph/layout/box/position_box_next_to_box.d.ts.map +1 -1
  202. package/src/core/graph/layout/box/position_box_next_to_box.js +2 -1
  203. package/src/core/graph/layout/computeDisconnectedSubGraphs.d.ts.map +1 -1
  204. package/src/core/graph/layout/computeDisconnectedSubGraphs.js +14 -3
  205. package/src/core/graph/layout/graph_peel_topological_layer.d.ts +25 -0
  206. package/src/core/graph/layout/graph_peel_topological_layer.d.ts.map +1 -0
  207. package/src/core/graph/layout/graph_peel_topological_layer.js +45 -0
  208. package/src/core/math/hash/hash_mix2.d.ts +21 -0
  209. package/src/core/math/hash/hash_mix2.d.ts.map +1 -0
  210. package/src/core/math/hash/hash_mix2.js +22 -0
  211. package/src/core/math/hash/hash_mix3.d.ts +16 -0
  212. package/src/core/math/hash/hash_mix3.d.ts.map +1 -0
  213. package/src/core/math/hash/hash_mix3.js +19 -0
  214. package/src/core/math/lookup/LUT_HEATMAP.d.ts +17 -0
  215. package/src/core/math/lookup/LUT_HEATMAP.d.ts.map +1 -0
  216. package/src/core/math/lookup/LUT_HEATMAP.js +30 -0
  217. package/src/core/math/noise/curl_noise_3d.d.ts +6 -0
  218. package/src/core/math/noise/curl_noise_3d.d.ts.map +1 -1
  219. package/src/core/math/noise/curl_noise_3d.js +18 -27
  220. package/src/core/math/statistics/hammersley_sequence.d.ts +28 -16
  221. package/src/core/math/statistics/hammersley_sequence.d.ts.map +1 -1
  222. package/src/core/math/statistics/hammersley_sequence.js +53 -34
  223. package/src/core/science/units/MEASUREMENT_UNITS_SI.d.ts +3 -0
  224. package/src/core/science/units/MEASUREMENT_UNITS_SI.d.ts.map +1 -1
  225. package/src/core/science/units/MEASUREMENT_UNITS_SI.js +5 -16
  226. package/src/engine/animation/TransitionFunctions.d.ts +31 -0
  227. package/src/engine/animation/TransitionFunctions.d.ts.map +1 -1
  228. package/src/engine/animation/TransitionFunctions.js +44 -0
  229. package/src/engine/animation/curve/animation_curve_binary_codec.d.ts +29 -0
  230. package/src/engine/animation/curve/animation_curve_binary_codec.d.ts.map +1 -0
  231. package/src/engine/animation/curve/animation_curve_binary_codec.js +60 -0
  232. package/src/engine/animation/curve/draw/canvas_point_to_curve.d.ts +16 -0
  233. package/src/engine/animation/curve/draw/canvas_point_to_curve.d.ts.map +1 -0
  234. package/src/engine/animation/curve/draw/canvas_point_to_curve.js +22 -0
  235. package/src/engine/animation/curve/draw/curve_point_to_canvas.d.ts +27 -0
  236. package/src/engine/animation/curve/draw/curve_point_to_canvas.d.ts.map +1 -0
  237. package/src/engine/animation/curve/draw/curve_point_to_canvas.js +38 -0
  238. package/src/engine/animation/curve/draw/position_canvas_to_curve.d.ts +2 -0
  239. package/src/engine/animation/curve/draw/position_canvas_to_curve.d.ts.map +1 -1
  240. package/src/engine/animation/curve/draw/position_canvas_to_curve.js +22 -24
  241. package/src/engine/animation/curve/draw/position_curve_to_canvas.d.ts +2 -0
  242. package/src/engine/animation/curve/draw/position_curve_to_canvas.d.ts.map +1 -1
  243. package/src/engine/animation/curve/draw/position_curve_to_canvas.js +22 -25
  244. package/src/engine/animation/curve/editor/canvas2dDrawWorldAxisLabels.d.ts.map +1 -1
  245. package/src/engine/animation/curve/editor/canvas2dDrawWorldAxisLabels.js +3 -2
  246. package/src/engine/animation/curve/editor/canvas2dPlotCurvePoints.d.ts.map +1 -1
  247. package/src/engine/animation/curve/editor/canvas2dPlotCurvePoints.js +14 -14
  248. package/src/engine/animation/removeEntityWithMeshParticlesEffect.d.ts.map +1 -1
  249. package/src/engine/animation/removeEntityWithMeshParticlesEffect.js +5 -0
  250. package/src/engine/asset/loaders/GLTFAssetLoader.d.ts.map +1 -1
  251. package/src/engine/asset/loaders/GLTFAssetLoader.js +25 -51
  252. package/src/engine/asset/loaders/material/StaticMaterialCache.d.ts +3 -2
  253. package/src/engine/asset/loaders/material/StaticMaterialCache.d.ts.map +1 -1
  254. package/src/engine/asset/loaders/material/StaticMaterialCache.js +16 -55
  255. package/src/engine/asset/loaders/material/TextureCoalescer.d.ts +32 -0
  256. package/src/engine/asset/loaders/material/TextureCoalescer.d.ts.map +1 -0
  257. package/src/engine/asset/loaders/material/TextureCoalescer.js +68 -0
  258. package/src/engine/asset/loaders/material/traverseMaterialTextures.d.ts +10 -2
  259. package/src/engine/asset/loaders/material/traverseMaterialTextures.d.ts.map +1 -1
  260. package/src/engine/asset/loaders/material/traverseMaterialTextures.js +10 -2
  261. package/src/engine/control/first-person/abilities/Mantle.d.ts.map +1 -1
  262. package/src/engine/control/first-person/abilities/Mantle.js +10 -26
  263. package/src/engine/ecs/dynamic_actions/actions/definition/WeightedRandomActionDescription.d.ts.map +1 -1
  264. package/src/engine/ecs/dynamic_actions/actions/definition/WeightedRandomActionDescription.js +5 -0
  265. package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.d.ts +22 -2
  266. package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.d.ts.map +1 -1
  267. package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.js +92 -41
  268. package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.d.ts +3 -1
  269. package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.d.ts.map +1 -1
  270. package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.js +14 -16
  271. package/src/engine/ecs/gui/parallax/GuiElementParallaxSystem.d.ts.map +1 -1
  272. package/src/engine/ecs/gui/parallax/GuiElementParallaxSystem.js +16 -29
  273. package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.d.ts.map +1 -1
  274. package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.js +12 -74
  275. package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.d.ts.map +1 -1
  276. package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.js +10 -73
  277. package/src/engine/ecs/ik/ik_probe_terrain_contact.d.ts +38 -0
  278. package/src/engine/ecs/ik/ik_probe_terrain_contact.d.ts.map +1 -0
  279. package/src/engine/ecs/ik/ik_probe_terrain_contact.js +119 -0
  280. package/src/engine/ecs/terrain/util/paintTerrainOverlayViaLookupTable.d.ts +0 -1
  281. package/src/engine/ecs/terrain/util/paintTerrainOverlayViaLookupTable.d.ts.map +1 -1
  282. package/src/engine/ecs/terrain/util/paintTerrainOverlayViaLookupTable.js +2 -14
  283. package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.d.ts +12 -1
  284. package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.d.ts.map +1 -1
  285. package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.js +14 -10
  286. package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.d.ts.map +1 -1
  287. package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.js +7 -28
  288. package/src/engine/graphics/ecs/highlight/renderer/HighlightDecodeShader.d.ts +1 -2
  289. package/src/engine/graphics/ecs/highlight/renderer/HighlightDecodeShader.d.ts.map +1 -1
  290. package/src/engine/graphics/ecs/highlight/renderer/HighlightDecodeShader.js +4 -12
  291. package/src/engine/graphics/ecs/highlight/renderer/OutlineRenderer.d.ts.map +1 -1
  292. package/src/engine/graphics/ecs/highlight/renderer/OutlineRenderer.js +2 -11
  293. package/src/engine/graphics/ecs/highlight/renderer/makeBlurShader_9.d.ts +1 -2
  294. package/src/engine/graphics/ecs/highlight/renderer/makeBlurShader_9.d.ts.map +1 -1
  295. package/src/engine/graphics/ecs/highlight/renderer/makeBlurShader_9.js +3 -11
  296. package/src/engine/graphics/ecs/highlight/renderer/makeDilationShader.d.ts +1 -2
  297. package/src/engine/graphics/ecs/highlight/renderer/makeDilationShader.d.ts.map +1 -1
  298. package/src/engine/graphics/ecs/highlight/renderer/makeDilationShader.js +3 -11
  299. package/src/engine/graphics/ecs/highlight/renderer/make_screen_space_quad_material.d.ts +33 -0
  300. package/src/engine/graphics/ecs/highlight/renderer/make_screen_space_quad_material.d.ts.map +1 -0
  301. package/src/engine/graphics/ecs/highlight/renderer/make_screen_space_quad_material.js +44 -0
  302. package/src/engine/graphics/ecs/highlight/system/HighlightSystemBase.d.ts +55 -0
  303. package/src/engine/graphics/ecs/highlight/system/HighlightSystemBase.d.ts.map +1 -0
  304. package/src/engine/graphics/ecs/highlight/system/HighlightSystemBase.js +205 -0
  305. package/src/engine/graphics/ecs/highlight/system/MeshHighlightSystem.d.ts +4 -45
  306. package/src/engine/graphics/ecs/highlight/system/MeshHighlightSystem.d.ts.map +1 -1
  307. package/src/engine/graphics/ecs/highlight/system/MeshHighlightSystem.js +39 -162
  308. package/src/engine/graphics/ecs/highlight/system/RenderableHighlightSystem.d.ts +4 -51
  309. package/src/engine/graphics/ecs/highlight/system/RenderableHighlightSystem.d.ts.map +1 -1
  310. package/src/engine/graphics/ecs/highlight/system/RenderableHighlightSystem.js +34 -164
  311. package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.d.ts +5 -57
  312. package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.d.ts.map +1 -1
  313. package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.js +48 -175
  314. package/src/engine/graphics/ecs/light/shadow/extend_shadow_camera_near_for_casters.d.ts.map +1 -1
  315. package/src/engine/graphics/ecs/light/shadow/extend_shadow_camera_near_for_casters.js +7 -25
  316. package/src/engine/graphics/ecs/make_bvh_depth_range_computer.d.ts +26 -0
  317. package/src/engine/graphics/ecs/make_bvh_depth_range_computer.d.ts.map +1 -0
  318. package/src/engine/graphics/ecs/make_bvh_depth_range_computer.js +33 -0
  319. package/src/engine/graphics/ecs/mesh/MeshSystem.d.ts.map +1 -1
  320. package/src/engine/graphics/ecs/mesh/MeshSystem.js +2 -5
  321. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.d.ts.map +1 -1
  322. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.js +2 -5
  323. package/src/engine/graphics/ecs/render_layers_compute_depth_range.d.ts +35 -0
  324. package/src/engine/graphics/ecs/render_layers_compute_depth_range.d.ts.map +1 -0
  325. package/src/engine/graphics/ecs/render_layers_compute_depth_range.js +64 -0
  326. package/src/engine/graphics/ecs/trail2d/Trail2DSystem.d.ts.map +1 -1
  327. package/src/engine/graphics/ecs/trail2d/Trail2DSystem.js +2 -5
  328. package/src/engine/graphics/ecs/trail3d/Trail3DSystem.d.ts.map +1 -1
  329. package/src/engine/graphics/ecs/trail3d/Trail3DSystem.js +2 -5
  330. package/src/engine/graphics/ecs/water/WaterSystem.d.ts.map +1 -1
  331. package/src/engine/graphics/ecs/water/WaterSystem.js +2 -5
  332. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_nearest.d.ts.map +1 -1
  333. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_nearest.js +22 -94
  334. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_overlap_clipping_volume.d.ts.map +1 -1
  335. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_overlap_clipping_volume.js +17 -57
  336. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_raycast.d.ts.map +1 -1
  337. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_raycast.js +17 -57
  338. package/src/engine/graphics/geometry/buffered/query/nearest_point_on_triangle_record.d.ts +30 -0
  339. package/src/engine/graphics/geometry/buffered/query/nearest_point_on_triangle_record.d.ts.map +1 -0
  340. package/src/engine/graphics/geometry/buffered/query/nearest_point_on_triangle_record.js +87 -0
  341. package/src/engine/graphics/geometry/buffered/query/query_bvh_geometry_nearest.d.ts.map +1 -1
  342. package/src/engine/graphics/geometry/buffered/query/query_bvh_geometry_nearest.js +11 -55
  343. package/src/engine/graphics/geometry/buffered/read_triangle_vertices.d.ts +29 -0
  344. package/src/engine/graphics/geometry/buffered/read_triangle_vertices.d.ts.map +1 -0
  345. package/src/engine/graphics/geometry/buffered/read_triangle_vertices.js +102 -0
  346. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderDepthV0.d.ts.map +1 -1
  347. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderDepthV0.js +17 -122
  348. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderLitV0.d.ts.map +1 -1
  349. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderLitV0.js +15 -194
  350. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderNormalsV0.d.ts.map +1 -1
  351. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderNormalsV0.js +12 -108
  352. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderPerPixelV0.d.ts.map +1 -1
  353. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderPerPixelV0.js +14 -183
  354. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderV0.d.ts.map +1 -1
  355. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderV0.js +12 -154
  356. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderViewportDepthV0.d.ts.map +1 -1
  357. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderViewportDepthV0.js +10 -94
  358. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderWireframeV0.d.ts.map +1 -1
  359. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderWireframeV0.js +8 -72
  360. package/src/engine/graphics/impostors/octahedral/shader/glsl/common.glsl +10 -0
  361. package/src/engine/graphics/impostors/voxel/bake/read_atlas_to_samples.d.ts.map +1 -1
  362. package/src/engine/graphics/impostors/voxel/bake/read_atlas_to_samples.js +79 -58
  363. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderDepthV0.d.ts.map +1 -1
  364. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderDepthV0.js +11 -22
  365. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderLitV0.d.ts.map +1 -1
  366. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderLitV0.js +7 -16
  367. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderNormalsV0.d.ts.map +1 -1
  368. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderNormalsV0.js +5 -9
  369. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderV0.d.ts.map +1 -1
  370. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderV0.js +4 -19
  371. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderViewportDepthV0.d.ts.map +1 -1
  372. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderViewportDepthV0.js +5 -9
  373. package/src/engine/graphics/material/SplatMaterial.d.ts.map +1 -1
  374. package/src/engine/graphics/material/SplatMaterial.js +2 -17
  375. package/src/engine/graphics/material/WaterMaterial.d.ts.map +1 -1
  376. package/src/engine/graphics/material/WaterMaterial.js +3 -18
  377. package/src/engine/graphics/material/manager/compilers/CoalesceTextures.d.ts +4 -4
  378. package/src/engine/graphics/material/manager/compilers/CoalesceTextures.d.ts.map +1 -1
  379. package/src/engine/graphics/material/manager/compilers/CoalesceTextures.js +25 -70
  380. package/src/engine/graphics/particles/ecs/ParticleEmitterSystem.d.ts.map +1 -1
  381. package/src/engine/graphics/particles/ecs/ParticleEmitterSystem.js +2 -5
  382. package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.d.ts +8 -11
  383. package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.d.ts.map +1 -1
  384. package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.js +20 -21
  385. package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.d.ts +39 -0
  386. package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.d.ts.map +1 -0
  387. package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.js +45 -0
  388. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.d.ts +6 -8
  389. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.d.ts.map +1 -1
  390. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.js +2 -13
  391. package/src/engine/graphics/particles/particular/engine/utils/distributeParticlesOnObject3D.d.ts.map +1 -1
  392. package/src/engine/graphics/particles/particular/engine/utils/distributeParticlesOnObject3D.js +16 -78
  393. package/src/engine/graphics/particles/particular/engine/utils/distribute_points_on_indexed_triangles.d.ts +45 -0
  394. package/src/engine/graphics/particles/particular/engine/utils/distribute_points_on_indexed_triangles.d.ts.map +1 -0
  395. package/src/engine/graphics/particles/particular/engine/utils/distribute_points_on_indexed_triangles.js +168 -0
  396. package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.d.ts.map +1 -1
  397. package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.js +11 -115
  398. package/src/engine/graphics/postprocess/threejs/shaders/CopyShader.d.ts +24 -16
  399. package/src/engine/graphics/postprocess/threejs/shaders/CopyShader.d.ts.map +1 -1
  400. package/src/engine/graphics/postprocess/threejs/shaders/CopyShader.js +15 -47
  401. package/src/engine/graphics/render/buffer/simple-fx/ao/AmbientOcclusionPostProcessEffect.d.ts +4 -0
  402. package/src/engine/graphics/render/buffer/simple-fx/ao/AmbientOcclusionPostProcessEffect.d.ts.map +1 -1
  403. package/src/engine/graphics/render/buffer/simple-fx/ao/AmbientOcclusionPostProcessEffect.js +4 -0
  404. package/src/engine/graphics/sh3/build_injected_shader.d.ts +51 -0
  405. package/src/engine/graphics/sh3/build_injected_shader.d.ts.map +1 -0
  406. package/src/engine/graphics/sh3/build_injected_shader.js +56 -0
  407. package/src/engine/graphics/sh3/gi/material/MaterialTransformer.d.ts.map +1 -1
  408. package/src/engine/graphics/sh3/gi/material/MaterialTransformer.js +10 -1
  409. package/src/engine/graphics/sh3/gi/material/chunk_lpv_get_irradiance_at.d.ts.map +1 -1
  410. package/src/engine/graphics/sh3/gi/material/chunk_lpv_get_irradiance_at.js +17 -0
  411. package/src/engine/graphics/sh3/gi/material/common.d.ts +1 -1
  412. package/src/engine/graphics/sh3/gi/material/common.js +6 -222
  413. package/src/engine/graphics/sh3/gi/material/space_fragment/build_fragment_shader.d.ts.map +1 -1
  414. package/src/engine/graphics/sh3/gi/material/space_fragment/build_fragment_shader.js +7 -11
  415. package/src/engine/graphics/sh3/gi/material/space_fragment/build_vertex_shader.d.ts.map +1 -1
  416. package/src/engine/graphics/sh3/gi/material/space_fragment/build_vertex_shader.js +27 -29
  417. package/src/engine/graphics/sh3/gi/material/space_vertex/build_fragment_shader.d.ts.map +1 -1
  418. package/src/engine/graphics/sh3/gi/material/space_vertex/build_fragment_shader.js +7 -11
  419. package/src/engine/graphics/sh3/gi/material/space_vertex/build_vertex_shader.d.ts.map +1 -1
  420. package/src/engine/graphics/sh3/gi/material/space_vertex/build_vertex_shader.js +7 -12
  421. package/src/engine/graphics/sh3/grid_dilate_average.d.ts +38 -0
  422. package/src/engine/graphics/sh3/grid_dilate_average.d.ts.map +1 -0
  423. package/src/engine/graphics/sh3/grid_dilate_average.js +175 -0
  424. package/src/engine/graphics/sh3/lightmap/lightmap_dilate.d.ts +4 -0
  425. package/src/engine/graphics/sh3/lightmap/lightmap_dilate.d.ts.map +1 -1
  426. package/src/engine/graphics/sh3/lightmap/lightmap_dilate.js +7 -70
  427. package/src/engine/graphics/sh3/lpg/light_probe_grid_dilate.d.ts +6 -0
  428. package/src/engine/graphics/sh3/lpg/light_probe_grid_dilate.d.ts.map +1 -1
  429. package/src/engine/graphics/sh3/lpg/light_probe_grid_dilate.js +14 -113
  430. package/src/engine/graphics/sh3/lpg/material/chunk_lpg_get_irradiance_at.d.ts.map +1 -1
  431. package/src/engine/graphics/sh3/lpg/material/chunk_lpg_get_irradiance_at.js +7 -0
  432. package/src/engine/graphics/sh3/lpg/material/space_fragment/build_fragment_shader.d.ts.map +1 -1
  433. package/src/engine/graphics/sh3/lpg/material/space_fragment/build_fragment_shader.js +5 -8
  434. package/src/engine/graphics/sh3/lpg/material/space_fragment/build_vertex_shader.d.ts.map +1 -1
  435. package/src/engine/graphics/sh3/lpg/material/space_fragment/build_vertex_shader.js +5 -8
  436. package/src/engine/graphics/sh3/lpg/material/space_vertex/build_fragment_shader.d.ts.map +1 -1
  437. package/src/engine/graphics/sh3/lpg/material/space_vertex/build_fragment_shader.js +5 -8
  438. package/src/engine/graphics/sh3/lpg/material/space_vertex/build_vertex_shader.d.ts.map +1 -1
  439. package/src/engine/graphics/sh3/lpg/material/space_vertex/build_vertex_shader.js +5 -8
  440. package/src/engine/graphics/sh3/lpv/depth/chunk_probe_depth_sampling.d.ts +38 -0
  441. package/src/engine/graphics/sh3/lpv/depth/chunk_probe_depth_sampling.d.ts.map +1 -0
  442. package/src/engine/graphics/sh3/lpv/depth/chunk_probe_depth_sampling.js +265 -0
  443. package/src/engine/graphics/sh3/lpv/depth/octahedral/shader/visualize.frag.glsl +11 -0
  444. package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/VLPDepthMapVisualisation.d.ts.map +1 -1
  445. package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/VLPDepthMapVisualisation.js +5 -1
  446. package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/visualise.frag.glsl +189 -419
  447. package/src/engine/graphics/sh3/shader/visualize.frag.d.ts +1 -1
  448. package/src/engine/graphics/sh3/shader/visualize.frag.js +7 -0
  449. package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.d.ts +102 -0
  450. package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.d.ts.map +1 -0
  451. package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.js +277 -0
  452. package/src/engine/graphics/shaders/chunks/glsl_packing.d.ts +29 -0
  453. package/src/engine/graphics/shaders/chunks/glsl_packing.d.ts.map +1 -0
  454. package/src/engine/graphics/shaders/chunks/glsl_packing.js +30 -0
  455. package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.d.ts +40 -0
  456. package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.d.ts.map +1 -0
  457. package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.js +57 -0
  458. package/src/engine/graphics/shaders/lib/make_clouds_uniforms.d.ts +22 -0
  459. package/src/engine/graphics/shaders/lib/make_clouds_uniforms.d.ts.map +1 -0
  460. package/src/engine/graphics/shaders/lib/make_clouds_uniforms.js +39 -0
  461. package/src/engine/graphics/texture/attribute_spec_to_three_format.d.ts +6 -0
  462. package/src/engine/graphics/texture/attribute_spec_to_three_format.d.ts.map +1 -1
  463. package/src/engine/graphics/texture/attribute_spec_to_three_format.js +9 -9
  464. package/src/engine/graphics/texture/channel_count_to_format_prefix.d.ts +14 -0
  465. package/src/engine/graphics/texture/channel_count_to_format_prefix.d.ts.map +1 -0
  466. package/src/engine/graphics/texture/channel_count_to_format_prefix.js +26 -0
  467. package/src/engine/graphics/texture/computeThreeTextureInternalFormatFromDataType.d.ts.map +1 -1
  468. package/src/engine/graphics/texture/computeThreeTextureInternalFormatFromDataType.js +2 -20
  469. package/src/engine/graphics/texture/normalized_internal_format.d.ts.map +1 -1
  470. package/src/engine/graphics/texture/normalized_internal_format.js +2 -20
  471. package/src/engine/graphics/texture/sampler/convertTexture2Sampler2D.d.ts.map +1 -1
  472. package/src/engine/graphics/texture/sampler/convertTexture2Sampler2D.js +9 -3
  473. package/src/engine/input/devices/gamepad/GamepadDeviceLayout.d.ts +54 -0
  474. package/src/engine/input/devices/gamepad/GamepadDeviceLayout.d.ts.map +1 -0
  475. package/src/engine/input/devices/gamepad/GamepadDeviceLayout.js +323 -0
  476. package/src/engine/input/devices/gamepad/GamepadHandle.d.ts +21 -2
  477. package/src/engine/input/devices/gamepad/GamepadHandle.d.ts.map +1 -1
  478. package/src/engine/input/devices/gamepad/GamepadHandle.js +39 -11
  479. package/src/engine/input/devices/gamepad/GamepadLayout.d.ts +128 -0
  480. package/src/engine/input/devices/gamepad/GamepadLayout.d.ts.map +1 -0
  481. package/src/engine/input/devices/gamepad/GamepadLayout.js +160 -0
  482. package/src/engine/input/devices/gamepad/GamepadStandardMapping.d.ts +10 -0
  483. package/src/engine/input/devices/gamepad/GamepadStandardMapping.d.ts.map +1 -1
  484. package/src/engine/input/devices/gamepad/GamepadStandardMapping.js +11 -0
  485. package/src/engine/input/devices/gamepad/GamepadStick.d.ts +5 -1
  486. package/src/engine/input/devices/gamepad/GamepadStick.d.ts.map +1 -1
  487. package/src/engine/input/devices/gamepad/GamepadStick.js +5 -1
  488. package/src/engine/input/devices/gamepad/gamepad_layout_database.d.ts +27 -0
  489. package/src/engine/input/devices/gamepad/gamepad_layout_database.d.ts.map +1 -0
  490. package/src/engine/input/devices/gamepad/gamepad_layout_database.js +144 -0
  491. package/src/engine/input/devices/gamepad/gamepad_read_hat_axis.d.ts +25 -0
  492. package/src/engine/input/devices/gamepad/gamepad_read_hat_axis.d.ts.map +1 -0
  493. package/src/engine/input/devices/gamepad/gamepad_read_hat_axis.js +61 -0
  494. package/src/engine/input/devices/gamepad/prototypeGamepadTester.d.ts +2 -0
  495. package/src/engine/input/devices/gamepad/prototypeGamepadTester.d.ts.map +1 -0
  496. package/src/engine/input/devices/gamepad/prototypeGamepadTester.js +2124 -0
  497. package/src/engine/input/ecs/util/TopDownCameraControllerHelper.d.ts.map +1 -1
  498. package/src/engine/input/ecs/util/TopDownCameraControllerHelper.js +3 -33
  499. package/src/engine/intelligence/behavior/util/RandomDelayBehavior.d.ts.map +1 -1
  500. package/src/engine/intelligence/behavior/util/RandomDelayBehavior.js +5 -0
  501. package/src/engine/network/adapters/QuaternionInterpolationAdapter.d.ts.map +1 -1
  502. package/src/engine/network/adapters/QuaternionInterpolationAdapter.js +18 -19
  503. package/src/engine/network/adapters/TransformInterpolationAdapter.d.ts.map +1 -1
  504. package/src/engine/network/adapters/TransformInterpolationAdapter.js +18 -13
  505. package/src/engine/network/orchestrator/NetworkPeer.d.ts.map +1 -1
  506. package/src/engine/network/orchestrator/NetworkPeer.js +2 -1
  507. package/src/engine/network/sim/ActionLog.d.ts +9 -6
  508. package/src/engine/network/sim/ActionLog.d.ts.map +1 -1
  509. package/src/engine/network/sim/ActionLog.js +43 -80
  510. package/src/engine/network/sim/SmoothingState.d.ts.map +1 -1
  511. package/src/engine/network/sim/SmoothingState.js +27 -28
  512. package/src/engine/network/state/FrameBufferRing.d.ts +84 -0
  513. package/src/engine/network/state/FrameBufferRing.d.ts.map +1 -0
  514. package/src/engine/network/state/FrameBufferRing.js +168 -0
  515. package/src/engine/network/state/InputRing.d.ts +14 -12
  516. package/src/engine/network/state/InputRing.d.ts.map +1 -1
  517. package/src/engine/network/state/InputRing.js +37 -76
  518. package/src/engine/network/transport/LoopbackTransport.d.ts.map +1 -1
  519. package/src/engine/network/transport/LoopbackTransport.js +10 -31
  520. package/src/engine/network/transport/Transport.d.ts +42 -2
  521. package/src/engine/network/transport/Transport.d.ts.map +1 -1
  522. package/src/engine/network/transport/Transport.js +87 -3
  523. package/src/engine/network/transport/adapters/NodeUDPTransport.d.ts.map +1 -1
  524. package/src/engine/network/transport/adapters/NodeUDPTransport.js +7 -33
  525. package/src/engine/network/transport/adapters/SimulatedTransport.d.ts.map +1 -1
  526. package/src/engine/network/transport/adapters/SimulatedTransport.js +17 -28
  527. package/src/engine/network/transport/adapters/WebRTCDataChannelTransport.d.ts.map +1 -1
  528. package/src/engine/network/transport/adapters/WebRTCDataChannelTransport.js +6 -32
  529. package/src/engine/network/transport/adapters/WebSocketTransport.d.ts.map +1 -1
  530. package/src/engine/network/transport/adapters/WebSocketTransport.js +6 -32
  531. package/src/engine/network/transport/adapters/WebTransportTransport.d.ts.map +1 -1
  532. package/src/engine/network/transport/adapters/WebTransportTransport.js +11 -22
  533. package/src/engine/physics/constraint/solve_constraints.d.ts.map +1 -1
  534. package/src/engine/physics/constraint/solve_constraints.js +18 -48
  535. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  536. package/src/engine/physics/fluid/ecs/FluidSystem.d.ts +3 -3
  537. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_scalar.d.ts.map +1 -1
  538. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_scalar.js +7 -0
  539. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.d.ts.map +1 -1
  540. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.js +11 -18
  541. package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.d.ts.map +1 -1
  542. package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.js +7 -0
  543. package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.d.ts.map +1 -1
  544. package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.js +15 -57
  545. package/src/engine/physics/fluid/solver/v3_grid_apply_scalar_advection.d.ts.map +1 -1
  546. package/src/engine/physics/fluid/solver/v3_grid_apply_scalar_advection.js +7 -0
  547. package/src/engine/physics/fluid/solver/v3_grid_limit8_at_indices.d.ts +28 -0
  548. package/src/engine/physics/fluid/solver/v3_grid_limit8_at_indices.d.ts.map +1 -0
  549. package/src/engine/physics/fluid/solver/v3_grid_limit8_at_indices.js +38 -0
  550. package/src/engine/physics/fluid/solver/v3_mac_advect_maccormack_velocity.d.ts.map +1 -1
  551. package/src/engine/physics/fluid/solver/v3_mac_advect_maccormack_velocity.js +12 -14
  552. package/src/engine/physics/fluid/solver/v3_mac_apply_vorticity_confinement.d.ts.map +1 -1
  553. package/src/engine/physics/fluid/solver/v3_mac_apply_vorticity_confinement.js +9 -0
  554. package/src/engine/physics/mls-mpm/MLS_MPM.d.ts +13 -1
  555. package/src/engine/physics/mls-mpm/MLS_MPM.d.ts.map +1 -1
  556. package/src/engine/physics/mls-mpm/MLS_MPM.js +15 -4
  557. package/src/engine/physics/narrowphase/box_triangle_contact.d.ts.map +1 -1
  558. package/src/engine/physics/narrowphase/box_triangle_contact.js +9 -0
  559. package/src/engine/physics/narrowphase/capsule_contacts.d.ts.map +1 -1
  560. package/src/engine/physics/narrowphase/capsule_contacts.js +10 -11
  561. package/src/engine/physics/narrowphase/sphere_triangle_contact.d.ts.map +1 -1
  562. package/src/engine/physics/narrowphase/sphere_triangle_contact.js +7 -12
  563. package/src/engine/physics/solver/apply_impulse_to_body.d.ts +36 -0
  564. package/src/engine/physics/solver/apply_impulse_to_body.d.ts.map +1 -0
  565. package/src/engine/physics/solver/apply_impulse_to_body.js +86 -0
  566. package/src/engine/physics/solver/solve_contacts.d.ts.map +1 -1
  567. package/src/engine/physics/solver/solve_contacts.js +1 -53
  568. package/src/engine/plugin/EnginePlugin.d.ts +3 -0
  569. package/src/engine/plugin/EnginePlugin.d.ts.map +1 -1
  570. package/src/engine/plugin/EnginePlugin.js +3 -0
  571. package/src/engine/save/storage/IndexedDBStorage.d.ts +1 -0
  572. package/src/engine/save/storage/IndexedDBStorage.d.ts.map +1 -1
  573. package/src/engine/save/storage/IndexedDBStorage.js +50 -50
  574. package/src/engine/sound/ecs/SoundControllerSystem.d.ts.map +1 -1
  575. package/src/engine/sound/ecs/SoundControllerSystem.js +2 -10
  576. package/src/engine/sound/simulation/AcousticSimulator.d.ts.map +1 -1
  577. package/src/engine/sound/simulation/AcousticSimulator.js +2 -1
  578. package/src/engine/sound/simulation/core/AcousticOccluderIndex.d.ts.map +1 -1
  579. package/src/engine/sound/simulation/core/AcousticOccluderIndex.js +4 -6
  580. package/src/engine/sound/simulation/core/OcclusionSolver.d.ts.map +1 -1
  581. package/src/engine/sound/simulation/core/OcclusionSolver.js +2 -9
  582. package/src/engine/sound/simulation/probe/ProbeVisibilityRecheck.d.ts.map +1 -1
  583. package/src/engine/sound/simulation/probe/ProbeVisibilityRecheck.js +9 -14
  584. package/src/engine/sound/simulation/probe/bakeReverbBands.d.ts.map +1 -1
  585. package/src/engine/sound/simulation/probe/bakeReverbBands.js +2 -6
  586. package/src/engine/sound/simulation/probe/bakeVisibility.d.ts.map +1 -1
  587. package/src/engine/sound/simulation/probe/bakeVisibility.js +4 -34
  588. package/src/engine/sound/simulation/probe/probe_densify_portals.d.ts.map +1 -1
  589. package/src/engine/sound/simulation/probe/probe_densify_portals.js +3 -6
  590. package/src/engine/sound/simulation/probe/probe_edge_key.d.ts +31 -0
  591. package/src/engine/sound/simulation/probe/probe_edge_key.d.ts.map +1 -0
  592. package/src/engine/sound/simulation/probe/probe_edge_key.js +38 -0
  593. package/src/engine/sound/simulation/probe/probe_sdf_grid.d.ts +10 -3
  594. package/src/engine/sound/simulation/probe/probe_sdf_grid.d.ts.map +1 -1
  595. package/src/engine/sound/simulation/probe/probe_sdf_grid.js +10 -22
  596. package/src/engine/sound/simulation/probe/probe_visibility_augment.d.ts.map +1 -1
  597. package/src/engine/sound/simulation/probe/probe_visibility_augment.js +12 -48
  598. package/src/engine/sound/simulation/probe/probe_visibility_bridge_components.d.ts.map +1 -1
  599. package/src/engine/sound/simulation/probe/probe_visibility_bridge_components.js +4 -3
  600. package/src/engine/sound/simulation/render/foaReverbImpulseResponse.d.ts +5 -4
  601. package/src/engine/sound/simulation/render/foaReverbImpulseResponse.d.ts.map +1 -1
  602. package/src/engine/sound/simulation/render/foaReverbImpulseResponse.js +23 -31
  603. package/src/engine/sound/simulation/render/reverbImpulseResponse.d.ts +1 -8
  604. package/src/engine/sound/simulation/render/reverbImpulseResponse.d.ts.map +1 -1
  605. package/src/engine/sound/simulation/render/reverbImpulseResponse.js +21 -31
  606. package/src/engine/sound/simulation/render/reverb_band_tails.d.ts +55 -0
  607. package/src/engine/sound/simulation/render/reverb_band_tails.d.ts.map +1 -0
  608. package/src/engine/sound/simulation/render/reverb_band_tails.js +93 -0
  609. package/src/engine/sound/sopra/definition/EventDescriptionSerializationAdapter.d.ts.map +1 -1
  610. package/src/engine/sound/sopra/definition/EventDescriptionSerializationAdapter.js +6 -22
  611. package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.d.ts.map +1 -1
  612. package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.js +7 -3
  613. package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClipSerializationAdapter.d.ts.map +1 -1
  614. package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClipSerializationAdapter.js +7 -22
  615. package/src/engine/sound/sopra/definition/clip/ContainerAudioClip.d.ts.map +1 -1
  616. package/src/engine/sound/sopra/definition/clip/ContainerAudioClip.js +28 -0
  617. package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.d.ts.map +1 -1
  618. package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.js +1 -5
  619. package/src/engine/sound/sopra/definition/clip/SequenceContainerAudioClip.d.ts.map +1 -1
  620. package/src/engine/sound/sopra/definition/clip/SequenceContainerAudioClip.js +1 -13
  621. package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.d.ts.map +1 -1
  622. package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.js +2 -8
  623. package/src/engine/sound/sopra/definition/effect/ReverbEffect.d.ts +3 -0
  624. package/src/engine/sound/sopra/definition/effect/ReverbEffect.d.ts.map +1 -1
  625. package/src/engine/sound/sopra/definition/effect/ReverbEffect.js +26 -14
  626. package/src/engine/sound/sopra/runtime/BusGraph.d.ts.map +1 -1
  627. package/src/engine/sound/sopra/runtime/BusGraph.js +21 -33
  628. package/src/engine/sound/sopra/runtime/EventInstance.js +1 -1
  629. package/src/engine/ui/apply_pointer_tilt_3d.d.ts +25 -0
  630. package/src/engine/ui/apply_pointer_tilt_3d.d.ts.map +1 -0
  631. package/src/engine/ui/apply_pointer_tilt_3d.js +50 -0
  632. package/src/engine/ui/bindings/processors/DomElementProcessorTilt3D.d.ts.map +1 -1
  633. package/src/engine/ui/bindings/processors/DomElementProcessorTilt3D.js +9 -26
  634. package/src/generation/filtering/numeric/CellFilterCache.d.ts.map +1 -1
  635. package/src/generation/filtering/numeric/CellFilterCache.js +4 -21
  636. package/src/generation/filtering/numeric/complex/CellFilterSobel.d.ts.map +1 -1
  637. package/src/generation/filtering/numeric/complex/CellFilterSobel.js +11 -20
  638. package/src/generation/filtering/numeric/math/CellFilterPower.d.ts +1 -1
  639. package/src/generation/filtering/numeric/math/CellFilterPower.d.ts.map +1 -1
  640. package/src/generation/filtering/numeric/math/CellFilterPower.js +1 -5
  641. package/src/generation/filtering/numeric/process/computeCellFilterGradient.d.ts.map +1 -1
  642. package/src/generation/filtering/numeric/process/computeCellFilterGradient.js +13 -15
  643. package/src/generation/filtering/numeric/process/computeCellFilterSobel.d.ts +20 -0
  644. package/src/generation/filtering/numeric/process/computeCellFilterSobel.d.ts.map +1 -0
  645. package/src/generation/filtering/numeric/process/computeCellFilterSobel.js +36 -0
  646. package/src/generation/filtering/numeric/util/CellFilterDisplaced.d.ts.map +1 -1
  647. package/src/generation/filtering/numeric/util/CellFilterDisplaced.js +11 -6
  648. package/src/generation/filtering/numeric/util/populateSampler2DFromCellFilter.d.ts.map +1 -1
  649. package/src/generation/filtering/numeric/util/populateSampler2DFromCellFilter.js +18 -36
  650. package/src/generation/filtering/numeric/util/write_cell_filter_to_sampler2d.d.ts +21 -0
  651. package/src/generation/filtering/numeric/util/write_cell_filter_to_sampler2d.d.ts.map +1 -0
  652. package/src/generation/filtering/numeric/util/write_cell_filter_to_sampler2d.js +47 -0
  653. package/src/generation/filtering/util/cell_filter_weights_pick.d.ts +25 -0
  654. package/src/generation/filtering/util/cell_filter_weights_pick.d.ts.map +1 -0
  655. package/src/generation/filtering/util/cell_filter_weights_pick.js +54 -0
  656. package/src/generation/grid/generation/discrete/GridTaskConnectRooms.d.ts.map +1 -1
  657. package/src/generation/grid/generation/discrete/GridTaskConnectRooms.js +14 -1
  658. package/src/generation/markers/GridActionRuleSet.d.ts.map +1 -1
  659. package/src/generation/markers/GridActionRuleSet.js +10 -7
  660. package/src/generation/markers/GridCellActionPlaceMarker.d.ts.map +1 -1
  661. package/src/generation/markers/GridCellActionPlaceMarker.js +10 -12
  662. package/src/generation/markers/actions/probability/MarkerNodeActionSelectWeighted.d.ts.map +1 -1
  663. package/src/generation/markers/actions/probability/MarkerNodeActionSelectWeighted.js +7 -42
  664. package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.d.ts.map +1 -1
  665. package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.js +11 -6
  666. package/src/generation/placement/GridCellPlacementRule.d.ts.map +1 -1
  667. package/src/generation/placement/GridCellPlacementRule.js +10 -7
  668. package/src/generation/placement/action/GridCellActionPlaceTags.d.ts.map +1 -1
  669. package/src/generation/placement/action/GridCellActionPlaceTags.js +10 -4
  670. package/src/generation/placement/action/random/weighted/CellActionSelectWeightedRandom.d.ts.map +1 -1
  671. package/src/generation/placement/action/random/weighted/CellActionSelectWeightedRandom.js +2 -38
  672. package/src/generation/placement/action/util/GridCellDisplacedAction.d.ts.map +1 -1
  673. package/src/generation/placement/action/util/GridCellDisplacedAction.js +11 -6
  674. package/src/generation/rules/cell/CellMatcherGridPattern.d.ts.map +1 -1
  675. package/src/generation/rules/cell/CellMatcherGridPattern.js +11 -4
  676. package/src/generation/theme/ThemeEngine.d.ts.map +1 -1
  677. package/src/generation/theme/ThemeEngine.js +7 -12
  678. package/src/view/elements/Group.d.ts +24 -3
  679. package/src/view/elements/Group.d.ts.map +1 -1
  680. package/src/view/elements/Group.js +56 -34
@@ -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
+ }
@@ -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,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"}
@@ -1,24 +1,22 @@
1
- import Vector2 from "../../../../core/geom/Vector2.js";
2
-
3
- /**
4
- *
5
- * @param {Vector2} size
6
- * @param {AABB2} frame
7
- * @param {Vector2} margin
8
- * @param {number} x
9
- * @param {number} y
10
- * @return {Vector2}
11
- */
12
- export function position_canvas_to_curve(size, frame, margin, x, y) {
13
-
14
- const width = size.x;
15
- const height = size.y;
16
-
17
- const u = (x - margin.x) / (width - margin.x * 2);
18
- const v = 1 - (y - margin.y) / (height - margin.y * 2);
19
-
20
- return new Vector2(
21
- u * frame.width + frame.x0,
22
- v * frame.height + frame.y0
23
- );
24
- }
1
+ import Vector2 from "../../../../core/geom/Vector2.js";
2
+ import { canvas_point_to_curve } from "./canvas_point_to_curve.js";
3
+
4
+ const scratch = new Float64Array(2);
5
+
6
+ /**
7
+ * Allocating convenience wrapper around {@link canvas_point_to_curve}; use that directly on any
8
+ * path that runs per-pixel or per-frame.
9
+ *
10
+ * @param {Vector2} size
11
+ * @param {AABB2} frame
12
+ * @param {Vector2} margin
13
+ * @param {number} x
14
+ * @param {number} y
15
+ * @return {Vector2}
16
+ */
17
+ export function position_canvas_to_curve(size, frame, margin, x, y) {
18
+
19
+ canvas_point_to_curve(scratch, 0, size, frame, margin, x, y);
20
+
21
+ return new Vector2(scratch[0], scratch[1]);
22
+ }
@@ -1,4 +1,6 @@
1
1
  /**
2
+ * Allocating convenience wrapper around {@link curve_point_to_canvas}; 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