@woosh/meep-engine 2.138.20 → 2.140.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 (584) hide show
  1. package/package.json +1 -1
  2. package/src/core/bvh2/bvh3/query/bvh_query_user_data_overlaps_aabb.d.ts +3 -3
  3. package/src/core/bvh2/bvh3/query/bvh_query_user_data_overlaps_aabb.d.ts.map +1 -1
  4. package/src/core/bvh2/bvh3/query/bvh_query_user_data_overlaps_aabb.js +4 -4
  5. package/src/core/collection/PairUint32Map.d.ts +100 -0
  6. package/src/core/collection/PairUint32Map.d.ts.map +1 -0
  7. package/src/core/collection/PairUint32Map.js +321 -0
  8. package/src/core/collection/Uint32Map.d.ts +119 -0
  9. package/src/core/collection/Uint32Map.d.ts.map +1 -0
  10. package/src/core/collection/Uint32Map.js +345 -0
  11. package/src/core/collection/array/array_shuffle.d.ts +10 -3
  12. package/src/core/collection/array/array_shuffle.d.ts.map +1 -1
  13. package/src/core/collection/array/array_shuffle.js +27 -22
  14. package/src/core/collection/heap/FibonacciHeap.d.ts +195 -0
  15. package/src/core/collection/heap/FibonacciHeap.d.ts.map +1 -0
  16. package/src/core/collection/heap/FibonacciHeap.js +586 -0
  17. package/src/core/collection/heap/Uint32Heap.js +1 -1
  18. package/src/core/collection/heap/Uint32Heap4.d.ts +169 -0
  19. package/src/core/collection/heap/Uint32Heap4.d.ts.map +1 -0
  20. package/src/core/collection/heap/Uint32Heap4.js +490 -0
  21. package/src/core/geom/3d/aabb/aabb3_transform_oriented.d.ts +30 -0
  22. package/src/core/geom/3d/aabb/aabb3_transform_oriented.d.ts.map +1 -0
  23. package/src/core/geom/3d/aabb/aabb3_transform_oriented.js +93 -0
  24. package/src/core/geom/3d/line/line3_closest_points_segment_segment.d.ts +27 -0
  25. package/src/core/geom/3d/line/line3_closest_points_segment_segment.d.ts.map +1 -0
  26. package/src/core/geom/3d/line/line3_closest_points_segment_segment.js +88 -0
  27. package/src/core/geom/3d/quaternion/quat3_to_matrix3.d.ts +54 -0
  28. package/src/core/geom/3d/quaternion/quat3_to_matrix3.d.ts.map +1 -0
  29. package/src/core/geom/3d/quaternion/quat3_to_matrix3.js +69 -0
  30. package/src/core/geom/3d/shape/AbstractShape3D.d.ts +24 -2
  31. package/src/core/geom/3d/shape/AbstractShape3D.d.ts.map +1 -1
  32. package/src/core/geom/3d/shape/AbstractShape3D.js +24 -1
  33. package/src/core/geom/3d/shape/BoxShape3D.d.ts +61 -0
  34. package/src/core/geom/3d/shape/BoxShape3D.d.ts.map +1 -0
  35. package/src/core/geom/3d/shape/BoxShape3D.js +158 -0
  36. package/src/core/geom/3d/shape/CapsuleShape3D.d.ts +11 -0
  37. package/src/core/geom/3d/shape/CapsuleShape3D.d.ts.map +1 -1
  38. package/src/core/geom/3d/shape/CapsuleShape3D.js +12 -0
  39. package/src/core/geom/3d/shape/HeightMapShape3D.d.ts +148 -0
  40. package/src/core/geom/3d/shape/HeightMapShape3D.d.ts.map +1 -0
  41. package/src/core/geom/3d/shape/HeightMapShape3D.js +451 -0
  42. package/src/core/geom/3d/shape/MeshShape3D.d.ts +210 -0
  43. package/src/core/geom/3d/shape/MeshShape3D.d.ts.map +1 -0
  44. package/src/core/geom/3d/shape/MeshShape3D.js +593 -0
  45. package/src/core/geom/3d/shape/TransformedShape3D.d.ts.map +1 -1
  46. package/src/core/geom/3d/shape/TransformedShape3D.js +46 -2
  47. package/src/core/geom/3d/shape/Triangle3D.d.ts +95 -0
  48. package/src/core/geom/3d/shape/Triangle3D.d.ts.map +1 -0
  49. package/src/core/geom/3d/shape/Triangle3D.js +318 -0
  50. package/src/core/geom/3d/shape/UnionShape3D.js +13 -0
  51. package/src/core/geom/3d/shape/UnitCubeShape3D.d.ts +37 -9
  52. package/src/core/geom/3d/shape/UnitCubeShape3D.d.ts.map +1 -1
  53. package/src/core/geom/3d/shape/UnitCubeShape3D.js +45 -98
  54. package/src/core/geom/3d/shape/UnitSphereShape3D.d.ts +10 -0
  55. package/src/core/geom/3d/shape/UnitSphereShape3D.d.ts.map +1 -1
  56. package/src/core/geom/3d/shape/UnitSphereShape3D.js +11 -0
  57. package/src/core/geom/3d/shape/shape_mesh_from_geometry.d.ts +30 -0
  58. package/src/core/geom/3d/shape/shape_mesh_from_geometry.d.ts.map +1 -0
  59. package/src/core/geom/3d/shape/shape_mesh_from_geometry.js +64 -0
  60. package/src/core/geom/3d/shape/util/shape3d_voxelize_to_grid.d.ts +61 -0
  61. package/src/core/geom/3d/shape/util/shape3d_voxelize_to_grid.d.ts.map +1 -0
  62. package/src/core/geom/3d/shape/util/shape3d_voxelize_to_grid.js +148 -0
  63. package/src/core/geom/3d/tetrahedra/compute_tetrahedral_mesh_from_surface.d.ts +39 -0
  64. package/src/core/geom/3d/tetrahedra/compute_tetrahedral_mesh_from_surface.d.ts.map +1 -0
  65. package/src/core/geom/3d/tetrahedra/compute_tetrahedral_mesh_from_surface.js +147 -0
  66. package/src/core/geom/3d/tetrahedra/compute_tetrahedron_quality.d.ts +15 -0
  67. package/src/core/geom/3d/tetrahedra/compute_tetrahedron_quality.d.ts.map +1 -0
  68. package/src/core/geom/3d/tetrahedra/compute_tetrahedron_quality.js +22 -0
  69. package/src/core/geom/3d/tetrahedra/prototype_tetrahedrize_mesh.d.ts +2 -0
  70. package/src/core/geom/3d/tetrahedra/prototype_tetrahedrize_mesh.d.ts.map +1 -0
  71. package/src/core/geom/3d/tetrahedra/prototype_tetrahedrize_mesh.js +671 -0
  72. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_build_vertex_to_tets_map.d.ts +28 -0
  73. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_build_vertex_to_tets_map.d.ts.map +1 -0
  74. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_build_vertex_to_tets_map.js +48 -0
  75. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_carve_outside_surface.d.ts +26 -0
  76. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_carve_outside_surface.d.ts.map +1 -0
  77. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_carve_outside_surface.js +222 -0
  78. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_find_tets_around_edge.d.ts +34 -0
  79. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_find_tets_around_edge.d.ts.map +1 -0
  80. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_find_tets_around_edge.js +146 -0
  81. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_flip_23.d.ts +36 -0
  82. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_flip_23.d.ts.map +1 -0
  83. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_flip_23.js +232 -0
  84. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_flip_32.d.ts +33 -0
  85. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_flip_32.d.ts.map +1 -0
  86. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_flip_32.js +255 -0
  87. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_improve_quality.d.ts +68 -0
  88. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_improve_quality.d.ts.map +1 -0
  89. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_improve_quality.js +387 -0
  90. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_smooth_vertex.d.ts +35 -0
  91. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_smooth_vertex.d.ts.map +1 -0
  92. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_smooth_vertex.js +140 -0
  93. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_vertex_is_boundary.d.ts +31 -0
  94. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_vertex_is_boundary.d.ts.map +1 -0
  95. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_vertex_is_boundary.js +97 -0
  96. package/src/core/geom/3d/tetrahedra/tetrahedron_compute_quality.d.ts +32 -0
  97. package/src/core/geom/3d/tetrahedra/tetrahedron_compute_quality.d.ts.map +1 -0
  98. package/src/core/geom/3d/tetrahedra/tetrahedron_compute_quality.js +66 -0
  99. package/src/core/geom/3d/topology/struct/binary/BinaryElementPool.d.ts +41 -0
  100. package/src/core/geom/3d/topology/struct/binary/BinaryElementPool.d.ts.map +1 -1
  101. package/src/core/geom/3d/topology/struct/binary/BinaryElementPool.js +124 -13
  102. package/src/core/geom/3d/topology/struct/binary/BinaryTopology.d.ts +134 -0
  103. package/src/core/geom/3d/topology/struct/binary/BinaryTopology.d.ts.map +1 -1
  104. package/src/core/geom/3d/topology/struct/binary/BinaryTopology.js +276 -3
  105. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_close_boundary_holes.d.ts +17 -0
  106. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_close_boundary_holes.d.ts.map +1 -0
  107. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_close_boundary_holes.js +135 -0
  108. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compact.d.ts +14 -0
  109. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compact.d.ts.map +1 -0
  110. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compact.js +177 -0
  111. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_face_decouple.d.ts.map +1 -1
  112. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_face_decouple.js +20 -4
  113. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_simplify.d.ts.map +1 -1
  114. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_simplify.js +5 -3
  115. package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_create.d.ts.map +1 -1
  116. package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_create.js +9 -0
  117. package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_get_or_create.d.ts.map +1 -1
  118. package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_get_or_create.js +21 -45
  119. package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_kill.d.ts.map +1 -1
  120. package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_kill.js +7 -1
  121. package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_kill_parallels.d.ts +8 -6
  122. package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_kill_parallels.d.ts.map +1 -1
  123. package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_kill_parallels.js +8 -6
  124. package/src/core/geom/3d/topology/struct/binary/io/edge/bt_mesh_kill_short_edges.d.ts +22 -0
  125. package/src/core/geom/3d/topology/struct/binary/io/edge/bt_mesh_kill_short_edges.d.ts.map +1 -0
  126. package/src/core/geom/3d/topology/struct/binary/io/edge/bt_mesh_kill_short_edges.js +73 -0
  127. package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vertex_replace.d.ts.map +1 -1
  128. package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vertex_replace.js +51 -1
  129. package/src/core/geom/3d/topology/struct/binary/query/bt_edge_get.d.ts +10 -0
  130. package/src/core/geom/3d/topology/struct/binary/query/bt_edge_get.d.ts.map +1 -0
  131. package/src/core/geom/3d/topology/struct/binary/query/bt_edge_get.js +42 -0
  132. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.d.ts +28 -0
  133. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.d.ts.map +1 -0
  134. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.js +227 -0
  135. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_walk_boundary_loops.d.ts +13 -0
  136. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_walk_boundary_loops.d.ts.map +1 -0
  137. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_walk_boundary_loops.js +108 -0
  138. package/src/core/geom/3d/topology/struct/binary/query/bt_query_edge_is_boundary.d.ts +11 -0
  139. package/src/core/geom/3d/topology/struct/binary/query/bt_query_edge_is_boundary.d.ts.map +1 -0
  140. package/src/core/geom/3d/topology/struct/binary/query/bt_query_edge_is_boundary.js +20 -0
  141. package/src/core/geom/3d/triangle/triangle_mesh_compute_signed_volume.d.ts +20 -0
  142. package/src/core/geom/3d/triangle/triangle_mesh_compute_signed_volume.d.ts.map +1 -0
  143. package/src/core/geom/3d/triangle/triangle_mesh_compute_signed_volume.js +38 -0
  144. package/src/core/geom/3d/triangle/v3_compute_triangle_normal.d.ts +2 -2
  145. package/src/core/geom/3d/triangle/v3_compute_triangle_normal.d.ts.map +1 -1
  146. package/src/core/geom/3d/triangle/v3_compute_triangle_normal.js +1 -1
  147. package/src/core/geom/vec3/v3_dot_array_array.d.ts +3 -3
  148. package/src/core/geom/vec3/v3_dot_array_array.d.ts.map +1 -1
  149. package/src/core/geom/vec3/v3_dot_array_array.js +2 -2
  150. package/src/core/geom/vec3/v3_negate_array.d.ts +3 -3
  151. package/src/core/geom/vec3/v3_negate_array.d.ts.map +1 -1
  152. package/src/core/geom/vec3/v3_negate_array.js +2 -2
  153. package/src/core/geom/vec3/v3_quat3_apply.d.ts +29 -0
  154. package/src/core/geom/vec3/v3_quat3_apply.d.ts.map +1 -0
  155. package/src/core/geom/vec3/v3_quat3_apply.js +39 -0
  156. package/src/core/geom/vec3/v3_quat3_apply_inverse.d.ts +30 -0
  157. package/src/core/geom/vec3/v3_quat3_apply_inverse.d.ts.map +1 -0
  158. package/src/core/geom/vec3/v3_quat3_apply_inverse.js +41 -0
  159. package/src/core/geom/vec3/v3_triple_cross_product.d.ts +32 -0
  160. package/src/core/geom/vec3/v3_triple_cross_product.d.ts.map +1 -0
  161. package/src/core/geom/vec3/v3_triple_cross_product.js +45 -0
  162. package/src/core/graph/csr/CSRGraph.d.ts +168 -0
  163. package/src/core/graph/csr/CSRGraph.d.ts.map +1 -0
  164. package/src/core/graph/csr/CSRGraph.js +319 -0
  165. package/src/core/graph/metis/cluster_mesh_metis.d.ts +12 -0
  166. package/src/core/graph/metis/cluster_mesh_metis.d.ts.map +1 -1
  167. package/src/core/graph/metis/cluster_mesh_metis.js +12 -0
  168. package/src/core/graph/metis/metis.d.ts +19 -0
  169. package/src/core/graph/metis/metis.d.ts.map +1 -1
  170. package/src/core/graph/metis/metis.js +20 -0
  171. package/src/core/graph/metis/metis_cluster_bs.d.ts +11 -0
  172. package/src/core/graph/metis/metis_cluster_bs.d.ts.map +1 -1
  173. package/src/core/graph/metis/metis_cluster_bs.js +11 -0
  174. package/src/core/graph/metis/metis_options.d.ts +17 -2
  175. package/src/core/graph/metis/metis_options.d.ts.map +1 -1
  176. package/src/core/graph/metis/metis_options.js +17 -2
  177. package/src/core/graph/metis/native/MetisGraph.d.ts +144 -0
  178. package/src/core/graph/metis/native/MetisGraph.d.ts.map +1 -0
  179. package/src/core/graph/metis/native/MetisGraph.js +212 -0
  180. package/src/core/graph/metis/native/bisection/BisectionScratch.d.ts +72 -0
  181. package/src/core/graph/metis/native/bisection/BisectionScratch.d.ts.map +1 -0
  182. package/src/core/graph/metis/native/bisection/BisectionScratch.js +101 -0
  183. package/src/core/graph/metis/native/bisection/bisect_graph.d.ts +37 -0
  184. package/src/core/graph/metis/native/bisection/bisect_graph.d.ts.map +1 -0
  185. package/src/core/graph/metis/native/bisection/bisect_graph.js +100 -0
  186. package/src/core/graph/metis/native/bisection/compute_2way_params.d.ts +15 -0
  187. package/src/core/graph/metis/native/bisection/compute_2way_params.d.ts.map +1 -0
  188. package/src/core/graph/metis/native/bisection/compute_2way_params.js +84 -0
  189. package/src/core/graph/metis/native/bisection/fm_2way.d.ts +30 -0
  190. package/src/core/graph/metis/native/bisection/fm_2way.d.ts.map +1 -0
  191. package/src/core/graph/metis/native/bisection/fm_2way.js +290 -0
  192. package/src/core/graph/metis/native/bisection/grow_bisection.d.ts +23 -0
  193. package/src/core/graph/metis/native/bisection/grow_bisection.d.ts.map +1 -0
  194. package/src/core/graph/metis/native/bisection/grow_bisection.js +137 -0
  195. package/src/core/graph/metis/native/bisection/split_graph_two_way.d.ts +28 -0
  196. package/src/core/graph/metis/native/bisection/split_graph_two_way.d.ts.map +1 -0
  197. package/src/core/graph/metis/native/bisection/split_graph_two_way.js +119 -0
  198. package/src/core/graph/metis/native/coarsen/coarsen_graph.d.ts +20 -0
  199. package/src/core/graph/metis/native/coarsen/coarsen_graph.d.ts.map +1 -0
  200. package/src/core/graph/metis/native/coarsen/coarsen_graph.js +94 -0
  201. package/src/core/graph/metis/native/coarsen/create_coarse_graph.d.ts +24 -0
  202. package/src/core/graph/metis/native/coarsen/create_coarse_graph.d.ts.map +1 -0
  203. package/src/core/graph/metis/native/coarsen/create_coarse_graph.js +158 -0
  204. package/src/core/graph/metis/native/coarsen/match_shem.d.ts +41 -0
  205. package/src/core/graph/metis/native/coarsen/match_shem.d.ts.map +1 -0
  206. package/src/core/graph/metis/native/coarsen/match_shem.js +175 -0
  207. package/src/core/graph/metis/native/initial/initial_kway_bfs.d.ts +24 -0
  208. package/src/core/graph/metis/native/initial/initial_kway_bfs.d.ts.map +1 -0
  209. package/src/core/graph/metis/native/initial/initial_kway_bfs.js +122 -0
  210. package/src/core/graph/metis/native/initial/initial_kway_recursive_bisection.d.ts +29 -0
  211. package/src/core/graph/metis/native/initial/initial_kway_recursive_bisection.d.ts.map +1 -0
  212. package/src/core/graph/metis/native/initial/initial_kway_recursive_bisection.js +170 -0
  213. package/src/core/graph/metis/native/metis_partition_kway.d.ts +41 -0
  214. package/src/core/graph/metis/native/metis_partition_kway.d.ts.map +1 -0
  215. package/src/core/graph/metis/native/metis_partition_kway.js +126 -0
  216. package/src/core/graph/metis/native/refine/IndexedFloatMaxHeap.d.ts +62 -0
  217. package/src/core/graph/metis/native/refine/IndexedFloatMaxHeap.d.ts.map +1 -0
  218. package/src/core/graph/metis/native/refine/IndexedFloatMaxHeap.js +261 -0
  219. package/src/core/graph/metis/native/refine/RefinementScratch.d.ts +45 -0
  220. package/src/core/graph/metis/native/refine/RefinementScratch.d.ts.map +1 -0
  221. package/src/core/graph/metis/native/refine/RefinementScratch.js +53 -0
  222. package/src/core/graph/metis/native/refine/compute_kway_params.d.ts +18 -0
  223. package/src/core/graph/metis/native/refine/compute_kway_params.d.ts.map +1 -0
  224. package/src/core/graph/metis/native/refine/compute_kway_params.js +138 -0
  225. package/src/core/graph/metis/native/refine/fm_kway.d.ts +63 -0
  226. package/src/core/graph/metis/native/refine/fm_kway.d.ts.map +1 -0
  227. package/src/core/graph/metis/native/refine/fm_kway.js +462 -0
  228. package/src/core/graph/metis/native/refine/project_kway.d.ts +22 -0
  229. package/src/core/graph/metis/native/refine/project_kway.d.ts.map +1 -0
  230. package/src/core/graph/metis/native/refine/project_kway.js +43 -0
  231. package/src/core/graph/metis/native/refine/refine_kway.d.ts +34 -0
  232. package/src/core/graph/metis/native/refine/refine_kway.d.ts.map +1 -0
  233. package/src/core/graph/metis/native/refine/refine_kway.js +43 -0
  234. package/src/core/math/linalg/eigen/matrix_householder_in_place.d.ts +2 -2
  235. package/src/core/math/linalg/eigen/matrix_householder_in_place.js +2 -2
  236. package/src/core/math/linalg/eigen/matrix_qr_in_place.d.ts +6 -4
  237. package/src/core/math/linalg/eigen/matrix_qr_in_place.d.ts.map +1 -1
  238. package/src/core/math/linalg/eigen/matrix_qr_in_place.js +69 -23
  239. package/src/engine/EngineHarness.d.ts +3 -1
  240. package/src/engine/EngineHarness.d.ts.map +1 -1
  241. package/src/engine/EngineHarness.js +3 -0
  242. package/src/engine/control/first-person/DESIGN.md +30 -6
  243. package/src/engine/control/first-person/DESIGN_EXTENSIONS.md +563 -0
  244. package/src/engine/control/first-person/FirstPersonPlayerController.d.ts +115 -9
  245. package/src/engine/control/first-person/FirstPersonPlayerController.d.ts.map +1 -1
  246. package/src/engine/control/first-person/FirstPersonPlayerController.js +211 -176
  247. package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.d.ts +601 -8
  248. package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.d.ts.map +1 -1
  249. package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.js +349 -8
  250. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts +319 -23
  251. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts.map +1 -1
  252. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.js +1789 -799
  253. package/src/engine/control/first-person/TODO.md +173 -0
  254. package/src/engine/control/first-person/abilities/Ability.d.ts +101 -0
  255. package/src/engine/control/first-person/abilities/Ability.d.ts.map +1 -0
  256. package/src/engine/control/first-person/abilities/Ability.js +119 -0
  257. package/src/engine/control/first-person/abilities/AbilitySet.d.ts +86 -0
  258. package/src/engine/control/first-person/abilities/AbilitySet.d.ts.map +1 -0
  259. package/src/engine/control/first-person/abilities/AbilitySet.js +185 -0
  260. package/src/engine/control/first-person/abilities/LedgeGrab.d.ts +62 -0
  261. package/src/engine/control/first-person/abilities/LedgeGrab.d.ts.map +1 -0
  262. package/src/engine/control/first-person/abilities/LedgeGrab.js +199 -0
  263. package/src/engine/control/first-person/abilities/Mantle.d.ts +45 -0
  264. package/src/engine/control/first-person/abilities/Mantle.d.ts.map +1 -0
  265. package/src/engine/control/first-person/abilities/Mantle.js +188 -0
  266. package/src/engine/control/first-person/abilities/Slide.d.ts +33 -0
  267. package/src/engine/control/first-person/abilities/Slide.d.ts.map +1 -0
  268. package/src/engine/control/first-person/abilities/Slide.js +166 -0
  269. package/src/engine/control/first-person/abilities/WallJump.d.ts +45 -0
  270. package/src/engine/control/first-person/abilities/WallJump.d.ts.map +1 -0
  271. package/src/engine/control/first-person/abilities/WallJump.js +131 -0
  272. package/src/engine/control/first-person/abilities/WallRun.d.ts +44 -0
  273. package/src/engine/control/first-person/abilities/WallRun.d.ts.map +1 -0
  274. package/src/engine/control/first-person/abilities/WallRun.js +180 -0
  275. package/src/engine/control/first-person/composer/EyeOffsetStack.d.ts +49 -0
  276. package/src/engine/control/first-person/composer/EyeOffsetStack.d.ts.map +1 -0
  277. package/src/engine/control/first-person/composer/EyeOffsetStack.js +60 -0
  278. package/src/engine/control/first-person/mastery/BreathRhythmEvaluator.d.ts +100 -0
  279. package/src/engine/control/first-person/mastery/BreathRhythmEvaluator.d.ts.map +1 -0
  280. package/src/engine/control/first-person/mastery/BreathRhythmEvaluator.js +133 -0
  281. package/src/engine/control/first-person/mastery/DecisionPoint.d.ts +10 -0
  282. package/src/engine/control/first-person/mastery/DecisionPoint.d.ts.map +1 -0
  283. package/src/engine/control/first-person/mastery/DecisionPoint.js +30 -0
  284. package/src/engine/control/first-person/mastery/FootAsymmetryTurnEvaluator.d.ts +61 -0
  285. package/src/engine/control/first-person/mastery/FootAsymmetryTurnEvaluator.d.ts.map +1 -0
  286. package/src/engine/control/first-person/mastery/FootAsymmetryTurnEvaluator.js +109 -0
  287. package/src/engine/control/first-person/mastery/MasteryEvaluator.d.ts +40 -0
  288. package/src/engine/control/first-person/mastery/MasteryEvaluator.d.ts.map +1 -0
  289. package/src/engine/control/first-person/mastery/MasteryEvaluator.js +45 -0
  290. package/src/engine/control/first-person/mastery/MasteryScore.d.ts +68 -0
  291. package/src/engine/control/first-person/mastery/MasteryScore.d.ts.map +1 -0
  292. package/src/engine/control/first-person/mastery/MasteryScore.js +100 -0
  293. package/src/engine/control/first-person/mastery/MasterySet.d.ts +60 -0
  294. package/src/engine/control/first-person/mastery/MasterySet.d.ts.map +1 -0
  295. package/src/engine/control/first-person/mastery/MasterySet.js +86 -0
  296. package/src/engine/control/first-person/mastery/SlideInitiationTimingEvaluator.d.ts +58 -0
  297. package/src/engine/control/first-person/mastery/SlideInitiationTimingEvaluator.d.ts.map +1 -0
  298. package/src/engine/control/first-person/mastery/SlideInitiationTimingEvaluator.js +83 -0
  299. package/src/engine/control/first-person/mastery/StrideTimingJumpEvaluator.d.ts +69 -0
  300. package/src/engine/control/first-person/mastery/StrideTimingJumpEvaluator.d.ts.map +1 -0
  301. package/src/engine/control/first-person/mastery/StrideTimingJumpEvaluator.js +109 -0
  302. package/src/engine/control/first-person/math/Spring.d.ts +56 -0
  303. package/src/engine/control/first-person/math/Spring.d.ts.map +1 -0
  304. package/src/engine/control/first-person/math/Spring.js +71 -0
  305. package/src/engine/control/first-person/math/computeLRCBreathRate.d.ts +26 -0
  306. package/src/engine/control/first-person/math/computeLRCBreathRate.d.ts.map +1 -0
  307. package/src/engine/control/first-person/math/computeLRCBreathRate.js +41 -0
  308. package/src/engine/control/first-person/math/computeMassRatios.d.ts +35 -0
  309. package/src/engine/control/first-person/math/computeMassRatios.d.ts.map +1 -0
  310. package/src/engine/control/first-person/math/computeMassRatios.js +44 -0
  311. package/src/engine/control/first-person/pose/FirstPersonPose.d.ts +31 -1
  312. package/src/engine/control/first-person/pose/FirstPersonPose.d.ts.map +1 -1
  313. package/src/engine/control/first-person/pose/FirstPersonPose.js +49 -3
  314. package/src/engine/control/first-person/pose/FirstPersonPosture.d.ts +7 -0
  315. package/src/engine/control/first-person/pose/FirstPersonPosture.d.ts.map +1 -0
  316. package/src/engine/control/first-person/pose/FirstPersonPosture.js +27 -0
  317. package/src/engine/control/first-person/prototype_first_person_controller.js +637 -120
  318. package/src/engine/control/first-person/sensors/FirstPersonSensors.d.ts +58 -0
  319. package/src/engine/control/first-person/sensors/FirstPersonSensors.d.ts.map +1 -0
  320. package/src/engine/control/first-person/sensors/FirstPersonSensors.js +77 -0
  321. package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.d.ts +80 -0
  322. package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.d.ts.map +1 -0
  323. package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.js +196 -0
  324. package/src/engine/control/first-person/test/buildTestPlayer.d.ts +20 -0
  325. package/src/engine/control/first-person/test/buildTestPlayer.d.ts.map +1 -0
  326. package/src/engine/control/first-person/test/buildTestPlayer.js +36 -0
  327. package/src/engine/graphics/camera/testClippingPlaneComputation.js +0 -2
  328. package/src/engine/graphics/ecs/light/Light.d.ts.map +1 -1
  329. package/src/engine/graphics/ecs/light/Light.js +27 -0
  330. package/src/engine/graphics/ecs/light/LightSystem.js +1 -1
  331. package/src/engine/graphics/ecs/path/PathDisplaySystem.d.ts.map +1 -1
  332. package/src/engine/graphics/ecs/path/testPathDisplaySystem.js +0 -2
  333. package/src/engine/graphics/ecs/path/tube/prototypeAnimatedPathMask.js +0 -2
  334. package/src/engine/graphics/geometry/CapsuleGeometry.d.ts +42 -0
  335. package/src/engine/graphics/geometry/CapsuleGeometry.d.ts.map +1 -0
  336. package/src/engine/graphics/geometry/CapsuleGeometry.js +171 -0
  337. package/src/engine/graphics/render/buffer/buffers/prototypeNormalFrameBuffer.js +0 -2
  338. package/src/engine/graphics/render/forward_plus/plugin/ptototypeFPPlugin.js +0 -2
  339. package/src/engine/graphics/render/visibility/hiz/prototypeHiZ.js +0 -2
  340. package/src/engine/navigation/grid/find_path_on_grid_astar.d.ts.map +1 -1
  341. package/src/engine/navigation/grid/find_path_on_grid_astar.js +11 -2
  342. package/src/engine/navigation/mesh/bt_mesh_face_find_path.d.ts.map +1 -1
  343. package/src/engine/navigation/mesh/bt_mesh_face_find_path.js +11 -1
  344. package/src/engine/physics/BULLET_REVIEW.md +945 -0
  345. package/src/engine/physics/CANNON_REVIEW.md +1300 -0
  346. package/src/engine/physics/JOLT_REVIEW.md +913 -0
  347. package/src/engine/physics/PLAN.md +461 -0
  348. package/src/engine/physics/RAPIER_REVIEW.md +934 -0
  349. package/src/engine/physics/REVIEW_001_ACTION_PLAN.md +642 -0
  350. package/src/engine/physics/body/BodyStorage.d.ts +187 -0
  351. package/src/engine/physics/body/BodyStorage.d.ts.map +1 -0
  352. package/src/engine/physics/body/BodyStorage.js +427 -0
  353. package/src/engine/physics/broadphase/PairList.d.ts +62 -0
  354. package/src/engine/physics/broadphase/PairList.d.ts.map +1 -0
  355. package/src/engine/physics/broadphase/PairList.js +97 -0
  356. package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts +16 -0
  357. package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts.map +1 -0
  358. package/src/engine/physics/broadphase/compute_fat_world_aabb.js +61 -0
  359. package/src/engine/physics/broadphase/generate_pairs.d.ts +38 -0
  360. package/src/engine/physics/broadphase/generate_pairs.d.ts.map +1 -0
  361. package/src/engine/physics/broadphase/generate_pairs.js +101 -0
  362. package/src/engine/physics/contact/ManifoldStore.d.ts +299 -0
  363. package/src/engine/physics/contact/ManifoldStore.d.ts.map +1 -0
  364. package/src/engine/physics/contact/ManifoldStore.js +608 -0
  365. package/src/engine/physics/ecs/BodyKind.d.ts +23 -0
  366. package/src/engine/physics/ecs/BodyKind.d.ts.map +1 -0
  367. package/src/engine/physics/ecs/BodyKind.js +24 -0
  368. package/src/engine/physics/ecs/Collider.d.ts +98 -0
  369. package/src/engine/physics/ecs/Collider.d.ts.map +1 -0
  370. package/src/engine/physics/ecs/Collider.js +136 -0
  371. package/src/engine/physics/ecs/ColliderFlags.d.ts +14 -0
  372. package/src/engine/physics/ecs/ColliderFlags.d.ts.map +1 -0
  373. package/src/engine/physics/ecs/ColliderFlags.js +15 -0
  374. package/src/engine/physics/ecs/ColliderObserverSystem.d.ts +58 -0
  375. package/src/engine/physics/ecs/ColliderObserverSystem.d.ts.map +1 -0
  376. package/src/engine/physics/ecs/ColliderObserverSystem.js +103 -0
  377. package/src/engine/physics/ecs/ColliderSerializationAdapter.d.ts +25 -0
  378. package/src/engine/physics/ecs/ColliderSerializationAdapter.d.ts.map +1 -0
  379. package/src/engine/physics/ecs/ColliderSerializationAdapter.js +37 -0
  380. package/src/engine/physics/ecs/PhysicsEvents.d.ts +15 -0
  381. package/src/engine/physics/ecs/PhysicsEvents.d.ts.map +1 -0
  382. package/src/engine/physics/ecs/PhysicsEvents.js +16 -0
  383. package/src/engine/physics/ecs/PhysicsSystem.d.ts +628 -0
  384. package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -0
  385. package/src/engine/physics/ecs/PhysicsSystem.js +1301 -0
  386. package/src/engine/physics/ecs/RigidBody.d.ts +197 -0
  387. package/src/engine/physics/ecs/RigidBody.d.ts.map +1 -0
  388. package/src/engine/physics/ecs/RigidBody.js +240 -0
  389. package/src/engine/physics/ecs/RigidBodyFlags.d.ts +21 -0
  390. package/src/engine/physics/ecs/RigidBodyFlags.d.ts.map +1 -0
  391. package/src/engine/physics/ecs/RigidBodyFlags.js +22 -0
  392. package/src/engine/physics/ecs/RigidBodySerializationAdapter.d.ts +28 -0
  393. package/src/engine/physics/ecs/RigidBodySerializationAdapter.d.ts.map +1 -0
  394. package/src/engine/physics/ecs/RigidBodySerializationAdapter.js +81 -0
  395. package/src/engine/physics/ecs/SleepState.d.ts +11 -0
  396. package/src/engine/physics/ecs/SleepState.d.ts.map +1 -0
  397. package/src/engine/physics/ecs/SleepState.js +12 -0
  398. package/src/engine/physics/events/ContactEventBuffer.d.ts +46 -0
  399. package/src/engine/physics/events/ContactEventBuffer.d.ts.map +1 -0
  400. package/src/engine/physics/events/ContactEventBuffer.js +83 -0
  401. package/src/engine/physics/events/diff_manifolds.d.ts +25 -0
  402. package/src/engine/physics/events/diff_manifolds.d.ts.map +1 -0
  403. package/src/engine/physics/events/diff_manifolds.js +50 -0
  404. package/src/engine/physics/fluid/FluidField.d.ts +294 -16
  405. package/src/engine/physics/fluid/FluidField.d.ts.map +1 -1
  406. package/src/engine/physics/fluid/FluidField.js +510 -66
  407. package/src/engine/physics/fluid/FluidSimulator.d.ts +188 -5
  408. package/src/engine/physics/fluid/FluidSimulator.d.ts.map +1 -1
  409. package/src/engine/physics/fluid/FluidSimulator.js +456 -95
  410. package/src/engine/physics/fluid/SliceVisualiser.d.ts +29 -6
  411. package/src/engine/physics/fluid/SliceVisualiser.d.ts.map +1 -1
  412. package/src/engine/physics/fluid/SliceVisualiser.js +190 -165
  413. package/src/engine/physics/fluid/ecs/FluidComponent.d.ts +154 -0
  414. package/src/engine/physics/fluid/ecs/FluidComponent.d.ts.map +1 -0
  415. package/src/engine/physics/fluid/ecs/FluidComponent.js +238 -0
  416. package/src/engine/physics/fluid/ecs/FluidEffectorsComponent.d.ts +45 -0
  417. package/src/engine/physics/fluid/ecs/FluidEffectorsComponent.d.ts.map +1 -0
  418. package/src/engine/physics/fluid/ecs/FluidEffectorsComponent.js +89 -0
  419. package/src/engine/physics/fluid/ecs/FluidSystem.d.ts +107 -0
  420. package/src/engine/physics/fluid/ecs/FluidSystem.d.ts.map +1 -0
  421. package/src/engine/physics/fluid/ecs/FluidSystem.js +278 -0
  422. package/src/engine/physics/fluid/effector/AbstractFluidEffector.d.ts +62 -1
  423. package/src/engine/physics/fluid/effector/AbstractFluidEffector.d.ts.map +1 -1
  424. package/src/engine/physics/fluid/effector/AbstractFluidEffector.js +81 -6
  425. package/src/engine/physics/fluid/effector/GlobalFluidEffector.d.ts +17 -4
  426. package/src/engine/physics/fluid/effector/GlobalFluidEffector.d.ts.map +1 -1
  427. package/src/engine/physics/fluid/effector/GlobalFluidEffector.js +105 -12
  428. package/src/engine/physics/fluid/effector/ImpulseFluidEffector.d.ts +43 -0
  429. package/src/engine/physics/fluid/effector/ImpulseFluidEffector.d.ts.map +1 -0
  430. package/src/engine/physics/fluid/effector/ImpulseFluidEffector.js +210 -0
  431. package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts +62 -1
  432. package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts.map +1 -1
  433. package/src/engine/physics/fluid/effector/WakeFluidEffector.js +302 -8
  434. package/src/engine/physics/fluid/prototype.js +102 -91
  435. package/src/engine/physics/fluid/solver/optimal_sor_omega.d.ts +33 -0
  436. package/src/engine/physics/fluid/solver/optimal_sor_omega.d.ts.map +1 -0
  437. package/src/engine/physics/fluid/solver/optimal_sor_omega.js +41 -0
  438. package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.d.ts +20 -5
  439. package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.d.ts.map +1 -1
  440. package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.js +60 -38
  441. package/src/engine/physics/fluid/solver/v3_grid_apply_diffusion.d.ts +25 -4
  442. package/src/engine/physics/fluid/solver/v3_grid_apply_diffusion.d.ts.map +1 -1
  443. package/src/engine/physics/fluid/solver/v3_grid_apply_diffusion.js +93 -73
  444. package/src/engine/physics/fluid/solver/v3_grid_apply_scalar_advection.d.ts +23 -0
  445. package/src/engine/physics/fluid/solver/v3_grid_apply_scalar_advection.d.ts.map +1 -0
  446. package/src/engine/physics/fluid/solver/v3_grid_apply_scalar_advection.js +60 -0
  447. package/src/engine/physics/fluid/solver/v3_grid_compute_divergence.d.ts +23 -0
  448. package/src/engine/physics/fluid/solver/v3_grid_compute_divergence.d.ts.map +1 -0
  449. package/src/engine/physics/fluid/solver/v3_grid_compute_divergence.js +68 -0
  450. package/src/engine/physics/fluid/solver/v3_grid_compute_solid_neighbour_mask.d.ts +30 -0
  451. package/src/engine/physics/fluid/solver/v3_grid_compute_solid_neighbour_mask.d.ts.map +1 -0
  452. package/src/engine/physics/fluid/solver/v3_grid_compute_solid_neighbour_mask.js +66 -0
  453. package/src/engine/physics/fluid/solver/v3_grid_patch_edges_uniform.d.ts +26 -0
  454. package/src/engine/physics/fluid/solver/v3_grid_patch_edges_uniform.d.ts.map +1 -0
  455. package/src/engine/physics/fluid/solver/v3_grid_patch_edges_uniform.js +113 -0
  456. package/src/engine/physics/fluid/solver/v3_grid_shift_in_place.d.ts +30 -0
  457. package/src/engine/physics/fluid/solver/v3_grid_shift_in_place.d.ts.map +1 -0
  458. package/src/engine/physics/fluid/solver/v3_grid_shift_in_place.js +107 -0
  459. package/src/engine/physics/fluid/solver/v3_grid_solve_pressure.d.ts +49 -0
  460. package/src/engine/physics/fluid/solver/v3_grid_solve_pressure.d.ts.map +1 -0
  461. package/src/engine/physics/fluid/solver/v3_grid_solve_pressure.js +126 -0
  462. package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_pcg.d.ts +93 -0
  463. package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_pcg.d.ts.map +1 -0
  464. package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_pcg.js +424 -0
  465. package/src/engine/physics/fluid/solver/v3_grid_subtract_pressure_gradient.d.ts +48 -0
  466. package/src/engine/physics/fluid/solver/v3_grid_subtract_pressure_gradient.d.ts.map +1 -0
  467. package/src/engine/physics/fluid/solver/v3_grid_subtract_pressure_gradient.js +92 -0
  468. package/src/engine/physics/gjk/expanding_polytope_algorithm.d.ts +6 -6
  469. package/src/engine/physics/gjk/expanding_polytope_algorithm.d.ts.map +1 -1
  470. package/src/engine/physics/gjk/expanding_polytope_algorithm.js +76 -32
  471. package/src/engine/physics/gjk/gjk.d.ts +28 -2
  472. package/src/engine/physics/gjk/gjk.d.ts.map +1 -1
  473. package/src/engine/physics/gjk/gjk.js +421 -378
  474. package/src/engine/physics/gjk/minkowski_support.d.ts +37 -0
  475. package/src/engine/physics/gjk/minkowski_support.d.ts.map +1 -0
  476. package/src/engine/physics/gjk/minkowski_support.js +75 -0
  477. package/src/engine/physics/gjk/mpr.d.ts +56 -0
  478. package/src/engine/physics/gjk/mpr.d.ts.map +1 -0
  479. package/src/engine/physics/gjk/mpr.js +344 -0
  480. package/src/engine/physics/inertia/world_inverse_inertia.d.ts +44 -0
  481. package/src/engine/physics/inertia/world_inverse_inertia.d.ts.map +1 -0
  482. package/src/engine/physics/inertia/world_inverse_inertia.js +77 -0
  483. package/src/engine/physics/integration/integrate_position.d.ts +34 -0
  484. package/src/engine/physics/integration/integrate_position.d.ts.map +1 -0
  485. package/src/engine/physics/integration/integrate_position.js +79 -0
  486. package/src/engine/physics/integration/integrate_velocity.d.ts +55 -0
  487. package/src/engine/physics/integration/integrate_velocity.d.ts.map +1 -0
  488. package/src/engine/physics/integration/integrate_velocity.js +160 -0
  489. package/src/engine/physics/integration/quat_integrate.d.ts +27 -0
  490. package/src/engine/physics/integration/quat_integrate.d.ts.map +1 -0
  491. package/src/engine/physics/integration/quat_integrate.js +62 -0
  492. package/src/engine/physics/island/IslandBuilder.d.ts +167 -0
  493. package/src/engine/physics/island/IslandBuilder.d.ts.map +1 -0
  494. package/src/engine/physics/island/IslandBuilder.js +411 -0
  495. package/src/engine/physics/island/union_find.d.ts +51 -0
  496. package/src/engine/physics/island/union_find.d.ts.map +1 -0
  497. package/src/engine/physics/island/union_find.js +76 -0
  498. package/src/engine/physics/narrowphase/PosedShape.d.ts +51 -0
  499. package/src/engine/physics/narrowphase/PosedShape.d.ts.map +1 -0
  500. package/src/engine/physics/narrowphase/PosedShape.js +108 -0
  501. package/src/engine/physics/narrowphase/box_box_manifold.d.ts +32 -0
  502. package/src/engine/physics/narrowphase/box_box_manifold.d.ts.map +1 -0
  503. package/src/engine/physics/narrowphase/box_box_manifold.js +639 -0
  504. package/src/engine/physics/narrowphase/box_triangle_contact.d.ts +30 -0
  505. package/src/engine/physics/narrowphase/box_triangle_contact.d.ts.map +1 -0
  506. package/src/engine/physics/narrowphase/box_triangle_contact.js +811 -0
  507. package/src/engine/physics/narrowphase/capsule_contacts.d.ts +122 -0
  508. package/src/engine/physics/narrowphase/capsule_contacts.d.ts.map +1 -0
  509. package/src/engine/physics/narrowphase/capsule_contacts.js +462 -0
  510. package/src/engine/physics/narrowphase/capsule_triangle_contact.d.ts +71 -0
  511. package/src/engine/physics/narrowphase/capsule_triangle_contact.d.ts.map +1 -0
  512. package/src/engine/physics/narrowphase/capsule_triangle_contact.js +375 -0
  513. package/src/engine/physics/narrowphase/compute_penetration.d.ts +91 -0
  514. package/src/engine/physics/narrowphase/compute_penetration.d.ts.map +1 -0
  515. package/src/engine/physics/narrowphase/compute_penetration.js +396 -0
  516. package/src/engine/physics/narrowphase/decomposition/aabb_world_to_local.d.ts +35 -0
  517. package/src/engine/physics/narrowphase/decomposition/aabb_world_to_local.d.ts.map +1 -0
  518. package/src/engine/physics/narrowphase/decomposition/aabb_world_to_local.js +80 -0
  519. package/src/engine/physics/narrowphase/decomposition/decompose_to_triangles.d.ts +31 -0
  520. package/src/engine/physics/narrowphase/decomposition/decompose_to_triangles.d.ts.map +1 -0
  521. package/src/engine/physics/narrowphase/decomposition/decompose_to_triangles.js +55 -0
  522. package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.d.ts +42 -0
  523. package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.d.ts.map +1 -0
  524. package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.js +204 -0
  525. package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.d.ts +42 -0
  526. package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.d.ts.map +1 -0
  527. package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.js +94 -0
  528. package/src/engine/physics/narrowphase/decomposition/triangle_buffer_layout.d.ts +37 -0
  529. package/src/engine/physics/narrowphase/decomposition/triangle_buffer_layout.d.ts.map +1 -0
  530. package/src/engine/physics/narrowphase/decomposition/triangle_buffer_layout.js +37 -0
  531. package/src/engine/physics/narrowphase/narrowphase_step.d.ts +17 -0
  532. package/src/engine/physics/narrowphase/narrowphase_step.d.ts.map +1 -0
  533. package/src/engine/physics/narrowphase/narrowphase_step.js +1422 -0
  534. package/src/engine/physics/narrowphase/sphere_box_contact.d.ts +38 -0
  535. package/src/engine/physics/narrowphase/sphere_box_contact.d.ts.map +1 -0
  536. package/src/engine/physics/narrowphase/sphere_box_contact.js +123 -0
  537. package/src/engine/physics/narrowphase/sphere_sphere_contact.d.ts +26 -0
  538. package/src/engine/physics/narrowphase/sphere_sphere_contact.d.ts.map +1 -0
  539. package/src/engine/physics/narrowphase/sphere_sphere_contact.js +51 -0
  540. package/src/engine/physics/narrowphase/sphere_triangle_contact.d.ts +48 -0
  541. package/src/engine/physics/narrowphase/sphere_triangle_contact.d.ts.map +1 -0
  542. package/src/engine/physics/narrowphase/sphere_triangle_contact.js +143 -0
  543. package/src/engine/physics/queries/PhysicsSurfacePoint.d.ts +83 -0
  544. package/src/engine/physics/queries/PhysicsSurfacePoint.d.ts.map +1 -0
  545. package/src/engine/physics/queries/PhysicsSurfacePoint.js +100 -0
  546. package/src/engine/physics/queries/overlap_shape.d.ts +51 -0
  547. package/src/engine/physics/queries/overlap_shape.d.ts.map +1 -0
  548. package/src/engine/physics/queries/overlap_shape.js +183 -0
  549. package/src/engine/physics/queries/raycast.d.ts +20 -0
  550. package/src/engine/physics/queries/raycast.d.ts.map +1 -0
  551. package/src/engine/physics/queries/raycast.js +249 -0
  552. package/src/engine/physics/queries/shape_cast.d.ts +56 -0
  553. package/src/engine/physics/queries/shape_cast.d.ts.map +1 -0
  554. package/src/engine/physics/queries/shape_cast.js +387 -0
  555. package/src/engine/physics/solver/friction_cone.d.ts +16 -0
  556. package/src/engine/physics/solver/friction_cone.d.ts.map +1 -0
  557. package/src/engine/physics/solver/friction_cone.js +37 -0
  558. package/src/engine/physics/solver/solve_contacts.d.ts +122 -0
  559. package/src/engine/physics/solver/solve_contacts.d.ts.map +1 -0
  560. package/src/engine/physics/solver/solve_contacts.js +1016 -0
  561. package/src/core/geom/3d/topology/struct/binary/io/edge/OrderedEdge.d.ts +0 -34
  562. package/src/core/geom/3d/topology/struct/binary/io/edge/OrderedEdge.d.ts.map +0 -1
  563. package/src/core/geom/3d/topology/struct/binary/io/edge/OrderedEdge.js +0 -66
  564. package/src/core/geom/3d/topology/struct/binary/io/edge/bt_mesh_calc_edges.d.ts +0 -2
  565. package/src/core/geom/3d/topology/struct/binary/io/edge/bt_mesh_calc_edges.d.ts.map +0 -1
  566. package/src/core/geom/3d/topology/struct/binary/io/edge/bt_mesh_calc_edges.js +0 -54
  567. package/src/core/geom/3d/topology/struct/binary/io/edge/get_or_create_edge_map.d.ts +0 -2
  568. package/src/core/geom/3d/topology/struct/binary/io/edge/get_or_create_edge_map.d.ts.map +0 -1
  569. package/src/core/geom/3d/topology/struct/binary/io/edge/get_or_create_edge_map.js +0 -26
  570. package/src/engine/ecs/components/Motion.d.ts +0 -21
  571. package/src/engine/ecs/components/Motion.d.ts.map +0 -1
  572. package/src/engine/ecs/components/Motion.js +0 -27
  573. package/src/engine/ecs/components/MotionSerializationAdapter.d.ts +0 -20
  574. package/src/engine/ecs/components/MotionSerializationAdapter.d.ts.map +0 -1
  575. package/src/engine/ecs/components/MotionSerializationAdapter.js +0 -26
  576. package/src/engine/ecs/systems/MotionSystem.d.ts +0 -9
  577. package/src/engine/ecs/systems/MotionSystem.d.ts.map +0 -1
  578. package/src/engine/ecs/systems/MotionSystem.js +0 -29
  579. package/src/engine/physics/fluid/Fluid.d.ts +0 -26
  580. package/src/engine/physics/fluid/Fluid.d.ts.map +0 -1
  581. package/src/engine/physics/fluid/Fluid.js +0 -221
  582. package/src/engine/physics/fluid/solver/v3_grid_apply_advection_reverse.d.ts +0 -7
  583. package/src/engine/physics/fluid/solver/v3_grid_apply_advection_reverse.d.ts.map +0 -1
  584. package/src/engine/physics/fluid/solver/v3_grid_apply_advection_reverse.js +0 -8
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MasteryScore.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/control/first-person/mastery/MasteryScore.js"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;GAmBG;AACH;IACI;;OAEG;IACH,uBAFW,MAAM,EA0BhB;IAvBG;;;;OAIG;IACH,UAFU,MAAM,CAEQ;IAExB;;;;;OAKG;IACH,WAFU,MAAM,CAEE;IAElB;;;;;;OAMG;IACH,SAFU,MAAM,EAAE,CAEoC;IAG1D;;;;;;;OAOG;IACH,sBAHW,MAAM,cACN,MAAM,QAYhB;IAED;;;;;OAKG;IACH,UAFW,MAAM,QAUhB;IAED;;OAEG;IACH,cAKC;CACJ"}
@@ -0,0 +1,100 @@
1
+ import { DecisionPoint } from "./DecisionPoint.js";
2
+
3
+ const LN2 = Math.log(2);
4
+
5
+ /**
6
+ * Exponential moving average of mastery contributions. Provides a per-
7
+ * decision-point and a global aggregate score, both centred at 0:
8
+ *
9
+ * `score === 0` → on average, evaluators returned 1.0 (neutral)
10
+ * `score > 0` → trending bonus (player is consistently timing well)
11
+ * `score < 0` → trending penalty (player is consistently mistiming)
12
+ *
13
+ * The controller does NOT consume this score itself. It's a side-channel
14
+ * for downstream systems (HUDs, post-match summaries, training-mode
15
+ * coaching, achievement triggers, leaderboards) to expose mastery
16
+ * progress however they see fit, without forcing any visual treatment on
17
+ * the controller.
18
+ *
19
+ * Samples are added by {@link MasterySet} as evaluators fire. Time-based
20
+ * decay (so old samples wash out) is applied via {@link tick}.
21
+ *
22
+ * @author Alex Goldring
23
+ * @copyright Company Named Limited (c) 2026
24
+ */
25
+ export class MasteryScore {
26
+ /**
27
+ * @param {number} [halfLife] seconds for any sample's contribution to halve
28
+ */
29
+ constructor(halfLife = 8.0) {
30
+ /**
31
+ * Time-half-life of the EMA. A score sample 1×halfLife ago counts ½
32
+ * as much as a fresh one. Tune for "how recent should mastery feel".
33
+ * @type {number}
34
+ */
35
+ this.halfLife = halfLife;
36
+
37
+ /**
38
+ * EMA of (multiplier − 1.0) across ALL evaluator contributions.
39
+ * Useful as a single-number "how skilled has the player been
40
+ * recently" indicator.
41
+ * @type {number}
42
+ */
43
+ this.aggregate = 0;
44
+
45
+ /**
46
+ * EMA per decision point — same metric, sliced by which interaction
47
+ * the contribution came from. Index space matches DecisionPoint.
48
+ * Useful for telemetry like "you're nailing jump timing but poor at
49
+ * slide initiation".
50
+ * @type {number[]}
51
+ */
52
+ this.byPoint = new Array(DecisionPoint._Count).fill(0);
53
+ }
54
+
55
+ /**
56
+ * Record a contribution from an evaluator. Call once per evaluator per
57
+ * decision-point evaluation. The multiplier is converted to a signed
58
+ * deviation from neutral (1.0) for EMA accumulation.
59
+ *
60
+ * @param {number} decisionPoint
61
+ * @param {number} multiplier raw evaluator output (1.0 = neutral)
62
+ */
63
+ record(decisionPoint, multiplier) {
64
+ const dev = multiplier - 1.0;
65
+ // Light blend on each sample; the per-tick time decay (apply()) is
66
+ // what actually carries the EMA character.
67
+ const blend = 0.1;
68
+ this.aggregate = (1 - blend) * this.aggregate + blend * dev;
69
+ const pi = decisionPoint;
70
+ if (pi >= 0 && pi < this.byPoint.length) {
71
+ this.byPoint[pi] = (1 - blend) * this.byPoint[pi] + blend * dev;
72
+ }
73
+ }
74
+
75
+ /**
76
+ * Apply time-based decay so stale samples wash out. Call once per
77
+ * fixed step; the system handles this for you.
78
+ *
79
+ * @param {number} dt seconds
80
+ */
81
+ decay(dt) {
82
+ if (this.halfLife <= 0 || dt <= 0) return;
83
+ // Multiplicative decay toward 0 with the given half-life.
84
+ const alpha = Math.exp(-LN2 * dt / this.halfLife);
85
+ this.aggregate *= alpha;
86
+ for (let i = 0; i < this.byPoint.length; i++) {
87
+ this.byPoint[i] *= alpha;
88
+ }
89
+ }
90
+
91
+ /**
92
+ * Reset to neutral. Useful on respawn / scene change.
93
+ */
94
+ reset() {
95
+ this.aggregate = 0;
96
+ for (let i = 0; i < this.byPoint.length; i++) {
97
+ this.byPoint[i] = 0;
98
+ }
99
+ }
100
+ }
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Aggregates {@link MasteryEvaluator} instances and exposes a single
3
+ * `evaluate(decisionPoint, ...)` entry point that composes all evaluators
4
+ * for that point multiplicatively.
5
+ *
6
+ * Identity behaviour: with zero evaluators registered, every query returns
7
+ * `1.0`, leaving the base controller behaviour untouched. This is the
8
+ * default state — mastery is opt-in.
9
+ *
10
+ * Composition: contributions multiply, NOT sum. So a +10% and a +5% give
11
+ * +15.5% (1.10 × 1.05 = 1.155). And a +10% with a −5% gives +4.5% (1.10
12
+ * × 0.95 = 1.045). Mistiming partially offsets bonuses from other
13
+ * evaluators — exactly what we want for honest "your timing matters
14
+ * everywhere" feel.
15
+ *
16
+ * @author Alex Goldring
17
+ * @copyright Company Named Limited (c) 2026
18
+ */
19
+ export class MasterySet {
20
+ /**
21
+ * Registered evaluators, in insertion order.
22
+ * @type {MasteryEvaluator[]}
23
+ */
24
+ evaluators: MasteryEvaluator[];
25
+ /**
26
+ * Telemetry EMA. The controller doesn't consume it; downstream
27
+ * systems read it for player-facing mastery feedback.
28
+ * @type {MasteryScore}
29
+ */
30
+ score: MasteryScore;
31
+ /**
32
+ * Add an evaluator. Order does not affect the final result
33
+ * (multiplication is commutative).
34
+ * @param {MasteryEvaluator} evaluator
35
+ */
36
+ add(evaluator: MasteryEvaluator): void;
37
+ /**
38
+ * Remove an evaluator if present.
39
+ * @param {MasteryEvaluator} evaluator
40
+ */
41
+ remove(evaluator: MasteryEvaluator): void;
42
+ /**
43
+ * Compose all registered evaluators against `decisionPoint`. Each
44
+ * evaluator's contribution is recorded into the score for telemetry,
45
+ * then multiplied into the running product.
46
+ *
47
+ * @param {number} decisionPoint
48
+ * @param {*} controller
49
+ * @param {*} runtime
50
+ * @returns {number} composed multiplier; 1.0 if no evaluators care
51
+ */
52
+ evaluate(decisionPoint: number, controller: any, runtime: any): number;
53
+ /**
54
+ * Advance the score's time-based decay. Call once per fixed step.
55
+ * @param {number} dt
56
+ */
57
+ tick(dt: number): void;
58
+ }
59
+ import { MasteryScore } from "./MasteryScore.js";
60
+ //# sourceMappingURL=MasterySet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MasterySet.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/control/first-person/mastery/MasterySet.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;GAiBG;AACH;IAEQ;;;OAGG;IACH,YAFU,kBAAkB,CAER;IAEpB;;;;OAIG;IACH,OAFU,YAAY,CAES;IAGnC;;;;OAIG;IACH,uCAEC;IAED;;;OAGG;IACH,0CAGC;IAED;;;;;;;;;OASG;IACH,wBALW,MAAM,kCAGJ,MAAM,CAclB;IAED;;;OAGG;IACH,SAFW,MAAM,QAIhB;CACJ;6BArF4B,mBAAmB"}
@@ -0,0 +1,86 @@
1
+ import { MasteryScore } from "./MasteryScore.js";
2
+
3
+ /**
4
+ * Aggregates {@link MasteryEvaluator} instances and exposes a single
5
+ * `evaluate(decisionPoint, ...)` entry point that composes all evaluators
6
+ * for that point multiplicatively.
7
+ *
8
+ * Identity behaviour: with zero evaluators registered, every query returns
9
+ * `1.0`, leaving the base controller behaviour untouched. This is the
10
+ * default state — mastery is opt-in.
11
+ *
12
+ * Composition: contributions multiply, NOT sum. So a +10% and a +5% give
13
+ * +15.5% (1.10 × 1.05 = 1.155). And a +10% with a −5% gives +4.5% (1.10
14
+ * × 0.95 = 1.045). Mistiming partially offsets bonuses from other
15
+ * evaluators — exactly what we want for honest "your timing matters
16
+ * everywhere" feel.
17
+ *
18
+ * @author Alex Goldring
19
+ * @copyright Company Named Limited (c) 2026
20
+ */
21
+ export class MasterySet {
22
+ constructor() {
23
+ /**
24
+ * Registered evaluators, in insertion order.
25
+ * @type {MasteryEvaluator[]}
26
+ */
27
+ this.evaluators = [];
28
+
29
+ /**
30
+ * Telemetry EMA. The controller doesn't consume it; downstream
31
+ * systems read it for player-facing mastery feedback.
32
+ * @type {MasteryScore}
33
+ */
34
+ this.score = new MasteryScore();
35
+ }
36
+
37
+ /**
38
+ * Add an evaluator. Order does not affect the final result
39
+ * (multiplication is commutative).
40
+ * @param {MasteryEvaluator} evaluator
41
+ */
42
+ add(evaluator) {
43
+ this.evaluators.push(evaluator);
44
+ }
45
+
46
+ /**
47
+ * Remove an evaluator if present.
48
+ * @param {MasteryEvaluator} evaluator
49
+ */
50
+ remove(evaluator) {
51
+ const i = this.evaluators.indexOf(evaluator);
52
+ if (i !== -1) this.evaluators.splice(i, 1);
53
+ }
54
+
55
+ /**
56
+ * Compose all registered evaluators against `decisionPoint`. Each
57
+ * evaluator's contribution is recorded into the score for telemetry,
58
+ * then multiplied into the running product.
59
+ *
60
+ * @param {number} decisionPoint
61
+ * @param {*} controller
62
+ * @param {*} runtime
63
+ * @returns {number} composed multiplier; 1.0 if no evaluators care
64
+ */
65
+ evaluate(decisionPoint, controller, runtime) {
66
+ let product = 1.0;
67
+ const n = this.evaluators.length;
68
+ for (let i = 0; i < n; i++) {
69
+ const v = this.evaluators[i].evaluate(decisionPoint, controller, runtime);
70
+ // Defensive: ignore evaluators returning non-finite or non-positive
71
+ // values (would corrupt downstream math). Treat as identity.
72
+ if (!Number.isFinite(v) || v <= 0) continue;
73
+ product *= v;
74
+ this.score.record(decisionPoint, v);
75
+ }
76
+ return product;
77
+ }
78
+
79
+ /**
80
+ * Advance the score's time-based decay. Call once per fixed step.
81
+ * @param {number} dt
82
+ */
83
+ tick(dt) {
84
+ this.score.decay(dt);
85
+ }
86
+ }
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Default symmetric stride-timing curve for slide entry. Peaks at the
3
+ * midstance phases (≈0.25 R-mid, ≈0.75 L-mid) — committing to the slide
4
+ * at midstance lets you convert your push-off momentum into the slide's
5
+ * forward velocity cleanly. Troughs near footfall transitions (≈0, ≈0.5)
6
+ * where the leg's loading-response decelerates the body and a slide
7
+ * commitment loses energy to the foot-ground transition.
8
+ *
9
+ * Designed shape: smaller range than the jump curve. Slide is a forgiving
10
+ * mechanic — the bonus is at most ~+6%, the penalty at most ~−3%. Both
11
+ * are well below the JumpImpulse curve's swing (peak +12%, trough −4%)
12
+ * because slide timing is harder to feel deliberately than jump timing.
13
+ *
14
+ * @returns {AnimationCurve}
15
+ */
16
+ export function makeDefaultSlideInitiationTimingCurve(): AnimationCurve;
17
+ /**
18
+ * Mastery evaluator: slide-entry velocity preservation scales with
19
+ * stride-phase timing at the moment of crouch-press. Committing at
20
+ * midstance lets the body convert push-off momentum directly into the
21
+ * slide's launch velocity. Committing at footfall means the leg is
22
+ * absorbing the body's downward momentum just as the slide starts, and
23
+ * the transition loses energy.
24
+ *
25
+ * Physically motivated: real-world athletes diving into a slide at the
26
+ * right gait moment land flatter and keep more momentum than at the
27
+ * wrong one. The range is tight (≈±5%) because slide is a forgiving
28
+ * action — the design rule "slide is forgiving — small skill ceiling"
29
+ * (DESIGN_EXTENSIONS Phase 7).
30
+ *
31
+ * Symmetry: behaves on both sides (bonus and penalty), asymmetric in
32
+ * magnitude (bonus larger). Bonus side is the design's "reward the
33
+ * timing" half; penalty side discourages mashing crouch arbitrarily.
34
+ *
35
+ * @author Alex Goldring
36
+ * @copyright Company Named Limited (c) 2026
37
+ */
38
+ export class SlideInitiationTimingEvaluator extends MasteryEvaluator {
39
+ /**
40
+ * Curve mapping stridePhase ∈ [0..1) → multiplier on the slide-
41
+ * entry velocity preservation. Symmetric in behaviour, asymmetric
42
+ * in magnitude (peak farther from 1.0 than trough).
43
+ * @type {AnimationCurve}
44
+ */
45
+ curve: AnimationCurve;
46
+ /**
47
+ * Exponent applied to (curve − 1.0) to scale overall response.
48
+ * Convention shared with {@link StrideTimingJumpEvaluator}:
49
+ * tune deviation, not curve directly, so symmetry around 1.0 is
50
+ * preserved.
51
+ * @type {number}
52
+ */
53
+ flatBoost: number;
54
+ evaluate(decisionPoint: any, controller: any, _runtime: any): number;
55
+ }
56
+ import { AnimationCurve } from "../../../animation/curve/AnimationCurve.js";
57
+ import { MasteryEvaluator } from "./MasteryEvaluator.js";
58
+ //# sourceMappingURL=SlideInitiationTimingEvaluator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SlideInitiationTimingEvaluator.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/control/first-person/mastery/SlideInitiationTimingEvaluator.js"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;GAcG;AACH,yDAFa,cAAc,CAS1B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH;IAKQ;;;;;OAKG;IACH,OAFU,cAAc,CAE4B;IAEpD;;;;;;OAMG;IACH,WAFU,MAAM,CAEI;IAGxB,qEAQC;CACJ;+BAlF8B,4CAA4C;iCAG1C,uBAAuB"}
@@ -0,0 +1,83 @@
1
+ import { AnimationCurve } from "../../../animation/curve/AnimationCurve.js";
2
+ import { Keyframe } from "../../../animation/curve/Keyframe.js";
3
+ import { DecisionPoint } from "./DecisionPoint.js";
4
+ import { MasteryEvaluator } from "./MasteryEvaluator.js";
5
+
6
+ /**
7
+ * Default symmetric stride-timing curve for slide entry. Peaks at the
8
+ * midstance phases (≈0.25 R-mid, ≈0.75 L-mid) — committing to the slide
9
+ * at midstance lets you convert your push-off momentum into the slide's
10
+ * forward velocity cleanly. Troughs near footfall transitions (≈0, ≈0.5)
11
+ * where the leg's loading-response decelerates the body and a slide
12
+ * commitment loses energy to the foot-ground transition.
13
+ *
14
+ * Designed shape: smaller range than the jump curve. Slide is a forgiving
15
+ * mechanic — the bonus is at most ~+6%, the penalty at most ~−3%. Both
16
+ * are well below the JumpImpulse curve's swing (peak +12%, trough −4%)
17
+ * because slide timing is harder to feel deliberately than jump timing.
18
+ *
19
+ * @returns {AnimationCurve}
20
+ */
21
+ export function makeDefaultSlideInitiationTimingCurve() {
22
+ return AnimationCurve.from([
23
+ Keyframe.from(0.00, 0.97), // R-foot footfall — slight penalty
24
+ Keyframe.from(0.25, 1.06), // R-foot midstance — peak commitment
25
+ Keyframe.from(0.50, 0.97), // L-foot footfall — slight penalty
26
+ Keyframe.from(0.75, 1.06), // L-foot midstance — peak commitment
27
+ ]);
28
+ }
29
+
30
+ /**
31
+ * Mastery evaluator: slide-entry velocity preservation scales with
32
+ * stride-phase timing at the moment of crouch-press. Committing at
33
+ * midstance lets the body convert push-off momentum directly into the
34
+ * slide's launch velocity. Committing at footfall means the leg is
35
+ * absorbing the body's downward momentum just as the slide starts, and
36
+ * the transition loses energy.
37
+ *
38
+ * Physically motivated: real-world athletes diving into a slide at the
39
+ * right gait moment land flatter and keep more momentum than at the
40
+ * wrong one. The range is tight (≈±5%) because slide is a forgiving
41
+ * action — the design rule "slide is forgiving — small skill ceiling"
42
+ * (DESIGN_EXTENSIONS Phase 7).
43
+ *
44
+ * Symmetry: behaves on both sides (bonus and penalty), asymmetric in
45
+ * magnitude (bonus larger). Bonus side is the design's "reward the
46
+ * timing" half; penalty side discourages mashing crouch arbitrarily.
47
+ *
48
+ * @author Alex Goldring
49
+ * @copyright Company Named Limited (c) 2026
50
+ */
51
+ export class SlideInitiationTimingEvaluator extends MasteryEvaluator {
52
+ constructor() {
53
+ super();
54
+ this.name = "SlideInitiationTiming";
55
+
56
+ /**
57
+ * Curve mapping stridePhase ∈ [0..1) → multiplier on the slide-
58
+ * entry velocity preservation. Symmetric in behaviour, asymmetric
59
+ * in magnitude (peak farther from 1.0 than trough).
60
+ * @type {AnimationCurve}
61
+ */
62
+ this.curve = makeDefaultSlideInitiationTimingCurve();
63
+
64
+ /**
65
+ * Exponent applied to (curve − 1.0) to scale overall response.
66
+ * Convention shared with {@link StrideTimingJumpEvaluator}:
67
+ * tune deviation, not curve directly, so symmetry around 1.0 is
68
+ * preserved.
69
+ * @type {number}
70
+ */
71
+ this.flatBoost = 1.0;
72
+ }
73
+
74
+ evaluate(decisionPoint, controller, _runtime) {
75
+ if (decisionPoint !== DecisionPoint.SlideEntryVelocity) return 1.0;
76
+
77
+ const phase = controller.state.stridePhase;
78
+ const raw = this.curve.evaluate(phase);
79
+
80
+ // Scale the deviation around 1.0 by flatBoost so symmetry holds.
81
+ return 1.0 + (raw - 1.0) * this.flatBoost;
82
+ }
83
+ }
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Default symmetric stride-timing curve for the jump-impulse decision
3
+ * point. Peaks at the midstance phases (≈0.25 R-mid, ≈0.75 L-mid) and
4
+ * troughs near the footfall transitions (≈0, ≈0.5).
5
+ *
6
+ * Curve is asymmetric in magnitude per the project rule: bonus side is
7
+ * larger than penalty side. Default peak = +12%, default trough = −4%.
8
+ * The curve is keyed at the four phase critical points; the engine's
9
+ * tangent-interpolation gives smooth motion between them.
10
+ *
11
+ * @returns {AnimationCurve}
12
+ */
13
+ export function makeDefaultStrideTimingJumpCurve(): AnimationCurve;
14
+ /**
15
+ * Mastery evaluator: jump impulse magnitude scales with stride-phase
16
+ * timing. Pressing jump at midstance (legs straight, body high in the
17
+ * gait cycle, push-off power available) gives a small bonus. Pressing
18
+ * during loading response (just after foot strike, body's downward
19
+ * momentum still being absorbed) gives a small penalty.
20
+ *
21
+ * Physically motivated: real athletes get more vertical from a jump
22
+ * timed to ankle/knee extension than from one timed to the loading phase
23
+ * of the gait cycle. The bonus is small (~12% peak) because real
24
+ * difference is also small — this is mastery, not exploit-power.
25
+ *
26
+ * Optional foot-asymmetry: if the player has a configured
27
+ * `dominantFoot`, that foot's midstance peak is slightly higher
28
+ * (representing the natural handedness asymmetry — right-dominant
29
+ * humans push slightly harder off the right leg). Off by default.
30
+ *
31
+ * @author Alex Goldring
32
+ * @copyright Company Named Limited (c) 2026
33
+ */
34
+ export class StrideTimingJumpEvaluator extends MasteryEvaluator {
35
+ /**
36
+ * Curve mapping stridePhase ∈ [0..1) → multiplier. Authored to be
37
+ * symmetric in *behaviour* (bonus and penalty regions both
38
+ * present) and asymmetric in *magnitude* (peak > 1 + ε; trough <
39
+ * 1 − ε, with bonus larger than penalty).
40
+ * @type {AnimationCurve}
41
+ */
42
+ curve: AnimationCurve;
43
+ /**
44
+ * Exponent applied to (curve − 1.0). Scales the OVERALL response
45
+ * magnitude without re-authoring the curve. Default 1.0 = use
46
+ * curve as authored. 0.5 = halve all effects. 1.5 = 50% larger.
47
+ * Convention: scale the deviation, not the curve directly, so
48
+ * the symmetry around 1.0 is preserved.
49
+ * @type {number}
50
+ */
51
+ flatBoost: number;
52
+ /**
53
+ * Optional foot-asymmetry: extra bonus when the dominant foot is
54
+ * the standing one at jump time. Set to "R" or "L" to enable.
55
+ * `null` (default) = no asymmetry.
56
+ * @type {"R"|"L"|null}
57
+ */
58
+ dominantFoot: "R" | "L" | null;
59
+ /**
60
+ * Magnitude of the foot-asymmetry contribution (additive to the
61
+ * multiplier). Default 0.03 = up to +3% on dominant-foot jumps.
62
+ * @type {number}
63
+ */
64
+ dominantFootBonus: number;
65
+ evaluate(decisionPoint: any, controller: any, runtime: any): number;
66
+ }
67
+ import { AnimationCurve } from "../../../animation/curve/AnimationCurve.js";
68
+ import { MasteryEvaluator } from "./MasteryEvaluator.js";
69
+ //# sourceMappingURL=StrideTimingJumpEvaluator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StrideTimingJumpEvaluator.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/control/first-person/mastery/StrideTimingJumpEvaluator.js"],"names":[],"mappings":"AAKA;;;;;;;;;;;GAWG;AACH,oDAFa,cAAc,CAS1B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH;IAKQ;;;;;;OAMG;IACH,OAFU,cAAc,CAEuB;IAE/C;;;;;;;OAOG;IACH,WAFU,MAAM,CAEI;IAEpB;;;;;OAKG;IACH,cAFU,GAAG,GAAC,GAAG,GAAC,IAAI,CAEE;IAExB;;;;OAIG;IACH,mBAFU,MAAM,CAEa;IAGjC,oEAqBC;CACJ;+BA5G8B,4CAA4C;iCAG1C,uBAAuB"}
@@ -0,0 +1,109 @@
1
+ import { AnimationCurve } from "../../../animation/curve/AnimationCurve.js";
2
+ import { Keyframe } from "../../../animation/curve/Keyframe.js";
3
+ import { DecisionPoint } from "./DecisionPoint.js";
4
+ import { MasteryEvaluator } from "./MasteryEvaluator.js";
5
+
6
+ /**
7
+ * Default symmetric stride-timing curve for the jump-impulse decision
8
+ * point. Peaks at the midstance phases (≈0.25 R-mid, ≈0.75 L-mid) and
9
+ * troughs near the footfall transitions (≈0, ≈0.5).
10
+ *
11
+ * Curve is asymmetric in magnitude per the project rule: bonus side is
12
+ * larger than penalty side. Default peak = +12%, default trough = −4%.
13
+ * The curve is keyed at the four phase critical points; the engine's
14
+ * tangent-interpolation gives smooth motion between them.
15
+ *
16
+ * @returns {AnimationCurve}
17
+ */
18
+ export function makeDefaultStrideTimingJumpCurve() {
19
+ return AnimationCurve.from([
20
+ Keyframe.from(0.00, 0.96), // R-foot footfall — slight penalty (just touched down)
21
+ Keyframe.from(0.25, 1.12), // R-foot midstance — peak push-off power
22
+ Keyframe.from(0.50, 0.96), // L-foot footfall — slight penalty
23
+ Keyframe.from(0.75, 1.12), // L-foot midstance — peak push-off power
24
+ ]);
25
+ }
26
+
27
+ /**
28
+ * Mastery evaluator: jump impulse magnitude scales with stride-phase
29
+ * timing. Pressing jump at midstance (legs straight, body high in the
30
+ * gait cycle, push-off power available) gives a small bonus. Pressing
31
+ * during loading response (just after foot strike, body's downward
32
+ * momentum still being absorbed) gives a small penalty.
33
+ *
34
+ * Physically motivated: real athletes get more vertical from a jump
35
+ * timed to ankle/knee extension than from one timed to the loading phase
36
+ * of the gait cycle. The bonus is small (~12% peak) because real
37
+ * difference is also small — this is mastery, not exploit-power.
38
+ *
39
+ * Optional foot-asymmetry: if the player has a configured
40
+ * `dominantFoot`, that foot's midstance peak is slightly higher
41
+ * (representing the natural handedness asymmetry — right-dominant
42
+ * humans push slightly harder off the right leg). Off by default.
43
+ *
44
+ * @author Alex Goldring
45
+ * @copyright Company Named Limited (c) 2026
46
+ */
47
+ export class StrideTimingJumpEvaluator extends MasteryEvaluator {
48
+ constructor() {
49
+ super();
50
+ this.name = "StrideTimingJump";
51
+
52
+ /**
53
+ * Curve mapping stridePhase ∈ [0..1) → multiplier. Authored to be
54
+ * symmetric in *behaviour* (bonus and penalty regions both
55
+ * present) and asymmetric in *magnitude* (peak > 1 + ε; trough <
56
+ * 1 − ε, with bonus larger than penalty).
57
+ * @type {AnimationCurve}
58
+ */
59
+ this.curve = makeDefaultStrideTimingJumpCurve();
60
+
61
+ /**
62
+ * Exponent applied to (curve − 1.0). Scales the OVERALL response
63
+ * magnitude without re-authoring the curve. Default 1.0 = use
64
+ * curve as authored. 0.5 = halve all effects. 1.5 = 50% larger.
65
+ * Convention: scale the deviation, not the curve directly, so
66
+ * the symmetry around 1.0 is preserved.
67
+ * @type {number}
68
+ */
69
+ this.flatBoost = 1.0;
70
+
71
+ /**
72
+ * Optional foot-asymmetry: extra bonus when the dominant foot is
73
+ * the standing one at jump time. Set to "R" or "L" to enable.
74
+ * `null` (default) = no asymmetry.
75
+ * @type {"R"|"L"|null}
76
+ */
77
+ this.dominantFoot = null;
78
+
79
+ /**
80
+ * Magnitude of the foot-asymmetry contribution (additive to the
81
+ * multiplier). Default 0.03 = up to +3% on dominant-foot jumps.
82
+ * @type {number}
83
+ */
84
+ this.dominantFootBonus = 0.03;
85
+ }
86
+
87
+ evaluate(decisionPoint, controller, runtime) {
88
+ if (decisionPoint !== DecisionPoint.JumpImpulse) return 1.0;
89
+
90
+ const phase = controller.state.stridePhase;
91
+ const raw = this.curve.evaluate(phase);
92
+
93
+ // Scale the deviation around 1.0 by flatBoost so symmetry holds:
94
+ // raw < 1 stays < 1, raw > 1 stays > 1, magnitude scales linearly.
95
+ let multiplier = 1.0 + (raw - 1.0) * this.flatBoost;
96
+
97
+ // Foot-asymmetry bonus only adds in the BONUS region (raw > 1),
98
+ // never amplifies the penalty. Keeps "favouring your dominant
99
+ // foot" as a strictly-additive nicety rather than a tax on the
100
+ // off-foot.
101
+ if (this.dominantFoot !== null
102
+ && runtime.standingFoot === this.dominantFoot
103
+ && raw > 1.0) {
104
+ multiplier *= 1.0 + this.dominantFootBonus;
105
+ }
106
+
107
+ return multiplier;
108
+ }
109
+ }
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Damped spring with a value and velocity. Half-life parameterized.
3
+ *
4
+ * Convention: zeta = 1.0 is critically damped (no overshoot, fastest settle).
5
+ * zeta < 1.0 under-damps (oscillation/ringing, useful for impact bounces).
6
+ * zeta > 1.0 over-damps (slow approach, rarely useful in this engine).
7
+ *
8
+ * Use kick() to inject a velocity impulse (e.g. footfall impact, gunfire
9
+ * recoil, knockback). Use stepTo() each fixed update to advance the
10
+ * simulation toward a target value.
11
+ *
12
+ * @author Alex Goldring
13
+ * @copyright Company Named Limited (c) 2026
14
+ */
15
+ export class Spring {
16
+ /**
17
+ * @param {number} [value] initial value
18
+ * @param {number} [velocity] initial velocity
19
+ */
20
+ constructor(value?: number, velocity?: number);
21
+ value: number;
22
+ velocity: number;
23
+ /**
24
+ * Advance the spring toward `target`. Same half-life form used by the
25
+ * pre-existing dampedSpringStep / criticallyDampedSpringStep helpers.
26
+ *
27
+ * @param {number} target target value
28
+ * @param {number} halfLife seconds for the envelope to halve (smaller → snappier)
29
+ * @param {number} zeta damping ratio (1=critical, <1=ring, >1=sluggish)
30
+ * @param {number} dt
31
+ */
32
+ stepTo(target: number, halfLife: number, zeta: number, dt: number): void;
33
+ /**
34
+ * Inject a velocity impulse. Use for one-shot events that should result
35
+ * in an immediate "snap" (footfall down-kick, recoil push, blow-back).
36
+ *
37
+ * @param {number} impulse velocity to add
38
+ */
39
+ kick(impulse: number): void;
40
+ /**
41
+ * Instantaneously place the spring at a value with zero velocity. Use
42
+ * when initializing or hard-resetting (e.g. teleport).
43
+ *
44
+ * @param {number} [value]
45
+ */
46
+ settle(value?: number): void;
47
+ /**
48
+ * Displace value while preserving velocity. Used for "land here, then
49
+ * decay" — see landing recovery where we want the impact dip displaced
50
+ * but the velocity to ride out from there.
51
+ *
52
+ * @param {number} value
53
+ */
54
+ setValue(value: number): void;
55
+ }
56
+ //# sourceMappingURL=Spring.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Spring.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/control/first-person/math/Spring.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AACH;IACI;;;OAGG;IACH,oBAHW,MAAM,aACN,MAAM,EAKhB;IAFG,cAAkB;IAClB,iBAAwB;IAG5B;;;;;;;;OAQG;IACH,eALW,MAAM,YACN,MAAM,QACN,MAAM,MACN,MAAM,QAIhB;IAED;;;;;OAKG;IACH,cAFW,MAAM,QAIhB;IAED;;;;;OAKG;IACH,eAFW,MAAM,QAKhB;IAED;;;;;;OAMG;IACH,gBAFW,MAAM,QAIhB;CACJ"}