@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metis.d.ts","sourceRoot":"","sources":["../../../../../src/core/graph/metis/metis.js"],"names":[],"mappings":"AAIA;IAQQ,+BAAsB;IAG1B
|
|
1
|
+
{"version":3,"file":"metis.d.ts","sourceRoot":"","sources":["../../../../../src/core/graph/metis/metis.js"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;GAgBG;AACH;IAQQ,+BAAsB;IAG1B;;;;;;;;;;;OAWG;IACH,sBARW,MAAM,WACN,MAAM,kBACN,WAAW,aACX,WAAW,gBACX,WAAW,2BAET,UAAU,CAkBtB;CACJ;;kBAMS,KAAK;;sCAnEuB,+CAA+C"}
|
|
@@ -2,6 +2,23 @@ import { OnDemandWorkerManager } from "../../process/worker/OnDemandWorkerManage
|
|
|
2
2
|
import WorkerBuilder from "../../process/worker/WorkerBuilder.js";
|
|
3
3
|
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* @deprecated Use the native JS implementation at
|
|
7
|
+
* `./native/metis_partition_kway.js` instead.
|
|
8
|
+
*
|
|
9
|
+
* This class wraps the WASM-compiled METIS via a worker. It depends on
|
|
10
|
+
* `libs/metis/metis.js` being served by the host app and on a `micron_partition`
|
|
11
|
+
* global being defined inside that script. The native equivalent has no such
|
|
12
|
+
* dependencies, is synchronous (no worker round-trip), and tracks the latest
|
|
13
|
+
* `KarypisLab/METIS` master rather than the 2013-era 5.1.0 release.
|
|
14
|
+
*
|
|
15
|
+
* Migration:
|
|
16
|
+
* - Was: `await Metis.INSTANCE.partition(nv, k, xadj, adj, ewgt, options)`
|
|
17
|
+
* - Now: `metis_partition_kway(nv, k, xadj, adj, ewgt, { seed, niter, ufactor })`
|
|
18
|
+
*
|
|
19
|
+
* The native function returns the partition array directly (synchronously);
|
|
20
|
+
* wrap in `Promise.resolve(...)` if you need a promise-returning surface.
|
|
21
|
+
*/
|
|
5
22
|
export class Metis {
|
|
6
23
|
constructor() {
|
|
7
24
|
const wb = new WorkerBuilder();
|
|
@@ -14,6 +31,8 @@ export class Metis {
|
|
|
14
31
|
}
|
|
15
32
|
|
|
16
33
|
/**
|
|
34
|
+
* @deprecated Use `metis_partition_kway` from
|
|
35
|
+
* `./native/metis_partition_kway.js` instead.
|
|
17
36
|
*
|
|
18
37
|
* @param {number} n_vertices
|
|
19
38
|
* @param {number} n_parts
|
|
@@ -44,6 +63,7 @@ export class Metis {
|
|
|
44
63
|
|
|
45
64
|
/**
|
|
46
65
|
* Singleton instance
|
|
66
|
+
* @deprecated Use the native implementation at `./native/metis_partition_kway.js`.
|
|
47
67
|
* @readonly
|
|
48
68
|
* @type {Metis}
|
|
49
69
|
*/
|
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
+
* @deprecated Calls the WASM-backed `Metis.INSTANCE`, which is deprecated. Build
|
|
3
|
+
* the equivalent on top of `metis_partition_kway` from
|
|
4
|
+
* `./native/metis_partition_kway.js` — the binary-search-on-k pattern here is
|
|
5
|
+
* independent of the partitioner, so the same loop body works against either
|
|
6
|
+
* backend.
|
|
7
|
+
*
|
|
8
|
+
* The native partitioner does roughly the same balance enforcement internally
|
|
9
|
+
* via FM with `ub_factor = 1.03`, so the binary search typically converges in
|
|
10
|
+
* 1-2 passes; for many use cases a single `metis_partition_kway` call with
|
|
11
|
+
* `k = Math.ceil(node_count / patch_size)` is sufficient and the BS wrapper is
|
|
12
|
+
* unnecessary.
|
|
2
13
|
*
|
|
3
14
|
* @param {Uint32Array} result
|
|
4
15
|
* @param {number} node_count
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metis_cluster_bs.d.ts","sourceRoot":"","sources":["../../../../../src/core/graph/metis/metis_cluster_bs.js"],"names":[],"mappings":"AASA
|
|
1
|
+
{"version":3,"file":"metis_cluster_bs.d.ts","sourceRoot":"","sources":["../../../../../src/core/graph/metis/metis_cluster_bs.js"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,yCARW,WAAW,cACX,MAAM,kBACN,WAAW,oBACX,WAAW,uBACX,WAAW,cACX,MAAM,GACJ,QAAQ,MAAM,CAAC,CA6G3B"}
|
|
@@ -8,6 +8,17 @@ import { metis_options } from "./metis_options.js";
|
|
|
8
8
|
const MAX_STEPS = 50;
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
|
+
* @deprecated Calls the WASM-backed `Metis.INSTANCE`, which is deprecated. Build
|
|
12
|
+
* the equivalent on top of `metis_partition_kway` from
|
|
13
|
+
* `./native/metis_partition_kway.js` — the binary-search-on-k pattern here is
|
|
14
|
+
* independent of the partitioner, so the same loop body works against either
|
|
15
|
+
* backend.
|
|
16
|
+
*
|
|
17
|
+
* The native partitioner does roughly the same balance enforcement internally
|
|
18
|
+
* via FM with `ub_factor = 1.03`, so the binary search typically converges in
|
|
19
|
+
* 1-2 passes; for many use cases a single `metis_partition_kway` call with
|
|
20
|
+
* `k = Math.ceil(node_count / patch_size)` is sufficient and the BS wrapper is
|
|
21
|
+
* unnecessary.
|
|
11
22
|
*
|
|
12
23
|
* @param {Uint32Array} result
|
|
13
24
|
* @param {number} node_count
|
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* @deprecated Used only by the deprecated WASM-backed `Metis` class. The
|
|
3
|
+
* native partitioner at `./native/metis_partition_kway.js` accepts a plain
|
|
4
|
+
* object literal instead:
|
|
5
|
+
*
|
|
6
|
+
* metis_partition_kway(nv, k, xadj, adj, ewgt, {
|
|
7
|
+
* seed: 0xCAFE, // integer; default 0
|
|
8
|
+
* niter: 10, // FM passes per level
|
|
9
|
+
* ufactor: 30, // imbalance per-mille
|
|
10
|
+
* initial_partition_strategy: 'recursive_bisection' // or 'bfs'
|
|
11
|
+
* });
|
|
12
|
+
*
|
|
13
|
+
* Most `metis.h` options (ctype, iptype, rtype, no2hop, minconn, contig,
|
|
14
|
+
* compress, ncuts, pfactor, etc.) are not exposed by the native impl because
|
|
15
|
+
* those code paths aren't implemented. If you need one, file a request.
|
|
16
|
+
*
|
|
17
|
+
* See metis.h for more details on the original fields.
|
|
18
|
+
* -1 is used to signal absence of value, in which case a default will be used.
|
|
4
19
|
*/
|
|
5
20
|
export class metis_options {
|
|
6
21
|
ptype: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metis_options.d.ts","sourceRoot":"","sources":["../../../../../src/core/graph/metis/metis_options.js"],"names":[],"mappings":"AACA
|
|
1
|
+
{"version":3,"file":"metis_options.d.ts","sourceRoot":"","sources":["../../../../../src/core/graph/metis/metis_options.js"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;GAkBG;AACH;IACI,cAAW;IACX,gBAAa;IACb;;;;;OAKG;IACH,OAFU,MAAM,CAEL;IACX,eAAY;IACZ,cAAW;IACX,eAAY;IACZ,cAAW;IACX,cAAW;IACX;;;;OAIG;IACH,MAFU,MAAM,CAEN;IACV,eAAY;IACZ,gBAAa;IACb,eAAY;IACZ,gBAAa;IACb,gBAAa;IACb,cAAW;IACX,gBAAa;IACb,kBAAe;IACf,iBAAe;CAClB"}
|
|
@@ -1,7 +1,22 @@
|
|
|
1
1
|
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
3
|
+
* @deprecated Used only by the deprecated WASM-backed `Metis` class. The
|
|
4
|
+
* native partitioner at `./native/metis_partition_kway.js` accepts a plain
|
|
5
|
+
* object literal instead:
|
|
6
|
+
*
|
|
7
|
+
* metis_partition_kway(nv, k, xadj, adj, ewgt, {
|
|
8
|
+
* seed: 0xCAFE, // integer; default 0
|
|
9
|
+
* niter: 10, // FM passes per level
|
|
10
|
+
* ufactor: 30, // imbalance per-mille
|
|
11
|
+
* initial_partition_strategy: 'recursive_bisection' // or 'bfs'
|
|
12
|
+
* });
|
|
13
|
+
*
|
|
14
|
+
* Most `metis.h` options (ctype, iptype, rtype, no2hop, minconn, contig,
|
|
15
|
+
* compress, ncuts, pfactor, etc.) are not exposed by the native impl because
|
|
16
|
+
* those code paths aren't implemented. If you need one, file a request.
|
|
17
|
+
*
|
|
18
|
+
* See metis.h for more details on the original fields.
|
|
19
|
+
* -1 is used to signal absence of value, in which case a default will be used.
|
|
5
20
|
*/
|
|
6
21
|
export class metis_options {
|
|
7
22
|
ptype = -1;
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Holds one graph level of the METIS multilevel pipeline.
|
|
3
|
+
*
|
|
4
|
+
* Extends `CSRGraph` — the CSR adjacency (`edge_addresses`, `adjacency`,
|
|
5
|
+
* `edge_weights`, `vertex_weights`) lives in a single shared `ArrayBuffer`.
|
|
6
|
+
*
|
|
7
|
+
* Adds three groups of fields on top of CSR:
|
|
8
|
+
*
|
|
9
|
+
* - **Multilevel link**: `coarse_vertex_map`, `coarser_graph`, `finer_graph`.
|
|
10
|
+
* `coarse_vertex_map[v]` is the id of v's super-vertex one level coarser.
|
|
11
|
+
*
|
|
12
|
+
* - **Partition state**: `vertex_partition`, `partition_weights`, `current_cut`,
|
|
13
|
+
* plus the boundary list (`boundary_count` / `boundary_vertices` /
|
|
14
|
+
* `boundary_position_of_vertex`).
|
|
15
|
+
*
|
|
16
|
+
* - **K-way refinement bookkeeping**: parallel `internal_degree`,
|
|
17
|
+
* `external_degree`, `neighbor_partition_count`, `neighbor_partition_offset`
|
|
18
|
+
* arrays plus the shared `neighbor_partition_pool` of `(partition_id, edge_weight)`
|
|
19
|
+
* records.
|
|
20
|
+
*
|
|
21
|
+
* Partition / refinement arrays are allocated lazily by
|
|
22
|
+
* `allocate_partition_state(partition_count)` because their sizes depend on `k`,
|
|
23
|
+
* which isn't known at CSR construction time and isn't needed during the
|
|
24
|
+
* coarsening or initial-partitioning phases.
|
|
25
|
+
*
|
|
26
|
+
* Volume objective, multi-constraint balance, separator data, and the various
|
|
27
|
+
* minconn/contig auxiliary fields from libmetis `graph_t` are intentionally
|
|
28
|
+
* omitted — they're not on the path we currently use.
|
|
29
|
+
*/
|
|
30
|
+
export class MetisGraph extends CSRGraph {
|
|
31
|
+
/**
|
|
32
|
+
* Coarsening map: `coarse_vertex_map[v]` is the id of v's super-vertex
|
|
33
|
+
* in `coarser_graph`. Null until coarsening runs at this level.
|
|
34
|
+
* @type {Uint32Array|null}
|
|
35
|
+
*/
|
|
36
|
+
coarse_vertex_map: Uint32Array | null;
|
|
37
|
+
/** @type {MetisGraph|null} */
|
|
38
|
+
coarser_graph: MetisGraph | null;
|
|
39
|
+
/** @type {MetisGraph|null} */
|
|
40
|
+
finer_graph: MetisGraph | null;
|
|
41
|
+
/**
|
|
42
|
+
* Partition id per vertex, in [0, nparts).
|
|
43
|
+
* @type {Uint32Array|null}
|
|
44
|
+
*/
|
|
45
|
+
vertex_partition: Uint32Array | null;
|
|
46
|
+
/**
|
|
47
|
+
* Per-partition total weight (sum of `vertex_weights` for vertices
|
|
48
|
+
* currently assigned to that partition).
|
|
49
|
+
* @type {Uint32Array|null}
|
|
50
|
+
*/
|
|
51
|
+
partition_weights: Uint32Array | null;
|
|
52
|
+
/**
|
|
53
|
+
* Current edge cut: sum of weights of edges whose endpoints lie in
|
|
54
|
+
* different partitions. Tracked incrementally during refinement.
|
|
55
|
+
* @type {number}
|
|
56
|
+
*/
|
|
57
|
+
current_cut: number;
|
|
58
|
+
/**
|
|
59
|
+
* Number of vertices currently on a partition boundary.
|
|
60
|
+
* @type {number}
|
|
61
|
+
*/
|
|
62
|
+
boundary_count: number;
|
|
63
|
+
/**
|
|
64
|
+
* Boundary list: the first `boundary_count` entries are vertex ids on
|
|
65
|
+
* a partition boundary. Order is not meaningful (entries get swapped
|
|
66
|
+
* with the tail on removal).
|
|
67
|
+
* @type {Uint32Array|null}
|
|
68
|
+
*/
|
|
69
|
+
boundary_vertices: Uint32Array | null;
|
|
70
|
+
/**
|
|
71
|
+
* Inverse of `boundary_vertices`: `boundary_position_of_vertex[v]` is
|
|
72
|
+
* the index of v inside `boundary_vertices`, or -1 if v is interior.
|
|
73
|
+
* Int32Array because of the -1 sentinel.
|
|
74
|
+
* @type {Int32Array|null}
|
|
75
|
+
*/
|
|
76
|
+
boundary_position_of_vertex: Int32Array | null;
|
|
77
|
+
/**
|
|
78
|
+
* Internal degree: sum of edge weights from v to vertices in v's own
|
|
79
|
+
* partition. ("id" in METIS / FM literature.)
|
|
80
|
+
* @type {Uint32Array|null}
|
|
81
|
+
*/
|
|
82
|
+
internal_degree: Uint32Array | null;
|
|
83
|
+
/**
|
|
84
|
+
* External degree: sum of edge weights from v to vertices in other
|
|
85
|
+
* partitions. ("ed" in METIS / FM literature.)
|
|
86
|
+
* @type {Uint32Array|null}
|
|
87
|
+
*/
|
|
88
|
+
external_degree: Uint32Array | null;
|
|
89
|
+
/**
|
|
90
|
+
* Number of distinct neighbouring partitions reachable from v through
|
|
91
|
+
* its edges. ("nnbrs" in METIS.)
|
|
92
|
+
* @type {Uint32Array|null}
|
|
93
|
+
*/
|
|
94
|
+
neighbor_partition_count: Uint32Array | null;
|
|
95
|
+
/**
|
|
96
|
+
* Offset (in record units) into `neighbor_partition_pool` for v's list
|
|
97
|
+
* of (partition_id, edge_weight) entries. -1 if v is interior and no
|
|
98
|
+
* pool slot has been allocated yet. ("inbr" in METIS.)
|
|
99
|
+
* @type {Int32Array|null}
|
|
100
|
+
*/
|
|
101
|
+
neighbor_partition_offset: Int32Array | null;
|
|
102
|
+
/**
|
|
103
|
+
* Pool of per-(vertex, neighbour-partition) records. Each record is
|
|
104
|
+
* 8 bytes: two uint32 words holding `(partition_id, edge_weight)`.
|
|
105
|
+
* Access record `r` via:
|
|
106
|
+
* const word_base = neighbor_partition_pool.element_word(r);
|
|
107
|
+
* const partition_id = data_uint32[word_base + 2*k ];
|
|
108
|
+
* const edge_weight = data_uint32[word_base + 2*k + 1];
|
|
109
|
+
* where `k` is in `[0, neighbor_partition_count[v])`.
|
|
110
|
+
*
|
|
111
|
+
* ("cnbrpool" in METIS.)
|
|
112
|
+
*
|
|
113
|
+
* @type {BinaryElementPool|null}
|
|
114
|
+
*/
|
|
115
|
+
neighbor_partition_pool: BinaryElementPool | null;
|
|
116
|
+
/**
|
|
117
|
+
* Allocate the k-way refinement bookkeeping arrays. Must be called before
|
|
118
|
+
* any of the refinement routines runs on this graph.
|
|
119
|
+
*
|
|
120
|
+
* **`vertex_partition` is preserved** if it's already set with the correct
|
|
121
|
+
* length. This matters when the initial-partition phase has already
|
|
122
|
+
* computed an assignment (e.g. recursive bisection leaves the result in
|
|
123
|
+
* `vertex_partition` as a buffer that's now owned by this graph) — we
|
|
124
|
+
* don't want to allocate a fresh array just to copy the existing one in.
|
|
125
|
+
* If `vertex_partition` is `null` or the wrong size, it gets allocated
|
|
126
|
+
* fresh and zero-filled.
|
|
127
|
+
*
|
|
128
|
+
* Everything else (`partition_weights`, `internal_degree`, etc.) is always
|
|
129
|
+
* allocated fresh because callers expect a clean refinement-state baseline.
|
|
130
|
+
*
|
|
131
|
+
* @param {number} partition_count
|
|
132
|
+
*/
|
|
133
|
+
allocate_partition_state(partition_count: number): void;
|
|
134
|
+
/**
|
|
135
|
+
* Reset the partition / refinement bookkeeping in place, leaving the CSR
|
|
136
|
+
* adjacency and `coarse_vertex_map` untouched. Used between FM passes when
|
|
137
|
+
* we want to recompute from a fresh `vertex_partition`.
|
|
138
|
+
*/
|
|
139
|
+
reset_refinement_state(): void;
|
|
140
|
+
isMetisGraph: boolean;
|
|
141
|
+
}
|
|
142
|
+
import { CSRGraph } from "../../csr/CSRGraph.js";
|
|
143
|
+
import { BinaryElementPool } from "../../../geom/3d/topology/struct/binary/BinaryElementPool.js";
|
|
144
|
+
//# sourceMappingURL=MetisGraph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MetisGraph.d.ts","sourceRoot":"","sources":["../../../../../../src/core/graph/metis/native/MetisGraph.js"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH;IAWQ;;;;OAIG;IACH,mBAFU,WAAW,GAAC,IAAI,CAEG;IAE7B,8BAA8B;IAC9B,eADW,UAAU,GAAC,IAAI,CACD;IACzB,8BAA8B;IAC9B,aADW,UAAU,GAAC,IAAI,CACH;IAIvB;;;OAGG;IACH,kBAFU,WAAW,GAAC,IAAI,CAEE;IAE5B;;;;OAIG;IACH,mBAFU,WAAW,GAAC,IAAI,CAEG;IAE7B;;;;OAIG;IACH,aAFU,MAAM,CAEI;IAEpB;;;OAGG;IACH,gBAFU,MAAM,CAEO;IAEvB;;;;;OAKG;IACH,mBAFU,WAAW,GAAC,IAAI,CAEG;IAE7B;;;;;OAKG;IACH,6BAFU,UAAU,GAAC,IAAI,CAEc;IAIvC;;;;OAIG;IACH,iBAFU,WAAW,GAAC,IAAI,CAEC;IAE3B;;;;OAIG;IACH,iBAFU,WAAW,GAAC,IAAI,CAEC;IAE3B;;;;OAIG;IACH,0BAFU,WAAW,GAAC,IAAI,CAEU;IAEpC;;;;;OAKG;IACH,2BAFU,UAAU,GAAC,IAAI,CAEY;IAErC;;;;;;;;;;;;OAYG;IACH,yBAFU,iBAAiB,GAAC,IAAI,CAEG;IAGvC;;;;;;;;;;;;;;;;OAgBG;IACH,0CAFW,MAAM,QAyBhB;IAED;;;;OAIG;IACH,+BAcC;IAGL,sBAAiC;CAFhC;yBA/MwB,uBAAuB;kCADd,8DAA8D"}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
import { assert } from "../../../assert.js";
|
|
2
|
+
import { BinaryElementPool } from "../../../geom/3d/topology/struct/binary/BinaryElementPool.js";
|
|
3
|
+
import { CSRGraph } from "../../csr/CSRGraph.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Holds one graph level of the METIS multilevel pipeline.
|
|
7
|
+
*
|
|
8
|
+
* Extends `CSRGraph` — the CSR adjacency (`edge_addresses`, `adjacency`,
|
|
9
|
+
* `edge_weights`, `vertex_weights`) lives in a single shared `ArrayBuffer`.
|
|
10
|
+
*
|
|
11
|
+
* Adds three groups of fields on top of CSR:
|
|
12
|
+
*
|
|
13
|
+
* - **Multilevel link**: `coarse_vertex_map`, `coarser_graph`, `finer_graph`.
|
|
14
|
+
* `coarse_vertex_map[v]` is the id of v's super-vertex one level coarser.
|
|
15
|
+
*
|
|
16
|
+
* - **Partition state**: `vertex_partition`, `partition_weights`, `current_cut`,
|
|
17
|
+
* plus the boundary list (`boundary_count` / `boundary_vertices` /
|
|
18
|
+
* `boundary_position_of_vertex`).
|
|
19
|
+
*
|
|
20
|
+
* - **K-way refinement bookkeeping**: parallel `internal_degree`,
|
|
21
|
+
* `external_degree`, `neighbor_partition_count`, `neighbor_partition_offset`
|
|
22
|
+
* arrays plus the shared `neighbor_partition_pool` of `(partition_id, edge_weight)`
|
|
23
|
+
* records.
|
|
24
|
+
*
|
|
25
|
+
* Partition / refinement arrays are allocated lazily by
|
|
26
|
+
* `allocate_partition_state(partition_count)` because their sizes depend on `k`,
|
|
27
|
+
* which isn't known at CSR construction time and isn't needed during the
|
|
28
|
+
* coarsening or initial-partitioning phases.
|
|
29
|
+
*
|
|
30
|
+
* Volume objective, multi-constraint balance, separator data, and the various
|
|
31
|
+
* minconn/contig auxiliary fields from libmetis `graph_t` are intentionally
|
|
32
|
+
* omitted — they're not on the path we currently use.
|
|
33
|
+
*/
|
|
34
|
+
export class MetisGraph extends CSRGraph {
|
|
35
|
+
/**
|
|
36
|
+
* @param {number} vertex_count
|
|
37
|
+
* @param {number} adjacency_length total length of the adjacency list (each
|
|
38
|
+
* undirected edge appears twice)
|
|
39
|
+
*/
|
|
40
|
+
constructor(vertex_count, adjacency_length) {
|
|
41
|
+
super(vertex_count, adjacency_length);
|
|
42
|
+
|
|
43
|
+
// --- Multilevel links --------------------------------------------------
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Coarsening map: `coarse_vertex_map[v]` is the id of v's super-vertex
|
|
47
|
+
* in `coarser_graph`. Null until coarsening runs at this level.
|
|
48
|
+
* @type {Uint32Array|null}
|
|
49
|
+
*/
|
|
50
|
+
this.coarse_vertex_map = null;
|
|
51
|
+
|
|
52
|
+
/** @type {MetisGraph|null} */
|
|
53
|
+
this.coarser_graph = null;
|
|
54
|
+
/** @type {MetisGraph|null} */
|
|
55
|
+
this.finer_graph = null;
|
|
56
|
+
|
|
57
|
+
// --- Partition state --------------------------------------------------
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Partition id per vertex, in [0, nparts).
|
|
61
|
+
* @type {Uint32Array|null}
|
|
62
|
+
*/
|
|
63
|
+
this.vertex_partition = null;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Per-partition total weight (sum of `vertex_weights` for vertices
|
|
67
|
+
* currently assigned to that partition).
|
|
68
|
+
* @type {Uint32Array|null}
|
|
69
|
+
*/
|
|
70
|
+
this.partition_weights = null;
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Current edge cut: sum of weights of edges whose endpoints lie in
|
|
74
|
+
* different partitions. Tracked incrementally during refinement.
|
|
75
|
+
* @type {number}
|
|
76
|
+
*/
|
|
77
|
+
this.current_cut = 0;
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Number of vertices currently on a partition boundary.
|
|
81
|
+
* @type {number}
|
|
82
|
+
*/
|
|
83
|
+
this.boundary_count = 0;
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Boundary list: the first `boundary_count` entries are vertex ids on
|
|
87
|
+
* a partition boundary. Order is not meaningful (entries get swapped
|
|
88
|
+
* with the tail on removal).
|
|
89
|
+
* @type {Uint32Array|null}
|
|
90
|
+
*/
|
|
91
|
+
this.boundary_vertices = null;
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Inverse of `boundary_vertices`: `boundary_position_of_vertex[v]` is
|
|
95
|
+
* the index of v inside `boundary_vertices`, or -1 if v is interior.
|
|
96
|
+
* Int32Array because of the -1 sentinel.
|
|
97
|
+
* @type {Int32Array|null}
|
|
98
|
+
*/
|
|
99
|
+
this.boundary_position_of_vertex = null;
|
|
100
|
+
|
|
101
|
+
// --- K-way refinement bookkeeping (parallel arrays, indexed by vertex)
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Internal degree: sum of edge weights from v to vertices in v's own
|
|
105
|
+
* partition. ("id" in METIS / FM literature.)
|
|
106
|
+
* @type {Uint32Array|null}
|
|
107
|
+
*/
|
|
108
|
+
this.internal_degree = null;
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* External degree: sum of edge weights from v to vertices in other
|
|
112
|
+
* partitions. ("ed" in METIS / FM literature.)
|
|
113
|
+
* @type {Uint32Array|null}
|
|
114
|
+
*/
|
|
115
|
+
this.external_degree = null;
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Number of distinct neighbouring partitions reachable from v through
|
|
119
|
+
* its edges. ("nnbrs" in METIS.)
|
|
120
|
+
* @type {Uint32Array|null}
|
|
121
|
+
*/
|
|
122
|
+
this.neighbor_partition_count = null;
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Offset (in record units) into `neighbor_partition_pool` for v's list
|
|
126
|
+
* of (partition_id, edge_weight) entries. -1 if v is interior and no
|
|
127
|
+
* pool slot has been allocated yet. ("inbr" in METIS.)
|
|
128
|
+
* @type {Int32Array|null}
|
|
129
|
+
*/
|
|
130
|
+
this.neighbor_partition_offset = null;
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Pool of per-(vertex, neighbour-partition) records. Each record is
|
|
134
|
+
* 8 bytes: two uint32 words holding `(partition_id, edge_weight)`.
|
|
135
|
+
* Access record `r` via:
|
|
136
|
+
* const word_base = neighbor_partition_pool.element_word(r);
|
|
137
|
+
* const partition_id = data_uint32[word_base + 2*k ];
|
|
138
|
+
* const edge_weight = data_uint32[word_base + 2*k + 1];
|
|
139
|
+
* where `k` is in `[0, neighbor_partition_count[v])`.
|
|
140
|
+
*
|
|
141
|
+
* ("cnbrpool" in METIS.)
|
|
142
|
+
*
|
|
143
|
+
* @type {BinaryElementPool|null}
|
|
144
|
+
*/
|
|
145
|
+
this.neighbor_partition_pool = null;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Allocate the k-way refinement bookkeeping arrays. Must be called before
|
|
150
|
+
* any of the refinement routines runs on this graph.
|
|
151
|
+
*
|
|
152
|
+
* **`vertex_partition` is preserved** if it's already set with the correct
|
|
153
|
+
* length. This matters when the initial-partition phase has already
|
|
154
|
+
* computed an assignment (e.g. recursive bisection leaves the result in
|
|
155
|
+
* `vertex_partition` as a buffer that's now owned by this graph) — we
|
|
156
|
+
* don't want to allocate a fresh array just to copy the existing one in.
|
|
157
|
+
* If `vertex_partition` is `null` or the wrong size, it gets allocated
|
|
158
|
+
* fresh and zero-filled.
|
|
159
|
+
*
|
|
160
|
+
* Everything else (`partition_weights`, `internal_degree`, etc.) is always
|
|
161
|
+
* allocated fresh because callers expect a clean refinement-state baseline.
|
|
162
|
+
*
|
|
163
|
+
* @param {number} partition_count
|
|
164
|
+
*/
|
|
165
|
+
allocate_partition_state(partition_count) {
|
|
166
|
+
assert.isNonNegativeInteger(partition_count, 'partition_count');
|
|
167
|
+
|
|
168
|
+
const n = this.vertex_count;
|
|
169
|
+
|
|
170
|
+
if (this.vertex_partition === null || this.vertex_partition.length !== n) {
|
|
171
|
+
this.vertex_partition = new Uint32Array(n);
|
|
172
|
+
}
|
|
173
|
+
this.partition_weights = new Uint32Array(partition_count);
|
|
174
|
+
this.boundary_vertices = new Uint32Array(n);
|
|
175
|
+
this.boundary_position_of_vertex = new Int32Array(n);
|
|
176
|
+
this.boundary_position_of_vertex.fill(-1);
|
|
177
|
+
|
|
178
|
+
this.internal_degree = new Uint32Array(n);
|
|
179
|
+
this.external_degree = new Uint32Array(n);
|
|
180
|
+
this.neighbor_partition_count = new Uint32Array(n);
|
|
181
|
+
this.neighbor_partition_offset = new Int32Array(n);
|
|
182
|
+
this.neighbor_partition_offset.fill(-1);
|
|
183
|
+
|
|
184
|
+
// Each pool record is 8 bytes (uint32 partition_id, uint32 edge_weight).
|
|
185
|
+
// Initial capacity sized to the adjacency length as a rough upper bound;
|
|
186
|
+
// the pool grows on demand.
|
|
187
|
+
this.neighbor_partition_pool = new BinaryElementPool(8, Math.max(64, this.adjacency_length));
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Reset the partition / refinement bookkeeping in place, leaving the CSR
|
|
192
|
+
* adjacency and `coarse_vertex_map` untouched. Used between FM passes when
|
|
193
|
+
* we want to recompute from a fresh `vertex_partition`.
|
|
194
|
+
*/
|
|
195
|
+
reset_refinement_state() {
|
|
196
|
+
if (this.internal_degree !== null) {
|
|
197
|
+
this.internal_degree.fill(0);
|
|
198
|
+
this.external_degree.fill(0);
|
|
199
|
+
this.neighbor_partition_count.fill(0);
|
|
200
|
+
this.neighbor_partition_offset.fill(-1);
|
|
201
|
+
}
|
|
202
|
+
if (this.neighbor_partition_pool !== null) {
|
|
203
|
+
this.neighbor_partition_pool.clear();
|
|
204
|
+
}
|
|
205
|
+
if (this.boundary_position_of_vertex !== null) {
|
|
206
|
+
this.boundary_position_of_vertex.fill(-1);
|
|
207
|
+
}
|
|
208
|
+
this.boundary_count = 0;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
MetisGraph.prototype.isMetisGraph = true;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pre-allocated scratch reused by every recursive `bisect_graph` call during
|
|
3
|
+
* the initial-partition phase.
|
|
4
|
+
*
|
|
5
|
+
* Recursive bisection produces O(k) subgraphs that each need their own
|
|
6
|
+
* refinement state and FM scratch — but only at sizes <= the coarsest vertex
|
|
7
|
+
* count. Sharing one set of arrays scoped to that maximum eliminates O(k)
|
|
8
|
+
* typed-array allocations and the corresponding GC pressure.
|
|
9
|
+
*
|
|
10
|
+
* Contents:
|
|
11
|
+
*
|
|
12
|
+
* - **Compute-2way state**: `boundary_vertices`, `boundary_position_of_vertex`,
|
|
13
|
+
* `internal_degree`, `external_degree`, `partition_weights[2]`.
|
|
14
|
+
*
|
|
15
|
+
* - **FM-2way state**: `fm_heaps` (one per side of the bisection),
|
|
16
|
+
* `fm_moved_pass_index`, `fm_swap_history`, `fm_insertion_order`.
|
|
17
|
+
*
|
|
18
|
+
* - **Bisect snapshot**: `best_partition_snapshot` for grow+FM trial selection.
|
|
19
|
+
*
|
|
20
|
+
* - **`vertex_partition_pool`**: a stack of vertex_partition arrays. Each
|
|
21
|
+
* recursive call takes a slot (via `take_vertex_partition_slot`) and
|
|
22
|
+
* releases it on return. New slots are allocated lazily, capped at
|
|
23
|
+
* `log2(k)` total — the maximum recursion depth.
|
|
24
|
+
*
|
|
25
|
+
* The two FM heaps are sized to `max_vertex_count` at construction. Their
|
|
26
|
+
* internal `__slot_of_id` table can hold any id in `[0, max_vertex_count)`, so
|
|
27
|
+
* subgraphs of any size below that work without expanding. `clear()` resets
|
|
28
|
+
* heap state in O(size), not O(capacity).
|
|
29
|
+
*
|
|
30
|
+
* `fm_moved_pass_index` starts initialised to -1. fm_2way's per-pass cleanup
|
|
31
|
+
* resets touched entries back to -1, so the invariant is preserved across
|
|
32
|
+
* calls — no need to refill the whole array between bisect_graph invocations.
|
|
33
|
+
*/
|
|
34
|
+
export class BisectionScratch {
|
|
35
|
+
/**
|
|
36
|
+
* @param {number} max_vertex_count typically the coarsest graph's vertex count
|
|
37
|
+
*/
|
|
38
|
+
constructor(max_vertex_count: number);
|
|
39
|
+
max_vertex_count: number;
|
|
40
|
+
boundary_vertices: Uint32Array;
|
|
41
|
+
boundary_position_of_vertex: Int32Array;
|
|
42
|
+
internal_degree: Uint32Array;
|
|
43
|
+
external_degree: Uint32Array;
|
|
44
|
+
partition_weights: Uint32Array;
|
|
45
|
+
best_partition_snapshot: Uint32Array;
|
|
46
|
+
fm_heaps: IndexedFloatMaxHeap[];
|
|
47
|
+
fm_moved_pass_index: Int32Array;
|
|
48
|
+
fm_swap_history: Uint32Array;
|
|
49
|
+
fm_insertion_order: Uint32Array;
|
|
50
|
+
/** @type {Uint32Array[]} */
|
|
51
|
+
vertex_partition_pool: Uint32Array[];
|
|
52
|
+
vertex_partition_pool_top: number;
|
|
53
|
+
/**
|
|
54
|
+
* Borrow a vertex_partition slot from the pool. The first `vertex_count`
|
|
55
|
+
* entries are zero-filled; values past `vertex_count` may hold stale data
|
|
56
|
+
* from a sibling subgraph and must not be read.
|
|
57
|
+
*
|
|
58
|
+
* Returned slot remains owned by the scratch; release with
|
|
59
|
+
* `release_vertex_partition_slot` once you're done with it.
|
|
60
|
+
*
|
|
61
|
+
* @param {number} vertex_count subgraph's vertex_count
|
|
62
|
+
* @returns {Uint32Array}
|
|
63
|
+
*/
|
|
64
|
+
take_vertex_partition_slot(vertex_count: number): Uint32Array;
|
|
65
|
+
/**
|
|
66
|
+
* Pop the top vertex_partition slot off the pool. Pairs with
|
|
67
|
+
* `take_vertex_partition_slot` — call exactly once per take.
|
|
68
|
+
*/
|
|
69
|
+
release_vertex_partition_slot(): void;
|
|
70
|
+
}
|
|
71
|
+
import { IndexedFloatMaxHeap } from "../refine/IndexedFloatMaxHeap.js";
|
|
72
|
+
//# sourceMappingURL=BisectionScratch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BisectionScratch.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/graph/metis/native/bisection/BisectionScratch.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH;IACI;;OAEG;IACH,8BAFW,MAAM,EA8BhB;IA3BG,yBAAwC;IAIxC,+BAA0D;IAC1D,wCAAmE;IACnE,6BAAwD;IACxD,6BAAwD;IACxD,+BAA2C;IAC3C,qCAAgE;IAIhE,gCAGC;IACD,gCAA2D;IAE3D,6BAAwD;IACxD,gCAA2D;IAI3D,4BAA4B;IAC5B,uBADW,WAAW,EAAE,CACO;IAC/B,kCAAkC;IAGtC;;;;;;;;;;OAUG;IACH,yCAHW,MAAM,GACJ,WAAW,CAavB;IAED;;;OAGG;IACH,sCAEC;CACJ;oCApGmC,kCAAkC"}
|