@woosh/meep-engine 2.138.20 → 2.140.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_overlaps_aabb.d.ts +3 -3
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_overlaps_aabb.d.ts.map +1 -1
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_overlaps_aabb.js +4 -4
- package/src/core/collection/PairUint32Map.d.ts +100 -0
- package/src/core/collection/PairUint32Map.d.ts.map +1 -0
- package/src/core/collection/PairUint32Map.js +321 -0
- package/src/core/collection/Uint32Map.d.ts +119 -0
- package/src/core/collection/Uint32Map.d.ts.map +1 -0
- package/src/core/collection/Uint32Map.js +345 -0
- package/src/core/collection/array/array_shuffle.d.ts +10 -3
- package/src/core/collection/array/array_shuffle.d.ts.map +1 -1
- package/src/core/collection/array/array_shuffle.js +27 -22
- package/src/core/collection/heap/FibonacciHeap.d.ts +195 -0
- package/src/core/collection/heap/FibonacciHeap.d.ts.map +1 -0
- package/src/core/collection/heap/FibonacciHeap.js +586 -0
- package/src/core/collection/heap/Uint32Heap.js +1 -1
- package/src/core/collection/heap/Uint32Heap4.d.ts +169 -0
- package/src/core/collection/heap/Uint32Heap4.d.ts.map +1 -0
- package/src/core/collection/heap/Uint32Heap4.js +490 -0
- package/src/core/geom/3d/aabb/aabb3_transform_oriented.d.ts +30 -0
- package/src/core/geom/3d/aabb/aabb3_transform_oriented.d.ts.map +1 -0
- package/src/core/geom/3d/aabb/aabb3_transform_oriented.js +93 -0
- package/src/core/geom/3d/line/line3_closest_points_segment_segment.d.ts +27 -0
- package/src/core/geom/3d/line/line3_closest_points_segment_segment.d.ts.map +1 -0
- package/src/core/geom/3d/line/line3_closest_points_segment_segment.js +88 -0
- package/src/core/geom/3d/quaternion/quat3_to_matrix3.d.ts +54 -0
- package/src/core/geom/3d/quaternion/quat3_to_matrix3.d.ts.map +1 -0
- package/src/core/geom/3d/quaternion/quat3_to_matrix3.js +69 -0
- package/src/core/geom/3d/shape/AbstractShape3D.d.ts +24 -2
- package/src/core/geom/3d/shape/AbstractShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/AbstractShape3D.js +24 -1
- package/src/core/geom/3d/shape/BoxShape3D.d.ts +61 -0
- package/src/core/geom/3d/shape/BoxShape3D.d.ts.map +1 -0
- package/src/core/geom/3d/shape/BoxShape3D.js +158 -0
- package/src/core/geom/3d/shape/CapsuleShape3D.d.ts +11 -0
- package/src/core/geom/3d/shape/CapsuleShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/CapsuleShape3D.js +12 -0
- package/src/core/geom/3d/shape/HeightMapShape3D.d.ts +148 -0
- package/src/core/geom/3d/shape/HeightMapShape3D.d.ts.map +1 -0
- package/src/core/geom/3d/shape/HeightMapShape3D.js +451 -0
- package/src/core/geom/3d/shape/MeshShape3D.d.ts +210 -0
- package/src/core/geom/3d/shape/MeshShape3D.d.ts.map +1 -0
- package/src/core/geom/3d/shape/MeshShape3D.js +593 -0
- package/src/core/geom/3d/shape/TransformedShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/TransformedShape3D.js +46 -2
- package/src/core/geom/3d/shape/Triangle3D.d.ts +95 -0
- package/src/core/geom/3d/shape/Triangle3D.d.ts.map +1 -0
- package/src/core/geom/3d/shape/Triangle3D.js +318 -0
- package/src/core/geom/3d/shape/UnionShape3D.js +13 -0
- package/src/core/geom/3d/shape/UnitCubeShape3D.d.ts +37 -9
- package/src/core/geom/3d/shape/UnitCubeShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/UnitCubeShape3D.js +45 -98
- package/src/core/geom/3d/shape/UnitSphereShape3D.d.ts +10 -0
- package/src/core/geom/3d/shape/UnitSphereShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/UnitSphereShape3D.js +11 -0
- package/src/core/geom/3d/shape/shape_mesh_from_geometry.d.ts +30 -0
- package/src/core/geom/3d/shape/shape_mesh_from_geometry.d.ts.map +1 -0
- package/src/core/geom/3d/shape/shape_mesh_from_geometry.js +64 -0
- package/src/core/geom/3d/shape/util/shape3d_voxelize_to_grid.d.ts +61 -0
- package/src/core/geom/3d/shape/util/shape3d_voxelize_to_grid.d.ts.map +1 -0
- package/src/core/geom/3d/shape/util/shape3d_voxelize_to_grid.js +148 -0
- package/src/core/geom/3d/tetrahedra/compute_tetrahedral_mesh_from_surface.d.ts +39 -0
- package/src/core/geom/3d/tetrahedra/compute_tetrahedral_mesh_from_surface.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/compute_tetrahedral_mesh_from_surface.js +147 -0
- package/src/core/geom/3d/tetrahedra/compute_tetrahedron_quality.d.ts +15 -0
- package/src/core/geom/3d/tetrahedra/compute_tetrahedron_quality.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/compute_tetrahedron_quality.js +22 -0
- package/src/core/geom/3d/tetrahedra/prototype_tetrahedrize_mesh.d.ts +2 -0
- package/src/core/geom/3d/tetrahedra/prototype_tetrahedrize_mesh.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/prototype_tetrahedrize_mesh.js +671 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_build_vertex_to_tets_map.d.ts +28 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_build_vertex_to_tets_map.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_build_vertex_to_tets_map.js +48 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_carve_outside_surface.d.ts +26 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_carve_outside_surface.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_carve_outside_surface.js +222 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_find_tets_around_edge.d.ts +34 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_find_tets_around_edge.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_find_tets_around_edge.js +146 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_flip_23.d.ts +36 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_flip_23.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_flip_23.js +232 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_flip_32.d.ts +33 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_flip_32.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_flip_32.js +255 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_improve_quality.d.ts +68 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_improve_quality.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_improve_quality.js +387 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_smooth_vertex.d.ts +35 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_smooth_vertex.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_smooth_vertex.js +140 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_vertex_is_boundary.d.ts +31 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_vertex_is_boundary.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_vertex_is_boundary.js +97 -0
- package/src/core/geom/3d/tetrahedra/tetrahedron_compute_quality.d.ts +32 -0
- package/src/core/geom/3d/tetrahedra/tetrahedron_compute_quality.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/tetrahedron_compute_quality.js +66 -0
- package/src/core/geom/3d/topology/struct/binary/BinaryElementPool.d.ts +41 -0
- package/src/core/geom/3d/topology/struct/binary/BinaryElementPool.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/BinaryElementPool.js +124 -13
- package/src/core/geom/3d/topology/struct/binary/BinaryTopology.d.ts +134 -0
- package/src/core/geom/3d/topology/struct/binary/BinaryTopology.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/BinaryTopology.js +276 -3
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_close_boundary_holes.d.ts +17 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_close_boundary_holes.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_close_boundary_holes.js +135 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compact.d.ts +14 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compact.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compact.js +177 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_face_decouple.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_face_decouple.js +20 -4
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_simplify.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_simplify.js +5 -3
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_create.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_create.js +9 -0
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_get_or_create.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_get_or_create.js +21 -45
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_kill.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_kill.js +7 -1
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_kill_parallels.d.ts +8 -6
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_kill_parallels.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_kill_parallels.js +8 -6
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_mesh_kill_short_edges.d.ts +22 -0
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_mesh_kill_short_edges.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_mesh_kill_short_edges.js +73 -0
- package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vertex_replace.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vertex_replace.js +51 -1
- package/src/core/geom/3d/topology/struct/binary/query/bt_edge_get.d.ts +10 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_edge_get.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_edge_get.js +42 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.d.ts +28 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.js +227 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_walk_boundary_loops.d.ts +13 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_walk_boundary_loops.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_walk_boundary_loops.js +108 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_query_edge_is_boundary.d.ts +11 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_query_edge_is_boundary.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_query_edge_is_boundary.js +20 -0
- package/src/core/geom/3d/triangle/triangle_mesh_compute_signed_volume.d.ts +20 -0
- package/src/core/geom/3d/triangle/triangle_mesh_compute_signed_volume.d.ts.map +1 -0
- package/src/core/geom/3d/triangle/triangle_mesh_compute_signed_volume.js +38 -0
- package/src/core/geom/3d/triangle/v3_compute_triangle_normal.d.ts +2 -2
- package/src/core/geom/3d/triangle/v3_compute_triangle_normal.d.ts.map +1 -1
- package/src/core/geom/3d/triangle/v3_compute_triangle_normal.js +1 -1
- package/src/core/geom/vec3/v3_dot_array_array.d.ts +3 -3
- package/src/core/geom/vec3/v3_dot_array_array.d.ts.map +1 -1
- package/src/core/geom/vec3/v3_dot_array_array.js +2 -2
- package/src/core/geom/vec3/v3_negate_array.d.ts +3 -3
- package/src/core/geom/vec3/v3_negate_array.d.ts.map +1 -1
- package/src/core/geom/vec3/v3_negate_array.js +2 -2
- package/src/core/geom/vec3/v3_quat3_apply.d.ts +29 -0
- package/src/core/geom/vec3/v3_quat3_apply.d.ts.map +1 -0
- package/src/core/geom/vec3/v3_quat3_apply.js +39 -0
- package/src/core/geom/vec3/v3_quat3_apply_inverse.d.ts +30 -0
- package/src/core/geom/vec3/v3_quat3_apply_inverse.d.ts.map +1 -0
- package/src/core/geom/vec3/v3_quat3_apply_inverse.js +41 -0
- package/src/core/geom/vec3/v3_triple_cross_product.d.ts +32 -0
- package/src/core/geom/vec3/v3_triple_cross_product.d.ts.map +1 -0
- package/src/core/geom/vec3/v3_triple_cross_product.js +45 -0
- package/src/core/graph/csr/CSRGraph.d.ts +168 -0
- package/src/core/graph/csr/CSRGraph.d.ts.map +1 -0
- package/src/core/graph/csr/CSRGraph.js +319 -0
- package/src/core/graph/metis/cluster_mesh_metis.d.ts +12 -0
- package/src/core/graph/metis/cluster_mesh_metis.d.ts.map +1 -1
- package/src/core/graph/metis/cluster_mesh_metis.js +12 -0
- package/src/core/graph/metis/metis.d.ts +19 -0
- package/src/core/graph/metis/metis.d.ts.map +1 -1
- package/src/core/graph/metis/metis.js +20 -0
- package/src/core/graph/metis/metis_cluster_bs.d.ts +11 -0
- package/src/core/graph/metis/metis_cluster_bs.d.ts.map +1 -1
- package/src/core/graph/metis/metis_cluster_bs.js +11 -0
- package/src/core/graph/metis/metis_options.d.ts +17 -2
- package/src/core/graph/metis/metis_options.d.ts.map +1 -1
- package/src/core/graph/metis/metis_options.js +17 -2
- package/src/core/graph/metis/native/MetisGraph.d.ts +144 -0
- package/src/core/graph/metis/native/MetisGraph.d.ts.map +1 -0
- package/src/core/graph/metis/native/MetisGraph.js +212 -0
- package/src/core/graph/metis/native/bisection/BisectionScratch.d.ts +72 -0
- package/src/core/graph/metis/native/bisection/BisectionScratch.d.ts.map +1 -0
- package/src/core/graph/metis/native/bisection/BisectionScratch.js +101 -0
- package/src/core/graph/metis/native/bisection/bisect_graph.d.ts +37 -0
- package/src/core/graph/metis/native/bisection/bisect_graph.d.ts.map +1 -0
- package/src/core/graph/metis/native/bisection/bisect_graph.js +100 -0
- package/src/core/graph/metis/native/bisection/compute_2way_params.d.ts +15 -0
- package/src/core/graph/metis/native/bisection/compute_2way_params.d.ts.map +1 -0
- package/src/core/graph/metis/native/bisection/compute_2way_params.js +84 -0
- package/src/core/graph/metis/native/bisection/fm_2way.d.ts +30 -0
- package/src/core/graph/metis/native/bisection/fm_2way.d.ts.map +1 -0
- package/src/core/graph/metis/native/bisection/fm_2way.js +290 -0
- package/src/core/graph/metis/native/bisection/grow_bisection.d.ts +23 -0
- package/src/core/graph/metis/native/bisection/grow_bisection.d.ts.map +1 -0
- package/src/core/graph/metis/native/bisection/grow_bisection.js +137 -0
- package/src/core/graph/metis/native/bisection/split_graph_two_way.d.ts +28 -0
- package/src/core/graph/metis/native/bisection/split_graph_two_way.d.ts.map +1 -0
- package/src/core/graph/metis/native/bisection/split_graph_two_way.js +119 -0
- package/src/core/graph/metis/native/coarsen/coarsen_graph.d.ts +20 -0
- package/src/core/graph/metis/native/coarsen/coarsen_graph.d.ts.map +1 -0
- package/src/core/graph/metis/native/coarsen/coarsen_graph.js +94 -0
- package/src/core/graph/metis/native/coarsen/create_coarse_graph.d.ts +24 -0
- package/src/core/graph/metis/native/coarsen/create_coarse_graph.d.ts.map +1 -0
- package/src/core/graph/metis/native/coarsen/create_coarse_graph.js +158 -0
- package/src/core/graph/metis/native/coarsen/match_shem.d.ts +41 -0
- package/src/core/graph/metis/native/coarsen/match_shem.d.ts.map +1 -0
- package/src/core/graph/metis/native/coarsen/match_shem.js +175 -0
- package/src/core/graph/metis/native/initial/initial_kway_bfs.d.ts +24 -0
- package/src/core/graph/metis/native/initial/initial_kway_bfs.d.ts.map +1 -0
- package/src/core/graph/metis/native/initial/initial_kway_bfs.js +122 -0
- package/src/core/graph/metis/native/initial/initial_kway_recursive_bisection.d.ts +29 -0
- package/src/core/graph/metis/native/initial/initial_kway_recursive_bisection.d.ts.map +1 -0
- package/src/core/graph/metis/native/initial/initial_kway_recursive_bisection.js +170 -0
- package/src/core/graph/metis/native/metis_partition_kway.d.ts +41 -0
- package/src/core/graph/metis/native/metis_partition_kway.d.ts.map +1 -0
- package/src/core/graph/metis/native/metis_partition_kway.js +126 -0
- package/src/core/graph/metis/native/refine/IndexedFloatMaxHeap.d.ts +62 -0
- package/src/core/graph/metis/native/refine/IndexedFloatMaxHeap.d.ts.map +1 -0
- package/src/core/graph/metis/native/refine/IndexedFloatMaxHeap.js +261 -0
- package/src/core/graph/metis/native/refine/RefinementScratch.d.ts +45 -0
- package/src/core/graph/metis/native/refine/RefinementScratch.d.ts.map +1 -0
- package/src/core/graph/metis/native/refine/RefinementScratch.js +53 -0
- package/src/core/graph/metis/native/refine/compute_kway_params.d.ts +18 -0
- package/src/core/graph/metis/native/refine/compute_kway_params.d.ts.map +1 -0
- package/src/core/graph/metis/native/refine/compute_kway_params.js +138 -0
- package/src/core/graph/metis/native/refine/fm_kway.d.ts +63 -0
- package/src/core/graph/metis/native/refine/fm_kway.d.ts.map +1 -0
- package/src/core/graph/metis/native/refine/fm_kway.js +462 -0
- package/src/core/graph/metis/native/refine/project_kway.d.ts +22 -0
- package/src/core/graph/metis/native/refine/project_kway.d.ts.map +1 -0
- package/src/core/graph/metis/native/refine/project_kway.js +43 -0
- package/src/core/graph/metis/native/refine/refine_kway.d.ts +34 -0
- package/src/core/graph/metis/native/refine/refine_kway.d.ts.map +1 -0
- package/src/core/graph/metis/native/refine/refine_kway.js +43 -0
- package/src/core/math/linalg/eigen/matrix_householder_in_place.d.ts +2 -2
- package/src/core/math/linalg/eigen/matrix_householder_in_place.js +2 -2
- package/src/core/math/linalg/eigen/matrix_qr_in_place.d.ts +6 -4
- package/src/core/math/linalg/eigen/matrix_qr_in_place.d.ts.map +1 -1
- package/src/core/math/linalg/eigen/matrix_qr_in_place.js +69 -23
- package/src/engine/EngineHarness.d.ts +3 -1
- package/src/engine/EngineHarness.d.ts.map +1 -1
- package/src/engine/EngineHarness.js +3 -0
- package/src/engine/control/first-person/DESIGN.md +30 -6
- package/src/engine/control/first-person/DESIGN_EXTENSIONS.md +563 -0
- package/src/engine/control/first-person/FirstPersonPlayerController.d.ts +115 -9
- package/src/engine/control/first-person/FirstPersonPlayerController.d.ts.map +1 -1
- package/src/engine/control/first-person/FirstPersonPlayerController.js +211 -176
- package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.d.ts +601 -8
- package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.d.ts.map +1 -1
- package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.js +349 -8
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts +319 -23
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts.map +1 -1
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.js +1789 -799
- package/src/engine/control/first-person/TODO.md +173 -0
- package/src/engine/control/first-person/abilities/Ability.d.ts +101 -0
- package/src/engine/control/first-person/abilities/Ability.d.ts.map +1 -0
- package/src/engine/control/first-person/abilities/Ability.js +119 -0
- package/src/engine/control/first-person/abilities/AbilitySet.d.ts +86 -0
- package/src/engine/control/first-person/abilities/AbilitySet.d.ts.map +1 -0
- package/src/engine/control/first-person/abilities/AbilitySet.js +185 -0
- package/src/engine/control/first-person/abilities/LedgeGrab.d.ts +62 -0
- package/src/engine/control/first-person/abilities/LedgeGrab.d.ts.map +1 -0
- package/src/engine/control/first-person/abilities/LedgeGrab.js +199 -0
- package/src/engine/control/first-person/abilities/Mantle.d.ts +45 -0
- package/src/engine/control/first-person/abilities/Mantle.d.ts.map +1 -0
- package/src/engine/control/first-person/abilities/Mantle.js +188 -0
- package/src/engine/control/first-person/abilities/Slide.d.ts +33 -0
- package/src/engine/control/first-person/abilities/Slide.d.ts.map +1 -0
- package/src/engine/control/first-person/abilities/Slide.js +166 -0
- package/src/engine/control/first-person/abilities/WallJump.d.ts +45 -0
- package/src/engine/control/first-person/abilities/WallJump.d.ts.map +1 -0
- package/src/engine/control/first-person/abilities/WallJump.js +131 -0
- package/src/engine/control/first-person/abilities/WallRun.d.ts +44 -0
- package/src/engine/control/first-person/abilities/WallRun.d.ts.map +1 -0
- package/src/engine/control/first-person/abilities/WallRun.js +180 -0
- package/src/engine/control/first-person/composer/EyeOffsetStack.d.ts +49 -0
- package/src/engine/control/first-person/composer/EyeOffsetStack.d.ts.map +1 -0
- package/src/engine/control/first-person/composer/EyeOffsetStack.js +60 -0
- package/src/engine/control/first-person/mastery/BreathRhythmEvaluator.d.ts +100 -0
- package/src/engine/control/first-person/mastery/BreathRhythmEvaluator.d.ts.map +1 -0
- package/src/engine/control/first-person/mastery/BreathRhythmEvaluator.js +133 -0
- package/src/engine/control/first-person/mastery/DecisionPoint.d.ts +10 -0
- package/src/engine/control/first-person/mastery/DecisionPoint.d.ts.map +1 -0
- package/src/engine/control/first-person/mastery/DecisionPoint.js +30 -0
- package/src/engine/control/first-person/mastery/FootAsymmetryTurnEvaluator.d.ts +61 -0
- package/src/engine/control/first-person/mastery/FootAsymmetryTurnEvaluator.d.ts.map +1 -0
- package/src/engine/control/first-person/mastery/FootAsymmetryTurnEvaluator.js +109 -0
- package/src/engine/control/first-person/mastery/MasteryEvaluator.d.ts +40 -0
- package/src/engine/control/first-person/mastery/MasteryEvaluator.d.ts.map +1 -0
- package/src/engine/control/first-person/mastery/MasteryEvaluator.js +45 -0
- package/src/engine/control/first-person/mastery/MasteryScore.d.ts +68 -0
- package/src/engine/control/first-person/mastery/MasteryScore.d.ts.map +1 -0
- package/src/engine/control/first-person/mastery/MasteryScore.js +100 -0
- package/src/engine/control/first-person/mastery/MasterySet.d.ts +60 -0
- package/src/engine/control/first-person/mastery/MasterySet.d.ts.map +1 -0
- package/src/engine/control/first-person/mastery/MasterySet.js +86 -0
- package/src/engine/control/first-person/mastery/SlideInitiationTimingEvaluator.d.ts +58 -0
- package/src/engine/control/first-person/mastery/SlideInitiationTimingEvaluator.d.ts.map +1 -0
- package/src/engine/control/first-person/mastery/SlideInitiationTimingEvaluator.js +83 -0
- package/src/engine/control/first-person/mastery/StrideTimingJumpEvaluator.d.ts +69 -0
- package/src/engine/control/first-person/mastery/StrideTimingJumpEvaluator.d.ts.map +1 -0
- package/src/engine/control/first-person/mastery/StrideTimingJumpEvaluator.js +109 -0
- package/src/engine/control/first-person/math/Spring.d.ts +56 -0
- package/src/engine/control/first-person/math/Spring.d.ts.map +1 -0
- package/src/engine/control/first-person/math/Spring.js +71 -0
- package/src/engine/control/first-person/math/computeLRCBreathRate.d.ts +26 -0
- package/src/engine/control/first-person/math/computeLRCBreathRate.d.ts.map +1 -0
- package/src/engine/control/first-person/math/computeLRCBreathRate.js +41 -0
- package/src/engine/control/first-person/math/computeMassRatios.d.ts +35 -0
- package/src/engine/control/first-person/math/computeMassRatios.d.ts.map +1 -0
- package/src/engine/control/first-person/math/computeMassRatios.js +44 -0
- package/src/engine/control/first-person/pose/FirstPersonPose.d.ts +31 -1
- package/src/engine/control/first-person/pose/FirstPersonPose.d.ts.map +1 -1
- package/src/engine/control/first-person/pose/FirstPersonPose.js +49 -3
- package/src/engine/control/first-person/pose/FirstPersonPosture.d.ts +7 -0
- package/src/engine/control/first-person/pose/FirstPersonPosture.d.ts.map +1 -0
- package/src/engine/control/first-person/pose/FirstPersonPosture.js +27 -0
- package/src/engine/control/first-person/prototype_first_person_controller.js +637 -120
- package/src/engine/control/first-person/sensors/FirstPersonSensors.d.ts +58 -0
- package/src/engine/control/first-person/sensors/FirstPersonSensors.d.ts.map +1 -0
- package/src/engine/control/first-person/sensors/FirstPersonSensors.js +77 -0
- package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.d.ts +80 -0
- package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.d.ts.map +1 -0
- package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.js +196 -0
- package/src/engine/control/first-person/test/buildTestPlayer.d.ts +20 -0
- package/src/engine/control/first-person/test/buildTestPlayer.d.ts.map +1 -0
- package/src/engine/control/first-person/test/buildTestPlayer.js +36 -0
- package/src/engine/graphics/camera/testClippingPlaneComputation.js +0 -2
- package/src/engine/graphics/ecs/light/Light.d.ts.map +1 -1
- package/src/engine/graphics/ecs/light/Light.js +27 -0
- package/src/engine/graphics/ecs/light/LightSystem.js +1 -1
- package/src/engine/graphics/ecs/path/PathDisplaySystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/path/testPathDisplaySystem.js +0 -2
- package/src/engine/graphics/ecs/path/tube/prototypeAnimatedPathMask.js +0 -2
- package/src/engine/graphics/geometry/CapsuleGeometry.d.ts +42 -0
- package/src/engine/graphics/geometry/CapsuleGeometry.d.ts.map +1 -0
- package/src/engine/graphics/geometry/CapsuleGeometry.js +171 -0
- package/src/engine/graphics/render/buffer/buffers/prototypeNormalFrameBuffer.js +0 -2
- package/src/engine/graphics/render/forward_plus/plugin/ptototypeFPPlugin.js +0 -2
- package/src/engine/graphics/render/visibility/hiz/prototypeHiZ.js +0 -2
- package/src/engine/navigation/grid/find_path_on_grid_astar.d.ts.map +1 -1
- package/src/engine/navigation/grid/find_path_on_grid_astar.js +11 -2
- package/src/engine/navigation/mesh/bt_mesh_face_find_path.d.ts.map +1 -1
- package/src/engine/navigation/mesh/bt_mesh_face_find_path.js +11 -1
- package/src/engine/physics/BULLET_REVIEW.md +945 -0
- package/src/engine/physics/CANNON_REVIEW.md +1300 -0
- package/src/engine/physics/JOLT_REVIEW.md +913 -0
- package/src/engine/physics/PLAN.md +461 -0
- package/src/engine/physics/RAPIER_REVIEW.md +934 -0
- package/src/engine/physics/REVIEW_001_ACTION_PLAN.md +642 -0
- package/src/engine/physics/body/BodyStorage.d.ts +187 -0
- package/src/engine/physics/body/BodyStorage.d.ts.map +1 -0
- package/src/engine/physics/body/BodyStorage.js +427 -0
- package/src/engine/physics/broadphase/PairList.d.ts +62 -0
- package/src/engine/physics/broadphase/PairList.d.ts.map +1 -0
- package/src/engine/physics/broadphase/PairList.js +97 -0
- package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts +16 -0
- package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts.map +1 -0
- package/src/engine/physics/broadphase/compute_fat_world_aabb.js +61 -0
- package/src/engine/physics/broadphase/generate_pairs.d.ts +38 -0
- package/src/engine/physics/broadphase/generate_pairs.d.ts.map +1 -0
- package/src/engine/physics/broadphase/generate_pairs.js +101 -0
- package/src/engine/physics/contact/ManifoldStore.d.ts +299 -0
- package/src/engine/physics/contact/ManifoldStore.d.ts.map +1 -0
- package/src/engine/physics/contact/ManifoldStore.js +608 -0
- package/src/engine/physics/ecs/BodyKind.d.ts +23 -0
- package/src/engine/physics/ecs/BodyKind.d.ts.map +1 -0
- package/src/engine/physics/ecs/BodyKind.js +24 -0
- package/src/engine/physics/ecs/Collider.d.ts +98 -0
- package/src/engine/physics/ecs/Collider.d.ts.map +1 -0
- package/src/engine/physics/ecs/Collider.js +136 -0
- package/src/engine/physics/ecs/ColliderFlags.d.ts +14 -0
- package/src/engine/physics/ecs/ColliderFlags.d.ts.map +1 -0
- package/src/engine/physics/ecs/ColliderFlags.js +15 -0
- package/src/engine/physics/ecs/ColliderObserverSystem.d.ts +58 -0
- package/src/engine/physics/ecs/ColliderObserverSystem.d.ts.map +1 -0
- package/src/engine/physics/ecs/ColliderObserverSystem.js +103 -0
- package/src/engine/physics/ecs/ColliderSerializationAdapter.d.ts +25 -0
- package/src/engine/physics/ecs/ColliderSerializationAdapter.d.ts.map +1 -0
- package/src/engine/physics/ecs/ColliderSerializationAdapter.js +37 -0
- package/src/engine/physics/ecs/PhysicsEvents.d.ts +15 -0
- package/src/engine/physics/ecs/PhysicsEvents.d.ts.map +1 -0
- package/src/engine/physics/ecs/PhysicsEvents.js +16 -0
- package/src/engine/physics/ecs/PhysicsSystem.d.ts +628 -0
- package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -0
- package/src/engine/physics/ecs/PhysicsSystem.js +1301 -0
- package/src/engine/physics/ecs/RigidBody.d.ts +197 -0
- package/src/engine/physics/ecs/RigidBody.d.ts.map +1 -0
- package/src/engine/physics/ecs/RigidBody.js +240 -0
- package/src/engine/physics/ecs/RigidBodyFlags.d.ts +21 -0
- package/src/engine/physics/ecs/RigidBodyFlags.d.ts.map +1 -0
- package/src/engine/physics/ecs/RigidBodyFlags.js +22 -0
- package/src/engine/physics/ecs/RigidBodySerializationAdapter.d.ts +28 -0
- package/src/engine/physics/ecs/RigidBodySerializationAdapter.d.ts.map +1 -0
- package/src/engine/physics/ecs/RigidBodySerializationAdapter.js +81 -0
- package/src/engine/physics/ecs/SleepState.d.ts +11 -0
- package/src/engine/physics/ecs/SleepState.d.ts.map +1 -0
- package/src/engine/physics/ecs/SleepState.js +12 -0
- package/src/engine/physics/events/ContactEventBuffer.d.ts +46 -0
- package/src/engine/physics/events/ContactEventBuffer.d.ts.map +1 -0
- package/src/engine/physics/events/ContactEventBuffer.js +83 -0
- package/src/engine/physics/events/diff_manifolds.d.ts +25 -0
- package/src/engine/physics/events/diff_manifolds.d.ts.map +1 -0
- package/src/engine/physics/events/diff_manifolds.js +50 -0
- package/src/engine/physics/fluid/FluidField.d.ts +294 -16
- package/src/engine/physics/fluid/FluidField.d.ts.map +1 -1
- package/src/engine/physics/fluid/FluidField.js +510 -66
- package/src/engine/physics/fluid/FluidSimulator.d.ts +188 -5
- package/src/engine/physics/fluid/FluidSimulator.d.ts.map +1 -1
- package/src/engine/physics/fluid/FluidSimulator.js +456 -95
- package/src/engine/physics/fluid/SliceVisualiser.d.ts +29 -6
- package/src/engine/physics/fluid/SliceVisualiser.d.ts.map +1 -1
- package/src/engine/physics/fluid/SliceVisualiser.js +190 -165
- package/src/engine/physics/fluid/ecs/FluidComponent.d.ts +154 -0
- package/src/engine/physics/fluid/ecs/FluidComponent.d.ts.map +1 -0
- package/src/engine/physics/fluid/ecs/FluidComponent.js +238 -0
- package/src/engine/physics/fluid/ecs/FluidEffectorsComponent.d.ts +45 -0
- package/src/engine/physics/fluid/ecs/FluidEffectorsComponent.d.ts.map +1 -0
- package/src/engine/physics/fluid/ecs/FluidEffectorsComponent.js +89 -0
- package/src/engine/physics/fluid/ecs/FluidSystem.d.ts +107 -0
- package/src/engine/physics/fluid/ecs/FluidSystem.d.ts.map +1 -0
- package/src/engine/physics/fluid/ecs/FluidSystem.js +278 -0
- package/src/engine/physics/fluid/effector/AbstractFluidEffector.d.ts +62 -1
- package/src/engine/physics/fluid/effector/AbstractFluidEffector.d.ts.map +1 -1
- package/src/engine/physics/fluid/effector/AbstractFluidEffector.js +81 -6
- package/src/engine/physics/fluid/effector/GlobalFluidEffector.d.ts +17 -4
- package/src/engine/physics/fluid/effector/GlobalFluidEffector.d.ts.map +1 -1
- package/src/engine/physics/fluid/effector/GlobalFluidEffector.js +105 -12
- package/src/engine/physics/fluid/effector/ImpulseFluidEffector.d.ts +43 -0
- package/src/engine/physics/fluid/effector/ImpulseFluidEffector.d.ts.map +1 -0
- package/src/engine/physics/fluid/effector/ImpulseFluidEffector.js +210 -0
- package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts +62 -1
- package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts.map +1 -1
- package/src/engine/physics/fluid/effector/WakeFluidEffector.js +302 -8
- package/src/engine/physics/fluid/prototype.js +102 -91
- package/src/engine/physics/fluid/solver/optimal_sor_omega.d.ts +33 -0
- package/src/engine/physics/fluid/solver/optimal_sor_omega.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/optimal_sor_omega.js +41 -0
- package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.d.ts +20 -5
- package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.js +60 -38
- package/src/engine/physics/fluid/solver/v3_grid_apply_diffusion.d.ts +25 -4
- package/src/engine/physics/fluid/solver/v3_grid_apply_diffusion.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_grid_apply_diffusion.js +93 -73
- package/src/engine/physics/fluid/solver/v3_grid_apply_scalar_advection.d.ts +23 -0
- package/src/engine/physics/fluid/solver/v3_grid_apply_scalar_advection.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_apply_scalar_advection.js +60 -0
- package/src/engine/physics/fluid/solver/v3_grid_compute_divergence.d.ts +23 -0
- package/src/engine/physics/fluid/solver/v3_grid_compute_divergence.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_compute_divergence.js +68 -0
- package/src/engine/physics/fluid/solver/v3_grid_compute_solid_neighbour_mask.d.ts +30 -0
- package/src/engine/physics/fluid/solver/v3_grid_compute_solid_neighbour_mask.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_compute_solid_neighbour_mask.js +66 -0
- package/src/engine/physics/fluid/solver/v3_grid_patch_edges_uniform.d.ts +26 -0
- package/src/engine/physics/fluid/solver/v3_grid_patch_edges_uniform.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_patch_edges_uniform.js +113 -0
- package/src/engine/physics/fluid/solver/v3_grid_shift_in_place.d.ts +30 -0
- package/src/engine/physics/fluid/solver/v3_grid_shift_in_place.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_shift_in_place.js +107 -0
- package/src/engine/physics/fluid/solver/v3_grid_solve_pressure.d.ts +49 -0
- package/src/engine/physics/fluid/solver/v3_grid_solve_pressure.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_solve_pressure.js +126 -0
- package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_pcg.d.ts +93 -0
- package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_pcg.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_pcg.js +424 -0
- package/src/engine/physics/fluid/solver/v3_grid_subtract_pressure_gradient.d.ts +48 -0
- package/src/engine/physics/fluid/solver/v3_grid_subtract_pressure_gradient.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_subtract_pressure_gradient.js +92 -0
- package/src/engine/physics/gjk/expanding_polytope_algorithm.d.ts +6 -6
- package/src/engine/physics/gjk/expanding_polytope_algorithm.d.ts.map +1 -1
- package/src/engine/physics/gjk/expanding_polytope_algorithm.js +76 -32
- package/src/engine/physics/gjk/gjk.d.ts +28 -2
- package/src/engine/physics/gjk/gjk.d.ts.map +1 -1
- package/src/engine/physics/gjk/gjk.js +421 -378
- package/src/engine/physics/gjk/minkowski_support.d.ts +37 -0
- package/src/engine/physics/gjk/minkowski_support.d.ts.map +1 -0
- package/src/engine/physics/gjk/minkowski_support.js +75 -0
- package/src/engine/physics/gjk/mpr.d.ts +56 -0
- package/src/engine/physics/gjk/mpr.d.ts.map +1 -0
- package/src/engine/physics/gjk/mpr.js +344 -0
- package/src/engine/physics/inertia/world_inverse_inertia.d.ts +44 -0
- package/src/engine/physics/inertia/world_inverse_inertia.d.ts.map +1 -0
- package/src/engine/physics/inertia/world_inverse_inertia.js +77 -0
- package/src/engine/physics/integration/integrate_position.d.ts +34 -0
- package/src/engine/physics/integration/integrate_position.d.ts.map +1 -0
- package/src/engine/physics/integration/integrate_position.js +79 -0
- package/src/engine/physics/integration/integrate_velocity.d.ts +55 -0
- package/src/engine/physics/integration/integrate_velocity.d.ts.map +1 -0
- package/src/engine/physics/integration/integrate_velocity.js +160 -0
- package/src/engine/physics/integration/quat_integrate.d.ts +27 -0
- package/src/engine/physics/integration/quat_integrate.d.ts.map +1 -0
- package/src/engine/physics/integration/quat_integrate.js +62 -0
- package/src/engine/physics/island/IslandBuilder.d.ts +167 -0
- package/src/engine/physics/island/IslandBuilder.d.ts.map +1 -0
- package/src/engine/physics/island/IslandBuilder.js +411 -0
- package/src/engine/physics/island/union_find.d.ts +51 -0
- package/src/engine/physics/island/union_find.d.ts.map +1 -0
- package/src/engine/physics/island/union_find.js +76 -0
- package/src/engine/physics/narrowphase/PosedShape.d.ts +51 -0
- package/src/engine/physics/narrowphase/PosedShape.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/PosedShape.js +108 -0
- package/src/engine/physics/narrowphase/box_box_manifold.d.ts +32 -0
- package/src/engine/physics/narrowphase/box_box_manifold.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/box_box_manifold.js +639 -0
- package/src/engine/physics/narrowphase/box_triangle_contact.d.ts +30 -0
- package/src/engine/physics/narrowphase/box_triangle_contact.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/box_triangle_contact.js +811 -0
- package/src/engine/physics/narrowphase/capsule_contacts.d.ts +122 -0
- package/src/engine/physics/narrowphase/capsule_contacts.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/capsule_contacts.js +462 -0
- package/src/engine/physics/narrowphase/capsule_triangle_contact.d.ts +71 -0
- package/src/engine/physics/narrowphase/capsule_triangle_contact.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/capsule_triangle_contact.js +375 -0
- package/src/engine/physics/narrowphase/compute_penetration.d.ts +91 -0
- package/src/engine/physics/narrowphase/compute_penetration.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/compute_penetration.js +396 -0
- package/src/engine/physics/narrowphase/decomposition/aabb_world_to_local.d.ts +35 -0
- package/src/engine/physics/narrowphase/decomposition/aabb_world_to_local.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/decomposition/aabb_world_to_local.js +80 -0
- package/src/engine/physics/narrowphase/decomposition/decompose_to_triangles.d.ts +31 -0
- package/src/engine/physics/narrowphase/decomposition/decompose_to_triangles.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/decomposition/decompose_to_triangles.js +55 -0
- package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.d.ts +42 -0
- package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.js +204 -0
- package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.d.ts +42 -0
- package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.js +94 -0
- package/src/engine/physics/narrowphase/decomposition/triangle_buffer_layout.d.ts +37 -0
- package/src/engine/physics/narrowphase/decomposition/triangle_buffer_layout.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/decomposition/triangle_buffer_layout.js +37 -0
- package/src/engine/physics/narrowphase/narrowphase_step.d.ts +17 -0
- package/src/engine/physics/narrowphase/narrowphase_step.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/narrowphase_step.js +1422 -0
- package/src/engine/physics/narrowphase/sphere_box_contact.d.ts +38 -0
- package/src/engine/physics/narrowphase/sphere_box_contact.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/sphere_box_contact.js +123 -0
- package/src/engine/physics/narrowphase/sphere_sphere_contact.d.ts +26 -0
- package/src/engine/physics/narrowphase/sphere_sphere_contact.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/sphere_sphere_contact.js +51 -0
- package/src/engine/physics/narrowphase/sphere_triangle_contact.d.ts +48 -0
- package/src/engine/physics/narrowphase/sphere_triangle_contact.d.ts.map +1 -0
- package/src/engine/physics/narrowphase/sphere_triangle_contact.js +143 -0
- package/src/engine/physics/queries/PhysicsSurfacePoint.d.ts +83 -0
- package/src/engine/physics/queries/PhysicsSurfacePoint.d.ts.map +1 -0
- package/src/engine/physics/queries/PhysicsSurfacePoint.js +100 -0
- package/src/engine/physics/queries/overlap_shape.d.ts +51 -0
- package/src/engine/physics/queries/overlap_shape.d.ts.map +1 -0
- package/src/engine/physics/queries/overlap_shape.js +183 -0
- package/src/engine/physics/queries/raycast.d.ts +20 -0
- package/src/engine/physics/queries/raycast.d.ts.map +1 -0
- package/src/engine/physics/queries/raycast.js +249 -0
- package/src/engine/physics/queries/shape_cast.d.ts +56 -0
- package/src/engine/physics/queries/shape_cast.d.ts.map +1 -0
- package/src/engine/physics/queries/shape_cast.js +387 -0
- package/src/engine/physics/solver/friction_cone.d.ts +16 -0
- package/src/engine/physics/solver/friction_cone.d.ts.map +1 -0
- package/src/engine/physics/solver/friction_cone.js +37 -0
- package/src/engine/physics/solver/solve_contacts.d.ts +122 -0
- package/src/engine/physics/solver/solve_contacts.d.ts.map +1 -0
- package/src/engine/physics/solver/solve_contacts.js +1016 -0
- package/src/core/geom/3d/topology/struct/binary/io/edge/OrderedEdge.d.ts +0 -34
- package/src/core/geom/3d/topology/struct/binary/io/edge/OrderedEdge.d.ts.map +0 -1
- package/src/core/geom/3d/topology/struct/binary/io/edge/OrderedEdge.js +0 -66
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_mesh_calc_edges.d.ts +0 -2
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_mesh_calc_edges.d.ts.map +0 -1
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_mesh_calc_edges.js +0 -54
- package/src/core/geom/3d/topology/struct/binary/io/edge/get_or_create_edge_map.d.ts +0 -2
- package/src/core/geom/3d/topology/struct/binary/io/edge/get_or_create_edge_map.d.ts.map +0 -1
- package/src/core/geom/3d/topology/struct/binary/io/edge/get_or_create_edge_map.js +0 -26
- package/src/engine/ecs/components/Motion.d.ts +0 -21
- package/src/engine/ecs/components/Motion.d.ts.map +0 -1
- package/src/engine/ecs/components/Motion.js +0 -27
- package/src/engine/ecs/components/MotionSerializationAdapter.d.ts +0 -20
- package/src/engine/ecs/components/MotionSerializationAdapter.d.ts.map +0 -1
- package/src/engine/ecs/components/MotionSerializationAdapter.js +0 -26
- package/src/engine/ecs/systems/MotionSystem.d.ts +0 -9
- package/src/engine/ecs/systems/MotionSystem.d.ts.map +0 -1
- package/src/engine/ecs/systems/MotionSystem.js +0 -29
- package/src/engine/physics/fluid/Fluid.d.ts +0 -26
- package/src/engine/physics/fluid/Fluid.d.ts.map +0 -1
- package/src/engine/physics/fluid/Fluid.js +0 -221
- package/src/engine/physics/fluid/solver/v3_grid_apply_advection_reverse.d.ts +0 -7
- package/src/engine/physics/fluid/solver/v3_grid_apply_advection_reverse.d.ts.map +0 -1
- package/src/engine/physics/fluid/solver/v3_grid_apply_advection_reverse.js +0 -8
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event kinds emitted by the manifold diff pass.
|
|
3
|
+
* @readonly
|
|
4
|
+
* @enum {number}
|
|
5
|
+
*/
|
|
6
|
+
export const ContactEventKind = {
|
|
7
|
+
Begin: 0,
|
|
8
|
+
Stay: 1,
|
|
9
|
+
End: 2,
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
const DEFAULT_INITIAL_CAPACITY = 32;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Per-event stride in the Uint32 backing array:
|
|
16
|
+
* 0 : kind (ContactEventKind)
|
|
17
|
+
* 1 : entityA
|
|
18
|
+
* 2 : entityB
|
|
19
|
+
* 3 : slot
|
|
20
|
+
* @type {number}
|
|
21
|
+
*/
|
|
22
|
+
const EVENT_STRIDE = 4;
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Append-only buffer of contact events produced during one fixedUpdate, ready
|
|
26
|
+
* to be dispatched (and then cleared) at end-of-step.
|
|
27
|
+
*
|
|
28
|
+
* Storage is flat Uint32Array — keeping the metadata side allocation-free; the
|
|
29
|
+
* actual contact payload (normal, depth, world point) is read on demand from
|
|
30
|
+
* the {@link ManifoldStore} by the dispatch code.
|
|
31
|
+
*
|
|
32
|
+
* @author Alex Goldring
|
|
33
|
+
* @copyright Company Named Limited (c) 2026
|
|
34
|
+
*/
|
|
35
|
+
export class ContactEventBuffer {
|
|
36
|
+
/**
|
|
37
|
+
* @param {number} [initial_capacity] events
|
|
38
|
+
*/
|
|
39
|
+
constructor(initial_capacity = DEFAULT_INITIAL_CAPACITY) {
|
|
40
|
+
this.__capacity = Math.max(1, initial_capacity);
|
|
41
|
+
this.__count = 0;
|
|
42
|
+
// Int32 so entity ids may legitimately store -1 (stale body after free).
|
|
43
|
+
this.__data = new Int32Array(this.__capacity * EVENT_STRIDE);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* @returns {number}
|
|
48
|
+
*/
|
|
49
|
+
get count() {
|
|
50
|
+
return this.__count;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
clear() {
|
|
54
|
+
this.__count = 0;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* @param {ContactEventKind|number} kind
|
|
59
|
+
* @param {number} entityA
|
|
60
|
+
* @param {number} entityB
|
|
61
|
+
* @param {number} slot manifold slot id
|
|
62
|
+
*/
|
|
63
|
+
push(kind, entityA, entityB, slot) {
|
|
64
|
+
if (this.__count === this.__capacity) {
|
|
65
|
+
const new_cap = this.__capacity << 1;
|
|
66
|
+
const next = new Int32Array(new_cap * EVENT_STRIDE);
|
|
67
|
+
next.set(this.__data);
|
|
68
|
+
this.__data = next;
|
|
69
|
+
this.__capacity = new_cap;
|
|
70
|
+
}
|
|
71
|
+
const off = this.__count * EVENT_STRIDE;
|
|
72
|
+
this.__data[off] = kind;
|
|
73
|
+
this.__data[off + 1] = entityA;
|
|
74
|
+
this.__data[off + 2] = entityB;
|
|
75
|
+
this.__data[off + 3] = slot;
|
|
76
|
+
this.__count++;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
kind_at(i) { return this.__data[i * EVENT_STRIDE]; }
|
|
80
|
+
entityA_at(i) { return this.__data[i * EVENT_STRIDE + 1]; }
|
|
81
|
+
entityB_at(i) { return this.__data[i * EVENT_STRIDE + 2]; }
|
|
82
|
+
slot_at(i) { return this.__data[i * EVENT_STRIDE + 3]; }
|
|
83
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Walk every live manifold and produce a contact event for each pair whose
|
|
3
|
+
* touched state changed (or persisted) since the previous step:
|
|
4
|
+
*
|
|
5
|
+
* touched + !prev_touched → ContactBegin
|
|
6
|
+
* touched + prev_touched → ContactStay
|
|
7
|
+
* !touched + prev_touched → ContactEnd
|
|
8
|
+
* !touched + !prev_touched → no event (slot is about to be evicted by
|
|
9
|
+
* advance_frame's grace counter)
|
|
10
|
+
*
|
|
11
|
+
* MUST be called BEFORE {@link ManifoldStore#advance_frame} so the touched
|
|
12
|
+
* bits still reflect the just-finished step.
|
|
13
|
+
*
|
|
14
|
+
* Output is in slot-iteration order, which matches the deterministic
|
|
15
|
+
* insertion order of slots in the dense live list. That's stable for a given
|
|
16
|
+
* input sequence; not the same as `(idA, idB)` lex order, which would
|
|
17
|
+
* require a sort. For v1 callers want stable-replay determinism rather than
|
|
18
|
+
* any specific external order, so we don't sort.
|
|
19
|
+
*
|
|
20
|
+
* @param {ManifoldStore} manifolds
|
|
21
|
+
* @param {BodyStorage} storage
|
|
22
|
+
* @param {ContactEventBuffer} out_events cleared and refilled
|
|
23
|
+
*/
|
|
24
|
+
export function diff_manifolds(manifolds: ManifoldStore, storage: BodyStorage, out_events: ContactEventBuffer): void;
|
|
25
|
+
//# sourceMappingURL=diff_manifolds.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff_manifolds.d.ts","sourceRoot":"","sources":["../../../../../src/engine/physics/events/diff_manifolds.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qHAuBC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { body_id_index } from "../body/BodyStorage.js";
|
|
2
|
+
import { ContactEventKind } from "./ContactEventBuffer.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Walk every live manifold and produce a contact event for each pair whose
|
|
6
|
+
* touched state changed (or persisted) since the previous step:
|
|
7
|
+
*
|
|
8
|
+
* touched + !prev_touched → ContactBegin
|
|
9
|
+
* touched + prev_touched → ContactStay
|
|
10
|
+
* !touched + prev_touched → ContactEnd
|
|
11
|
+
* !touched + !prev_touched → no event (slot is about to be evicted by
|
|
12
|
+
* advance_frame's grace counter)
|
|
13
|
+
*
|
|
14
|
+
* MUST be called BEFORE {@link ManifoldStore#advance_frame} so the touched
|
|
15
|
+
* bits still reflect the just-finished step.
|
|
16
|
+
*
|
|
17
|
+
* Output is in slot-iteration order, which matches the deterministic
|
|
18
|
+
* insertion order of slots in the dense live list. That's stable for a given
|
|
19
|
+
* input sequence; not the same as `(idA, idB)` lex order, which would
|
|
20
|
+
* require a sort. For v1 callers want stable-replay determinism rather than
|
|
21
|
+
* any specific external order, so we don't sort.
|
|
22
|
+
*
|
|
23
|
+
* @param {ManifoldStore} manifolds
|
|
24
|
+
* @param {BodyStorage} storage
|
|
25
|
+
* @param {ContactEventBuffer} out_events cleared and refilled
|
|
26
|
+
*/
|
|
27
|
+
export function diff_manifolds(manifolds, storage, out_events) {
|
|
28
|
+
out_events.clear();
|
|
29
|
+
|
|
30
|
+
const live_count = manifolds.count;
|
|
31
|
+
for (let i = 0; i < live_count; i++) {
|
|
32
|
+
const slot = manifolds.live_at(i);
|
|
33
|
+
const touched = manifolds.is_touched(slot);
|
|
34
|
+
const prev = manifolds.was_touched_prev(slot);
|
|
35
|
+
|
|
36
|
+
if (!touched && !prev) continue;
|
|
37
|
+
|
|
38
|
+
let kind;
|
|
39
|
+
if (touched && !prev) kind = ContactEventKind.Begin;
|
|
40
|
+
else if (touched && prev) kind = ContactEventKind.Stay;
|
|
41
|
+
else kind = ContactEventKind.End;
|
|
42
|
+
|
|
43
|
+
const idA = manifolds.bodyA(slot);
|
|
44
|
+
const idB = manifolds.bodyB(slot);
|
|
45
|
+
const entA = storage.entity_at(body_id_index(idA));
|
|
46
|
+
const entB = storage.entity_at(body_id_index(idB));
|
|
47
|
+
|
|
48
|
+
out_events.push(kind, entA, entB, slot);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -1,30 +1,308 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Cell-centered 3D Eulerian grid for the fluid simulator.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Holds three velocity components (x, y, z), an optional per-cell `solid` mask, and any
|
|
5
|
+
* number of user-defined passive scalar attributes that get transported by the flow.
|
|
6
|
+
*
|
|
7
|
+
* Holds only state whose value carries information across step boundaries. The
|
|
8
|
+
* simulator's transient working memory (per-step velocity snapshots, divergence,
|
|
9
|
+
* diffusion / scalar ping-pong scratch) lives on the simulator. `pressure` is the
|
|
10
|
+
* one exception: it's warm-started each step from the previous solve, so its value
|
|
11
|
+
* is genuine cross-step state and belongs here.
|
|
12
|
+
*
|
|
13
|
+
* All typed array references are STABLE for the lifetime of the field. External
|
|
14
|
+
* consumers can safely cache references returned from {@link getScalarData},
|
|
15
|
+
* {@link velocity_x}, etc.
|
|
16
|
+
*
|
|
17
|
+
* @see "Real-Time Fluid Dynamics for Games" (Stam, 2003)
|
|
18
|
+
* @see GDC 2019 talk "Wind Simulation in God of War" (Rupert Renard) for the wider
|
|
19
|
+
* effector-driven design pattern this package is moving toward.
|
|
6
20
|
*/
|
|
7
21
|
export class FluidField {
|
|
8
|
-
buffer: any;
|
|
9
|
-
addAttribute(name: any): number;
|
|
10
22
|
/**
|
|
23
|
+
* Velocity X component, length = cell count. Cell-centered, indexed by
|
|
24
|
+
* `z * res_x * res_y + y * res_x + x`.
|
|
25
|
+
* @type {Float32Array|null}
|
|
26
|
+
*/
|
|
27
|
+
velocity_x: Float32Array | null;
|
|
28
|
+
/**
|
|
29
|
+
* @type {Float32Array|null}
|
|
30
|
+
*/
|
|
31
|
+
velocity_y: Float32Array | null;
|
|
32
|
+
/**
|
|
33
|
+
* @type {Float32Array|null}
|
|
34
|
+
*/
|
|
35
|
+
velocity_z: Float32Array | null;
|
|
36
|
+
/**
|
|
37
|
+
* Per-cell solid flag. `0` = fluid, non-zero = solid (wall). Always allocated by
|
|
38
|
+
* {@link build} (zero-filled — every cell defaults to fluid). The solver and every
|
|
39
|
+
* effector read this unconditionally, so the array is part of the field's
|
|
40
|
+
* uniform shape, not an optional add-on.
|
|
41
|
+
* @type {Uint8Array|null}
|
|
42
|
+
*/
|
|
43
|
+
solid: Uint8Array | null;
|
|
44
|
+
/**
|
|
45
|
+
* Per-cell pre-baked neighbourhood mask consumed by the pressure SOR loop.
|
|
46
|
+
* One byte per cell encoding which of the 6 cardinal neighbours are fluid:
|
|
11
47
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
48
|
+
* bit 0 (= 1) : -x neighbour is fluid (in-bounds AND non-solid)
|
|
49
|
+
* bit 1 (= 2) : +x neighbour is fluid
|
|
50
|
+
* bit 2 (= 4) : -y neighbour is fluid
|
|
51
|
+
* bit 3 (= 8) : +y neighbour is fluid
|
|
52
|
+
* bit 4 (= 16) : -z neighbour is fluid
|
|
53
|
+
* bit 5 (= 32) : +z neighbour is fluid
|
|
54
|
+
*
|
|
55
|
+
* Solid cells themselves are encoded as `mask = 0` so the SOR loop's
|
|
56
|
+
* `if (mask === 0) continue` skip handles both "this cell is solid" and
|
|
57
|
+
* "this fluid cell is isolated" with a single comparison instead of one
|
|
58
|
+
* solid-self-check plus six solid-neighbour-checks plus six boundary checks.
|
|
59
|
+
*
|
|
60
|
+
* Computed once by {@link recomputeSolidNeighbourMask} after every solid-mask
|
|
61
|
+
* mutation. The simulator runs that recompute at the top of every project()
|
|
62
|
+
* call so callers never have to remember to invalidate it; the per-step cost
|
|
63
|
+
* is one O(N) byte-pass against the bandwidth-bound SOR sweep that runs many
|
|
64
|
+
* iterations per call.
|
|
65
|
+
*
|
|
66
|
+
* @type {Uint8Array|null}
|
|
14
67
|
*/
|
|
15
|
-
|
|
16
|
-
getAttributeCount(): number;
|
|
68
|
+
solid_neighbour_mask: Uint8Array | null;
|
|
17
69
|
/**
|
|
70
|
+
* Pressure field from the most recent projection. Owned by the field rather than
|
|
71
|
+
* the simulator because the simulator warm-starts each solve from the previous
|
|
72
|
+
* result — step N+1 depends on the value step N wrote here. If this lived on the
|
|
73
|
+
* simulator, replacing the simulator instance between steps would silently degrade
|
|
74
|
+
* convergence at the same iteration count.
|
|
75
|
+
*
|
|
76
|
+
* Storage type is {@link Float32Array} by default, or {@link Float16Array} when
|
|
77
|
+
* {@link half_precision_pressure} is enabled before build — see that field for
|
|
78
|
+
* the bandwidth-vs-quality trade-off.
|
|
18
79
|
*
|
|
19
|
-
*
|
|
20
|
-
* @
|
|
80
|
+
* Safe to read for debug visualisation. Don't mutate.
|
|
81
|
+
* @type {Float32Array|Float16Array|null}
|
|
82
|
+
*/
|
|
83
|
+
pressure: Float32Array | Float16Array | null;
|
|
84
|
+
/**
|
|
85
|
+
* Allocate {@link pressure} as {@link Float16Array} instead of {@link Float32Array}.
|
|
86
|
+
*
|
|
87
|
+
* **Currently slower in V8 — keep `false`.** The intent of this option is to
|
|
88
|
+
* halve the memory bandwidth on the pressure SOR sweep (the simulator's
|
|
89
|
+
* hottest, bandwidth-bound loop). On hardware with F16C the per-cell f16↔f32
|
|
90
|
+
* conversion is ~1 cycle and the bandwidth saving wins. In V8 as of Node 24
|
|
91
|
+
* the conversion path is not yet specialized — each read of `pressure[i]`
|
|
92
|
+
* goes through a slow generic Float16 unboxing routine, and the result is
|
|
93
|
+
* the opposite of what you'd expect: bench at 64³ shows **49% slower** with
|
|
94
|
+
* f16, at 128³ **28% slower** (see `bench: half_precision_pressure on/off`
|
|
95
|
+
* in bench.spec.js). The bandwidth-savings story still holds in principle;
|
|
96
|
+
* it'll likely become a real win once V8 adds inline support for
|
|
97
|
+
* Float16Array access (the typed array landed in Node 24 / TC39 Stage 4 only
|
|
98
|
+
* recently).
|
|
99
|
+
*
|
|
100
|
+
* Cost when it does win: Float16 has ~3 decimal digits of precision. The SOR
|
|
101
|
+
* iterate rounds to f16 on every write, so iteration error can't fall below
|
|
102
|
+
* ~10⁻³ relative. Bench currently shows max|div| within 8% of the f32
|
|
103
|
+
* baseline at 64³ and 128³ — acceptable for visual sim but not for
|
|
104
|
+
* quantitative pressure use.
|
|
105
|
+
*
|
|
106
|
+
* Must be set before {@link build}.
|
|
107
|
+
*
|
|
108
|
+
* The simulator's internal divergence scratch follows this type automatically
|
|
109
|
+
* (re-allocated to match `pressure.constructor` on each project call).
|
|
110
|
+
*
|
|
111
|
+
* @type {boolean}
|
|
112
|
+
*/
|
|
113
|
+
half_precision_pressure: boolean;
|
|
114
|
+
/**
|
|
115
|
+
* Set the grid dimensions in cells. Must be called before {@link build}; throws if
|
|
116
|
+
* the field is already built.
|
|
117
|
+
* @param {number} res_x positive integer
|
|
118
|
+
* @param {number} res_y positive integer
|
|
119
|
+
* @param {number} res_z positive integer
|
|
120
|
+
*/
|
|
121
|
+
setResolution(res_x: number, res_y: number, res_z: number): void;
|
|
122
|
+
/**
|
|
123
|
+
* @return {[number, number, number]} A reference to the internal resolution array.
|
|
124
|
+
* Do not mutate.
|
|
125
|
+
*/
|
|
126
|
+
getResolution(): [number, number, number];
|
|
127
|
+
/**
|
|
128
|
+
* @return {number} `res_x * res_y * res_z`. Zero until {@link setResolution} is
|
|
129
|
+
* called.
|
|
130
|
+
*/
|
|
131
|
+
cellCount(): number;
|
|
132
|
+
/**
|
|
133
|
+
* Register a passive scalar attribute (density, temperature, dye, etc.) that will be
|
|
134
|
+
* advected by the velocity field each step. Idempotent — re-adding an existing name
|
|
135
|
+
* returns the existing index.
|
|
136
|
+
*
|
|
137
|
+
* Must be called before {@link build}.
|
|
138
|
+
*
|
|
139
|
+
* @param {string} name
|
|
140
|
+
* @return {number} index of the attribute (use with {@link setScalarAtIndex})
|
|
141
|
+
*/
|
|
142
|
+
addScalar(name: string): number;
|
|
143
|
+
/**
|
|
144
|
+
* @param {string} name
|
|
145
|
+
* @return {number} index the attribute was registered with, or -1 if not present.
|
|
146
|
+
*/
|
|
147
|
+
scalarIndex(name: string): number;
|
|
148
|
+
/**
|
|
149
|
+
* @param {string} name
|
|
150
|
+
* @return {Float32Array|null} live buffer for the named scalar, or null if not
|
|
151
|
+
* registered.
|
|
152
|
+
*/
|
|
153
|
+
getScalarData(name: string): Float32Array | null;
|
|
154
|
+
/**
|
|
155
|
+
* @return {{ name: string, data: Float32Array }[]} Live reference; do not mutate.
|
|
156
|
+
*/
|
|
157
|
+
getScalarAttributes(): {
|
|
158
|
+
name: string;
|
|
159
|
+
data: Float32Array;
|
|
160
|
+
}[];
|
|
161
|
+
/**
|
|
162
|
+
* Allocate all buffers. Must be called before any read/write. After this point,
|
|
163
|
+
* resolution and attribute set are frozen.
|
|
21
164
|
*/
|
|
22
|
-
attachBuffer(buffer: ArrayBuffer, offset?: number): void;
|
|
23
|
-
setAttributeAt(attribute_index: any, x: any, y: any, z: any, value: any): void;
|
|
24
165
|
build(): void;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
166
|
+
/**
|
|
167
|
+
* Linear cell index for integer grid coordinates.
|
|
168
|
+
* @param {number} x integer in [0, res_x)
|
|
169
|
+
* @param {number} y integer in [0, res_y)
|
|
170
|
+
* @param {number} z integer in [0, res_z)
|
|
171
|
+
* @return {number} flat index `z * res_x * res_y + y * res_x + x`
|
|
172
|
+
*/
|
|
173
|
+
cellIndex(x: number, y: number, z: number): number;
|
|
174
|
+
/**
|
|
175
|
+
* Set the velocity at an integer grid cell.
|
|
176
|
+
* @param {number} x
|
|
177
|
+
* @param {number} y
|
|
178
|
+
* @param {number} z
|
|
179
|
+
* @param {number} vx
|
|
180
|
+
* @param {number} vy
|
|
181
|
+
* @param {number} vz
|
|
182
|
+
*/
|
|
183
|
+
setVelocityAt(x: number, y: number, z: number, vx: number, vy: number, vz: number): void;
|
|
184
|
+
/**
|
|
185
|
+
* Add to the velocity at an integer grid cell (impulse).
|
|
186
|
+
* @param {number} x
|
|
187
|
+
* @param {number} y
|
|
188
|
+
* @param {number} z
|
|
189
|
+
* @param {number} dvx
|
|
190
|
+
* @param {number} dvy
|
|
191
|
+
* @param {number} dvz
|
|
192
|
+
*/
|
|
193
|
+
addVelocityAt(x: number, y: number, z: number, dvx: number, dvy: number, dvz: number): void;
|
|
194
|
+
/**
|
|
195
|
+
* @param {number} attribute_index
|
|
196
|
+
* @param {number} x
|
|
197
|
+
* @param {number} y
|
|
198
|
+
* @param {number} z
|
|
199
|
+
* @param {number} value
|
|
200
|
+
*/
|
|
201
|
+
setScalarAtIndex(attribute_index: number, x: number, y: number, z: number, value: number): void;
|
|
202
|
+
/**
|
|
203
|
+
* Mark a cell as solid (wall) or fluid.
|
|
204
|
+
* @param {number} x
|
|
205
|
+
* @param {number} y
|
|
206
|
+
* @param {number} z
|
|
207
|
+
* @param {boolean} is_solid
|
|
208
|
+
*/
|
|
209
|
+
setSolidAt(x: number, y: number, z: number, is_solid: boolean): void;
|
|
210
|
+
/**
|
|
211
|
+
* @param {number} x
|
|
212
|
+
* @param {number} y
|
|
213
|
+
* @param {number} z
|
|
214
|
+
* @return {boolean} true if the cell is marked solid.
|
|
215
|
+
*/
|
|
216
|
+
isSolidAt(x: number, y: number, z: number): boolean;
|
|
217
|
+
/**
|
|
218
|
+
* Sample velocity at a fractional grid position (positions outside the grid are
|
|
219
|
+
* clamped). Writes into `out` and returns it.
|
|
220
|
+
* @param {Float32Array|number[]} out Length-3 destination.
|
|
221
|
+
* @param {number} x
|
|
222
|
+
* @param {number} y
|
|
223
|
+
* @param {number} z
|
|
224
|
+
* @return {Float32Array|number[]} `out`, for chaining.
|
|
225
|
+
*/
|
|
226
|
+
sampleVelocity(out: Float32Array | number[], x: number, y: number, z: number): Float32Array | number[];
|
|
227
|
+
/**
|
|
228
|
+
* Sample a scalar attribute at a fractional grid position.
|
|
229
|
+
* @param {string} name
|
|
230
|
+
* @param {number} x
|
|
231
|
+
* @param {number} y
|
|
232
|
+
* @param {number} z
|
|
233
|
+
* @return {number} trilinearly-interpolated value at `(x, y, z)`.
|
|
234
|
+
*/
|
|
235
|
+
sampleScalar(name: string, x: number, y: number, z: number): number;
|
|
236
|
+
/**
|
|
237
|
+
* Strict value equality. Two fields are equal iff they have the same resolution,
|
|
238
|
+
* the same set of scalar attributes (matched by name AND index), and the same
|
|
239
|
+
* buffer contents in `velocity_*`, `solid`, `pressure`, and each scalar. Pre-build
|
|
240
|
+
* fields compare by resolution + attribute names only (their buffers are null).
|
|
241
|
+
*
|
|
242
|
+
* O(N) — walks every cell. Use {@link hash} for change-detection on hot paths.
|
|
243
|
+
*
|
|
244
|
+
* @param {FluidField} other
|
|
245
|
+
* @return {boolean}
|
|
246
|
+
*/
|
|
247
|
+
equals(other: FluidField): boolean;
|
|
248
|
+
/**
|
|
249
|
+
* Fast hash suitable for change-detection. Combines the resolution and a *sparse*
|
|
250
|
+
* sample of the velocity_x buffer — {@link sparse_typed_array_hash} only inspects
|
|
251
|
+
* the first ~1024 cells with stride enough to take ~31 samples, regardless of how
|
|
252
|
+
* large the field is. The hash will catch most local edits to the velocity field
|
|
253
|
+
* but is not a content-perfect fingerprint; for that, fall through to
|
|
254
|
+
* {@link equals}.
|
|
255
|
+
*
|
|
256
|
+
* Constant-time relative to grid size in the common case.
|
|
257
|
+
*
|
|
258
|
+
* @return {number}
|
|
259
|
+
*/
|
|
260
|
+
hash(): number;
|
|
261
|
+
/**
|
|
262
|
+
* Rebuild {@link solid_neighbour_mask} from the current {@link solid} buffer.
|
|
263
|
+
*
|
|
264
|
+
* O(N) — one byte-write per cell, six byte-reads per cell. Called by the
|
|
265
|
+
* simulator at the top of each project so callers never have to remember to
|
|
266
|
+
* invalidate the mask after mutating solids; the cost is amortized across the
|
|
267
|
+
* SOR sweep's many iterations.
|
|
268
|
+
*
|
|
269
|
+
* Encoding: see {@link solid_neighbour_mask}.
|
|
270
|
+
*/
|
|
271
|
+
recomputeSolidNeighbourMask(): void;
|
|
272
|
+
/**
|
|
273
|
+
* Translate the field's contents by `(shift_x, shift_y, shift_z)` grid cells —
|
|
274
|
+
* called when the field's world-space origin moves, so the fluid data (anchored
|
|
275
|
+
* to world space) follows. Every owned buffer (velocity_x/y/z, solid, pressure,
|
|
276
|
+
* each scalar attribute) is shifted, then the newly-exposed edges are patched
|
|
277
|
+
* via {@link v3_grid_patch_edges_uniform} (zero-gradient Neumann extrapolation —
|
|
278
|
+
* "the field is locally uniform").
|
|
279
|
+
*
|
|
280
|
+
* Direction convention matches the primitive: positive shift means the grid's
|
|
281
|
+
* world origin moved in that direction, so each cell takes the value previously
|
|
282
|
+
* at its `+shift` neighbour.
|
|
283
|
+
*
|
|
284
|
+
* `(0, 0, 0)` is a no-op; |shift| ≥ res on any axis zero-fills (no valid source
|
|
285
|
+
* left to replicate from). Pre-build fields (buffers null) are no-op'd.
|
|
286
|
+
*
|
|
287
|
+
* The solid mask is NOT migrated — it's cleared. Solids are out of scope for the
|
|
288
|
+
* shift machinery: the contract is that the caller re-voxelizes scene geometry
|
|
289
|
+
* and splats updated solid cells back into the field before the next simulation
|
|
290
|
+
* tick. Migrating the existing mask would either lie about where the walls are
|
|
291
|
+
* (if scene geometry moved) or produce double-bookkeeping problems if the caller
|
|
292
|
+
* also re-voxelizes. Clearing keeps the contract obvious: "between a shift and
|
|
293
|
+
* the next step, the field has no solids until you write them."
|
|
294
|
+
*
|
|
295
|
+
* @param {number} shift_x integer
|
|
296
|
+
* @param {number} shift_y integer
|
|
297
|
+
* @param {number} shift_z integer
|
|
298
|
+
*/
|
|
299
|
+
shift(shift_x: number, shift_y: number, shift_z: number): void;
|
|
300
|
+
/**
|
|
301
|
+
* Zero velocity, pressure, and all scalar attributes. Solid mask is preserved.
|
|
302
|
+
* Pressure is cleared to drop the warm-start (otherwise the next step's solve
|
|
303
|
+
* begins from a stale solution that no longer matches the zero velocity).
|
|
304
|
+
*/
|
|
305
|
+
clear(): void;
|
|
28
306
|
#private;
|
|
29
307
|
}
|
|
30
308
|
//# sourceMappingURL=FluidField.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FluidField.d.ts","sourceRoot":"","sources":["../../../../../src/engine/physics/fluid/FluidField.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FluidField.d.ts","sourceRoot":"","sources":["../../../../../src/engine/physics/fluid/FluidField.js"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;;;;;GAmBG;AACH;IAQI;;;;OAIG;IACH,YAFU,YAAY,GAAC,IAAI,CAET;IAElB;;OAEG;IACH,YAFU,YAAY,GAAC,IAAI,CAET;IAElB;;OAEG;IACH,YAFU,YAAY,GAAC,IAAI,CAET;IAElB;;;;;;OAMG;IACH,OAFU,UAAU,GAAC,IAAI,CAEZ;IAEb;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,sBAFU,UAAU,GAAC,IAAI,CAEG;IAE5B;;;;;;;;;;;;;OAaG;IACH,UAFU,YAAY,kBAAc,IAAI,CAExB;IAEhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,yBAFU,OAAO,CAEe;IAShC;;;;;;OAMG;IACH,qBAJW,MAAM,SACN,MAAM,SACN,MAAM,QAWhB;IAED;;;OAGG;IACH,iBAHY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAKnC;IAED;;;OAGG;IACH,aAHY,MAAM,CAKjB;IAED;;;;;;;;;OASG;IACH,gBAHW,MAAM,GACL,MAAM,CAejB;IAED;;;OAGG;IACH,kBAHW,MAAM,GACL,MAAM,CAIjB;IAED;;;;OAIG;IACH,oBAJW,MAAM,GACL,YAAY,GAAC,IAAI,CAM5B;IAED;;OAEG;IACH,uBAFY;QAAE,MAAM,MAAM,CAAC;QAAC,IAAI,EAAE,YAAY,CAAA;KAAE,EAAE,CAIjD;IAED;;;OAGG;IACH,cAmBC;IAED;;;;;;OAMG;IACH,aALW,MAAM,KACN,MAAM,KACN,MAAM,GACL,MAAM,CAajB;IAED;;;;;;;;OAQG;IACH,iBAPW,MAAM,KACN,MAAM,KACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,QAOhB;IAED;;;;;;;;OAQG;IACH,iBAPW,MAAM,KACN,MAAM,KACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,QAOhB;IAED;;;;;;OAMG;IACH,kCANW,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,SACN,MAAM,QAOhB;IAED;;;;;;OAMG;IACH,cALW,MAAM,KACN,MAAM,KACN,MAAM,YACN,OAAO,QAIjB;IAED;;;;;OAKG;IACH,aALW,MAAM,KACN,MAAM,KACN,MAAM,GACL,OAAO,CAIlB;IAED;;;;;;;;OAQG;IACH,oBANW,YAAY,GAAC,MAAM,EAAE,KACrB,MAAM,KACN,MAAM,KACN,MAAM,GACL,YAAY,GAAC,MAAM,EAAE,CAUhC;IAED;;;;;;;OAOG;IACH,mBANW,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,GACL,MAAM,CAMjB;IAED;;;;;;;;;;OAUG;IACH,cAHW,UAAU,GACT,OAAO,CAqDlB;IAED;;;;;;;;;;;OAWG;IACH,QAFY,MAAM,CAajB;IAED;;;;;;;;;OASG;IACH,oCASC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,eAJW,MAAM,WACN,MAAM,WACN,MAAM,QAyChB;IAED;;;;OAIG;IACH,cASC;;CACJ"}
|