@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.
- package/package.json +1 -1
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_overlaps_aabb.d.ts +3 -3
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_overlaps_aabb.d.ts.map +1 -1
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_overlaps_aabb.js +4 -4
- package/src/core/collection/PairUint32Map.d.ts +100 -0
- package/src/core/collection/PairUint32Map.d.ts.map +1 -0
- package/src/core/collection/PairUint32Map.js +321 -0
- package/src/core/collection/Uint32Map.d.ts +119 -0
- package/src/core/collection/Uint32Map.d.ts.map +1 -0
- package/src/core/collection/Uint32Map.js +345 -0
- package/src/core/collection/array/array_shuffle.d.ts +10 -3
- package/src/core/collection/array/array_shuffle.d.ts.map +1 -1
- package/src/core/collection/array/array_shuffle.js +27 -22
- package/src/core/collection/heap/FibonacciHeap.d.ts +195 -0
- package/src/core/collection/heap/FibonacciHeap.d.ts.map +1 -0
- package/src/core/collection/heap/FibonacciHeap.js +586 -0
- package/src/core/collection/heap/Uint32Heap.js +1 -1
- package/src/core/collection/heap/Uint32Heap4.d.ts +169 -0
- package/src/core/collection/heap/Uint32Heap4.d.ts.map +1 -0
- package/src/core/collection/heap/Uint32Heap4.js +490 -0
- package/src/core/geom/3d/aabb/aabb3_transform_oriented.d.ts +30 -0
- package/src/core/geom/3d/aabb/aabb3_transform_oriented.d.ts.map +1 -0
- package/src/core/geom/3d/aabb/aabb3_transform_oriented.js +93 -0
- package/src/core/geom/3d/line/line3_closest_points_segment_segment.d.ts +27 -0
- package/src/core/geom/3d/line/line3_closest_points_segment_segment.d.ts.map +1 -0
- package/src/core/geom/3d/line/line3_closest_points_segment_segment.js +88 -0
- package/src/core/geom/3d/quaternion/quat3_to_matrix3.d.ts +54 -0
- package/src/core/geom/3d/quaternion/quat3_to_matrix3.d.ts.map +1 -0
- package/src/core/geom/3d/quaternion/quat3_to_matrix3.js +69 -0
- package/src/core/geom/3d/shape/AbstractShape3D.d.ts +24 -2
- package/src/core/geom/3d/shape/AbstractShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/AbstractShape3D.js +24 -1
- package/src/core/geom/3d/shape/BoxShape3D.d.ts +61 -0
- package/src/core/geom/3d/shape/BoxShape3D.d.ts.map +1 -0
- package/src/core/geom/3d/shape/BoxShape3D.js +158 -0
- package/src/core/geom/3d/shape/CapsuleShape3D.d.ts +11 -0
- package/src/core/geom/3d/shape/CapsuleShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/CapsuleShape3D.js +12 -0
- package/src/core/geom/3d/shape/HeightMapShape3D.d.ts +148 -0
- package/src/core/geom/3d/shape/HeightMapShape3D.d.ts.map +1 -0
- package/src/core/geom/3d/shape/HeightMapShape3D.js +451 -0
- package/src/core/geom/3d/shape/MeshShape3D.d.ts +210 -0
- package/src/core/geom/3d/shape/MeshShape3D.d.ts.map +1 -0
- package/src/core/geom/3d/shape/MeshShape3D.js +593 -0
- package/src/core/geom/3d/shape/TransformedShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/TransformedShape3D.js +46 -2
- package/src/core/geom/3d/shape/Triangle3D.d.ts +95 -0
- package/src/core/geom/3d/shape/Triangle3D.d.ts.map +1 -0
- package/src/core/geom/3d/shape/Triangle3D.js +318 -0
- package/src/core/geom/3d/shape/UnionShape3D.js +13 -0
- package/src/core/geom/3d/shape/UnitCubeShape3D.d.ts +37 -9
- package/src/core/geom/3d/shape/UnitCubeShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/UnitCubeShape3D.js +45 -98
- package/src/core/geom/3d/shape/UnitSphereShape3D.d.ts +10 -0
- package/src/core/geom/3d/shape/UnitSphereShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/UnitSphereShape3D.js +11 -0
- package/src/core/geom/3d/shape/shape_mesh_from_geometry.d.ts +30 -0
- package/src/core/geom/3d/shape/shape_mesh_from_geometry.d.ts.map +1 -0
- package/src/core/geom/3d/shape/shape_mesh_from_geometry.js +64 -0
- package/src/core/geom/3d/shape/util/shape3d_voxelize_to_grid.d.ts +61 -0
- package/src/core/geom/3d/shape/util/shape3d_voxelize_to_grid.d.ts.map +1 -0
- package/src/core/geom/3d/shape/util/shape3d_voxelize_to_grid.js +148 -0
- package/src/core/geom/3d/tetrahedra/compute_tetrahedral_mesh_from_surface.d.ts +39 -0
- package/src/core/geom/3d/tetrahedra/compute_tetrahedral_mesh_from_surface.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/compute_tetrahedral_mesh_from_surface.js +147 -0
- package/src/core/geom/3d/tetrahedra/compute_tetrahedron_quality.d.ts +15 -0
- package/src/core/geom/3d/tetrahedra/compute_tetrahedron_quality.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/compute_tetrahedron_quality.js +22 -0
- package/src/core/geom/3d/tetrahedra/prototype_tetrahedrize_mesh.d.ts +2 -0
- package/src/core/geom/3d/tetrahedra/prototype_tetrahedrize_mesh.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/prototype_tetrahedrize_mesh.js +671 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_build_vertex_to_tets_map.d.ts +28 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_build_vertex_to_tets_map.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_build_vertex_to_tets_map.js +48 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_carve_outside_surface.d.ts +26 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_carve_outside_surface.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_carve_outside_surface.js +222 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_find_tets_around_edge.d.ts +34 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_find_tets_around_edge.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_find_tets_around_edge.js +146 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_flip_23.d.ts +36 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_flip_23.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_flip_23.js +232 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_flip_32.d.ts +33 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_flip_32.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_flip_32.js +255 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_improve_quality.d.ts +68 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_improve_quality.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_improve_quality.js +387 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_smooth_vertex.d.ts +35 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_smooth_vertex.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_smooth_vertex.js +140 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_vertex_is_boundary.d.ts +31 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_vertex_is_boundary.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_vertex_is_boundary.js +97 -0
- package/src/core/geom/3d/tetrahedra/tetrahedron_compute_quality.d.ts +32 -0
- package/src/core/geom/3d/tetrahedra/tetrahedron_compute_quality.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/tetrahedron_compute_quality.js +66 -0
- package/src/core/geom/3d/topology/struct/binary/BinaryElementPool.d.ts +41 -0
- package/src/core/geom/3d/topology/struct/binary/BinaryElementPool.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/BinaryElementPool.js +124 -13
- package/src/core/geom/3d/topology/struct/binary/BinaryTopology.d.ts +134 -0
- package/src/core/geom/3d/topology/struct/binary/BinaryTopology.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/BinaryTopology.js +276 -3
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_close_boundary_holes.d.ts +17 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_close_boundary_holes.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_close_boundary_holes.js +135 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compact.d.ts +14 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compact.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compact.js +177 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_face_decouple.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_face_decouple.js +20 -4
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_simplify.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_simplify.js +5 -3
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_create.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_create.js +9 -0
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_get_or_create.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_get_or_create.js +21 -45
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_kill.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_kill.js +7 -1
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_kill_parallels.d.ts +8 -6
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_kill_parallels.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_kill_parallels.js +8 -6
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_mesh_kill_short_edges.d.ts +22 -0
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_mesh_kill_short_edges.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_mesh_kill_short_edges.js +73 -0
- package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vertex_replace.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vertex_replace.js +51 -1
- package/src/core/geom/3d/topology/struct/binary/query/bt_edge_get.d.ts +10 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_edge_get.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_edge_get.js +42 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.d.ts +28 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.js +227 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_walk_boundary_loops.d.ts +13 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_walk_boundary_loops.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_walk_boundary_loops.js +108 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_query_edge_is_boundary.d.ts +11 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_query_edge_is_boundary.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_query_edge_is_boundary.js +20 -0
- package/src/core/geom/3d/triangle/triangle_mesh_compute_signed_volume.d.ts +20 -0
- package/src/core/geom/3d/triangle/triangle_mesh_compute_signed_volume.d.ts.map +1 -0
- package/src/core/geom/3d/triangle/triangle_mesh_compute_signed_volume.js +38 -0
- package/src/core/geom/3d/triangle/v3_compute_triangle_normal.d.ts +2 -2
- package/src/core/geom/3d/triangle/v3_compute_triangle_normal.d.ts.map +1 -1
- package/src/core/geom/3d/triangle/v3_compute_triangle_normal.js +1 -1
- package/src/core/geom/vec3/v3_dot_array_array.d.ts +3 -3
- package/src/core/geom/vec3/v3_dot_array_array.d.ts.map +1 -1
- package/src/core/geom/vec3/v3_dot_array_array.js +2 -2
- package/src/core/geom/vec3/v3_negate_array.d.ts +3 -3
- package/src/core/geom/vec3/v3_negate_array.d.ts.map +1 -1
- package/src/core/geom/vec3/v3_negate_array.js +2 -2
- package/src/core/geom/vec3/v3_quat3_apply.d.ts +29 -0
- package/src/core/geom/vec3/v3_quat3_apply.d.ts.map +1 -0
- package/src/core/geom/vec3/v3_quat3_apply.js +39 -0
- package/src/core/geom/vec3/v3_quat3_apply_inverse.d.ts +30 -0
- package/src/core/geom/vec3/v3_quat3_apply_inverse.d.ts.map +1 -0
- package/src/core/geom/vec3/v3_quat3_apply_inverse.js +41 -0
- package/src/core/geom/vec3/v3_triple_cross_product.d.ts +32 -0
- package/src/core/geom/vec3/v3_triple_cross_product.d.ts.map +1 -0
- package/src/core/geom/vec3/v3_triple_cross_product.js +45 -0
- package/src/core/graph/csr/CSRGraph.d.ts +168 -0
- package/src/core/graph/csr/CSRGraph.d.ts.map +1 -0
- package/src/core/graph/csr/CSRGraph.js +319 -0
- package/src/core/graph/metis/cluster_mesh_metis.d.ts +12 -0
- package/src/core/graph/metis/cluster_mesh_metis.d.ts.map +1 -1
- package/src/core/graph/metis/cluster_mesh_metis.js +12 -0
- package/src/core/graph/metis/metis.d.ts +19 -0
- package/src/core/graph/metis/metis.d.ts.map +1 -1
- package/src/core/graph/metis/metis.js +20 -0
- package/src/core/graph/metis/metis_cluster_bs.d.ts +11 -0
- package/src/core/graph/metis/metis_cluster_bs.d.ts.map +1 -1
- package/src/core/graph/metis/metis_cluster_bs.js +11 -0
- package/src/core/graph/metis/metis_options.d.ts +17 -2
- package/src/core/graph/metis/metis_options.d.ts.map +1 -1
- package/src/core/graph/metis/metis_options.js +17 -2
- package/src/core/graph/metis/native/MetisGraph.d.ts +144 -0
- package/src/core/graph/metis/native/MetisGraph.d.ts.map +1 -0
- package/src/core/graph/metis/native/MetisGraph.js +212 -0
- package/src/core/graph/metis/native/bisection/BisectionScratch.d.ts +72 -0
- package/src/core/graph/metis/native/bisection/BisectionScratch.d.ts.map +1 -0
- package/src/core/graph/metis/native/bisection/BisectionScratch.js +101 -0
- package/src/core/graph/metis/native/bisection/bisect_graph.d.ts +37 -0
- package/src/core/graph/metis/native/bisection/bisect_graph.d.ts.map +1 -0
- package/src/core/graph/metis/native/bisection/bisect_graph.js +100 -0
- package/src/core/graph/metis/native/bisection/compute_2way_params.d.ts +15 -0
- package/src/core/graph/metis/native/bisection/compute_2way_params.d.ts.map +1 -0
- package/src/core/graph/metis/native/bisection/compute_2way_params.js +84 -0
- package/src/core/graph/metis/native/bisection/fm_2way.d.ts +30 -0
- package/src/core/graph/metis/native/bisection/fm_2way.d.ts.map +1 -0
- package/src/core/graph/metis/native/bisection/fm_2way.js +290 -0
- package/src/core/graph/metis/native/bisection/grow_bisection.d.ts +23 -0
- package/src/core/graph/metis/native/bisection/grow_bisection.d.ts.map +1 -0
- package/src/core/graph/metis/native/bisection/grow_bisection.js +137 -0
- package/src/core/graph/metis/native/bisection/split_graph_two_way.d.ts +28 -0
- package/src/core/graph/metis/native/bisection/split_graph_two_way.d.ts.map +1 -0
- package/src/core/graph/metis/native/bisection/split_graph_two_way.js +119 -0
- package/src/core/graph/metis/native/coarsen/coarsen_graph.d.ts +20 -0
- package/src/core/graph/metis/native/coarsen/coarsen_graph.d.ts.map +1 -0
- package/src/core/graph/metis/native/coarsen/coarsen_graph.js +94 -0
- package/src/core/graph/metis/native/coarsen/create_coarse_graph.d.ts +24 -0
- package/src/core/graph/metis/native/coarsen/create_coarse_graph.d.ts.map +1 -0
- package/src/core/graph/metis/native/coarsen/create_coarse_graph.js +158 -0
- package/src/core/graph/metis/native/coarsen/match_shem.d.ts +41 -0
- package/src/core/graph/metis/native/coarsen/match_shem.d.ts.map +1 -0
- package/src/core/graph/metis/native/coarsen/match_shem.js +175 -0
- package/src/core/graph/metis/native/initial/initial_kway_bfs.d.ts +24 -0
- package/src/core/graph/metis/native/initial/initial_kway_bfs.d.ts.map +1 -0
- package/src/core/graph/metis/native/initial/initial_kway_bfs.js +122 -0
- package/src/core/graph/metis/native/initial/initial_kway_recursive_bisection.d.ts +29 -0
- package/src/core/graph/metis/native/initial/initial_kway_recursive_bisection.d.ts.map +1 -0
- package/src/core/graph/metis/native/initial/initial_kway_recursive_bisection.js +170 -0
- package/src/core/graph/metis/native/metis_partition_kway.d.ts +41 -0
- package/src/core/graph/metis/native/metis_partition_kway.d.ts.map +1 -0
- package/src/core/graph/metis/native/metis_partition_kway.js +126 -0
- package/src/core/graph/metis/native/refine/IndexedFloatMaxHeap.d.ts +62 -0
- package/src/core/graph/metis/native/refine/IndexedFloatMaxHeap.d.ts.map +1 -0
- package/src/core/graph/metis/native/refine/IndexedFloatMaxHeap.js +261 -0
- package/src/core/graph/metis/native/refine/RefinementScratch.d.ts +45 -0
- package/src/core/graph/metis/native/refine/RefinementScratch.d.ts.map +1 -0
- package/src/core/graph/metis/native/refine/RefinementScratch.js +53 -0
- package/src/core/graph/metis/native/refine/compute_kway_params.d.ts +18 -0
- package/src/core/graph/metis/native/refine/compute_kway_params.d.ts.map +1 -0
- package/src/core/graph/metis/native/refine/compute_kway_params.js +138 -0
- package/src/core/graph/metis/native/refine/fm_kway.d.ts +63 -0
- package/src/core/graph/metis/native/refine/fm_kway.d.ts.map +1 -0
- package/src/core/graph/metis/native/refine/fm_kway.js +462 -0
- package/src/core/graph/metis/native/refine/project_kway.d.ts +22 -0
- package/src/core/graph/metis/native/refine/project_kway.d.ts.map +1 -0
- package/src/core/graph/metis/native/refine/project_kway.js +43 -0
- package/src/core/graph/metis/native/refine/refine_kway.d.ts +34 -0
- package/src/core/graph/metis/native/refine/refine_kway.d.ts.map +1 -0
- package/src/core/graph/metis/native/refine/refine_kway.js +43 -0
- package/src/core/math/linalg/eigen/matrix_householder_in_place.d.ts +2 -2
- package/src/core/math/linalg/eigen/matrix_householder_in_place.js +2 -2
- package/src/core/math/linalg/eigen/matrix_qr_in_place.d.ts +6 -4
- package/src/core/math/linalg/eigen/matrix_qr_in_place.d.ts.map +1 -1
- package/src/core/math/linalg/eigen/matrix_qr_in_place.js +69 -23
- package/src/engine/EngineHarness.d.ts +3 -1
- package/src/engine/EngineHarness.d.ts.map +1 -1
- package/src/engine/EngineHarness.js +3 -0
- package/src/engine/control/first-person/DESIGN.md +30 -6
- package/src/engine/control/first-person/DESIGN_EXTENSIONS.md +563 -0
- package/src/engine/control/first-person/FirstPersonPlayerController.d.ts +115 -9
- package/src/engine/control/first-person/FirstPersonPlayerController.d.ts.map +1 -1
- package/src/engine/control/first-person/FirstPersonPlayerController.js +211 -176
- package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.d.ts +601 -8
- package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.d.ts.map +1 -1
- package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.js +349 -8
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts +319 -23
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts.map +1 -1
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.js +1789 -799
- package/src/engine/control/first-person/TODO.md +173 -0
- package/src/engine/control/first-person/abilities/Ability.d.ts +101 -0
- package/src/engine/control/first-person/abilities/Ability.d.ts.map +1 -0
- package/src/engine/control/first-person/abilities/Ability.js +119 -0
- package/src/engine/control/first-person/abilities/AbilitySet.d.ts +86 -0
- package/src/engine/control/first-person/abilities/AbilitySet.d.ts.map +1 -0
- package/src/engine/control/first-person/abilities/AbilitySet.js +185 -0
- package/src/engine/control/first-person/abilities/LedgeGrab.d.ts +62 -0
- package/src/engine/control/first-person/abilities/LedgeGrab.d.ts.map +1 -0
- package/src/engine/control/first-person/abilities/LedgeGrab.js +199 -0
- package/src/engine/control/first-person/abilities/Mantle.d.ts +45 -0
- package/src/engine/control/first-person/abilities/Mantle.d.ts.map +1 -0
- package/src/engine/control/first-person/abilities/Mantle.js +188 -0
- package/src/engine/control/first-person/abilities/Slide.d.ts +33 -0
- package/src/engine/control/first-person/abilities/Slide.d.ts.map +1 -0
- package/src/engine/control/first-person/abilities/Slide.js +166 -0
- package/src/engine/control/first-person/abilities/WallJump.d.ts +45 -0
- package/src/engine/control/first-person/abilities/WallJump.d.ts.map +1 -0
- package/src/engine/control/first-person/abilities/WallJump.js +131 -0
- package/src/engine/control/first-person/abilities/WallRun.d.ts +44 -0
- package/src/engine/control/first-person/abilities/WallRun.d.ts.map +1 -0
- package/src/engine/control/first-person/abilities/WallRun.js +180 -0
- package/src/engine/control/first-person/composer/EyeOffsetStack.d.ts +49 -0
- package/src/engine/control/first-person/composer/EyeOffsetStack.d.ts.map +1 -0
- package/src/engine/control/first-person/composer/EyeOffsetStack.js +60 -0
- package/src/engine/control/first-person/mastery/BreathRhythmEvaluator.d.ts +100 -0
- package/src/engine/control/first-person/mastery/BreathRhythmEvaluator.d.ts.map +1 -0
- package/src/engine/control/first-person/mastery/BreathRhythmEvaluator.js +133 -0
- package/src/engine/control/first-person/mastery/DecisionPoint.d.ts +10 -0
- package/src/engine/control/first-person/mastery/DecisionPoint.d.ts.map +1 -0
- package/src/engine/control/first-person/mastery/DecisionPoint.js +30 -0
- package/src/engine/control/first-person/mastery/FootAsymmetryTurnEvaluator.d.ts +61 -0
- package/src/engine/control/first-person/mastery/FootAsymmetryTurnEvaluator.d.ts.map +1 -0
- package/src/engine/control/first-person/mastery/FootAsymmetryTurnEvaluator.js +109 -0
- package/src/engine/control/first-person/mastery/MasteryEvaluator.d.ts +40 -0
- package/src/engine/control/first-person/mastery/MasteryEvaluator.d.ts.map +1 -0
- package/src/engine/control/first-person/mastery/MasteryEvaluator.js +45 -0
- package/src/engine/control/first-person/mastery/MasteryScore.d.ts +68 -0
- package/src/engine/control/first-person/mastery/MasteryScore.d.ts.map +1 -0
- package/src/engine/control/first-person/mastery/MasteryScore.js +100 -0
- package/src/engine/control/first-person/mastery/MasterySet.d.ts +60 -0
- package/src/engine/control/first-person/mastery/MasterySet.d.ts.map +1 -0
- package/src/engine/control/first-person/mastery/MasterySet.js +86 -0
- package/src/engine/control/first-person/mastery/SlideInitiationTimingEvaluator.d.ts +58 -0
- package/src/engine/control/first-person/mastery/SlideInitiationTimingEvaluator.d.ts.map +1 -0
- package/src/engine/control/first-person/mastery/SlideInitiationTimingEvaluator.js +83 -0
- package/src/engine/control/first-person/mastery/StrideTimingJumpEvaluator.d.ts +69 -0
- package/src/engine/control/first-person/mastery/StrideTimingJumpEvaluator.d.ts.map +1 -0
- package/src/engine/control/first-person/mastery/StrideTimingJumpEvaluator.js +109 -0
- package/src/engine/control/first-person/math/Spring.d.ts +56 -0
- package/src/engine/control/first-person/math/Spring.d.ts.map +1 -0
- package/src/engine/control/first-person/math/Spring.js +71 -0
- package/src/engine/control/first-person/math/computeLRCBreathRate.d.ts +26 -0
- package/src/engine/control/first-person/math/computeLRCBreathRate.d.ts.map +1 -0
- package/src/engine/control/first-person/math/computeLRCBreathRate.js +41 -0
- package/src/engine/control/first-person/math/computeMassRatios.d.ts +35 -0
- package/src/engine/control/first-person/math/computeMassRatios.d.ts.map +1 -0
- package/src/engine/control/first-person/math/computeMassRatios.js +44 -0
- package/src/engine/control/first-person/pose/FirstPersonPose.d.ts +31 -1
- package/src/engine/control/first-person/pose/FirstPersonPose.d.ts.map +1 -1
- package/src/engine/control/first-person/pose/FirstPersonPose.js +49 -3
- package/src/engine/control/first-person/pose/FirstPersonPosture.d.ts +7 -0
- package/src/engine/control/first-person/pose/FirstPersonPosture.d.ts.map +1 -0
- package/src/engine/control/first-person/pose/FirstPersonPosture.js +27 -0
- package/src/engine/control/first-person/prototype_first_person_controller.js +637 -120
- package/src/engine/control/first-person/sensors/FirstPersonSensors.d.ts +58 -0
- package/src/engine/control/first-person/sensors/FirstPersonSensors.d.ts.map +1 -0
- package/src/engine/control/first-person/sensors/FirstPersonSensors.js +77 -0
- package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.d.ts +80 -0
- package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.d.ts.map +1 -0
- package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.js +196 -0
- package/src/engine/control/first-person/test/buildTestPlayer.d.ts +20 -0
- package/src/engine/control/first-person/test/buildTestPlayer.d.ts.map +1 -0
- package/src/engine/control/first-person/test/buildTestPlayer.js +36 -0
- package/src/engine/graphics/camera/testClippingPlaneComputation.js +0 -2
- package/src/engine/graphics/ecs/light/Light.d.ts.map +1 -1
- package/src/engine/graphics/ecs/light/Light.js +27 -0
- package/src/engine/graphics/ecs/light/LightSystem.js +1 -1
- package/src/engine/graphics/ecs/path/PathDisplaySystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/path/testPathDisplaySystem.js +0 -2
- package/src/engine/graphics/ecs/path/tube/prototypeAnimatedPathMask.js +0 -2
- package/src/engine/graphics/geometry/CapsuleGeometry.d.ts +42 -0
- package/src/engine/graphics/geometry/CapsuleGeometry.d.ts.map +1 -0
- package/src/engine/graphics/geometry/CapsuleGeometry.js +171 -0
- package/src/engine/graphics/render/buffer/buffers/prototypeNormalFrameBuffer.js +0 -2
- package/src/engine/graphics/render/forward_plus/plugin/ptototypeFPPlugin.js +0 -2
- package/src/engine/graphics/render/visibility/hiz/prototypeHiZ.js +0 -2
- package/src/engine/navigation/grid/find_path_on_grid_astar.d.ts.map +1 -1
- package/src/engine/navigation/grid/find_path_on_grid_astar.js +11 -2
- package/src/engine/navigation/mesh/bt_mesh_face_find_path.d.ts.map +1 -1
- package/src/engine/navigation/mesh/bt_mesh_face_find_path.js +11 -1
- package/src/engine/physics/BULLET_REVIEW.md +945 -0
- package/src/engine/physics/CANNON_REVIEW.md +1300 -0
- package/src/engine/physics/JOLT_REVIEW.md +913 -0
- package/src/engine/physics/PLAN.md +461 -0
- package/src/engine/physics/RAPIER_REVIEW.md +934 -0
- package/src/engine/physics/REVIEW_001_ACTION_PLAN.md +642 -0
- package/src/engine/physics/body/BodyStorage.d.ts +187 -0
- package/src/engine/physics/body/BodyStorage.d.ts.map +1 -0
- package/src/engine/physics/body/BodyStorage.js +427 -0
- package/src/engine/physics/broadphase/PairList.d.ts +62 -0
- package/src/engine/physics/broadphase/PairList.d.ts.map +1 -0
- package/src/engine/physics/broadphase/PairList.js +97 -0
- package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts +16 -0
- package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts.map +1 -0
- package/src/engine/physics/broadphase/compute_fat_world_aabb.js +61 -0
- package/src/engine/physics/broadphase/generate_pairs.d.ts +38 -0
- package/src/engine/physics/broadphase/generate_pairs.d.ts.map +1 -0
- package/src/engine/physics/broadphase/generate_pairs.js +101 -0
- package/src/engine/physics/contact/ManifoldStore.d.ts +299 -0
- package/src/engine/physics/contact/ManifoldStore.d.ts.map +1 -0
- package/src/engine/physics/contact/ManifoldStore.js +608 -0
- package/src/engine/physics/ecs/BodyKind.d.ts +23 -0
- package/src/engine/physics/ecs/BodyKind.d.ts.map +1 -0
- package/src/engine/physics/ecs/BodyKind.js +24 -0
- package/src/engine/physics/ecs/Collider.d.ts +98 -0
- package/src/engine/physics/ecs/Collider.d.ts.map +1 -0
- package/src/engine/physics/ecs/Collider.js +136 -0
- package/src/engine/physics/ecs/ColliderFlags.d.ts +14 -0
- package/src/engine/physics/ecs/ColliderFlags.d.ts.map +1 -0
- package/src/engine/physics/ecs/ColliderFlags.js +15 -0
- package/src/engine/physics/ecs/ColliderObserverSystem.d.ts +58 -0
- package/src/engine/physics/ecs/ColliderObserverSystem.d.ts.map +1 -0
- package/src/engine/physics/ecs/ColliderObserverSystem.js +103 -0
- package/src/engine/physics/ecs/ColliderSerializationAdapter.d.ts +25 -0
- package/src/engine/physics/ecs/ColliderSerializationAdapter.d.ts.map +1 -0
- package/src/engine/physics/ecs/ColliderSerializationAdapter.js +37 -0
- package/src/engine/physics/ecs/PhysicsEvents.d.ts +15 -0
- package/src/engine/physics/ecs/PhysicsEvents.d.ts.map +1 -0
- package/src/engine/physics/ecs/PhysicsEvents.js +16 -0
- package/src/engine/physics/ecs/PhysicsSystem.d.ts +628 -0
- package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -0
- package/src/engine/physics/ecs/PhysicsSystem.js +1301 -0
- package/src/engine/physics/ecs/RigidBody.d.ts +197 -0
- package/src/engine/physics/ecs/RigidBody.d.ts.map +1 -0
- package/src/engine/physics/ecs/RigidBody.js +240 -0
- package/src/engine/physics/ecs/RigidBodyFlags.d.ts +21 -0
- package/src/engine/physics/ecs/RigidBodyFlags.d.ts.map +1 -0
- package/src/engine/physics/ecs/RigidBodyFlags.js +22 -0
- package/src/engine/physics/ecs/RigidBodySerializationAdapter.d.ts +28 -0
- package/src/engine/physics/ecs/RigidBodySerializationAdapter.d.ts.map +1 -0
- package/src/engine/physics/ecs/RigidBodySerializationAdapter.js +81 -0
- package/src/engine/physics/ecs/SleepState.d.ts +11 -0
- package/src/engine/physics/ecs/SleepState.d.ts.map +1 -0
- package/src/engine/physics/ecs/SleepState.js +12 -0
- package/src/engine/physics/events/ContactEventBuffer.d.ts +46 -0
- package/src/engine/physics/events/ContactEventBuffer.d.ts.map +1 -0
- package/src/engine/physics/events/ContactEventBuffer.js +83 -0
- package/src/engine/physics/events/diff_manifolds.d.ts +25 -0
- package/src/engine/physics/events/diff_manifolds.d.ts.map +1 -0
- package/src/engine/physics/events/diff_manifolds.js +50 -0
- package/src/engine/physics/fluid/FluidField.d.ts +294 -16
- package/src/engine/physics/fluid/FluidField.d.ts.map +1 -1
- package/src/engine/physics/fluid/FluidField.js +510 -66
- package/src/engine/physics/fluid/FluidSimulator.d.ts +188 -5
- package/src/engine/physics/fluid/FluidSimulator.d.ts.map +1 -1
- package/src/engine/physics/fluid/FluidSimulator.js +456 -95
- package/src/engine/physics/fluid/SliceVisualiser.d.ts +29 -6
- package/src/engine/physics/fluid/SliceVisualiser.d.ts.map +1 -1
- package/src/engine/physics/fluid/SliceVisualiser.js +190 -165
- package/src/engine/physics/fluid/ecs/FluidComponent.d.ts +154 -0
- package/src/engine/physics/fluid/ecs/FluidComponent.d.ts.map +1 -0
- package/src/engine/physics/fluid/ecs/FluidComponent.js +238 -0
- package/src/engine/physics/fluid/ecs/FluidEffectorsComponent.d.ts +45 -0
- package/src/engine/physics/fluid/ecs/FluidEffectorsComponent.d.ts.map +1 -0
- package/src/engine/physics/fluid/ecs/FluidEffectorsComponent.js +89 -0
- package/src/engine/physics/fluid/ecs/FluidSystem.d.ts +107 -0
- package/src/engine/physics/fluid/ecs/FluidSystem.d.ts.map +1 -0
- package/src/engine/physics/fluid/ecs/FluidSystem.js +278 -0
- package/src/engine/physics/fluid/effector/AbstractFluidEffector.d.ts +62 -1
- package/src/engine/physics/fluid/effector/AbstractFluidEffector.d.ts.map +1 -1
- package/src/engine/physics/fluid/effector/AbstractFluidEffector.js +81 -6
- package/src/engine/physics/fluid/effector/GlobalFluidEffector.d.ts +17 -4
- package/src/engine/physics/fluid/effector/GlobalFluidEffector.d.ts.map +1 -1
- package/src/engine/physics/fluid/effector/GlobalFluidEffector.js +105 -12
- package/src/engine/physics/fluid/effector/ImpulseFluidEffector.d.ts +43 -0
- package/src/engine/physics/fluid/effector/ImpulseFluidEffector.d.ts.map +1 -0
- package/src/engine/physics/fluid/effector/ImpulseFluidEffector.js +210 -0
- package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts +62 -1
- package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts.map +1 -1
- package/src/engine/physics/fluid/effector/WakeFluidEffector.js +302 -8
- package/src/engine/physics/fluid/prototype.js +102 -91
- package/src/engine/physics/fluid/solver/optimal_sor_omega.d.ts +33 -0
- package/src/engine/physics/fluid/solver/optimal_sor_omega.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/optimal_sor_omega.js +41 -0
- package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.d.ts +20 -5
- package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.js +60 -38
- package/src/engine/physics/fluid/solver/v3_grid_apply_diffusion.d.ts +25 -4
- package/src/engine/physics/fluid/solver/v3_grid_apply_diffusion.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_grid_apply_diffusion.js +93 -73
- package/src/engine/physics/fluid/solver/v3_grid_apply_scalar_advection.d.ts +23 -0
- package/src/engine/physics/fluid/solver/v3_grid_apply_scalar_advection.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_apply_scalar_advection.js +60 -0
- package/src/engine/physics/fluid/solver/v3_grid_compute_divergence.d.ts +23 -0
- package/src/engine/physics/fluid/solver/v3_grid_compute_divergence.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_compute_divergence.js +68 -0
- package/src/engine/physics/fluid/solver/v3_grid_compute_solid_neighbour_mask.d.ts +30 -0
- package/src/engine/physics/fluid/solver/v3_grid_compute_solid_neighbour_mask.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_compute_solid_neighbour_mask.js +66 -0
- package/src/engine/physics/fluid/solver/v3_grid_patch_edges_uniform.d.ts +26 -0
- package/src/engine/physics/fluid/solver/v3_grid_patch_edges_uniform.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_patch_edges_uniform.js +113 -0
- package/src/engine/physics/fluid/solver/v3_grid_shift_in_place.d.ts +30 -0
- package/src/engine/physics/fluid/solver/v3_grid_shift_in_place.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_shift_in_place.js +107 -0
- package/src/engine/physics/fluid/solver/v3_grid_solve_pressure.d.ts +49 -0
- package/src/engine/physics/fluid/solver/v3_grid_solve_pressure.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_solve_pressure.js +126 -0
- package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_pcg.d.ts +93 -0
- package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_pcg.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_pcg.js +424 -0
- package/src/engine/physics/fluid/solver/v3_grid_subtract_pressure_gradient.d.ts +48 -0
- package/src/engine/physics/fluid/solver/v3_grid_subtract_pressure_gradient.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_subtract_pressure_gradient.js +92 -0
- package/src/engine/physics/gjk/expanding_polytope_algorithm.d.ts +6 -6
- package/src/engine/physics/gjk/expanding_polytope_algorithm.d.ts.map +1 -1
- package/src/engine/physics/gjk/expanding_polytope_algorithm.js +76 -32
- package/src/engine/physics/gjk/gjk.d.ts +28 -2
- package/src/engine/physics/gjk/gjk.d.ts.map +1 -1
- package/src/engine/physics/gjk/gjk.js +421 -378
- package/src/engine/physics/gjk/minkowski_support.d.ts +37 -0
- package/src/engine/physics/gjk/minkowski_support.d.ts.map +1 -0
- package/src/engine/physics/gjk/minkowski_support.js +75 -0
- package/src/engine/physics/gjk/mpr.d.ts +56 -0
- package/src/engine/physics/gjk/mpr.d.ts.map +1 -0
- package/src/engine/physics/gjk/mpr.js +344 -0
- package/src/engine/physics/inertia/world_inverse_inertia.d.ts +44 -0
- package/src/engine/physics/inertia/world_inverse_inertia.d.ts.map +1 -0
- package/src/engine/physics/inertia/world_inverse_inertia.js +77 -0
- package/src/engine/physics/integration/integrate_position.d.ts +34 -0
- package/src/engine/physics/integration/integrate_position.d.ts.map +1 -0
- package/src/engine/physics/integration/integrate_position.js +79 -0
- package/src/engine/physics/integration/integrate_velocity.d.ts +55 -0
- package/src/engine/physics/integration/integrate_velocity.d.ts.map +1 -0
- package/src/engine/physics/integration/integrate_velocity.js +160 -0
- package/src/engine/physics/integration/quat_integrate.d.ts +27 -0
- package/src/engine/physics/integration/quat_integrate.d.ts.map +1 -0
- package/src/engine/physics/integration/quat_integrate.js +62 -0
- package/src/engine/physics/island/IslandBuilder.d.ts +167 -0
- package/src/engine/physics/island/IslandBuilder.d.ts.map +1 -0
- package/src/engine/physics/island/IslandBuilder.js +411 -0
- package/src/engine/physics/island/union_find.d.ts +51 -0
- package/src/engine/physics/island/union_find.d.ts.map +1 -0
- package/src/engine/physics/island/union_find.js +76 -0
- package/src/engine/physics/narrowphase/PosedShape.d.ts +51 -0
- package/src/engine/physics/narrowphase/PosedShape.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/PosedShape.js +108 -0
- package/src/engine/physics/narrowphase/box_box_manifold.d.ts +32 -0
- package/src/engine/physics/narrowphase/box_box_manifold.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/box_box_manifold.js +639 -0
- package/src/engine/physics/narrowphase/box_triangle_contact.d.ts +30 -0
- package/src/engine/physics/narrowphase/box_triangle_contact.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/box_triangle_contact.js +811 -0
- package/src/engine/physics/narrowphase/capsule_contacts.d.ts +122 -0
- package/src/engine/physics/narrowphase/capsule_contacts.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/capsule_contacts.js +462 -0
- package/src/engine/physics/narrowphase/capsule_triangle_contact.d.ts +71 -0
- package/src/engine/physics/narrowphase/capsule_triangle_contact.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/capsule_triangle_contact.js +375 -0
- package/src/engine/physics/narrowphase/compute_penetration.d.ts +91 -0
- package/src/engine/physics/narrowphase/compute_penetration.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/compute_penetration.js +396 -0
- package/src/engine/physics/narrowphase/decomposition/aabb_world_to_local.d.ts +35 -0
- package/src/engine/physics/narrowphase/decomposition/aabb_world_to_local.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/decomposition/aabb_world_to_local.js +80 -0
- package/src/engine/physics/narrowphase/decomposition/decompose_to_triangles.d.ts +31 -0
- package/src/engine/physics/narrowphase/decomposition/decompose_to_triangles.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/decomposition/decompose_to_triangles.js +55 -0
- package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.d.ts +42 -0
- package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.js +204 -0
- package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.d.ts +42 -0
- package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.js +94 -0
- package/src/engine/physics/narrowphase/decomposition/triangle_buffer_layout.d.ts +37 -0
- package/src/engine/physics/narrowphase/decomposition/triangle_buffer_layout.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/decomposition/triangle_buffer_layout.js +37 -0
- package/src/engine/physics/narrowphase/narrowphase_step.d.ts +17 -0
- package/src/engine/physics/narrowphase/narrowphase_step.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/narrowphase_step.js +1422 -0
- package/src/engine/physics/narrowphase/sphere_box_contact.d.ts +38 -0
- package/src/engine/physics/narrowphase/sphere_box_contact.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/sphere_box_contact.js +123 -0
- package/src/engine/physics/narrowphase/sphere_sphere_contact.d.ts +26 -0
- package/src/engine/physics/narrowphase/sphere_sphere_contact.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/sphere_sphere_contact.js +51 -0
- package/src/engine/physics/narrowphase/sphere_triangle_contact.d.ts +48 -0
- package/src/engine/physics/narrowphase/sphere_triangle_contact.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/sphere_triangle_contact.js +143 -0
- package/src/engine/physics/queries/PhysicsSurfacePoint.d.ts +83 -0
- package/src/engine/physics/queries/PhysicsSurfacePoint.d.ts.map +1 -0
- package/src/engine/physics/queries/PhysicsSurfacePoint.js +100 -0
- package/src/engine/physics/queries/overlap_shape.d.ts +51 -0
- package/src/engine/physics/queries/overlap_shape.d.ts.map +1 -0
- package/src/engine/physics/queries/overlap_shape.js +183 -0
- package/src/engine/physics/queries/raycast.d.ts +20 -0
- package/src/engine/physics/queries/raycast.d.ts.map +1 -0
- package/src/engine/physics/queries/raycast.js +249 -0
- package/src/engine/physics/queries/shape_cast.d.ts +56 -0
- package/src/engine/physics/queries/shape_cast.d.ts.map +1 -0
- package/src/engine/physics/queries/shape_cast.js +387 -0
- package/src/engine/physics/solver/friction_cone.d.ts +16 -0
- package/src/engine/physics/solver/friction_cone.d.ts.map +1 -0
- package/src/engine/physics/solver/friction_cone.js +37 -0
- package/src/engine/physics/solver/solve_contacts.d.ts +122 -0
- package/src/engine/physics/solver/solve_contacts.d.ts.map +1 -0
- package/src/engine/physics/solver/solve_contacts.js +1016 -0
- package/src/core/geom/3d/topology/struct/binary/io/edge/OrderedEdge.d.ts +0 -34
- package/src/core/geom/3d/topology/struct/binary/io/edge/OrderedEdge.d.ts.map +0 -1
- package/src/core/geom/3d/topology/struct/binary/io/edge/OrderedEdge.js +0 -66
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_mesh_calc_edges.d.ts +0 -2
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_mesh_calc_edges.d.ts.map +0 -1
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_mesh_calc_edges.js +0 -54
- package/src/core/geom/3d/topology/struct/binary/io/edge/get_or_create_edge_map.d.ts +0 -2
- package/src/core/geom/3d/topology/struct/binary/io/edge/get_or_create_edge_map.d.ts.map +0 -1
- package/src/core/geom/3d/topology/struct/binary/io/edge/get_or_create_edge_map.js +0 -26
- package/src/engine/ecs/components/Motion.d.ts +0 -21
- package/src/engine/ecs/components/Motion.d.ts.map +0 -1
- package/src/engine/ecs/components/Motion.js +0 -27
- package/src/engine/ecs/components/MotionSerializationAdapter.d.ts +0 -20
- package/src/engine/ecs/components/MotionSerializationAdapter.d.ts.map +0 -1
- package/src/engine/ecs/components/MotionSerializationAdapter.js +0 -26
- package/src/engine/ecs/systems/MotionSystem.d.ts +0 -9
- package/src/engine/ecs/systems/MotionSystem.d.ts.map +0 -1
- package/src/engine/ecs/systems/MotionSystem.js +0 -29
- package/src/engine/physics/fluid/Fluid.d.ts +0 -26
- package/src/engine/physics/fluid/Fluid.d.ts.map +0 -1
- package/src/engine/physics/fluid/Fluid.js +0 -221
- package/src/engine/physics/fluid/solver/v3_grid_apply_advection_reverse.d.ts +0 -7
- package/src/engine/physics/fluid/solver/v3_grid_apply_advection_reverse.d.ts.map +0 -1
- 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"}
|