@woosh/meep-engine 2.156.0 → 2.157.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 (654) 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} +9 -8
  134. package/src/{engine/physics/narrowphase/PosedShape.d.ts.map → core/geom/3d/shape/PosedShape3D.d.ts.map} +1 -1
  135. package/src/{engine/physics/narrowphase/PosedShape.js → core/geom/3d/shape/PosedShape3D.js} +10 -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/particles/particular/engine/emitter/serde/ParameterLookupTableSerializationAdapter.d.ts.map +1 -1
  250. package/src/engine/graphics/particles/particular/engine/emitter/serde/ParameterLookupTableSerializationAdapter.js +2 -76
  251. package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTable.d.ts.map +1 -1
  252. package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTable.js +2 -427
  253. package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTableFlags.d.ts +1 -4
  254. package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTableFlags.d.ts.map +1 -1
  255. package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTableFlags.js +2 -6
  256. package/src/engine/graphics/particles/particular/engine/utils/volume/prototypeParticleVolume.js +1 -1
  257. package/src/engine/graphics/render/forward_plus/read_frustum_corner.d.ts +1 -8
  258. package/src/engine/graphics/render/forward_plus/read_frustum_corner.d.ts.map +1 -1
  259. package/src/engine/graphics/render/forward_plus/read_frustum_corner.js +2 -14
  260. package/src/engine/graphics/sh3/path_tracer/geometry/compute_triangle_group_aabb3.d.ts +1 -11
  261. package/src/engine/graphics/sh3/path_tracer/geometry/compute_triangle_group_aabb3.d.ts.map +1 -1
  262. package/src/engine/graphics/sh3/path_tracer/geometry/compute_triangle_group_aabb3.js +2 -46
  263. package/src/engine/graphics/sh3/prototypeSH3Probe.js +1 -1
  264. package/src/engine/graphics/texture/3d/scs3d_sample_linear3.d.ts +27 -0
  265. package/src/engine/graphics/texture/3d/scs3d_sample_linear3.d.ts.map +1 -0
  266. package/src/engine/graphics/texture/3d/scs3d_sample_linear3.js +81 -0
  267. package/src/engine/graphics/texture/isImageBitmap.d.ts +1 -6
  268. package/src/engine/graphics/texture/isImageBitmap.d.ts.map +1 -1
  269. package/src/engine/graphics/texture/isImageBitmap.js +2 -12
  270. package/src/{core/process/action → engine/intelligence/behavior/util}/AsynchronousDelayAction.d.ts +2 -2
  271. package/src/engine/intelligence/behavior/util/AsynchronousDelayAction.d.ts.map +1 -0
  272. package/src/{core/process/action → engine/intelligence/behavior/util}/AsynchronousDelayAction.js +55 -55
  273. package/src/engine/network/NetworkSession.d.ts +12 -1
  274. package/src/engine/network/NetworkSession.d.ts.map +1 -1
  275. package/src/engine/network/NetworkSession.js +52 -1
  276. package/src/engine/network/README.md +45 -0
  277. package/src/engine/network/convertPathToURL.d.ts +1 -8
  278. package/src/engine/network/convertPathToURL.d.ts.map +1 -1
  279. package/src/engine/network/convertPathToURL.js +2 -107
  280. package/src/engine/network/core/quantize/quantize_float.d.ts.map +1 -1
  281. package/src/engine/network/core/quantize/quantize_float.js +7 -0
  282. package/src/engine/network/core/quantize/quantize_position.d.ts.map +1 -1
  283. package/src/engine/network/core/quantize/quantize_position.js +12 -1
  284. package/src/engine/network/orchestrator/NetworkPeer.d.ts.map +1 -1
  285. package/src/engine/network/orchestrator/NetworkPeer.js +15 -1
  286. package/src/engine/network/replication/Replicator.d.ts +8 -0
  287. package/src/engine/network/replication/Replicator.d.ts.map +1 -1
  288. package/src/engine/network/replication/Replicator.js +48 -0
  289. package/src/engine/network/transport/Channel.d.ts.map +1 -1
  290. package/src/engine/network/transport/Channel.js +46 -12
  291. package/src/engine/network/transport/ReliableCommandPipeline.d.ts +16 -0
  292. package/src/engine/network/transport/ReliableCommandPipeline.d.ts.map +1 -1
  293. package/src/engine/network/transport/ReliableCommandPipeline.js +29 -0
  294. package/src/engine/network/transport/adapters/NodeUDPTransport.d.ts.map +1 -1
  295. package/src/engine/network/transport/adapters/NodeUDPTransport.js +7 -1
  296. package/src/engine/network/transport/fragments/packet_size.d.ts +5 -5
  297. package/src/engine/network/transport/fragments/packet_size.d.ts.map +1 -1
  298. package/src/engine/network/transport/fragments/packet_size.js +5 -5
  299. package/src/engine/physics/BULLET_REVIEW.md +1 -1
  300. package/src/engine/physics/JOLT_REVIEW.md +2 -2
  301. package/src/engine/physics/PLAN.md +1094 -945
  302. package/src/engine/physics/RAPIER_REVIEW.md +2 -2
  303. package/src/engine/physics/body/BodyStorage.d.ts +2 -12
  304. package/src/engine/physics/body/BodyStorage.d.ts.map +1 -1
  305. package/src/engine/physics/body/BodyStorage.js +406 -452
  306. package/src/engine/physics/body/SolverBodyState.d.ts.map +1 -1
  307. package/src/engine/physics/body/SolverBodyState.js +12 -3
  308. package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts +28 -3
  309. package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts.map +1 -1
  310. package/src/engine/physics/broadphase/compute_fat_world_aabb.js +60 -24
  311. package/src/engine/physics/broadphase/generate_pairs.d.ts +9 -5
  312. package/src/engine/physics/broadphase/generate_pairs.d.ts.map +1 -1
  313. package/src/engine/physics/broadphase/generate_pairs.js +52 -37
  314. package/src/engine/physics/ccd/linear_sweep.d.ts +15 -5
  315. package/src/engine/physics/ccd/linear_sweep.d.ts.map +1 -1
  316. package/src/engine/physics/ccd/linear_sweep.js +122 -40
  317. package/src/engine/physics/constraint/solve_constraints.d.ts.map +1 -1
  318. package/src/engine/physics/constraint/solve_constraints.js +830 -805
  319. package/src/engine/physics/contact/ManifoldStore.d.ts +91 -16
  320. package/src/engine/physics/contact/ManifoldStore.d.ts.map +1 -1
  321. package/src/engine/physics/contact/ManifoldStore.js +204 -60
  322. package/src/engine/physics/ecs/BodyKind.d.ts +7 -3
  323. package/src/engine/physics/ecs/BodyKind.d.ts.map +1 -1
  324. package/src/engine/physics/ecs/BodyKind.js +29 -25
  325. package/src/engine/physics/ecs/Collider.d.ts +7 -0
  326. package/src/engine/physics/ecs/Collider.d.ts.map +1 -1
  327. package/src/engine/physics/ecs/Collider.js +7 -0
  328. package/src/engine/physics/ecs/ColliderSerializationAdapter.js +1 -1
  329. package/src/engine/physics/ecs/PhysicsSystem.d.ts +110 -6
  330. package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
  331. package/src/engine/physics/ecs/PhysicsSystem.js +467 -45
  332. package/src/engine/physics/ecs/RigidBody.d.ts +20 -5
  333. package/src/engine/physics/ecs/RigidBody.d.ts.map +1 -1
  334. package/src/engine/physics/ecs/RigidBody.js +307 -286
  335. package/src/engine/physics/ecs/RigidBodyFlags.d.ts +6 -3
  336. package/src/engine/physics/ecs/RigidBodyFlags.d.ts.map +1 -1
  337. package/src/engine/physics/ecs/RigidBodyFlags.js +31 -28
  338. package/src/engine/physics/ecs/RigidBodySerializationAdapter.d.ts +12 -4
  339. package/src/engine/physics/ecs/RigidBodySerializationAdapter.d.ts.map +1 -1
  340. package/src/engine/physics/ecs/RigidBodySerializationAdapter.js +19 -5
  341. package/src/engine/physics/ecs/RigidBodySerializationUpgrader_0_1.d.ts +10 -0
  342. package/src/engine/physics/ecs/RigidBodySerializationUpgrader_0_1.d.ts.map +1 -0
  343. package/src/engine/physics/ecs/RigidBodySerializationUpgrader_0_1.js +37 -0
  344. package/src/engine/physics/ecs/find_non_finite_physics_state.d.ts +28 -0
  345. package/src/engine/physics/ecs/find_non_finite_physics_state.d.ts.map +1 -0
  346. package/src/engine/physics/ecs/find_non_finite_physics_state.js +76 -0
  347. package/src/engine/physics/events/ContactEventBuffer.d.ts +11 -0
  348. package/src/engine/physics/events/ContactEventBuffer.d.ts.map +1 -1
  349. package/src/engine/physics/events/ContactEventBuffer.js +40 -0
  350. package/src/engine/physics/events/diff_manifolds.d.ts +30 -13
  351. package/src/engine/physics/events/diff_manifolds.d.ts.map +1 -1
  352. package/src/engine/physics/events/diff_manifolds.js +87 -50
  353. package/src/engine/physics/fluid/FluidField.d.ts +45 -17
  354. package/src/engine/physics/fluid/FluidField.d.ts.map +1 -1
  355. package/src/engine/physics/fluid/FluidField.js +53 -23
  356. package/src/engine/physics/fluid/FluidSimulator.d.ts +141 -5
  357. package/src/engine/physics/fluid/FluidSimulator.d.ts.map +1 -1
  358. package/src/engine/physics/fluid/FluidSimulator.js +336 -43
  359. package/src/engine/physics/fluid/REVIEW_02_PLAN.md +114 -0
  360. package/src/engine/physics/fluid/ecs/FluidComponent.d.ts +4 -3
  361. package/src/engine/physics/fluid/ecs/FluidComponent.d.ts.map +1 -1
  362. package/src/engine/physics/fluid/ecs/FluidComponent.js +4 -3
  363. package/src/engine/physics/fluid/ecs/FluidSystem.d.ts +3 -3
  364. package/src/engine/physics/fluid/effector/AmbientWindFluidEffector.d.ts +41 -0
  365. package/src/engine/physics/fluid/effector/AmbientWindFluidEffector.d.ts.map +1 -0
  366. package/src/engine/physics/fluid/effector/AmbientWindFluidEffector.js +124 -0
  367. package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts +27 -8
  368. package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts.map +1 -1
  369. package/src/engine/physics/fluid/effector/WakeFluidEffector.js +67 -18
  370. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_scalar.d.ts +42 -0
  371. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_scalar.d.ts.map +1 -0
  372. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_scalar.js +136 -0
  373. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.d.ts +37 -0
  374. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.d.ts.map +1 -0
  375. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.js +169 -0
  376. package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.d.ts +36 -0
  377. package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.d.ts.map +1 -0
  378. package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.js +100 -0
  379. package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.d.ts +6 -0
  380. package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.d.ts.map +1 -1
  381. package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.js +6 -0
  382. package/src/engine/physics/fluid/solver/v3_grid_apply_diffusion.d.ts +7 -2
  383. package/src/engine/physics/fluid/solver/v3_grid_apply_diffusion.d.ts.map +1 -1
  384. package/src/engine/physics/fluid/solver/v3_grid_apply_diffusion.js +17 -12
  385. package/src/engine/physics/fluid/solver/v3_grid_apply_vorticity_confinement.d.ts +42 -0
  386. package/src/engine/physics/fluid/solver/v3_grid_apply_vorticity_confinement.d.ts.map +1 -0
  387. package/src/engine/physics/fluid/solver/v3_grid_apply_vorticity_confinement.js +131 -0
  388. package/src/engine/physics/fluid/solver/v3_grid_compute_solid_neighbour_mask.d.ts +32 -22
  389. package/src/engine/physics/fluid/solver/v3_grid_compute_solid_neighbour_mask.d.ts.map +1 -1
  390. package/src/engine/physics/fluid/solver/v3_grid_compute_solid_neighbour_mask.js +43 -26
  391. package/src/engine/physics/fluid/solver/v3_grid_patch_edges_constant.d.ts +31 -0
  392. package/src/engine/physics/fluid/solver/v3_grid_patch_edges_constant.d.ts.map +1 -0
  393. package/src/engine/physics/fluid/solver/v3_grid_patch_edges_constant.js +77 -0
  394. package/src/engine/physics/fluid/solver/v3_grid_solve_pressure.d.ts +26 -19
  395. package/src/engine/physics/fluid/solver/v3_grid_solve_pressure.d.ts.map +1 -1
  396. package/src/engine/physics/fluid/solver/v3_grid_solve_pressure.js +46 -42
  397. package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_pcg.d.ts +38 -10
  398. package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_pcg.d.ts.map +1 -1
  399. package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_pcg.js +158 -75
  400. package/src/engine/physics/fluid/solver/v3_grid_subtract_pressure_gradient.d.ts +22 -17
  401. package/src/engine/physics/fluid/solver/v3_grid_subtract_pressure_gradient.d.ts.map +1 -1
  402. package/src/engine/physics/fluid/solver/v3_grid_subtract_pressure_gradient.js +108 -96
  403. package/src/engine/physics/inertia/world_inverse_inertia.d.ts +30 -1
  404. package/src/engine/physics/inertia/world_inverse_inertia.d.ts.map +1 -1
  405. package/src/engine/physics/inertia/world_inverse_inertia.js +160 -116
  406. package/src/engine/physics/integration/integrate_position.js +97 -97
  407. package/src/engine/physics/island/IslandBuilder.d.ts +49 -8
  408. package/src/engine/physics/island/IslandBuilder.d.ts.map +1 -1
  409. package/src/engine/physics/island/IslandBuilder.js +93 -14
  410. package/src/engine/physics/narrowphase/box_box_manifold.d.ts.map +1 -1
  411. package/src/engine/physics/narrowphase/box_box_manifold.js +683 -673
  412. package/src/engine/physics/narrowphase/box_triangle_contact.d.ts.map +1 -1
  413. package/src/engine/physics/narrowphase/box_triangle_contact.js +899 -749
  414. package/src/engine/physics/narrowphase/capsule_contacts.d.ts +27 -0
  415. package/src/engine/physics/narrowphase/capsule_contacts.d.ts.map +1 -1
  416. package/src/engine/physics/narrowphase/capsule_contacts.js +624 -459
  417. package/src/engine/physics/narrowphase/capsule_triangle_contact.d.ts.map +1 -1
  418. package/src/engine/physics/narrowphase/capsule_triangle_contact.js +58 -38
  419. package/src/engine/physics/narrowphase/compute_penetration.d.ts.map +1 -1
  420. package/src/engine/physics/narrowphase/compute_penetration.js +369 -325
  421. package/src/engine/physics/narrowphase/convex_convex_manifold.d.ts +3 -1
  422. package/src/engine/physics/narrowphase/convex_convex_manifold.d.ts.map +1 -1
  423. package/src/engine/physics/narrowphase/convex_convex_manifold.js +568 -422
  424. package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.d.ts +6 -3
  425. package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.d.ts.map +1 -1
  426. package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.js +66 -10
  427. package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.d.ts +4 -1
  428. package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.d.ts.map +1 -1
  429. package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.js +97 -94
  430. package/src/engine/physics/narrowphase/mesh_mesh_tet_manifold.js +117 -117
  431. package/src/engine/physics/narrowphase/narrowphase_step.d.ts.map +1 -1
  432. package/src/engine/physics/narrowphase/narrowphase_step.js +1738 -1739
  433. package/src/engine/physics/narrowphase/reduce_manifold_contacts.d.ts +14 -7
  434. package/src/engine/physics/narrowphase/reduce_manifold_contacts.d.ts.map +1 -1
  435. package/src/engine/physics/narrowphase/reduce_manifold_contacts.js +74 -69
  436. package/src/engine/physics/persistence/solver_caches.d.ts +20 -0
  437. package/src/engine/physics/persistence/solver_caches.d.ts.map +1 -0
  438. package/src/engine/physics/persistence/solver_caches.js +309 -0
  439. package/src/engine/physics/queries/overlap_shape.d.ts.map +1 -1
  440. package/src/engine/physics/queries/overlap_shape.js +187 -184
  441. package/src/engine/physics/queries/raycast.d.ts +3 -2
  442. package/src/engine/physics/queries/raycast.d.ts.map +1 -1
  443. package/src/engine/physics/queries/raycast.js +37 -11
  444. package/src/engine/physics/queries/shape_cast.d.ts +18 -5
  445. package/src/engine/physics/queries/shape_cast.d.ts.map +1 -1
  446. package/src/engine/physics/queries/shape_cast.js +417 -393
  447. package/src/engine/physics/solver/solve_contacts.d.ts +22 -6
  448. package/src/engine/physics/solver/solve_contacts.d.ts.map +1 -1
  449. package/src/engine/physics/solver/solve_contacts.js +1482 -1338
  450. package/src/engine/physics/vehicle/RaycastVehicle.d.ts.map +1 -1
  451. package/src/engine/physics/vehicle/RaycastVehicle.js +344 -339
  452. package/src/engine/ui/DraggableAspect.d.ts +12 -3
  453. package/src/engine/ui/DraggableAspect.d.ts.map +1 -1
  454. package/src/engine/ui/DraggableAspect.js +115 -83
  455. package/src/generation/COORDINATES.md +54 -0
  456. package/src/generation/GridTaskGroup.js +2 -2
  457. package/src/generation/REVIEW_01_ACTION_PLAN.md +628 -0
  458. package/src/generation/automata/CaveGeneratorCellularAutomata.d.ts +9 -1
  459. package/src/generation/automata/CaveGeneratorCellularAutomata.d.ts.map +1 -1
  460. package/src/generation/automata/CaveGeneratorCellularAutomata.js +79 -59
  461. package/src/generation/automata/CellularAutomata.d.ts +6 -3
  462. package/src/generation/automata/CellularAutomata.d.ts.map +1 -1
  463. package/src/generation/automata/CellularAutomata.js +22 -19
  464. package/src/generation/filtering/CellFilter.d.ts +17 -0
  465. package/src/generation/filtering/CellFilter.d.ts.map +1 -1
  466. package/src/generation/filtering/CellFilter.js +117 -77
  467. package/src/generation/filtering/CellFilterCellMatcher.d.ts.map +1 -1
  468. package/src/generation/filtering/CellFilterCellMatcher.js +2 -0
  469. package/src/generation/filtering/boolean/CellFilterLiteralBoolean.d.ts +5 -0
  470. package/src/generation/filtering/boolean/CellFilterLiteralBoolean.d.ts.map +1 -1
  471. package/src/generation/filtering/boolean/CellFilterLiteralBoolean.js +15 -0
  472. package/src/generation/filtering/core/CellFilterBinaryOperation.d.ts +0 -1
  473. package/src/generation/filtering/core/CellFilterBinaryOperation.d.ts.map +1 -1
  474. package/src/generation/filtering/core/CellFilterBinaryOperation.js +37 -50
  475. package/src/generation/filtering/core/CellFilterOperationTertiary.d.ts +0 -1
  476. package/src/generation/filtering/core/CellFilterOperationTertiary.d.ts.map +1 -1
  477. package/src/generation/filtering/core/CellFilterOperationTertiary.js +43 -59
  478. package/src/generation/filtering/core/CellFilterUnaryOperation.d.ts +0 -1
  479. package/src/generation/filtering/core/CellFilterUnaryOperation.d.ts.map +1 -1
  480. package/src/generation/filtering/core/CellFilterUnaryOperation.js +29 -33
  481. package/src/generation/filtering/numeric/CellFilterCache.d.ts +1 -0
  482. package/src/generation/filtering/numeric/CellFilterCache.d.ts.map +1 -1
  483. package/src/generation/filtering/numeric/complex/CellFilterAngleToNormal.d.ts +3 -2
  484. package/src/generation/filtering/numeric/complex/CellFilterAngleToNormal.d.ts.map +1 -1
  485. package/src/generation/filtering/numeric/complex/CellFilterAngleToNormal.js +9 -35
  486. package/src/generation/filtering/numeric/complex/CellFilterCurvature.d.ts +0 -1
  487. package/src/generation/filtering/numeric/complex/CellFilterCurvature.d.ts.map +1 -1
  488. package/src/generation/filtering/numeric/complex/CellFilterCurvature.js +19 -43
  489. package/src/generation/filtering/numeric/complex/CellFilterFXAA.d.ts +0 -1
  490. package/src/generation/filtering/numeric/complex/CellFilterFXAA.d.ts.map +1 -1
  491. package/src/generation/filtering/numeric/complex/CellFilterFXAA.js +2 -6
  492. package/src/generation/filtering/numeric/complex/CellFilterGaussianBlur.d.ts.map +1 -1
  493. package/src/generation/filtering/numeric/complex/CellFilterGaussianBlur.js +9 -12
  494. package/src/generation/filtering/numeric/complex/CellFilterSimplexNoise.d.ts.map +1 -1
  495. package/src/generation/filtering/numeric/complex/CellFilterSimplexNoise.js +2 -1
  496. package/src/generation/filtering/numeric/complex/CellFilterSobel.d.ts +0 -1
  497. package/src/generation/filtering/numeric/complex/CellFilterSobel.d.ts.map +1 -1
  498. package/src/generation/filtering/numeric/complex/CellFilterSobel.js +2 -6
  499. package/src/generation/filtering/numeric/math/CellFilterInverseLerp.d.ts +5 -4
  500. package/src/generation/filtering/numeric/math/CellFilterInverseLerp.d.ts.map +1 -1
  501. package/src/generation/filtering/numeric/math/CellFilterInverseLerp.js +5 -4
  502. package/src/generation/filtering/numeric/process/computeFilterSurfaceNormal.d.ts +17 -0
  503. package/src/generation/filtering/numeric/process/computeFilterSurfaceNormal.d.ts.map +1 -0
  504. package/src/generation/filtering/numeric/process/computeFilterSurfaceNormal.js +42 -0
  505. package/src/generation/filtering/numeric/sampling/AbstractCellFilterSampleGridLayer.d.ts.map +1 -1
  506. package/src/generation/filtering/numeric/sampling/AbstractCellFilterSampleGridLayer.js +7 -1
  507. package/src/generation/filtering/numeric/util/populateSampler2DFromCellFilter.d.ts.map +1 -1
  508. package/src/generation/filtering/numeric/util/populateSampler2DFromCellFilter.js +7 -10
  509. package/src/generation/filtering/numeric/util/sampler_from_filter.d.ts.map +1 -1
  510. package/src/generation/filtering/numeric/util/sampler_from_filter.js +2 -1
  511. package/src/generation/grid/GridData.d.ts.map +1 -1
  512. package/src/generation/grid/GridData.js +14 -1
  513. package/src/generation/grid/actions/ContinuousGridCellAction.d.ts +10 -3
  514. package/src/generation/grid/actions/ContinuousGridCellAction.d.ts.map +1 -1
  515. package/src/generation/grid/actions/ContinuousGridCellAction.js +18 -3
  516. package/src/generation/grid/actions/ContinuousGridCellActionSetTerrainHeight.d.ts +11 -1
  517. package/src/generation/grid/actions/ContinuousGridCellActionSetTerrainHeight.d.ts.map +1 -1
  518. package/src/generation/grid/actions/ContinuousGridCellActionSetTerrainHeight.js +13 -3
  519. package/src/generation/grid/actions/ContinuousGridCellActionSetTerrainObstacle.d.ts +1 -1
  520. package/src/generation/grid/actions/ContinuousGridCellActionSetTerrainObstacle.js +2 -2
  521. package/src/generation/grid/actions/ContinuousGridCellActionWriteObstacle.d.ts +1 -1
  522. package/src/generation/grid/actions/ContinuousGridCellActionWriteObstacle.d.ts.map +1 -1
  523. package/src/generation/grid/actions/ContinuousGridCellActionWriteObstacle.js +4 -6
  524. package/src/generation/grid/coords/grid_to_texel.d.ts +9 -0
  525. package/src/generation/grid/coords/grid_to_texel.d.ts.map +1 -0
  526. package/src/generation/grid/coords/grid_to_texel.js +10 -0
  527. package/src/generation/grid/coords/texel_to_grid.d.ts +9 -0
  528. package/src/generation/grid/coords/texel_to_grid.d.ts.map +1 -0
  529. package/src/generation/grid/coords/texel_to_grid.js +10 -0
  530. package/src/generation/grid/generation/GridTaskApplyActionToCells.d.ts +2 -2
  531. package/src/generation/grid/generation/GridTaskApplyActionToCells.d.ts.map +1 -1
  532. package/src/generation/grid/generation/GridTaskApplyActionToCells.js +10 -6
  533. package/src/generation/grid/generation/GridTaskDensityMarkerDistribution.d.ts.map +1 -1
  534. package/src/generation/grid/generation/GridTaskDensityMarkerDistribution.js +20 -21
  535. package/src/generation/grid/generation/GridTaskExecuteRuleTimes.d.ts +7 -0
  536. package/src/generation/grid/generation/GridTaskExecuteRuleTimes.d.ts.map +1 -1
  537. package/src/generation/grid/generation/GridTaskExecuteRuleTimes.js +18 -10
  538. package/src/generation/grid/generation/discrete/GridTaskCellularAutomata.d.ts.map +1 -1
  539. package/src/generation/grid/generation/discrete/GridTaskCellularAutomata.js +16 -7
  540. package/src/generation/grid/generation/discrete/GridTaskConnectRooms.d.ts +5 -3
  541. package/src/generation/grid/generation/discrete/GridTaskConnectRooms.d.ts.map +1 -1
  542. package/src/generation/grid/generation/discrete/GridTaskConnectRooms.js +26 -23
  543. package/src/generation/grid/generation/discrete/layer/GridTaskBuildSourceDistanceMap.d.ts.map +1 -1
  544. package/src/generation/grid/generation/discrete/layer/GridTaskBuildSourceDistanceMap.js +10 -1
  545. package/src/generation/grid/generation/grid/select/CellSupplierBestN.d.ts.map +1 -1
  546. package/src/generation/grid/generation/grid/select/CellSupplierBestN.js +4 -0
  547. package/src/generation/grid/generation/road/GridTaskGenerateRoads.d.ts +15 -8
  548. package/src/generation/grid/generation/road/GridTaskGenerateRoads.d.ts.map +1 -1
  549. package/src/generation/grid/generation/road/GridTaskGenerateRoads.js +89 -92
  550. package/src/generation/markers/GridActionRuleSet.d.ts.map +1 -1
  551. package/src/generation/markers/GridActionRuleSet.js +10 -2
  552. package/src/generation/markers/GridCellActionPlaceMarker.d.ts +11 -0
  553. package/src/generation/markers/GridCellActionPlaceMarker.d.ts.map +1 -1
  554. package/src/generation/markers/GridCellActionPlaceMarker.js +20 -3
  555. package/src/generation/markers/GridCellActionPlaceMarkerGroup.d.ts +3 -1
  556. package/src/generation/markers/GridCellActionPlaceMarkerGroup.d.ts.map +1 -1
  557. package/src/generation/markers/GridCellActionPlaceMarkerGroup.js +9 -2
  558. package/src/generation/markers/MarkerNode.d.ts +8 -3
  559. package/src/generation/markers/MarkerNode.d.ts.map +1 -1
  560. package/src/generation/markers/MarkerNode.js +12 -5
  561. package/src/generation/markers/actions/MarkerNodeActionEntityPlacement.js +1 -1
  562. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessor.d.ts +1 -1
  563. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessor.d.ts.map +1 -1
  564. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessor.js +1 -1
  565. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorClingToTerrain.d.ts +1 -1
  566. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorClingToTerrain.d.ts.map +1 -1
  567. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorClingToTerrain.js +1 -1
  568. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorRandomRotation.d.ts +1 -1
  569. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorRandomRotation.d.ts.map +1 -1
  570. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorRandomRotation.js +2 -2
  571. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorSequence.d.ts +1 -1
  572. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorSequence.d.ts.map +1 -1
  573. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorSequence.js +2 -2
  574. package/src/generation/markers/actions/probability/MarkerNodeActionSelectWeighted.d.ts.map +1 -1
  575. package/src/generation/markers/actions/probability/MarkerNodeActionSelectWeighted.js +6 -4
  576. package/src/generation/markers/actions/probability/MarkerNodeActionWeightedElement.d.ts.map +1 -1
  577. package/src/generation/markers/actions/probability/MarkerNodeActionWeightedElement.js +1 -3
  578. package/src/generation/markers/actions/terrain/MarkerNodeActionPaintTerrain.d.ts.map +1 -1
  579. package/src/generation/markers/actions/terrain/MarkerNodeActionPaintTerrain.js +12 -11
  580. package/src/generation/markers/matcher/MarkerNodeMatcherAnd.js +2 -2
  581. package/src/generation/markers/transform/MarkerNodeTransformer.d.ts +4 -1
  582. package/src/generation/markers/transform/MarkerNodeTransformer.d.ts.map +1 -1
  583. package/src/generation/markers/transform/MarkerNodeTransformer.js +4 -1
  584. package/src/generation/markers/transform/MarkerNodeTransformerAddPositionYFromFilter.d.ts.map +1 -1
  585. package/src/generation/markers/transform/MarkerNodeTransformerAddPositionYFromFilter.js +1 -3
  586. package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.d.ts +5 -0
  587. package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.d.ts.map +1 -1
  588. package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.js +15 -0
  589. package/src/generation/markers/transform/MarkerNodeTransformerRecordProperty.d.ts.map +1 -1
  590. package/src/generation/markers/transform/MarkerNodeTransformerRecordProperty.js +1 -3
  591. package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilter.d.ts.map +1 -1
  592. package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilter.js +2 -4
  593. package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilterGradient.d.ts.map +1 -1
  594. package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilterGradient.js +1 -3
  595. package/src/generation/placement/GridCellPlacementRule.d.ts.map +1 -1
  596. package/src/generation/placement/GridCellPlacementRule.js +1 -3
  597. package/src/generation/placement/action/GridCellActionWriteFilterToLayer.d.ts.map +1 -1
  598. package/src/generation/placement/action/GridCellActionWriteFilterToLayer.js +8 -10
  599. package/src/generation/placement/action/random/weighted/CellActionSelectWeightedRandom.d.ts.map +1 -1
  600. package/src/generation/placement/action/random/weighted/CellActionSelectWeightedRandom.js +6 -4
  601. package/src/generation/placement/action/random/weighted/WeightedGridCellAction.d.ts.map +1 -1
  602. package/src/generation/placement/action/random/weighted/WeightedGridCellAction.js +1 -3
  603. package/src/generation/rules/CellMatcher.d.ts +3 -1
  604. package/src/generation/rules/CellMatcher.d.ts.map +1 -1
  605. package/src/generation/rules/CellMatcher.js +3 -1
  606. package/src/generation/rules/CellMatcherFromFilter.d.ts.map +1 -1
  607. package/src/generation/rules/CellMatcherFromFilter.js +1 -3
  608. package/src/generation/rules/CellMatcherLayerBitMaskTest.d.ts.map +1 -1
  609. package/src/generation/rules/CellMatcherLayerBitMaskTest.js +6 -20
  610. package/src/generation/test_support/executeTaskTreeSync.d.ts +9 -0
  611. package/src/generation/test_support/executeTaskTreeSync.d.ts.map +1 -0
  612. package/src/generation/test_support/executeTaskTreeSync.js +78 -0
  613. package/src/generation/theme/TerrainLayerRuleAggregator.d.ts +2 -1
  614. package/src/generation/theme/TerrainLayerRuleAggregator.d.ts.map +1 -1
  615. package/src/generation/theme/TerrainLayerRuleAggregator.js +9 -6
  616. package/src/generation/theme/Theme.d.ts +1 -1
  617. package/src/generation/theme/Theme.d.ts.map +1 -1
  618. package/src/generation/theme/Theme.js +2 -2
  619. package/src/generation/theme/ThemeEngine.d.ts +3 -3
  620. package/src/generation/theme/ThemeEngine.d.ts.map +1 -1
  621. package/src/generation/theme/ThemeEngine.js +26 -16
  622. package/src/generation/theme/cell/CellProcessingRule.d.ts +3 -3
  623. package/src/generation/theme/cell/CellProcessingRule.d.ts.map +1 -1
  624. package/src/generation/theme/cell/CellProcessingRule.js +6 -10
  625. package/src/generation/theme/cell/CellProcessingRuleSet.d.ts +1 -1
  626. package/src/generation/theme/cell/CellProcessingRuleSet.d.ts.map +1 -1
  627. package/src/generation/theme/cell/CellProcessingRuleSet.js +2 -2
  628. package/src/view/common/ListView.js +1 -1
  629. package/src/view/elements/BottomLeftResizeHandleView.d.ts.map +1 -1
  630. package/src/view/elements/BottomLeftResizeHandleView.js +13 -5
  631. package/src/core/font/FontAsset.d.ts.map +0 -1
  632. package/src/core/font/FontAssetLoader.d.ts.map +0 -1
  633. package/src/core/geom/3d/shape/util/shape_to_visual_entity.d.ts.map +0 -1
  634. package/src/core/geom/3d/tetrahedra/visualize_tetrahedral_mesh.d.ts.map +0 -1
  635. package/src/core/process/action/AsynchronousDelayAction.d.ts.map +0 -1
  636. package/src/engine/physics/computeInterceptPoint.d.ts.map +0 -1
  637. package/src/engine/physics/fluid/solver/optimal_sor_omega.d.ts.map +0 -1
  638. package/src/engine/physics/gjk/gjk.d.ts.map +0 -1
  639. package/src/engine/physics/gjk/gjk_epa_penetration.d.ts.map +0 -1
  640. package/src/engine/physics/gjk/minkowski_support.d.ts.map +0 -1
  641. package/src/engine/physics/gjk/mpr.d.ts.map +0 -1
  642. package/src/engine/physics/integration/quat_integrate.d.ts.map +0 -1
  643. package/src/engine/physics/island/union_find.d.ts.map +0 -1
  644. package/src/engine/physics/narrowphase/clip_against_axis_uv.d.ts.map +0 -1
  645. package/src/engine/physics/narrowphase/decomposition/aabb_world_to_local.d.ts.map +0 -1
  646. package/src/generation/grid/generation/discrete/layer/GridTaskDistanceToMarkers.d.ts +0 -21
  647. package/src/generation/grid/generation/discrete/layer/GridTaskDistanceToMarkers.d.ts.map +0 -1
  648. package/src/generation/grid/generation/discrete/layer/GridTaskDistanceToMarkers.js +0 -68
  649. package/src/generation/grid/generation/grid/GridTaskGridAlignedNodeGenerator.d.ts +0 -10
  650. package/src/generation/grid/generation/grid/GridTaskGridAlignedNodeGenerator.d.ts.map +0 -1
  651. package/src/generation/grid/generation/grid/GridTaskGridAlignedNodeGenerator.js +0 -17
  652. /package/src/{engine/physics → core/geom/3d}/gjk/NOTES.md +0 -0
  653. /package/src/{engine/physics → core/geom/3d}/gjk/gjk.d.ts +0 -0
  654. /package/src/{engine/physics → core/math/physics/kinematics}/computeInterceptPoint.d.ts +0 -0
@@ -0,0 +1,53 @@
1
+ import { assert } from "../assert.js";
2
+ import { reinterpret_uint32_as_float32 } from "../binary/reinterpret_uint32_as_float32.js";
3
+ import { aabb3_array_set } from "../geom/3d/aabb/aabb3_array_set.js";
4
+
5
+ const scratch_f32 = new Float32Array(6);
6
+
7
+ /**
8
+ *
9
+ * @param {number[]|Float32Array} out
10
+ * @param {number} out_offset
11
+ * @param {BVH8} bvh
12
+ * @param {number} node
13
+ * @param {number} child
14
+ */
15
+ export function bvh8_get_node_child_bounds(out, out_offset, bvh, node, child) {
16
+ assert.isNonNegativeInteger(node, 'node');
17
+ assert.isNonNegativeInteger(child, 'child');
18
+
19
+ bvh.node_get_p(node, scratch_f32);
20
+
21
+ const p_x = scratch_f32[0];
22
+ const p_y = scratch_f32[1];
23
+ const p_z = scratch_f32[2];
24
+
25
+ // read out exponent
26
+ bvh.node_get_e(node, scratch_f32);
27
+
28
+ const e_x = scratch_f32[0];
29
+ const e_y = scratch_f32[1];
30
+ const e_z = scratch_f32[2];
31
+
32
+ const scale_x = reinterpret_uint32_as_float32(e_x << 23);
33
+ const scale_y = reinterpret_uint32_as_float32(e_y << 23);
34
+ const scale_z = reinterpret_uint32_as_float32(e_z << 23);
35
+
36
+ bvh.node_get_quantized_min(node, child, scratch_f32);
37
+
38
+ const q_low_x = scratch_f32[0];
39
+ const q_low_y = scratch_f32[1];
40
+ const q_low_z = scratch_f32[2];
41
+
42
+ bvh.node_get_quantized_max(node, child, scratch_f32);
43
+
44
+ const q_high_x = scratch_f32[0];
45
+ const q_high_y = scratch_f32[1];
46
+ const q_high_z = scratch_f32[2];
47
+
48
+ aabb3_array_set(
49
+ out, out_offset,
50
+ q_low_x * scale_x + p_x, q_low_y * scale_y + p_y, q_low_z * scale_z + p_z,
51
+ q_high_x * scale_x + p_x, q_high_y * scale_y + p_y, q_high_z * scale_z + p_z
52
+ );
53
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ *
3
+ * @param {BVH8} bvh
4
+ * @param {number} node
5
+ * @param {number} child
6
+ * @returns {number}
7
+ */
8
+ export function bvh8_node_child_surface_area(bvh: BVH8, node: number, child: number): number;
9
+ //# sourceMappingURL=bvh8_node_child_surface_area.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bvh8_node_child_surface_area.d.ts","sourceRoot":"","sources":["../../../../src/core/bvh8/bvh8_node_child_surface_area.js"],"names":[],"mappings":"AAKA;;;;;;GAMG;AACH,8DAJW,MAAM,SACN,MAAM,GACJ,MAAM,CAMlB"}
@@ -0,0 +1,18 @@
1
+ import { aabb3_compute_surface_area } from "../geom/3d/aabb/aabb3_compute_surface_area.js";
2
+ import { bvh8_get_node_child_bounds } from "./bvh8_get_node_child_bounds.js";
3
+
4
+ const scratch_f32 = new Float32Array(6);
5
+
6
+ /**
7
+ *
8
+ * @param {BVH8} bvh
9
+ * @param {number} node
10
+ * @param {number} child
11
+ * @returns {number}
12
+ */
13
+ export function bvh8_node_child_surface_area(bvh, node, child) {
14
+ bvh8_get_node_child_bounds(scratch_f32, 0, bvh, node, child);
15
+
16
+ return aabb3_compute_surface_area(...scratch_f32);
17
+ }
18
+
@@ -0,0 +1,8 @@
1
+ /**
2
+ *
3
+ * @param {BVH8} bvh
4
+ * @param {number} node
5
+ * @returns {number} number of triangles under this node
6
+ */
7
+ export function bvh8_node_count_triangles(bvh: BVH8, node: number): number;
8
+ //# sourceMappingURL=bvh8_node_count_triangles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bvh8_node_count_triangles.d.ts","sourceRoot":"","sources":["../../../../src/core/bvh8/bvh8_node_count_triangles.js"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,2DAHW,MAAM,GACJ,MAAM,CAqBlB"}
@@ -0,0 +1,28 @@
1
+ import { bitCount } from "../binary/operations/bitCount.js";
2
+
3
+ /**
4
+ *
5
+ * @param {BVH8} bvh
6
+ * @param {number} node
7
+ * @returns {number} number of triangles under this node
8
+ */
9
+ export function bvh8_node_count_triangles(bvh, node) {
10
+ let result = 0;
11
+
12
+ const imask = bvh.node_get_imask(node);
13
+
14
+ for (let i = 0; i < 8; i++) {
15
+ if ((imask & (1 << i)) !== 0) {
16
+ // intermediate node
17
+ continue;
18
+ }
19
+
20
+ const meta = bvh.node_get_meta(node, i);
21
+
22
+ const triangles = bitCount(meta & 0b11100000);
23
+
24
+ result += triangles;
25
+ }
26
+
27
+ return result;
28
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * We compute surface area heuristic (SAH) over the entire (sub-)tree
3
+ * @param {BVH8} bvh
4
+ * @param {number} [root]
5
+ * @returns {number} Lower = better
6
+ */
7
+ export function bvh8_quality(bvh: BVH8, root?: number): number;
8
+ //# sourceMappingURL=bvh8_quality.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bvh8_quality.d.ts","sourceRoot":"","sources":["../../../../src/core/bvh8/bvh8_quality.js"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,+CAHW,MAAM,GACJ,MAAM,CA+DlB"}
@@ -0,0 +1,73 @@
1
+ import { bitCount } from "../binary/operations/bitCount.js";
2
+ import { aabb3_compute_surface_area } from "../geom/3d/aabb/aabb3_compute_surface_area.js";
3
+ import { bvh8_get_node_bounds } from "./bvh8_get_node_bounds.js";
4
+ import { bvh8_node_child_surface_area } from "./bvh8_node_child_surface_area.js";
5
+
6
+ /**
7
+ * We compute surface area heuristic (SAH) over the entire (sub-)tree
8
+ * @param {BVH8} bvh
9
+ * @param {number} [root]
10
+ * @returns {number} Lower = better
11
+ */
12
+ export function bvh8_quality(bvh, root = 0) {
13
+ const stack = [root];
14
+ let node_count = 0;
15
+
16
+ // cost of traversing an intermediate node
17
+ const COST_INTERMEDIATE = 1.2;
18
+ // cost of traversing a leaf node
19
+ const COST_LEAF = 0.1;
20
+ // cost of performing ray/triangle test
21
+ const COST_TRIANGLE = 1;
22
+
23
+ const root_bounds = new Float32Array(6);
24
+ bvh8_get_node_bounds(root_bounds, 0, bvh, root);
25
+ const root_area = aabb3_compute_surface_area(...root_bounds);
26
+
27
+ if (root_area === 0) {
28
+ return 1;
29
+ }
30
+
31
+ let sum_area_node = 0;
32
+ let sum_triangle_cost = 0;
33
+ let sum_area_leaf = 0;
34
+
35
+ while (stack.length > 0) {
36
+ const node = stack.pop();
37
+
38
+ node_count++;
39
+
40
+ const imask = bvh.node_get_imask(node);
41
+
42
+ const offset = bvh.node_get_base_index_child(node);
43
+
44
+ let child_count = 0;
45
+ for (let i = 0; i < 8; i++) {
46
+
47
+ const child_area = bvh8_node_child_surface_area(bvh, node, i);
48
+
49
+ if ((imask & (1 << i)) !== 0) {
50
+ // intermediate
51
+ sum_area_node += child_area;
52
+
53
+ stack.push(offset + child_count);
54
+ child_count++;
55
+ } else {
56
+
57
+ const meta = bvh.node_get_meta(node, i);
58
+
59
+ if (meta === 0) {
60
+ // empty
61
+ continue;
62
+ }
63
+
64
+ const triangle_count = bitCount(meta & 0b11100000);
65
+
66
+ sum_triangle_cost += (child_area * triangle_count)
67
+ sum_area_leaf += child_area;
68
+ }
69
+ }
70
+ }
71
+
72
+ return (COST_INTERMEDIATE * sum_area_node + COST_LEAF * sum_area_leaf + COST_TRIANGLE * sum_triangle_cost) / root_area;
73
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Validate structural invariants of a BVH8, independent of any geometry:
3
+ *
4
+ * - every internal slot (imask bit set) stores exactly `(24 + slot) | 0b00100000` in its meta
5
+ * - every leaf slot stores a triangle offset ≤ 23 (≥ 24 would be misread as an internal slot)
6
+ * and a unary triangle count mask (0b001, 0b011 or 0b111)
7
+ * - internal child blocks lie within the node pool
8
+ * - every allocated node is reachable from the root exactly once
9
+ *
10
+ * Throws an Error describing the first violation found.
11
+ *
12
+ * @param {BVH8} bvh
13
+ */
14
+ export function bvh8_validate_structure(bvh: BVH8): void;
15
+ //# sourceMappingURL=bvh8_validate_structure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bvh8_validate_structure.d.ts","sourceRoot":"","sources":["../../../../src/core/bvh8/bvh8_validate_structure.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,yDAuEC"}
@@ -0,0 +1,87 @@
1
+ import { bitCount } from "../binary/operations/bitCount.js";
2
+
3
+ /**
4
+ * Validate structural invariants of a BVH8, independent of any geometry:
5
+ *
6
+ * - every internal slot (imask bit set) stores exactly `(24 + slot) | 0b00100000` in its meta
7
+ * - every leaf slot stores a triangle offset ≤ 23 (≥ 24 would be misread as an internal slot)
8
+ * and a unary triangle count mask (0b001, 0b011 or 0b111)
9
+ * - internal child blocks lie within the node pool
10
+ * - every allocated node is reachable from the root exactly once
11
+ *
12
+ * Throws an Error describing the first violation found.
13
+ *
14
+ * @param {BVH8} bvh
15
+ */
16
+ export function bvh8_validate_structure(bvh) {
17
+ const node_count = bvh.nodes.size;
18
+
19
+ if (node_count === 0) {
20
+ // empty tree
21
+ return;
22
+ }
23
+
24
+ const visited = new Uint8Array(node_count);
25
+ let visited_count = 0;
26
+
27
+ const stack = [0];
28
+
29
+ while (stack.length > 0) {
30
+ const node = stack.pop();
31
+
32
+ if (node >= node_count) {
33
+ throw new Error(`node index ${node} is out of range [0, ${node_count})`);
34
+ }
35
+
36
+ if (visited[node] !== 0) {
37
+ throw new Error(`node ${node} is reachable more than once`);
38
+ }
39
+
40
+ visited[node] = 1;
41
+ visited_count++;
42
+
43
+ const imask = bvh.node_get_imask(node);
44
+ const base_index_child = bvh.node_get_base_index_child(node);
45
+
46
+ const internal_count = bitCount(imask);
47
+
48
+ if (internal_count > 0 && base_index_child + internal_count > node_count) {
49
+ throw new Error(`node ${node}: child block [${base_index_child}, ${base_index_child + internal_count}) exceeds node pool size ${node_count}`);
50
+ }
51
+
52
+ let intermediate_count = 0;
53
+
54
+ for (let i = 0; i < 8; i++) {
55
+ const meta = bvh.node_get_meta(node, i);
56
+
57
+ if ((imask & (1 << i)) !== 0) {
58
+ // internal slot
59
+ const expected = (24 + i) | 0b00100000;
60
+
61
+ if (meta !== expected) {
62
+ throw new Error(`node ${node} slot ${i}: internal slot meta is ${meta}, expected ${expected}`);
63
+ }
64
+
65
+ stack.push(base_index_child + intermediate_count);
66
+ intermediate_count++;
67
+
68
+ } else if (meta !== 0) {
69
+ // leaf slot
70
+ const triangle_offset = meta & 0b11111;
71
+ const unary_count = (meta >> 5) & 0b111;
72
+
73
+ if (triangle_offset > 23) {
74
+ throw new Error(`node ${node} slot ${i}: leaf triangle offset ${triangle_offset} > 23 collides with the internal slot encoding`);
75
+ }
76
+
77
+ if (unary_count !== 0b001 && unary_count !== 0b011 && unary_count !== 0b111) {
78
+ throw new Error(`node ${node} slot ${i}: triangle count mask ${unary_count.toString(2)} is not unary`);
79
+ }
80
+ }
81
+ }
82
+ }
83
+
84
+ if (visited_count !== node_count) {
85
+ throw new Error(`${node_count - visited_count} allocated node(s) are not reachable from the root`);
86
+ }
87
+ }
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Binary min-heap of uint32 values backed by a flat `Uint32Array`.
3
+ *
4
+ * Built for deterministic id-recycling free lists: {@link pop} always
5
+ * returns the SMALLEST stored value, so two pools given the same
6
+ * allocate/free sequence reuse identical ids regardless of how the calls
7
+ * interleaved — the property the physics `BodyStorage` / `ManifoldStore`
8
+ * free lists are built on (each previously carried a byte-identical
9
+ * private copy of this heap). Values are expected unique (they are slot
10
+ * ids); duplicates are not rejected but make pop order between the
11
+ * duplicates unspecified.
12
+ *
13
+ * Grows by doubling on push; never shrinks. Not a hot-path structure —
14
+ * pushes/pops happen at allocate/release time, not per-iteration.
15
+ *
16
+ * @author Alex Goldring
17
+ * @copyright Company Named Limited (c) 2026
18
+ */
19
+ export class Uint32MinHeap {
20
+ /**
21
+ * @param {number} [initial_capacity]
22
+ */
23
+ constructor(initial_capacity?: number);
24
+ /**
25
+ * @private
26
+ * @type {Uint32Array}
27
+ */
28
+ private __data;
29
+ /**
30
+ * @private
31
+ * @type {number}
32
+ */
33
+ private __count;
34
+ /**
35
+ * Number of stored values.
36
+ * @returns {number}
37
+ */
38
+ get size(): number;
39
+ /**
40
+ * Remove every value. Capacity is retained.
41
+ */
42
+ clear(): void;
43
+ /**
44
+ * Insert a value.
45
+ * @param {number} v
46
+ */
47
+ push(v: number): void;
48
+ /**
49
+ * Remove and return the smallest value. Caller guarantees non-empty
50
+ * (the free-list usage always checks `size` first); popping an empty
51
+ * heap returns stale storage.
52
+ * @returns {number}
53
+ */
54
+ pop(): number;
55
+ }
56
+ //# sourceMappingURL=Uint32MinHeap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Uint32MinHeap.d.ts","sourceRoot":"","sources":["../../../../src/core/collection/Uint32MinHeap.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH;IAEI;;OAEG;IACH,+BAFW,MAAM,EAchB;IAXG;;;OAGG;IACH,eAA4D;IAE5D;;;OAGG;IACH,gBAAgB;IAGpB;;;OAGG;IACH,mBAEC;IAED;;OAEG;IACH,cAEC;IAED;;;OAGG;IACH,QAFW,MAAM,QAwBhB;IAED;;;;;OAKG;IACH,OAFa,MAAM,CAuBlB;CACJ"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Binary min-heap of uint32 values backed by a flat `Uint32Array`.
3
+ *
4
+ * Built for deterministic id-recycling free lists: {@link pop} always
5
+ * returns the SMALLEST stored value, so two pools given the same
6
+ * allocate/free sequence reuse identical ids regardless of how the calls
7
+ * interleaved — the property the physics `BodyStorage` / `ManifoldStore`
8
+ * free lists are built on (each previously carried a byte-identical
9
+ * private copy of this heap). Values are expected unique (they are slot
10
+ * ids); duplicates are not rejected but make pop order between the
11
+ * duplicates unspecified.
12
+ *
13
+ * Grows by doubling on push; never shrinks. Not a hot-path structure —
14
+ * pushes/pops happen at allocate/release time, not per-iteration.
15
+ *
16
+ * @author Alex Goldring
17
+ * @copyright Company Named Limited (c) 2026
18
+ */
19
+ export class Uint32MinHeap {
20
+
21
+ /**
22
+ * @param {number} [initial_capacity]
23
+ */
24
+ constructor(initial_capacity = 16) {
25
+ /**
26
+ * @private
27
+ * @type {Uint32Array}
28
+ */
29
+ this.__data = new Uint32Array(Math.max(1, initial_capacity));
30
+
31
+ /**
32
+ * @private
33
+ * @type {number}
34
+ */
35
+ this.__count = 0;
36
+ }
37
+
38
+ /**
39
+ * Number of stored values.
40
+ * @returns {number}
41
+ */
42
+ get size() {
43
+ return this.__count;
44
+ }
45
+
46
+ /**
47
+ * Remove every value. Capacity is retained.
48
+ */
49
+ clear() {
50
+ this.__count = 0;
51
+ }
52
+
53
+ /**
54
+ * Insert a value.
55
+ * @param {number} v
56
+ */
57
+ push(v) {
58
+ let heap = this.__data;
59
+ if (this.__count === heap.length) {
60
+ const next = new Uint32Array(heap.length << 1);
61
+ next.set(heap);
62
+ this.__data = next;
63
+ heap = next;
64
+ }
65
+
66
+ let i = this.__count++;
67
+ heap[i] = v;
68
+ while (i > 0) {
69
+ const parent = (i - 1) >>> 1;
70
+ if (heap[parent] > heap[i]) {
71
+ const tmp = heap[parent];
72
+ heap[parent] = heap[i];
73
+ heap[i] = tmp;
74
+ i = parent;
75
+ } else {
76
+ break;
77
+ }
78
+ }
79
+ }
80
+
81
+ /**
82
+ * Remove and return the smallest value. Caller guarantees non-empty
83
+ * (the free-list usage always checks `size` first); popping an empty
84
+ * heap returns stale storage.
85
+ * @returns {number}
86
+ */
87
+ pop() {
88
+ const heap = this.__data;
89
+ const result = heap[0];
90
+ const new_count = --this.__count;
91
+ if (new_count > 0) {
92
+ heap[0] = heap[new_count];
93
+ let i = 0;
94
+ for (;;) {
95
+ const l = (i << 1) + 1;
96
+ const r = l + 1;
97
+ let smallest = i;
98
+ if (l < new_count && heap[l] < heap[smallest]) smallest = l;
99
+ if (r < new_count && heap[r] < heap[smallest]) smallest = r;
100
+ if (smallest === i) break;
101
+ const tmp = heap[i];
102
+ heap[i] = heap[smallest];
103
+ heap[smallest] = tmp;
104
+ i = smallest;
105
+ }
106
+ }
107
+ return result;
108
+ }
109
+ }
@@ -1,4 +1,4 @@
1
- import { frameThrottle } from "../../../engine/graphics/FrameThrottle.js";
1
+ import { frameThrottle } from "../../function/frameThrottle.js";
2
2
  import { invokeObjectEquals } from "../../model/object/invokeObjectEquals.js";
3
3
  import { array_set_diff } from "../array/array_set_diff.js";
4
4
  import List from "./List.js";
@@ -4,8 +4,10 @@
4
4
  *
5
5
  * Design choices:
6
6
  * - **Path halving** rather than full path compression. Halving rewires
7
- * `parent[x]` to `parent[parent[x]]` as it walks, which is `O(α(n))`
8
- * amortised (same as full compression) but has a simpler control flow and
7
+ * `parent[x]` to `parent[parent[x]]` as it walks. WITHOUT union-by-rank
8
+ * (deliberately omitted see below) this is Θ(log n) amortised, not the
9
+ * textbook O(α(n)) (that bound needs halving AND rank together); log n of
10
+ * a per-island body count is negligible. Halving has simpler control flow and
9
11
  * is deterministic regardless of call order. Full compression's iterative
10
12
  * second pass would observe a different mutation pattern depending on
11
13
  * which subtree was queried first — fine for correctness, awkward for
@@ -18,9 +20,10 @@
18
20
  * union-by-rank but path halving keeps the amortised cost the same in
19
21
  * practice for the body counts we care about (≤ millions).
20
22
  *
21
- * Used by {@link IslandBuilder} to partition awake bodies + contact pairs
22
- * into connected components (islands) so the solver can iterate each
23
- * independently and so whole islands can sleep atomically.
23
+ * Primary consumer: the physics engine's `IslandBuilder`, which partitions
24
+ * awake bodies + contact pairs into connected components (islands) so the
25
+ * solver can iterate each independently and so whole islands can sleep
26
+ * atomically.
24
27
  *
25
28
  * @author Alex Goldring
26
29
  * @copyright Company Named Limited (c) 2026
@@ -0,0 +1 @@
1
+ {"version":3,"file":"union_find.d.ts","sourceRoot":"","sources":["../../../../../src/core/collection/union-find/union_find.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH;;;;GAIG;AACH,gCAHW,WAAW,KACX,MAAM,QAIhB;AAED;;;;;;GAMG;AACH,gCAJW,WAAW,KACX,MAAM,GACJ,MAAM,CAYlB;AAED;;;;;;;GAOG;AACH,iCALW,WAAW,KACX,MAAM,KACN,MAAM,GACJ,MAAM,CAalB"}
@@ -4,8 +4,10 @@
4
4
  *
5
5
  * Design choices:
6
6
  * - **Path halving** rather than full path compression. Halving rewires
7
- * `parent[x]` to `parent[parent[x]]` as it walks, which is `O(α(n))`
8
- * amortised (same as full compression) but has a simpler control flow and
7
+ * `parent[x]` to `parent[parent[x]]` as it walks. WITHOUT union-by-rank
8
+ * (deliberately omitted see below) this is Θ(log n) amortised, not the
9
+ * textbook O(α(n)) (that bound needs halving AND rank together); log n of
10
+ * a per-island body count is negligible. Halving has simpler control flow and
9
11
  * is deterministic regardless of call order. Full compression's iterative
10
12
  * second pass would observe a different mutation pattern depending on
11
13
  * which subtree was queried first — fine for correctness, awkward for
@@ -18,9 +20,10 @@
18
20
  * union-by-rank but path halving keeps the amortised cost the same in
19
21
  * practice for the body counts we care about (≤ millions).
20
22
  *
21
- * Used by {@link IslandBuilder} to partition awake bodies + contact pairs
22
- * into connected components (islands) so the solver can iterate each
23
- * independently and so whole islands can sleep atomically.
23
+ * Primary consumer: the physics engine's `IslandBuilder`, which partitions
24
+ * awake bodies + contact pairs into connected components (islands) so the
25
+ * solver can iterate each independently and so whole islands can sleep
26
+ * atomically.
24
27
  *
25
28
  * @author Alex Goldring
26
29
  * @copyright Company Named Limited (c) 2026
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Guards against cases where ImageBitmap doesn't exist
3
+ * @param {*} image
4
+ * @return {boolean}
5
+ */
6
+ export function isImageBitmap(image: any): boolean;
7
+ //# sourceMappingURL=isImageBitmap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isImageBitmap.d.ts","sourceRoot":"","sources":["../../../../src/core/dom/isImageBitmap.js"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,2CAFY,OAAO,CAQlB"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Guards against cases where ImageBitmap doesn't exist
3
+ * @param {*} image
4
+ * @return {boolean}
5
+ */
6
+ export function isImageBitmap(image) {
7
+ /**
8
+ * check that browser/environment has the class at all to avoid potential exceptions
9
+ * Required for Safari below version 15.6
10
+ */
11
+ return typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap;
12
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Wraps a function in {@link window.requestAnimationFrame}
3
+ * @param {function} original
4
+ * @param {*} [thisArg]
5
+ * @returns {function} proxy which will call the original at most once per frame
6
+ */
7
+ export function frameThrottle(original: Function, thisArg?: any): Function;
8
+ //# sourceMappingURL=frameThrottle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frameThrottle.d.ts","sourceRoot":"","sources":["../../../../src/core/function/frameThrottle.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,2EAgBC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Wraps a function in {@link window.requestAnimationFrame}
3
+ * @param {function} original
4
+ * @param {*} [thisArg]
5
+ * @returns {function} proxy which will call the original at most once per frame
6
+ */
7
+ export function frameThrottle(original, thisArg) {
8
+ let pending = false;
9
+
10
+ function wrap() {
11
+ pending = false;
12
+ original.call(thisArg);
13
+ }
14
+
15
+ function proxy() {
16
+ if (!pending) {
17
+ pending = true;
18
+ requestAnimationFrame(wrap);
19
+ }
20
+ }
21
+
22
+ return proxy;
23
+ }
@@ -7,10 +7,10 @@
7
7
  * @param {Float64Array} points_in
8
8
  * @param {number} point_count
9
9
  * @param {Float64Array} points_out
10
- * @param {number} coord_idx 0 = u, 1 = v
10
+ * @param {number} coord_idx 0 = first coordinate (x/u), 1 = second (y/v)
11
11
  * @param {number} bound
12
12
  * @param {boolean} keep_below true to keep points with coord ≤ bound
13
13
  * @returns {number} surviving vertex count
14
14
  */
15
- export function clip_against_axis_uv(points_in: Float64Array, point_count: number, points_out: Float64Array, coord_idx: number, bound: number, keep_below: boolean): number;
16
- //# sourceMappingURL=clip_against_axis_uv.d.ts.map
15
+ export function polygon2_clip_axis_halfplane(points_in: Float64Array, point_count: number, points_out: Float64Array, coord_idx: number, bound: number, keep_below: boolean): number;
16
+ //# sourceMappingURL=polygon2_clip_axis_halfplane.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polygon2_clip_axis_halfplane.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/2d/polygon/polygon2_clip_axis_halfplane.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,wDARW,YAAY,eACZ,MAAM,cACN,YAAY,aACZ,MAAM,SACN,MAAM,cACN,OAAO,GACL,MAAM,CAuClB"}