@woosh/meep-engine 2.156.0 → 2.158.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/README.md +1 -3
- package/editor/view/ecs/components/common/AutoCanvasView.js +100 -53
- package/editor/view/ecs/components/common/TextController.js +59 -0
- package/editor/view/node-graph/NodeGraphCamera.js +90 -0
- package/editor/view/node-graph/NodeGraphEditorView.js +121 -22
- package/editor/view/node-graph/NodeGraphSelection.js +89 -0
- package/editor/view/node-graph/NodeGraphView.js +669 -453
- package/editor/view/node-graph/NodeView.js +211 -135
- package/editor/view/node-graph/actions/ConnectionCreateAction.js +53 -0
- package/editor/view/node-graph/actions/ConnectionDeleteAction.js +36 -0
- package/editor/view/node-graph/actions/NodeDeleteAction.js +88 -0
- package/editor/view/node-graph/actions/NodeParameterSetAction.js +52 -0
- package/editor/view/node-graph/actions/NodesMoveAction.js +41 -0
- package/editor/view/node-graph/actions/SelectionSetAction.js +60 -0
- package/editor/view/node-graph/connection_wire_geometry.js +107 -0
- package/package.json +1 -1
- package/samples/generation/SampleGenerator0.js +8 -1
- package/src/core/binary/reinterpret_float32_as_uint32.d.ts +7 -0
- package/src/core/binary/reinterpret_float32_as_uint32.d.ts.map +1 -0
- package/src/core/binary/reinterpret_float32_as_uint32.js +13 -0
- package/src/core/binary/reinterpret_uint32_as_float32.d.ts +7 -0
- package/src/core/binary/reinterpret_uint32_as_float32.d.ts.map +1 -0
- package/src/core/binary/reinterpret_uint32_as_float32.js +14 -0
- package/src/core/bvh2/bvh3/ebvh_build_for_geometry_incremental.d.ts.map +1 -1
- package/src/core/bvh2/bvh3/ebvh_build_for_geometry_incremental.js +1 -3
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_overlaps_sphere.d.ts +12 -0
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_overlaps_sphere.d.ts.map +1 -0
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_overlaps_sphere.js +92 -0
- package/src/core/bvh8/BVH8.d.ts +127 -0
- package/src/core/bvh8/BVH8.d.ts.map +1 -0
- package/src/core/bvh8/BVH8.js +436 -0
- package/src/core/bvh8/NOTES.md +63 -0
- package/src/core/bvh8/build/BVH8Converter.d.ts +59 -0
- package/src/core/bvh8/build/BVH8Converter.d.ts.map +1 -0
- package/src/core/bvh8/build/BVH8Converter.js +588 -0
- package/src/core/bvh8/build/NodeProxy.d.ts +66 -0
- package/src/core/bvh8/build/NodeProxy.d.ts.map +1 -0
- package/src/core/bvh8/build/NodeProxy.js +308 -0
- package/src/core/bvh8/build/TriangleCluster.d.ts +29 -0
- package/src/core/bvh8/build/TriangleCluster.d.ts.map +1 -0
- package/src/core/bvh8/build/TriangleCluster.js +123 -0
- package/src/core/bvh8/build/aabb3_compute_merge_cost.d.ts +8 -0
- package/src/core/bvh8/build/aabb3_compute_merge_cost.d.ts.map +1 -0
- package/src/core/bvh8/build/aabb3_compute_merge_cost.js +29 -0
- package/src/core/bvh8/build/aabb3_from_triangle_by_index.d.ts +10 -0
- package/src/core/bvh8/build/aabb3_from_triangle_by_index.d.ts.map +1 -0
- package/src/core/bvh8/build/aabb3_from_triangle_by_index.js +18 -0
- package/src/core/bvh8/build/bvh8_build_for_geometry.d.ts +10 -0
- package/src/core/bvh8/build/bvh8_build_for_geometry.d.ts.map +1 -0
- package/src/core/bvh8/build/bvh8_build_for_geometry.js +303 -0
- package/src/core/bvh8/build/bvh8_from_proxy.d.ts +9 -0
- package/src/core/bvh8/build/bvh8_from_proxy.d.ts.map +1 -0
- package/src/core/bvh8/build/bvh8_from_proxy.js +256 -0
- package/src/core/bvh8/build/byte.d.ts +7 -0
- package/src/core/bvh8/build/byte.d.ts.map +1 -0
- package/src/core/bvh8/build/byte.js +10 -0
- package/src/core/bvh8/build/encode_bounds_e.d.ts +9 -0
- package/src/core/bvh8/build/encode_bounds_e.d.ts.map +1 -0
- package/src/core/bvh8/build/encode_bounds_e.js +12 -0
- package/src/core/bvh8/bvh8_convert_to_dot.d.ts +11 -0
- package/src/core/bvh8/bvh8_convert_to_dot.d.ts.map +1 -0
- package/src/core/bvh8/bvh8_convert_to_dot.js +133 -0
- package/src/core/bvh8/bvh8_count_primitives.d.ts +22 -0
- package/src/core/bvh8/bvh8_count_primitives.d.ts.map +1 -0
- package/src/core/bvh8/bvh8_count_primitives.js +98 -0
- package/src/core/bvh8/bvh8_geometry_validate.d.ts +16 -0
- package/src/core/bvh8/bvh8_geometry_validate.d.ts.map +1 -0
- package/src/core/bvh8/bvh8_geometry_validate.js +149 -0
- package/src/core/bvh8/bvh8_geometry_validate_indirect.d.ts +16 -0
- package/src/core/bvh8/bvh8_geometry_validate_indirect.d.ts.map +1 -0
- package/src/core/bvh8/bvh8_geometry_validate_indirect.js +177 -0
- package/src/core/bvh8/bvh8_get_node_bounds.d.ts +9 -0
- package/src/core/bvh8/bvh8_get_node_bounds.d.ts.map +1 -0
- package/src/core/bvh8/bvh8_get_node_bounds.js +35 -0
- package/src/core/bvh8/bvh8_get_node_child_bounds.d.ts +10 -0
- package/src/core/bvh8/bvh8_get_node_child_bounds.d.ts.map +1 -0
- package/src/core/bvh8/bvh8_get_node_child_bounds.js +53 -0
- package/src/core/bvh8/bvh8_node_child_surface_area.d.ts +9 -0
- package/src/core/bvh8/bvh8_node_child_surface_area.d.ts.map +1 -0
- package/src/core/bvh8/bvh8_node_child_surface_area.js +18 -0
- package/src/core/bvh8/bvh8_node_count_triangles.d.ts +8 -0
- package/src/core/bvh8/bvh8_node_count_triangles.d.ts.map +1 -0
- package/src/core/bvh8/bvh8_node_count_triangles.js +28 -0
- package/src/core/bvh8/bvh8_quality.d.ts +8 -0
- package/src/core/bvh8/bvh8_quality.d.ts.map +1 -0
- package/src/core/bvh8/bvh8_quality.js +73 -0
- package/src/core/bvh8/bvh8_validate_structure.d.ts +15 -0
- package/src/core/bvh8/bvh8_validate_structure.d.ts.map +1 -0
- package/src/core/bvh8/bvh8_validate_structure.js +87 -0
- package/src/core/collection/Uint32MinHeap.d.ts +56 -0
- package/src/core/collection/Uint32MinHeap.d.ts.map +1 -0
- package/src/core/collection/Uint32MinHeap.js +109 -0
- package/src/core/collection/list/FilteredListProjection.js +1 -1
- package/src/{engine/physics/island → core/collection/union-find}/union_find.d.ts +8 -5
- package/src/core/collection/union-find/union_find.d.ts.map +1 -0
- package/src/{engine/physics/island → core/collection/union-find}/union_find.js +8 -5
- package/src/core/dom/isImageBitmap.d.ts +7 -0
- package/src/core/dom/isImageBitmap.d.ts.map +1 -0
- package/src/core/dom/isImageBitmap.js +12 -0
- package/src/core/function/frameThrottle.d.ts +8 -0
- package/src/core/function/frameThrottle.d.ts.map +1 -0
- package/src/core/function/frameThrottle.js +23 -0
- package/src/{engine/physics/narrowphase/clip_against_axis_uv.d.ts → core/geom/2d/polygon/polygon2_clip_axis_halfplane.d.ts} +3 -3
- package/src/core/geom/2d/polygon/polygon2_clip_axis_halfplane.d.ts.map +1 -0
- package/src/{engine/physics/narrowphase/clip_against_axis_uv.js → core/geom/2d/polygon/polygon2_clip_axis_halfplane.js} +51 -51
- package/src/{engine/physics/narrowphase/decomposition/aabb_world_to_local.d.ts → core/geom/3d/aabb/aabb3_transform_oriented_inverse.d.ts} +9 -7
- package/src/core/geom/3d/aabb/aabb3_transform_oriented_inverse.d.ts.map +1 -0
- package/src/{engine/physics/narrowphase/decomposition/aabb_world_to_local.js → core/geom/3d/aabb/aabb3_transform_oriented_inverse.js} +9 -7
- package/src/core/geom/3d/aabb/compute_triangle_group_aabb3.d.ts +12 -0
- package/src/core/geom/3d/aabb/compute_triangle_group_aabb3.d.ts.map +1 -0
- package/src/core/geom/3d/aabb/compute_triangle_group_aabb3.js +46 -0
- package/src/core/geom/3d/box/box3_projected_half_extent.d.ts +28 -0
- package/src/core/geom/3d/box/box3_projected_half_extent.d.ts.map +1 -0
- package/src/core/geom/3d/box/box3_projected_half_extent.js +35 -0
- package/src/core/geom/3d/frustum/read_cluster_frustum_corners.js +1 -1
- package/src/core/geom/3d/frustum/read_frustum_corner.d.ts +9 -0
- package/src/core/geom/3d/frustum/read_frustum_corner.d.ts.map +1 -0
- package/src/core/geom/3d/frustum/read_frustum_corner.js +14 -0
- package/src/core/geom/3d/gjk/gjk.d.ts.map +1 -0
- package/src/{engine/physics → core/geom/3d}/gjk/gjk.js +430 -372
- package/src/{engine/physics → core/geom/3d}/gjk/gjk_epa_penetration.d.ts +8 -5
- package/src/core/geom/3d/gjk/gjk_epa_penetration.d.ts.map +1 -0
- package/src/{engine/physics → core/geom/3d}/gjk/gjk_epa_penetration.js +520 -544
- package/src/{engine/physics → core/geom/3d}/gjk/minkowski_support.d.ts +5 -4
- package/src/core/geom/3d/gjk/minkowski_support.d.ts.map +1 -0
- package/src/{engine/physics → core/geom/3d}/gjk/minkowski_support.js +71 -70
- package/src/{engine/physics → core/geom/3d}/gjk/mpr.d.ts +3 -3
- package/src/core/geom/3d/gjk/mpr.d.ts.map +1 -0
- package/src/{engine/physics → core/geom/3d}/gjk/mpr.js +368 -362
- package/src/{engine/physics/integration/quat_integrate.d.ts → core/geom/3d/quaternion/quat3_integrate.d.ts} +2 -2
- package/src/core/geom/3d/quaternion/quat3_integrate.d.ts.map +1 -0
- package/src/{engine/physics/integration/quat_integrate.js → core/geom/3d/quaternion/quat3_integrate.js} +1 -1
- package/src/{engine/physics/narrowphase/PosedShape.d.ts → core/geom/3d/shape/PosedShape3D.d.ts} +26 -8
- package/src/core/geom/3d/shape/PosedShape3D.d.ts.map +1 -0
- package/src/{engine/physics/narrowphase/PosedShape.js → core/geom/3d/shape/PosedShape3D.js} +60 -9
- package/src/core/geom/3d/shape/TransformedShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/TransformedShape3D.js +15 -11
- package/src/core/geom/vec3/v3_quat3_apply_inverse.d.ts +1 -1
- package/src/core/geom/vec3/v3_quat3_apply_inverse.js +1 -1
- package/src/core/math/complex/complex_add.d.ts +1 -1
- package/src/core/math/complex/complex_add.d.ts.map +1 -1
- package/src/core/math/complex/complex_add.js +12 -3
- package/src/core/math/complex/complex_div.d.ts +1 -1
- package/src/core/math/complex/complex_div.d.ts.map +1 -1
- package/src/core/math/complex/complex_div.js +11 -4
- package/src/core/math/complex/complex_mul.d.ts +1 -1
- package/src/core/math/complex/complex_mul.d.ts.map +1 -1
- package/src/core/math/complex/complex_mul.js +10 -3
- package/src/core/math/complex/complex_sub.d.ts +1 -1
- package/src/core/math/complex/complex_sub.d.ts.map +1 -1
- package/src/core/math/complex/complex_sub.js +12 -3
- package/src/{engine/physics/fluid/solver/optimal_sor_omega.d.ts → core/math/linalg/sor_optimal_omega.d.ts} +4 -3
- package/src/core/math/linalg/sor_optimal_omega.d.ts.map +1 -0
- package/src/{engine/physics/fluid/solver/optimal_sor_omega.js → core/math/linalg/sor_optimal_omega.js} +4 -3
- package/src/core/math/lookup/ParameterLookupTable.d.ts +123 -0
- package/src/core/math/lookup/ParameterLookupTable.d.ts.map +1 -0
- package/src/core/math/lookup/ParameterLookupTable.js +495 -0
- package/src/core/math/lookup/ParameterLookupTableFlags.d.ts +5 -0
- package/src/core/math/lookup/ParameterLookupTableFlags.d.ts.map +1 -0
- package/src/core/math/lookup/ParameterLookupTableFlags.js +6 -0
- package/src/core/math/physics/kinematics/computeInterceptPoint.d.ts.map +1 -0
- package/src/{engine/physics → core/math/physics/kinematics}/computeInterceptPoint.js +79 -79
- package/src/core/math/physics/mie/ri_air.d.ts.map +1 -1
- package/src/core/math/physics/mie/ri_air.js +1 -3
- package/src/core/math/physics/mie/ri_ammonium_sulfate.d.ts.map +1 -1
- package/src/core/math/physics/mie/ri_ammonium_sulfate.js +1 -3
- package/src/core/math/physics/mie/ri_brine.d.ts.map +1 -1
- package/src/core/math/physics/mie/ri_brine.js +1 -3
- package/src/core/math/physics/mie/ri_dust.d.ts.map +1 -1
- package/src/core/math/physics/mie/ri_dust.js +1 -3
- package/src/core/math/physics/mie/ri_pollen.d.ts.map +1 -1
- package/src/core/math/physics/mie/ri_pollen.js +1 -3
- package/src/core/math/physics/mie/ri_smoke.d.ts.map +1 -1
- package/src/core/math/physics/mie/ri_smoke.js +1 -3
- package/src/core/math/physics/mie/ri_soot.d.ts.map +1 -1
- package/src/core/math/physics/mie/ri_soot.js +1 -3
- package/src/core/math/physics/mie/ri_water.d.ts.map +1 -1
- package/src/core/math/physics/mie/ri_water.js +1 -3
- package/src/core/math/random/random_pick_weighted_index.d.ts +10 -0
- package/src/core/math/random/random_pick_weighted_index.d.ts.map +1 -0
- package/src/core/math/random/random_pick_weighted_index.js +26 -0
- package/src/core/model/node-graph/NodeGraph.d.ts +9 -0
- package/src/core/model/node-graph/NodeGraph.d.ts.map +1 -1
- package/src/core/model/node-graph/NodeGraph.js +38 -0
- package/src/core/model/node-graph/visual/NodeGraphVisualData.d.ts +23 -0
- package/src/core/model/node-graph/visual/NodeGraphVisualData.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/NodeGraphVisualData.js +54 -0
- package/src/core/path/convertPathToURL.d.ts +9 -0
- package/src/core/path/convertPathToURL.d.ts.map +1 -0
- package/src/core/path/convertPathToURL.js +107 -0
- package/src/core/process/worker/WorkerBuilder.js +1 -1
- package/src/core/process/worker/extractTransferables.js +1 -1
- package/src/engine/animation/curve/draw/build_tangent_editor.d.ts.map +1 -1
- package/src/engine/animation/curve/draw/build_tangent_editor.js +8 -1
- package/src/engine/animation/curve/editor/createKeyframeDraggableAspect.d.ts.map +1 -1
- package/src/engine/animation/curve/editor/createKeyframeDraggableAspect.js +11 -5
- package/src/engine/asset/Asset.d.ts.map +1 -1
- package/src/engine/asset/Asset.js +16 -6
- package/src/engine/asset/AssetManager.d.ts +61 -52
- package/src/engine/asset/AssetManager.d.ts.map +1 -1
- package/src/engine/asset/AssetManager.js +1411 -1045
- package/src/engine/asset/AssetRequest.d.ts +1 -1
- package/src/engine/asset/AssetRequest.d.ts.map +1 -1
- package/src/engine/asset/AssetRequest.js +1 -1
- package/src/engine/asset/AssetRequestScope.d.ts.map +1 -1
- package/src/engine/asset/AssetRequestScope.js +7 -0
- package/src/engine/asset/PendingAsset.d.ts +32 -1
- package/src/engine/asset/PendingAsset.d.ts.map +1 -1
- package/src/engine/asset/PendingAsset.js +108 -61
- package/src/engine/asset/loaders/ArrayBufferLoader.js +2 -2
- package/src/engine/asset/loaders/AssetLoader.d.ts.map +1 -1
- package/src/engine/asset/loaders/AssetLoader.js +19 -2
- package/src/engine/asset/loaders/GLTFAssetLoader.d.ts.map +1 -1
- package/src/engine/asset/loaders/GLTFAssetLoader.js +123 -114
- package/src/engine/asset/loaders/JavascriptAssetLoader.d.ts +1 -1
- package/src/engine/asset/loaders/JavascriptAssetLoader.d.ts.map +1 -1
- package/src/engine/asset/loaders/JavascriptAssetLoader.js +31 -47
- package/src/engine/asset/loaders/JsonAssetLoader.js +1 -1
- package/src/engine/asset/loaders/SVGAssetLoader.js +2 -2
- package/src/engine/asset/loaders/SoundAssetLoader.js +1 -1
- package/src/engine/asset/loaders/TextAssetLoader.js +2 -2
- package/src/{core → engine/asset/loaders}/font/FontAsset.d.ts +1 -1
- package/src/engine/asset/loaders/font/FontAsset.d.ts.map +1 -0
- package/src/{core → engine/asset/loaders}/font/FontAsset.js +21 -21
- package/src/{core → engine/asset/loaders}/font/FontAssetLoader.d.ts +1 -1
- package/src/engine/asset/loaders/font/FontAssetLoader.d.ts.map +1 -0
- package/src/{core → engine/asset/loaders}/font/FontAssetLoader.js +20 -20
- package/src/engine/asset/loaders/image/ImageRGBADataLoader.d.ts +1 -1
- package/src/engine/asset/loaders/image/ImageRGBADataLoader.d.ts.map +1 -1
- package/src/engine/asset/loaders/image/ImageRGBADataLoader.js +11 -20
- package/src/engine/asset/loaders/texture/TextureAssetLoader.d.ts.map +1 -1
- package/src/engine/asset/loaders/texture/TextureAssetLoader.js +8 -2
- package/src/engine/asset/preloader/AssetPreloader.js +1 -1
- package/src/engine/ecs/sockets/serialization/AttachmentSocketsAssetLoader.d.ts +1 -1
- package/src/engine/ecs/sockets/serialization/AttachmentSocketsAssetLoader.d.ts.map +1 -1
- package/src/engine/ecs/sockets/serialization/AttachmentSocketsAssetLoader.js +19 -22
- package/src/engine/graphics/FrameThrottle.d.ts +1 -7
- package/src/engine/graphics/FrameThrottle.d.ts.map +1 -1
- package/src/engine/graphics/FrameThrottle.js +2 -24
- package/src/{core/geom/3d/shape/util → engine/graphics/debug}/shape_to_visual_entity.d.ts +1 -1
- package/src/engine/graphics/debug/shape_to_visual_entity.d.ts.map +1 -0
- package/src/{core/geom/3d/shape/util → engine/graphics/debug}/shape_to_visual_entity.js +159 -159
- package/src/{core/geom/3d/tetrahedra → engine/graphics/debug}/visualize_tetrahedral_mesh.d.ts +1 -1
- package/src/engine/graphics/debug/visualize_tetrahedral_mesh.d.ts.map +1 -0
- package/src/{core/geom/3d/tetrahedra → engine/graphics/debug}/visualize_tetrahedral_mesh.js +46 -46
- package/src/engine/graphics/ecs/animation/animator/graph/definition/serialization/AnimationGraphDefinitionAssetLoader.d.ts +1 -1
- package/src/engine/graphics/ecs/animation/animator/graph/definition/serialization/AnimationGraphDefinitionAssetLoader.d.ts.map +1 -1
- package/src/engine/graphics/ecs/animation/animator/graph/definition/serialization/AnimationGraphDefinitionAssetLoader.js +22 -32
- package/src/engine/graphics/ecs/trail2d/Trail2D.d.ts.map +1 -1
- package/src/engine/graphics/ecs/trail2d/Trail2D.js +21 -0
- package/src/engine/graphics/ecs/trail2d/Trail2DFlags.d.ts +1 -0
- package/src/engine/graphics/ecs/trail2d/Trail2DFlags.js +9 -1
- package/src/engine/graphics/particles/particular/engine/emitter/serde/ParameterLookupTableSerializationAdapter.d.ts.map +1 -1
- package/src/engine/graphics/particles/particular/engine/emitter/serde/ParameterLookupTableSerializationAdapter.js +2 -76
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTable.d.ts.map +1 -1
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTable.js +2 -427
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTableFlags.d.ts +1 -4
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTableFlags.d.ts.map +1 -1
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTableFlags.js +2 -6
- package/src/engine/graphics/particles/particular/engine/utils/volume/prototypeParticleVolume.js +1 -1
- package/src/engine/graphics/render/forward_plus/read_frustum_corner.d.ts +1 -8
- package/src/engine/graphics/render/forward_plus/read_frustum_corner.d.ts.map +1 -1
- package/src/engine/graphics/render/forward_plus/read_frustum_corner.js +2 -14
- package/src/engine/graphics/sh3/path_tracer/geometry/compute_triangle_group_aabb3.d.ts +1 -11
- package/src/engine/graphics/sh3/path_tracer/geometry/compute_triangle_group_aabb3.d.ts.map +1 -1
- package/src/engine/graphics/sh3/path_tracer/geometry/compute_triangle_group_aabb3.js +2 -46
- package/src/engine/graphics/sh3/prototypeSH3Probe.js +1 -1
- package/src/engine/graphics/texture/3d/scs3d_sample_linear3.d.ts +27 -0
- package/src/engine/graphics/texture/3d/scs3d_sample_linear3.d.ts.map +1 -0
- package/src/engine/graphics/texture/3d/scs3d_sample_linear3.js +81 -0
- package/src/engine/graphics/texture/isImageBitmap.d.ts +1 -6
- package/src/engine/graphics/texture/isImageBitmap.d.ts.map +1 -1
- package/src/engine/graphics/texture/isImageBitmap.js +2 -12
- package/src/{core/process/action → engine/intelligence/behavior/util}/AsynchronousDelayAction.d.ts +2 -2
- package/src/engine/intelligence/behavior/util/AsynchronousDelayAction.d.ts.map +1 -0
- package/src/{core/process/action → engine/intelligence/behavior/util}/AsynchronousDelayAction.js +55 -55
- package/src/engine/network/NetworkSession.d.ts +12 -1
- package/src/engine/network/NetworkSession.d.ts.map +1 -1
- package/src/engine/network/NetworkSession.js +52 -1
- package/src/engine/network/README.md +45 -0
- package/src/engine/network/convertPathToURL.d.ts +1 -8
- package/src/engine/network/convertPathToURL.d.ts.map +1 -1
- package/src/engine/network/convertPathToURL.js +2 -107
- package/src/engine/network/core/quantize/quantize_float.d.ts.map +1 -1
- package/src/engine/network/core/quantize/quantize_float.js +7 -0
- package/src/engine/network/core/quantize/quantize_position.d.ts.map +1 -1
- package/src/engine/network/core/quantize/quantize_position.js +12 -1
- package/src/engine/network/orchestrator/NetworkPeer.d.ts.map +1 -1
- package/src/engine/network/orchestrator/NetworkPeer.js +15 -1
- package/src/engine/network/replication/Replicator.d.ts +8 -0
- package/src/engine/network/replication/Replicator.d.ts.map +1 -1
- package/src/engine/network/replication/Replicator.js +48 -0
- package/src/engine/network/transport/Channel.d.ts.map +1 -1
- package/src/engine/network/transport/Channel.js +46 -12
- package/src/engine/network/transport/ReliableCommandPipeline.d.ts +16 -0
- package/src/engine/network/transport/ReliableCommandPipeline.d.ts.map +1 -1
- package/src/engine/network/transport/ReliableCommandPipeline.js +29 -0
- package/src/engine/network/transport/adapters/NodeUDPTransport.d.ts.map +1 -1
- package/src/engine/network/transport/adapters/NodeUDPTransport.js +7 -1
- package/src/engine/network/transport/fragments/packet_size.d.ts +5 -5
- package/src/engine/network/transport/fragments/packet_size.d.ts.map +1 -1
- package/src/engine/network/transport/fragments/packet_size.js +5 -5
- package/src/engine/physics/BULLET_REVIEW.md +1 -1
- package/src/engine/physics/JOLT_REVIEW.md +2 -2
- package/src/engine/physics/PLAN.md +1094 -945
- package/src/engine/physics/RAPIER_REVIEW.md +2 -2
- package/src/engine/physics/body/BodyStorage.d.ts +2 -12
- package/src/engine/physics/body/BodyStorage.d.ts.map +1 -1
- package/src/engine/physics/body/BodyStorage.js +406 -452
- package/src/engine/physics/body/SolverBodyState.d.ts.map +1 -1
- package/src/engine/physics/body/SolverBodyState.js +12 -3
- package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts +28 -3
- package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts.map +1 -1
- package/src/engine/physics/broadphase/compute_fat_world_aabb.js +60 -24
- package/src/engine/physics/broadphase/generate_pairs.d.ts +9 -5
- package/src/engine/physics/broadphase/generate_pairs.d.ts.map +1 -1
- package/src/engine/physics/broadphase/generate_pairs.js +52 -37
- package/src/engine/physics/ccd/linear_sweep.d.ts +15 -5
- package/src/engine/physics/ccd/linear_sweep.d.ts.map +1 -1
- package/src/engine/physics/ccd/linear_sweep.js +122 -40
- package/src/engine/physics/constraint/solve_constraints.d.ts.map +1 -1
- package/src/engine/physics/constraint/solve_constraints.js +830 -805
- package/src/engine/physics/contact/ManifoldStore.d.ts +91 -16
- package/src/engine/physics/contact/ManifoldStore.d.ts.map +1 -1
- package/src/engine/physics/contact/ManifoldStore.js +204 -60
- package/src/engine/physics/ecs/BodyKind.d.ts +7 -3
- package/src/engine/physics/ecs/BodyKind.d.ts.map +1 -1
- package/src/engine/physics/ecs/BodyKind.js +29 -25
- package/src/engine/physics/ecs/Collider.d.ts +7 -0
- package/src/engine/physics/ecs/Collider.d.ts.map +1 -1
- package/src/engine/physics/ecs/Collider.js +7 -0
- package/src/engine/physics/ecs/ColliderSerializationAdapter.js +1 -1
- package/src/engine/physics/ecs/PhysicsSystem.d.ts +110 -6
- package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
- package/src/engine/physics/ecs/PhysicsSystem.js +467 -45
- package/src/engine/physics/ecs/RigidBody.d.ts +20 -5
- package/src/engine/physics/ecs/RigidBody.d.ts.map +1 -1
- package/src/engine/physics/ecs/RigidBody.js +307 -286
- package/src/engine/physics/ecs/RigidBodyFlags.d.ts +6 -3
- package/src/engine/physics/ecs/RigidBodyFlags.d.ts.map +1 -1
- package/src/engine/physics/ecs/RigidBodyFlags.js +31 -28
- package/src/engine/physics/ecs/RigidBodySerializationAdapter.d.ts +12 -4
- package/src/engine/physics/ecs/RigidBodySerializationAdapter.d.ts.map +1 -1
- package/src/engine/physics/ecs/RigidBodySerializationAdapter.js +19 -5
- package/src/engine/physics/ecs/RigidBodySerializationUpgrader_0_1.d.ts +10 -0
- package/src/engine/physics/ecs/RigidBodySerializationUpgrader_0_1.d.ts.map +1 -0
- package/src/engine/physics/ecs/RigidBodySerializationUpgrader_0_1.js +37 -0
- package/src/engine/physics/ecs/find_non_finite_physics_state.d.ts +28 -0
- package/src/engine/physics/ecs/find_non_finite_physics_state.d.ts.map +1 -0
- package/src/engine/physics/ecs/find_non_finite_physics_state.js +76 -0
- package/src/engine/physics/events/ContactEventBuffer.d.ts +11 -0
- package/src/engine/physics/events/ContactEventBuffer.d.ts.map +1 -1
- package/src/engine/physics/events/ContactEventBuffer.js +40 -0
- package/src/engine/physics/events/diff_manifolds.d.ts +30 -13
- package/src/engine/physics/events/diff_manifolds.d.ts.map +1 -1
- package/src/engine/physics/events/diff_manifolds.js +87 -50
- package/src/engine/physics/fluid/FluidField.d.ts +98 -26
- package/src/engine/physics/fluid/FluidField.d.ts.map +1 -1
- package/src/engine/physics/fluid/FluidField.js +684 -570
- package/src/engine/physics/fluid/FluidSimulator.d.ts +157 -6
- package/src/engine/physics/fluid/FluidSimulator.d.ts.map +1 -1
- package/src/engine/physics/fluid/FluidSimulator.js +450 -83
- package/src/engine/physics/fluid/REVIEW_02_PLAN.md +243 -0
- package/src/engine/physics/fluid/ecs/FluidComponent.d.ts +4 -3
- package/src/engine/physics/fluid/ecs/FluidComponent.d.ts.map +1 -1
- package/src/engine/physics/fluid/ecs/FluidComponent.js +4 -3
- package/src/engine/physics/fluid/ecs/FluidObstacle.d.ts +72 -0
- package/src/engine/physics/fluid/ecs/FluidObstacle.d.ts.map +1 -0
- package/src/engine/physics/fluid/ecs/FluidObstacle.js +97 -0
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +117 -0
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts.map +1 -0
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.js +348 -0
- package/src/engine/physics/fluid/ecs/FluidSystem.d.ts +3 -3
- package/src/engine/physics/fluid/effector/GlobalFluidEffector.d.ts +62 -12
- package/src/engine/physics/fluid/effector/GlobalFluidEffector.d.ts.map +1 -1
- package/src/engine/physics/fluid/effector/GlobalFluidEffector.js +135 -38
- package/src/engine/physics/fluid/effector/ImpulseFluidEffector.d.ts.map +1 -1
- package/src/engine/physics/fluid/effector/ImpulseFluidEffector.js +85 -38
- package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts +27 -8
- package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts.map +1 -1
- package/src/engine/physics/fluid/effector/WakeFluidEffector.js +171 -68
- package/src/engine/physics/fluid/prototype.js +25 -1
- package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_scalar.d.ts +42 -0
- package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_scalar.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_scalar.js +136 -0
- package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.d.ts +37 -0
- package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.js +169 -0
- package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.d.ts +36 -0
- package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.js +100 -0
- package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.d.ts +6 -0
- 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 +6 -0
- package/src/engine/physics/fluid/solver/v3_grid_apply_diffusion.d.ts +7 -2
- 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 +17 -12
- package/src/engine/physics/fluid/solver/v3_grid_apply_vorticity_confinement.d.ts +42 -0
- package/src/engine/physics/fluid/solver/v3_grid_apply_vorticity_confinement.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_apply_vorticity_confinement.js +131 -0
- package/src/engine/physics/fluid/solver/v3_grid_compute_solid_neighbour_mask.d.ts +32 -22
- package/src/engine/physics/fluid/solver/v3_grid_compute_solid_neighbour_mask.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_grid_compute_solid_neighbour_mask.js +43 -26
- package/src/engine/physics/fluid/solver/v3_grid_patch_edges_constant.d.ts +31 -0
- package/src/engine/physics/fluid/solver/v3_grid_patch_edges_constant.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_patch_edges_constant.js +77 -0
- package/src/engine/physics/fluid/solver/v3_grid_sample_scalar_masked.d.ts +30 -0
- package/src/engine/physics/fluid/solver/v3_grid_sample_scalar_masked.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_sample_scalar_masked.js +92 -0
- package/src/engine/physics/fluid/solver/v3_grid_solve_pressure.d.ts +26 -19
- package/src/engine/physics/fluid/solver/v3_grid_solve_pressure.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_grid_solve_pressure.js +46 -42
- package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_pcg.d.ts +38 -10
- package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_pcg.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_pcg.js +158 -75
- package/src/engine/physics/fluid/solver/v3_grid_subtract_pressure_gradient.d.ts +22 -17
- package/src/engine/physics/fluid/solver/v3_grid_subtract_pressure_gradient.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_grid_subtract_pressure_gradient.js +108 -96
- package/src/engine/physics/fluid/solver/v3_mac_advect_maccormack_velocity.d.ts +42 -0
- package/src/engine/physics/fluid/solver/v3_mac_advect_maccormack_velocity.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_mac_advect_maccormack_velocity.js +319 -0
- package/src/engine/physics/fluid/solver/v3_mac_advect_scalar.d.ts +53 -0
- package/src/engine/physics/fluid/solver/v3_mac_advect_scalar.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_mac_advect_scalar.js +236 -0
- package/src/engine/physics/fluid/solver/v3_mac_advect_sl_velocity.d.ts +46 -0
- package/src/engine/physics/fluid/solver/v3_mac_advect_sl_velocity.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_mac_advect_sl_velocity.js +217 -0
- package/src/engine/physics/fluid/solver/v3_mac_apply_vorticity_confinement.d.ts +40 -0
- package/src/engine/physics/fluid/solver/v3_mac_apply_vorticity_confinement.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_mac_apply_vorticity_confinement.js +165 -0
- package/src/engine/physics/fluid/solver/v3_mac_clip_trace.d.ts +44 -0
- package/src/engine/physics/fluid/solver/v3_mac_clip_trace.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_mac_clip_trace.js +95 -0
- package/src/engine/physics/fluid/solver/v3_mac_compute_divergence.d.ts +38 -0
- package/src/engine/physics/fluid/solver/v3_mac_compute_divergence.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_mac_compute_divergence.js +77 -0
- package/src/engine/physics/fluid/solver/v3_mac_compute_face_solid.d.ts +52 -0
- package/src/engine/physics/fluid/solver/v3_mac_compute_face_solid.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_mac_compute_face_solid.js +131 -0
- package/src/engine/physics/fluid/solver/v3_mac_subtract_pressure_gradient.d.ts +38 -0
- package/src/engine/physics/fluid/solver/v3_mac_subtract_pressure_gradient.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_mac_subtract_pressure_gradient.js +104 -0
- package/src/engine/physics/inertia/world_inverse_inertia.d.ts +30 -1
- package/src/engine/physics/inertia/world_inverse_inertia.d.ts.map +1 -1
- package/src/engine/physics/inertia/world_inverse_inertia.js +160 -116
- package/src/engine/physics/integration/integrate_position.js +97 -97
- package/src/engine/physics/island/IslandBuilder.d.ts +49 -8
- package/src/engine/physics/island/IslandBuilder.d.ts.map +1 -1
- package/src/engine/physics/island/IslandBuilder.js +93 -14
- package/src/engine/physics/narrowphase/box_box_manifold.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/box_box_manifold.js +683 -673
- package/src/engine/physics/narrowphase/box_triangle_contact.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/box_triangle_contact.js +899 -749
- package/src/engine/physics/narrowphase/capsule_contacts.d.ts +27 -0
- package/src/engine/physics/narrowphase/capsule_contacts.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/capsule_contacts.js +624 -459
- package/src/engine/physics/narrowphase/capsule_triangle_contact.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/capsule_triangle_contact.js +58 -38
- package/src/engine/physics/narrowphase/compute_penetration.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/compute_penetration.js +369 -325
- package/src/engine/physics/narrowphase/convex_convex_manifold.d.ts +3 -1
- package/src/engine/physics/narrowphase/convex_convex_manifold.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/convex_convex_manifold.js +568 -422
- package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.d.ts +6 -3
- package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.js +66 -10
- package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.d.ts +4 -1
- package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.js +97 -94
- package/src/engine/physics/narrowphase/mesh_mesh_tet_manifold.js +117 -117
- package/src/engine/physics/narrowphase/narrowphase_step.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/narrowphase_step.js +1738 -1739
- package/src/engine/physics/narrowphase/reduce_manifold_contacts.d.ts +14 -7
- package/src/engine/physics/narrowphase/reduce_manifold_contacts.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/reduce_manifold_contacts.js +74 -69
- package/src/engine/physics/persistence/solver_caches.d.ts +20 -0
- package/src/engine/physics/persistence/solver_caches.d.ts.map +1 -0
- package/src/engine/physics/persistence/solver_caches.js +309 -0
- package/src/engine/physics/queries/overlap_shape.d.ts.map +1 -1
- package/src/engine/physics/queries/overlap_shape.js +187 -184
- package/src/engine/physics/queries/raycast.d.ts +3 -2
- package/src/engine/physics/queries/raycast.d.ts.map +1 -1
- package/src/engine/physics/queries/raycast.js +37 -11
- package/src/engine/physics/queries/shape_cast.d.ts +18 -5
- package/src/engine/physics/queries/shape_cast.d.ts.map +1 -1
- package/src/engine/physics/queries/shape_cast.js +417 -393
- package/src/engine/physics/solver/solve_contacts.d.ts +22 -6
- package/src/engine/physics/solver/solve_contacts.d.ts.map +1 -1
- package/src/engine/physics/solver/solve_contacts.js +1482 -1338
- package/src/engine/physics/vehicle/RaycastVehicle.d.ts.map +1 -1
- package/src/engine/physics/vehicle/RaycastVehicle.js +344 -339
- package/src/engine/ui/DraggableAspect.d.ts +12 -3
- package/src/engine/ui/DraggableAspect.d.ts.map +1 -1
- package/src/engine/ui/DraggableAspect.js +115 -83
- package/src/generation/COORDINATES.md +54 -0
- package/src/generation/GridTaskGroup.js +2 -2
- package/src/generation/REVIEW_01_ACTION_PLAN.md +628 -0
- package/src/generation/automata/CaveGeneratorCellularAutomata.d.ts +9 -1
- package/src/generation/automata/CaveGeneratorCellularAutomata.d.ts.map +1 -1
- package/src/generation/automata/CaveGeneratorCellularAutomata.js +79 -59
- package/src/generation/automata/CellularAutomata.d.ts +6 -3
- package/src/generation/automata/CellularAutomata.d.ts.map +1 -1
- package/src/generation/automata/CellularAutomata.js +22 -19
- package/src/generation/filtering/CellFilter.d.ts +17 -0
- package/src/generation/filtering/CellFilter.d.ts.map +1 -1
- package/src/generation/filtering/CellFilter.js +117 -77
- package/src/generation/filtering/CellFilterCellMatcher.d.ts.map +1 -1
- package/src/generation/filtering/CellFilterCellMatcher.js +2 -0
- package/src/generation/filtering/boolean/CellFilterLiteralBoolean.d.ts +5 -0
- package/src/generation/filtering/boolean/CellFilterLiteralBoolean.d.ts.map +1 -1
- package/src/generation/filtering/boolean/CellFilterLiteralBoolean.js +15 -0
- package/src/generation/filtering/core/CellFilterBinaryOperation.d.ts +0 -1
- package/src/generation/filtering/core/CellFilterBinaryOperation.d.ts.map +1 -1
- package/src/generation/filtering/core/CellFilterBinaryOperation.js +37 -50
- package/src/generation/filtering/core/CellFilterOperationTertiary.d.ts +0 -1
- package/src/generation/filtering/core/CellFilterOperationTertiary.d.ts.map +1 -1
- package/src/generation/filtering/core/CellFilterOperationTertiary.js +43 -59
- package/src/generation/filtering/core/CellFilterUnaryOperation.d.ts +0 -1
- package/src/generation/filtering/core/CellFilterUnaryOperation.d.ts.map +1 -1
- package/src/generation/filtering/core/CellFilterUnaryOperation.js +29 -33
- package/src/generation/filtering/numeric/CellFilterCache.d.ts +1 -0
- package/src/generation/filtering/numeric/CellFilterCache.d.ts.map +1 -1
- package/src/generation/filtering/numeric/complex/CellFilterAngleToNormal.d.ts +3 -2
- package/src/generation/filtering/numeric/complex/CellFilterAngleToNormal.d.ts.map +1 -1
- package/src/generation/filtering/numeric/complex/CellFilterAngleToNormal.js +9 -35
- package/src/generation/filtering/numeric/complex/CellFilterCurvature.d.ts +0 -1
- package/src/generation/filtering/numeric/complex/CellFilterCurvature.d.ts.map +1 -1
- package/src/generation/filtering/numeric/complex/CellFilterCurvature.js +19 -43
- package/src/generation/filtering/numeric/complex/CellFilterFXAA.d.ts +0 -1
- package/src/generation/filtering/numeric/complex/CellFilterFXAA.d.ts.map +1 -1
- package/src/generation/filtering/numeric/complex/CellFilterFXAA.js +2 -6
- package/src/generation/filtering/numeric/complex/CellFilterGaussianBlur.d.ts.map +1 -1
- package/src/generation/filtering/numeric/complex/CellFilterGaussianBlur.js +9 -12
- package/src/generation/filtering/numeric/complex/CellFilterSimplexNoise.d.ts.map +1 -1
- package/src/generation/filtering/numeric/complex/CellFilterSimplexNoise.js +2 -1
- package/src/generation/filtering/numeric/complex/CellFilterSobel.d.ts +0 -1
- package/src/generation/filtering/numeric/complex/CellFilterSobel.d.ts.map +1 -1
- package/src/generation/filtering/numeric/complex/CellFilterSobel.js +2 -6
- package/src/generation/filtering/numeric/math/CellFilterInverseLerp.d.ts +5 -4
- package/src/generation/filtering/numeric/math/CellFilterInverseLerp.d.ts.map +1 -1
- package/src/generation/filtering/numeric/math/CellFilterInverseLerp.js +5 -4
- package/src/generation/filtering/numeric/process/computeFilterSurfaceNormal.d.ts +17 -0
- package/src/generation/filtering/numeric/process/computeFilterSurfaceNormal.d.ts.map +1 -0
- package/src/generation/filtering/numeric/process/computeFilterSurfaceNormal.js +42 -0
- package/src/generation/filtering/numeric/sampling/AbstractCellFilterSampleGridLayer.d.ts.map +1 -1
- package/src/generation/filtering/numeric/sampling/AbstractCellFilterSampleGridLayer.js +7 -1
- package/src/generation/filtering/numeric/util/populateSampler2DFromCellFilter.d.ts.map +1 -1
- package/src/generation/filtering/numeric/util/populateSampler2DFromCellFilter.js +7 -10
- package/src/generation/filtering/numeric/util/sampler_from_filter.d.ts.map +1 -1
- package/src/generation/filtering/numeric/util/sampler_from_filter.js +2 -1
- package/src/generation/grid/GridData.d.ts.map +1 -1
- package/src/generation/grid/GridData.js +14 -1
- package/src/generation/grid/actions/ContinuousGridCellAction.d.ts +10 -3
- package/src/generation/grid/actions/ContinuousGridCellAction.d.ts.map +1 -1
- package/src/generation/grid/actions/ContinuousGridCellAction.js +18 -3
- package/src/generation/grid/actions/ContinuousGridCellActionSetTerrainHeight.d.ts +11 -1
- package/src/generation/grid/actions/ContinuousGridCellActionSetTerrainHeight.d.ts.map +1 -1
- package/src/generation/grid/actions/ContinuousGridCellActionSetTerrainHeight.js +13 -3
- package/src/generation/grid/actions/ContinuousGridCellActionSetTerrainObstacle.d.ts +1 -1
- package/src/generation/grid/actions/ContinuousGridCellActionSetTerrainObstacle.js +2 -2
- package/src/generation/grid/actions/ContinuousGridCellActionWriteObstacle.d.ts +1 -1
- package/src/generation/grid/actions/ContinuousGridCellActionWriteObstacle.d.ts.map +1 -1
- package/src/generation/grid/actions/ContinuousGridCellActionWriteObstacle.js +4 -6
- package/src/generation/grid/coords/grid_to_texel.d.ts +9 -0
- package/src/generation/grid/coords/grid_to_texel.d.ts.map +1 -0
- package/src/generation/grid/coords/grid_to_texel.js +10 -0
- package/src/generation/grid/coords/texel_to_grid.d.ts +9 -0
- package/src/generation/grid/coords/texel_to_grid.d.ts.map +1 -0
- package/src/generation/grid/coords/texel_to_grid.js +10 -0
- package/src/generation/grid/generation/GridTaskApplyActionToCells.d.ts +2 -2
- package/src/generation/grid/generation/GridTaskApplyActionToCells.d.ts.map +1 -1
- package/src/generation/grid/generation/GridTaskApplyActionToCells.js +10 -6
- package/src/generation/grid/generation/GridTaskDensityMarkerDistribution.d.ts.map +1 -1
- package/src/generation/grid/generation/GridTaskDensityMarkerDistribution.js +20 -21
- package/src/generation/grid/generation/GridTaskExecuteRuleTimes.d.ts +7 -0
- package/src/generation/grid/generation/GridTaskExecuteRuleTimes.d.ts.map +1 -1
- package/src/generation/grid/generation/GridTaskExecuteRuleTimes.js +18 -10
- package/src/generation/grid/generation/discrete/GridTaskCellularAutomata.d.ts.map +1 -1
- package/src/generation/grid/generation/discrete/GridTaskCellularAutomata.js +16 -7
- package/src/generation/grid/generation/discrete/GridTaskConnectRooms.d.ts +5 -3
- package/src/generation/grid/generation/discrete/GridTaskConnectRooms.d.ts.map +1 -1
- package/src/generation/grid/generation/discrete/GridTaskConnectRooms.js +26 -23
- package/src/generation/grid/generation/discrete/layer/GridTaskBuildSourceDistanceMap.d.ts.map +1 -1
- package/src/generation/grid/generation/discrete/layer/GridTaskBuildSourceDistanceMap.js +10 -1
- package/src/generation/grid/generation/grid/select/CellSupplierBestN.d.ts.map +1 -1
- package/src/generation/grid/generation/grid/select/CellSupplierBestN.js +4 -0
- package/src/generation/grid/generation/road/GridTaskGenerateRoads.d.ts +15 -8
- package/src/generation/grid/generation/road/GridTaskGenerateRoads.d.ts.map +1 -1
- package/src/generation/grid/generation/road/GridTaskGenerateRoads.js +89 -92
- package/src/generation/markers/GridActionRuleSet.d.ts.map +1 -1
- package/src/generation/markers/GridActionRuleSet.js +10 -2
- package/src/generation/markers/GridCellActionPlaceMarker.d.ts +11 -0
- package/src/generation/markers/GridCellActionPlaceMarker.d.ts.map +1 -1
- package/src/generation/markers/GridCellActionPlaceMarker.js +20 -3
- package/src/generation/markers/GridCellActionPlaceMarkerGroup.d.ts +3 -1
- package/src/generation/markers/GridCellActionPlaceMarkerGroup.d.ts.map +1 -1
- package/src/generation/markers/GridCellActionPlaceMarkerGroup.js +9 -2
- package/src/generation/markers/MarkerNode.d.ts +8 -3
- package/src/generation/markers/MarkerNode.d.ts.map +1 -1
- package/src/generation/markers/MarkerNode.js +12 -5
- package/src/generation/markers/actions/MarkerNodeActionEntityPlacement.js +1 -1
- package/src/generation/markers/actions/placement/MarkerNodeEntityProcessor.d.ts +1 -1
- package/src/generation/markers/actions/placement/MarkerNodeEntityProcessor.d.ts.map +1 -1
- package/src/generation/markers/actions/placement/MarkerNodeEntityProcessor.js +1 -1
- package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorClingToTerrain.d.ts +1 -1
- package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorClingToTerrain.d.ts.map +1 -1
- package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorClingToTerrain.js +1 -1
- package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorRandomRotation.d.ts +1 -1
- package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorRandomRotation.d.ts.map +1 -1
- package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorRandomRotation.js +2 -2
- package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorSequence.d.ts +1 -1
- package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorSequence.d.ts.map +1 -1
- package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorSequence.js +2 -2
- package/src/generation/markers/actions/probability/MarkerNodeActionSelectWeighted.d.ts.map +1 -1
- package/src/generation/markers/actions/probability/MarkerNodeActionSelectWeighted.js +6 -4
- package/src/generation/markers/actions/probability/MarkerNodeActionWeightedElement.d.ts.map +1 -1
- package/src/generation/markers/actions/probability/MarkerNodeActionWeightedElement.js +1 -3
- package/src/generation/markers/actions/terrain/MarkerNodeActionPaintTerrain.d.ts.map +1 -1
- package/src/generation/markers/actions/terrain/MarkerNodeActionPaintTerrain.js +12 -11
- package/src/generation/markers/matcher/MarkerNodeMatcherAnd.js +2 -2
- package/src/generation/markers/transform/MarkerNodeTransformer.d.ts +4 -1
- package/src/generation/markers/transform/MarkerNodeTransformer.d.ts.map +1 -1
- package/src/generation/markers/transform/MarkerNodeTransformer.js +4 -1
- package/src/generation/markers/transform/MarkerNodeTransformerAddPositionYFromFilter.d.ts.map +1 -1
- package/src/generation/markers/transform/MarkerNodeTransformerAddPositionYFromFilter.js +1 -3
- package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.d.ts +5 -0
- package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.d.ts.map +1 -1
- package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.js +15 -0
- package/src/generation/markers/transform/MarkerNodeTransformerRecordProperty.d.ts.map +1 -1
- package/src/generation/markers/transform/MarkerNodeTransformerRecordProperty.js +1 -3
- package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilter.d.ts.map +1 -1
- package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilter.js +2 -4
- package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilterGradient.d.ts.map +1 -1
- package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilterGradient.js +1 -3
- package/src/generation/placement/GridCellPlacementRule.d.ts.map +1 -1
- package/src/generation/placement/GridCellPlacementRule.js +1 -3
- package/src/generation/placement/action/GridCellActionWriteFilterToLayer.d.ts.map +1 -1
- package/src/generation/placement/action/GridCellActionWriteFilterToLayer.js +8 -10
- package/src/generation/placement/action/random/weighted/CellActionSelectWeightedRandom.d.ts.map +1 -1
- package/src/generation/placement/action/random/weighted/CellActionSelectWeightedRandom.js +6 -4
- package/src/generation/placement/action/random/weighted/WeightedGridCellAction.d.ts.map +1 -1
- package/src/generation/placement/action/random/weighted/WeightedGridCellAction.js +1 -3
- package/src/generation/rules/CellMatcher.d.ts +3 -1
- package/src/generation/rules/CellMatcher.d.ts.map +1 -1
- package/src/generation/rules/CellMatcher.js +3 -1
- package/src/generation/rules/CellMatcherFromFilter.d.ts.map +1 -1
- package/src/generation/rules/CellMatcherFromFilter.js +1 -3
- package/src/generation/rules/CellMatcherLayerBitMaskTest.d.ts.map +1 -1
- package/src/generation/rules/CellMatcherLayerBitMaskTest.js +6 -20
- package/src/generation/test_support/executeTaskTreeSync.d.ts +9 -0
- package/src/generation/test_support/executeTaskTreeSync.d.ts.map +1 -0
- package/src/generation/test_support/executeTaskTreeSync.js +78 -0
- package/src/generation/theme/TerrainLayerRuleAggregator.d.ts +2 -1
- package/src/generation/theme/TerrainLayerRuleAggregator.d.ts.map +1 -1
- package/src/generation/theme/TerrainLayerRuleAggregator.js +9 -6
- package/src/generation/theme/Theme.d.ts +1 -1
- package/src/generation/theme/Theme.d.ts.map +1 -1
- package/src/generation/theme/Theme.js +2 -2
- package/src/generation/theme/ThemeEngine.d.ts +3 -3
- package/src/generation/theme/ThemeEngine.d.ts.map +1 -1
- package/src/generation/theme/ThemeEngine.js +26 -16
- package/src/generation/theme/cell/CellProcessingRule.d.ts +3 -3
- package/src/generation/theme/cell/CellProcessingRule.d.ts.map +1 -1
- package/src/generation/theme/cell/CellProcessingRule.js +6 -10
- package/src/generation/theme/cell/CellProcessingRuleSet.d.ts +1 -1
- package/src/generation/theme/cell/CellProcessingRuleSet.d.ts.map +1 -1
- package/src/generation/theme/cell/CellProcessingRuleSet.js +2 -2
- package/src/view/common/ListView.js +1 -1
- package/src/view/elements/BottomLeftResizeHandleView.d.ts.map +1 -1
- package/src/view/elements/BottomLeftResizeHandleView.js +13 -5
- package/src/core/font/FontAsset.d.ts.map +0 -1
- package/src/core/font/FontAssetLoader.d.ts.map +0 -1
- package/src/core/geom/3d/shape/util/shape_to_visual_entity.d.ts.map +0 -1
- package/src/core/geom/3d/tetrahedra/visualize_tetrahedral_mesh.d.ts.map +0 -1
- package/src/core/process/action/AsynchronousDelayAction.d.ts.map +0 -1
- package/src/engine/physics/computeInterceptPoint.d.ts.map +0 -1
- package/src/engine/physics/fluid/solver/optimal_sor_omega.d.ts.map +0 -1
- package/src/engine/physics/gjk/gjk.d.ts.map +0 -1
- package/src/engine/physics/gjk/gjk_epa_penetration.d.ts.map +0 -1
- package/src/engine/physics/gjk/minkowski_support.d.ts.map +0 -1
- package/src/engine/physics/gjk/mpr.d.ts.map +0 -1
- package/src/engine/physics/integration/quat_integrate.d.ts.map +0 -1
- package/src/engine/physics/island/union_find.d.ts.map +0 -1
- package/src/engine/physics/narrowphase/PosedShape.d.ts.map +0 -1
- package/src/engine/physics/narrowphase/clip_against_axis_uv.d.ts.map +0 -1
- package/src/engine/physics/narrowphase/decomposition/aabb_world_to_local.d.ts.map +0 -1
- package/src/generation/grid/generation/discrete/layer/GridTaskDistanceToMarkers.d.ts +0 -21
- package/src/generation/grid/generation/discrete/layer/GridTaskDistanceToMarkers.d.ts.map +0 -1
- package/src/generation/grid/generation/discrete/layer/GridTaskDistanceToMarkers.js +0 -68
- package/src/generation/grid/generation/grid/GridTaskGridAlignedNodeGenerator.d.ts +0 -10
- package/src/generation/grid/generation/grid/GridTaskGridAlignedNodeGenerator.d.ts.map +0 -1
- package/src/generation/grid/generation/grid/GridTaskGridAlignedNodeGenerator.js +0 -17
- /package/src/{engine/physics → core/geom/3d}/gjk/NOTES.md +0 -0
- /package/src/{engine/physics → core/geom/3d}/gjk/gjk.d.ts +0 -0
- /package/src/{engine/physics → core/math/physics/kinematics}/computeInterceptPoint.d.ts +0 -0
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Bake
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* and solid-neighbour checks entirely.
|
|
2
|
+
* Bake the per-cell neighbourhood data consumed by the pressure solvers and
|
|
3
|
+
* the gradient subtraction: a 6-bit fluid-neighbour mask and the 7-point
|
|
4
|
+
* Laplacian diagonal.
|
|
6
5
|
*
|
|
7
|
-
*
|
|
6
|
+
* Mask encoding (one byte per cell):
|
|
8
7
|
*
|
|
9
|
-
* bit 0 (= 1) : -x neighbour is fluid
|
|
8
|
+
* bit 0 (= 1) : -x neighbour is fluid (in-bounds AND non-solid)
|
|
10
9
|
* bit 1 (= 2) : +x neighbour is fluid
|
|
11
10
|
* bit 2 (= 4) : -y neighbour is fluid
|
|
12
11
|
* bit 3 (= 8) : +y neighbour is fluid
|
|
@@ -14,24 +13,35 @@
|
|
|
14
13
|
* bit 5 (= 32) : +z neighbour is fluid
|
|
15
14
|
* bit 7 (= 128) : this cell is itself solid
|
|
16
15
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
* (
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
16
|
+
* Diagonal encoding (one byte per cell): the pressure-Laplacian diagonal
|
|
17
|
+
* coefficient — the number of faces that participate in the solve:
|
|
18
|
+
*
|
|
19
|
+
* diag = (# fluid neighbours) + (# open faces)
|
|
20
|
+
*
|
|
21
|
+
* where an OPEN face is one whose neighbour lies outside the grid. The domain
|
|
22
|
+
* edge is an open boundary: outside pressure is the ghost value `0`
|
|
23
|
+
* (Dirichlet), so the face counts toward the diagonal while contributing
|
|
24
|
+
* nothing to the stencil sum — flow can exit the grid and the Poisson system
|
|
25
|
+
* is non-singular whenever any fluid cell touches the edge. A SOLID face is a
|
|
26
|
+
* Neumann (reflecting) boundary: dropped from both the sum and the diagonal.
|
|
27
|
+
* Sealed domains are therefore built explicitly, by lining the boundary with
|
|
28
|
+
* solid cells — there is no "closed box" mode on the open edge itself.
|
|
29
|
+
*
|
|
30
|
+
* A solid cell encodes as mask `128` / diag `0`. `diag === 0` is the solvers'
|
|
31
|
+
* single "no degrees of freedom — skip" test: it covers self-solid AND fluid
|
|
32
|
+
* sealed on all six faces alike. A fluid cell whose neighbours are all solid
|
|
33
|
+
* but which touches the domain edge still has `diag > 0` — it drains through
|
|
34
|
+
* the open face.
|
|
35
|
+
*
|
|
36
|
+
* O(N) — two byte-writes per cell, up to six byte-reads per cell. Outputs
|
|
37
|
+
* fully replace previous contents; no need to zero-init.
|
|
38
|
+
*
|
|
39
|
+
* @param {Uint8Array} mask Destination, fluid-neighbour bits. Length ≥ N.
|
|
40
|
+
* @param {Uint8Array} diag Destination, Laplacian diagonal (0–6). Length ≥ N.
|
|
41
|
+
* @param {Uint8Array} solid Source. Length ≥ N. Non-zero = solid.
|
|
32
42
|
* @param {number} res_x
|
|
33
43
|
* @param {number} res_y
|
|
34
44
|
* @param {number} res_z
|
|
35
45
|
*/
|
|
36
|
-
export function v3_grid_compute_solid_neighbour_mask(mask: Uint8Array, solid: Uint8Array, res_x: number, res_y: number, res_z: number): void;
|
|
46
|
+
export function v3_grid_compute_solid_neighbour_mask(mask: Uint8Array, diag: Uint8Array, solid: Uint8Array, res_x: number, res_y: number, res_z: number): void;
|
|
37
47
|
//# sourceMappingURL=v3_grid_compute_solid_neighbour_mask.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v3_grid_compute_solid_neighbour_mask.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/physics/fluid/solver/v3_grid_compute_solid_neighbour_mask.js"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"v3_grid_compute_solid_neighbour_mask.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/physics/fluid/solver/v3_grid_compute_solid_neighbour_mask.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,2DAPW,UAAU,QACV,UAAU,SACV,UAAU,SACV,MAAM,SACN,MAAM,SACN,MAAM,QA4ChB"}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { assert } from "../../../../core/assert.js";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* Bake
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* and solid-neighbour checks entirely.
|
|
4
|
+
* Bake the per-cell neighbourhood data consumed by the pressure solvers and
|
|
5
|
+
* the gradient subtraction: a 6-bit fluid-neighbour mask and the 7-point
|
|
6
|
+
* Laplacian diagonal.
|
|
8
7
|
*
|
|
9
|
-
*
|
|
8
|
+
* Mask encoding (one byte per cell):
|
|
10
9
|
*
|
|
11
|
-
* bit 0 (= 1) : -x neighbour is fluid
|
|
10
|
+
* bit 0 (= 1) : -x neighbour is fluid (in-bounds AND non-solid)
|
|
12
11
|
* bit 1 (= 2) : +x neighbour is fluid
|
|
13
12
|
* bit 2 (= 4) : -y neighbour is fluid
|
|
14
13
|
* bit 3 (= 8) : +y neighbour is fluid
|
|
@@ -16,28 +15,40 @@ import { assert } from "../../../../core/assert.js";
|
|
|
16
15
|
* bit 5 (= 32) : +z neighbour is fluid
|
|
17
16
|
* bit 7 (= 128) : this cell is itself solid
|
|
18
17
|
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* — and an isolated fluid cell (no fluid neighbours) as `0`. Both therefore
|
|
22
|
-
* satisfy `(mask & 63) === 0`, so the SOR / PCG loops' "no fluid neighbours →
|
|
23
|
-
* skip" branch is a single `(mask & 63) === 0` comparison that covers
|
|
24
|
-
* "self-solid" and "fluid but no fluid neighbours" alike. The dedicated bit 7
|
|
25
|
-
* additionally lets {@link v3_grid_subtract_pressure_gradient} tell solid cells
|
|
26
|
-
* (zero the velocity) apart from isolated fluid (leave it) without the original
|
|
27
|
-
* `solid` array.
|
|
18
|
+
* Diagonal encoding (one byte per cell): the pressure-Laplacian diagonal
|
|
19
|
+
* coefficient — the number of faces that participate in the solve:
|
|
28
20
|
*
|
|
29
|
-
*
|
|
30
|
-
* fully replaces whatever was in `mask` before; no need to zero-init.
|
|
21
|
+
* diag = (# fluid neighbours) + (# open faces)
|
|
31
22
|
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
23
|
+
* where an OPEN face is one whose neighbour lies outside the grid. The domain
|
|
24
|
+
* edge is an open boundary: outside pressure is the ghost value `0`
|
|
25
|
+
* (Dirichlet), so the face counts toward the diagonal while contributing
|
|
26
|
+
* nothing to the stencil sum — flow can exit the grid and the Poisson system
|
|
27
|
+
* is non-singular whenever any fluid cell touches the edge. A SOLID face is a
|
|
28
|
+
* Neumann (reflecting) boundary: dropped from both the sum and the diagonal.
|
|
29
|
+
* Sealed domains are therefore built explicitly, by lining the boundary with
|
|
30
|
+
* solid cells — there is no "closed box" mode on the open edge itself.
|
|
31
|
+
*
|
|
32
|
+
* A solid cell encodes as mask `128` / diag `0`. `diag === 0` is the solvers'
|
|
33
|
+
* single "no degrees of freedom — skip" test: it covers self-solid AND fluid
|
|
34
|
+
* sealed on all six faces alike. A fluid cell whose neighbours are all solid
|
|
35
|
+
* but which touches the domain edge still has `diag > 0` — it drains through
|
|
36
|
+
* the open face.
|
|
37
|
+
*
|
|
38
|
+
* O(N) — two byte-writes per cell, up to six byte-reads per cell. Outputs
|
|
39
|
+
* fully replace previous contents; no need to zero-init.
|
|
40
|
+
*
|
|
41
|
+
* @param {Uint8Array} mask Destination, fluid-neighbour bits. Length ≥ N.
|
|
42
|
+
* @param {Uint8Array} diag Destination, Laplacian diagonal (0–6). Length ≥ N.
|
|
43
|
+
* @param {Uint8Array} solid Source. Length ≥ N. Non-zero = solid.
|
|
34
44
|
* @param {number} res_x
|
|
35
45
|
* @param {number} res_y
|
|
36
46
|
* @param {number} res_z
|
|
37
47
|
*/
|
|
38
|
-
export function v3_grid_compute_solid_neighbour_mask(mask, solid, res_x, res_y, res_z) {
|
|
48
|
+
export function v3_grid_compute_solid_neighbour_mask(mask, diag, solid, res_x, res_y, res_z) {
|
|
39
49
|
const cells = res_x * res_y * res_z;
|
|
40
50
|
assert.greaterThanOrEqual(mask.length, cells, "mask covers grid");
|
|
51
|
+
assert.greaterThanOrEqual(diag.length, cells, "diag covers grid");
|
|
41
52
|
assert.greaterThanOrEqual(solid.length, cells, "solid covers grid");
|
|
42
53
|
|
|
43
54
|
const slice = res_x * res_y;
|
|
@@ -49,24 +60,30 @@ export function v3_grid_compute_solid_neighbour_mask(mask, solid, res_x, res_y,
|
|
|
49
60
|
const z_off = z * slice;
|
|
50
61
|
const has_zm = z > 0;
|
|
51
62
|
const has_zp = z < last_z;
|
|
63
|
+
// Open faces contributed by the y/z position are constant per row.
|
|
64
|
+
const open_z = (has_zm ? 0 : 1) + (has_zp ? 0 : 1);
|
|
52
65
|
for (let y = 0; y < res_y; y++) {
|
|
53
66
|
const y_off = z_off + y * res_x;
|
|
54
67
|
const has_ym = y > 0;
|
|
55
68
|
const has_yp = y < last_y;
|
|
69
|
+
const open_yz = open_z + (has_ym ? 0 : 1) + (has_yp ? 0 : 1);
|
|
56
70
|
for (let x = 0; x < res_x; x++) {
|
|
57
71
|
const c = y_off + x;
|
|
58
72
|
if (solid[c] !== 0) {
|
|
59
73
|
mask[c] = 128; // bit 7 = this cell is solid; neighbour bits stay clear
|
|
74
|
+
diag[c] = 0;
|
|
60
75
|
continue;
|
|
61
76
|
}
|
|
62
77
|
let m = 0;
|
|
63
|
-
|
|
64
|
-
if (x
|
|
65
|
-
if (
|
|
66
|
-
if (
|
|
67
|
-
if (
|
|
68
|
-
if (
|
|
78
|
+
let d = open_yz + (x > 0 ? 0 : 1) + (x < last_x ? 0 : 1);
|
|
79
|
+
if (x > 0 && solid[c - 1] === 0) { m |= 1; d++; }
|
|
80
|
+
if (x < last_x && solid[c + 1] === 0) { m |= 2; d++; }
|
|
81
|
+
if (has_ym && solid[c - res_x] === 0) { m |= 4; d++; }
|
|
82
|
+
if (has_yp && solid[c + res_x] === 0) { m |= 8; d++; }
|
|
83
|
+
if (has_zm && solid[c - slice] === 0) { m |= 16; d++; }
|
|
84
|
+
if (has_zp && solid[c + slice] === 0) { m |= 32; d++; }
|
|
69
85
|
mask[c] = m;
|
|
86
|
+
diag[c] = d;
|
|
70
87
|
}
|
|
71
88
|
}
|
|
72
89
|
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fill the edges exposed by {@link v3_grid_shift_in_place} (with the same
|
|
3
|
+
* `(shift_x, shift_y, shift_z)`) with a constant value.
|
|
4
|
+
*
|
|
5
|
+
* Companion to {@link v3_grid_patch_edges_uniform}: that one replicates the
|
|
6
|
+
* adjacent valid data (zero-gradient extrapolation — right for velocity,
|
|
7
|
+
* pressure, scalars), this one writes a known constant — right for masks and
|
|
8
|
+
* label grids where "newly scrolled-in region" has a definite meaning, e.g.
|
|
9
|
+
* `0` = fluid for the solid mask (scrolled-in space is empty until a
|
|
10
|
+
* voxelizer says otherwise).
|
|
11
|
+
*
|
|
12
|
+
* Axes are patched independently in x → y → z order; corner cells shared by
|
|
13
|
+
* several axis-edges are simply written more than once with the same value.
|
|
14
|
+
*
|
|
15
|
+
* No-ops:
|
|
16
|
+
* - All shifts zero → nothing to patch.
|
|
17
|
+
* - `|shift| >= res` on any axis → the shift primitive already zero-filled
|
|
18
|
+
* the buffer; for a non-zero `value` the caller wanted constant-fill
|
|
19
|
+
* anyway, so fill the whole buffer.
|
|
20
|
+
*
|
|
21
|
+
* @param {Float32Array|Uint8Array} buffer
|
|
22
|
+
* @param {number} res_x
|
|
23
|
+
* @param {number} res_y
|
|
24
|
+
* @param {number} res_z
|
|
25
|
+
* @param {number} shift_x integer; same value passed to v3_grid_shift_in_place
|
|
26
|
+
* @param {number} shift_y integer
|
|
27
|
+
* @param {number} shift_z integer
|
|
28
|
+
* @param {number} value constant written into every exposed cell
|
|
29
|
+
*/
|
|
30
|
+
export function v3_grid_patch_edges_constant(buffer: Float32Array | Uint8Array, res_x: number, res_y: number, res_z: number, shift_x: number, shift_y: number, shift_z: number, value: number): void;
|
|
31
|
+
//# sourceMappingURL=v3_grid_patch_edges_constant.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v3_grid_patch_edges_constant.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/physics/fluid/solver/v3_grid_patch_edges_constant.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qDATW,YAAY,GAAC,UAAU,SACvB,MAAM,SACN,MAAM,SACN,MAAM,WACN,MAAM,WACN,MAAM,WACN,MAAM,SACN,MAAM,QAgBhB"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fill the edges exposed by {@link v3_grid_shift_in_place} (with the same
|
|
3
|
+
* `(shift_x, shift_y, shift_z)`) with a constant value.
|
|
4
|
+
*
|
|
5
|
+
* Companion to {@link v3_grid_patch_edges_uniform}: that one replicates the
|
|
6
|
+
* adjacent valid data (zero-gradient extrapolation — right for velocity,
|
|
7
|
+
* pressure, scalars), this one writes a known constant — right for masks and
|
|
8
|
+
* label grids where "newly scrolled-in region" has a definite meaning, e.g.
|
|
9
|
+
* `0` = fluid for the solid mask (scrolled-in space is empty until a
|
|
10
|
+
* voxelizer says otherwise).
|
|
11
|
+
*
|
|
12
|
+
* Axes are patched independently in x → y → z order; corner cells shared by
|
|
13
|
+
* several axis-edges are simply written more than once with the same value.
|
|
14
|
+
*
|
|
15
|
+
* No-ops:
|
|
16
|
+
* - All shifts zero → nothing to patch.
|
|
17
|
+
* - `|shift| >= res` on any axis → the shift primitive already zero-filled
|
|
18
|
+
* the buffer; for a non-zero `value` the caller wanted constant-fill
|
|
19
|
+
* anyway, so fill the whole buffer.
|
|
20
|
+
*
|
|
21
|
+
* @param {Float32Array|Uint8Array} buffer
|
|
22
|
+
* @param {number} res_x
|
|
23
|
+
* @param {number} res_y
|
|
24
|
+
* @param {number} res_z
|
|
25
|
+
* @param {number} shift_x integer; same value passed to v3_grid_shift_in_place
|
|
26
|
+
* @param {number} shift_y integer
|
|
27
|
+
* @param {number} shift_z integer
|
|
28
|
+
* @param {number} value constant written into every exposed cell
|
|
29
|
+
*/
|
|
30
|
+
export function v3_grid_patch_edges_constant(buffer, res_x, res_y, res_z, shift_x, shift_y, shift_z, value) {
|
|
31
|
+
if (shift_x === 0 && shift_y === 0 && shift_z === 0) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if (Math.abs(shift_x) >= res_x || Math.abs(shift_y) >= res_y || Math.abs(shift_z) >= res_z) {
|
|
36
|
+
// Whole grid was exposed; every cell takes the constant.
|
|
37
|
+
buffer.fill(value, 0, res_x * res_y * res_z);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
if (shift_x !== 0) patch_x(buffer, res_x, res_y, res_z, shift_x, value);
|
|
42
|
+
if (shift_y !== 0) patch_y(buffer, res_x, res_y, res_z, shift_y, value);
|
|
43
|
+
if (shift_z !== 0) patch_z(buffer, res_x, res_y, res_z, shift_z, value);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function patch_x(buf, rx, ry, rz, shift, value) {
|
|
47
|
+
const slice = rx * ry;
|
|
48
|
+
const n = Math.abs(shift);
|
|
49
|
+
// Exposed: x in [rx - n, rx) for positive shift, [0, n) for negative.
|
|
50
|
+
const x_start = shift > 0 ? rx - n : 0;
|
|
51
|
+
for (let z = 0; z < rz; z++) {
|
|
52
|
+
const z_off = z * slice;
|
|
53
|
+
for (let y = 0; y < ry; y++) {
|
|
54
|
+
const row = z_off + y * rx;
|
|
55
|
+
buf.fill(value, row + x_start, row + x_start + n);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function patch_y(buf, rx, ry, rz, shift, value) {
|
|
61
|
+
const slice = rx * ry;
|
|
62
|
+
const n = Math.abs(shift);
|
|
63
|
+
// Exposed rows are contiguous within each slice: y in [ry - n, ry) or [0, n).
|
|
64
|
+
const y_start = shift > 0 ? ry - n : 0;
|
|
65
|
+
for (let z = 0; z < rz; z++) {
|
|
66
|
+
const start = z * slice + y_start * rx;
|
|
67
|
+
buf.fill(value, start, start + n * rx);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function patch_z(buf, rx, ry, rz, shift, value) {
|
|
72
|
+
const slice = rx * ry;
|
|
73
|
+
const n = Math.abs(shift);
|
|
74
|
+
// Exposed slices are one contiguous block: z in [rz - n, rz) or [0, n).
|
|
75
|
+
const z_start = shift > 0 ? rz - n : 0;
|
|
76
|
+
buf.fill(value, z_start * slice, (z_start + n) * slice);
|
|
77
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trilinearly sample a cell-centered scalar at a fractional position,
|
|
3
|
+
* EXCLUDING solid cells from the interpolation: solid taps contribute zero
|
|
4
|
+
* weight and the remaining weights are renormalized. This is the
|
|
5
|
+
* free-boundary-aware sampling of Bridson §3.x — without it, a back-trace
|
|
6
|
+
* landing NEAR a wall blends the frozen in-wall value into the fluid, which
|
|
7
|
+
* reads as dye bleeding out of (or being eaten by) walls.
|
|
8
|
+
*
|
|
9
|
+
* When every tap is solid (a trace clipped into a fully walled corner) there
|
|
10
|
+
* is nothing valid to interpolate; `fallback` — typically the destination
|
|
11
|
+
* cell's own previous value, i.e. "no transport this step" — is returned.
|
|
12
|
+
*
|
|
13
|
+
* Positions clamp to the cell lattice exactly like
|
|
14
|
+
* {@link scs3d_sample_linear}; with a zero-filled `solid` grid the result
|
|
15
|
+
* matches that sampler up to floating-point reassociation (the weights sum
|
|
16
|
+
* to 1 and renormalization divides by it).
|
|
17
|
+
*
|
|
18
|
+
* @param {Float32Array} data Cell-centered scalar field.
|
|
19
|
+
* @param {Uint8Array} solid Cell-centered solid flags.
|
|
20
|
+
* @param {number} res_x
|
|
21
|
+
* @param {number} res_y
|
|
22
|
+
* @param {number} res_z
|
|
23
|
+
* @param {number} x
|
|
24
|
+
* @param {number} y
|
|
25
|
+
* @param {number} z
|
|
26
|
+
* @param {number} fallback Returned when no fluid tap is available.
|
|
27
|
+
* @return {number}
|
|
28
|
+
*/
|
|
29
|
+
export function v3_grid_sample_scalar_masked(data: Float32Array, solid: Uint8Array, res_x: number, res_y: number, res_z: number, x: number, y: number, z: number, fallback: number): number;
|
|
30
|
+
//# sourceMappingURL=v3_grid_sample_scalar_masked.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v3_grid_sample_scalar_masked.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/physics/fluid/solver/v3_grid_sample_scalar_masked.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,mDAXW,YAAY,SACZ,UAAU,SACV,MAAM,SACN,MAAM,SACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,YACN,MAAM,GACL,MAAM,CA+DjB"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { clamp } from "../../../../core/math/clamp.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Trilinearly sample a cell-centered scalar at a fractional position,
|
|
5
|
+
* EXCLUDING solid cells from the interpolation: solid taps contribute zero
|
|
6
|
+
* weight and the remaining weights are renormalized. This is the
|
|
7
|
+
* free-boundary-aware sampling of Bridson §3.x — without it, a back-trace
|
|
8
|
+
* landing NEAR a wall blends the frozen in-wall value into the fluid, which
|
|
9
|
+
* reads as dye bleeding out of (or being eaten by) walls.
|
|
10
|
+
*
|
|
11
|
+
* When every tap is solid (a trace clipped into a fully walled corner) there
|
|
12
|
+
* is nothing valid to interpolate; `fallback` — typically the destination
|
|
13
|
+
* cell's own previous value, i.e. "no transport this step" — is returned.
|
|
14
|
+
*
|
|
15
|
+
* Positions clamp to the cell lattice exactly like
|
|
16
|
+
* {@link scs3d_sample_linear}; with a zero-filled `solid` grid the result
|
|
17
|
+
* matches that sampler up to floating-point reassociation (the weights sum
|
|
18
|
+
* to 1 and renormalization divides by it).
|
|
19
|
+
*
|
|
20
|
+
* @param {Float32Array} data Cell-centered scalar field.
|
|
21
|
+
* @param {Uint8Array} solid Cell-centered solid flags.
|
|
22
|
+
* @param {number} res_x
|
|
23
|
+
* @param {number} res_y
|
|
24
|
+
* @param {number} res_z
|
|
25
|
+
* @param {number} x
|
|
26
|
+
* @param {number} y
|
|
27
|
+
* @param {number} z
|
|
28
|
+
* @param {number} fallback Returned when no fluid tap is available.
|
|
29
|
+
* @return {number}
|
|
30
|
+
*/
|
|
31
|
+
export function v3_grid_sample_scalar_masked(data, solid, res_x, res_y, res_z, x, y, z, fallback) {
|
|
32
|
+
const x_max = res_x - 1;
|
|
33
|
+
const y_max = res_y - 1;
|
|
34
|
+
const z_max = res_z - 1;
|
|
35
|
+
|
|
36
|
+
const x_clamped = clamp(x, 0, x_max);
|
|
37
|
+
const y_clamped = clamp(y, 0, y_max);
|
|
38
|
+
const z_clamped = clamp(z, 0, z_max);
|
|
39
|
+
|
|
40
|
+
const x0 = x_clamped | 0;
|
|
41
|
+
const y0 = y_clamped | 0;
|
|
42
|
+
const z0 = z_clamped | 0;
|
|
43
|
+
|
|
44
|
+
const f_x = x_clamped - x0;
|
|
45
|
+
const f_y = y_clamped - y0;
|
|
46
|
+
const f_z = z_clamped - z0;
|
|
47
|
+
|
|
48
|
+
const x1 = x_clamped === x0 ? x0 : x0 + 1;
|
|
49
|
+
const y1 = y_clamped === y0 ? y0 : y0 + 1;
|
|
50
|
+
const z1 = z_clamped === z0 ? z0 : z0 + 1;
|
|
51
|
+
|
|
52
|
+
const slice = res_x * res_y;
|
|
53
|
+
const z0_off = z0 * slice;
|
|
54
|
+
const z1_off = z1 * slice;
|
|
55
|
+
const y0_off = y0 * res_x;
|
|
56
|
+
const y1_off = y1 * res_x;
|
|
57
|
+
|
|
58
|
+
const c000 = z0_off + y0_off + x0;
|
|
59
|
+
const c100 = z0_off + y0_off + x1;
|
|
60
|
+
const c010 = z0_off + y1_off + x0;
|
|
61
|
+
const c110 = z0_off + y1_off + x1;
|
|
62
|
+
const c001 = z1_off + y0_off + x0;
|
|
63
|
+
const c101 = z1_off + y0_off + x1;
|
|
64
|
+
const c011 = z1_off + y1_off + x0;
|
|
65
|
+
const c111 = z1_off + y1_off + x1;
|
|
66
|
+
|
|
67
|
+
const gx = 1 - f_x;
|
|
68
|
+
const gy = 1 - f_y;
|
|
69
|
+
const gz = 1 - f_z;
|
|
70
|
+
|
|
71
|
+
// Per-tap trilinear weight, zeroed when the tap cell is solid.
|
|
72
|
+
const w000 = solid[c000] !== 0 ? 0 : gx * gy * gz;
|
|
73
|
+
const w100 = solid[c100] !== 0 ? 0 : f_x * gy * gz;
|
|
74
|
+
const w010 = solid[c010] !== 0 ? 0 : gx * f_y * gz;
|
|
75
|
+
const w110 = solid[c110] !== 0 ? 0 : f_x * f_y * gz;
|
|
76
|
+
const w001 = solid[c001] !== 0 ? 0 : gx * gy * f_z;
|
|
77
|
+
const w101 = solid[c101] !== 0 ? 0 : f_x * gy * f_z;
|
|
78
|
+
const w011 = solid[c011] !== 0 ? 0 : gx * f_y * f_z;
|
|
79
|
+
const w111 = solid[c111] !== 0 ? 0 : f_x * f_y * f_z;
|
|
80
|
+
|
|
81
|
+
const total = w000 + w100 + w010 + w110 + w001 + w101 + w011 + w111;
|
|
82
|
+
if (total <= 0) {
|
|
83
|
+
return fallback;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const sum = w000 * data[c000] + w100 * data[c100]
|
|
87
|
+
+ w010 * data[c010] + w110 * data[c110]
|
|
88
|
+
+ w001 * data[c001] + w101 * data[c101]
|
|
89
|
+
+ w011 * data[c011] + w111 * data[c111];
|
|
90
|
+
|
|
91
|
+
return sum / total;
|
|
92
|
+
}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Solve the pressure Poisson equation `∇²p = div(v)` by red-black Successive
|
|
3
|
-
* Over-Relaxation (SOR), gated by
|
|
3
|
+
* Over-Relaxation (SOR), gated by pre-baked per-cell neighbour data.
|
|
4
4
|
*
|
|
5
5
|
* Per cell, the update is:
|
|
6
6
|
*
|
|
7
|
-
* p_jacobi(c) = ( sum_of_fluid_neighbour_pressures - div(c) ) /
|
|
7
|
+
* p_jacobi(c) = ( sum_of_fluid_neighbour_pressures - div(c) ) / diag(c)
|
|
8
8
|
* p(c) = (1 - ω) * p(c) + ω * p_jacobi(c)
|
|
9
9
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* {@link FluidField.recomputeSolidNeighbourMask}
|
|
10
|
+
* Which faces participate is determined entirely by `neighbour_mask` and
|
|
11
|
+
* `diag`, both produced by {@link v3_grid_compute_solid_neighbour_mask}
|
|
12
|
+
* (via {@link FluidField.recomputeSolidNeighbourMask}):
|
|
13
13
|
*
|
|
14
|
-
* bit 0 (= 1) : -x neighbour is fluid
|
|
14
|
+
* bit 0 (= 1) : -x neighbour is fluid — read its pressure
|
|
15
15
|
* bit 1 (= 2) : +x neighbour is fluid
|
|
16
16
|
* bit 2 (= 4) : -y neighbour is fluid
|
|
17
17
|
* bit 3 (= 8) : +y neighbour is fluid
|
|
@@ -20,14 +20,19 @@
|
|
|
20
20
|
* bit 7 (= 128) : this cell is itself solid (consumed by
|
|
21
21
|
* {@link v3_grid_subtract_pressure_gradient}, ignored here)
|
|
22
22
|
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
23
|
+
* diag(c) = (# fluid neighbours) + (# open faces)
|
|
24
|
+
*
|
|
25
|
+
* Boundary semantics fall out of the encoding:
|
|
26
|
+
* - SOLID face (in-bounds neighbour with the bit clear): Neumann/reflecting —
|
|
27
|
+
* absent from both the sum and `diag`.
|
|
28
|
+
* - OPEN face (out-of-bounds neighbour): Dirichlet ghost `p = 0` — absent
|
|
29
|
+
* from the sum (a zero contribution) but counted in `diag`. The domain
|
|
30
|
+
* edge therefore behaves as an open boundary; sealed domains are built by
|
|
31
|
+
* lining the edge with solid cells.
|
|
32
|
+
*
|
|
33
|
+
* `diag === 0` covers "this cell is solid" AND "this fluid cell is sealed on
|
|
34
|
+
* all six faces" with a single comparison, so the inner loop pays one byte
|
|
35
|
+
* read and one test per skipped cell and never reads out-of-range memory.
|
|
31
36
|
*
|
|
32
37
|
* Cells are visited in two passes per iteration: first "red" (`(x+y+z) % 2 === 0`)
|
|
33
38
|
* then "black". Adjacent cells have opposite colour, so each pass reads only
|
|
@@ -43,10 +48,12 @@
|
|
|
43
48
|
* @param {number} res_z
|
|
44
49
|
* @param {number} iterations Number of red-black sweeps.
|
|
45
50
|
* @param {number} omega SOR relaxation factor in (0, 2). Near-optimal values
|
|
46
|
-
* come from {@link
|
|
47
|
-
* @param {Uint8Array} neighbour_mask Length ≥ res_x*res_y*res_z.
|
|
48
|
-
*
|
|
49
|
-
*
|
|
51
|
+
* come from {@link sor_optimal_omega}.
|
|
52
|
+
* @param {Uint8Array} neighbour_mask Length ≥ res_x*res_y*res_z. Fluid-neighbour
|
|
53
|
+
* bitmask (see above). MUST be recomputed whenever the underlying solid
|
|
54
|
+
* mask changes.
|
|
55
|
+
* @param {Uint8Array} diag Length ≥ res_x*res_y*res_z. Laplacian diagonal per
|
|
56
|
+
* cell, baked by the same kernel as `neighbour_mask`.
|
|
50
57
|
*/
|
|
51
|
-
export function v3_grid_solve_pressure(pressure: Float32Array | Float16Array, divergence: Float32Array | Float16Array, res_x: number, res_y: number, res_z: number, iterations: number, omega: number, neighbour_mask: Uint8Array): void;
|
|
58
|
+
export function v3_grid_solve_pressure(pressure: Float32Array | Float16Array, divergence: Float32Array | Float16Array, res_x: number, res_y: number, res_z: number, iterations: number, omega: number, neighbour_mask: Uint8Array, diag: Uint8Array): void;
|
|
52
59
|
//# sourceMappingURL=v3_grid_solve_pressure.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v3_grid_solve_pressure.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/physics/fluid/solver/v3_grid_solve_pressure.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"v3_grid_solve_pressure.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/physics/fluid/solver/v3_grid_solve_pressure.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AACH,iDAhBW,YAAY,eAAa,cAEzB,YAAY,eAAa,SAEzB,MAAM,SACN,MAAM,SACN,MAAM,cACN,MAAM,SACN,MAAM,kBAEN,UAAU,QAGV,UAAU,QA8EpB"}
|