@woosh/meep-engine 2.156.0 → 2.158.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 (695) hide show
  1. package/README.md +1 -3
  2. package/editor/view/ecs/components/common/AutoCanvasView.js +100 -53
  3. package/editor/view/ecs/components/common/TextController.js +59 -0
  4. package/editor/view/node-graph/NodeGraphCamera.js +90 -0
  5. package/editor/view/node-graph/NodeGraphEditorView.js +121 -22
  6. package/editor/view/node-graph/NodeGraphSelection.js +89 -0
  7. package/editor/view/node-graph/NodeGraphView.js +669 -453
  8. package/editor/view/node-graph/NodeView.js +211 -135
  9. package/editor/view/node-graph/actions/ConnectionCreateAction.js +53 -0
  10. package/editor/view/node-graph/actions/ConnectionDeleteAction.js +36 -0
  11. package/editor/view/node-graph/actions/NodeDeleteAction.js +88 -0
  12. package/editor/view/node-graph/actions/NodeParameterSetAction.js +52 -0
  13. package/editor/view/node-graph/actions/NodesMoveAction.js +41 -0
  14. package/editor/view/node-graph/actions/SelectionSetAction.js +60 -0
  15. package/editor/view/node-graph/connection_wire_geometry.js +107 -0
  16. package/package.json +1 -1
  17. package/samples/generation/SampleGenerator0.js +8 -1
  18. package/src/core/binary/reinterpret_float32_as_uint32.d.ts +7 -0
  19. package/src/core/binary/reinterpret_float32_as_uint32.d.ts.map +1 -0
  20. package/src/core/binary/reinterpret_float32_as_uint32.js +13 -0
  21. package/src/core/binary/reinterpret_uint32_as_float32.d.ts +7 -0
  22. package/src/core/binary/reinterpret_uint32_as_float32.d.ts.map +1 -0
  23. package/src/core/binary/reinterpret_uint32_as_float32.js +14 -0
  24. package/src/core/bvh2/bvh3/ebvh_build_for_geometry_incremental.d.ts.map +1 -1
  25. package/src/core/bvh2/bvh3/ebvh_build_for_geometry_incremental.js +1 -3
  26. package/src/core/bvh2/bvh3/query/bvh_query_user_data_overlaps_sphere.d.ts +12 -0
  27. package/src/core/bvh2/bvh3/query/bvh_query_user_data_overlaps_sphere.d.ts.map +1 -0
  28. package/src/core/bvh2/bvh3/query/bvh_query_user_data_overlaps_sphere.js +92 -0
  29. package/src/core/bvh8/BVH8.d.ts +127 -0
  30. package/src/core/bvh8/BVH8.d.ts.map +1 -0
  31. package/src/core/bvh8/BVH8.js +436 -0
  32. package/src/core/bvh8/NOTES.md +63 -0
  33. package/src/core/bvh8/build/BVH8Converter.d.ts +59 -0
  34. package/src/core/bvh8/build/BVH8Converter.d.ts.map +1 -0
  35. package/src/core/bvh8/build/BVH8Converter.js +588 -0
  36. package/src/core/bvh8/build/NodeProxy.d.ts +66 -0
  37. package/src/core/bvh8/build/NodeProxy.d.ts.map +1 -0
  38. package/src/core/bvh8/build/NodeProxy.js +308 -0
  39. package/src/core/bvh8/build/TriangleCluster.d.ts +29 -0
  40. package/src/core/bvh8/build/TriangleCluster.d.ts.map +1 -0
  41. package/src/core/bvh8/build/TriangleCluster.js +123 -0
  42. package/src/core/bvh8/build/aabb3_compute_merge_cost.d.ts +8 -0
  43. package/src/core/bvh8/build/aabb3_compute_merge_cost.d.ts.map +1 -0
  44. package/src/core/bvh8/build/aabb3_compute_merge_cost.js +29 -0
  45. package/src/core/bvh8/build/aabb3_from_triangle_by_index.d.ts +10 -0
  46. package/src/core/bvh8/build/aabb3_from_triangle_by_index.d.ts.map +1 -0
  47. package/src/core/bvh8/build/aabb3_from_triangle_by_index.js +18 -0
  48. package/src/core/bvh8/build/bvh8_build_for_geometry.d.ts +10 -0
  49. package/src/core/bvh8/build/bvh8_build_for_geometry.d.ts.map +1 -0
  50. package/src/core/bvh8/build/bvh8_build_for_geometry.js +303 -0
  51. package/src/core/bvh8/build/bvh8_from_proxy.d.ts +9 -0
  52. package/src/core/bvh8/build/bvh8_from_proxy.d.ts.map +1 -0
  53. package/src/core/bvh8/build/bvh8_from_proxy.js +256 -0
  54. package/src/core/bvh8/build/byte.d.ts +7 -0
  55. package/src/core/bvh8/build/byte.d.ts.map +1 -0
  56. package/src/core/bvh8/build/byte.js +10 -0
  57. package/src/core/bvh8/build/encode_bounds_e.d.ts +9 -0
  58. package/src/core/bvh8/build/encode_bounds_e.d.ts.map +1 -0
  59. package/src/core/bvh8/build/encode_bounds_e.js +12 -0
  60. package/src/core/bvh8/bvh8_convert_to_dot.d.ts +11 -0
  61. package/src/core/bvh8/bvh8_convert_to_dot.d.ts.map +1 -0
  62. package/src/core/bvh8/bvh8_convert_to_dot.js +133 -0
  63. package/src/core/bvh8/bvh8_count_primitives.d.ts +22 -0
  64. package/src/core/bvh8/bvh8_count_primitives.d.ts.map +1 -0
  65. package/src/core/bvh8/bvh8_count_primitives.js +98 -0
  66. package/src/core/bvh8/bvh8_geometry_validate.d.ts +16 -0
  67. package/src/core/bvh8/bvh8_geometry_validate.d.ts.map +1 -0
  68. package/src/core/bvh8/bvh8_geometry_validate.js +149 -0
  69. package/src/core/bvh8/bvh8_geometry_validate_indirect.d.ts +16 -0
  70. package/src/core/bvh8/bvh8_geometry_validate_indirect.d.ts.map +1 -0
  71. package/src/core/bvh8/bvh8_geometry_validate_indirect.js +177 -0
  72. package/src/core/bvh8/bvh8_get_node_bounds.d.ts +9 -0
  73. package/src/core/bvh8/bvh8_get_node_bounds.d.ts.map +1 -0
  74. package/src/core/bvh8/bvh8_get_node_bounds.js +35 -0
  75. package/src/core/bvh8/bvh8_get_node_child_bounds.d.ts +10 -0
  76. package/src/core/bvh8/bvh8_get_node_child_bounds.d.ts.map +1 -0
  77. package/src/core/bvh8/bvh8_get_node_child_bounds.js +53 -0
  78. package/src/core/bvh8/bvh8_node_child_surface_area.d.ts +9 -0
  79. package/src/core/bvh8/bvh8_node_child_surface_area.d.ts.map +1 -0
  80. package/src/core/bvh8/bvh8_node_child_surface_area.js +18 -0
  81. package/src/core/bvh8/bvh8_node_count_triangles.d.ts +8 -0
  82. package/src/core/bvh8/bvh8_node_count_triangles.d.ts.map +1 -0
  83. package/src/core/bvh8/bvh8_node_count_triangles.js +28 -0
  84. package/src/core/bvh8/bvh8_quality.d.ts +8 -0
  85. package/src/core/bvh8/bvh8_quality.d.ts.map +1 -0
  86. package/src/core/bvh8/bvh8_quality.js +73 -0
  87. package/src/core/bvh8/bvh8_validate_structure.d.ts +15 -0
  88. package/src/core/bvh8/bvh8_validate_structure.d.ts.map +1 -0
  89. package/src/core/bvh8/bvh8_validate_structure.js +87 -0
  90. package/src/core/collection/Uint32MinHeap.d.ts +56 -0
  91. package/src/core/collection/Uint32MinHeap.d.ts.map +1 -0
  92. package/src/core/collection/Uint32MinHeap.js +109 -0
  93. package/src/core/collection/list/FilteredListProjection.js +1 -1
  94. package/src/{engine/physics/island → core/collection/union-find}/union_find.d.ts +8 -5
  95. package/src/core/collection/union-find/union_find.d.ts.map +1 -0
  96. package/src/{engine/physics/island → core/collection/union-find}/union_find.js +8 -5
  97. package/src/core/dom/isImageBitmap.d.ts +7 -0
  98. package/src/core/dom/isImageBitmap.d.ts.map +1 -0
  99. package/src/core/dom/isImageBitmap.js +12 -0
  100. package/src/core/function/frameThrottle.d.ts +8 -0
  101. package/src/core/function/frameThrottle.d.ts.map +1 -0
  102. package/src/core/function/frameThrottle.js +23 -0
  103. package/src/{engine/physics/narrowphase/clip_against_axis_uv.d.ts → core/geom/2d/polygon/polygon2_clip_axis_halfplane.d.ts} +3 -3
  104. package/src/core/geom/2d/polygon/polygon2_clip_axis_halfplane.d.ts.map +1 -0
  105. package/src/{engine/physics/narrowphase/clip_against_axis_uv.js → core/geom/2d/polygon/polygon2_clip_axis_halfplane.js} +51 -51
  106. package/src/{engine/physics/narrowphase/decomposition/aabb_world_to_local.d.ts → core/geom/3d/aabb/aabb3_transform_oriented_inverse.d.ts} +9 -7
  107. package/src/core/geom/3d/aabb/aabb3_transform_oriented_inverse.d.ts.map +1 -0
  108. package/src/{engine/physics/narrowphase/decomposition/aabb_world_to_local.js → core/geom/3d/aabb/aabb3_transform_oriented_inverse.js} +9 -7
  109. package/src/core/geom/3d/aabb/compute_triangle_group_aabb3.d.ts +12 -0
  110. package/src/core/geom/3d/aabb/compute_triangle_group_aabb3.d.ts.map +1 -0
  111. package/src/core/geom/3d/aabb/compute_triangle_group_aabb3.js +46 -0
  112. package/src/core/geom/3d/box/box3_projected_half_extent.d.ts +28 -0
  113. package/src/core/geom/3d/box/box3_projected_half_extent.d.ts.map +1 -0
  114. package/src/core/geom/3d/box/box3_projected_half_extent.js +35 -0
  115. package/src/core/geom/3d/frustum/read_cluster_frustum_corners.js +1 -1
  116. package/src/core/geom/3d/frustum/read_frustum_corner.d.ts +9 -0
  117. package/src/core/geom/3d/frustum/read_frustum_corner.d.ts.map +1 -0
  118. package/src/core/geom/3d/frustum/read_frustum_corner.js +14 -0
  119. package/src/core/geom/3d/gjk/gjk.d.ts.map +1 -0
  120. package/src/{engine/physics → core/geom/3d}/gjk/gjk.js +430 -372
  121. package/src/{engine/physics → core/geom/3d}/gjk/gjk_epa_penetration.d.ts +8 -5
  122. package/src/core/geom/3d/gjk/gjk_epa_penetration.d.ts.map +1 -0
  123. package/src/{engine/physics → core/geom/3d}/gjk/gjk_epa_penetration.js +520 -544
  124. package/src/{engine/physics → core/geom/3d}/gjk/minkowski_support.d.ts +5 -4
  125. package/src/core/geom/3d/gjk/minkowski_support.d.ts.map +1 -0
  126. package/src/{engine/physics → core/geom/3d}/gjk/minkowski_support.js +71 -70
  127. package/src/{engine/physics → core/geom/3d}/gjk/mpr.d.ts +3 -3
  128. package/src/core/geom/3d/gjk/mpr.d.ts.map +1 -0
  129. package/src/{engine/physics → core/geom/3d}/gjk/mpr.js +368 -362
  130. package/src/{engine/physics/integration/quat_integrate.d.ts → core/geom/3d/quaternion/quat3_integrate.d.ts} +2 -2
  131. package/src/core/geom/3d/quaternion/quat3_integrate.d.ts.map +1 -0
  132. package/src/{engine/physics/integration/quat_integrate.js → core/geom/3d/quaternion/quat3_integrate.js} +1 -1
  133. package/src/{engine/physics/narrowphase/PosedShape.d.ts → core/geom/3d/shape/PosedShape3D.d.ts} +26 -8
  134. package/src/core/geom/3d/shape/PosedShape3D.d.ts.map +1 -0
  135. package/src/{engine/physics/narrowphase/PosedShape.js → core/geom/3d/shape/PosedShape3D.js} +60 -9
  136. package/src/core/geom/3d/shape/TransformedShape3D.d.ts.map +1 -1
  137. package/src/core/geom/3d/shape/TransformedShape3D.js +15 -11
  138. package/src/core/geom/vec3/v3_quat3_apply_inverse.d.ts +1 -1
  139. package/src/core/geom/vec3/v3_quat3_apply_inverse.js +1 -1
  140. package/src/core/math/complex/complex_add.d.ts +1 -1
  141. package/src/core/math/complex/complex_add.d.ts.map +1 -1
  142. package/src/core/math/complex/complex_add.js +12 -3
  143. package/src/core/math/complex/complex_div.d.ts +1 -1
  144. package/src/core/math/complex/complex_div.d.ts.map +1 -1
  145. package/src/core/math/complex/complex_div.js +11 -4
  146. package/src/core/math/complex/complex_mul.d.ts +1 -1
  147. package/src/core/math/complex/complex_mul.d.ts.map +1 -1
  148. package/src/core/math/complex/complex_mul.js +10 -3
  149. package/src/core/math/complex/complex_sub.d.ts +1 -1
  150. package/src/core/math/complex/complex_sub.d.ts.map +1 -1
  151. package/src/core/math/complex/complex_sub.js +12 -3
  152. package/src/{engine/physics/fluid/solver/optimal_sor_omega.d.ts → core/math/linalg/sor_optimal_omega.d.ts} +4 -3
  153. package/src/core/math/linalg/sor_optimal_omega.d.ts.map +1 -0
  154. package/src/{engine/physics/fluid/solver/optimal_sor_omega.js → core/math/linalg/sor_optimal_omega.js} +4 -3
  155. package/src/core/math/lookup/ParameterLookupTable.d.ts +123 -0
  156. package/src/core/math/lookup/ParameterLookupTable.d.ts.map +1 -0
  157. package/src/core/math/lookup/ParameterLookupTable.js +495 -0
  158. package/src/core/math/lookup/ParameterLookupTableFlags.d.ts +5 -0
  159. package/src/core/math/lookup/ParameterLookupTableFlags.d.ts.map +1 -0
  160. package/src/core/math/lookup/ParameterLookupTableFlags.js +6 -0
  161. package/src/core/math/physics/kinematics/computeInterceptPoint.d.ts.map +1 -0
  162. package/src/{engine/physics → core/math/physics/kinematics}/computeInterceptPoint.js +79 -79
  163. package/src/core/math/physics/mie/ri_air.d.ts.map +1 -1
  164. package/src/core/math/physics/mie/ri_air.js +1 -3
  165. package/src/core/math/physics/mie/ri_ammonium_sulfate.d.ts.map +1 -1
  166. package/src/core/math/physics/mie/ri_ammonium_sulfate.js +1 -3
  167. package/src/core/math/physics/mie/ri_brine.d.ts.map +1 -1
  168. package/src/core/math/physics/mie/ri_brine.js +1 -3
  169. package/src/core/math/physics/mie/ri_dust.d.ts.map +1 -1
  170. package/src/core/math/physics/mie/ri_dust.js +1 -3
  171. package/src/core/math/physics/mie/ri_pollen.d.ts.map +1 -1
  172. package/src/core/math/physics/mie/ri_pollen.js +1 -3
  173. package/src/core/math/physics/mie/ri_smoke.d.ts.map +1 -1
  174. package/src/core/math/physics/mie/ri_smoke.js +1 -3
  175. package/src/core/math/physics/mie/ri_soot.d.ts.map +1 -1
  176. package/src/core/math/physics/mie/ri_soot.js +1 -3
  177. package/src/core/math/physics/mie/ri_water.d.ts.map +1 -1
  178. package/src/core/math/physics/mie/ri_water.js +1 -3
  179. package/src/core/math/random/random_pick_weighted_index.d.ts +10 -0
  180. package/src/core/math/random/random_pick_weighted_index.d.ts.map +1 -0
  181. package/src/core/math/random/random_pick_weighted_index.js +26 -0
  182. package/src/core/model/node-graph/NodeGraph.d.ts +9 -0
  183. package/src/core/model/node-graph/NodeGraph.d.ts.map +1 -1
  184. package/src/core/model/node-graph/NodeGraph.js +38 -0
  185. package/src/core/model/node-graph/visual/NodeGraphVisualData.d.ts +23 -0
  186. package/src/core/model/node-graph/visual/NodeGraphVisualData.d.ts.map +1 -1
  187. package/src/core/model/node-graph/visual/NodeGraphVisualData.js +54 -0
  188. package/src/core/path/convertPathToURL.d.ts +9 -0
  189. package/src/core/path/convertPathToURL.d.ts.map +1 -0
  190. package/src/core/path/convertPathToURL.js +107 -0
  191. package/src/core/process/worker/WorkerBuilder.js +1 -1
  192. package/src/core/process/worker/extractTransferables.js +1 -1
  193. package/src/engine/animation/curve/draw/build_tangent_editor.d.ts.map +1 -1
  194. package/src/engine/animation/curve/draw/build_tangent_editor.js +8 -1
  195. package/src/engine/animation/curve/editor/createKeyframeDraggableAspect.d.ts.map +1 -1
  196. package/src/engine/animation/curve/editor/createKeyframeDraggableAspect.js +11 -5
  197. package/src/engine/asset/Asset.d.ts.map +1 -1
  198. package/src/engine/asset/Asset.js +16 -6
  199. package/src/engine/asset/AssetManager.d.ts +61 -52
  200. package/src/engine/asset/AssetManager.d.ts.map +1 -1
  201. package/src/engine/asset/AssetManager.js +1411 -1045
  202. package/src/engine/asset/AssetRequest.d.ts +1 -1
  203. package/src/engine/asset/AssetRequest.d.ts.map +1 -1
  204. package/src/engine/asset/AssetRequest.js +1 -1
  205. package/src/engine/asset/AssetRequestScope.d.ts.map +1 -1
  206. package/src/engine/asset/AssetRequestScope.js +7 -0
  207. package/src/engine/asset/PendingAsset.d.ts +32 -1
  208. package/src/engine/asset/PendingAsset.d.ts.map +1 -1
  209. package/src/engine/asset/PendingAsset.js +108 -61
  210. package/src/engine/asset/loaders/ArrayBufferLoader.js +2 -2
  211. package/src/engine/asset/loaders/AssetLoader.d.ts.map +1 -1
  212. package/src/engine/asset/loaders/AssetLoader.js +19 -2
  213. package/src/engine/asset/loaders/GLTFAssetLoader.d.ts.map +1 -1
  214. package/src/engine/asset/loaders/GLTFAssetLoader.js +123 -114
  215. package/src/engine/asset/loaders/JavascriptAssetLoader.d.ts +1 -1
  216. package/src/engine/asset/loaders/JavascriptAssetLoader.d.ts.map +1 -1
  217. package/src/engine/asset/loaders/JavascriptAssetLoader.js +31 -47
  218. package/src/engine/asset/loaders/JsonAssetLoader.js +1 -1
  219. package/src/engine/asset/loaders/SVGAssetLoader.js +2 -2
  220. package/src/engine/asset/loaders/SoundAssetLoader.js +1 -1
  221. package/src/engine/asset/loaders/TextAssetLoader.js +2 -2
  222. package/src/{core → engine/asset/loaders}/font/FontAsset.d.ts +1 -1
  223. package/src/engine/asset/loaders/font/FontAsset.d.ts.map +1 -0
  224. package/src/{core → engine/asset/loaders}/font/FontAsset.js +21 -21
  225. package/src/{core → engine/asset/loaders}/font/FontAssetLoader.d.ts +1 -1
  226. package/src/engine/asset/loaders/font/FontAssetLoader.d.ts.map +1 -0
  227. package/src/{core → engine/asset/loaders}/font/FontAssetLoader.js +20 -20
  228. package/src/engine/asset/loaders/image/ImageRGBADataLoader.d.ts +1 -1
  229. package/src/engine/asset/loaders/image/ImageRGBADataLoader.d.ts.map +1 -1
  230. package/src/engine/asset/loaders/image/ImageRGBADataLoader.js +11 -20
  231. package/src/engine/asset/loaders/texture/TextureAssetLoader.d.ts.map +1 -1
  232. package/src/engine/asset/loaders/texture/TextureAssetLoader.js +8 -2
  233. package/src/engine/asset/preloader/AssetPreloader.js +1 -1
  234. package/src/engine/ecs/sockets/serialization/AttachmentSocketsAssetLoader.d.ts +1 -1
  235. package/src/engine/ecs/sockets/serialization/AttachmentSocketsAssetLoader.d.ts.map +1 -1
  236. package/src/engine/ecs/sockets/serialization/AttachmentSocketsAssetLoader.js +19 -22
  237. package/src/engine/graphics/FrameThrottle.d.ts +1 -7
  238. package/src/engine/graphics/FrameThrottle.d.ts.map +1 -1
  239. package/src/engine/graphics/FrameThrottle.js +2 -24
  240. package/src/{core/geom/3d/shape/util → engine/graphics/debug}/shape_to_visual_entity.d.ts +1 -1
  241. package/src/engine/graphics/debug/shape_to_visual_entity.d.ts.map +1 -0
  242. package/src/{core/geom/3d/shape/util → engine/graphics/debug}/shape_to_visual_entity.js +159 -159
  243. package/src/{core/geom/3d/tetrahedra → engine/graphics/debug}/visualize_tetrahedral_mesh.d.ts +1 -1
  244. package/src/engine/graphics/debug/visualize_tetrahedral_mesh.d.ts.map +1 -0
  245. package/src/{core/geom/3d/tetrahedra → engine/graphics/debug}/visualize_tetrahedral_mesh.js +46 -46
  246. package/src/engine/graphics/ecs/animation/animator/graph/definition/serialization/AnimationGraphDefinitionAssetLoader.d.ts +1 -1
  247. package/src/engine/graphics/ecs/animation/animator/graph/definition/serialization/AnimationGraphDefinitionAssetLoader.d.ts.map +1 -1
  248. package/src/engine/graphics/ecs/animation/animator/graph/definition/serialization/AnimationGraphDefinitionAssetLoader.js +22 -32
  249. package/src/engine/graphics/ecs/trail2d/Trail2D.d.ts.map +1 -1
  250. package/src/engine/graphics/ecs/trail2d/Trail2D.js +21 -0
  251. package/src/engine/graphics/ecs/trail2d/Trail2DFlags.d.ts +1 -0
  252. package/src/engine/graphics/ecs/trail2d/Trail2DFlags.js +9 -1
  253. package/src/engine/graphics/particles/particular/engine/emitter/serde/ParameterLookupTableSerializationAdapter.d.ts.map +1 -1
  254. package/src/engine/graphics/particles/particular/engine/emitter/serde/ParameterLookupTableSerializationAdapter.js +2 -76
  255. package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTable.d.ts.map +1 -1
  256. package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTable.js +2 -427
  257. package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTableFlags.d.ts +1 -4
  258. package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTableFlags.d.ts.map +1 -1
  259. package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTableFlags.js +2 -6
  260. package/src/engine/graphics/particles/particular/engine/utils/volume/prototypeParticleVolume.js +1 -1
  261. package/src/engine/graphics/render/forward_plus/read_frustum_corner.d.ts +1 -8
  262. package/src/engine/graphics/render/forward_plus/read_frustum_corner.d.ts.map +1 -1
  263. package/src/engine/graphics/render/forward_plus/read_frustum_corner.js +2 -14
  264. package/src/engine/graphics/sh3/path_tracer/geometry/compute_triangle_group_aabb3.d.ts +1 -11
  265. package/src/engine/graphics/sh3/path_tracer/geometry/compute_triangle_group_aabb3.d.ts.map +1 -1
  266. package/src/engine/graphics/sh3/path_tracer/geometry/compute_triangle_group_aabb3.js +2 -46
  267. package/src/engine/graphics/sh3/prototypeSH3Probe.js +1 -1
  268. package/src/engine/graphics/texture/3d/scs3d_sample_linear3.d.ts +27 -0
  269. package/src/engine/graphics/texture/3d/scs3d_sample_linear3.d.ts.map +1 -0
  270. package/src/engine/graphics/texture/3d/scs3d_sample_linear3.js +81 -0
  271. package/src/engine/graphics/texture/isImageBitmap.d.ts +1 -6
  272. package/src/engine/graphics/texture/isImageBitmap.d.ts.map +1 -1
  273. package/src/engine/graphics/texture/isImageBitmap.js +2 -12
  274. package/src/{core/process/action → engine/intelligence/behavior/util}/AsynchronousDelayAction.d.ts +2 -2
  275. package/src/engine/intelligence/behavior/util/AsynchronousDelayAction.d.ts.map +1 -0
  276. package/src/{core/process/action → engine/intelligence/behavior/util}/AsynchronousDelayAction.js +55 -55
  277. package/src/engine/network/NetworkSession.d.ts +12 -1
  278. package/src/engine/network/NetworkSession.d.ts.map +1 -1
  279. package/src/engine/network/NetworkSession.js +52 -1
  280. package/src/engine/network/README.md +45 -0
  281. package/src/engine/network/convertPathToURL.d.ts +1 -8
  282. package/src/engine/network/convertPathToURL.d.ts.map +1 -1
  283. package/src/engine/network/convertPathToURL.js +2 -107
  284. package/src/engine/network/core/quantize/quantize_float.d.ts.map +1 -1
  285. package/src/engine/network/core/quantize/quantize_float.js +7 -0
  286. package/src/engine/network/core/quantize/quantize_position.d.ts.map +1 -1
  287. package/src/engine/network/core/quantize/quantize_position.js +12 -1
  288. package/src/engine/network/orchestrator/NetworkPeer.d.ts.map +1 -1
  289. package/src/engine/network/orchestrator/NetworkPeer.js +15 -1
  290. package/src/engine/network/replication/Replicator.d.ts +8 -0
  291. package/src/engine/network/replication/Replicator.d.ts.map +1 -1
  292. package/src/engine/network/replication/Replicator.js +48 -0
  293. package/src/engine/network/transport/Channel.d.ts.map +1 -1
  294. package/src/engine/network/transport/Channel.js +46 -12
  295. package/src/engine/network/transport/ReliableCommandPipeline.d.ts +16 -0
  296. package/src/engine/network/transport/ReliableCommandPipeline.d.ts.map +1 -1
  297. package/src/engine/network/transport/ReliableCommandPipeline.js +29 -0
  298. package/src/engine/network/transport/adapters/NodeUDPTransport.d.ts.map +1 -1
  299. package/src/engine/network/transport/adapters/NodeUDPTransport.js +7 -1
  300. package/src/engine/network/transport/fragments/packet_size.d.ts +5 -5
  301. package/src/engine/network/transport/fragments/packet_size.d.ts.map +1 -1
  302. package/src/engine/network/transport/fragments/packet_size.js +5 -5
  303. package/src/engine/physics/BULLET_REVIEW.md +1 -1
  304. package/src/engine/physics/JOLT_REVIEW.md +2 -2
  305. package/src/engine/physics/PLAN.md +1094 -945
  306. package/src/engine/physics/RAPIER_REVIEW.md +2 -2
  307. package/src/engine/physics/body/BodyStorage.d.ts +2 -12
  308. package/src/engine/physics/body/BodyStorage.d.ts.map +1 -1
  309. package/src/engine/physics/body/BodyStorage.js +406 -452
  310. package/src/engine/physics/body/SolverBodyState.d.ts.map +1 -1
  311. package/src/engine/physics/body/SolverBodyState.js +12 -3
  312. package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts +28 -3
  313. package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts.map +1 -1
  314. package/src/engine/physics/broadphase/compute_fat_world_aabb.js +60 -24
  315. package/src/engine/physics/broadphase/generate_pairs.d.ts +9 -5
  316. package/src/engine/physics/broadphase/generate_pairs.d.ts.map +1 -1
  317. package/src/engine/physics/broadphase/generate_pairs.js +52 -37
  318. package/src/engine/physics/ccd/linear_sweep.d.ts +15 -5
  319. package/src/engine/physics/ccd/linear_sweep.d.ts.map +1 -1
  320. package/src/engine/physics/ccd/linear_sweep.js +122 -40
  321. package/src/engine/physics/constraint/solve_constraints.d.ts.map +1 -1
  322. package/src/engine/physics/constraint/solve_constraints.js +830 -805
  323. package/src/engine/physics/contact/ManifoldStore.d.ts +91 -16
  324. package/src/engine/physics/contact/ManifoldStore.d.ts.map +1 -1
  325. package/src/engine/physics/contact/ManifoldStore.js +204 -60
  326. package/src/engine/physics/ecs/BodyKind.d.ts +7 -3
  327. package/src/engine/physics/ecs/BodyKind.d.ts.map +1 -1
  328. package/src/engine/physics/ecs/BodyKind.js +29 -25
  329. package/src/engine/physics/ecs/Collider.d.ts +7 -0
  330. package/src/engine/physics/ecs/Collider.d.ts.map +1 -1
  331. package/src/engine/physics/ecs/Collider.js +7 -0
  332. package/src/engine/physics/ecs/ColliderSerializationAdapter.js +1 -1
  333. package/src/engine/physics/ecs/PhysicsSystem.d.ts +110 -6
  334. package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
  335. package/src/engine/physics/ecs/PhysicsSystem.js +467 -45
  336. package/src/engine/physics/ecs/RigidBody.d.ts +20 -5
  337. package/src/engine/physics/ecs/RigidBody.d.ts.map +1 -1
  338. package/src/engine/physics/ecs/RigidBody.js +307 -286
  339. package/src/engine/physics/ecs/RigidBodyFlags.d.ts +6 -3
  340. package/src/engine/physics/ecs/RigidBodyFlags.d.ts.map +1 -1
  341. package/src/engine/physics/ecs/RigidBodyFlags.js +31 -28
  342. package/src/engine/physics/ecs/RigidBodySerializationAdapter.d.ts +12 -4
  343. package/src/engine/physics/ecs/RigidBodySerializationAdapter.d.ts.map +1 -1
  344. package/src/engine/physics/ecs/RigidBodySerializationAdapter.js +19 -5
  345. package/src/engine/physics/ecs/RigidBodySerializationUpgrader_0_1.d.ts +10 -0
  346. package/src/engine/physics/ecs/RigidBodySerializationUpgrader_0_1.d.ts.map +1 -0
  347. package/src/engine/physics/ecs/RigidBodySerializationUpgrader_0_1.js +37 -0
  348. package/src/engine/physics/ecs/find_non_finite_physics_state.d.ts +28 -0
  349. package/src/engine/physics/ecs/find_non_finite_physics_state.d.ts.map +1 -0
  350. package/src/engine/physics/ecs/find_non_finite_physics_state.js +76 -0
  351. package/src/engine/physics/events/ContactEventBuffer.d.ts +11 -0
  352. package/src/engine/physics/events/ContactEventBuffer.d.ts.map +1 -1
  353. package/src/engine/physics/events/ContactEventBuffer.js +40 -0
  354. package/src/engine/physics/events/diff_manifolds.d.ts +30 -13
  355. package/src/engine/physics/events/diff_manifolds.d.ts.map +1 -1
  356. package/src/engine/physics/events/diff_manifolds.js +87 -50
  357. package/src/engine/physics/fluid/FluidField.d.ts +98 -26
  358. package/src/engine/physics/fluid/FluidField.d.ts.map +1 -1
  359. package/src/engine/physics/fluid/FluidField.js +684 -570
  360. package/src/engine/physics/fluid/FluidSimulator.d.ts +157 -6
  361. package/src/engine/physics/fluid/FluidSimulator.d.ts.map +1 -1
  362. package/src/engine/physics/fluid/FluidSimulator.js +450 -83
  363. package/src/engine/physics/fluid/REVIEW_02_PLAN.md +243 -0
  364. package/src/engine/physics/fluid/ecs/FluidComponent.d.ts +4 -3
  365. package/src/engine/physics/fluid/ecs/FluidComponent.d.ts.map +1 -1
  366. package/src/engine/physics/fluid/ecs/FluidComponent.js +4 -3
  367. package/src/engine/physics/fluid/ecs/FluidObstacle.d.ts +72 -0
  368. package/src/engine/physics/fluid/ecs/FluidObstacle.d.ts.map +1 -0
  369. package/src/engine/physics/fluid/ecs/FluidObstacle.js +97 -0
  370. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +117 -0
  371. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts.map +1 -0
  372. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.js +348 -0
  373. package/src/engine/physics/fluid/ecs/FluidSystem.d.ts +3 -3
  374. package/src/engine/physics/fluid/effector/GlobalFluidEffector.d.ts +62 -12
  375. package/src/engine/physics/fluid/effector/GlobalFluidEffector.d.ts.map +1 -1
  376. package/src/engine/physics/fluid/effector/GlobalFluidEffector.js +135 -38
  377. package/src/engine/physics/fluid/effector/ImpulseFluidEffector.d.ts.map +1 -1
  378. package/src/engine/physics/fluid/effector/ImpulseFluidEffector.js +85 -38
  379. package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts +27 -8
  380. package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts.map +1 -1
  381. package/src/engine/physics/fluid/effector/WakeFluidEffector.js +171 -68
  382. package/src/engine/physics/fluid/prototype.js +25 -1
  383. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_scalar.d.ts +42 -0
  384. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_scalar.d.ts.map +1 -0
  385. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_scalar.js +136 -0
  386. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.d.ts +37 -0
  387. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.d.ts.map +1 -0
  388. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.js +169 -0
  389. package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.d.ts +36 -0
  390. package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.d.ts.map +1 -0
  391. package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.js +100 -0
  392. package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.d.ts +6 -0
  393. package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.d.ts.map +1 -1
  394. package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.js +6 -0
  395. package/src/engine/physics/fluid/solver/v3_grid_apply_diffusion.d.ts +7 -2
  396. package/src/engine/physics/fluid/solver/v3_grid_apply_diffusion.d.ts.map +1 -1
  397. package/src/engine/physics/fluid/solver/v3_grid_apply_diffusion.js +17 -12
  398. package/src/engine/physics/fluid/solver/v3_grid_apply_vorticity_confinement.d.ts +42 -0
  399. package/src/engine/physics/fluid/solver/v3_grid_apply_vorticity_confinement.d.ts.map +1 -0
  400. package/src/engine/physics/fluid/solver/v3_grid_apply_vorticity_confinement.js +131 -0
  401. package/src/engine/physics/fluid/solver/v3_grid_compute_solid_neighbour_mask.d.ts +32 -22
  402. package/src/engine/physics/fluid/solver/v3_grid_compute_solid_neighbour_mask.d.ts.map +1 -1
  403. package/src/engine/physics/fluid/solver/v3_grid_compute_solid_neighbour_mask.js +43 -26
  404. package/src/engine/physics/fluid/solver/v3_grid_patch_edges_constant.d.ts +31 -0
  405. package/src/engine/physics/fluid/solver/v3_grid_patch_edges_constant.d.ts.map +1 -0
  406. package/src/engine/physics/fluid/solver/v3_grid_patch_edges_constant.js +77 -0
  407. package/src/engine/physics/fluid/solver/v3_grid_sample_scalar_masked.d.ts +30 -0
  408. package/src/engine/physics/fluid/solver/v3_grid_sample_scalar_masked.d.ts.map +1 -0
  409. package/src/engine/physics/fluid/solver/v3_grid_sample_scalar_masked.js +92 -0
  410. package/src/engine/physics/fluid/solver/v3_grid_solve_pressure.d.ts +26 -19
  411. package/src/engine/physics/fluid/solver/v3_grid_solve_pressure.d.ts.map +1 -1
  412. package/src/engine/physics/fluid/solver/v3_grid_solve_pressure.js +46 -42
  413. package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_pcg.d.ts +38 -10
  414. package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_pcg.d.ts.map +1 -1
  415. package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_pcg.js +158 -75
  416. package/src/engine/physics/fluid/solver/v3_grid_subtract_pressure_gradient.d.ts +22 -17
  417. package/src/engine/physics/fluid/solver/v3_grid_subtract_pressure_gradient.d.ts.map +1 -1
  418. package/src/engine/physics/fluid/solver/v3_grid_subtract_pressure_gradient.js +108 -96
  419. package/src/engine/physics/fluid/solver/v3_mac_advect_maccormack_velocity.d.ts +42 -0
  420. package/src/engine/physics/fluid/solver/v3_mac_advect_maccormack_velocity.d.ts.map +1 -0
  421. package/src/engine/physics/fluid/solver/v3_mac_advect_maccormack_velocity.js +319 -0
  422. package/src/engine/physics/fluid/solver/v3_mac_advect_scalar.d.ts +53 -0
  423. package/src/engine/physics/fluid/solver/v3_mac_advect_scalar.d.ts.map +1 -0
  424. package/src/engine/physics/fluid/solver/v3_mac_advect_scalar.js +236 -0
  425. package/src/engine/physics/fluid/solver/v3_mac_advect_sl_velocity.d.ts +46 -0
  426. package/src/engine/physics/fluid/solver/v3_mac_advect_sl_velocity.d.ts.map +1 -0
  427. package/src/engine/physics/fluid/solver/v3_mac_advect_sl_velocity.js +217 -0
  428. package/src/engine/physics/fluid/solver/v3_mac_apply_vorticity_confinement.d.ts +40 -0
  429. package/src/engine/physics/fluid/solver/v3_mac_apply_vorticity_confinement.d.ts.map +1 -0
  430. package/src/engine/physics/fluid/solver/v3_mac_apply_vorticity_confinement.js +165 -0
  431. package/src/engine/physics/fluid/solver/v3_mac_clip_trace.d.ts +44 -0
  432. package/src/engine/physics/fluid/solver/v3_mac_clip_trace.d.ts.map +1 -0
  433. package/src/engine/physics/fluid/solver/v3_mac_clip_trace.js +95 -0
  434. package/src/engine/physics/fluid/solver/v3_mac_compute_divergence.d.ts +38 -0
  435. package/src/engine/physics/fluid/solver/v3_mac_compute_divergence.d.ts.map +1 -0
  436. package/src/engine/physics/fluid/solver/v3_mac_compute_divergence.js +77 -0
  437. package/src/engine/physics/fluid/solver/v3_mac_compute_face_solid.d.ts +52 -0
  438. package/src/engine/physics/fluid/solver/v3_mac_compute_face_solid.d.ts.map +1 -0
  439. package/src/engine/physics/fluid/solver/v3_mac_compute_face_solid.js +131 -0
  440. package/src/engine/physics/fluid/solver/v3_mac_subtract_pressure_gradient.d.ts +38 -0
  441. package/src/engine/physics/fluid/solver/v3_mac_subtract_pressure_gradient.d.ts.map +1 -0
  442. package/src/engine/physics/fluid/solver/v3_mac_subtract_pressure_gradient.js +104 -0
  443. package/src/engine/physics/inertia/world_inverse_inertia.d.ts +30 -1
  444. package/src/engine/physics/inertia/world_inverse_inertia.d.ts.map +1 -1
  445. package/src/engine/physics/inertia/world_inverse_inertia.js +160 -116
  446. package/src/engine/physics/integration/integrate_position.js +97 -97
  447. package/src/engine/physics/island/IslandBuilder.d.ts +49 -8
  448. package/src/engine/physics/island/IslandBuilder.d.ts.map +1 -1
  449. package/src/engine/physics/island/IslandBuilder.js +93 -14
  450. package/src/engine/physics/narrowphase/box_box_manifold.d.ts.map +1 -1
  451. package/src/engine/physics/narrowphase/box_box_manifold.js +683 -673
  452. package/src/engine/physics/narrowphase/box_triangle_contact.d.ts.map +1 -1
  453. package/src/engine/physics/narrowphase/box_triangle_contact.js +899 -749
  454. package/src/engine/physics/narrowphase/capsule_contacts.d.ts +27 -0
  455. package/src/engine/physics/narrowphase/capsule_contacts.d.ts.map +1 -1
  456. package/src/engine/physics/narrowphase/capsule_contacts.js +624 -459
  457. package/src/engine/physics/narrowphase/capsule_triangle_contact.d.ts.map +1 -1
  458. package/src/engine/physics/narrowphase/capsule_triangle_contact.js +58 -38
  459. package/src/engine/physics/narrowphase/compute_penetration.d.ts.map +1 -1
  460. package/src/engine/physics/narrowphase/compute_penetration.js +369 -325
  461. package/src/engine/physics/narrowphase/convex_convex_manifold.d.ts +3 -1
  462. package/src/engine/physics/narrowphase/convex_convex_manifold.d.ts.map +1 -1
  463. package/src/engine/physics/narrowphase/convex_convex_manifold.js +568 -422
  464. package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.d.ts +6 -3
  465. package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.d.ts.map +1 -1
  466. package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.js +66 -10
  467. package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.d.ts +4 -1
  468. package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.d.ts.map +1 -1
  469. package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.js +97 -94
  470. package/src/engine/physics/narrowphase/mesh_mesh_tet_manifold.js +117 -117
  471. package/src/engine/physics/narrowphase/narrowphase_step.d.ts.map +1 -1
  472. package/src/engine/physics/narrowphase/narrowphase_step.js +1738 -1739
  473. package/src/engine/physics/narrowphase/reduce_manifold_contacts.d.ts +14 -7
  474. package/src/engine/physics/narrowphase/reduce_manifold_contacts.d.ts.map +1 -1
  475. package/src/engine/physics/narrowphase/reduce_manifold_contacts.js +74 -69
  476. package/src/engine/physics/persistence/solver_caches.d.ts +20 -0
  477. package/src/engine/physics/persistence/solver_caches.d.ts.map +1 -0
  478. package/src/engine/physics/persistence/solver_caches.js +309 -0
  479. package/src/engine/physics/queries/overlap_shape.d.ts.map +1 -1
  480. package/src/engine/physics/queries/overlap_shape.js +187 -184
  481. package/src/engine/physics/queries/raycast.d.ts +3 -2
  482. package/src/engine/physics/queries/raycast.d.ts.map +1 -1
  483. package/src/engine/physics/queries/raycast.js +37 -11
  484. package/src/engine/physics/queries/shape_cast.d.ts +18 -5
  485. package/src/engine/physics/queries/shape_cast.d.ts.map +1 -1
  486. package/src/engine/physics/queries/shape_cast.js +417 -393
  487. package/src/engine/physics/solver/solve_contacts.d.ts +22 -6
  488. package/src/engine/physics/solver/solve_contacts.d.ts.map +1 -1
  489. package/src/engine/physics/solver/solve_contacts.js +1482 -1338
  490. package/src/engine/physics/vehicle/RaycastVehicle.d.ts.map +1 -1
  491. package/src/engine/physics/vehicle/RaycastVehicle.js +344 -339
  492. package/src/engine/ui/DraggableAspect.d.ts +12 -3
  493. package/src/engine/ui/DraggableAspect.d.ts.map +1 -1
  494. package/src/engine/ui/DraggableAspect.js +115 -83
  495. package/src/generation/COORDINATES.md +54 -0
  496. package/src/generation/GridTaskGroup.js +2 -2
  497. package/src/generation/REVIEW_01_ACTION_PLAN.md +628 -0
  498. package/src/generation/automata/CaveGeneratorCellularAutomata.d.ts +9 -1
  499. package/src/generation/automata/CaveGeneratorCellularAutomata.d.ts.map +1 -1
  500. package/src/generation/automata/CaveGeneratorCellularAutomata.js +79 -59
  501. package/src/generation/automata/CellularAutomata.d.ts +6 -3
  502. package/src/generation/automata/CellularAutomata.d.ts.map +1 -1
  503. package/src/generation/automata/CellularAutomata.js +22 -19
  504. package/src/generation/filtering/CellFilter.d.ts +17 -0
  505. package/src/generation/filtering/CellFilter.d.ts.map +1 -1
  506. package/src/generation/filtering/CellFilter.js +117 -77
  507. package/src/generation/filtering/CellFilterCellMatcher.d.ts.map +1 -1
  508. package/src/generation/filtering/CellFilterCellMatcher.js +2 -0
  509. package/src/generation/filtering/boolean/CellFilterLiteralBoolean.d.ts +5 -0
  510. package/src/generation/filtering/boolean/CellFilterLiteralBoolean.d.ts.map +1 -1
  511. package/src/generation/filtering/boolean/CellFilterLiteralBoolean.js +15 -0
  512. package/src/generation/filtering/core/CellFilterBinaryOperation.d.ts +0 -1
  513. package/src/generation/filtering/core/CellFilterBinaryOperation.d.ts.map +1 -1
  514. package/src/generation/filtering/core/CellFilterBinaryOperation.js +37 -50
  515. package/src/generation/filtering/core/CellFilterOperationTertiary.d.ts +0 -1
  516. package/src/generation/filtering/core/CellFilterOperationTertiary.d.ts.map +1 -1
  517. package/src/generation/filtering/core/CellFilterOperationTertiary.js +43 -59
  518. package/src/generation/filtering/core/CellFilterUnaryOperation.d.ts +0 -1
  519. package/src/generation/filtering/core/CellFilterUnaryOperation.d.ts.map +1 -1
  520. package/src/generation/filtering/core/CellFilterUnaryOperation.js +29 -33
  521. package/src/generation/filtering/numeric/CellFilterCache.d.ts +1 -0
  522. package/src/generation/filtering/numeric/CellFilterCache.d.ts.map +1 -1
  523. package/src/generation/filtering/numeric/complex/CellFilterAngleToNormal.d.ts +3 -2
  524. package/src/generation/filtering/numeric/complex/CellFilterAngleToNormal.d.ts.map +1 -1
  525. package/src/generation/filtering/numeric/complex/CellFilterAngleToNormal.js +9 -35
  526. package/src/generation/filtering/numeric/complex/CellFilterCurvature.d.ts +0 -1
  527. package/src/generation/filtering/numeric/complex/CellFilterCurvature.d.ts.map +1 -1
  528. package/src/generation/filtering/numeric/complex/CellFilterCurvature.js +19 -43
  529. package/src/generation/filtering/numeric/complex/CellFilterFXAA.d.ts +0 -1
  530. package/src/generation/filtering/numeric/complex/CellFilterFXAA.d.ts.map +1 -1
  531. package/src/generation/filtering/numeric/complex/CellFilterFXAA.js +2 -6
  532. package/src/generation/filtering/numeric/complex/CellFilterGaussianBlur.d.ts.map +1 -1
  533. package/src/generation/filtering/numeric/complex/CellFilterGaussianBlur.js +9 -12
  534. package/src/generation/filtering/numeric/complex/CellFilterSimplexNoise.d.ts.map +1 -1
  535. package/src/generation/filtering/numeric/complex/CellFilterSimplexNoise.js +2 -1
  536. package/src/generation/filtering/numeric/complex/CellFilterSobel.d.ts +0 -1
  537. package/src/generation/filtering/numeric/complex/CellFilterSobel.d.ts.map +1 -1
  538. package/src/generation/filtering/numeric/complex/CellFilterSobel.js +2 -6
  539. package/src/generation/filtering/numeric/math/CellFilterInverseLerp.d.ts +5 -4
  540. package/src/generation/filtering/numeric/math/CellFilterInverseLerp.d.ts.map +1 -1
  541. package/src/generation/filtering/numeric/math/CellFilterInverseLerp.js +5 -4
  542. package/src/generation/filtering/numeric/process/computeFilterSurfaceNormal.d.ts +17 -0
  543. package/src/generation/filtering/numeric/process/computeFilterSurfaceNormal.d.ts.map +1 -0
  544. package/src/generation/filtering/numeric/process/computeFilterSurfaceNormal.js +42 -0
  545. package/src/generation/filtering/numeric/sampling/AbstractCellFilterSampleGridLayer.d.ts.map +1 -1
  546. package/src/generation/filtering/numeric/sampling/AbstractCellFilterSampleGridLayer.js +7 -1
  547. package/src/generation/filtering/numeric/util/populateSampler2DFromCellFilter.d.ts.map +1 -1
  548. package/src/generation/filtering/numeric/util/populateSampler2DFromCellFilter.js +7 -10
  549. package/src/generation/filtering/numeric/util/sampler_from_filter.d.ts.map +1 -1
  550. package/src/generation/filtering/numeric/util/sampler_from_filter.js +2 -1
  551. package/src/generation/grid/GridData.d.ts.map +1 -1
  552. package/src/generation/grid/GridData.js +14 -1
  553. package/src/generation/grid/actions/ContinuousGridCellAction.d.ts +10 -3
  554. package/src/generation/grid/actions/ContinuousGridCellAction.d.ts.map +1 -1
  555. package/src/generation/grid/actions/ContinuousGridCellAction.js +18 -3
  556. package/src/generation/grid/actions/ContinuousGridCellActionSetTerrainHeight.d.ts +11 -1
  557. package/src/generation/grid/actions/ContinuousGridCellActionSetTerrainHeight.d.ts.map +1 -1
  558. package/src/generation/grid/actions/ContinuousGridCellActionSetTerrainHeight.js +13 -3
  559. package/src/generation/grid/actions/ContinuousGridCellActionSetTerrainObstacle.d.ts +1 -1
  560. package/src/generation/grid/actions/ContinuousGridCellActionSetTerrainObstacle.js +2 -2
  561. package/src/generation/grid/actions/ContinuousGridCellActionWriteObstacle.d.ts +1 -1
  562. package/src/generation/grid/actions/ContinuousGridCellActionWriteObstacle.d.ts.map +1 -1
  563. package/src/generation/grid/actions/ContinuousGridCellActionWriteObstacle.js +4 -6
  564. package/src/generation/grid/coords/grid_to_texel.d.ts +9 -0
  565. package/src/generation/grid/coords/grid_to_texel.d.ts.map +1 -0
  566. package/src/generation/grid/coords/grid_to_texel.js +10 -0
  567. package/src/generation/grid/coords/texel_to_grid.d.ts +9 -0
  568. package/src/generation/grid/coords/texel_to_grid.d.ts.map +1 -0
  569. package/src/generation/grid/coords/texel_to_grid.js +10 -0
  570. package/src/generation/grid/generation/GridTaskApplyActionToCells.d.ts +2 -2
  571. package/src/generation/grid/generation/GridTaskApplyActionToCells.d.ts.map +1 -1
  572. package/src/generation/grid/generation/GridTaskApplyActionToCells.js +10 -6
  573. package/src/generation/grid/generation/GridTaskDensityMarkerDistribution.d.ts.map +1 -1
  574. package/src/generation/grid/generation/GridTaskDensityMarkerDistribution.js +20 -21
  575. package/src/generation/grid/generation/GridTaskExecuteRuleTimes.d.ts +7 -0
  576. package/src/generation/grid/generation/GridTaskExecuteRuleTimes.d.ts.map +1 -1
  577. package/src/generation/grid/generation/GridTaskExecuteRuleTimes.js +18 -10
  578. package/src/generation/grid/generation/discrete/GridTaskCellularAutomata.d.ts.map +1 -1
  579. package/src/generation/grid/generation/discrete/GridTaskCellularAutomata.js +16 -7
  580. package/src/generation/grid/generation/discrete/GridTaskConnectRooms.d.ts +5 -3
  581. package/src/generation/grid/generation/discrete/GridTaskConnectRooms.d.ts.map +1 -1
  582. package/src/generation/grid/generation/discrete/GridTaskConnectRooms.js +26 -23
  583. package/src/generation/grid/generation/discrete/layer/GridTaskBuildSourceDistanceMap.d.ts.map +1 -1
  584. package/src/generation/grid/generation/discrete/layer/GridTaskBuildSourceDistanceMap.js +10 -1
  585. package/src/generation/grid/generation/grid/select/CellSupplierBestN.d.ts.map +1 -1
  586. package/src/generation/grid/generation/grid/select/CellSupplierBestN.js +4 -0
  587. package/src/generation/grid/generation/road/GridTaskGenerateRoads.d.ts +15 -8
  588. package/src/generation/grid/generation/road/GridTaskGenerateRoads.d.ts.map +1 -1
  589. package/src/generation/grid/generation/road/GridTaskGenerateRoads.js +89 -92
  590. package/src/generation/markers/GridActionRuleSet.d.ts.map +1 -1
  591. package/src/generation/markers/GridActionRuleSet.js +10 -2
  592. package/src/generation/markers/GridCellActionPlaceMarker.d.ts +11 -0
  593. package/src/generation/markers/GridCellActionPlaceMarker.d.ts.map +1 -1
  594. package/src/generation/markers/GridCellActionPlaceMarker.js +20 -3
  595. package/src/generation/markers/GridCellActionPlaceMarkerGroup.d.ts +3 -1
  596. package/src/generation/markers/GridCellActionPlaceMarkerGroup.d.ts.map +1 -1
  597. package/src/generation/markers/GridCellActionPlaceMarkerGroup.js +9 -2
  598. package/src/generation/markers/MarkerNode.d.ts +8 -3
  599. package/src/generation/markers/MarkerNode.d.ts.map +1 -1
  600. package/src/generation/markers/MarkerNode.js +12 -5
  601. package/src/generation/markers/actions/MarkerNodeActionEntityPlacement.js +1 -1
  602. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessor.d.ts +1 -1
  603. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessor.d.ts.map +1 -1
  604. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessor.js +1 -1
  605. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorClingToTerrain.d.ts +1 -1
  606. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorClingToTerrain.d.ts.map +1 -1
  607. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorClingToTerrain.js +1 -1
  608. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorRandomRotation.d.ts +1 -1
  609. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorRandomRotation.d.ts.map +1 -1
  610. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorRandomRotation.js +2 -2
  611. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorSequence.d.ts +1 -1
  612. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorSequence.d.ts.map +1 -1
  613. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorSequence.js +2 -2
  614. package/src/generation/markers/actions/probability/MarkerNodeActionSelectWeighted.d.ts.map +1 -1
  615. package/src/generation/markers/actions/probability/MarkerNodeActionSelectWeighted.js +6 -4
  616. package/src/generation/markers/actions/probability/MarkerNodeActionWeightedElement.d.ts.map +1 -1
  617. package/src/generation/markers/actions/probability/MarkerNodeActionWeightedElement.js +1 -3
  618. package/src/generation/markers/actions/terrain/MarkerNodeActionPaintTerrain.d.ts.map +1 -1
  619. package/src/generation/markers/actions/terrain/MarkerNodeActionPaintTerrain.js +12 -11
  620. package/src/generation/markers/matcher/MarkerNodeMatcherAnd.js +2 -2
  621. package/src/generation/markers/transform/MarkerNodeTransformer.d.ts +4 -1
  622. package/src/generation/markers/transform/MarkerNodeTransformer.d.ts.map +1 -1
  623. package/src/generation/markers/transform/MarkerNodeTransformer.js +4 -1
  624. package/src/generation/markers/transform/MarkerNodeTransformerAddPositionYFromFilter.d.ts.map +1 -1
  625. package/src/generation/markers/transform/MarkerNodeTransformerAddPositionYFromFilter.js +1 -3
  626. package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.d.ts +5 -0
  627. package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.d.ts.map +1 -1
  628. package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.js +15 -0
  629. package/src/generation/markers/transform/MarkerNodeTransformerRecordProperty.d.ts.map +1 -1
  630. package/src/generation/markers/transform/MarkerNodeTransformerRecordProperty.js +1 -3
  631. package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilter.d.ts.map +1 -1
  632. package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilter.js +2 -4
  633. package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilterGradient.d.ts.map +1 -1
  634. package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilterGradient.js +1 -3
  635. package/src/generation/placement/GridCellPlacementRule.d.ts.map +1 -1
  636. package/src/generation/placement/GridCellPlacementRule.js +1 -3
  637. package/src/generation/placement/action/GridCellActionWriteFilterToLayer.d.ts.map +1 -1
  638. package/src/generation/placement/action/GridCellActionWriteFilterToLayer.js +8 -10
  639. package/src/generation/placement/action/random/weighted/CellActionSelectWeightedRandom.d.ts.map +1 -1
  640. package/src/generation/placement/action/random/weighted/CellActionSelectWeightedRandom.js +6 -4
  641. package/src/generation/placement/action/random/weighted/WeightedGridCellAction.d.ts.map +1 -1
  642. package/src/generation/placement/action/random/weighted/WeightedGridCellAction.js +1 -3
  643. package/src/generation/rules/CellMatcher.d.ts +3 -1
  644. package/src/generation/rules/CellMatcher.d.ts.map +1 -1
  645. package/src/generation/rules/CellMatcher.js +3 -1
  646. package/src/generation/rules/CellMatcherFromFilter.d.ts.map +1 -1
  647. package/src/generation/rules/CellMatcherFromFilter.js +1 -3
  648. package/src/generation/rules/CellMatcherLayerBitMaskTest.d.ts.map +1 -1
  649. package/src/generation/rules/CellMatcherLayerBitMaskTest.js +6 -20
  650. package/src/generation/test_support/executeTaskTreeSync.d.ts +9 -0
  651. package/src/generation/test_support/executeTaskTreeSync.d.ts.map +1 -0
  652. package/src/generation/test_support/executeTaskTreeSync.js +78 -0
  653. package/src/generation/theme/TerrainLayerRuleAggregator.d.ts +2 -1
  654. package/src/generation/theme/TerrainLayerRuleAggregator.d.ts.map +1 -1
  655. package/src/generation/theme/TerrainLayerRuleAggregator.js +9 -6
  656. package/src/generation/theme/Theme.d.ts +1 -1
  657. package/src/generation/theme/Theme.d.ts.map +1 -1
  658. package/src/generation/theme/Theme.js +2 -2
  659. package/src/generation/theme/ThemeEngine.d.ts +3 -3
  660. package/src/generation/theme/ThemeEngine.d.ts.map +1 -1
  661. package/src/generation/theme/ThemeEngine.js +26 -16
  662. package/src/generation/theme/cell/CellProcessingRule.d.ts +3 -3
  663. package/src/generation/theme/cell/CellProcessingRule.d.ts.map +1 -1
  664. package/src/generation/theme/cell/CellProcessingRule.js +6 -10
  665. package/src/generation/theme/cell/CellProcessingRuleSet.d.ts +1 -1
  666. package/src/generation/theme/cell/CellProcessingRuleSet.d.ts.map +1 -1
  667. package/src/generation/theme/cell/CellProcessingRuleSet.js +2 -2
  668. package/src/view/common/ListView.js +1 -1
  669. package/src/view/elements/BottomLeftResizeHandleView.d.ts.map +1 -1
  670. package/src/view/elements/BottomLeftResizeHandleView.js +13 -5
  671. package/src/core/font/FontAsset.d.ts.map +0 -1
  672. package/src/core/font/FontAssetLoader.d.ts.map +0 -1
  673. package/src/core/geom/3d/shape/util/shape_to_visual_entity.d.ts.map +0 -1
  674. package/src/core/geom/3d/tetrahedra/visualize_tetrahedral_mesh.d.ts.map +0 -1
  675. package/src/core/process/action/AsynchronousDelayAction.d.ts.map +0 -1
  676. package/src/engine/physics/computeInterceptPoint.d.ts.map +0 -1
  677. package/src/engine/physics/fluid/solver/optimal_sor_omega.d.ts.map +0 -1
  678. package/src/engine/physics/gjk/gjk.d.ts.map +0 -1
  679. package/src/engine/physics/gjk/gjk_epa_penetration.d.ts.map +0 -1
  680. package/src/engine/physics/gjk/minkowski_support.d.ts.map +0 -1
  681. package/src/engine/physics/gjk/mpr.d.ts.map +0 -1
  682. package/src/engine/physics/integration/quat_integrate.d.ts.map +0 -1
  683. package/src/engine/physics/island/union_find.d.ts.map +0 -1
  684. package/src/engine/physics/narrowphase/PosedShape.d.ts.map +0 -1
  685. package/src/engine/physics/narrowphase/clip_against_axis_uv.d.ts.map +0 -1
  686. package/src/engine/physics/narrowphase/decomposition/aabb_world_to_local.d.ts.map +0 -1
  687. package/src/generation/grid/generation/discrete/layer/GridTaskDistanceToMarkers.d.ts +0 -21
  688. package/src/generation/grid/generation/discrete/layer/GridTaskDistanceToMarkers.d.ts.map +0 -1
  689. package/src/generation/grid/generation/discrete/layer/GridTaskDistanceToMarkers.js +0 -68
  690. package/src/generation/grid/generation/grid/GridTaskGridAlignedNodeGenerator.d.ts +0 -10
  691. package/src/generation/grid/generation/grid/GridTaskGridAlignedNodeGenerator.d.ts.map +0 -1
  692. package/src/generation/grid/generation/grid/GridTaskGridAlignedNodeGenerator.js +0 -17
  693. /package/src/{engine/physics → core/geom/3d}/gjk/NOTES.md +0 -0
  694. /package/src/{engine/physics → core/geom/3d}/gjk/gjk.d.ts +0 -0
  695. /package/src/{engine/physics → core/math/physics/kinematics}/computeInterceptPoint.d.ts +0 -0
@@ -0,0 +1,104 @@
1
+ import { assert } from "../../../../core/assert.js";
2
+
3
+ /**
4
+ * Subtract the pressure gradient from a MAC velocity field in place — the
5
+ * face-exact counterpart of the collocated
6
+ * {@link v3_grid_subtract_pressure_gradient}:
7
+ *
8
+ * u(face) −= p(right cell) − p(left cell) (h = 1)
9
+ *
10
+ * Per face:
11
+ * - both adjacent cells fluid: subtract the pressure difference.
12
+ * - PINNED face (either adjacent cell solid): SKIPPED — its stored value is
13
+ * the wall's normal-velocity boundary condition (0 for static solids,
14
+ * the wall speed for movers; see {@link v3_mac_compute_face_solid}) and
15
+ * must survive the projection. Stray deposits are prevented upstream:
16
+ * the mask rebuild zeroes faces on every unpinned→pinned transition and
17
+ * every transport/effector kernel skips pinned faces.
18
+ * - domain-edge face (open boundary): the missing cell is the Dirichlet
19
+ * ghost p = 0, so interior pressure vents flow out through the face.
20
+ *
21
+ * Together with {@link v3_mac_compute_divergence} and the unchanged 7-point
22
+ * solve this forms an exact discrete Helmholtz projection: solve error aside,
23
+ * post-projection divergence is zero — including immediately beside walls,
24
+ * which the collocated form could only approximate.
25
+ *
26
+ * Face grid layout: see {@link v3_mac_compute_face_solid}.
27
+ *
28
+ * @param {Float32Array} vel_u Mutated in place, (res_x+1)·res_y·res_z.
29
+ * @param {Float32Array} vel_v Mutated in place, res_x·(res_y+1)·res_z.
30
+ * @param {Float32Array} vel_w Mutated in place, res_x·res_y·(res_z+1).
31
+ * @param {Float32Array|Float16Array} pressure Cell-centered, from the solve.
32
+ * @param {Uint8Array} face_solid_x From {@link v3_mac_compute_face_solid}.
33
+ * @param {Uint8Array} face_solid_y
34
+ * @param {Uint8Array} face_solid_z
35
+ * @param {number} res_x
36
+ * @param {number} res_y
37
+ * @param {number} res_z
38
+ */
39
+ export function v3_mac_subtract_pressure_gradient(vel_u, vel_v, vel_w, pressure, face_solid_x, face_solid_y, face_solid_z, res_x, res_y, res_z) {
40
+ const cell_count = res_x * res_y * res_z;
41
+ assert.greaterThanOrEqual(vel_u.length, (res_x + 1) * res_y * res_z, "vel_u covers grid");
42
+ assert.greaterThanOrEqual(vel_v.length, res_x * (res_y + 1) * res_z, "vel_v covers grid");
43
+ assert.greaterThanOrEqual(vel_w.length, res_x * res_y * (res_z + 1), "vel_w covers grid");
44
+ assert.greaterThanOrEqual(pressure.length, cell_count, "pressure covers grid");
45
+
46
+ const cell_slice = res_x * res_y;
47
+ const sx = res_x + 1;
48
+
49
+ // x-faces.
50
+ for (let z = 0; z < res_z; z++) {
51
+ const c_z = z * cell_slice;
52
+ const f_z = z * sx * res_y;
53
+ for (let y = 0; y < res_y; y++) {
54
+ const c_y = c_z + y * res_x;
55
+ const f_y = f_z + y * sx;
56
+ for (let x = 0; x <= res_x; x++) {
57
+ const f = f_y + x;
58
+ if (face_solid_x[f] !== 0) {
59
+ // Boundary condition — preserved, not zeroed.
60
+ continue;
61
+ }
62
+ const p_left = x === 0 ? 0 : pressure[c_y + x - 1];
63
+ const p_right = x === res_x ? 0 : pressure[c_y + x];
64
+ vel_u[f] -= p_right - p_left;
65
+ }
66
+ }
67
+ }
68
+
69
+ // y-faces.
70
+ for (let z = 0; z < res_z; z++) {
71
+ const c_z = z * cell_slice;
72
+ const f_z = z * res_x * (res_y + 1);
73
+ for (let y = 0; y <= res_y; y++) {
74
+ const f_y = f_z + y * res_x;
75
+ const c_below = c_z + (y - 1) * res_x;
76
+ const c_above = c_z + y * res_x;
77
+ for (let x = 0; x < res_x; x++) {
78
+ const f = f_y + x;
79
+ if (face_solid_y[f] !== 0) {
80
+ continue;
81
+ }
82
+ const p_below = y === 0 ? 0 : pressure[c_below + x];
83
+ const p_above = y === res_y ? 0 : pressure[c_above + x];
84
+ vel_v[f] -= p_above - p_below;
85
+ }
86
+ }
87
+ }
88
+
89
+ // z-faces.
90
+ for (let z = 0; z <= res_z; z++) {
91
+ const f_z = z * cell_slice;
92
+ const c_near = (z - 1) * cell_slice;
93
+ const c_far = z * cell_slice;
94
+ for (let i = 0; i < cell_slice; i++) {
95
+ const f = f_z + i;
96
+ if (face_solid_z[f] !== 0) {
97
+ continue;
98
+ }
99
+ const p_near = z === 0 ? 0 : pressure[c_near + i];
100
+ const p_far = z === res_z ? 0 : pressure[c_far + i];
101
+ vel_w[f] -= p_far - p_near;
102
+ }
103
+ }
104
+ }
@@ -63,5 +63,34 @@ export function world_inverse_inertia_apply(result: number[] | Float64Array, res
63
63
  * @param {number} vy
64
64
  * @param {number} vz
65
65
  */
66
- export function world_inverse_inertia_apply_raw(result: number[] | Float64Array, result_offset: number, ix: number, iy: number, iz: number, qx: number, qy: number, qz: number, qw: number, vx: number, vy: number, vz: number): void;
66
+ /**
67
+ * Quadratic-form contribution of one body to a unit-axis velocity
68
+ * constraint's effective mass: `(r × axis)ᵀ · I_w⁻¹ · (r × axis)`, where `r`
69
+ * is the body-relative application point. The full constraint denominator is
70
+ * `invM_A + invM_B + contribution_A + contribution_B`.
71
+ *
72
+ * The shared kernel behind the contact/joint solver's SoA path and the
73
+ * raycast-vehicle's component path — each previously inlined the cross
74
+ * product + {@link world_inverse_inertia_apply_raw} + dot themselves.
75
+ * Identical operation order in every caller keeps the paths bit-identical
76
+ * (the determinism contract).
77
+ *
78
+ * @param {number} ix
79
+ * @param {number} iy
80
+ * @param {number} iz Body-frame inverse inertia diagonal.
81
+ * @param {number} qx
82
+ * @param {number} qy
83
+ * @param {number} qz
84
+ * @param {number} qw Body orientation as a unit quaternion.
85
+ * @param {number} rx
86
+ * @param {number} ry
87
+ * @param {number} rz Body-relative application point.
88
+ * @param {number} ax
89
+ * @param {number} ay
90
+ * @param {number} az Unit constraint axis.
91
+ * @param {number[]|Float64Array} scratch length >= 3, clobbered
92
+ * @returns {number}
93
+ */
94
+ export function angular_effective_mass_raw(ix: number, iy: number, iz: number, qx: number, qy: number, qz: number, qw: number, rx: number, ry: number, rz: number, ax: number, ay: number, az: number, scratch: number[] | Float64Array): number;
95
+ export function world_inverse_inertia_apply_raw(result: any, result_offset: any, ix: any, iy: any, iz: any, qx: any, qy: any, qz: any, qw: any, vx: any, vy: any, vz: any): void;
67
96
  //# sourceMappingURL=world_inverse_inertia.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"world_inverse_inertia.d.ts","sourceRoot":"","sources":["../../../../../src/engine/physics/inertia/world_inverse_inertia.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,oDAVW,MAAM,EAAE,GAAC,YAAY,iBACrB,MAAM,qBACN;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAC,YAEjC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAC,MAE5C,MAAM,MACN,MAAM,MACN,MAAM,QAkBhB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wDAbW,MAAM,EAAE,GAAC,YAAY,iBACrB,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,QA4ChB"}
1
+ {"version":3,"file":"world_inverse_inertia.d.ts","sourceRoot":"","sources":["../../../../../src/engine/physics/inertia/world_inverse_inertia.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,oDAVW,MAAM,EAAE,GAAC,YAAY,iBACrB,MAAM,qBACN;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAC,YAEjC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAC,MAE5C,MAAM,MACN,MAAM,MACN,MAAM,QAkBhB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,+CAhBW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,WACN,MAAM,EAAE,GAAC,YAAY,GACnB,MAAM,CAgBlB;AAED,iLA0CC"}
@@ -1,116 +1,160 @@
1
- /**
2
- * Apply the world-frame inverse inertia tensor of a rigid body to a world-space
3
- * vector and write the result.
4
- *
5
- * Body-frame inverse inertia is supplied as a diagonal in principal axes
6
- * (a Vector3-like with `.x .y .z`). World inverse inertia is
7
- * `I_w⁻¹ = R · diag · R^T` where `R` is the body's orientation. We compute
8
- * `result = R · diag · R^T · v` without materialising the full 3x3 matrix:
9
- *
10
- * 1. `v_body = R^T · v` (rotate v into body frame)
11
- * 2. scale component-wise by the diagonal
12
- * 3. `result = R · v_body_scaled`
13
- *
14
- * Quaternion-rotate-vector uses the standard `q · v · q*` identity. Inverse
15
- * rotation uses the conjugate quaternion.
16
- *
17
- * Sphere short-circuit: if the inverse inertia is isotropic (ix === iy === iz),
18
- * the rotation cancels and `result = ix * v`. Skip the trig and save the work.
19
- *
20
- * Decoupled from RigidBody / Transform on purpose — callers pass only what
21
- * is actually read. Lets `compute_penetration` and other standalone
22
- * geometry helpers reuse this without manufacturing a body.
23
- *
24
- * @param {number[]|Float64Array} result length >= 3
25
- * @param {number} result_offset
26
- * @param {{x: number, y: number, z: number}} inv_inertia_local
27
- * Body-frame inverse inertia diagonal (typically `rb.inverseInertiaLocal`).
28
- * @param {{x: number, y: number, z: number, w: number}} rotation
29
- * Body orientation as a unit quaternion (typically `transform.rotation`).
30
- * @param {number} vx
31
- * @param {number} vy
32
- * @param {number} vz
33
- */
34
- export function world_inverse_inertia_apply(
35
- result, result_offset,
36
- inv_inertia_local, rotation,
37
- vx, vy, vz
38
- ) {
39
- // Thin object-reading wrapper over the raw-float kernel. Reads the
40
- // quaternion fields eagerly (harmless in the isotropic short-circuit,
41
- // where they're ignored) so the kernel is the single source of the math —
42
- // keeping object callers and the data-oriented (SoA) solver path
43
- // bit-identical.
44
- world_inverse_inertia_apply_raw(
45
- result, result_offset,
46
- inv_inertia_local.x, inv_inertia_local.y, inv_inertia_local.z,
47
- rotation.x, rotation.y, rotation.z, rotation.w,
48
- vx, vy, vz
49
- );
50
- }
51
-
52
- /**
53
- * Raw-float counterpart of {@link world_inverse_inertia_apply}: the same
54
- * `I_w⁻¹ = R · diag · R^T` application, with the inverse-inertia diagonal and
55
- * orientation quaternion passed as scalars rather than read off
56
- * `{x,y,z}` / `{x,y,z,w}` objects. The data-oriented contact / joint solver
57
- * reads these straight out of its `SolverBodyState` typed array, avoiding the
58
- * per-impulse object dereference on the hot path. The arithmetic is identical
59
- * to the object version (same operation order), so results are bit-identical.
60
- *
61
- * @param {number[]|Float64Array} result length >= 3
62
- * @param {number} result_offset
63
- * @param {number} ix
64
- * @param {number} iy
65
- * @param {number} iz Body-frame inverse inertia diagonal.
66
- * @param {number} qx
67
- * @param {number} qy
68
- * @param {number} qz
69
- * @param {number} qw Body orientation as a unit quaternion.
70
- * @param {number} vx
71
- * @param {number} vy
72
- * @param {number} vz
73
- */
74
- export function world_inverse_inertia_apply_raw(
75
- result, result_offset,
76
- ix, iy, iz,
77
- qx, qy, qz, qw,
78
- vx, vy, vz
79
- ) {
80
-
81
- if (ix === iy && iy === iz) {
82
- // Isotropic rotation cancels.
83
- result[result_offset] = vx * ix;
84
- result[result_offset + 1] = vy * ix;
85
- result[result_offset + 2] = vz * ix;
86
- return;
87
- }
88
-
89
- // Step 1: v_body = R^T · v. R^T corresponds to applying the conjugate
90
- // quaternion (-qx, -qy, -qz, qw). Inlined for V8 inliner — see
91
- // PosedShape.support and core/geom/vec3/v3_quat3_apply_inverse.js
92
- // for the canonical form.
93
- const tx = qw * vx - qy * vz + qz * vy;
94
- const ty = qw * vy - qz * vx + qx * vz;
95
- const tz = qw * vz - qx * vy + qy * vx;
96
- const tw = qx * vx + qy * vy + qz * vz;
97
-
98
- const vbx = tx * qw + tw * qx + ty * qz - tz * qy;
99
- const vby = ty * qw + tw * qy + tz * qx - tx * qz;
100
- const vbz = tz * qw + tw * qz + tx * qy - ty * qx;
101
-
102
- // Step 2: scale by the principal-frame diagonal.
103
- const sx = vbx * ix;
104
- const sy = vby * iy;
105
- const sz = vbz * iz;
106
-
107
- // Step 3: result = R · scaled = q · scaled · q*. Inlined likewise.
108
- const ux = qw * sx + qy * sz - qz * sy;
109
- const uy = qw * sy + qz * sx - qx * sz;
110
- const uz = qw * sz + qx * sy - qy * sx;
111
- const uw = -qx * sx - qy * sy - qz * sz;
112
-
113
- result[result_offset] = ux * qw - uw * qx - uy * qz + uz * qy;
114
- result[result_offset + 1] = uy * qw - uw * qy - uz * qx + ux * qz;
115
- result[result_offset + 2] = uz * qw - uw * qz - ux * qy + uy * qx;
116
- }
1
+ /**
2
+ * Apply the world-frame inverse inertia tensor of a rigid body to a world-space
3
+ * vector and write the result.
4
+ *
5
+ * Body-frame inverse inertia is supplied as a diagonal in principal axes
6
+ * (a Vector3-like with `.x .y .z`). World inverse inertia is
7
+ * `I_w⁻¹ = R · diag · R^T` where `R` is the body's orientation. We compute
8
+ * `result = R · diag · R^T · v` without materialising the full 3x3 matrix:
9
+ *
10
+ * 1. `v_body = R^T · v` (rotate v into body frame)
11
+ * 2. scale component-wise by the diagonal
12
+ * 3. `result = R · v_body_scaled`
13
+ *
14
+ * Quaternion-rotate-vector uses the standard `q · v · q*` identity. Inverse
15
+ * rotation uses the conjugate quaternion.
16
+ *
17
+ * Sphere short-circuit: if the inverse inertia is isotropic (ix === iy === iz),
18
+ * the rotation cancels and `result = ix * v`. Skip the trig and save the work.
19
+ *
20
+ * Decoupled from RigidBody / Transform on purpose — callers pass only what
21
+ * is actually read. Lets `compute_penetration` and other standalone
22
+ * geometry helpers reuse this without manufacturing a body.
23
+ *
24
+ * @param {number[]|Float64Array} result length >= 3
25
+ * @param {number} result_offset
26
+ * @param {{x: number, y: number, z: number}} inv_inertia_local
27
+ * Body-frame inverse inertia diagonal (typically `rb.inverseInertiaLocal`).
28
+ * @param {{x: number, y: number, z: number, w: number}} rotation
29
+ * Body orientation as a unit quaternion (typically `transform.rotation`).
30
+ * @param {number} vx
31
+ * @param {number} vy
32
+ * @param {number} vz
33
+ */
34
+ export function world_inverse_inertia_apply(
35
+ result, result_offset,
36
+ inv_inertia_local, rotation,
37
+ vx, vy, vz
38
+ ) {
39
+ // Thin object-reading wrapper over the raw-float kernel. Reads the
40
+ // quaternion fields eagerly (harmless in the isotropic short-circuit,
41
+ // where they're ignored) so the kernel is the single source of the math —
42
+ // keeping object callers and the data-oriented (SoA) solver path
43
+ // bit-identical.
44
+ world_inverse_inertia_apply_raw(
45
+ result, result_offset,
46
+ inv_inertia_local.x, inv_inertia_local.y, inv_inertia_local.z,
47
+ rotation.x, rotation.y, rotation.z, rotation.w,
48
+ vx, vy, vz
49
+ );
50
+ }
51
+
52
+ /**
53
+ * Raw-float counterpart of {@link world_inverse_inertia_apply}: the same
54
+ * `I_w⁻¹ = R · diag · R^T` application, with the inverse-inertia diagonal and
55
+ * orientation quaternion passed as scalars rather than read off
56
+ * `{x,y,z}` / `{x,y,z,w}` objects. The data-oriented contact / joint solver
57
+ * reads these straight out of its `SolverBodyState` typed array, avoiding the
58
+ * per-impulse object dereference on the hot path. The arithmetic is identical
59
+ * to the object version (same operation order), so results are bit-identical.
60
+ *
61
+ * @param {number[]|Float64Array} result length >= 3
62
+ * @param {number} result_offset
63
+ * @param {number} ix
64
+ * @param {number} iy
65
+ * @param {number} iz Body-frame inverse inertia diagonal.
66
+ * @param {number} qx
67
+ * @param {number} qy
68
+ * @param {number} qz
69
+ * @param {number} qw Body orientation as a unit quaternion.
70
+ * @param {number} vx
71
+ * @param {number} vy
72
+ * @param {number} vz
73
+ */
74
+ /**
75
+ * Quadratic-form contribution of one body to a unit-axis velocity
76
+ * constraint's effective mass: `(r × axis)ᵀ · I_w⁻¹ · (r × axis)`, where `r`
77
+ * is the body-relative application point. The full constraint denominator is
78
+ * `invM_A + invM_B + contribution_A + contribution_B`.
79
+ *
80
+ * The shared kernel behind the contact/joint solver's SoA path and the
81
+ * raycast-vehicle's component path each previously inlined the cross
82
+ * product + {@link world_inverse_inertia_apply_raw} + dot themselves.
83
+ * Identical operation order in every caller keeps the paths bit-identical
84
+ * (the determinism contract).
85
+ *
86
+ * @param {number} ix
87
+ * @param {number} iy
88
+ * @param {number} iz Body-frame inverse inertia diagonal.
89
+ * @param {number} qx
90
+ * @param {number} qy
91
+ * @param {number} qz
92
+ * @param {number} qw Body orientation as a unit quaternion.
93
+ * @param {number} rx
94
+ * @param {number} ry
95
+ * @param {number} rz Body-relative application point.
96
+ * @param {number} ax
97
+ * @param {number} ay
98
+ * @param {number} az Unit constraint axis.
99
+ * @param {number[]|Float64Array} scratch length >= 3, clobbered
100
+ * @returns {number}
101
+ */
102
+ export function angular_effective_mass_raw(
103
+ ix, iy, iz,
104
+ qx, qy, qz, qw,
105
+ rx, ry, rz,
106
+ ax, ay, az,
107
+ scratch
108
+ ) {
109
+ const cx = ry * az - rz * ay;
110
+ const cy = rz * ax - rx * az;
111
+ const cz = rx * ay - ry * ax;
112
+
113
+ world_inverse_inertia_apply_raw(scratch, 0, ix, iy, iz, qx, qy, qz, qw, cx, cy, cz);
114
+
115
+ return cx * scratch[0] + cy * scratch[1] + cz * scratch[2];
116
+ }
117
+
118
+ export function world_inverse_inertia_apply_raw(
119
+ result, result_offset,
120
+ ix, iy, iz,
121
+ qx, qy, qz, qw,
122
+ vx, vy, vz
123
+ ) {
124
+
125
+ if (ix === iy && iy === iz) {
126
+ // Isotropic — rotation cancels.
127
+ result[result_offset] = vx * ix;
128
+ result[result_offset + 1] = vy * ix;
129
+ result[result_offset + 2] = vz * ix;
130
+ return;
131
+ }
132
+
133
+ // Step 1: v_body = R^T · v. R^T corresponds to applying the conjugate
134
+ // quaternion (-qx, -qy, -qz, qw). Inlined for V8 inliner — see
135
+ // PosedShape3D.support and core/geom/vec3/v3_quat3_apply_inverse.js
136
+ // for the canonical form.
137
+ const tx = qw * vx - qy * vz + qz * vy;
138
+ const ty = qw * vy - qz * vx + qx * vz;
139
+ const tz = qw * vz - qx * vy + qy * vx;
140
+ const tw = qx * vx + qy * vy + qz * vz;
141
+
142
+ const vbx = tx * qw + tw * qx + ty * qz - tz * qy;
143
+ const vby = ty * qw + tw * qy + tz * qx - tx * qz;
144
+ const vbz = tz * qw + tw * qz + tx * qy - ty * qx;
145
+
146
+ // Step 2: scale by the principal-frame diagonal.
147
+ const sx = vbx * ix;
148
+ const sy = vby * iy;
149
+ const sz = vbz * iz;
150
+
151
+ // Step 3: result = R · scaled = q · scaled · q*. Inlined likewise.
152
+ const ux = qw * sx + qy * sz - qz * sy;
153
+ const uy = qw * sy + qz * sx - qx * sz;
154
+ const uz = qw * sz + qx * sy - qy * sx;
155
+ const uw = -qx * sx - qy * sy - qz * sz;
156
+
157
+ result[result_offset] = ux * qw - uw * qx - uy * qz + uz * qy;
158
+ result[result_offset + 1] = uy * qw - uw * qy - uz * qx + ux * qz;
159
+ result[result_offset + 2] = uz * qw - uw * qz - ux * qy + uy * qx;
160
+ }
@@ -1,97 +1,97 @@
1
- import { BodyKind } from "../ecs/BodyKind.js";
2
- import { quat_integrate } from "./quat_integrate.js";
3
- import {
4
- SBS_QX, SBS_QY, SBS_QZ, SBS_QW,
5
- SBS_LV_X, SBS_LV_Y, SBS_LV_Z,
6
- SBS_AV_X, SBS_AV_Y, SBS_AV_Z,
7
- } from "../body/SolverBodyState.js";
8
-
9
- const scratch_q = new Float64Array(4);
10
-
11
- /**
12
- * Integrate `transform.position` and `transform.rotation` from the body's
13
- * current linear and angular velocity over a step `dt`. Static bodies are
14
- * not touched.
15
- *
16
- * The trailing six arguments are the body's *pseudo-velocity*: the
17
- * position-pass output from the constraint solver (Catto split-impulse).
18
- * Pseudo-velocity exists only inside the step — it's folded into the
19
- * integration so the position update reflects depth correction, then
20
- * implicitly discarded. The body's persistent `linearVelocity` /
21
- * `angularVelocity` (which carry restitution + warm-start across steps)
22
- * are never contaminated by it.
23
- *
24
- * Callers with no position-pass output should pass zeros for the six
25
- * pseudo arguments — folding zero is free (one add per axis).
26
- *
27
- * KinematicPosition bodies are treated like Dynamic for the position
28
- * update — if the gameplay code is driving them, their velocity is
29
- * whatever the user wrote (typically zero); the step is effectively a
30
- * no-op in that case. KinematicVelocity bodies advance under their
31
- * user-set velocity.
32
- *
33
- * Persistent linear / angular velocity is read from the data-oriented
34
- * {@link SolverBodyState} span (`ss` / `base`); the pose remains authoritative
35
- * on the `Transform` and is written through `.set()` so its onChanged
36
- * subscribers and the per-substep concave re-detection keep seeing the moved
37
- * pose. The integrated orientation is mirrored back into the solver state so
38
- * the next substep's impulse loop evaluates world inertia against the current
39
- * frame.
40
- *
41
- * @param {Float64Array} ss solver-body-state data array
42
- * @param {number} base `body_index * SBS_STRIDE`
43
- * @param {RigidBody} rb
44
- * @param {Transform} transform
45
- * @param {number} dt
46
- * @param {number} ps_lin_x pseudo-linear-velocity x (0 when no contacts)
47
- * @param {number} ps_lin_y
48
- * @param {number} ps_lin_z
49
- * @param {number} ps_ang_x pseudo-angular-velocity x (0 when no contacts)
50
- * @param {number} ps_ang_y
51
- * @param {number} ps_ang_z
52
- */
53
- export function integrate_position(
54
- ss, base, rb, transform, dt,
55
- ps_lin_x, ps_lin_y, ps_lin_z,
56
- ps_ang_x, ps_ang_y, ps_ang_z,
57
- ) {
58
- if (rb.kind === BodyKind.Static) {
59
- return;
60
- }
61
-
62
- const p = transform.position;
63
-
64
- // Combined integration velocity: persistent + pseudo. The pseudo
65
- // contribution exists only for this step and never lands in the velocity.
66
- const vx = ss[base + SBS_LV_X] + ps_lin_x;
67
- const vy = ss[base + SBS_LV_Y] + ps_lin_y;
68
- const vz = ss[base + SBS_LV_Z] + ps_lin_z;
69
-
70
- // The write goes through .set() so Transform's onChanged subscribers
71
- // (matrix recompose, parent/child sync, viewport position, fog-of-war
72
- // reveal) fire — pose stays authoritative on the Transform.
73
- p.set(
74
- p[0] + vx * dt,
75
- p[1] + vy * dt,
76
- p[2] + vz * dt
77
- );
78
-
79
- const wx = ss[base + SBS_AV_X] + ps_ang_x;
80
- const wy = ss[base + SBS_AV_Y] + ps_ang_y;
81
- const wz = ss[base + SBS_AV_Z] + ps_ang_z;
82
- if (wx !== 0 || wy !== 0 || wz !== 0) {
83
- const q = transform.rotation;
84
- quat_integrate(
85
- scratch_q,
86
- q[0], q[1], q[2], q[3],
87
- wx, wy, wz,
88
- dt
89
- );
90
- q.set(scratch_q[0], scratch_q[1], scratch_q[2], scratch_q[3]);
91
- // Mirror the moved orientation into the solver state.
92
- ss[base + SBS_QX] = scratch_q[0];
93
- ss[base + SBS_QY] = scratch_q[1];
94
- ss[base + SBS_QZ] = scratch_q[2];
95
- ss[base + SBS_QW] = scratch_q[3];
96
- }
97
- }
1
+ import { BodyKind } from "../ecs/BodyKind.js";
2
+ import { quat3_integrate } from "../../../core/geom/3d/quaternion/quat3_integrate.js";
3
+ import {
4
+ SBS_QX, SBS_QY, SBS_QZ, SBS_QW,
5
+ SBS_LV_X, SBS_LV_Y, SBS_LV_Z,
6
+ SBS_AV_X, SBS_AV_Y, SBS_AV_Z,
7
+ } from "../body/SolverBodyState.js";
8
+
9
+ const scratch_q = new Float64Array(4);
10
+
11
+ /**
12
+ * Integrate `transform.position` and `transform.rotation` from the body's
13
+ * current linear and angular velocity over a step `dt`. Static bodies are
14
+ * not touched.
15
+ *
16
+ * The trailing six arguments are the body's *pseudo-velocity*: the
17
+ * position-pass output from the constraint solver (Catto split-impulse).
18
+ * Pseudo-velocity exists only inside the step — it's folded into the
19
+ * integration so the position update reflects depth correction, then
20
+ * implicitly discarded. The body's persistent `linearVelocity` /
21
+ * `angularVelocity` (which carry restitution + warm-start across steps)
22
+ * are never contaminated by it.
23
+ *
24
+ * Callers with no position-pass output should pass zeros for the six
25
+ * pseudo arguments — folding zero is free (one add per axis).
26
+ *
27
+ * KinematicPosition bodies are treated like Dynamic for the position
28
+ * update — if the gameplay code is driving them, their velocity is
29
+ * whatever the user wrote (typically zero); the step is effectively a
30
+ * no-op in that case. KinematicVelocity bodies advance under their
31
+ * user-set velocity.
32
+ *
33
+ * Persistent linear / angular velocity is read from the data-oriented
34
+ * {@link SolverBodyState} span (`ss` / `base`); the pose remains authoritative
35
+ * on the `Transform` and is written through `.set()` so its onChanged
36
+ * subscribers and the per-substep concave re-detection keep seeing the moved
37
+ * pose. The integrated orientation is mirrored back into the solver state so
38
+ * the next substep's impulse loop evaluates world inertia against the current
39
+ * frame.
40
+ *
41
+ * @param {Float64Array} ss solver-body-state data array
42
+ * @param {number} base `body_index * SBS_STRIDE`
43
+ * @param {RigidBody} rb
44
+ * @param {Transform} transform
45
+ * @param {number} dt
46
+ * @param {number} ps_lin_x pseudo-linear-velocity x (0 when no contacts)
47
+ * @param {number} ps_lin_y
48
+ * @param {number} ps_lin_z
49
+ * @param {number} ps_ang_x pseudo-angular-velocity x (0 when no contacts)
50
+ * @param {number} ps_ang_y
51
+ * @param {number} ps_ang_z
52
+ */
53
+ export function integrate_position(
54
+ ss, base, rb, transform, dt,
55
+ ps_lin_x, ps_lin_y, ps_lin_z,
56
+ ps_ang_x, ps_ang_y, ps_ang_z,
57
+ ) {
58
+ if (rb.kind === BodyKind.Static) {
59
+ return;
60
+ }
61
+
62
+ const p = transform.position;
63
+
64
+ // Combined integration velocity: persistent + pseudo. The pseudo
65
+ // contribution exists only for this step and never lands in the velocity.
66
+ const vx = ss[base + SBS_LV_X] + ps_lin_x;
67
+ const vy = ss[base + SBS_LV_Y] + ps_lin_y;
68
+ const vz = ss[base + SBS_LV_Z] + ps_lin_z;
69
+
70
+ // The write goes through .set() so Transform's onChanged subscribers
71
+ // (matrix recompose, parent/child sync, viewport position, fog-of-war
72
+ // reveal) fire — pose stays authoritative on the Transform.
73
+ p.set(
74
+ p[0] + vx * dt,
75
+ p[1] + vy * dt,
76
+ p[2] + vz * dt
77
+ );
78
+
79
+ const wx = ss[base + SBS_AV_X] + ps_ang_x;
80
+ const wy = ss[base + SBS_AV_Y] + ps_ang_y;
81
+ const wz = ss[base + SBS_AV_Z] + ps_ang_z;
82
+ if (wx !== 0 || wy !== 0 || wz !== 0) {
83
+ const q = transform.rotation;
84
+ quat3_integrate(
85
+ scratch_q,
86
+ q[0], q[1], q[2], q[3],
87
+ wx, wy, wz,
88
+ dt
89
+ );
90
+ q.set(scratch_q[0], scratch_q[1], scratch_q[2], scratch_q[3]);
91
+ // Mirror the moved orientation into the solver state.
92
+ ss[base + SBS_QX] = scratch_q[0];
93
+ ss[base + SBS_QY] = scratch_q[1];
94
+ ss[base + SBS_QZ] = scratch_q[2];
95
+ ss[base + SBS_QW] = scratch_q[3];
96
+ }
97
+ }