@woosh/meep-engine 2.138.19 → 2.139.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -1
- 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/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/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/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/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 +673 -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 +365 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_smooth_vertex.d.ts +31 -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 +112 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_vertex_is_boundary.d.ts +22 -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 +55 -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 +22 -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 +49 -0
- 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/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 +6 -4
- 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 +102 -9
- package/src/engine/control/first-person/FirstPersonPlayerController.d.ts.map +1 -1
- package/src/engine/control/first-person/FirstPersonPlayerController.js +38 -3
- package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.d.ts +533 -4
- package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.d.ts.map +1 -1
- package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.js +315 -6
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts +220 -22
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts.map +1 -1
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.js +858 -241
- package/src/engine/control/first-person/TODO.md +127 -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 +158 -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 +550 -119
- 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 +28 -0
- package/src/engine/ecs/EntityManager.d.ts +2 -2
- package/src/engine/ecs/EntityManager.d.ts.map +1 -1
- package/src/engine/ecs/EntityManager.js +13 -8
- package/src/engine/ecs/System.d.ts.map +1 -1
- package/src/engine/ecs/System.js +2 -2
- 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/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/PLAN.md +236 -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/aabb_transform_oriented.d.ts +30 -0
- package/src/engine/physics/broadphase/aabb_transform_oriented.d.ts.map +1 -0
- package/src/engine/physics/broadphase/aabb_transform_oriented.js +93 -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 +226 -0
- package/src/engine/physics/contact/ManifoldStore.d.ts.map +1 -0
- package/src/engine/physics/contact/ManifoldStore.js +499 -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 +520 -0
- package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -0
- package/src/engine/physics/ecs/PhysicsSystem.js +1159 -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 +455 -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_solve_pressure_unmasked_legacy.d.ts +20 -0
- package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_unmasked_legacy.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_unmasked_legacy.js +83 -0
- package/src/engine/physics/fluid/solver/v3_grid_subtract_pressure_gradient.d.ts +26 -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 +70 -0
- package/src/engine/physics/gjk/expanding_polytope_algorithm.d.ts.map +1 -1
- package/src/engine/physics/gjk/expanding_polytope_algorithm.js +8 -10
- package/src/engine/physics/inertia/world_inverse_inertia.d.ts +29 -0
- package/src/engine/physics/inertia/world_inverse_inertia.d.ts.map +1 -0
- package/src/engine/physics/inertia/world_inverse_inertia.js +79 -0
- package/src/engine/physics/integration/integrate_position.d.ts +16 -0
- package/src/engine/physics/integration/integrate_position.d.ts.map +1 -0
- package/src/engine/physics/integration/integrate_position.js +48 -0
- package/src/engine/physics/integration/integrate_velocity.d.ts +25 -0
- package/src/engine/physics/integration/integrate_velocity.d.ts.map +1 -0
- package/src/engine/physics/integration/integrate_velocity.js +79 -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 +59 -0
- package/src/engine/physics/narrowphase/PosedShape.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/PosedShape.js +110 -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 +543 -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 +508 -0
- package/src/engine/physics/narrowphase/narrowphase_step.d.ts +11 -0
- package/src/engine/physics/narrowphase/narrowphase_step.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/narrowphase_step.js +382 -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 +130 -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/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/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/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 +36 -0
- package/src/engine/physics/solver/solve_contacts.d.ts.map +1 -0
- package/src/engine/physics/solver/solve_contacts.js +598 -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,520 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rigid-body physics system.
|
|
3
|
+
*
|
|
4
|
+
* v1 scope: pool + active list + two BVHs (static / dynamic), Transform sync
|
|
5
|
+
* contract, and the user-facing API surface (gravity, force / impulse, layer
|
|
6
|
+
* filtering, wake / sleep, contact filter). The per-step simulation pipeline
|
|
7
|
+
* (broadphase pair generation, narrowphase, solver, islands, sleep test,
|
|
8
|
+
* contact-event emission) is built on top of this skeleton in subsequent
|
|
9
|
+
* iterations.
|
|
10
|
+
*
|
|
11
|
+
* Dependency tuple is `(RigidBody, Collider, Transform)` — every body has
|
|
12
|
+
* exactly one collider on the same entity. Compound bodies via child collider
|
|
13
|
+
* entities are an extension point handled by a follow-up sub-observer.
|
|
14
|
+
*
|
|
15
|
+
* @author Alex Goldring
|
|
16
|
+
* @copyright Company Named Limited (c) 2026
|
|
17
|
+
*/
|
|
18
|
+
export class PhysicsSystem extends System<any, any, any, any, any> {
|
|
19
|
+
constructor();
|
|
20
|
+
dependencies: (typeof Transform | typeof RigidBody)[];
|
|
21
|
+
components_used: (ResourceAccessSpecification<typeof Transform> | ResourceAccessSpecification<typeof RigidBody> | ResourceAccessSpecification<typeof Collider>)[];
|
|
22
|
+
/**
|
|
23
|
+
* @type {BodyStorage}
|
|
24
|
+
*/
|
|
25
|
+
storage: BodyStorage;
|
|
26
|
+
/**
|
|
27
|
+
* @type {BVH}
|
|
28
|
+
*/
|
|
29
|
+
staticBvh: BVH;
|
|
30
|
+
/**
|
|
31
|
+
* @type {BVH}
|
|
32
|
+
*/
|
|
33
|
+
dynamicBvh: BVH;
|
|
34
|
+
/**
|
|
35
|
+
* Persistent contact-manifold cache. One slot per active pair.
|
|
36
|
+
* @type {ManifoldStore}
|
|
37
|
+
*/
|
|
38
|
+
manifolds: ManifoldStore;
|
|
39
|
+
/**
|
|
40
|
+
* Per-frame list of broadphase-overlapping pairs (canonical
|
|
41
|
+
* `(min, max)`). Cleared at the top of each step.
|
|
42
|
+
* @type {PairList}
|
|
43
|
+
*/
|
|
44
|
+
pairs: PairList;
|
|
45
|
+
/**
|
|
46
|
+
* Per-frame contact-event buffer. Populated by the manifold diff
|
|
47
|
+
* pass at end-of-step and consumed by the dispatch pass.
|
|
48
|
+
* @type {ContactEventBuffer}
|
|
49
|
+
*/
|
|
50
|
+
contactEvents: ContactEventBuffer;
|
|
51
|
+
/**
|
|
52
|
+
* Per-frame island partitioning of the awake-body + contact graph.
|
|
53
|
+
* Rebuilt after narrowphase, consumed by the solver (and, in the
|
|
54
|
+
* follow-up slice, by the per-island atomic sleep test). Bodies
|
|
55
|
+
* static and kinematic act as constraint anchors and do not enlarge
|
|
56
|
+
* islands.
|
|
57
|
+
* @type {IslandBuilder}
|
|
58
|
+
*/
|
|
59
|
+
islands: IslandBuilder;
|
|
60
|
+
/**
|
|
61
|
+
* Velocity-squared threshold below which a body is eligible to start
|
|
62
|
+
* accumulating sleep time. Combined linear + angular kinetic-ish
|
|
63
|
+
* metric: `vx²+vy²+vz² + ωx²+ωy²+ωz²`. Default 0.01 corresponds to
|
|
64
|
+
* ~0.1 m/s linear or ~0.1 rad/s angular.
|
|
65
|
+
* @type {number}
|
|
66
|
+
*/
|
|
67
|
+
sleepVelocitySqrThreshold: number;
|
|
68
|
+
/**
|
|
69
|
+
* Number of TGS substeps per fixed tick. Each substep does
|
|
70
|
+
* `integrate_velocity → solve_contacts → integrate_position` with
|
|
71
|
+
* `dt / substeps` as its time step; narrowphase + island building
|
|
72
|
+
* run once per tick before the substep loop. Higher values give
|
|
73
|
+
* better convergence on tall stacks (impulses propagate through
|
|
74
|
+
* deeper contact chains thanks to per-substep position
|
|
75
|
+
* integration) at proportionally higher solver cost.
|
|
76
|
+
*
|
|
77
|
+
* Box2D's default is 4; we match. Set to 1 to fall back to
|
|
78
|
+
* classic PGS behaviour (one solve per tick at full `dt`).
|
|
79
|
+
* @type {number}
|
|
80
|
+
*/
|
|
81
|
+
solverSubsteps: number;
|
|
82
|
+
/**
|
|
83
|
+
* Velocity iterations within each TGS substep. With 4 substeps,
|
|
84
|
+
* the total iterations per tick is `solverSubsteps × this` = 8 —
|
|
85
|
+
* comparable to the classic PGS default of 10, but distributed
|
|
86
|
+
* across substeps with position integration between them, which
|
|
87
|
+
* is dramatically more stable on stacks.
|
|
88
|
+
* @type {number}
|
|
89
|
+
*/
|
|
90
|
+
solverItersPerSubstep: number;
|
|
91
|
+
/**
|
|
92
|
+
* Seconds of below-threshold motion before a body is moved to the
|
|
93
|
+
* sleeping set. Box2D default is 0.5 s.
|
|
94
|
+
* @type {number}
|
|
95
|
+
*/
|
|
96
|
+
sleepTimeThreshold: number;
|
|
97
|
+
/**
|
|
98
|
+
* Reusable contact-event payload. Listeners must copy any fields they
|
|
99
|
+
* intend to retain past their own scope. Reset before each dispatch.
|
|
100
|
+
* @private
|
|
101
|
+
*/
|
|
102
|
+
private __contact_payload;
|
|
103
|
+
/**
|
|
104
|
+
* World gravity, m/s². Applied each step scaled by per-body gravityScale.
|
|
105
|
+
* @readonly
|
|
106
|
+
* @type {Vector3}
|
|
107
|
+
*/
|
|
108
|
+
readonly gravity: Vector3;
|
|
109
|
+
/**
|
|
110
|
+
* Emitted at end-of-step for newly established contact pairs.
|
|
111
|
+
* @readonly
|
|
112
|
+
* @type {Signal}
|
|
113
|
+
*/
|
|
114
|
+
readonly onContactBegin: Signal;
|
|
115
|
+
/**
|
|
116
|
+
* Emitted at end-of-step for contact pairs that persisted from the previous step.
|
|
117
|
+
* @readonly
|
|
118
|
+
* @type {Signal}
|
|
119
|
+
*/
|
|
120
|
+
readonly onContactStay: Signal;
|
|
121
|
+
/**
|
|
122
|
+
* Emitted at end-of-step for contact pairs that disappeared.
|
|
123
|
+
* @readonly
|
|
124
|
+
* @type {Signal}
|
|
125
|
+
*/
|
|
126
|
+
readonly onContactEnd: Signal;
|
|
127
|
+
/**
|
|
128
|
+
* Optional global contact filter. Called for each surviving broadphase
|
|
129
|
+
* pair; returning `false` discards the pair.
|
|
130
|
+
* @type {((entityA: number, entityB: number, colliderA: Collider, colliderB: Collider) => boolean) | null}
|
|
131
|
+
* @private
|
|
132
|
+
*/
|
|
133
|
+
private __contact_filter;
|
|
134
|
+
/**
|
|
135
|
+
* Per-body component side-tables indexed by body index (NOT packed id).
|
|
136
|
+
* Sparse arrays — populated at link, cleared at unlink. The hot loop
|
|
137
|
+
* iterates `storage.awake_at(i)` and dereferences these.
|
|
138
|
+
* @type {RigidBody[]}
|
|
139
|
+
*/
|
|
140
|
+
__bodies: RigidBody[];
|
|
141
|
+
/** @type {Transform[]} */
|
|
142
|
+
__transforms: Transform[];
|
|
143
|
+
/**
|
|
144
|
+
* Per-body list of attached colliders. Each entry stores the
|
|
145
|
+
* Collider component, its world Transform, the entity that owns
|
|
146
|
+
* it (the body entity for same-entity attachments, a child entity
|
|
147
|
+
* for compound bodies), and the BVH leaf id assigned at attach
|
|
148
|
+
* time. A body may have zero or more attached colliders.
|
|
149
|
+
*
|
|
150
|
+
* @type {Array<Array<{collider: Collider, transform: Transform, entity: number, bvhNode: number}>>}
|
|
151
|
+
*/
|
|
152
|
+
__body_collider_lists: Array<Array<{
|
|
153
|
+
collider: Collider;
|
|
154
|
+
transform: Transform;
|
|
155
|
+
entity: number;
|
|
156
|
+
bvhNode: number;
|
|
157
|
+
}>>;
|
|
158
|
+
/**
|
|
159
|
+
* Bound reference to {@link __pair_filter} so we hand the same
|
|
160
|
+
* callable to {@link generate_pairs} each step without per-step
|
|
161
|
+
* allocation.
|
|
162
|
+
* @private
|
|
163
|
+
*/
|
|
164
|
+
private __pair_filter_bound;
|
|
165
|
+
/**
|
|
166
|
+
* Symmetric layer/mask check + optional user callback. Called per
|
|
167
|
+
* candidate pair during broadphase. Returns `true` to accept the pair.
|
|
168
|
+
*
|
|
169
|
+
* Layer/mask rule: pair (A, B) collides iff
|
|
170
|
+
* `(A.layer & B.mask) !== 0 && (B.layer & A.mask) !== 0`.
|
|
171
|
+
* The user's contact-filter callback is consulted only for pairs that
|
|
172
|
+
* pass the bitmask test (cheap gate first).
|
|
173
|
+
*
|
|
174
|
+
* @private
|
|
175
|
+
* @param {number} idA packed body id
|
|
176
|
+
* @param {number} idB packed body id
|
|
177
|
+
* @returns {boolean}
|
|
178
|
+
*/
|
|
179
|
+
private __pair_filter;
|
|
180
|
+
/**
|
|
181
|
+
* First attached collider of a body, or `null` if none. Used by the
|
|
182
|
+
* solver to read material parameters (friction / restitution) when the
|
|
183
|
+
* per-contact source-collider identity isn't tracked yet (v1 limitation
|
|
184
|
+
* — multi-collider bodies with mixed materials lose precision here).
|
|
185
|
+
*
|
|
186
|
+
* @private
|
|
187
|
+
* @param {number} body_idx
|
|
188
|
+
* @returns {Collider|null}
|
|
189
|
+
*/
|
|
190
|
+
private __primary_collider;
|
|
191
|
+
/**
|
|
192
|
+
* Replace the world gravity vector. Effective on the next step.
|
|
193
|
+
* @param {Vector3|{x:number,y:number,z:number}} v
|
|
194
|
+
*/
|
|
195
|
+
setGravity(v: Vector3 | {
|
|
196
|
+
x: number;
|
|
197
|
+
y: number;
|
|
198
|
+
z: number;
|
|
199
|
+
}): void;
|
|
200
|
+
/**
|
|
201
|
+
* Install (or remove with `null`) the contact filter callback.
|
|
202
|
+
* @param {((entityA:number, entityB:number, colliderA:Collider, colliderB:Collider) => boolean) | null} fn
|
|
203
|
+
*/
|
|
204
|
+
setContactFilter(fn: (entityA: number, entityB: number, colliderA: Collider, colliderB: Collider) => boolean): void;
|
|
205
|
+
/**
|
|
206
|
+
* @returns {((entityA:number, entityB:number, colliderA:Collider, colliderB:Collider) => boolean) | null}
|
|
207
|
+
*/
|
|
208
|
+
getContactFilter(): (entityA: number, entityB: number, colliderA: Collider, colliderB: Collider) => boolean;
|
|
209
|
+
/**
|
|
210
|
+
* @private
|
|
211
|
+
* @param {RigidBody} rb
|
|
212
|
+
* @param {Collider} collider
|
|
213
|
+
* @param {Transform} transform
|
|
214
|
+
* @returns {number} BVH node id
|
|
215
|
+
*/
|
|
216
|
+
private __insert_into_broadphase;
|
|
217
|
+
/**
|
|
218
|
+
* @private
|
|
219
|
+
* @param {RigidBody} rb
|
|
220
|
+
* @param {number} node
|
|
221
|
+
*/
|
|
222
|
+
private __remove_from_broadphase;
|
|
223
|
+
/**
|
|
224
|
+
* Lifecycle entry: invoked when an entity gains the (RigidBody, Transform)
|
|
225
|
+
* tuple. Allocates the body's slot in storage and seeds an empty collider
|
|
226
|
+
* list. Colliders are attached separately via {@link attach_collider} (the
|
|
227
|
+
* paired {@link ColliderObserverSystem} drives this from the dataset; in
|
|
228
|
+
* tests, call manually).
|
|
229
|
+
*
|
|
230
|
+
* @param {RigidBody} rigidBody
|
|
231
|
+
* @param {Transform} transform
|
|
232
|
+
* @param {number} entity
|
|
233
|
+
*/
|
|
234
|
+
link(rigidBody: RigidBody, transform: Transform, entity: number): void;
|
|
235
|
+
/**
|
|
236
|
+
* Detach every collider attached to this body, free its slot, and clear
|
|
237
|
+
* the side-tables.
|
|
238
|
+
*
|
|
239
|
+
* @param {RigidBody} rigidBody
|
|
240
|
+
* @param {Transform} transform
|
|
241
|
+
* @param {number} entity
|
|
242
|
+
*/
|
|
243
|
+
unlink(rigidBody: RigidBody, transform: Transform, entity: number): void;
|
|
244
|
+
/**
|
|
245
|
+
* Attach a collider to an existing body. The collider can live on the
|
|
246
|
+
* same entity as the body (single-collider body) or on a child entity
|
|
247
|
+
* (compound body). The world transform passed here is the collider's
|
|
248
|
+
* own — for a same-entity collider it is the body's Transform; for a
|
|
249
|
+
* child collider it is the child entity's Transform.
|
|
250
|
+
*
|
|
251
|
+
* Idempotent — re-attaching the same collider is a no-op.
|
|
252
|
+
*
|
|
253
|
+
* @param {number} body_entity entity that owns the body
|
|
254
|
+
* @param {Collider} collider
|
|
255
|
+
* @param {Transform} transform world transform of the collider
|
|
256
|
+
* @param {number} [collider_entity] entity owning the collider (defaults to body_entity)
|
|
257
|
+
*/
|
|
258
|
+
attach_collider(body_entity: number, collider: Collider, transform: Transform, collider_entity?: number): void;
|
|
259
|
+
/**
|
|
260
|
+
* Reverse of {@link attach_collider}. Idempotent.
|
|
261
|
+
*
|
|
262
|
+
* @param {number} body_entity
|
|
263
|
+
* @param {Collider} collider
|
|
264
|
+
*/
|
|
265
|
+
detach_collider(body_entity: number, collider: Collider): void;
|
|
266
|
+
/**
|
|
267
|
+
* Linear scan over body slots looking for the one whose entity matches.
|
|
268
|
+
* O(N) where N is the live body count — only called on the link/unlink
|
|
269
|
+
* paths, not during simulation, so the scan cost is bounded.
|
|
270
|
+
*
|
|
271
|
+
* @private
|
|
272
|
+
* @param {number} entity
|
|
273
|
+
* @returns {number} body index or -1
|
|
274
|
+
*/
|
|
275
|
+
private __find_body_index_by_entity;
|
|
276
|
+
/**
|
|
277
|
+
* Resolve a packed body id to its entity, or `-1` if the id is stale.
|
|
278
|
+
* @param {number} packed_body_id
|
|
279
|
+
* @returns {number}
|
|
280
|
+
*/
|
|
281
|
+
entityOf(packed_body_id: number): number;
|
|
282
|
+
/**
|
|
283
|
+
* Number of live bodies (regardless of awake/sleeping state).
|
|
284
|
+
* @returns {number}
|
|
285
|
+
*/
|
|
286
|
+
get bodyCount(): number;
|
|
287
|
+
/**
|
|
288
|
+
* Apply an instantaneous change of momentum at the body's centre of mass.
|
|
289
|
+
* Linear-only — see {@link applyImpulseAt} for an off-centre impulse that
|
|
290
|
+
* also produces angular response.
|
|
291
|
+
*
|
|
292
|
+
* Wakes the body if it is asleep.
|
|
293
|
+
*
|
|
294
|
+
* @param {RigidBody} rigidBody
|
|
295
|
+
* @param {Vector3|{x:number,y:number,z:number}} impulse
|
|
296
|
+
*/
|
|
297
|
+
applyImpulse(rigidBody: RigidBody, impulse: Vector3 | {
|
|
298
|
+
x: number;
|
|
299
|
+
y: number;
|
|
300
|
+
z: number;
|
|
301
|
+
}): void;
|
|
302
|
+
/**
|
|
303
|
+
* Apply an instantaneous change of momentum at a specific world-space point.
|
|
304
|
+
* Off-centre impulses produce both linear (Δv = P/m) and angular
|
|
305
|
+
* (Δω = I_w⁻¹·(r × P)) response.
|
|
306
|
+
*
|
|
307
|
+
* Wakes the body if it is asleep.
|
|
308
|
+
*
|
|
309
|
+
* @param {RigidBody} rigidBody
|
|
310
|
+
* @param {Transform} transform body's current world Transform (used for r and I_w)
|
|
311
|
+
* @param {Vector3|{x:number,y:number,z:number}} impulse
|
|
312
|
+
* @param {Vector3|{x:number,y:number,z:number}} worldPoint
|
|
313
|
+
*/
|
|
314
|
+
applyImpulseAt(rigidBody: RigidBody, transform: Transform, impulse: Vector3 | {
|
|
315
|
+
x: number;
|
|
316
|
+
y: number;
|
|
317
|
+
z: number;
|
|
318
|
+
}, worldPoint: Vector3 | {
|
|
319
|
+
x: number;
|
|
320
|
+
y: number;
|
|
321
|
+
z: number;
|
|
322
|
+
}): void;
|
|
323
|
+
/**
|
|
324
|
+
* Accumulate a continuous torque (world-space) for integration on the
|
|
325
|
+
* next fixedUpdate. Pairs with {@link applyForce} for the rotational case.
|
|
326
|
+
*
|
|
327
|
+
* Wakes the body if asleep.
|
|
328
|
+
*
|
|
329
|
+
* @param {RigidBody} rigidBody
|
|
330
|
+
* @param {Vector3|{x:number,y:number,z:number}} torque
|
|
331
|
+
*/
|
|
332
|
+
applyTorque(rigidBody: RigidBody, torque: Vector3 | {
|
|
333
|
+
x: number;
|
|
334
|
+
y: number;
|
|
335
|
+
z: number;
|
|
336
|
+
}): void;
|
|
337
|
+
/**
|
|
338
|
+
* Apply a continuous force at a specific world-space point. The force
|
|
339
|
+
* generates both a linear acceleration (F/m) and a torque (r × F) about
|
|
340
|
+
* the body's centre of mass.
|
|
341
|
+
*
|
|
342
|
+
* Wakes the body if asleep.
|
|
343
|
+
*
|
|
344
|
+
* @param {RigidBody} rigidBody
|
|
345
|
+
* @param {Transform} transform body's current world Transform
|
|
346
|
+
* @param {Vector3|{x:number,y:number,z:number}} force
|
|
347
|
+
* @param {Vector3|{x:number,y:number,z:number}} worldPoint
|
|
348
|
+
*/
|
|
349
|
+
applyForceAt(rigidBody: RigidBody, transform: Transform, force: Vector3 | {
|
|
350
|
+
x: number;
|
|
351
|
+
y: number;
|
|
352
|
+
z: number;
|
|
353
|
+
}, worldPoint: Vector3 | {
|
|
354
|
+
x: number;
|
|
355
|
+
y: number;
|
|
356
|
+
z: number;
|
|
357
|
+
}): void;
|
|
358
|
+
/**
|
|
359
|
+
* Accumulate a continuous force to be integrated next fixedUpdate step.
|
|
360
|
+
* Wakes the body if asleep.
|
|
361
|
+
*
|
|
362
|
+
* @param {RigidBody} rigidBody
|
|
363
|
+
* @param {Vector3|{x:number,y:number,z:number}} force
|
|
364
|
+
*/
|
|
365
|
+
applyForce(rigidBody: RigidBody, force: Vector3 | {
|
|
366
|
+
x: number;
|
|
367
|
+
y: number;
|
|
368
|
+
z: number;
|
|
369
|
+
}): void;
|
|
370
|
+
/**
|
|
371
|
+
* Replace the linear velocity. Wakes the body if asleep.
|
|
372
|
+
*
|
|
373
|
+
* @param {RigidBody} rigidBody
|
|
374
|
+
* @param {Vector3|{x:number,y:number,z:number}} v
|
|
375
|
+
*/
|
|
376
|
+
setLinearVelocity(rigidBody: RigidBody, v: Vector3 | {
|
|
377
|
+
x: number;
|
|
378
|
+
y: number;
|
|
379
|
+
z: number;
|
|
380
|
+
}): void;
|
|
381
|
+
/**
|
|
382
|
+
* Force the body awake. Static bodies are ignored.
|
|
383
|
+
* @param {RigidBody} rigidBody
|
|
384
|
+
*/
|
|
385
|
+
wake(rigidBody: RigidBody): void;
|
|
386
|
+
/**
|
|
387
|
+
* Force the body asleep. Dynamic bodies will not re-enter the active list
|
|
388
|
+
* until a wake event occurs.
|
|
389
|
+
* @param {RigidBody} rigidBody
|
|
390
|
+
*/
|
|
391
|
+
sleep(rigidBody: RigidBody): void;
|
|
392
|
+
/**
|
|
393
|
+
* Wake a body and atomically wake every other body it was last sleeping
|
|
394
|
+
* with (its "sleep group"). Sleep groups are circular doubly-linked lists
|
|
395
|
+
* threaded through every member of an island when it sleeps atomically;
|
|
396
|
+
* waking any one member walks the chain and wakes the rest in the same
|
|
397
|
+
* call.
|
|
398
|
+
*
|
|
399
|
+
* Without this, a 100-block stack hit at the base would wake one block
|
|
400
|
+
* per frame as the broadphase propagated awareness up the stack — a
|
|
401
|
+
* visible ~1.6 s wave at 60 fps. Atomic wake eliminates the wave.
|
|
402
|
+
*
|
|
403
|
+
* No-op for non-dynamic bodies. Idempotent for already-awake bodies.
|
|
404
|
+
* @private
|
|
405
|
+
* @param {RigidBody} rb
|
|
406
|
+
*/
|
|
407
|
+
private __wake_body;
|
|
408
|
+
/**
|
|
409
|
+
* Atomically put every body in a contiguous range of island members to
|
|
410
|
+
* sleep. Members are threaded into a circular doubly-linked list so any
|
|
411
|
+
* future `wake` on any member walks the chain and revives them all.
|
|
412
|
+
*
|
|
413
|
+
* Velocities are zeroed because the body is by definition at rest at
|
|
414
|
+
* this point — the alternative (storing residual velocities for "softer"
|
|
415
|
+
* wake) is what Bullet does, but for a deterministic game-physics target
|
|
416
|
+
* fully resetting is simpler and avoids drift while sleeping.
|
|
417
|
+
*
|
|
418
|
+
* @private
|
|
419
|
+
* @param {Uint32Array} member_array view (or full array) of body indices
|
|
420
|
+
* @param {number} start
|
|
421
|
+
* @param {number} end
|
|
422
|
+
*/
|
|
423
|
+
private __atomic_sleep_island_range;
|
|
424
|
+
/**
|
|
425
|
+
* Get the body index for a packed body id without revalidation. Used by
|
|
426
|
+
* query traversals that already trust the id came from a live BVH leaf.
|
|
427
|
+
* @param {number} packed_body_id
|
|
428
|
+
* @returns {number}
|
|
429
|
+
*/
|
|
430
|
+
__index_of(packed_body_id: number): number;
|
|
431
|
+
/**
|
|
432
|
+
* Broadphase raycast against both BVHs. Fills `result` with the nearest
|
|
433
|
+
* hit and returns `true` on hit, `false` on miss.
|
|
434
|
+
*
|
|
435
|
+
* Narrowphase refinement against the actual shape geometry is a
|
|
436
|
+
* follow-up — for now `result.t` is the distance to the leaf's
|
|
437
|
+
* inflated AABB and `result.normal` is the AABB face normal. Both are
|
|
438
|
+
* exact for AABB-shaped colliders.
|
|
439
|
+
*
|
|
440
|
+
* @param {Ray3} ray origin + unit direction + `tMax`
|
|
441
|
+
* @param {PhysicsSurfacePoint} result populated on hit; untouched on miss
|
|
442
|
+
* @param {(entity:number, collider:Collider)=>boolean} [filter] defaults
|
|
443
|
+
* to {@link returnTrue} (accept every candidate)
|
|
444
|
+
* @returns {boolean}
|
|
445
|
+
*/
|
|
446
|
+
raycast(ray: Ray3, result: PhysicsSurfacePoint, filter?: (entity: number, collider: Collider) => boolean): boolean;
|
|
447
|
+
/**
|
|
448
|
+
* Run one simulation step. v1 pipeline: integrate velocity → integrate
|
|
449
|
+
* position → refit broadphase AABBs. Narrowphase, solver, islands and
|
|
450
|
+
* contact-event emission land in subsequent slices.
|
|
451
|
+
*
|
|
452
|
+
* @param {number} dt
|
|
453
|
+
*/
|
|
454
|
+
/**
|
|
455
|
+
* Wake any sleeping body that appears in this step's broadphase pair list.
|
|
456
|
+
* A pair means the BVH AABBs overlap — even if the sleeper hasn't moved,
|
|
457
|
+
* an awake neighbour has come into contact range and the sleeper must
|
|
458
|
+
* participate in narrowphase / solve.
|
|
459
|
+
* @private
|
|
460
|
+
*/
|
|
461
|
+
private __wake_pairs;
|
|
462
|
+
/**
|
|
463
|
+
* Per-island atomic sleep test. Walks each island once and applies the
|
|
464
|
+
* decision uniformly across all members:
|
|
465
|
+
*
|
|
466
|
+
* - If any member carries {@link RigidBodyFlags.DisableSleep}, the
|
|
467
|
+
* entire island is exempt; every member's sleep_timer is reset.
|
|
468
|
+
* - If `max(|v|² + |ω|²)` across all members is below
|
|
469
|
+
* {@link sleepVelocitySqrThreshold}, every member's sleep_timer is
|
|
470
|
+
* incremented by `dt`. When the smallest member's timer crosses
|
|
471
|
+
* {@link sleepTimeThreshold}, the whole island sleeps atomically in
|
|
472
|
+
* the same step (members get threaded into a sleep-group chain so
|
|
473
|
+
* {@link __wake_body} can wake them all in one call).
|
|
474
|
+
* - Otherwise the island has at least one active member, so every
|
|
475
|
+
* member's timer is reset.
|
|
476
|
+
*
|
|
477
|
+
* This is the design-plan atomic-island sleep — replaces the per-body
|
|
478
|
+
* approximation that lived in this slot during the previous slice.
|
|
479
|
+
* Weakly-connected piles no longer chatter awake when a single member
|
|
480
|
+
* blips above threshold; piles fall asleep and wake up as one.
|
|
481
|
+
*
|
|
482
|
+
* @private
|
|
483
|
+
* @param {number} dt
|
|
484
|
+
*/
|
|
485
|
+
private __sleep_test;
|
|
486
|
+
/**
|
|
487
|
+
* Dispatch every buffered contact event through:
|
|
488
|
+
* - the system-level Signals ({@link onContactBegin}/Stay/End), always; and
|
|
489
|
+
* - the entity-level event channel via `dataset.sendEvent(entity, name, payload)`,
|
|
490
|
+
* when a dataset is attached.
|
|
491
|
+
*
|
|
492
|
+
* Payload is a reused scratch object; listeners must copy anything they
|
|
493
|
+
* intend to retain past the listener body.
|
|
494
|
+
* @private
|
|
495
|
+
*/
|
|
496
|
+
private __dispatch_contact_events;
|
|
497
|
+
fixedUpdate(dt: any): void;
|
|
498
|
+
/**
|
|
499
|
+
* @readonly
|
|
500
|
+
* @type {boolean}
|
|
501
|
+
*/
|
|
502
|
+
readonly isPhysicsSystem: boolean;
|
|
503
|
+
}
|
|
504
|
+
import { System } from "../../ecs/System.js";
|
|
505
|
+
import { Transform } from "../../ecs/transform/Transform.js";
|
|
506
|
+
import { RigidBody } from "./RigidBody.js";
|
|
507
|
+
import { ResourceAccessSpecification } from "../../../core/model/ResourceAccessSpecification.js";
|
|
508
|
+
import { Collider } from "./Collider.js";
|
|
509
|
+
import { BodyStorage } from "../body/BodyStorage.js";
|
|
510
|
+
import { BVH } from "../../../core/bvh2/bvh3/BVH.js";
|
|
511
|
+
import { ManifoldStore } from "../contact/ManifoldStore.js";
|
|
512
|
+
import { PairList } from "../broadphase/PairList.js";
|
|
513
|
+
import { ContactEventBuffer } from "../events/ContactEventBuffer.js";
|
|
514
|
+
import { IslandBuilder } from "../island/IslandBuilder.js";
|
|
515
|
+
import Vector3 from "../../../core/geom/Vector3.js";
|
|
516
|
+
import Signal from "../../../core/events/signal/Signal.js";
|
|
517
|
+
import { BodyKind } from "./BodyKind.js";
|
|
518
|
+
import { RigidBodyFlags } from "./RigidBodyFlags.js";
|
|
519
|
+
export { BodyKind, RigidBodyFlags };
|
|
520
|
+
//# sourceMappingURL=PhysicsSystem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PhysicsSystem.d.ts","sourceRoot":"","sources":["../../../../../src/engine/physics/ecs/PhysicsSystem.js"],"names":[],"mappings":"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"}
|