@woosh/meep-engine 3.44.0 → 3.46.0

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 (447) hide show
  1. package/build/bundle-worker-terrain.js +1 -1
  2. package/package.json +1 -1
  3. package/src/core/assert.d.ts.map +1 -1
  4. package/src/core/assert.js +5 -1
  5. package/src/core/binary/hash/XXH128Hash.d.ts +1 -37
  6. package/src/core/binary/hash/XXH128Hash.d.ts.map +1 -1
  7. package/src/core/binary/hash/XXH128Hash.js +4 -55
  8. package/src/core/binary/hash/XXH3_SECRET.d.ts +1 -12
  9. package/src/core/binary/hash/XXH3_SECRET.d.ts.map +1 -1
  10. package/src/core/binary/hash/XXH3_SECRET.js +4 -25
  11. package/src/core/binary/hash/crc32.d.ts +1 -15
  12. package/src/core/binary/hash/crc32.d.ts.map +1 -1
  13. package/src/core/binary/hash/crc32.js +4 -96
  14. package/src/core/binary/hash/xxh3_128.d.ts +1 -9
  15. package/src/core/binary/hash/xxh3_128.d.ts.map +1 -1
  16. package/src/core/binary/hash/xxh3_128.js +4 -341
  17. package/src/core/binary/hash/xxh3_64.d.ts +1 -8
  18. package/src/core/binary/hash/xxh3_64.d.ts.map +1 -1
  19. package/src/core/binary/hash/xxh3_64.js +4 -241
  20. package/src/core/binary/hash/xxh3_common.d.ts +1 -223
  21. package/src/core/binary/hash/xxh3_common.d.ts.map +1 -1
  22. package/src/core/binary/hash/xxh3_common.js +90 -476
  23. package/src/core/collection/array/array_sort_insertion_ascending.d.ts +19 -0
  24. package/src/core/collection/array/array_sort_insertion_ascending.d.ts.map +1 -0
  25. package/src/core/collection/array/array_sort_insertion_ascending.js +31 -0
  26. package/src/core/collection/array/combine_hash.d.ts +6 -0
  27. package/src/core/collection/array/combine_hash.d.ts.map +1 -1
  28. package/src/core/collection/array/combine_hash.js +6 -0
  29. package/src/core/function/FunctionCompiler.js +2 -2
  30. package/src/core/geom/3d/aabb/aabb3_array_round_outward_f32.d.ts +27 -0
  31. package/src/core/geom/3d/aabb/aabb3_array_round_outward_f32.d.ts.map +1 -0
  32. package/src/core/geom/3d/aabb/aabb3_array_round_outward_f32.js +39 -0
  33. package/src/core/geom/3d/aabb/aabb3_from_v3_array.d.ts.map +1 -1
  34. package/src/core/geom/3d/aabb/aabb3_from_v3_array.js +4 -1
  35. package/src/core/geom/3d/aabb/aabb3_transform_oriented.d.ts +2 -2
  36. package/src/core/geom/3d/aabb/aabb3_transform_oriented.d.ts.map +1 -1
  37. package/src/core/geom/3d/aabb/aabb3_transform_oriented.js +1 -1
  38. package/src/core/geom/3d/mat4/m4_multiply.d.ts +3 -0
  39. package/src/core/geom/3d/mat4/m4_multiply.d.ts.map +1 -1
  40. package/src/core/geom/3d/mat4/m4_multiply.js +3 -0
  41. package/src/core/geom/3d/mat4/m4_multiply_f64.d.ts +30 -0
  42. package/src/core/geom/3d/mat4/m4_multiply_f64.d.ts.map +1 -0
  43. package/src/core/geom/3d/mat4/m4_multiply_f64.js +106 -0
  44. package/src/core/geom/3d/pose/pose3_apply_inverse_point_array.d.ts +21 -0
  45. package/src/core/geom/3d/pose/pose3_apply_inverse_point_array.d.ts.map +1 -0
  46. package/src/core/geom/3d/pose/pose3_apply_inverse_point_array.js +36 -0
  47. package/src/core/geom/3d/pose/pose3_apply_point_array.d.ts +25 -0
  48. package/src/core/geom/3d/pose/pose3_apply_point_array.d.ts.map +1 -0
  49. package/src/core/geom/3d/pose/pose3_apply_point_array.js +40 -0
  50. package/src/core/geom/3d/pose/pose3_compose_array.d.ts +28 -0
  51. package/src/core/geom/3d/pose/pose3_compose_array.d.ts.map +1 -0
  52. package/src/core/geom/3d/pose/pose3_compose_array.js +41 -0
  53. package/src/core/geom/3d/pose/pose3_to_local_array.d.ts +29 -0
  54. package/src/core/geom/3d/pose/pose3_to_local_array.d.ts.map +1 -0
  55. package/src/core/geom/3d/pose/pose3_to_local_array.js +42 -0
  56. package/src/core/geom/3d/quaternion/quat3_clamp_angle_array.d.ts +28 -0
  57. package/src/core/geom/3d/quaternion/quat3_clamp_angle_array.d.ts.map +1 -0
  58. package/src/core/geom/3d/quaternion/quat3_clamp_angle_array.js +66 -0
  59. package/src/core/geom/3d/quaternion/quat3_multiply_conjugate_left_array.d.ts +22 -0
  60. package/src/core/geom/3d/quaternion/quat3_multiply_conjugate_left_array.d.ts.map +1 -0
  61. package/src/core/geom/3d/quaternion/quat3_multiply_conjugate_left_array.js +30 -0
  62. package/src/core/geom/3d/quaternion/quat3_multiply_conjugate_right_array.d.ts +23 -0
  63. package/src/core/geom/3d/quaternion/quat3_multiply_conjugate_right_array.d.ts.map +1 -0
  64. package/src/core/geom/3d/quaternion/quat3_multiply_conjugate_right_array.js +31 -0
  65. package/src/core/geom/3d/triangle/tri3_compute_normal_area_weighted_array.d.ts +26 -0
  66. package/src/core/geom/3d/triangle/tri3_compute_normal_area_weighted_array.d.ts.map +1 -0
  67. package/src/core/geom/3d/triangle/tri3_compute_normal_area_weighted_array.js +46 -0
  68. package/src/core/geom/ConicRay.js +2 -2
  69. package/src/core/geom/Vector4.d.ts.map +1 -1
  70. package/src/core/geom/Vector4.js +8 -5
  71. package/src/core/geom/vec3/v3_distance_array.d.ts +11 -0
  72. package/src/core/geom/vec3/v3_distance_array.d.ts.map +1 -0
  73. package/src/core/geom/vec3/v3_distance_array.js +19 -0
  74. package/src/core/geom/vec3/v3_normalize_array_checked.d.ts +23 -0
  75. package/src/core/geom/vec3/v3_normalize_array_checked.d.ts.map +1 -0
  76. package/src/core/geom/vec3/v3_normalize_array_checked.js +49 -0
  77. package/src/core/geom/vec3/v3_reject_array.d.ts +15 -0
  78. package/src/core/geom/vec3/v3_reject_array.d.ts.map +1 -0
  79. package/src/core/geom/vec3/v3_reject_array.js +32 -0
  80. package/src/core/graph/csr/csr_build_incidence.d.ts +26 -0
  81. package/src/core/graph/csr/csr_build_incidence.d.ts.map +1 -0
  82. package/src/core/graph/csr/csr_build_incidence.js +71 -0
  83. package/src/core/graph/csr/csr_graph_color_greedy.d.ts +25 -0
  84. package/src/core/graph/csr/csr_graph_color_greedy.d.ts.map +1 -0
  85. package/src/core/graph/csr/csr_graph_color_greedy.js +83 -0
  86. package/src/core/graph/csr/csr_graph_validate_coloring.d.ts +15 -0
  87. package/src/core/graph/csr/csr_graph_validate_coloring.d.ts.map +1 -0
  88. package/src/core/graph/csr/csr_graph_validate_coloring.js +33 -0
  89. package/src/core/math/hash/XXH128Hash.d.ts +38 -0
  90. package/src/core/math/hash/XXH128Hash.d.ts.map +1 -0
  91. package/src/core/math/hash/XXH128Hash.js +55 -0
  92. package/src/core/math/hash/XXH3_SECRET.d.ts +13 -0
  93. package/src/core/math/hash/XXH3_SECRET.d.ts.map +1 -0
  94. package/src/core/math/hash/XXH3_SECRET.js +25 -0
  95. package/src/core/math/hash/crc32.d.ts +16 -0
  96. package/src/core/math/hash/crc32.d.ts.map +1 -0
  97. package/src/core/math/hash/crc32.js +96 -0
  98. package/src/core/math/hash/xxh3_128.d.ts +10 -0
  99. package/src/core/math/hash/xxh3_128.d.ts.map +1 -0
  100. package/src/core/math/hash/xxh3_128.js +341 -0
  101. package/src/core/math/hash/xxh3_64.d.ts +9 -0
  102. package/src/core/math/hash/xxh3_64.d.ts.map +1 -0
  103. package/src/core/math/hash/xxh3_64.js +241 -0
  104. package/src/core/math/hash/xxh3_common.d.ts +224 -0
  105. package/src/core/math/hash/xxh3_common.d.ts.map +1 -0
  106. package/src/core/math/hash/xxh3_common.js +476 -0
  107. package/src/core/math/linalg/matrix_symmetric_3x3_solve_ldlt.d.ts +26 -0
  108. package/src/core/math/linalg/matrix_symmetric_3x3_solve_ldlt.d.ts.map +1 -0
  109. package/src/core/math/linalg/matrix_symmetric_3x3_solve_ldlt.js +71 -0
  110. package/src/core/math/lookup/ParameterLookupTable.js +2 -2
  111. package/src/core/math/max2_exact.d.ts +15 -0
  112. package/src/core/math/max2_exact.d.ts.map +1 -0
  113. package/src/core/math/max2_exact.js +30 -0
  114. package/src/core/math/min2_exact.d.ts +20 -0
  115. package/src/core/math/min2_exact.d.ts.map +1 -0
  116. package/src/core/math/min2_exact.js +35 -0
  117. package/src/core/model/node-graph/node/NodeInstancePortReference.js +2 -2
  118. package/src/core/model/reactive/model/ReactiveBinaryExpression.js +2 -2
  119. package/src/core/model/reactive/model/terminal/ReactiveReference.js +2 -2
  120. package/src/engine/asset/AssetDescription.js +2 -2
  121. package/src/engine/ecs/animation/Animation.js +2 -2
  122. package/src/engine/ecs/animation/AnimationClip.d.ts.map +1 -1
  123. package/src/engine/ecs/animation/AnimationClip.js +7 -5
  124. package/src/engine/ecs/gui/GUIElement.d.ts.map +1 -1
  125. package/src/engine/ecs/gui/GUIElement.js +7 -5
  126. package/src/engine/ecs/gui/hud/HeadsUpDisplay.js +2 -2
  127. package/src/engine/ecs/gui/position/ViewportPosition.d.ts.map +1 -1
  128. package/src/engine/ecs/gui/position/ViewportPosition.js +11 -7
  129. package/src/engine/ecs/ik/IKGoalSystem.d.ts.map +1 -1
  130. package/src/engine/ecs/ik/IKGoalSystem.js +3 -19
  131. package/src/engine/ecs/parent/parent_entity_model_of.d.ts +17 -0
  132. package/src/engine/ecs/parent/parent_entity_model_of.d.ts.map +1 -0
  133. package/src/engine/ecs/parent/parent_entity_model_of.js +26 -0
  134. package/src/engine/ecs/transform/Transform64.d.ts +1 -1
  135. package/src/engine/ecs/transform/Transform64.d.ts.map +1 -1
  136. package/src/engine/ecs/transform/Transform64.js +5 -4
  137. package/src/engine/ecs/transform/t64_read_pose_array.d.ts +15 -0
  138. package/src/engine/ecs/transform/t64_read_pose_array.d.ts.map +1 -0
  139. package/src/engine/ecs/transform/t64_read_pose_array.js +24 -0
  140. package/src/engine/graphics/ecs/animation/animator/AnimationClip.d.ts.map +1 -1
  141. package/src/engine/graphics/ecs/animation/animator/AnimationClip.js +8 -5
  142. package/src/engine/graphics/ecs/animation/animator/AnimationClipDefinition.js +2 -2
  143. package/src/engine/graphics/ecs/animation/animator/AnimationNotification.js +2 -2
  144. package/src/engine/graphics/ecs/animation/animator/AnimationNotificationDefinition.js +2 -2
  145. package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationGraphDefinition.js +2 -2
  146. package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationStateDefinition.js +2 -2
  147. package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationTransitionDefinition.d.ts.map +1 -1
  148. package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationTransitionDefinition.js +8 -5
  149. package/src/engine/graphics/ecs/decal/v2/Decal.d.ts.map +1 -1
  150. package/src/engine/graphics/ecs/decal/v2/Decal.js +9 -8
  151. package/src/engine/graphics/geometry/geometry_construct_triangle_normal_area_weighted.d.ts +2 -0
  152. package/src/engine/graphics/geometry/geometry_construct_triangle_normal_area_weighted.d.ts.map +1 -1
  153. package/src/engine/graphics/geometry/geometry_construct_triangle_normal_area_weighted.js +10 -21
  154. package/src/engine/graphics/render/frame_graph/resource/TextureResourceDescriptor.d.ts.map +1 -1
  155. package/src/engine/graphics/render/frame_graph/resource/TextureResourceDescriptor.js +9 -6
  156. package/src/engine/graphics3/AnimationGraphSystem.d.ts +5 -0
  157. package/src/engine/graphics3/AnimationGraphSystem.d.ts.map +1 -1
  158. package/src/engine/graphics3/AnimationGraphSystem.js +48 -2
  159. package/src/engine/graphics3/AnimationSystem.d.ts +5 -0
  160. package/src/engine/graphics3/AnimationSystem.d.ts.map +1 -1
  161. package/src/engine/graphics3/AnimationSystem.js +47 -2
  162. package/src/engine/graphics3/ParticipatingMedia.js +204 -204
  163. package/src/engine/graphics3/animation/AnimationClips.d.ts +5 -0
  164. package/src/engine/graphics3/animation/AnimationClips.d.ts.map +1 -1
  165. package/src/engine/graphics3/animation/AnimationClips.js +5 -0
  166. package/src/engine/graphics3/register_clips.d.ts +29 -0
  167. package/src/engine/graphics3/register_clips.d.ts.map +1 -1
  168. package/src/engine/graphics3/register_clips.js +52 -0
  169. package/src/engine/grid/obstacle/GridObstacle.js +2 -2
  170. package/src/engine/intelligence/behavior/selector/WeightedElement.js +2 -2
  171. package/src/engine/interpolation/Interpolated.js +2 -2
  172. package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts +9 -0
  173. package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts.map +1 -1
  174. package/src/engine/physics/broadphase/compute_fat_world_aabb.js +3 -1
  175. package/src/engine/physics/cloth/PLAN.md +10 -8
  176. package/src/engine/physics/cloth/build/cloth_bind_in_frame.d.ts +22 -0
  177. package/src/engine/physics/cloth/build/cloth_bind_in_frame.d.ts.map +1 -1
  178. package/src/engine/physics/cloth/build/cloth_bind_in_frame.js +51 -19
  179. package/src/engine/physics/cloth/build/cloth_proxy_from_joints.d.ts.map +1 -1
  180. package/src/engine/physics/cloth/build/cloth_proxy_from_joints.js +16 -2
  181. package/src/engine/physics/cloth/build/cloth_proxy_from_mesh.d.ts.map +1 -1
  182. package/src/engine/physics/cloth/build/cloth_proxy_from_mesh.js +19 -24
  183. package/src/engine/physics/cloth/collider/ClothColliderIndex.d.ts +7 -0
  184. package/src/engine/physics/cloth/collider/ClothColliderIndex.d.ts.map +1 -1
  185. package/src/engine/physics/cloth/collider/ClothColliderIndex.js +85 -67
  186. package/src/engine/physics/cloth/collider/cloth_collider_bounds.d.ts.map +1 -1
  187. package/src/engine/physics/cloth/collider/cloth_collider_bounds.js +19 -101
  188. package/src/engine/physics/cloth/collider/cloth_collider_pack.d.ts +2 -5
  189. package/src/engine/physics/cloth/collider/cloth_collider_pack.d.ts.map +1 -1
  190. package/src/engine/physics/cloth/collider/cloth_collider_pack.js +7 -15
  191. package/src/engine/physics/cloth/collider/cloth_collider_sdf.d.ts.map +1 -1
  192. package/src/engine/physics/cloth/collider/cloth_collider_sdf.js +16 -61
  193. package/src/engine/physics/cloth/ecs/Cloth.d.ts.map +1 -1
  194. package/src/engine/physics/cloth/ecs/Cloth.js +7 -5
  195. package/src/engine/physics/cloth/ecs/ClothCollider.d.ts.map +1 -1
  196. package/src/engine/physics/cloth/ecs/ClothCollider.js +7 -5
  197. package/src/engine/physics/cloth/ecs/ClothColliderFlags.d.ts +0 -1
  198. package/src/engine/physics/cloth/ecs/ClothColliderFlags.js +6 -19
  199. package/src/engine/physics/cloth/ecs/ClothColliderSystem.d.ts +1 -2
  200. package/src/engine/physics/cloth/ecs/ClothColliderSystem.d.ts.map +1 -1
  201. package/src/engine/physics/cloth/ecs/ClothColliderSystem.js +3 -12
  202. package/src/engine/physics/cloth/ecs/ClothDynamics.d.ts.map +1 -1
  203. package/src/engine/physics/cloth/ecs/ClothDynamics.js +20 -11
  204. package/src/engine/physics/cloth/ecs/ClothWorld.d.ts.map +1 -1
  205. package/src/engine/physics/cloth/ecs/ClothWorld.js +40 -130
  206. package/src/engine/physics/cloth/ecs/cloth_build_rows.d.ts.map +1 -1
  207. package/src/engine/physics/cloth/ecs/cloth_build_rows.js +17 -58
  208. package/src/engine/physics/cloth/ecs/cloth_dynamics_map.d.ts.map +1 -1
  209. package/src/engine/physics/cloth/ecs/cloth_dynamics_map.js +3 -3
  210. package/src/engine/physics/cloth/ecs/cloth_gather_colliders.d.ts.map +1 -1
  211. package/src/engine/physics/cloth/ecs/cloth_gather_colliders.js +44 -104
  212. package/src/engine/physics/cloth/ecs/cloth_geodesic.d.ts.map +1 -1
  213. package/src/engine/physics/cloth/ecs/cloth_geodesic.js +6 -13
  214. package/src/engine/physics/cloth/ecs/cloth_holds.d.ts.map +1 -1
  215. package/src/engine/physics/cloth/ecs/cloth_holds.js +15 -40
  216. package/src/engine/physics/cloth/ecs/cloth_reconstruct_pose.d.ts.map +1 -1
  217. package/src/engine/physics/cloth/ecs/cloth_reconstruct_pose.js +45 -79
  218. package/src/engine/physics/cloth/ecs/cloth_seed_subtree.d.ts.map +1 -1
  219. package/src/engine/physics/cloth/ecs/cloth_seed_subtree.js +7 -27
  220. package/src/engine/physics/cloth/ecs/cloth_write_back.d.ts.map +1 -1
  221. package/src/engine/physics/cloth/ecs/cloth_write_back.js +30 -62
  222. package/src/engine/physics/cloth/playground/cloth_playground_build.d.ts.map +1 -1
  223. package/src/engine/physics/cloth/playground/cloth_playground_build.js +2 -3
  224. package/src/engine/physics/cloth/playground/collide_main.js +2 -28
  225. package/src/engine/physics/cloth/playground/garment_main.js +4 -19
  226. package/src/engine/physics/cloth/playground/main.js +6 -48
  227. package/src/engine/physics/cloth/playground/rig_main.js +947 -955
  228. package/src/engine/physics/cloth/playground/wind_main.js +8 -7
  229. package/src/engine/physics/cloth/solver/ClothState.d.ts.map +1 -1
  230. package/src/engine/physics/cloth/solver/ClothState.js +16 -76
  231. package/src/engine/physics/cloth/solver/cloth_color_particles.d.ts +10 -8
  232. package/src/engine/physics/cloth/solver/cloth_color_particles.d.ts.map +1 -1
  233. package/src/engine/physics/cloth/solver/cloth_color_particles.js +30 -102
  234. package/src/engine/physics/cloth/solver/cloth_contact_find.d.ts.map +1 -1
  235. package/src/engine/physics/cloth/solver/cloth_contact_find.js +3 -2
  236. package/src/engine/physics/cloth/solver/cloth_hold_line.d.ts.map +1 -1
  237. package/src/engine/physics/cloth/solver/cloth_hold_line.js +2 -14
  238. package/src/engine/physics/cloth/solver/cloth_kinetic_energy.d.ts +21 -0
  239. package/src/engine/physics/cloth/solver/cloth_kinetic_energy.d.ts.map +1 -0
  240. package/src/engine/physics/cloth/solver/cloth_kinetic_energy.js +45 -0
  241. package/src/engine/physics/cloth/solver/cloth_particle_coupling.d.ts +32 -0
  242. package/src/engine/physics/cloth/solver/cloth_particle_coupling.d.ts.map +1 -0
  243. package/src/engine/physics/cloth/solver/cloth_particle_coupling.js +133 -0
  244. package/src/engine/physics/cloth/solver/cloth_particle_of_source.d.ts +16 -0
  245. package/src/engine/physics/cloth/solver/cloth_particle_of_source.d.ts.map +1 -0
  246. package/src/engine/physics/cloth/solver/cloth_particle_of_source.js +19 -0
  247. package/src/engine/physics/cloth/solver/cloth_self_find.d.ts.map +1 -1
  248. package/src/engine/physics/cloth/solver/cloth_self_find.js +6 -55
  249. package/src/engine/physics/cloth/solver/cloth_solve_vertex.d.ts.map +1 -1
  250. package/src/engine/physics/cloth/solver/cloth_solve_vertex.js +30 -65
  251. package/src/engine/physics/cloth/solver/cloth_step.d.ts.map +1 -1
  252. package/src/engine/physics/cloth/solver/cloth_step.js +6 -28
  253. package/src/engine/physics/cloth/solver/cloth_step_instance.d.ts.map +1 -1
  254. package/src/engine/physics/cloth/solver/cloth_step_instance.js +2 -3
  255. package/src/engine/physics/cloth/solver/cloth_stretch_residual.d.ts +21 -0
  256. package/src/engine/physics/cloth/solver/cloth_stretch_residual.d.ts.map +1 -0
  257. package/src/engine/physics/cloth/solver/cloth_stretch_residual.js +54 -0
  258. package/src/engine/physics/cloth/solver/cloth_vertex_accumulator.d.ts +15 -0
  259. package/src/engine/physics/cloth/solver/cloth_vertex_accumulator.d.ts.map +1 -1
  260. package/src/engine/physics/cloth/solver/cloth_vertex_accumulator.js +28 -0
  261. package/src/engine/physics/cloth/solver/cloth_worst_tether_ratio.d.ts +30 -0
  262. package/src/engine/physics/cloth/solver/cloth_worst_tether_ratio.d.ts.map +1 -0
  263. package/src/engine/physics/cloth/solver/cloth_worst_tether_ratio.js +56 -0
  264. package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.d.ts.map +1 -1
  265. package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.js +3 -17
  266. package/src/engine/physics/cloth/wind/ClothFluidWind.d.ts +2 -1
  267. package/src/engine/physics/cloth/wind/ClothFluidWind.d.ts.map +1 -1
  268. package/src/engine/physics/cloth/wind/ClothFluidWind.js +7 -25
  269. package/src/engine/physics/cloth/wind/cloth_sample_air.d.ts +3 -1
  270. package/src/engine/physics/cloth/wind/cloth_sample_air.d.ts.map +1 -1
  271. package/src/engine/physics/cloth/wind/cloth_sample_air.js +40 -62
  272. package/src/engine/physics/ecs/ContactProbeSystem.d.ts.map +1 -1
  273. package/src/engine/physics/ecs/ContactProbeSystem.js +2 -18
  274. package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
  275. package/src/engine/physics/ecs/PhysicsSystem.js +9 -50
  276. package/src/engine/physics/fluid/FluidField.d.ts.map +1 -1
  277. package/src/engine/physics/fluid/FluidField.js +7 -5
  278. package/src/engine/physics/fluid/ecs/FluidComponent.d.ts.map +1 -1
  279. package/src/engine/physics/fluid/ecs/FluidComponent.js +19 -11
  280. package/src/engine/physics/fluid/ecs/fluid_sample_domain_bounds.d.ts +24 -0
  281. package/src/engine/physics/fluid/ecs/fluid_sample_domain_bounds.d.ts.map +1 -0
  282. package/src/engine/physics/fluid/ecs/fluid_sample_domain_bounds.js +42 -0
  283. package/src/engine/physics/fluid/ecs/fluid_sample_velocity_world_mps.d.ts +25 -0
  284. package/src/engine/physics/fluid/ecs/fluid_sample_velocity_world_mps.d.ts.map +1 -0
  285. package/src/engine/physics/fluid/ecs/fluid_sample_velocity_world_mps.js +40 -0
  286. package/src/engine/physics/fluid/effector/AbstractFluidEffector.d.ts +2 -2
  287. package/src/engine/physics/fluid/effector/AbstractFluidEffector.js +2 -2
  288. package/src/engine/physics/fluid/effector/GlobalFluidEffector.d.ts.map +1 -1
  289. package/src/engine/physics/fluid/effector/GlobalFluidEffector.js +11 -7
  290. package/src/engine/physics/fluid/effector/ImpulseFluidEffector.d.ts.map +1 -1
  291. package/src/engine/physics/fluid/effector/ImpulseFluidEffector.js +11 -7
  292. package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts.map +1 -1
  293. package/src/engine/physics/fluid/effector/WakeFluidEffector.js +16 -9
  294. package/src/engine/physics/inverse_kinematics/frame_fabrik/frame_fabrik_solve.d.ts.map +1 -1
  295. package/src/engine/physics/inverse_kinematics/frame_fabrik/frame_fabrik_solve.js +40 -90
  296. package/src/engine/physics/narrowphase/capsule_contacts.d.ts.map +1 -1
  297. package/src/engine/physics/narrowphase/capsule_contacts.js +3 -5
  298. package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.d.ts.map +1 -1
  299. package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.js +2 -14
  300. package/src/engine/physics/narrowphase/hull_sphere_contact.d.ts.map +1 -1
  301. package/src/engine/physics/narrowphase/hull_sphere_contact.js +2 -5
  302. package/src/engine/physics/narrowphase/narrowphase_step.d.ts.map +1 -1
  303. package/src/engine/physics/narrowphase/narrowphase_step.js +13 -32
  304. package/src/engine/physics/narrowphase/sphere_box_contact.d.ts.map +1 -1
  305. package/src/engine/physics/narrowphase/sphere_box_contact.js +2 -5
  306. package/src/engine/sound/ecs/audio/AudioEmitter.d.ts.map +1 -1
  307. package/src/engine/sound/ecs/audio/AudioEmitter.js +12 -7
  308. package/src/engine/sound/ecs/trigger/AudioEventTrigger.d.ts.map +1 -1
  309. package/src/engine/sound/ecs/trigger/AudioEventTrigger.js +192 -191
  310. package/src/engine/sound/simulation/core/AcousticMedium.js +2 -2
  311. package/src/engine/sound/simulation/definition/AcousticDirectivity.js +2 -2
  312. package/src/engine/sound/simulation/definition/AcousticMaterial.d.ts.map +1 -1
  313. package/src/engine/sound/simulation/definition/AcousticMaterial.js +11 -7
  314. package/src/engine/sound/sopra/definition/BusDefinition.d.ts.map +1 -1
  315. package/src/engine/sound/sopra/definition/BusDefinition.js +5 -4
  316. package/src/engine/sound/sopra/definition/DuckingRule.d.ts.map +1 -1
  317. package/src/engine/sound/sopra/definition/DuckingRule.js +7 -5
  318. package/src/engine/sound/sopra/definition/EventDescription.d.ts.map +1 -1
  319. package/src/engine/sound/sopra/definition/EventDescription.js +23 -13
  320. package/src/engine/sound/sopra/definition/MixerSnapshot.js +2 -2
  321. package/src/engine/sound/sopra/definition/ParameterDefinition.d.ts.map +1 -1
  322. package/src/engine/sound/sopra/definition/ParameterDefinition.js +7 -5
  323. package/src/engine/sound/sopra/definition/clip/AbstractAudioClip.js +2 -2
  324. package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.d.ts.map +1 -1
  325. package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.js +4 -3
  326. package/src/engine/sound/sopra/definition/clip/ContainerAudioClip.js +2 -2
  327. package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.js +3 -3
  328. package/src/engine/sound/sopra/definition/clip/SampleAudioClip.d.ts.map +1 -1
  329. package/src/engine/sound/sopra/definition/clip/SampleAudioClip.js +16 -9
  330. package/src/engine/sound/sopra/definition/clip/SilenceAudioClip.js +2 -2
  331. package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.d.ts +1 -1
  332. package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.d.ts.map +1 -1
  333. package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.js +2 -2
  334. package/src/engine/sound/sopra/definition/effect/CompressorEffect.d.ts.map +1 -1
  335. package/src/engine/sound/sopra/definition/effect/CompressorEffect.js +7 -5
  336. package/src/engine/sound/sopra/definition/effect/EqEffect.d.ts.map +1 -1
  337. package/src/engine/sound/sopra/definition/effect/EqEffect.js +8 -5
  338. package/src/engine/sound/sopra/definition/effect/ReverbEffect.js +2 -2
  339. package/src/engine/sound/sopra/legacy/SoundEmitter.d.ts.map +1 -1
  340. package/src/engine/sound/sopra/legacy/SoundEmitter.js +357 -352
  341. package/src/engine/sound/sopra/legacy/SoundTrack.d.ts.map +1 -1
  342. package/src/engine/sound/sopra/legacy/SoundTrack.js +281 -278
  343. package/src/format/image/png/PNGReader.js +644 -644
  344. package/src/format/image/png/crc32.d.ts +1 -1
  345. package/src/format/image/png/crc32.js +7 -8
  346. package/src/format/texture/basis/transcode/etc1s_to_astc.d.ts.map +1 -1
  347. package/src/format/texture/basis/transcode/etc1s_to_astc.js +2 -1
  348. package/src/shade/descriptor/binding/BindGroupLayoutDescriptor.js +2 -2
  349. package/src/shade/descriptor/binding/BindGroupLayoutEntry.d.ts.map +1 -1
  350. package/src/shade/descriptor/binding/BindGroupLayoutEntry.js +12 -8
  351. package/src/shade/descriptor/binding/StorageTextureBindingLayout.js +2 -2
  352. package/src/shade/descriptor/binding/TextureBindingLayout.js +2 -2
  353. package/src/shade/descriptor/blend/BlendComponent.js +2 -2
  354. package/src/shade/descriptor/pipeline/PipelineDescriptorBase.js +2 -2
  355. package/src/shade/descriptor/pipeline/PipelineLayoutDescriptor.js +2 -2
  356. package/src/shade/descriptor/pipeline/ProgrammableStage.js +2 -2
  357. package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.js +2 -2
  358. package/src/shade/descriptor/pipeline/render/ColorTargetState.js +2 -2
  359. package/src/shade/descriptor/pipeline/render/FragmentState.js +2 -2
  360. package/src/shade/descriptor/pipeline/render/PrimitiveState.js +2 -2
  361. package/src/shade/descriptor/pipeline/render/RenderPipelineDescriptor.d.ts.map +1 -1
  362. package/src/shade/descriptor/pipeline/render/RenderPipelineDescriptor.js +8 -5
  363. package/src/shade/descriptor/pipeline/render/VertexAttribute.js +2 -2
  364. package/src/shade/descriptor/texture/SamplerDescriptor.d.ts.map +1 -1
  365. package/src/shade/descriptor/texture/SamplerDescriptor.js +20 -12
  366. package/src/shade/descriptor/texture/TextureDescriptor.d.ts.map +1 -1
  367. package/src/shade/descriptor/texture/TextureDescriptor.js +11 -7
  368. package/src/shade/device/graph/BufferResourceDescriptor.d.ts.map +1 -1
  369. package/src/shade/device/graph/BufferResourceDescriptor.js +196 -193
  370. package/src/shade/device/graph/TextureResourceDescriptor.d.ts.map +1 -1
  371. package/src/shade/device/graph/TextureResourceDescriptor.js +178 -173
  372. package/src/shade/device/timing/profile/sgpt_read_header.js +1 -1
  373. package/src/shade/device/timing/profile/sgpt_read_records.js +1 -1
  374. package/src/shade/device/timing/profile/sgpt_write_header.js +1 -1
  375. package/src/shade/device/timing/profile/sgpt_write_record.js +1 -1
  376. package/src/shade/playground/image_decode_bench/main.js +2 -1
  377. package/src/shade/playground/skinned_blas_refit/diff_traced_against_rasterized.d.ts.map +1 -1
  378. package/src/shade/playground/skinned_blas_refit/diff_traced_against_rasterized.js +2 -1
  379. package/src/shade/playground/skinned_mesh_soup/verify_clone_vertices.d.ts.map +1 -1
  380. package/src/shade/playground/skinned_mesh_soup/verify_clone_vertices.js +2 -1
  381. package/src/shade/playground/ssr_variance/statistics.d.ts.map +1 -1
  382. package/src/shade/playground/ssr_variance/statistics.js +2 -1
  383. package/src/shade/playground/texture_encode/main.d.ts.map +1 -1
  384. package/src/shade/playground/texture_encode/main.js +2 -1
  385. package/src/shade/playground/volumetrics_froxel/measure.d.ts.map +1 -1
  386. package/src/shade/playground/volumetrics_froxel/measure.js +2 -1
  387. package/src/shade/renderer/binding/BufferBinding.js +2 -2
  388. package/src/shade/renderer/buffer/table/gpu_database_check_links.d.ts.map +1 -1
  389. package/src/shade/renderer/buffer/table/gpu_database_check_links.js +2 -1
  390. package/src/shade/renderer/camera/Camera.js +2 -2
  391. package/src/shade/renderer/geometry/Attribute.js +2 -2
  392. package/src/shade/renderer/geometry/Geometry.js +2 -2
  393. package/src/shade/renderer/geometry/geometry_deduplicate_vertices.js +2 -2
  394. package/src/shade/renderer/geometry/meshlet/MeshletBatch.js +2 -2
  395. package/src/shade/renderer/geometry/virtual/build/level/vgeo_build_group_step.d.ts.map +1 -1
  396. package/src/shade/renderer/geometry/virtual/build/level/vgeo_build_group_step.js +3 -2
  397. package/src/shade/renderer/geometry/virtual/build/level/vgeo_build_leaf_frontier.d.ts.map +1 -1
  398. package/src/shade/renderer/geometry/virtual/build/level/vgeo_build_leaf_frontier.js +2 -1
  399. package/src/shade/renderer/geometry/virtual/build/level/vgeo_partition_into_groups.d.ts.map +1 -1
  400. package/src/shade/renderer/geometry/virtual/build/level/vgeo_partition_into_groups.js +2 -1
  401. package/src/shade/renderer/geometry/virtual/build/level/vgeo_run_round.d.ts.map +1 -1
  402. package/src/shade/renderer/geometry/virtual/build/level/vgeo_run_round.js +2 -1
  403. package/src/shade/renderer/geometry/virtual/build/level/vgeo_try_repack.d.ts.map +1 -1
  404. package/src/shade/renderer/geometry/virtual/build/level/vgeo_try_repack.js +3 -2
  405. package/src/shade/renderer/geometry/virtual/build/partition/vgeo_graph_components.d.ts.map +1 -1
  406. package/src/shade/renderer/geometry/virtual/build/partition/vgeo_graph_components.js +2 -1
  407. package/src/shade/renderer/geometry/virtual/build/partition/vgeo_split_face_set_packed.d.ts.map +1 -1
  408. package/src/shade/renderer/geometry/virtual/build/partition/vgeo_split_face_set_packed.js +2 -1
  409. package/src/shade/renderer/geometry/virtual/format/checksum/vgeo_compute_asset_id.js +13 -13
  410. package/src/shade/renderer/geometry/virtual/format/checksum/vgeo_compute_directory_block_checksum.js +41 -41
  411. package/src/shade/renderer/geometry/virtual/format/checksum/vgeo_compute_frame_checksum.js +41 -41
  412. package/src/shade/renderer/geometry/virtual/format/checksum/vgeo_compute_header_checksum.js +25 -25
  413. package/src/shade/renderer/geometry/virtual/format/vgeo_write_container.d.ts.map +1 -1
  414. package/src/shade/renderer/geometry/virtual/format/vgeo_write_container.js +3 -2
  415. package/src/shade/renderer/material/StandardShadeMaterial.d.ts.map +1 -1
  416. package/src/shade/renderer/material/StandardShadeMaterial.js +13 -8
  417. package/src/shade/renderer/particles/optimizer/dag/particle_vector_extract.d.ts.map +1 -1
  418. package/src/shade/renderer/particles/optimizer/dag/particle_vector_extract.js +3 -2
  419. package/src/shade/renderer/scene/optimization/geometry/internal/triangle_fingerprint_stream.d.ts.map +1 -1
  420. package/src/shade/renderer/scene/optimization/geometry/internal/triangle_fingerprint_stream.js +14 -5
  421. package/src/shade/renderer/scene/optimization/sampler2d_from_image_bitmap.js +1 -1
  422. package/src/shade/renderer/shader/type/WGSLStructField.js +2 -2
  423. package/src/shade/renderer/shader/type/WebGPUArray.js +2 -2
  424. package/src/shade/renderer/shader/type/WebGPUStruct.d.ts.map +1 -1
  425. package/src/shade/renderer/shader/type/WebGPUStruct.js +9 -6
  426. package/src/shade/renderer/texture/ShadeTexture.d.ts.map +1 -1
  427. package/src/shade/renderer/texture/ShadeTexture.js +17 -10
  428. package/src/shade/renderer/texture/mipmaps/WebGPUMipmapGenerator.js +2 -2
  429. package/src/shade/renderer/water/surface/chunk_water_surface_sample.d.ts +4 -4
  430. package/src/shade/renderer/water/surface/chunk_water_surface_sample.js +6 -6
  431. package/src/shade/renderer/water/surface/particles/GPUWaterParticles.d.ts.map +1 -1
  432. package/src/shade/renderer/water/surface/particles/GPUWaterParticles.js +46 -55
  433. package/src/shade/renderer/water/surface/particles/WATER_PARTICLE_STRUCT.d.ts +3 -3
  434. package/src/shade/renderer/water/surface/particles/WATER_PARTICLE_STRUCT.d.ts.map +1 -1
  435. package/src/shade/renderer/water/surface/particles/WATER_PARTICLE_STRUCT.js +14 -4
  436. package/src/shade/renderer/water/surface/particles/chunk_water_particle.d.ts +10 -1
  437. package/src/shade/renderer/water/surface/particles/chunk_water_particle.d.ts.map +1 -1
  438. package/src/shade/renderer/water/surface/particles/chunk_water_particle.js +82 -40
  439. package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.d.ts +4 -1
  440. package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.d.ts.map +1 -1
  441. package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.js +8 -4
  442. package/src/shade/renderer/water/surface/particles/shader_water_particles.d.ts +98 -86
  443. package/src/shade/renderer/water/surface/particles/shader_water_particles.d.ts.map +1 -1
  444. package/src/shade/renderer/water/surface/particles/shader_water_particles.js +440 -298
  445. package/src/view/common/HTMLElementCacheKey.d.ts.map +1 -1
  446. package/src/view/common/HTMLElementCacheKey.js +4 -3
  447. package/src/view/minimap/MinimapMarker.js +2 -2
@@ -59,6 +59,7 @@ import {
59
59
  TRANSFORM64_ROTATION_OFFSET,
60
60
  TRANSFORM64_TRANSLATION_OFFSET
61
61
  } from "../../ecs/transform/Transform64.js";
62
+ import { t64_read_pose_array } from "../../ecs/transform/t64_read_pose_array.js";
62
63
  import { rigid_subject_pose } from "./rigid_subject_pose.js";
63
64
 
64
65
  const posed_a = new PosedShape3D();
@@ -1081,7 +1082,7 @@ const tri_plane = new Float64Array(13);
1081
1082
  * @param {Transform64} concave_tr
1082
1083
  */
1083
1084
  function triangle_plane_world(tri, concave_tr) {
1084
- pose_pack(plane_pose, concave_tr);
1085
+ t64_read_pose_array(plane_pose, 0, concave_tr);
1085
1086
  triangle_vertices_to_world(scratch_tri_world, triangle_buffer, tri, plane_pose);
1086
1087
 
1087
1088
  const w = scratch_tri_world;
@@ -1476,26 +1477,6 @@ const plane_pose = new Float64Array(7);
1476
1477
  */
1477
1478
  const convex_record = new Float64Array(10);
1478
1479
 
1479
- /**
1480
- * Pack a pose, `[px, py, pz, qx, qy, qz, qw]`, from a transform.
1481
- *
1482
- * Read off the transform's lanes (a Transform64 is a Float64Array), not through `translation_x` and
1483
- * the rest: inlined into dispatch_pair, those accessor calls land on a branch too rarely taken for
1484
- * TurboFan to inline them, and each then returns its number boxed.
1485
- *
1486
- * @param {Float64Array} out
1487
- * @param {Transform64} tr
1488
- */
1489
- function pose_pack(out, tr) {
1490
- out[0] = tr[TRANSFORM64_TRANSLATION_OFFSET];
1491
- out[1] = tr[TRANSFORM64_TRANSLATION_OFFSET + 1];
1492
- out[2] = tr[TRANSFORM64_TRANSLATION_OFFSET + 2];
1493
- out[3] = tr[TRANSFORM64_ROTATION_OFFSET];
1494
- out[4] = tr[TRANSFORM64_ROTATION_OFFSET + 1];
1495
- out[5] = tr[TRANSFORM64_ROTATION_OFFSET + 2];
1496
- out[6] = tr[TRANSFORM64_ROTATION_OFFSET + 3];
1497
- }
1498
-
1499
1480
  // dispatch_pair branches on the shape pair, so each branch runs on a fraction of its calls: too few
1500
1481
  // for TurboFan to inline a call made there, small or not, and a call that is not inlined boxes each
1501
1482
  // number handed to it. The closed-form pair kernels therefore get their bodies packed into these
@@ -1543,7 +1524,7 @@ function sphere_record_pack(out, tr, shape) {
1543
1524
  * @param {CapsuleShape3D} shape
1544
1525
  */
1545
1526
  function capsule_record_pack(out, tr, shape) {
1546
- pose_pack(out, tr);
1527
+ t64_read_pose_array(out, 0, tr);
1547
1528
  out[7] = shape.radius;
1548
1529
  out[8] = shape.height * 0.5;
1549
1530
  }
@@ -1611,14 +1592,14 @@ function append_manifold_contact(count, result, offset, first_is_a, feature_id)
1611
1592
 
1612
1593
  /**
1613
1594
  * Pack a box record, `[px, py, pz, qx, qy, qz, qw, hx, hy, hz]`: its centre and orientation from the
1614
- * transform, then its half-extents, read off their lanes for {@link pose_pack}'s reason (a Vector3 is
1615
- * a Float64Array).
1595
+ * transform, then its half-extents, read off their lanes for {@link t64_read_pose_array}'s reason (a
1596
+ * Vector3 is a Float64Array).
1616
1597
  * @param {Float64Array} out
1617
1598
  * @param {Transform64} tr
1618
1599
  * @param {Vector3} half_extents
1619
1600
  */
1620
1601
  function box_record_pack(out, tr, half_extents) {
1621
- pose_pack(out, tr);
1602
+ t64_read_pose_array(out, 0, tr);
1622
1603
  out[7] = half_extents[0];
1623
1604
  out[8] = half_extents[1];
1624
1605
  out[9] = half_extents[2];
@@ -1793,8 +1774,8 @@ function sphere_box_voronoi_fid_array(sphere, sphere_offset, box, box_offset) {
1793
1774
  function hull_pair_contacts(count, hullA, trA, hullB, trB) {
1794
1775
  // Poses go to the posed shapes and the clip in arrays, read off the transforms' lanes: this is
1795
1776
  // called from a dispatch_pair branch, and numbers handed across a call there are boxed.
1796
- pose_pack(pair_pose_a, trA);
1797
- pose_pack(pair_pose_b, trB);
1777
+ t64_read_pose_array(pair_pose_a, 0, trA);
1778
+ t64_read_pose_array(pair_pose_b, 0, trB);
1798
1779
  posed_a.setup_pose(hullA, pair_pose_a, 0);
1799
1780
  posed_b.setup_pose(hullB, pair_pose_b, 0);
1800
1781
  const depth = gjk_epa_penetration(epa_result, posed_a, posed_b);
@@ -2163,7 +2144,7 @@ function dispatch_pair(count, colA, trA, colB, trB) {
2163
2144
  if ((shapeA.isConvexHullShape3D === true && isSphereB) || (isSphereA && shapeB.isConvexHullShape3D === true)) {
2164
2145
  const hull_is_a = isSphereB;
2165
2146
 
2166
- pose_pack(pair_pose, hull_is_a ? trA : trB);
2147
+ t64_read_pose_array(pair_pose, 0, hull_is_a ? trA : trB);
2167
2148
  sphere_record_pack(pair_sphere_b, hull_is_a ? trB : trA, hull_is_a ? shapeB : shapeA);
2168
2149
 
2169
2150
  const ok = hull_sphere_contact_array(closed_form_result, hull_is_a ? shapeA : shapeB, pair_pose, 0, pair_sphere_b, 0);
@@ -2214,8 +2195,8 @@ function dispatch_pair(count, colA, trA, colB, trB) {
2214
2195
  // The two bodies' poses, packed once for the calls below and the per-triangle kernels: passed
2215
2196
  // as numbers to a call that is not inlined, every one would be boxed (see
2216
2197
  // triangle_vertices_to_world).
2217
- pose_pack(convex_pose, convex_tr);
2218
- pose_pack(concave_pose, concave_tr);
2198
+ t64_read_pose_array(convex_pose, 0, convex_tr);
2199
+ t64_read_pose_array(concave_pose, 0, concave_tr);
2219
2200
 
2220
2201
  // 1. Convex shape's world AABB.
2221
2202
  convex_col.shape.compute_bounding_box(concave_local_aabb);
@@ -2310,7 +2291,7 @@ function dispatch_pair(count, colA, trA, colB, trB) {
2310
2291
  convex_record[2] = convex_wz;
2311
2292
  convex_record[3] = sphere_radius;
2312
2293
  } else if (isBoxConvex || isCapsuleConvex) {
2313
- pose_pack(convex_record, convex_tr);
2294
+ t64_read_pose_array(convex_record, 0, convex_tr);
2314
2295
 
2315
2296
  if (isBoxConvex) {
2316
2297
  convex_record[7] = box_half_extents.x;
@@ -3130,7 +3111,7 @@ function collider_box(i, entry) {
3130
3111
 
3131
3112
  entry.collider.shape.compute_bounding_box(collider_local_box);
3132
3113
 
3133
- pose_pack(collider_pose, t);
3114
+ t64_read_pose_array(collider_pose, 0, t);
3134
3115
  aabb3_transform_oriented_array(collider_boxes, i * 6, collider_local_box, 0, collider_pose, 0);
3135
3116
  }
3136
3117
 
@@ -1 +1 @@
1
- {"version":3,"file":"sphere_box_contact.d.ts","sourceRoot":"","sources":["../../../../../src/engine/physics/narrowphase/sphere_box_contact.js"],"names":[],"mappings":"AAUA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wCAjBW,MAAM,EAAE,GAAC,YAAY,MACrB,MAAM,MACN,MAAM,MACN,MAAM,UACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACJ,OAAO,CAmBnB;AASD;;;;;;;;;;;;GAYG;AACH,8CAPW,MAAM,EAAE,GAAC,YAAY,UACrB,YAAY,iBACZ,MAAM,OACN,YAAY,cACZ,MAAM,GACJ,OAAO,CA8FnB"}
1
+ {"version":3,"file":"sphere_box_contact.d.ts","sourceRoot":"","sources":["../../../../../src/engine/physics/narrowphase/sphere_box_contact.js"],"names":[],"mappings":"AAUA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wCAjBW,MAAM,EAAE,GAAC,YAAY,MACrB,MAAM,MACN,MAAM,MACN,MAAM,UACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACJ,OAAO,CAmBnB;AASD;;;;;;;;;;;;GAYG;AACH,8CAPW,MAAM,EAAE,GAAC,YAAY,UACrB,YAAY,iBACZ,MAAM,OACN,YAAY,cACZ,MAAM,GACJ,OAAO,CA2FnB"}
@@ -1,5 +1,5 @@
1
1
  import { v3_quaternion_apply_array } from "../../../core/geom/vec3/v3_quaternion_apply.js";
2
- import { v3_quaternion_apply_inverse_array } from "../../../core/geom/vec3/v3_quaternion_apply_inverse.js";
2
+ import { pose3_apply_inverse_point_array } from "../../../core/geom/3d/pose/pose3_apply_inverse_point_array.js";
3
3
 
4
4
  /**
5
5
  * Scratch for the world→box-local rotation of the sphere centre at the
@@ -93,10 +93,7 @@ export function sphere_box_contact_array(out, sphere, sphere_offset, box, box_of
93
93
 
94
94
  // Step 1: bring the sphere centre into box-local space via the conjugate
95
95
  // quaternion. v_local = q* · (s - b) · q
96
- scratch_local[0] = sx - bx;
97
- scratch_local[1] = sy - by;
98
- scratch_local[2] = sz - bz;
99
- v3_quaternion_apply_inverse_array(scratch_local, 0, scratch_local, 0, box, rotation);
96
+ pose3_apply_inverse_point_array(scratch_local, 0, box, box_offset, box, rotation, sphere, sphere_offset);
100
97
  const lx = scratch_local[0];
101
98
  const ly = scratch_local[1];
102
99
  const lz = scratch_local[2];
@@ -1 +1 @@
1
- {"version":3,"file":"AudioEmitter.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/ecs/audio/AudioEmitter.js"],"names":[],"mappings":"AASA;;;;;;;;GAQG;AACH;IA4HI;;;OAGG;IACH,4BAFa,YAAY,CAMxB;IAlID;;;;;;;;;;;;OAYG;IACH,OAFU,gBAAgB,CAEK;IAE/B;;;OAGG;IACH,QAFU,OAAO,CAEO;IAExB;;;;OAIG;IACH,UAFU,OAAO,CAED;IAEhB;;;;;OAKG;IACH,UAFU,OAAO,CAEA;IAEjB;;;;;OAKG;IACH,cAFU,MAAM,CAEqB;IAErC;;;;;OAKG;IACH,aAFU,mBAAmB,CAEW;IAExC;;;;;;;;;;;;;;;OAeG;IACH,aAFU;QAAC,KAAK,EAAE,OAAO,YAAY,CAAC,CAAA;KAAC,CAIrC;IAEF;;;OAGG;IACH,cAHW,YAAY,GACV,OAAO,CASnB;IAED,eASC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MASC;IAED,0BAaC;CAWJ;;;;iCAlJgC,4CAA4C;oBAHzD,kCAAkC;oCAElB,oDAAoD;mBAHrE,0CAA0C"}
1
+ {"version":3,"file":"AudioEmitter.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/ecs/audio/AudioEmitter.js"],"names":[],"mappings":"AAUA;;;;;;;;GAQG;AACH;IAgII;;;OAGG;IACH,4BAFa,YAAY,CAMxB;IAtID;;;;;;;;;;;;OAYG;IACH,OAFU,gBAAgB,CAEK;IAE/B;;;OAGG;IACH,QAFU,OAAO,CAEO;IAExB;;;;OAIG;IACH,UAFU,OAAO,CAED;IAEhB;;;;;OAKG;IACH,UAFU,OAAO,CAEA;IAEjB;;;;;OAKG;IACH,cAFU,MAAM,CAEqB;IAErC;;;;;OAKG;IACH,aAFU,mBAAmB,CAEW;IAExC;;;;;;;;;;;;;;;OAeG;IACH,aAFU;QAAC,KAAK,EAAE,OAAO,YAAY,CAAC,CAAA;KAAC,CAIrC;IAEF;;;OAGG;IACH,cAHW,YAAY,GACV,OAAO,CASnB;IAED,eAaC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MASC;IAED,0BAaC;CAWJ;;;;iCAtJgC,4CAA4C;oBAHzD,kCAAkC;oCAElB,oDAAoD;mBAHrE,0CAA0C"}
@@ -1,4 +1,5 @@
1
- import { combine_hash } from "../../../../core/collection/array/combine_hash.js";
1
+ import { hash_mix2 } from "../../../../core/math/hash/hash_mix2.js";
2
+ import { hash_mix3 } from "../../../../core/math/hash/hash_mix3.js";
2
3
  import Signal from "../../../../core/events/signal/Signal.js";
3
4
  import Vector1 from "../../../../core/geom/Vector1.js";
4
5
  import { computeHashFloat } from "../../../../core/primitives/numbers/computeHashFloat.js";
@@ -104,12 +105,16 @@ export class AudioEmitter {
104
105
  }
105
106
 
106
107
  hash() {
107
- return combine_hash(
108
- this.event.hash(),
109
- this.autoplay ? 1 : 0,
110
- this.acoustic ? 1 : 0,
111
- computeHashFloat(this.sourceRadius),
112
- this.directivity.hash(),
108
+ return hash_mix2(
109
+ hash_mix3(
110
+ hash_mix3(
111
+ this.event.hash(),
112
+ this.autoplay ? 1 : 0,
113
+ this.acoustic ? 1 : 0
114
+ ),
115
+ computeHashFloat(this.sourceRadius),
116
+ this.directivity.hash()
117
+ ),
113
118
  computeHashFloat(this.volume.getValue())
114
119
  );
115
120
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AudioEventTrigger.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/ecs/trigger/AudioEventTrigger.js"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AACH;IAuBI;;;;;OAKG;IACH,wBALW,MAAM,SACN,gBAAgB,cAChB,MAAM,GAAC,IAAI,GACT,qBAAqB,CAUjC;IAuCD;;;OAGG;IACH,4BAFa,qBAAqB,CAMjC;IAlFD;;;;OAIG;IACH,YAFU,MAAM,CAEA;IAEhB;;;;OAIG;IACH,WAFU,MAAM,GAAC,IAAI,CAEJ;IAEjB;;;;OAIG;IACH,OAFU,gBAAgB,CAEK;IAkB/B;;;OAGG;IACH,cAHW,qBAAqB,GACnB,OAAO,CAMnB;IAED,eAMC;IAED;;;;;;;;;;;;;;;;;;;;;;;MAMC;IAED,0BASC;CAWJ;AAED;;;;;;;;GAQG;AACH;IAcI;;;OAGG;IACH,mBAHW,qBAAqB,EAAE,GACrB,iBAAiB,CAQ7B;IA6CD;;;OAGG;IACH,4BAFa,iBAAiB,CAM7B;IA3ED;;;;;;;;;OASG;IACH,OAFU,qBAAqB,EAAE,CAEtB;IAcX;;;OAGG;IACH,cAHW,iBAAiB,GACf,OAAO,CAiBnB;IAED,eAUC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;MAIC;IAED,0BAEC;CAWJ;;;;iCA1LgC,4CAA4C"}
1
+ {"version":3,"file":"AudioEventTrigger.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/ecs/trigger/AudioEventTrigger.js"],"names":[],"mappings":"AAKA;;;;;;;;;GASG;AACH;IAuBI;;;;;OAKG;IACH,wBALW,MAAM,SACN,gBAAgB,cAChB,MAAM,GAAC,IAAI,GACT,qBAAqB,CAUjC;IAuCD;;;OAGG;IACH,4BAFa,qBAAqB,CAMjC;IAlFD;;;;OAIG;IACH,YAFU,MAAM,CAEA;IAEhB;;;;OAIG;IACH,WAFU,MAAM,GAAC,IAAI,CAEJ;IAEjB;;;;OAIG;IACH,OAFU,gBAAgB,CAEK;IAkB/B;;;OAGG;IACH,cAHW,qBAAqB,GACnB,OAAO,CAMnB;IAED,eAMC;IAED;;;;;;;;;;;;;;;;;;;;;;;MAMC;IAED,0BASC;CAWJ;AAED;;;;;;;;GAQG;AACH;IAcI;;;OAGG;IACH,mBAHW,qBAAqB,EAAE,GACrB,iBAAiB,CAQ7B;IA6CD;;;OAGG;IACH,4BAFa,iBAAiB,CAM7B;IA3ED;;;;;;;;;OASG;IACH,OAFU,qBAAqB,EAAE,CAEtB;IAcX;;;OAGG;IACH,cAHW,iBAAiB,GACf,OAAO,CAiBnB;IAED,eAUC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;MAIC;IAED,0BAEC;CAWJ;;;;iCA1LgC,4CAA4C"}
@@ -1,191 +1,192 @@
1
- import { combine_hash } from "../../../../core/collection/array/combine_hash.js";
2
- import { computeStringHash } from "../../../../core/primitives/strings/computeStringHash.js";
3
- import { EventDescription } from "../../sopra/definition/EventDescription.js";
4
-
5
- /**
6
- * One trigger rule: "when this entity receives `startEvent`, play `event`; when it receives
7
- * `stopEvent`, stop what this rule started".
8
- *
9
- * The legacy `SoundController.Rule` carried `tracks[] / loop / volume / channel` alongside its event
10
- * names, and its system did the picking and the routing at trigger time. Here all four collapse into
11
- * the {@link EventDescription} itself — a random pick is a `RandomContainerAudioClip`, looping is the
12
- * clip's own loop flag, volume is `gainDb`, and the channel is `busId`. That is the whole point of the
13
- * native model: what plays is authored data, not a rule the runtime re-interprets on every trigger.
14
- */
15
- export class AudioEventTriggerRule {
16
-
17
- /**
18
- * Entity event name that starts this rule's event. Required — a rule with nothing to start does
19
- * nothing at all.
20
- * @type {string}
21
- */
22
- startEvent = "";
23
-
24
- /**
25
- * Entity event name that stops whatever this rule started, or null for a fire-and-forget rule
26
- * (a one-shot ends on its own; a looping event then lives until the component unlinks).
27
- * @type {string|null}
28
- */
29
- stopEvent = null;
30
-
31
- /**
32
- * The authored event this rule plays. Same data an {@link AudioEmitter} would hold — the difference
33
- * is only in what makes it sound: linking, versus receiving an entity event.
34
- * @type {EventDescription}
35
- */
36
- event = new EventDescription();
37
-
38
- /**
39
- * @param {string} startEvent
40
- * @param {EventDescription} event
41
- * @param {string|null} [stopEvent]
42
- * @returns {AudioEventTriggerRule}
43
- */
44
- static from(startEvent, event, stopEvent = null) {
45
- const r = new AudioEventTriggerRule();
46
-
47
- r.startEvent = startEvent;
48
- r.event = event;
49
- r.stopEvent = stopEvent;
50
-
51
- return r;
52
- }
53
-
54
- /**
55
- * @param {AudioEventTriggerRule} other
56
- * @returns {boolean}
57
- */
58
- equals(other) {
59
- return this.startEvent === other.startEvent
60
- && this.stopEvent === other.stopEvent
61
- && this.event.equals(other.event);
62
- }
63
-
64
- hash() {
65
- return combine_hash(
66
- computeStringHash(this.startEvent),
67
- this.stopEvent === null ? 0 : computeStringHash(this.stopEvent),
68
- this.event.hash()
69
- );
70
- }
71
-
72
- toJSON() {
73
- return {
74
- startEvent: this.startEvent,
75
- stopEvent: this.stopEvent,
76
- event: this.event.toJSON()
77
- };
78
- }
79
-
80
- fromJSON(json) {
81
- this.startEvent = json.startEvent !== undefined ? json.startEvent : "";
82
- this.stopEvent = json.stopEvent !== undefined && json.stopEvent !== null ? json.stopEvent : null;
83
-
84
- this.event = new EventDescription();
85
-
86
- if (json.event !== undefined) {
87
- this.event.fromJSON(json.event);
88
- }
89
- }
90
-
91
- /**
92
- * @param {*} json
93
- * @returns {AudioEventTriggerRule}
94
- */
95
- static fromJSON(json) {
96
- const r = new AudioEventTriggerRule();
97
- r.fromJSON(json);
98
- return r;
99
- }
100
- }
101
-
102
- /**
103
- * Plays authored sopra events in response to entity events — the native replacement for the legacy
104
- * `SoundController`, whose system wrote `SoundTrack`s into the entity's `SoundEmitter` and so could not
105
- * outlive it.
106
- *
107
- * Where an {@link AudioEmitter} sounds because it was linked, an `AudioEventTrigger` sounds because the
108
- * entity received an event: "unit took damage" → a hurt sound. Driven by {@link AudioEventTriggerSystem};
109
- * the entity's {@link Transform} supplies position, exactly as for an emitter.
110
- */
111
- export class AudioEventTrigger {
112
-
113
- /**
114
- * Authored rules, evaluated independently — several may listen to the same event, and each owns the
115
- * instances it started.
116
- *
117
- * Read once when the component links: the system registers one entity-event listener per rule then,
118
- * so mutating this array on a linked component has no effect until it is re-linked (remove and
119
- * re-add the component), which mirrors {@link AudioEmitter.event}.
120
- *
121
- * @type {AudioEventTriggerRule[]}
122
- */
123
- rules = [];
124
-
125
- /**
126
- * @param {AudioEventTriggerRule[]} rules
127
- * @returns {AudioEventTrigger}
128
- */
129
- static from(rules) {
130
- const r = new AudioEventTrigger();
131
-
132
- r.rules = rules;
133
-
134
- return r;
135
- }
136
-
137
- /**
138
- * @param {AudioEventTrigger} other
139
- * @returns {boolean}
140
- */
141
- equals(other) {
142
- const rules = this.rules;
143
- const otherRules = other.rules;
144
-
145
- if (rules.length !== otherRules.length) {
146
- return false;
147
- }
148
-
149
- for (let i = 0; i < rules.length; i++) {
150
- if (!rules[i].equals(otherRules[i])) {
151
- return false;
152
- }
153
- }
154
-
155
- return true;
156
- }
157
-
158
- hash() {
159
- const rules = this.rules;
160
-
161
- let hash = rules.length;
162
-
163
- for (let i = 0; i < rules.length; i++) {
164
- hash = combine_hash(hash, rules[i].hash());
165
- }
166
-
167
- return hash;
168
- }
169
-
170
- toJSON() {
171
- return {
172
- rules: this.rules.map(rule => rule.toJSON())
173
- };
174
- }
175
-
176
- fromJSON(json) {
177
- this.rules = json.rules === undefined ? [] : json.rules.map(AudioEventTriggerRule.fromJSON);
178
- }
179
-
180
- /**
181
- * @param {*} json
182
- * @returns {AudioEventTrigger}
183
- */
184
- static fromJSON(json) {
185
- const r = new AudioEventTrigger();
186
- r.fromJSON(json);
187
- return r;
188
- }
189
- }
190
-
191
- AudioEventTrigger.typeName = "AudioEventTrigger";
1
+ import { hash_mix2 } from "../../../../core/math/hash/hash_mix2.js";
2
+ import { hash_mix3 } from "../../../../core/math/hash/hash_mix3.js";
3
+ import { computeStringHash } from "../../../../core/primitives/strings/computeStringHash.js";
4
+ import { EventDescription } from "../../sopra/definition/EventDescription.js";
5
+
6
+ /**
7
+ * One trigger rule: "when this entity receives `startEvent`, play `event`; when it receives
8
+ * `stopEvent`, stop what this rule started".
9
+ *
10
+ * The legacy `SoundController.Rule` carried `tracks[] / loop / volume / channel` alongside its event
11
+ * names, and its system did the picking and the routing at trigger time. Here all four collapse into
12
+ * the {@link EventDescription} itself — a random pick is a `RandomContainerAudioClip`, looping is the
13
+ * clip's own loop flag, volume is `gainDb`, and the channel is `busId`. That is the whole point of the
14
+ * native model: what plays is authored data, not a rule the runtime re-interprets on every trigger.
15
+ */
16
+ export class AudioEventTriggerRule {
17
+
18
+ /**
19
+ * Entity event name that starts this rule's event. Required — a rule with nothing to start does
20
+ * nothing at all.
21
+ * @type {string}
22
+ */
23
+ startEvent = "";
24
+
25
+ /**
26
+ * Entity event name that stops whatever this rule started, or null for a fire-and-forget rule
27
+ * (a one-shot ends on its own; a looping event then lives until the component unlinks).
28
+ * @type {string|null}
29
+ */
30
+ stopEvent = null;
31
+
32
+ /**
33
+ * The authored event this rule plays. Same data an {@link AudioEmitter} would hold — the difference
34
+ * is only in what makes it sound: linking, versus receiving an entity event.
35
+ * @type {EventDescription}
36
+ */
37
+ event = new EventDescription();
38
+
39
+ /**
40
+ * @param {string} startEvent
41
+ * @param {EventDescription} event
42
+ * @param {string|null} [stopEvent]
43
+ * @returns {AudioEventTriggerRule}
44
+ */
45
+ static from(startEvent, event, stopEvent = null) {
46
+ const r = new AudioEventTriggerRule();
47
+
48
+ r.startEvent = startEvent;
49
+ r.event = event;
50
+ r.stopEvent = stopEvent;
51
+
52
+ return r;
53
+ }
54
+
55
+ /**
56
+ * @param {AudioEventTriggerRule} other
57
+ * @returns {boolean}
58
+ */
59
+ equals(other) {
60
+ return this.startEvent === other.startEvent
61
+ && this.stopEvent === other.stopEvent
62
+ && this.event.equals(other.event);
63
+ }
64
+
65
+ hash() {
66
+ return hash_mix3(
67
+ computeStringHash(this.startEvent),
68
+ this.stopEvent === null ? 0 : computeStringHash(this.stopEvent),
69
+ this.event.hash()
70
+ );
71
+ }
72
+
73
+ toJSON() {
74
+ return {
75
+ startEvent: this.startEvent,
76
+ stopEvent: this.stopEvent,
77
+ event: this.event.toJSON()
78
+ };
79
+ }
80
+
81
+ fromJSON(json) {
82
+ this.startEvent = json.startEvent !== undefined ? json.startEvent : "";
83
+ this.stopEvent = json.stopEvent !== undefined && json.stopEvent !== null ? json.stopEvent : null;
84
+
85
+ this.event = new EventDescription();
86
+
87
+ if (json.event !== undefined) {
88
+ this.event.fromJSON(json.event);
89
+ }
90
+ }
91
+
92
+ /**
93
+ * @param {*} json
94
+ * @returns {AudioEventTriggerRule}
95
+ */
96
+ static fromJSON(json) {
97
+ const r = new AudioEventTriggerRule();
98
+ r.fromJSON(json);
99
+ return r;
100
+ }
101
+ }
102
+
103
+ /**
104
+ * Plays authored sopra events in response to entity events — the native replacement for the legacy
105
+ * `SoundController`, whose system wrote `SoundTrack`s into the entity's `SoundEmitter` and so could not
106
+ * outlive it.
107
+ *
108
+ * Where an {@link AudioEmitter} sounds because it was linked, an `AudioEventTrigger` sounds because the
109
+ * entity received an event: "unit took damage" → a hurt sound. Driven by {@link AudioEventTriggerSystem};
110
+ * the entity's {@link Transform} supplies position, exactly as for an emitter.
111
+ */
112
+ export class AudioEventTrigger {
113
+
114
+ /**
115
+ * Authored rules, evaluated independently — several may listen to the same event, and each owns the
116
+ * instances it started.
117
+ *
118
+ * Read once when the component links: the system registers one entity-event listener per rule then,
119
+ * so mutating this array on a linked component has no effect until it is re-linked (remove and
120
+ * re-add the component), which mirrors {@link AudioEmitter.event}.
121
+ *
122
+ * @type {AudioEventTriggerRule[]}
123
+ */
124
+ rules = [];
125
+
126
+ /**
127
+ * @param {AudioEventTriggerRule[]} rules
128
+ * @returns {AudioEventTrigger}
129
+ */
130
+ static from(rules) {
131
+ const r = new AudioEventTrigger();
132
+
133
+ r.rules = rules;
134
+
135
+ return r;
136
+ }
137
+
138
+ /**
139
+ * @param {AudioEventTrigger} other
140
+ * @returns {boolean}
141
+ */
142
+ equals(other) {
143
+ const rules = this.rules;
144
+ const otherRules = other.rules;
145
+
146
+ if (rules.length !== otherRules.length) {
147
+ return false;
148
+ }
149
+
150
+ for (let i = 0; i < rules.length; i++) {
151
+ if (!rules[i].equals(otherRules[i])) {
152
+ return false;
153
+ }
154
+ }
155
+
156
+ return true;
157
+ }
158
+
159
+ hash() {
160
+ const rules = this.rules;
161
+
162
+ let hash = rules.length;
163
+
164
+ for (let i = 0; i < rules.length; i++) {
165
+ hash = hash_mix2(hash, rules[i].hash());
166
+ }
167
+
168
+ return hash;
169
+ }
170
+
171
+ toJSON() {
172
+ return {
173
+ rules: this.rules.map(rule => rule.toJSON())
174
+ };
175
+ }
176
+
177
+ fromJSON(json) {
178
+ this.rules = json.rules === undefined ? [] : json.rules.map(AudioEventTriggerRule.fromJSON);
179
+ }
180
+
181
+ /**
182
+ * @param {*} json
183
+ * @returns {AudioEventTrigger}
184
+ */
185
+ static fromJSON(json) {
186
+ const r = new AudioEventTrigger();
187
+ r.fromJSON(json);
188
+ return r;
189
+ }
190
+ }
191
+
192
+ AudioEventTrigger.typeName = "AudioEventTrigger";
@@ -1,4 +1,4 @@
1
- import { combine_hash } from "../../../../core/collection/array/combine_hash.js";
1
+ import { hash_mix3 } from "../../../../core/math/hash/hash_mix3.js";
2
2
  import { computeHashFloat } from "../../../../core/primitives/numbers/computeHashFloat.js";
3
3
 
4
4
  /**
@@ -80,7 +80,7 @@ export class AcousticMedium {
80
80
  }
81
81
 
82
82
  hash() {
83
- return combine_hash(
83
+ return hash_mix3(
84
84
  computeHashFloat(this.airAbsorption[0]),
85
85
  computeHashFloat(this.airAbsorption[1]),
86
86
  computeHashFloat(this.airAbsorption[2])
@@ -1,4 +1,4 @@
1
- import { combine_hash } from "../../../../core/collection/array/combine_hash.js";
1
+ import { hash_mix2 } from "../../../../core/math/hash/hash_mix2.js";
2
2
  import { computeHashFloat } from "../../../../core/primitives/numbers/computeHashFloat.js";
3
3
 
4
4
  /**
@@ -79,7 +79,7 @@ export class AcousticDirectivity {
79
79
  }
80
80
 
81
81
  hash() {
82
- return combine_hash(
82
+ return hash_mix2(
83
83
  computeHashFloat(this.dipoleWeight),
84
84
  computeHashFloat(this.dipolePower)
85
85
  );
@@ -1 +1 @@
1
- {"version":3,"file":"AcousticMaterial.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/simulation/definition/AcousticMaterial.js"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH;IA4BI;;;OAGG;IACH,uDAHW;QAAC,UAAU,CAAC,EAAC,MAAM,EAAE,GAAC,YAAY,CAAC;QAAC,UAAU,CAAC,EAAC,MAAM,CAAC;QAAC,YAAY,CAAC,EAAC,MAAM,EAAE,GAAC,YAAY,CAAA;KAAC,GAC1F,gBAAgB,CAsB5B;IAnDD;;;;OAIG;IACH,YAFU,YAAY,CAEyB;IAE/C;;;OAGG;IACH,YAFU,MAAM,CAEC;IAEjB;;;;;;;;;;;OAWG;IACH,cAFU,YAAY,CAEqB;IA4B3C;;;OAGG;IACH,cAHW,gBAAgB,GACd,OAAO,CAUnB;IAED,eAUC;IAED;;OAEG;IACH,SAFa,gBAAgB,CAc5B;IAED;;;;MAMC;IAED;;OAEG;IACH,mDAFW;QAAC,UAAU,EAAC,MAAM,EAAE,CAAC;QAAC,UAAU,EAAC,MAAM,CAAC;QAAC,YAAY,EAAC,MAAM,EAAE,CAAA;KAAC,QAUzE;CACJ"}
1
+ {"version":3,"file":"AcousticMaterial.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/simulation/definition/AcousticMaterial.js"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH;IA4BI;;;OAGG;IACH,uDAHW;QAAC,UAAU,CAAC,EAAC,MAAM,EAAE,GAAC,YAAY,CAAC;QAAC,UAAU,CAAC,EAAC,MAAM,CAAC;QAAC,YAAY,CAAC,EAAC,MAAM,EAAE,GAAC,YAAY,CAAA;KAAC,GAC1F,gBAAgB,CAsB5B;IAnDD;;;;OAIG;IACH,YAFU,YAAY,CAEyB;IAE/C;;;OAGG;IACH,YAFU,MAAM,CAEC;IAEjB;;;;;;;;;;;OAWG;IACH,cAFU,YAAY,CAEqB;IA4B3C;;;OAGG;IACH,cAHW,gBAAgB,GACd,OAAO,CAUnB;IAED,eAcC;IAED;;OAEG;IACH,SAFa,gBAAgB,CAc5B;IAED;;;;MAMC;IAED;;OAEG;IACH,mDAFW;QAAC,UAAU,EAAC,MAAM,EAAE,CAAC;QAAC,UAAU,EAAC,MAAM,CAAC;QAAC,YAAY,EAAC,MAAM,EAAE,CAAA;KAAC,QAUzE;CACJ"}
@@ -1,4 +1,4 @@
1
- import { combine_hash } from "../../../../core/collection/array/combine_hash.js";
1
+ import { hash_mix3 } from "../../../../core/math/hash/hash_mix3.js";
2
2
  import { computeHashFloat } from "../../../../core/primitives/numbers/computeHashFloat.js";
3
3
 
4
4
  /**
@@ -77,12 +77,16 @@ export class AcousticMaterial {
77
77
  }
78
78
 
79
79
  hash() {
80
- return combine_hash(
81
- computeHashFloat(this.absorption[0]),
82
- computeHashFloat(this.absorption[1]),
83
- computeHashFloat(this.absorption[2]),
84
- computeHashFloat(this.scattering),
85
- computeHashFloat(this.transmission[0]),
80
+ return hash_mix3(
81
+ hash_mix3(
82
+ hash_mix3(
83
+ computeHashFloat(this.absorption[0]),
84
+ computeHashFloat(this.absorption[1]),
85
+ computeHashFloat(this.absorption[2])
86
+ ),
87
+ computeHashFloat(this.scattering),
88
+ computeHashFloat(this.transmission[0])
89
+ ),
86
90
  computeHashFloat(this.transmission[1]),
87
91
  computeHashFloat(this.transmission[2])
88
92
  );