@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
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Closest pair of points between two 3D segments, written into `out` as
3
+ * `(pax, pay, paz, pbx, pby, pbz)` — the point on segment A followed by the point on segment B.
4
+ *
5
+ * Wraps {@link line3_compute_segment_segment_closest_points}, which reports the closest pair as the
6
+ * parameters `(s, t)`. Every caller of that function immediately reconstructed both world points with the
7
+ * same six lines, and three of the four then took the squared distance between them — returned here.
8
+ *
9
+ * The reconstruction uses the `a + (b - a) * t` form deliberately, matching all previous call sites
10
+ * bit-for-bit; the algebraically equal `(1 - t) * a + t * b` is NOT the same in floating point and would
11
+ * perturb the contact manifolds this feeds.
12
+ *
13
+ * @param {number[]|Float32Array|Float64Array} out destination, at least 6 elements from `out_offset`
14
+ * @param {number} out_offset
15
+ * @param {number} a0x
16
+ * @param {number} a0y
17
+ * @param {number} a0z
18
+ * @param {number} a1x
19
+ * @param {number} a1y
20
+ * @param {number} a1z
21
+ * @param {number} b0x
22
+ * @param {number} b0y
23
+ * @param {number} b0z
24
+ * @param {number} b1x
25
+ * @param {number} b1y
26
+ * @param {number} b1z
27
+ * @returns {number} SQUARED distance between the two closest points
28
+ *
29
+ * @author Alex Goldring
30
+ * @copyright Company Named Limited (c) 2026
31
+ */
32
+ export function line3_segment_segment_closest_point_pair(out: number[] | Float32Array | Float64Array, out_offset: number, a0x: number, a0y: number, a0z: number, a1x: number, a1y: number, a1z: number, b0x: number, b0y: number, b0z: number, b1x: number, b1y: number, b1z: number): number;
33
+ //# sourceMappingURL=line3_segment_segment_closest_point_pair.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"line3_segment_segment_closest_point_pair.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/line/line3_segment_segment_closest_point_pair.js"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,8DAnBW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,cAClC,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,GACJ,MAAM,CAuClB"}
@@ -0,0 +1,71 @@
1
+ import { line3_compute_segment_segment_closest_points } from "./line3_compute_segment_segment_closest_points.js";
2
+
3
+ // [s, t] parameters along segment A and segment B
4
+ const scratch_st = new Float64Array(2);
5
+
6
+ /**
7
+ * Closest pair of points between two 3D segments, written into `out` as
8
+ * `(pax, pay, paz, pbx, pby, pbz)` — the point on segment A followed by the point on segment B.
9
+ *
10
+ * Wraps {@link line3_compute_segment_segment_closest_points}, which reports the closest pair as the
11
+ * parameters `(s, t)`. Every caller of that function immediately reconstructed both world points with the
12
+ * same six lines, and three of the four then took the squared distance between them — returned here.
13
+ *
14
+ * The reconstruction uses the `a + (b - a) * t` form deliberately, matching all previous call sites
15
+ * bit-for-bit; the algebraically equal `(1 - t) * a + t * b` is NOT the same in floating point and would
16
+ * perturb the contact manifolds this feeds.
17
+ *
18
+ * @param {number[]|Float32Array|Float64Array} out destination, at least 6 elements from `out_offset`
19
+ * @param {number} out_offset
20
+ * @param {number} a0x
21
+ * @param {number} a0y
22
+ * @param {number} a0z
23
+ * @param {number} a1x
24
+ * @param {number} a1y
25
+ * @param {number} a1z
26
+ * @param {number} b0x
27
+ * @param {number} b0y
28
+ * @param {number} b0z
29
+ * @param {number} b1x
30
+ * @param {number} b1y
31
+ * @param {number} b1z
32
+ * @returns {number} SQUARED distance between the two closest points
33
+ *
34
+ * @author Alex Goldring
35
+ * @copyright Company Named Limited (c) 2026
36
+ */
37
+ export function line3_segment_segment_closest_point_pair(
38
+ out, out_offset,
39
+ a0x, a0y, a0z, a1x, a1y, a1z,
40
+ b0x, b0y, b0z, b1x, b1y, b1z
41
+ ) {
42
+ line3_compute_segment_segment_closest_points(
43
+ scratch_st,
44
+ a0x, a0y, a0z, a1x, a1y, a1z,
45
+ b0x, b0y, b0z, b1x, b1y, b1z
46
+ );
47
+
48
+ const s = scratch_st[0];
49
+ const t = scratch_st[1];
50
+
51
+ const pax = a0x + (a1x - a0x) * s;
52
+ const pay = a0y + (a1y - a0y) * s;
53
+ const paz = a0z + (a1z - a0z) * s;
54
+
55
+ const pbx = b0x + (b1x - b0x) * t;
56
+ const pby = b0y + (b1y - b0y) * t;
57
+ const pbz = b0z + (b1z - b0z) * t;
58
+
59
+ out[out_offset] = pax;
60
+ out[out_offset + 1] = pay;
61
+ out[out_offset + 2] = paz;
62
+ out[out_offset + 3] = pbx;
63
+ out[out_offset + 4] = pby;
64
+ out[out_offset + 5] = pbz;
65
+
66
+ const dx = pax - pbx;
67
+ const dy = pay - pby;
68
+ const dz = paz - pbz;
69
+
70
+ return dx * dx + dy * dy + dz * dz;
71
+ }
@@ -1,4 +1,9 @@
1
1
  /**
2
+ * Compose a 4x4 transform matrix from a position, a rotation quaternion and a (non-uniform) scale.
3
+ * `result = T * R * S`.
4
+ *
5
+ * Object-argument face of {@link m4_from_rotation_translation_scale_scalar}; see
6
+ * {@link m4_from_rotation_translation_scale} for the flat-array flavour.
2
7
  *
3
8
  * @param {number[]|Float32Array|mat4} result
4
9
  * @param { { x:number, y:number, z:number } } position
@@ -1 +1 @@
1
- {"version":3,"file":"m4_compose.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/mat4/m4_compose.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,mCALW,MAAM,EAAE,GAAC,YAAY,OAAK;OACrB,MAAM;OAAI,MAAM;OAAI,MAAM;;OAC1B,MAAM;OAAI,MAAM;OAAI,MAAM;OAAI,MAAM;;OACpC,MAAM;OAAI,MAAM;OAAI,MAAM;SA+CzC"}
1
+ {"version":3,"file":"m4_compose.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/mat4/m4_compose.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,mCALW,MAAM,EAAE,GAAC,YAAY,OAAK,YACzB;IAAE,CAAC,EAAC,MAAM,CAAC;IAAC,CAAC,EAAC,MAAM,CAAC;IAAC,CAAC,EAAC,MAAM,CAAA;CAAE,YAChC;IAAE,CAAC,EAAC,MAAM,CAAC;IAAC,CAAC,EAAC,MAAM,CAAC;IAAC,CAAC,EAAC,MAAM,CAAC;IAAC,CAAC,EAAC,MAAM,CAAA;CAAE,SAC1C;IAAE,CAAC,EAAC,MAAM,CAAC;IAAC,CAAC,EAAC,MAAM,CAAC;IAAC,CAAC,EAAC,MAAM,CAAA;CAAE,QAS3C"}
@@ -1,53 +1,22 @@
1
- /**
2
- *
3
- * @param {number[]|Float32Array|mat4} result
4
- * @param { { x:number, y:number, z:number } } position
5
- * @param { { x:number, y:number, z:number, w:number } } rotation
6
- * @param { { x:number, y:number, z:number } } scale
7
- */
8
- export function m4_compose(result, position, rotation, scale) {
9
- const x = rotation.x;
10
- const y = rotation.y;
11
- const z = rotation.z;
12
- const w = rotation.w;
13
-
14
- const x2 = x + x;
15
- const y2 = y + y;
16
- const z2 = z + z;
17
-
18
- const xx = x * x2;
19
- const xy = x * y2;
20
- const xz = x * z2;
21
-
22
- const yy = y * y2;
23
- const yz = y * z2;
24
- const zz = z * z2;
25
-
26
- const wx = w * x2;
27
- const wy = w * y2;
28
- const wz = w * z2;
29
-
30
- const sx = scale.x;
31
- const sy = scale.y;
32
- const sz = scale.z;
33
-
34
- result[0] = (1 - (yy + zz)) * sx;
35
- result[1] = (xy + wz) * sx;
36
- result[2] = (xz - wy) * sx;
37
- result[3] = 0;
38
-
39
- result[4] = (xy - wz) * sy;
40
- result[5] = (1 - (xx + zz)) * sy;
41
- result[6] = (yz + wx) * sy;
42
- result[7] = 0;
43
-
44
- result[8] = (xz + wy) * sz;
45
- result[9] = (yz - wx) * sz;
46
- result[10] = (1 - (xx + yy)) * sz;
47
- result[11] = 0;
48
-
49
- result[12] = position.x;
50
- result[13] = position.y;
51
- result[14] = position.z;
52
- result[15] = 1;
53
- }
1
+ import { m4_from_rotation_translation_scale_scalar } from "./m4_from_rotation_translation_scale_scalar.js";
2
+
3
+ /**
4
+ * Compose a 4x4 transform matrix from a position, a rotation quaternion and a (non-uniform) scale.
5
+ * `result = T * R * S`.
6
+ *
7
+ * Object-argument face of {@link m4_from_rotation_translation_scale_scalar}; see
8
+ * {@link m4_from_rotation_translation_scale} for the flat-array flavour.
9
+ *
10
+ * @param {number[]|Float32Array|mat4} result
11
+ * @param { { x:number, y:number, z:number } } position
12
+ * @param { { x:number, y:number, z:number, w:number } } rotation
13
+ * @param { { x:number, y:number, z:number } } scale
14
+ */
15
+ export function m4_compose(result, position, rotation, scale) {
16
+ m4_from_rotation_translation_scale_scalar(
17
+ result,
18
+ rotation.x, rotation.y, rotation.z, rotation.w,
19
+ position.x, position.y, position.z,
20
+ scale.x, scale.y, scale.z
21
+ );
22
+ }
@@ -1,9 +1,13 @@
1
1
  /**
2
+ * Decompose a 4x4 transform into position, rotation and scale.
2
3
  *
3
- * @param {number[]} mat4
4
+ * The three outputs are written through their setters, so `Vector3`/`Quaternion` change signals fire.
5
+ * Use {@link m4_decompose_array} instead when the destinations are flat arrays.
6
+ *
7
+ * @param {number[]|Float32Array|Float64Array|mat4} mat4
4
8
  * @param {Vector3|{set(x:number,y:number,z:number)}} position
5
- * @param {Quaternion} rotation
9
+ * @param {Quaternion|{set(x:number,y:number,z:number,w:number)}} rotation
6
10
  * @param {Vector3|{set(x:number,y:number,z:number)}} scale
7
11
  */
8
- export function m4_decompose(mat4: number[], position: any, rotation: Quaternion, scale: any): void;
12
+ export function m4_decompose(mat4: any, position: any, rotation: any, scale: any): void;
9
13
  //# sourceMappingURL=m4_decompose.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"m4_decompose.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/mat4/m4_decompose.js"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,mCALW,MAAM,EAAE,yDAuElB"}
1
+ {"version":3,"file":"m4_decompose.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/mat4/m4_decompose.js"],"names":[],"mappings":"AAOA;;;;;;;;;;GAUG;AACH,wFA6CC"}
@@ -1,76 +1,64 @@
1
- import { v3_length } from "../../vec3/v3_length.js";
2
-
3
- /**
4
- *
5
- * @param {number[]} mat4
6
- * @param {Vector3|{set(x:number,y:number,z:number)}} position
7
- * @param {Quaternion} rotation
8
- * @param {Vector3|{set(x:number,y:number,z:number)}} scale
9
- */
10
- export function m4_decompose(mat4, position, rotation, scale) {
11
- const m11 = mat4[0];
12
- const m12 = mat4[1];
13
- const m13 = mat4[2];
14
-
15
- const scale_x = v3_length(m11, m12, m13);
16
-
17
- const m21 = mat4[4];
18
- const m22 = mat4[5];
19
- const m23 = mat4[6];
20
-
21
- const scale_y = v3_length(m21, m22, m23);
22
-
23
- const m31 = mat4[8];
24
- const m32 = mat4[9];
25
- const m33 = mat4[10];
26
-
27
- const scale_z = v3_length(m31, m32, m33);
28
-
29
- // If the upper-left 3x3 has a negative determinant the matrix encodes a reflection; fold that sign into
30
- // one scale axis (matching three.js, which negates scale.x) so the extracted rotation is a proper rotation
31
- // rather than a mirror (which __setFromRotationMatrix would decode incorrectly).
32
- const det =
33
- m11 * (m22 * m33 - m23 * m32)
34
- - m12 * (m21 * m33 - m23 * m31)
35
- + m13 * (m21 * m32 - m22 * m31);
36
-
37
- const signed_scale_x = det < 0 ? -scale_x : scale_x;
38
-
39
- // extract rotation matrix
40
- // take care of potential division by 0 when scale is 0. Result is inexact, but we get don't break the system at least
41
- const is1 = signed_scale_x !== 0 ? 1 / signed_scale_x : 1e7;
42
- const is2 = scale_y !== 0 ? 1 / scale_y : 1e7;
43
- const is3 = scale_z !== 0 ? 1 / scale_z : 1e7;
44
-
45
- const sm11 = m11 * is1;
46
- const sm12 = m12 * is1;
47
- const sm13 = m13 * is1;
48
-
49
- const sm21 = m21 * is2;
50
- const sm22 = m22 * is2;
51
- const sm23 = m23 * is2;
52
-
53
- const sm31 = m31 * is3;
54
- const sm32 = m32 * is3;
55
- const sm33 = m33 * is3;
56
-
57
- // write out results
58
-
59
- position.set(
60
- mat4[12],
61
- mat4[13],
62
- mat4[14]
63
- );
64
-
65
- scale.set(
66
- signed_scale_x,
67
- scale_y,
68
- scale_z
69
- );
70
-
71
- rotation.__setFromRotationMatrix(
72
- sm11, sm21, sm31,
73
- sm12, sm22, sm32,
74
- sm13, sm23, sm33
75
- );
76
- }
1
+ import { m4_decompose_array } from "./m4_decompose_array.js";
2
+
3
+ /**
4
+ * @type {Float64Array}
5
+ */
6
+ const scratch = new Float64Array(10);
7
+
8
+ /**
9
+ * Decompose a 4x4 transform into position, rotation and scale.
10
+ *
11
+ * The three outputs are written through their setters, so `Vector3`/`Quaternion` change signals fire.
12
+ * Use {@link m4_decompose_array} instead when the destinations are flat arrays.
13
+ *
14
+ * @param {number[]|Float32Array|Float64Array|mat4} mat4
15
+ * @param {Vector3|{set(x:number,y:number,z:number)}} position
16
+ * @param {Quaternion|{set(x:number,y:number,z:number,w:number)}} rotation
17
+ * @param {Vector3|{set(x:number,y:number,z:number)}} scale
18
+ */
19
+ export function m4_decompose(mat4, position, rotation, scale) {
20
+
21
+ // the scratch is what lets this share the decomposition math with `m4_decompose_array`
22
+ // instead of carrying a second copy of it, laid out as [translation:3, rotation:4, scale:3]
23
+ m4_decompose_array(
24
+ mat4,
25
+ scratch, 0,
26
+ scratch, 3,
27
+ scratch, 7
28
+ );
29
+
30
+ // Drain the scratch before writing anything out. The setters below dispatch change signals, and a
31
+ // handler is free to call this function again - that would overwrite the module-static scratch
32
+ // part-way through, and the rest of this call would read the re-entrant call's numbers.
33
+ const position_x = scratch[0];
34
+ const position_y = scratch[1];
35
+ const position_z = scratch[2];
36
+
37
+ const rotation_x = scratch[3];
38
+ const rotation_y = scratch[4];
39
+ const rotation_z = scratch[5];
40
+ const rotation_w = scratch[6];
41
+
42
+ const scale_x = scratch[7];
43
+ const scale_y = scratch[8];
44
+ const scale_z = scratch[9];
45
+
46
+ position.set(
47
+ position_x,
48
+ position_y,
49
+ position_z
50
+ );
51
+
52
+ scale.set(
53
+ scale_x,
54
+ scale_y,
55
+ scale_z
56
+ );
57
+
58
+ rotation.set(
59
+ rotation_x,
60
+ rotation_y,
61
+ rotation_z,
62
+ rotation_w
63
+ );
64
+ }
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Decompose a 4x4 transform into a translation, a rotation quaternion and a (non-uniform) scale,
3
+ * written into flat arrays at explicit offsets.
4
+ *
5
+ * Array-argument companion to {@link m4_decompose}, which takes `Vector3`/`Quaternion` objects instead.
6
+ * Use this one when the destinations are already flat arrays, such as {@link Transform64} which packs
7
+ * all four of these in a single buffer.
8
+ *
9
+ * The three destinations may all be the same array, as long as the ranges do not overlap, and they may
10
+ * overlap `m4` itself - every component of `m4` is read before the first write.
11
+ *
12
+ * A reflection (negative upper-left determinant) is folded into one scale axis, so that the extracted
13
+ * rotation is always proper. Note that this makes the scale reported here differ from
14
+ * {@link m4_extract_scale}, which reports raw column lengths; the two are not interchangeable.
15
+ *
16
+ * @param {number[]|Float32Array|Float64Array|mat4} m4 source 4x4 matrix
17
+ * @param {number[]|Float32Array|Float64Array} translation receives 3 numbers (x, y, z)
18
+ * @param {number} translation_offset offset into `translation`
19
+ * @param {number[]|Float32Array|Float64Array} rotation receives 4 numbers (x, y, z, w)
20
+ * @param {number} rotation_offset offset into `rotation`
21
+ * @param {number[]|Float32Array|Float64Array} scale receives 3 numbers (x, y, z)
22
+ * @param {number} scale_offset offset into `scale`
23
+ *
24
+ * @author Alex Goldring
25
+ * @copyright Company Named Limited (c) 2026
26
+ */
27
+ export function m4_decompose_array(m4: number[] | Float32Array | Float64Array | mat4, translation: number[] | Float32Array | Float64Array, translation_offset: number, rotation: number[] | Float32Array | Float64Array, rotation_offset: number, scale: number[] | Float32Array | Float64Array, scale_offset: number): void;
28
+ //# sourceMappingURL=m4_decompose_array.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"m4_decompose_array.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/mat4/m4_decompose_array.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,uCAXW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,OAAK,eACvC,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,sBAClC,MAAM,YACN,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,mBAClC,MAAM,SACN,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,gBAClC,MAAM,QAqIhB"}
@@ -0,0 +1,157 @@
1
+ import { v3_length } from "../../vec3/v3_length.js";
2
+
3
+ /**
4
+ * Decompose a 4x4 transform into a translation, a rotation quaternion and a (non-uniform) scale,
5
+ * written into flat arrays at explicit offsets.
6
+ *
7
+ * Array-argument companion to {@link m4_decompose}, which takes `Vector3`/`Quaternion` objects instead.
8
+ * Use this one when the destinations are already flat arrays, such as {@link Transform64} which packs
9
+ * all four of these in a single buffer.
10
+ *
11
+ * The three destinations may all be the same array, as long as the ranges do not overlap, and they may
12
+ * overlap `m4` itself - every component of `m4` is read before the first write.
13
+ *
14
+ * A reflection (negative upper-left determinant) is folded into one scale axis, so that the extracted
15
+ * rotation is always proper. Note that this makes the scale reported here differ from
16
+ * {@link m4_extract_scale}, which reports raw column lengths; the two are not interchangeable.
17
+ *
18
+ * @param {number[]|Float32Array|Float64Array|mat4} m4 source 4x4 matrix
19
+ * @param {number[]|Float32Array|Float64Array} translation receives 3 numbers (x, y, z)
20
+ * @param {number} translation_offset offset into `translation`
21
+ * @param {number[]|Float32Array|Float64Array} rotation receives 4 numbers (x, y, z, w)
22
+ * @param {number} rotation_offset offset into `rotation`
23
+ * @param {number[]|Float32Array|Float64Array} scale receives 3 numbers (x, y, z)
24
+ * @param {number} scale_offset offset into `scale`
25
+ *
26
+ * @author Alex Goldring
27
+ * @copyright Company Named Limited (c) 2026
28
+ */
29
+ export function m4_decompose_array(
30
+ m4,
31
+ translation, translation_offset,
32
+ rotation, rotation_offset,
33
+ scale, scale_offset
34
+ ) {
35
+ const m11 = m4[0];
36
+ const m12 = m4[1];
37
+ const m13 = m4[2];
38
+
39
+ const scale_x = v3_length(m11, m12, m13);
40
+
41
+ const m21 = m4[4];
42
+ const m22 = m4[5];
43
+ const m23 = m4[6];
44
+
45
+ const scale_y = v3_length(m21, m22, m23);
46
+
47
+ const m31 = m4[8];
48
+ const m32 = m4[9];
49
+ const m33 = m4[10];
50
+
51
+ const scale_z = v3_length(m31, m32, m33);
52
+
53
+ const translation_x = m4[12];
54
+ const translation_y = m4[13];
55
+ const translation_z = m4[14];
56
+
57
+ // If the upper-left 3x3 has a negative determinant the matrix encodes a reflection; fold that sign into
58
+ // one scale axis (matching three.js, which negates scale.x) so the extracted rotation is a proper rotation
59
+ // rather than a mirror (which the quaternion extraction below would decode incorrectly).
60
+ const det =
61
+ m11 * (m22 * m33 - m23 * m32)
62
+ - m12 * (m21 * m33 - m23 * m31)
63
+ + m13 * (m21 * m32 - m22 * m31);
64
+
65
+ const signed_scale_x = det < 0 ? -scale_x : scale_x;
66
+
67
+ // extract rotation matrix
68
+ // take care of potential division by 0 when scale is 0. Result is inexact, but we get don't break the system at least
69
+ const is1 = signed_scale_x !== 0 ? 1 / signed_scale_x : 1e7;
70
+ const is2 = scale_y !== 0 ? 1 / scale_y : 1e7;
71
+ const is3 = scale_z !== 0 ? 1 / scale_z : 1e7;
72
+
73
+ const sm11 = m11 * is1;
74
+ const sm12 = m12 * is1;
75
+ const sm13 = m13 * is1;
76
+
77
+ const sm21 = m21 * is2;
78
+ const sm22 = m22 * is2;
79
+ const sm23 = m23 * is2;
80
+
81
+ const sm31 = m31 * is3;
82
+ const sm32 = m32 * is3;
83
+ const sm33 = m33 * is3;
84
+
85
+ // Convert the rotation matrix to a quaternion.
86
+ // This algorithm comes from "Quaternion Calculus and Fast Animation", Ken Shoemake, 1987 SIGGRAPH course notes
87
+ // @see https://gitlab.com/libeigen/eigen/-/blob/master/Eigen/src/Geometry/Quaternion.h#L813
88
+ // NOTE: `sm` is stored column-major, so the row-major element `m_ij` used by the algorithm is `sm_ji`
89
+ const trace = sm11 + sm22 + sm33;
90
+
91
+ let x, y, z, w, s;
92
+
93
+ if (trace > 0) {
94
+
95
+ s = Math.sqrt(trace + 1.0);
96
+
97
+ w = 0.5 * s;
98
+
99
+ s = 0.5 / s;
100
+
101
+ x = (sm23 - sm32) * s;
102
+ y = (sm31 - sm13) * s;
103
+ z = (sm12 - sm21) * s;
104
+
105
+ } else if (sm11 > sm22 && sm11 > sm33) {
106
+
107
+ s = Math.sqrt(1.0 + sm11 - sm22 - sm33);
108
+
109
+ x = 0.5 * s;
110
+
111
+ s = 0.5 / s;
112
+
113
+ w = (sm23 - sm32) * s;
114
+ y = (sm21 + sm12) * s;
115
+ z = (sm31 + sm13) * s;
116
+
117
+ } else if (sm22 > sm33) {
118
+
119
+ s = Math.sqrt(1.0 + sm22 - sm11 - sm33);
120
+
121
+ y = 0.5 * s;
122
+
123
+ s = 0.5 / s;
124
+
125
+ w = (sm31 - sm13) * s;
126
+ x = (sm21 + sm12) * s;
127
+ z = (sm32 + sm23) * s;
128
+
129
+ } else {
130
+
131
+ s = Math.sqrt(1.0 + sm33 - sm11 - sm22);
132
+
133
+ z = 0.5 * s;
134
+
135
+ s = 0.5 / s;
136
+
137
+ w = (sm12 - sm21) * s;
138
+ x = (sm31 + sm13) * s;
139
+ y = (sm32 + sm23) * s;
140
+
141
+ }
142
+
143
+ // write out results
144
+
145
+ translation[translation_offset] = translation_x;
146
+ translation[translation_offset + 1] = translation_y;
147
+ translation[translation_offset + 2] = translation_z;
148
+
149
+ rotation[rotation_offset] = x;
150
+ rotation[rotation_offset + 1] = y;
151
+ rotation[rotation_offset + 2] = z;
152
+ rotation[rotation_offset + 3] = w;
153
+
154
+ scale[scale_offset] = signed_scale_x;
155
+ scale[scale_offset + 1] = scale_y;
156
+ scale[scale_offset + 2] = scale_z;
157
+ }
@@ -7,6 +7,8 @@
7
7
  * gl-matrix `mat4.fromRotationTranslationScale`. The quaternion is assumed to be of
8
8
  * unit length. Allocation-free.
9
9
  *
10
+ * Both flavours share {@link m4_from_rotation_translation_scale_scalar}.
11
+ *
10
12
  * @param {number[]|Float32Array|Float64Array} out destination 4x4 matrix
11
13
  * @param {number[]|Float32Array|Float64Array} q rotation quaternion `[x, y, z, w]`
12
14
  * @param {number[]|Float32Array|Float64Array} v translation `[x, y, z]`
@@ -1 +1 @@
1
- {"version":3,"file":"m4_from_rotation_translation_scale.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/mat4/m4_from_rotation_translation_scale.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,wDATW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,KAClC,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,KAClC,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,KAClC,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,GAChC,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,CAoD9C"}
1
+ {"version":3,"file":"m4_from_rotation_translation_scale.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/mat4/m4_from_rotation_translation_scale.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wDATW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,KAClC,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,KAClC,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,KAClC,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,GAChC,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,CAc9C"}
@@ -1,3 +1,5 @@
1
+ import { m4_from_rotation_translation_scale_scalar } from "./m4_from_rotation_translation_scale_scalar.js";
2
+
1
3
  /**
2
4
  * Compose a 4x4 transform matrix from a rotation quaternion, a translation and a
3
5
  * (non-uniform) scale. `out = T * R * S`.
@@ -7,6 +9,8 @@
7
9
  * gl-matrix `mat4.fromRotationTranslationScale`. The quaternion is assumed to be of
8
10
  * unit length. Allocation-free.
9
11
  *
12
+ * Both flavours share {@link m4_from_rotation_translation_scale_scalar}.
13
+ *
10
14
  * @param {number[]|Float32Array|Float64Array} out destination 4x4 matrix
11
15
  * @param {number[]|Float32Array|Float64Array} q rotation quaternion `[x, y, z, w]`
12
16
  * @param {number[]|Float32Array|Float64Array} v translation `[x, y, z]`
@@ -17,50 +21,12 @@
17
21
  * @copyright Company Named Limited (c) 2026
18
22
  */
19
23
  export function m4_from_rotation_translation_scale(out, q, v, s) {
20
- const x = q[0];
21
- const y = q[1];
22
- const z = q[2];
23
- const w = q[3];
24
-
25
- const x2 = x + x;
26
- const y2 = y + y;
27
- const z2 = z + z;
28
-
29
- const xx = x * x2;
30
- const xy = x * y2;
31
- const xz = x * z2;
32
-
33
- const yy = y * y2;
34
- const yz = y * z2;
35
- const zz = z * z2;
36
-
37
- const wx = w * x2;
38
- const wy = w * y2;
39
- const wz = w * z2;
40
-
41
- const sx = s[0];
42
- const sy = s[1];
43
- const sz = s[2];
44
-
45
- out[0] = (1 - (yy + zz)) * sx;
46
- out[1] = (xy + wz) * sx;
47
- out[2] = (xz - wy) * sx;
48
- out[3] = 0;
49
-
50
- out[4] = (xy - wz) * sy;
51
- out[5] = (1 - (xx + zz)) * sy;
52
- out[6] = (yz + wx) * sy;
53
- out[7] = 0;
54
-
55
- out[8] = (xz + wy) * sz;
56
- out[9] = (yz - wx) * sz;
57
- out[10] = (1 - (xx + yy)) * sz;
58
- out[11] = 0;
59
-
60
- out[12] = v[0];
61
- out[13] = v[1];
62
- out[14] = v[2];
63
- out[15] = 1;
24
+ m4_from_rotation_translation_scale_scalar(
25
+ out,
26
+ q[0], q[1], q[2], q[3],
27
+ v[0], v[1], v[2],
28
+ s[0], s[1], s[2]
29
+ );
64
30
 
65
31
  return out;
66
32
  }