@woosh/meep-engine 2.138.20 → 2.139.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 (491) hide show
  1. package/package.json +1 -1
  2. package/src/core/collection/PairUint32Map.d.ts +100 -0
  3. package/src/core/collection/PairUint32Map.d.ts.map +1 -0
  4. package/src/core/collection/PairUint32Map.js +321 -0
  5. package/src/core/collection/Uint32Map.d.ts +119 -0
  6. package/src/core/collection/Uint32Map.d.ts.map +1 -0
  7. package/src/core/collection/Uint32Map.js +345 -0
  8. package/src/core/collection/array/array_shuffle.d.ts +10 -3
  9. package/src/core/collection/array/array_shuffle.d.ts.map +1 -1
  10. package/src/core/collection/array/array_shuffle.js +27 -22
  11. package/src/core/collection/heap/FibonacciHeap.d.ts +195 -0
  12. package/src/core/collection/heap/FibonacciHeap.d.ts.map +1 -0
  13. package/src/core/collection/heap/FibonacciHeap.js +586 -0
  14. package/src/core/collection/heap/Uint32Heap.js +1 -1
  15. package/src/core/collection/heap/Uint32Heap4.d.ts +169 -0
  16. package/src/core/collection/heap/Uint32Heap4.d.ts.map +1 -0
  17. package/src/core/collection/heap/Uint32Heap4.js +490 -0
  18. package/src/core/geom/3d/line/line3_closest_points_segment_segment.d.ts +27 -0
  19. package/src/core/geom/3d/line/line3_closest_points_segment_segment.d.ts.map +1 -0
  20. package/src/core/geom/3d/line/line3_closest_points_segment_segment.js +88 -0
  21. package/src/core/geom/3d/shape/BoxShape3D.d.ts +61 -0
  22. package/src/core/geom/3d/shape/BoxShape3D.d.ts.map +1 -0
  23. package/src/core/geom/3d/shape/BoxShape3D.js +158 -0
  24. package/src/core/geom/3d/shape/CapsuleShape3D.d.ts +11 -0
  25. package/src/core/geom/3d/shape/CapsuleShape3D.d.ts.map +1 -1
  26. package/src/core/geom/3d/shape/CapsuleShape3D.js +12 -0
  27. package/src/core/geom/3d/shape/UnitCubeShape3D.d.ts +37 -9
  28. package/src/core/geom/3d/shape/UnitCubeShape3D.d.ts.map +1 -1
  29. package/src/core/geom/3d/shape/UnitCubeShape3D.js +45 -98
  30. package/src/core/geom/3d/shape/UnitSphereShape3D.d.ts +10 -0
  31. package/src/core/geom/3d/shape/UnitSphereShape3D.d.ts.map +1 -1
  32. package/src/core/geom/3d/shape/UnitSphereShape3D.js +11 -0
  33. package/src/core/geom/3d/shape/util/shape3d_voxelize_to_grid.d.ts +61 -0
  34. package/src/core/geom/3d/shape/util/shape3d_voxelize_to_grid.d.ts.map +1 -0
  35. package/src/core/geom/3d/shape/util/shape3d_voxelize_to_grid.js +148 -0
  36. package/src/core/geom/3d/tetrahedra/compute_tetrahedral_mesh_from_surface.d.ts +39 -0
  37. package/src/core/geom/3d/tetrahedra/compute_tetrahedral_mesh_from_surface.d.ts.map +1 -0
  38. package/src/core/geom/3d/tetrahedra/compute_tetrahedral_mesh_from_surface.js +147 -0
  39. package/src/core/geom/3d/tetrahedra/compute_tetrahedron_quality.d.ts +15 -0
  40. package/src/core/geom/3d/tetrahedra/compute_tetrahedron_quality.d.ts.map +1 -0
  41. package/src/core/geom/3d/tetrahedra/compute_tetrahedron_quality.js +22 -0
  42. package/src/core/geom/3d/tetrahedra/prototype_tetrahedrize_mesh.d.ts +2 -0
  43. package/src/core/geom/3d/tetrahedra/prototype_tetrahedrize_mesh.d.ts.map +1 -0
  44. package/src/core/geom/3d/tetrahedra/prototype_tetrahedrize_mesh.js +673 -0
  45. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_carve_outside_surface.d.ts +26 -0
  46. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_carve_outside_surface.d.ts.map +1 -0
  47. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_carve_outside_surface.js +222 -0
  48. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_find_tets_around_edge.d.ts +34 -0
  49. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_find_tets_around_edge.d.ts.map +1 -0
  50. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_find_tets_around_edge.js +146 -0
  51. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_flip_23.d.ts +36 -0
  52. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_flip_23.d.ts.map +1 -0
  53. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_flip_23.js +232 -0
  54. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_flip_32.d.ts +33 -0
  55. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_flip_32.d.ts.map +1 -0
  56. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_flip_32.js +255 -0
  57. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_improve_quality.d.ts +68 -0
  58. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_improve_quality.d.ts.map +1 -0
  59. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_improve_quality.js +365 -0
  60. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_smooth_vertex.d.ts +31 -0
  61. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_smooth_vertex.d.ts.map +1 -0
  62. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_smooth_vertex.js +112 -0
  63. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_vertex_is_boundary.d.ts +22 -0
  64. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_vertex_is_boundary.d.ts.map +1 -0
  65. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_vertex_is_boundary.js +55 -0
  66. package/src/core/geom/3d/tetrahedra/tetrahedron_compute_quality.d.ts +32 -0
  67. package/src/core/geom/3d/tetrahedra/tetrahedron_compute_quality.d.ts.map +1 -0
  68. package/src/core/geom/3d/tetrahedra/tetrahedron_compute_quality.js +66 -0
  69. package/src/core/geom/3d/topology/struct/binary/BinaryElementPool.d.ts +22 -0
  70. package/src/core/geom/3d/topology/struct/binary/BinaryElementPool.d.ts.map +1 -1
  71. package/src/core/geom/3d/topology/struct/binary/BinaryElementPool.js +49 -0
  72. package/src/core/geom/3d/topology/struct/binary/BinaryTopology.d.ts +134 -0
  73. package/src/core/geom/3d/topology/struct/binary/BinaryTopology.d.ts.map +1 -1
  74. package/src/core/geom/3d/topology/struct/binary/BinaryTopology.js +276 -3
  75. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_close_boundary_holes.d.ts +17 -0
  76. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_close_boundary_holes.d.ts.map +1 -0
  77. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_close_boundary_holes.js +135 -0
  78. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compact.d.ts +14 -0
  79. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compact.d.ts.map +1 -0
  80. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compact.js +177 -0
  81. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_face_decouple.d.ts.map +1 -1
  82. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_face_decouple.js +20 -4
  83. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_simplify.d.ts.map +1 -1
  84. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_simplify.js +5 -3
  85. package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_create.d.ts.map +1 -1
  86. package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_create.js +9 -0
  87. package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_get_or_create.d.ts.map +1 -1
  88. package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_get_or_create.js +21 -45
  89. package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_kill.d.ts.map +1 -1
  90. package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_kill.js +7 -1
  91. package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_kill_parallels.d.ts +8 -6
  92. package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_kill_parallels.d.ts.map +1 -1
  93. package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_kill_parallels.js +8 -6
  94. package/src/core/geom/3d/topology/struct/binary/io/edge/bt_mesh_kill_short_edges.d.ts +22 -0
  95. package/src/core/geom/3d/topology/struct/binary/io/edge/bt_mesh_kill_short_edges.d.ts.map +1 -0
  96. package/src/core/geom/3d/topology/struct/binary/io/edge/bt_mesh_kill_short_edges.js +73 -0
  97. package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vertex_replace.d.ts.map +1 -1
  98. package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vertex_replace.js +51 -1
  99. package/src/core/geom/3d/topology/struct/binary/query/bt_edge_get.d.ts +10 -0
  100. package/src/core/geom/3d/topology/struct/binary/query/bt_edge_get.d.ts.map +1 -0
  101. package/src/core/geom/3d/topology/struct/binary/query/bt_edge_get.js +42 -0
  102. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.d.ts +28 -0
  103. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.d.ts.map +1 -0
  104. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.js +227 -0
  105. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_walk_boundary_loops.d.ts +13 -0
  106. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_walk_boundary_loops.d.ts.map +1 -0
  107. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_walk_boundary_loops.js +108 -0
  108. package/src/core/geom/3d/topology/struct/binary/query/bt_query_edge_is_boundary.d.ts +11 -0
  109. package/src/core/geom/3d/topology/struct/binary/query/bt_query_edge_is_boundary.d.ts.map +1 -0
  110. package/src/core/geom/3d/topology/struct/binary/query/bt_query_edge_is_boundary.js +20 -0
  111. package/src/core/geom/3d/triangle/triangle_mesh_compute_signed_volume.d.ts +20 -0
  112. package/src/core/geom/3d/triangle/triangle_mesh_compute_signed_volume.d.ts.map +1 -0
  113. package/src/core/geom/3d/triangle/triangle_mesh_compute_signed_volume.js +38 -0
  114. package/src/core/graph/csr/CSRGraph.d.ts +168 -0
  115. package/src/core/graph/csr/CSRGraph.d.ts.map +1 -0
  116. package/src/core/graph/csr/CSRGraph.js +319 -0
  117. package/src/core/graph/metis/cluster_mesh_metis.d.ts +12 -0
  118. package/src/core/graph/metis/cluster_mesh_metis.d.ts.map +1 -1
  119. package/src/core/graph/metis/cluster_mesh_metis.js +12 -0
  120. package/src/core/graph/metis/metis.d.ts +19 -0
  121. package/src/core/graph/metis/metis.d.ts.map +1 -1
  122. package/src/core/graph/metis/metis.js +20 -0
  123. package/src/core/graph/metis/metis_cluster_bs.d.ts +11 -0
  124. package/src/core/graph/metis/metis_cluster_bs.d.ts.map +1 -1
  125. package/src/core/graph/metis/metis_cluster_bs.js +11 -0
  126. package/src/core/graph/metis/metis_options.d.ts +17 -2
  127. package/src/core/graph/metis/metis_options.d.ts.map +1 -1
  128. package/src/core/graph/metis/metis_options.js +17 -2
  129. package/src/core/graph/metis/native/MetisGraph.d.ts +144 -0
  130. package/src/core/graph/metis/native/MetisGraph.d.ts.map +1 -0
  131. package/src/core/graph/metis/native/MetisGraph.js +212 -0
  132. package/src/core/graph/metis/native/bisection/BisectionScratch.d.ts +72 -0
  133. package/src/core/graph/metis/native/bisection/BisectionScratch.d.ts.map +1 -0
  134. package/src/core/graph/metis/native/bisection/BisectionScratch.js +101 -0
  135. package/src/core/graph/metis/native/bisection/bisect_graph.d.ts +37 -0
  136. package/src/core/graph/metis/native/bisection/bisect_graph.d.ts.map +1 -0
  137. package/src/core/graph/metis/native/bisection/bisect_graph.js +100 -0
  138. package/src/core/graph/metis/native/bisection/compute_2way_params.d.ts +15 -0
  139. package/src/core/graph/metis/native/bisection/compute_2way_params.d.ts.map +1 -0
  140. package/src/core/graph/metis/native/bisection/compute_2way_params.js +84 -0
  141. package/src/core/graph/metis/native/bisection/fm_2way.d.ts +30 -0
  142. package/src/core/graph/metis/native/bisection/fm_2way.d.ts.map +1 -0
  143. package/src/core/graph/metis/native/bisection/fm_2way.js +290 -0
  144. package/src/core/graph/metis/native/bisection/grow_bisection.d.ts +23 -0
  145. package/src/core/graph/metis/native/bisection/grow_bisection.d.ts.map +1 -0
  146. package/src/core/graph/metis/native/bisection/grow_bisection.js +137 -0
  147. package/src/core/graph/metis/native/bisection/split_graph_two_way.d.ts +28 -0
  148. package/src/core/graph/metis/native/bisection/split_graph_two_way.d.ts.map +1 -0
  149. package/src/core/graph/metis/native/bisection/split_graph_two_way.js +119 -0
  150. package/src/core/graph/metis/native/coarsen/coarsen_graph.d.ts +20 -0
  151. package/src/core/graph/metis/native/coarsen/coarsen_graph.d.ts.map +1 -0
  152. package/src/core/graph/metis/native/coarsen/coarsen_graph.js +94 -0
  153. package/src/core/graph/metis/native/coarsen/create_coarse_graph.d.ts +24 -0
  154. package/src/core/graph/metis/native/coarsen/create_coarse_graph.d.ts.map +1 -0
  155. package/src/core/graph/metis/native/coarsen/create_coarse_graph.js +158 -0
  156. package/src/core/graph/metis/native/coarsen/match_shem.d.ts +41 -0
  157. package/src/core/graph/metis/native/coarsen/match_shem.d.ts.map +1 -0
  158. package/src/core/graph/metis/native/coarsen/match_shem.js +175 -0
  159. package/src/core/graph/metis/native/initial/initial_kway_bfs.d.ts +24 -0
  160. package/src/core/graph/metis/native/initial/initial_kway_bfs.d.ts.map +1 -0
  161. package/src/core/graph/metis/native/initial/initial_kway_bfs.js +122 -0
  162. package/src/core/graph/metis/native/initial/initial_kway_recursive_bisection.d.ts +29 -0
  163. package/src/core/graph/metis/native/initial/initial_kway_recursive_bisection.d.ts.map +1 -0
  164. package/src/core/graph/metis/native/initial/initial_kway_recursive_bisection.js +170 -0
  165. package/src/core/graph/metis/native/metis_partition_kway.d.ts +41 -0
  166. package/src/core/graph/metis/native/metis_partition_kway.d.ts.map +1 -0
  167. package/src/core/graph/metis/native/metis_partition_kway.js +126 -0
  168. package/src/core/graph/metis/native/refine/IndexedFloatMaxHeap.d.ts +62 -0
  169. package/src/core/graph/metis/native/refine/IndexedFloatMaxHeap.d.ts.map +1 -0
  170. package/src/core/graph/metis/native/refine/IndexedFloatMaxHeap.js +261 -0
  171. package/src/core/graph/metis/native/refine/RefinementScratch.d.ts +45 -0
  172. package/src/core/graph/metis/native/refine/RefinementScratch.d.ts.map +1 -0
  173. package/src/core/graph/metis/native/refine/RefinementScratch.js +53 -0
  174. package/src/core/graph/metis/native/refine/compute_kway_params.d.ts +18 -0
  175. package/src/core/graph/metis/native/refine/compute_kway_params.d.ts.map +1 -0
  176. package/src/core/graph/metis/native/refine/compute_kway_params.js +138 -0
  177. package/src/core/graph/metis/native/refine/fm_kway.d.ts +63 -0
  178. package/src/core/graph/metis/native/refine/fm_kway.d.ts.map +1 -0
  179. package/src/core/graph/metis/native/refine/fm_kway.js +462 -0
  180. package/src/core/graph/metis/native/refine/project_kway.d.ts +22 -0
  181. package/src/core/graph/metis/native/refine/project_kway.d.ts.map +1 -0
  182. package/src/core/graph/metis/native/refine/project_kway.js +43 -0
  183. package/src/core/graph/metis/native/refine/refine_kway.d.ts +34 -0
  184. package/src/core/graph/metis/native/refine/refine_kway.d.ts.map +1 -0
  185. package/src/core/graph/metis/native/refine/refine_kway.js +43 -0
  186. package/src/core/math/linalg/eigen/matrix_householder_in_place.d.ts +2 -2
  187. package/src/core/math/linalg/eigen/matrix_householder_in_place.js +2 -2
  188. package/src/core/math/linalg/eigen/matrix_qr_in_place.d.ts +6 -4
  189. package/src/core/math/linalg/eigen/matrix_qr_in_place.d.ts.map +1 -1
  190. package/src/core/math/linalg/eigen/matrix_qr_in_place.js +69 -23
  191. package/src/engine/EngineHarness.d.ts +3 -1
  192. package/src/engine/EngineHarness.d.ts.map +1 -1
  193. package/src/engine/EngineHarness.js +3 -0
  194. package/src/engine/control/first-person/DESIGN.md +30 -6
  195. package/src/engine/control/first-person/DESIGN_EXTENSIONS.md +563 -0
  196. package/src/engine/control/first-person/FirstPersonPlayerController.d.ts +102 -9
  197. package/src/engine/control/first-person/FirstPersonPlayerController.d.ts.map +1 -1
  198. package/src/engine/control/first-person/FirstPersonPlayerController.js +38 -3
  199. package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.d.ts +533 -4
  200. package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.d.ts.map +1 -1
  201. package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.js +315 -6
  202. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts +220 -22
  203. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts.map +1 -1
  204. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.js +858 -241
  205. package/src/engine/control/first-person/TODO.md +127 -0
  206. package/src/engine/control/first-person/abilities/Ability.d.ts +101 -0
  207. package/src/engine/control/first-person/abilities/Ability.d.ts.map +1 -0
  208. package/src/engine/control/first-person/abilities/Ability.js +119 -0
  209. package/src/engine/control/first-person/abilities/AbilitySet.d.ts +86 -0
  210. package/src/engine/control/first-person/abilities/AbilitySet.d.ts.map +1 -0
  211. package/src/engine/control/first-person/abilities/AbilitySet.js +185 -0
  212. package/src/engine/control/first-person/abilities/LedgeGrab.d.ts +62 -0
  213. package/src/engine/control/first-person/abilities/LedgeGrab.d.ts.map +1 -0
  214. package/src/engine/control/first-person/abilities/LedgeGrab.js +199 -0
  215. package/src/engine/control/first-person/abilities/Mantle.d.ts +45 -0
  216. package/src/engine/control/first-person/abilities/Mantle.d.ts.map +1 -0
  217. package/src/engine/control/first-person/abilities/Mantle.js +188 -0
  218. package/src/engine/control/first-person/abilities/Slide.d.ts +33 -0
  219. package/src/engine/control/first-person/abilities/Slide.d.ts.map +1 -0
  220. package/src/engine/control/first-person/abilities/Slide.js +158 -0
  221. package/src/engine/control/first-person/abilities/WallJump.d.ts +45 -0
  222. package/src/engine/control/first-person/abilities/WallJump.d.ts.map +1 -0
  223. package/src/engine/control/first-person/abilities/WallJump.js +131 -0
  224. package/src/engine/control/first-person/abilities/WallRun.d.ts +44 -0
  225. package/src/engine/control/first-person/abilities/WallRun.d.ts.map +1 -0
  226. package/src/engine/control/first-person/abilities/WallRun.js +180 -0
  227. package/src/engine/control/first-person/composer/EyeOffsetStack.d.ts +49 -0
  228. package/src/engine/control/first-person/composer/EyeOffsetStack.d.ts.map +1 -0
  229. package/src/engine/control/first-person/composer/EyeOffsetStack.js +60 -0
  230. package/src/engine/control/first-person/mastery/BreathRhythmEvaluator.d.ts +100 -0
  231. package/src/engine/control/first-person/mastery/BreathRhythmEvaluator.d.ts.map +1 -0
  232. package/src/engine/control/first-person/mastery/BreathRhythmEvaluator.js +133 -0
  233. package/src/engine/control/first-person/mastery/DecisionPoint.d.ts +10 -0
  234. package/src/engine/control/first-person/mastery/DecisionPoint.d.ts.map +1 -0
  235. package/src/engine/control/first-person/mastery/DecisionPoint.js +30 -0
  236. package/src/engine/control/first-person/mastery/FootAsymmetryTurnEvaluator.d.ts +61 -0
  237. package/src/engine/control/first-person/mastery/FootAsymmetryTurnEvaluator.d.ts.map +1 -0
  238. package/src/engine/control/first-person/mastery/FootAsymmetryTurnEvaluator.js +109 -0
  239. package/src/engine/control/first-person/mastery/MasteryEvaluator.d.ts +40 -0
  240. package/src/engine/control/first-person/mastery/MasteryEvaluator.d.ts.map +1 -0
  241. package/src/engine/control/first-person/mastery/MasteryEvaluator.js +45 -0
  242. package/src/engine/control/first-person/mastery/MasteryScore.d.ts +68 -0
  243. package/src/engine/control/first-person/mastery/MasteryScore.d.ts.map +1 -0
  244. package/src/engine/control/first-person/mastery/MasteryScore.js +100 -0
  245. package/src/engine/control/first-person/mastery/MasterySet.d.ts +60 -0
  246. package/src/engine/control/first-person/mastery/MasterySet.d.ts.map +1 -0
  247. package/src/engine/control/first-person/mastery/MasterySet.js +86 -0
  248. package/src/engine/control/first-person/mastery/SlideInitiationTimingEvaluator.d.ts +58 -0
  249. package/src/engine/control/first-person/mastery/SlideInitiationTimingEvaluator.d.ts.map +1 -0
  250. package/src/engine/control/first-person/mastery/SlideInitiationTimingEvaluator.js +83 -0
  251. package/src/engine/control/first-person/mastery/StrideTimingJumpEvaluator.d.ts +69 -0
  252. package/src/engine/control/first-person/mastery/StrideTimingJumpEvaluator.d.ts.map +1 -0
  253. package/src/engine/control/first-person/mastery/StrideTimingJumpEvaluator.js +109 -0
  254. package/src/engine/control/first-person/math/Spring.d.ts +56 -0
  255. package/src/engine/control/first-person/math/Spring.d.ts.map +1 -0
  256. package/src/engine/control/first-person/math/Spring.js +71 -0
  257. package/src/engine/control/first-person/math/computeLRCBreathRate.d.ts +26 -0
  258. package/src/engine/control/first-person/math/computeLRCBreathRate.d.ts.map +1 -0
  259. package/src/engine/control/first-person/math/computeLRCBreathRate.js +41 -0
  260. package/src/engine/control/first-person/math/computeMassRatios.d.ts +35 -0
  261. package/src/engine/control/first-person/math/computeMassRatios.d.ts.map +1 -0
  262. package/src/engine/control/first-person/math/computeMassRatios.js +44 -0
  263. package/src/engine/control/first-person/pose/FirstPersonPose.d.ts +31 -1
  264. package/src/engine/control/first-person/pose/FirstPersonPose.d.ts.map +1 -1
  265. package/src/engine/control/first-person/pose/FirstPersonPose.js +49 -3
  266. package/src/engine/control/first-person/pose/FirstPersonPosture.d.ts +7 -0
  267. package/src/engine/control/first-person/pose/FirstPersonPosture.d.ts.map +1 -0
  268. package/src/engine/control/first-person/pose/FirstPersonPosture.js +27 -0
  269. package/src/engine/control/first-person/prototype_first_person_controller.js +550 -119
  270. package/src/engine/control/first-person/sensors/FirstPersonSensors.d.ts +58 -0
  271. package/src/engine/control/first-person/sensors/FirstPersonSensors.d.ts.map +1 -0
  272. package/src/engine/control/first-person/sensors/FirstPersonSensors.js +77 -0
  273. package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.d.ts +80 -0
  274. package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.d.ts.map +1 -0
  275. package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.js +196 -0
  276. package/src/engine/control/first-person/test/buildTestPlayer.d.ts +20 -0
  277. package/src/engine/control/first-person/test/buildTestPlayer.d.ts.map +1 -0
  278. package/src/engine/control/first-person/test/buildTestPlayer.js +28 -0
  279. package/src/engine/graphics/camera/testClippingPlaneComputation.js +0 -2
  280. package/src/engine/graphics/ecs/light/Light.d.ts.map +1 -1
  281. package/src/engine/graphics/ecs/light/Light.js +27 -0
  282. package/src/engine/graphics/ecs/light/LightSystem.js +1 -1
  283. package/src/engine/graphics/ecs/path/PathDisplaySystem.d.ts.map +1 -1
  284. package/src/engine/graphics/ecs/path/testPathDisplaySystem.js +0 -2
  285. package/src/engine/graphics/ecs/path/tube/prototypeAnimatedPathMask.js +0 -2
  286. package/src/engine/graphics/render/buffer/buffers/prototypeNormalFrameBuffer.js +0 -2
  287. package/src/engine/graphics/render/forward_plus/plugin/ptototypeFPPlugin.js +0 -2
  288. package/src/engine/graphics/render/visibility/hiz/prototypeHiZ.js +0 -2
  289. package/src/engine/navigation/grid/find_path_on_grid_astar.d.ts.map +1 -1
  290. package/src/engine/navigation/grid/find_path_on_grid_astar.js +11 -2
  291. package/src/engine/navigation/mesh/bt_mesh_face_find_path.d.ts.map +1 -1
  292. package/src/engine/navigation/mesh/bt_mesh_face_find_path.js +11 -1
  293. package/src/engine/physics/PLAN.md +236 -0
  294. package/src/engine/physics/body/BodyStorage.d.ts +187 -0
  295. package/src/engine/physics/body/BodyStorage.d.ts.map +1 -0
  296. package/src/engine/physics/body/BodyStorage.js +427 -0
  297. package/src/engine/physics/broadphase/PairList.d.ts +62 -0
  298. package/src/engine/physics/broadphase/PairList.d.ts.map +1 -0
  299. package/src/engine/physics/broadphase/PairList.js +97 -0
  300. package/src/engine/physics/broadphase/aabb_transform_oriented.d.ts +30 -0
  301. package/src/engine/physics/broadphase/aabb_transform_oriented.d.ts.map +1 -0
  302. package/src/engine/physics/broadphase/aabb_transform_oriented.js +93 -0
  303. package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts +16 -0
  304. package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts.map +1 -0
  305. package/src/engine/physics/broadphase/compute_fat_world_aabb.js +61 -0
  306. package/src/engine/physics/broadphase/generate_pairs.d.ts +38 -0
  307. package/src/engine/physics/broadphase/generate_pairs.d.ts.map +1 -0
  308. package/src/engine/physics/broadphase/generate_pairs.js +101 -0
  309. package/src/engine/physics/contact/ManifoldStore.d.ts +226 -0
  310. package/src/engine/physics/contact/ManifoldStore.d.ts.map +1 -0
  311. package/src/engine/physics/contact/ManifoldStore.js +499 -0
  312. package/src/engine/physics/ecs/BodyKind.d.ts +23 -0
  313. package/src/engine/physics/ecs/BodyKind.d.ts.map +1 -0
  314. package/src/engine/physics/ecs/BodyKind.js +24 -0
  315. package/src/engine/physics/ecs/Collider.d.ts +98 -0
  316. package/src/engine/physics/ecs/Collider.d.ts.map +1 -0
  317. package/src/engine/physics/ecs/Collider.js +136 -0
  318. package/src/engine/physics/ecs/ColliderFlags.d.ts +14 -0
  319. package/src/engine/physics/ecs/ColliderFlags.d.ts.map +1 -0
  320. package/src/engine/physics/ecs/ColliderFlags.js +15 -0
  321. package/src/engine/physics/ecs/ColliderObserverSystem.d.ts +58 -0
  322. package/src/engine/physics/ecs/ColliderObserverSystem.d.ts.map +1 -0
  323. package/src/engine/physics/ecs/ColliderObserverSystem.js +103 -0
  324. package/src/engine/physics/ecs/ColliderSerializationAdapter.d.ts +25 -0
  325. package/src/engine/physics/ecs/ColliderSerializationAdapter.d.ts.map +1 -0
  326. package/src/engine/physics/ecs/ColliderSerializationAdapter.js +37 -0
  327. package/src/engine/physics/ecs/PhysicsEvents.d.ts +15 -0
  328. package/src/engine/physics/ecs/PhysicsEvents.d.ts.map +1 -0
  329. package/src/engine/physics/ecs/PhysicsEvents.js +16 -0
  330. package/src/engine/physics/ecs/PhysicsSystem.d.ts +520 -0
  331. package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -0
  332. package/src/engine/physics/ecs/PhysicsSystem.js +1159 -0
  333. package/src/engine/physics/ecs/RigidBody.d.ts +197 -0
  334. package/src/engine/physics/ecs/RigidBody.d.ts.map +1 -0
  335. package/src/engine/physics/ecs/RigidBody.js +240 -0
  336. package/src/engine/physics/ecs/RigidBodyFlags.d.ts +21 -0
  337. package/src/engine/physics/ecs/RigidBodyFlags.d.ts.map +1 -0
  338. package/src/engine/physics/ecs/RigidBodyFlags.js +22 -0
  339. package/src/engine/physics/ecs/RigidBodySerializationAdapter.d.ts +28 -0
  340. package/src/engine/physics/ecs/RigidBodySerializationAdapter.d.ts.map +1 -0
  341. package/src/engine/physics/ecs/RigidBodySerializationAdapter.js +81 -0
  342. package/src/engine/physics/ecs/SleepState.d.ts +11 -0
  343. package/src/engine/physics/ecs/SleepState.d.ts.map +1 -0
  344. package/src/engine/physics/ecs/SleepState.js +12 -0
  345. package/src/engine/physics/events/ContactEventBuffer.d.ts +46 -0
  346. package/src/engine/physics/events/ContactEventBuffer.d.ts.map +1 -0
  347. package/src/engine/physics/events/ContactEventBuffer.js +83 -0
  348. package/src/engine/physics/events/diff_manifolds.d.ts +25 -0
  349. package/src/engine/physics/events/diff_manifolds.d.ts.map +1 -0
  350. package/src/engine/physics/events/diff_manifolds.js +50 -0
  351. package/src/engine/physics/fluid/FluidField.d.ts +294 -16
  352. package/src/engine/physics/fluid/FluidField.d.ts.map +1 -1
  353. package/src/engine/physics/fluid/FluidField.js +510 -66
  354. package/src/engine/physics/fluid/FluidSimulator.d.ts +188 -5
  355. package/src/engine/physics/fluid/FluidSimulator.d.ts.map +1 -1
  356. package/src/engine/physics/fluid/FluidSimulator.js +455 -95
  357. package/src/engine/physics/fluid/SliceVisualiser.d.ts +29 -6
  358. package/src/engine/physics/fluid/SliceVisualiser.d.ts.map +1 -1
  359. package/src/engine/physics/fluid/SliceVisualiser.js +190 -165
  360. package/src/engine/physics/fluid/ecs/FluidComponent.d.ts +154 -0
  361. package/src/engine/physics/fluid/ecs/FluidComponent.d.ts.map +1 -0
  362. package/src/engine/physics/fluid/ecs/FluidComponent.js +238 -0
  363. package/src/engine/physics/fluid/ecs/FluidEffectorsComponent.d.ts +45 -0
  364. package/src/engine/physics/fluid/ecs/FluidEffectorsComponent.d.ts.map +1 -0
  365. package/src/engine/physics/fluid/ecs/FluidEffectorsComponent.js +89 -0
  366. package/src/engine/physics/fluid/ecs/FluidSystem.d.ts +107 -0
  367. package/src/engine/physics/fluid/ecs/FluidSystem.d.ts.map +1 -0
  368. package/src/engine/physics/fluid/ecs/FluidSystem.js +278 -0
  369. package/src/engine/physics/fluid/effector/AbstractFluidEffector.d.ts +62 -1
  370. package/src/engine/physics/fluid/effector/AbstractFluidEffector.d.ts.map +1 -1
  371. package/src/engine/physics/fluid/effector/AbstractFluidEffector.js +81 -6
  372. package/src/engine/physics/fluid/effector/GlobalFluidEffector.d.ts +17 -4
  373. package/src/engine/physics/fluid/effector/GlobalFluidEffector.d.ts.map +1 -1
  374. package/src/engine/physics/fluid/effector/GlobalFluidEffector.js +105 -12
  375. package/src/engine/physics/fluid/effector/ImpulseFluidEffector.d.ts +43 -0
  376. package/src/engine/physics/fluid/effector/ImpulseFluidEffector.d.ts.map +1 -0
  377. package/src/engine/physics/fluid/effector/ImpulseFluidEffector.js +210 -0
  378. package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts +62 -1
  379. package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts.map +1 -1
  380. package/src/engine/physics/fluid/effector/WakeFluidEffector.js +302 -8
  381. package/src/engine/physics/fluid/prototype.js +102 -91
  382. package/src/engine/physics/fluid/solver/optimal_sor_omega.d.ts +33 -0
  383. package/src/engine/physics/fluid/solver/optimal_sor_omega.d.ts.map +1 -0
  384. package/src/engine/physics/fluid/solver/optimal_sor_omega.js +41 -0
  385. package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.d.ts +20 -5
  386. package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.d.ts.map +1 -1
  387. package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.js +60 -38
  388. package/src/engine/physics/fluid/solver/v3_grid_apply_diffusion.d.ts +25 -4
  389. package/src/engine/physics/fluid/solver/v3_grid_apply_diffusion.d.ts.map +1 -1
  390. package/src/engine/physics/fluid/solver/v3_grid_apply_diffusion.js +93 -73
  391. package/src/engine/physics/fluid/solver/v3_grid_apply_scalar_advection.d.ts +23 -0
  392. package/src/engine/physics/fluid/solver/v3_grid_apply_scalar_advection.d.ts.map +1 -0
  393. package/src/engine/physics/fluid/solver/v3_grid_apply_scalar_advection.js +60 -0
  394. package/src/engine/physics/fluid/solver/v3_grid_compute_divergence.d.ts +23 -0
  395. package/src/engine/physics/fluid/solver/v3_grid_compute_divergence.d.ts.map +1 -0
  396. package/src/engine/physics/fluid/solver/v3_grid_compute_divergence.js +68 -0
  397. package/src/engine/physics/fluid/solver/v3_grid_compute_solid_neighbour_mask.d.ts +30 -0
  398. package/src/engine/physics/fluid/solver/v3_grid_compute_solid_neighbour_mask.d.ts.map +1 -0
  399. package/src/engine/physics/fluid/solver/v3_grid_compute_solid_neighbour_mask.js +66 -0
  400. package/src/engine/physics/fluid/solver/v3_grid_patch_edges_uniform.d.ts +26 -0
  401. package/src/engine/physics/fluid/solver/v3_grid_patch_edges_uniform.d.ts.map +1 -0
  402. package/src/engine/physics/fluid/solver/v3_grid_patch_edges_uniform.js +113 -0
  403. package/src/engine/physics/fluid/solver/v3_grid_shift_in_place.d.ts +30 -0
  404. package/src/engine/physics/fluid/solver/v3_grid_shift_in_place.d.ts.map +1 -0
  405. package/src/engine/physics/fluid/solver/v3_grid_shift_in_place.js +107 -0
  406. package/src/engine/physics/fluid/solver/v3_grid_solve_pressure.d.ts +49 -0
  407. package/src/engine/physics/fluid/solver/v3_grid_solve_pressure.d.ts.map +1 -0
  408. package/src/engine/physics/fluid/solver/v3_grid_solve_pressure.js +126 -0
  409. package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_pcg.d.ts +93 -0
  410. package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_pcg.d.ts.map +1 -0
  411. package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_pcg.js +424 -0
  412. package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_unmasked_legacy.d.ts +20 -0
  413. package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_unmasked_legacy.d.ts.map +1 -0
  414. package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_unmasked_legacy.js +83 -0
  415. package/src/engine/physics/fluid/solver/v3_grid_subtract_pressure_gradient.d.ts +26 -0
  416. package/src/engine/physics/fluid/solver/v3_grid_subtract_pressure_gradient.d.ts.map +1 -0
  417. package/src/engine/physics/fluid/solver/v3_grid_subtract_pressure_gradient.js +70 -0
  418. package/src/engine/physics/gjk/expanding_polytope_algorithm.d.ts.map +1 -1
  419. package/src/engine/physics/gjk/expanding_polytope_algorithm.js +8 -10
  420. package/src/engine/physics/inertia/world_inverse_inertia.d.ts +29 -0
  421. package/src/engine/physics/inertia/world_inverse_inertia.d.ts.map +1 -0
  422. package/src/engine/physics/inertia/world_inverse_inertia.js +79 -0
  423. package/src/engine/physics/integration/integrate_position.d.ts +16 -0
  424. package/src/engine/physics/integration/integrate_position.d.ts.map +1 -0
  425. package/src/engine/physics/integration/integrate_position.js +48 -0
  426. package/src/engine/physics/integration/integrate_velocity.d.ts +25 -0
  427. package/src/engine/physics/integration/integrate_velocity.d.ts.map +1 -0
  428. package/src/engine/physics/integration/integrate_velocity.js +79 -0
  429. package/src/engine/physics/integration/quat_integrate.d.ts +27 -0
  430. package/src/engine/physics/integration/quat_integrate.d.ts.map +1 -0
  431. package/src/engine/physics/integration/quat_integrate.js +62 -0
  432. package/src/engine/physics/island/IslandBuilder.d.ts +167 -0
  433. package/src/engine/physics/island/IslandBuilder.d.ts.map +1 -0
  434. package/src/engine/physics/island/IslandBuilder.js +411 -0
  435. package/src/engine/physics/island/union_find.d.ts +51 -0
  436. package/src/engine/physics/island/union_find.d.ts.map +1 -0
  437. package/src/engine/physics/island/union_find.js +76 -0
  438. package/src/engine/physics/narrowphase/PosedShape.d.ts +59 -0
  439. package/src/engine/physics/narrowphase/PosedShape.d.ts.map +1 -0
  440. package/src/engine/physics/narrowphase/PosedShape.js +110 -0
  441. package/src/engine/physics/narrowphase/box_box_manifold.d.ts +32 -0
  442. package/src/engine/physics/narrowphase/box_box_manifold.d.ts.map +1 -0
  443. package/src/engine/physics/narrowphase/box_box_manifold.js +543 -0
  444. package/src/engine/physics/narrowphase/capsule_contacts.d.ts +122 -0
  445. package/src/engine/physics/narrowphase/capsule_contacts.d.ts.map +1 -0
  446. package/src/engine/physics/narrowphase/capsule_contacts.js +508 -0
  447. package/src/engine/physics/narrowphase/narrowphase_step.d.ts +11 -0
  448. package/src/engine/physics/narrowphase/narrowphase_step.d.ts.map +1 -0
  449. package/src/engine/physics/narrowphase/narrowphase_step.js +382 -0
  450. package/src/engine/physics/narrowphase/sphere_box_contact.d.ts +38 -0
  451. package/src/engine/physics/narrowphase/sphere_box_contact.d.ts.map +1 -0
  452. package/src/engine/physics/narrowphase/sphere_box_contact.js +130 -0
  453. package/src/engine/physics/narrowphase/sphere_sphere_contact.d.ts +26 -0
  454. package/src/engine/physics/narrowphase/sphere_sphere_contact.d.ts.map +1 -0
  455. package/src/engine/physics/narrowphase/sphere_sphere_contact.js +51 -0
  456. package/src/engine/physics/queries/PhysicsSurfacePoint.d.ts +83 -0
  457. package/src/engine/physics/queries/PhysicsSurfacePoint.d.ts.map +1 -0
  458. package/src/engine/physics/queries/PhysicsSurfacePoint.js +100 -0
  459. package/src/engine/physics/queries/raycast.d.ts +20 -0
  460. package/src/engine/physics/queries/raycast.d.ts.map +1 -0
  461. package/src/engine/physics/queries/raycast.js +249 -0
  462. package/src/engine/physics/solver/friction_cone.d.ts +16 -0
  463. package/src/engine/physics/solver/friction_cone.d.ts.map +1 -0
  464. package/src/engine/physics/solver/friction_cone.js +37 -0
  465. package/src/engine/physics/solver/solve_contacts.d.ts +36 -0
  466. package/src/engine/physics/solver/solve_contacts.d.ts.map +1 -0
  467. package/src/engine/physics/solver/solve_contacts.js +598 -0
  468. package/src/core/geom/3d/topology/struct/binary/io/edge/OrderedEdge.d.ts +0 -34
  469. package/src/core/geom/3d/topology/struct/binary/io/edge/OrderedEdge.d.ts.map +0 -1
  470. package/src/core/geom/3d/topology/struct/binary/io/edge/OrderedEdge.js +0 -66
  471. package/src/core/geom/3d/topology/struct/binary/io/edge/bt_mesh_calc_edges.d.ts +0 -2
  472. package/src/core/geom/3d/topology/struct/binary/io/edge/bt_mesh_calc_edges.d.ts.map +0 -1
  473. package/src/core/geom/3d/topology/struct/binary/io/edge/bt_mesh_calc_edges.js +0 -54
  474. package/src/core/geom/3d/topology/struct/binary/io/edge/get_or_create_edge_map.d.ts +0 -2
  475. package/src/core/geom/3d/topology/struct/binary/io/edge/get_or_create_edge_map.d.ts.map +0 -1
  476. package/src/core/geom/3d/topology/struct/binary/io/edge/get_or_create_edge_map.js +0 -26
  477. package/src/engine/ecs/components/Motion.d.ts +0 -21
  478. package/src/engine/ecs/components/Motion.d.ts.map +0 -1
  479. package/src/engine/ecs/components/Motion.js +0 -27
  480. package/src/engine/ecs/components/MotionSerializationAdapter.d.ts +0 -20
  481. package/src/engine/ecs/components/MotionSerializationAdapter.d.ts.map +0 -1
  482. package/src/engine/ecs/components/MotionSerializationAdapter.js +0 -26
  483. package/src/engine/ecs/systems/MotionSystem.d.ts +0 -9
  484. package/src/engine/ecs/systems/MotionSystem.d.ts.map +0 -1
  485. package/src/engine/ecs/systems/MotionSystem.js +0 -29
  486. package/src/engine/physics/fluid/Fluid.d.ts +0 -26
  487. package/src/engine/physics/fluid/Fluid.d.ts.map +0 -1
  488. package/src/engine/physics/fluid/Fluid.js +0 -221
  489. package/src/engine/physics/fluid/solver/v3_grid_apply_advection_reverse.d.ts +0 -7
  490. package/src/engine/physics/fluid/solver/v3_grid_apply_advection_reverse.d.ts.map +0 -1
  491. package/src/engine/physics/fluid/solver/v3_grid_apply_advection_reverse.js +0 -8
@@ -0,0 +1,197 @@
1
+ /**
2
+ * Sentinel value for {@link RigidBody#_bodyId} prior to allocation by a
3
+ * {@link PhysicsSystem}. After {@link PhysicsSystem#link}, the id is a packed
4
+ * `(index << 8) | generation` integer.
5
+ *
6
+ * @type {number}
7
+ */
8
+ export const RIGID_BODY_UNALLOCATED: number;
9
+ /**
10
+ * Rigid-body component.
11
+ *
12
+ * Pose lives on {@link Transform}; this component owns the dynamic state that is not
13
+ * part of TRS: velocity, mass, inertia, damping, gravity scale, layer / mask
14
+ * filtering and a small set of bit-flags ({@link RigidBodyFlags}).
15
+ *
16
+ * Defaults are conservative: the body translates under forces but cannot rotate
17
+ * unless the user explicitly sets {@link inverseInertiaLocal} — forgetting to
18
+ * configure inertia results in a locked-rotation body, never a NaN tumble.
19
+ *
20
+ * @author Alex Goldring
21
+ * @copyright Company Named Limited (c) 2026
22
+ */
23
+ export class RigidBody {
24
+ /**
25
+ * @type {BodyKind|number}
26
+ */
27
+ kind: BodyKind | number;
28
+ /**
29
+ * Linear velocity in world space, m/s.
30
+ * @readonly
31
+ * @type {Vector3}
32
+ */
33
+ readonly linearVelocity: Vector3;
34
+ /**
35
+ * Angular velocity in world space, rad/s.
36
+ * @readonly
37
+ * @type {Vector3}
38
+ */
39
+ readonly angularVelocity: Vector3;
40
+ /**
41
+ * Accumulator for forces applied between fixed-update steps. Consumed and
42
+ * zeroed by the integrator. User code applies via
43
+ * {@link PhysicsSystem#applyForce}; do not write directly.
44
+ * @readonly
45
+ * @type {Vector3}
46
+ */
47
+ readonly accumulatedForce: Vector3;
48
+ /**
49
+ * Accumulator for torques applied between fixed-update steps. Consumed and
50
+ * zeroed by the integrator.
51
+ * @readonly
52
+ * @type {Vector3}
53
+ */
54
+ readonly accumulatedTorque: Vector3;
55
+ /**
56
+ * Total mass, kg. Must be positive for Dynamic bodies; Static / Kinematic
57
+ * bodies behave as if mass were infinite regardless of this value.
58
+ * @type {number}
59
+ */
60
+ mass: number;
61
+ /**
62
+ * Inverse principal-frame inertia, diagonal. Components of zero lock the
63
+ * corresponding rotational degree of freedom. The default of (0,0,0) means
64
+ * rotation is locked until the user sets a value.
65
+ * @readonly
66
+ * @type {Vector3}
67
+ */
68
+ readonly inverseInertiaLocal: Vector3;
69
+ /**
70
+ * @type {number}
71
+ */
72
+ linearDamping: number;
73
+ /**
74
+ * @type {number}
75
+ */
76
+ angularDamping: number;
77
+ /**
78
+ * Multiplier for the world gravity on this body. 1 = normal gravity,
79
+ * 0 = floating, negative values invert.
80
+ * @type {number}
81
+ */
82
+ gravityScale: number;
83
+ /**
84
+ * Layer bitmask identifying this body's category.
85
+ * @type {number}
86
+ */
87
+ layer: number;
88
+ /**
89
+ * Mask of layers this body collides with.
90
+ * @type {number}
91
+ */
92
+ mask: number;
93
+ /**
94
+ * @type {RigidBodyFlags|number}
95
+ */
96
+ flags: RigidBodyFlags | number;
97
+ /**
98
+ * Owned by the {@link PhysicsSystem}; user code must not write.
99
+ * @type {SleepState|number}
100
+ */
101
+ sleepState: SleepState | number;
102
+ /**
103
+ * Seconds spent below the sleep-threshold velocity. The system increments
104
+ * this each step the body is essentially at rest; once it crosses
105
+ * {@link PhysicsSystem}'s sleep threshold, the body is moved out of the
106
+ * active set. Reset to 0 whenever the body moves above threshold.
107
+ *
108
+ * Transient runtime state — not serialised, not user-writable.
109
+ * @type {number}
110
+ */
111
+ sleep_timer: number;
112
+ /**
113
+ * Next body in this body's atomic-sleep group, expressed as a body
114
+ * **index** (NOT a packed id). Sleep groups are circular doubly-linked
115
+ * lists threaded through every member when an island goes to sleep
116
+ * atomically; on wake, the physics system walks the chain to wake every
117
+ * member in the same step.
118
+ *
119
+ * `-1` when the body is awake or asleep as a singleton.
120
+ *
121
+ * Transient runtime state — not serialised, not user-writable.
122
+ * @type {number}
123
+ */
124
+ sleep_group_next: number;
125
+ /**
126
+ * Previous body in this body's atomic-sleep group. See {@link sleep_group_next}.
127
+ * @type {number}
128
+ */
129
+ sleep_group_prev: number;
130
+ /**
131
+ * Packed `(index << 8) | generation` body handle. {@link RIGID_BODY_UNALLOCATED}
132
+ * before the body is linked into a {@link PhysicsSystem}. System-private.
133
+ * @type {number}
134
+ */
135
+ _bodyId: number;
136
+ /**
137
+ *
138
+ * @param {number|RigidBodyFlags} flag
139
+ */
140
+ setFlag(flag: number | RigidBodyFlags): void;
141
+ /**
142
+ *
143
+ * @param {number|RigidBodyFlags} flag
144
+ */
145
+ clearFlag(flag: number | RigidBodyFlags): void;
146
+ /**
147
+ *
148
+ * @param {number|RigidBodyFlags} flag
149
+ * @returns {boolean}
150
+ */
151
+ getFlag(flag: number | RigidBodyFlags): boolean;
152
+ /**
153
+ *
154
+ * @param {number|RigidBodyFlags} flag
155
+ * @param {boolean} value
156
+ */
157
+ writeFlag(flag: number | RigidBodyFlags, value: boolean): void;
158
+ toJSON(): {
159
+ kind: number;
160
+ linearVelocity: {
161
+ x: number;
162
+ y: number;
163
+ z: number;
164
+ };
165
+ angularVelocity: {
166
+ x: number;
167
+ y: number;
168
+ z: number;
169
+ };
170
+ mass: number;
171
+ inverseInertiaLocal: {
172
+ x: number;
173
+ y: number;
174
+ z: number;
175
+ };
176
+ linearDamping: number;
177
+ angularDamping: number;
178
+ gravityScale: number;
179
+ layer: number;
180
+ mask: number;
181
+ flags: number;
182
+ };
183
+ fromJSON(json: any): void;
184
+ /**
185
+ * @readonly
186
+ * @type {boolean}
187
+ */
188
+ readonly isRigidBody: boolean;
189
+ }
190
+ export namespace RigidBody {
191
+ let typeName: string;
192
+ }
193
+ import { BodyKind } from "./BodyKind.js";
194
+ import Vector3 from "../../../core/geom/Vector3.js";
195
+ import { RigidBodyFlags } from "./RigidBodyFlags.js";
196
+ import { SleepState } from "./SleepState.js";
197
+ //# sourceMappingURL=RigidBody.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RigidBody.d.ts","sourceRoot":"","sources":["../../../../../src/engine/physics/ecs/RigidBody.js"],"names":[],"mappings":"AAKA;;;;;;GAMG;AACH,qCAFU,MAAM,CAEyB;AAEzC;;;;;;;;;;;;;GAaG;AACH;IAEI;;OAEG;IACH,MAFU,QAAQ,GAAC,MAAM,CAED;IAExB;;;;OAIG;IACH,yBAFU,OAAO,CAEqB;IAEtC;;;;OAIG;IACH,0BAFU,OAAO,CAEsB;IAEvC;;;;;;OAMG;IACH,2BAFU,OAAO,CAEuB;IAExC;;;;;OAKG;IACH,4BAFU,OAAO,CAEwB;IAEzC;;;;OAIG;IACH,MAFU,MAAM,CAEP;IAET;;;;;;OAMG;IACH,8BAFU,OAAO,CAE0B;IAE3C;;OAEG;IACH,eAFU,MAAM,CAEE;IAElB;;OAEG;IACH,gBAFU,MAAM,CAEG;IAEnB;;;;OAIG;IACH,cAFU,MAAM,CAEC;IAEjB;;;OAGG;IACH,OAFU,MAAM,CAEN;IAEV;;;OAGG;IACH,MAFU,MAAM,CAEM;IAEtB;;OAEG;IACH,OAFU,cAAc,GAAC,MAAM,CAEH;IAE5B;;;OAGG;IACH,YAFU,UAAU,GAAC,MAAM,CAEG;IAE9B;;;;;;;;OAQG;IACH,aAFU,MAAM,CAEA;IAEhB;;;;;;;;;;;OAWG;IACH,kBAFU,MAAM,CAEM;IAEtB;;;OAGG;IACH,kBAFU,MAAM,CAEM;IAEtB;;;;OAIG;IACH,SAFU,MAAM,CAEiB;IAEjC;;;OAGG;IACH,cAFW,MAAM,GAAC,cAAc,QAI/B;IAED;;;OAGG;IACH,gBAFW,MAAM,GAAC,cAAc,QAI/B;IAED;;;;OAIG;IACH,cAHW,MAAM,GAAC,cAAc,GACnB,OAAO,CAInB;IAED;;;;OAIG;IACH,gBAHW,MAAM,GAAC,cAAc,SACrB,OAAO,QAQjB;IAED;;;;;;;;;;;;;;;;;;;;;;;;MAcC;IAED,0BAYC;IASL;;;OAGG;IACH,sBAFU,OAAO,CAEc;CAZ9B;;kBAIS,MAAM;;yBAtOS,eAAe;oBADpB,+BAA+B;+BAEpB,qBAAqB;2BACzB,iBAAiB"}
@@ -0,0 +1,240 @@
1
+ import Vector3 from "../../../core/geom/Vector3.js";
2
+ import { BodyKind } from "./BodyKind.js";
3
+ import { RigidBodyFlags } from "./RigidBodyFlags.js";
4
+ import { SleepState } from "./SleepState.js";
5
+
6
+ /**
7
+ * Sentinel value for {@link RigidBody#_bodyId} prior to allocation by a
8
+ * {@link PhysicsSystem}. After {@link PhysicsSystem#link}, the id is a packed
9
+ * `(index << 8) | generation` integer.
10
+ *
11
+ * @type {number}
12
+ */
13
+ export const RIGID_BODY_UNALLOCATED = -1;
14
+
15
+ /**
16
+ * Rigid-body component.
17
+ *
18
+ * Pose lives on {@link Transform}; this component owns the dynamic state that is not
19
+ * part of TRS: velocity, mass, inertia, damping, gravity scale, layer / mask
20
+ * filtering and a small set of bit-flags ({@link RigidBodyFlags}).
21
+ *
22
+ * Defaults are conservative: the body translates under forces but cannot rotate
23
+ * unless the user explicitly sets {@link inverseInertiaLocal} — forgetting to
24
+ * configure inertia results in a locked-rotation body, never a NaN tumble.
25
+ *
26
+ * @author Alex Goldring
27
+ * @copyright Company Named Limited (c) 2026
28
+ */
29
+ export class RigidBody {
30
+
31
+ /**
32
+ * @type {BodyKind|number}
33
+ */
34
+ kind = BodyKind.Dynamic;
35
+
36
+ /**
37
+ * Linear velocity in world space, m/s.
38
+ * @readonly
39
+ * @type {Vector3}
40
+ */
41
+ linearVelocity = new Vector3(0, 0, 0);
42
+
43
+ /**
44
+ * Angular velocity in world space, rad/s.
45
+ * @readonly
46
+ * @type {Vector3}
47
+ */
48
+ angularVelocity = new Vector3(0, 0, 0);
49
+
50
+ /**
51
+ * Accumulator for forces applied between fixed-update steps. Consumed and
52
+ * zeroed by the integrator. User code applies via
53
+ * {@link PhysicsSystem#applyForce}; do not write directly.
54
+ * @readonly
55
+ * @type {Vector3}
56
+ */
57
+ accumulatedForce = new Vector3(0, 0, 0);
58
+
59
+ /**
60
+ * Accumulator for torques applied between fixed-update steps. Consumed and
61
+ * zeroed by the integrator.
62
+ * @readonly
63
+ * @type {Vector3}
64
+ */
65
+ accumulatedTorque = new Vector3(0, 0, 0);
66
+
67
+ /**
68
+ * Total mass, kg. Must be positive for Dynamic bodies; Static / Kinematic
69
+ * bodies behave as if mass were infinite regardless of this value.
70
+ * @type {number}
71
+ */
72
+ mass = 1;
73
+
74
+ /**
75
+ * Inverse principal-frame inertia, diagonal. Components of zero lock the
76
+ * corresponding rotational degree of freedom. The default of (0,0,0) means
77
+ * rotation is locked until the user sets a value.
78
+ * @readonly
79
+ * @type {Vector3}
80
+ */
81
+ inverseInertiaLocal = new Vector3(0, 0, 0);
82
+
83
+ /**
84
+ * @type {number}
85
+ */
86
+ linearDamping = 0;
87
+
88
+ /**
89
+ * @type {number}
90
+ */
91
+ angularDamping = 0;
92
+
93
+ /**
94
+ * Multiplier for the world gravity on this body. 1 = normal gravity,
95
+ * 0 = floating, negative values invert.
96
+ * @type {number}
97
+ */
98
+ gravityScale = 1;
99
+
100
+ /**
101
+ * Layer bitmask identifying this body's category.
102
+ * @type {number}
103
+ */
104
+ layer = 1;
105
+
106
+ /**
107
+ * Mask of layers this body collides with.
108
+ * @type {number}
109
+ */
110
+ mask = 0xFFFFFFFF | 0;
111
+
112
+ /**
113
+ * @type {RigidBodyFlags|number}
114
+ */
115
+ flags = RigidBodyFlags.None;
116
+
117
+ /**
118
+ * Owned by the {@link PhysicsSystem}; user code must not write.
119
+ * @type {SleepState|number}
120
+ */
121
+ sleepState = SleepState.Awake;
122
+
123
+ /**
124
+ * Seconds spent below the sleep-threshold velocity. The system increments
125
+ * this each step the body is essentially at rest; once it crosses
126
+ * {@link PhysicsSystem}'s sleep threshold, the body is moved out of the
127
+ * active set. Reset to 0 whenever the body moves above threshold.
128
+ *
129
+ * Transient runtime state — not serialised, not user-writable.
130
+ * @type {number}
131
+ */
132
+ sleep_timer = 0;
133
+
134
+ /**
135
+ * Next body in this body's atomic-sleep group, expressed as a body
136
+ * **index** (NOT a packed id). Sleep groups are circular doubly-linked
137
+ * lists threaded through every member when an island goes to sleep
138
+ * atomically; on wake, the physics system walks the chain to wake every
139
+ * member in the same step.
140
+ *
141
+ * `-1` when the body is awake or asleep as a singleton.
142
+ *
143
+ * Transient runtime state — not serialised, not user-writable.
144
+ * @type {number}
145
+ */
146
+ sleep_group_next = -1;
147
+
148
+ /**
149
+ * Previous body in this body's atomic-sleep group. See {@link sleep_group_next}.
150
+ * @type {number}
151
+ */
152
+ sleep_group_prev = -1;
153
+
154
+ /**
155
+ * Packed `(index << 8) | generation` body handle. {@link RIGID_BODY_UNALLOCATED}
156
+ * before the body is linked into a {@link PhysicsSystem}. System-private.
157
+ * @type {number}
158
+ */
159
+ _bodyId = RIGID_BODY_UNALLOCATED;
160
+
161
+ /**
162
+ *
163
+ * @param {number|RigidBodyFlags} flag
164
+ */
165
+ setFlag(flag) {
166
+ this.flags |= flag;
167
+ }
168
+
169
+ /**
170
+ *
171
+ * @param {number|RigidBodyFlags} flag
172
+ */
173
+ clearFlag(flag) {
174
+ this.flags &= ~flag;
175
+ }
176
+
177
+ /**
178
+ *
179
+ * @param {number|RigidBodyFlags} flag
180
+ * @returns {boolean}
181
+ */
182
+ getFlag(flag) {
183
+ return (this.flags & flag) === flag;
184
+ }
185
+
186
+ /**
187
+ *
188
+ * @param {number|RigidBodyFlags} flag
189
+ * @param {boolean} value
190
+ */
191
+ writeFlag(flag, value) {
192
+ if (value) {
193
+ this.setFlag(flag);
194
+ } else {
195
+ this.clearFlag(flag);
196
+ }
197
+ }
198
+
199
+ toJSON() {
200
+ return {
201
+ kind: this.kind,
202
+ linearVelocity: this.linearVelocity.toJSON(),
203
+ angularVelocity: this.angularVelocity.toJSON(),
204
+ mass: this.mass,
205
+ inverseInertiaLocal: this.inverseInertiaLocal.toJSON(),
206
+ linearDamping: this.linearDamping,
207
+ angularDamping: this.angularDamping,
208
+ gravityScale: this.gravityScale,
209
+ layer: this.layer,
210
+ mask: this.mask,
211
+ flags: this.flags,
212
+ };
213
+ }
214
+
215
+ fromJSON(json) {
216
+ if (json.kind !== undefined) this.kind = json.kind;
217
+ if (json.linearVelocity !== undefined) this.linearVelocity.fromJSON(json.linearVelocity);
218
+ if (json.angularVelocity !== undefined) this.angularVelocity.fromJSON(json.angularVelocity);
219
+ if (json.mass !== undefined) this.mass = json.mass;
220
+ if (json.inverseInertiaLocal !== undefined) this.inverseInertiaLocal.fromJSON(json.inverseInertiaLocal);
221
+ if (json.linearDamping !== undefined) this.linearDamping = json.linearDamping;
222
+ if (json.angularDamping !== undefined) this.angularDamping = json.angularDamping;
223
+ if (json.gravityScale !== undefined) this.gravityScale = json.gravityScale;
224
+ if (json.layer !== undefined) this.layer = json.layer;
225
+ if (json.mask !== undefined) this.mask = json.mask;
226
+ if (json.flags !== undefined) this.flags = json.flags;
227
+ }
228
+ }
229
+
230
+ /**
231
+ * @readonly
232
+ * @type {string}
233
+ */
234
+ RigidBody.typeName = "RigidBody";
235
+
236
+ /**
237
+ * @readonly
238
+ * @type {boolean}
239
+ */
240
+ RigidBody.prototype.isRigidBody = true;
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Bit-flags carried on {@link RigidBody }.
3
+ *
4
+ * - {@link IsSensor }: contacts are detected and events fired, but no impulses are
5
+ * applied. Useful for triggers.
6
+ * - {@link LockRotX }/{@link LockRotY }/{@link LockRotZ }: the corresponding angular
7
+ * degree of freedom is fixed. Implemented by zeroing the matching inverse-inertia
8
+ * component during solve.
9
+ * - {@link DisableSleep }: this body never enters the sleeping set. Bodies near it
10
+ * may still sleep when stable.
11
+ */
12
+ export type RigidBodyFlags = number;
13
+ export namespace RigidBodyFlags {
14
+ let None: number;
15
+ let IsSensor: number;
16
+ let LockRotX: number;
17
+ let LockRotY: number;
18
+ let LockRotZ: number;
19
+ let DisableSleep: number;
20
+ }
21
+ //# sourceMappingURL=RigidBodyFlags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RigidBodyFlags.d.ts","sourceRoot":"","sources":["../../../../../src/engine/physics/ecs/RigidBodyFlags.js"],"names":[],"mappings":";;;;;;;;;;;6BAYU,MAAM"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Bit-flags carried on {@link RigidBody}.
3
+ *
4
+ * - {@link IsSensor}: contacts are detected and events fired, but no impulses are
5
+ * applied. Useful for triggers.
6
+ * - {@link LockRotX}/{@link LockRotY}/{@link LockRotZ}: the corresponding angular
7
+ * degree of freedom is fixed. Implemented by zeroing the matching inverse-inertia
8
+ * component during solve.
9
+ * - {@link DisableSleep}: this body never enters the sleeping set. Bodies near it
10
+ * may still sleep when stable.
11
+ *
12
+ * @readonly
13
+ * @enum {number}
14
+ */
15
+ export const RigidBodyFlags = {
16
+ None: 0,
17
+ IsSensor: 1,
18
+ LockRotX: 2,
19
+ LockRotY: 4,
20
+ LockRotZ: 8,
21
+ DisableSleep: 16,
22
+ };
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Binary serialization for {@link RigidBody}.
3
+ *
4
+ * Only the configurable / persistent fields are written. Transient runtime state
5
+ * (`_bodyId`, `sleepState`, accumulated force/torque) is owned by the
6
+ * {@link PhysicsSystem} and recomputed on link — serialising it would tie the
7
+ * stream to a particular world instance.
8
+ */
9
+ export class RigidBodySerializationAdapter extends BinaryClassSerializationAdapter<any> {
10
+ constructor();
11
+ klass: typeof RigidBody;
12
+ version: number;
13
+ /**
14
+ *
15
+ * @param {BinaryBuffer} buffer
16
+ * @param {RigidBody} value
17
+ */
18
+ serialize(buffer: BinaryBuffer, value: RigidBody): void;
19
+ /**
20
+ *
21
+ * @param {BinaryBuffer} buffer
22
+ * @param {RigidBody} value
23
+ */
24
+ deserialize(buffer: BinaryBuffer, value: RigidBody): void;
25
+ }
26
+ import { BinaryClassSerializationAdapter } from "../../ecs/storage/binary/BinaryClassSerializationAdapter.js";
27
+ import { RigidBody } from "./RigidBody.js";
28
+ //# sourceMappingURL=RigidBodySerializationAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RigidBodySerializationAdapter.d.ts","sourceRoot":"","sources":["../../../../../src/engine/physics/ecs/RigidBodySerializationAdapter.js"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH;;IAEI,wBAAkB;IAClB,gBAAY;IAEZ;;;;OAIG;IACH,uCAFW,SAAS,QA0BnB;IAED;;;;OAIG;IACH,yCAFW,SAAS,QA6BnB;CACJ;gDAhF+C,6DAA6D;0BACnF,gBAAgB"}
@@ -0,0 +1,81 @@
1
+ import { BinaryClassSerializationAdapter } from "../../ecs/storage/binary/BinaryClassSerializationAdapter.js";
2
+ import { RigidBody } from "./RigidBody.js";
3
+
4
+ /**
5
+ * Binary serialization for {@link RigidBody}.
6
+ *
7
+ * Only the configurable / persistent fields are written. Transient runtime state
8
+ * (`_bodyId`, `sleepState`, accumulated force/torque) is owned by the
9
+ * {@link PhysicsSystem} and recomputed on link — serialising it would tie the
10
+ * stream to a particular world instance.
11
+ */
12
+ export class RigidBodySerializationAdapter extends BinaryClassSerializationAdapter {
13
+
14
+ klass = RigidBody;
15
+ version = 0;
16
+
17
+ /**
18
+ *
19
+ * @param {BinaryBuffer} buffer
20
+ * @param {RigidBody} value
21
+ */
22
+ serialize(buffer, value) {
23
+ buffer.writeUint8(value.kind);
24
+
25
+ buffer.writeFloat64(value.linearVelocity.x);
26
+ buffer.writeFloat64(value.linearVelocity.y);
27
+ buffer.writeFloat64(value.linearVelocity.z);
28
+
29
+ buffer.writeFloat64(value.angularVelocity.x);
30
+ buffer.writeFloat64(value.angularVelocity.y);
31
+ buffer.writeFloat64(value.angularVelocity.z);
32
+
33
+ buffer.writeFloat64(value.mass);
34
+
35
+ buffer.writeFloat64(value.inverseInertiaLocal.x);
36
+ buffer.writeFloat64(value.inverseInertiaLocal.y);
37
+ buffer.writeFloat64(value.inverseInertiaLocal.z);
38
+
39
+ buffer.writeFloat64(value.linearDamping);
40
+ buffer.writeFloat64(value.angularDamping);
41
+ buffer.writeFloat64(value.gravityScale);
42
+
43
+ buffer.writeUint32(value.layer >>> 0);
44
+ buffer.writeUint32(value.mask >>> 0);
45
+ buffer.writeUint32(value.flags >>> 0);
46
+ }
47
+
48
+ /**
49
+ *
50
+ * @param {BinaryBuffer} buffer
51
+ * @param {RigidBody} value
52
+ */
53
+ deserialize(buffer, value) {
54
+ value.kind = buffer.readUint8();
55
+
56
+ const lvx = buffer.readFloat64();
57
+ const lvy = buffer.readFloat64();
58
+ const lvz = buffer.readFloat64();
59
+ value.linearVelocity.set(lvx, lvy, lvz);
60
+
61
+ const avx = buffer.readFloat64();
62
+ const avy = buffer.readFloat64();
63
+ const avz = buffer.readFloat64();
64
+ value.angularVelocity.set(avx, avy, avz);
65
+
66
+ value.mass = buffer.readFloat64();
67
+
68
+ const iix = buffer.readFloat64();
69
+ const iiy = buffer.readFloat64();
70
+ const iiz = buffer.readFloat64();
71
+ value.inverseInertiaLocal.set(iix, iiy, iiz);
72
+
73
+ value.linearDamping = buffer.readFloat64();
74
+ value.angularDamping = buffer.readFloat64();
75
+ value.gravityScale = buffer.readFloat64();
76
+
77
+ value.layer = buffer.readUint32();
78
+ value.mask = buffer.readUint32();
79
+ value.flags = buffer.readUint32();
80
+ }
81
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Sleep state of a {@link RigidBody }. Owned by the {@link PhysicsSystem }; user code
3
+ * must not write this field directly — use {@link PhysicsSystemwake } /
4
+ * {@link PhysicsSystemsleep }.
5
+ */
6
+ export type SleepState = number;
7
+ export namespace SleepState {
8
+ let Awake: number;
9
+ let Sleeping: number;
10
+ }
11
+ //# sourceMappingURL=SleepState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SleepState.d.ts","sourceRoot":"","sources":["../../../../../src/engine/physics/ecs/SleepState.js"],"names":[],"mappings":";;;;;yBAMU,MAAM"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Sleep state of a {@link RigidBody}. Owned by the {@link PhysicsSystem}; user code
3
+ * must not write this field directly — use {@link PhysicsSystem#wake} /
4
+ * {@link PhysicsSystem#sleep}.
5
+ *
6
+ * @readonly
7
+ * @enum {number}
8
+ */
9
+ export const SleepState = {
10
+ Awake: 0,
11
+ Sleeping: 1,
12
+ };
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Event kinds emitted by the manifold diff pass.
3
+ */
4
+ export type ContactEventKind = number;
5
+ export namespace ContactEventKind {
6
+ let Begin: number;
7
+ let Stay: number;
8
+ let End: number;
9
+ }
10
+ /**
11
+ * Append-only buffer of contact events produced during one fixedUpdate, ready
12
+ * to be dispatched (and then cleared) at end-of-step.
13
+ *
14
+ * Storage is flat Uint32Array — keeping the metadata side allocation-free; the
15
+ * actual contact payload (normal, depth, world point) is read on demand from
16
+ * the {@link ManifoldStore} by the dispatch code.
17
+ *
18
+ * @author Alex Goldring
19
+ * @copyright Company Named Limited (c) 2026
20
+ */
21
+ export class ContactEventBuffer {
22
+ /**
23
+ * @param {number} [initial_capacity] events
24
+ */
25
+ constructor(initial_capacity?: number);
26
+ __capacity: number;
27
+ __count: number;
28
+ __data: Int32Array;
29
+ /**
30
+ * @returns {number}
31
+ */
32
+ get count(): number;
33
+ clear(): void;
34
+ /**
35
+ * @param {ContactEventKind|number} kind
36
+ * @param {number} entityA
37
+ * @param {number} entityB
38
+ * @param {number} slot manifold slot id
39
+ */
40
+ push(kind: ContactEventKind | number, entityA: number, entityB: number, slot: number): void;
41
+ kind_at(i: any): number;
42
+ entityA_at(i: any): number;
43
+ entityB_at(i: any): number;
44
+ slot_at(i: any): number;
45
+ }
46
+ //# sourceMappingURL=ContactEventBuffer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContactEventBuffer.d.ts","sourceRoot":"","sources":["../../../../../src/engine/physics/events/ContactEventBuffer.js"],"names":[],"mappings":";;;+BAGU,MAAM;;;;;;AAoBhB;;;;;;;;;;GAUG;AACH;IACI;;OAEG;IACH,+BAFW,MAAM,EAOhB;IAJG,mBAA+C;IAC/C,gBAAgB;IAEhB,mBAA4D;IAGhE;;OAEG;IACH,oBAEC;IAED,cAEC;IAED;;;;;OAKG;IACH,WALW,gBAAgB,GAAC,MAAM,WACvB,MAAM,WACN,MAAM,QACN,MAAM,QAgBhB;IAED,wBAAoD;IACpD,2BAA2D;IAC3D,2BAA2D;IAC3D,wBAAwD;CAC3D"}