@woosh/meep-engine 2.156.0 → 2.157.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} +9 -8
- package/src/{engine/physics/narrowphase/PosedShape.d.ts.map → core/geom/3d/shape/PosedShape3D.d.ts.map} +1 -1
- package/src/{engine/physics/narrowphase/PosedShape.js → core/geom/3d/shape/PosedShape3D.js} +10 -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/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 +45 -17
- package/src/engine/physics/fluid/FluidField.d.ts.map +1 -1
- package/src/engine/physics/fluid/FluidField.js +53 -23
- package/src/engine/physics/fluid/FluidSimulator.d.ts +141 -5
- package/src/engine/physics/fluid/FluidSimulator.d.ts.map +1 -1
- package/src/engine/physics/fluid/FluidSimulator.js +336 -43
- package/src/engine/physics/fluid/REVIEW_02_PLAN.md +114 -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/FluidSystem.d.ts +3 -3
- package/src/engine/physics/fluid/effector/AmbientWindFluidEffector.d.ts +41 -0
- package/src/engine/physics/fluid/effector/AmbientWindFluidEffector.d.ts.map +1 -0
- package/src/engine/physics/fluid/effector/AmbientWindFluidEffector.js +124 -0
- 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 +67 -18
- 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_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/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/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
|
@@ -52,7 +52,11 @@ export const SLOT_DATA_STRIDE: number;
|
|
|
52
52
|
*/
|
|
53
53
|
export const MANIFOLD_SLOT_ABSENT: number;
|
|
54
54
|
/**
|
|
55
|
-
* Persistent contact-manifold cache keyed by canonical body-id pairs
|
|
55
|
+
* Persistent contact-manifold cache keyed by canonical body-id pairs —
|
|
56
|
+
* canonical meaning ENTITY order: the broadphase assigns the pair's A role
|
|
57
|
+
* to the body with the smaller entity id (see generate_pairs), so the A/B
|
|
58
|
+
* roles (witness sides, normal orientation) are identical in every engine
|
|
59
|
+
* holding the same bodies, regardless of slot-allocation history.
|
|
56
60
|
*
|
|
57
61
|
* Owns:
|
|
58
62
|
* - the SoA `Float64Array` of contact points (per-slot stride 52),
|
|
@@ -86,12 +90,21 @@ export class ManifoldStore {
|
|
|
86
90
|
__live_slots: Uint32Array;
|
|
87
91
|
__live_pos: Int32Array;
|
|
88
92
|
__live_count: number;
|
|
89
|
-
|
|
90
|
-
__free_count: number;
|
|
93
|
+
__free: Uint32MinHeap;
|
|
91
94
|
/**
|
|
92
95
|
* @returns {number} number of currently-live slots
|
|
93
96
|
*/
|
|
94
97
|
get count(): number;
|
|
98
|
+
/**
|
|
99
|
+
* Drop every live slot: empty pair index, empty live list, all slot ids
|
|
100
|
+
* back on the free heap, high-water mark reset. Capacity is retained.
|
|
101
|
+
*
|
|
102
|
+
* For world reconstruction (remove every body, re-add from a snapshot,
|
|
103
|
+
* then import the exported contact state into the emptied store) — the
|
|
104
|
+
* import requires an empty store so slot allocation starts from a known
|
|
105
|
+
* state.
|
|
106
|
+
*/
|
|
107
|
+
clear(): void;
|
|
95
108
|
/**
|
|
96
109
|
* @returns {number} total allocated slot capacity
|
|
97
110
|
*/
|
|
@@ -140,6 +153,47 @@ export class ManifoldStore {
|
|
|
140
153
|
* @returns {boolean}
|
|
141
154
|
*/
|
|
142
155
|
was_touched_prev(slot: number): boolean;
|
|
156
|
+
/**
|
|
157
|
+
* Whether the slot ended the PREVIOUS frame with stored contacts — the
|
|
158
|
+
* event diff's "was in contact" side. See {@link FLAG_HAD_CONTACTS}.
|
|
159
|
+
* @param {number} slot
|
|
160
|
+
* @returns {boolean}
|
|
161
|
+
*/
|
|
162
|
+
had_contacts_prev(slot: number): boolean;
|
|
163
|
+
/**
|
|
164
|
+
* Whether the slot was created by its most recent acquire (and not yet
|
|
165
|
+
* re-acquired). See {@link FLAG_FRESH}.
|
|
166
|
+
* @param {number} slot
|
|
167
|
+
* @returns {boolean}
|
|
168
|
+
*/
|
|
169
|
+
is_fresh(slot: number): boolean;
|
|
170
|
+
/**
|
|
171
|
+
* Whether the stage-0 swept-proximity predicate held for this pair when
|
|
172
|
+
* last evaluated. See {@link FLAG_PROX}.
|
|
173
|
+
* @param {number} slot
|
|
174
|
+
* @returns {boolean}
|
|
175
|
+
*/
|
|
176
|
+
is_prox(slot: number): boolean;
|
|
177
|
+
/**
|
|
178
|
+
* Record the stage-0 swept-proximity predicate's current value for the
|
|
179
|
+
* pair. See {@link FLAG_PROX}.
|
|
180
|
+
* @param {number} slot
|
|
181
|
+
* @param {boolean} value
|
|
182
|
+
*/
|
|
183
|
+
set_prox(slot: number, value: boolean): void;
|
|
184
|
+
/**
|
|
185
|
+
* Whether the pair is DORMANT: both bodies exist and both are outside the
|
|
186
|
+
* awake set (sleeping dynamics, statics, anything not simulating). A
|
|
187
|
+
* dormant pair is frozen — {@link advance_frame} skips its grace/eviction
|
|
188
|
+
* and the event diff emits nothing for it — so a sleeping stack keeps its
|
|
189
|
+
* manifolds (contacts + warm-start impulses) and neither fires a spurious
|
|
190
|
+
* ContactEnd at sleep nor re-fires ContactBegin at wake.
|
|
191
|
+
*
|
|
192
|
+
* @param {number} slot
|
|
193
|
+
* @param {BodyStorage} storage
|
|
194
|
+
* @returns {boolean}
|
|
195
|
+
*/
|
|
196
|
+
is_dormant(slot: number, storage: BodyStorage): boolean;
|
|
143
197
|
/**
|
|
144
198
|
* Iterate the dense list of currently-live slots without going through
|
|
145
199
|
* the pair map. `i` ranges `[0, count)`.
|
|
@@ -267,6 +321,26 @@ export class ManifoldStore {
|
|
|
267
321
|
* @returns {Float64Array}
|
|
268
322
|
*/
|
|
269
323
|
get data_buffer(): Float64Array;
|
|
324
|
+
/**
|
|
325
|
+
* Raw per-slot lifecycle bits — `count | touched | prev_touched | grace |
|
|
326
|
+
* had_contacts | fresh | prox` — for the contact-state export. The
|
|
327
|
+
* body-id words are NOT included: they are world-instance state, the
|
|
328
|
+
* export keys slots by entity pair instead. Pair with
|
|
329
|
+
* {@link restore_meta_bits}.
|
|
330
|
+
* @param {number} slot
|
|
331
|
+
* @returns {number}
|
|
332
|
+
*/
|
|
333
|
+
meta_bits(slot: number): number;
|
|
334
|
+
/**
|
|
335
|
+
* Overwrite a slot's lifecycle bits verbatim — the import half of
|
|
336
|
+
* {@link meta_bits}. The caller has just {@link acquire}d the slot;
|
|
337
|
+
* this replaces the acquire-time bits (touched, cleared grace, fresh)
|
|
338
|
+
* with the exported ones so the restored slot resumes the exact
|
|
339
|
+
* lifecycle position it was exported in.
|
|
340
|
+
* @param {number} slot
|
|
341
|
+
* @param {number} bits
|
|
342
|
+
*/
|
|
343
|
+
restore_meta_bits(slot: number, bits: number): void;
|
|
270
344
|
/**
|
|
271
345
|
* Word offset into {@link data_buffer} where the first contact of `slot`
|
|
272
346
|
* begins. Subsequent contacts within the slot are at
|
|
@@ -276,10 +350,20 @@ export class ManifoldStore {
|
|
|
276
350
|
*/
|
|
277
351
|
slot_data_offset(slot: number): number;
|
|
278
352
|
/**
|
|
279
|
-
* Advance touched flags by one frame and evict slots that
|
|
280
|
-
* untouched for {@link DEFAULT_GRACE} consecutive frames.
|
|
353
|
+
* Advance touched / had-contacts flags by one frame and evict slots that
|
|
354
|
+
* have been untouched for {@link DEFAULT_GRACE} consecutive frames.
|
|
355
|
+
*
|
|
356
|
+
* With `storage` provided, DORMANT slots ({@link is_dormant}: both bodies
|
|
357
|
+
* alive and outside the awake set) are frozen instead of advanced: no
|
|
358
|
+
* grace bump, no eviction, contacts + warm-start impulses + the
|
|
359
|
+
* had-contacts flag all preserved. Only the touched flag is cleared, so
|
|
360
|
+
* the frame the bodies wake, the broadphase re-acquires the pair and the
|
|
361
|
+
* narrowphase refreshes it immediately. Without `storage` (pure-store
|
|
362
|
+
* usage) every slot advances unconditionally.
|
|
363
|
+
*
|
|
364
|
+
* @param {BodyStorage} [storage] body table for the dormancy test
|
|
281
365
|
*/
|
|
282
|
-
advance_frame(): void;
|
|
366
|
+
advance_frame(storage?: BodyStorage): void;
|
|
283
367
|
/**
|
|
284
368
|
* @private
|
|
285
369
|
* @returns {number} newly-allocated slot id
|
|
@@ -294,16 +378,7 @@ export class ManifoldStore {
|
|
|
294
378
|
* @private
|
|
295
379
|
*/
|
|
296
380
|
private __grow;
|
|
297
|
-
/**
|
|
298
|
-
* @private
|
|
299
|
-
* @param {number} v
|
|
300
|
-
*/
|
|
301
|
-
private __heap_push;
|
|
302
|
-
/**
|
|
303
|
-
* @private
|
|
304
|
-
* @returns {number}
|
|
305
|
-
*/
|
|
306
|
-
private __heap_pop;
|
|
307
381
|
}
|
|
308
382
|
import { PairUint32Map } from "../../../core/collection/PairUint32Map.js";
|
|
383
|
+
import { Uint32MinHeap } from "../../../core/collection/Uint32MinHeap.js";
|
|
309
384
|
//# sourceMappingURL=ManifoldStore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ManifoldStore.d.ts","sourceRoot":"","sources":["../../../../../src/engine/physics/contact/ManifoldStore.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ManifoldStore.d.ts","sourceRoot":"","sources":["../../../../../src/engine/physics/contact/ManifoldStore.js"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,wCAFU,MAAM,CAE2B;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,6BAFU,MAAM,CAEiB;AAEjC;;;;GAIG;AACH,wCAFU,MAAM,CAE4B;AAE5C;;;GAGG;AACH,+BAFU,MAAM,CAE2D;AAmE3E;;;GAGG;AACH,mCAFU,MAAM,CAEuB;AAIvC;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH;IAEI;;OAEG;IACH,+BAFW,MAAM,EAqBhB;IAjBG,mBAA+C;IAC/C,qBAAqB;IAErB,qBAAkE;IAClE,oBAAiE;IAEjE,4BAA0D;IAG1D,0BAAoD;IACpD,uBAAiD;IAEjD,qBAAqB;IAIrB,sBAAgD;IAGpD;;OAEG;IACH,oBAEC;IAED;;;;;;;;OAQG;IACH,cAMC;IAED;;OAEG;IACH,uBAEC;IAED;;;;;;;OAOG;IACH,UAJW,MAAM,OACN,MAAM,GACJ,MAAM,CAKlB;IAED;;;;;;;;OAQG;IACH,aAJW,MAAM,OACN,MAAM,GACJ,MAAM,CA6BlB;IAED;;;OAGG;IACH,YAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;OAGG;IACH,YAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;OAGG;IACH,oBAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;OAGG;IACH,iBAHW,MAAM,GACJ,OAAO,CAInB;IAED;;;OAGG;IACH,uBAHW,MAAM,GACJ,OAAO,CAInB;IAED;;;;;OAKG;IACH,wBAHW,MAAM,GACJ,OAAO,CAInB;IAED;;;;;OAKG;IACH,eAHW,MAAM,GACJ,OAAO,CAInB;IAED;;;;;OAKG;IACH,cAHW,MAAM,GACJ,OAAO,CAInB;IAED;;;;;OAKG;IACH,eAHW,MAAM,SACN,OAAO,QASjB;IAED;;;;;;;;;;;OAWG;IACH,iBAJW,MAAM,yBAEJ,OAAO,CAUnB;IAED;;;;;OAKG;IACH,WAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;;;OAKG;IACH,qBAFW,MAAM,QAQhB;IAED;;;;;;;;;;;;;OAaG;IACH,mBAFW,MAAM,QAKhB;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,kBAnBW,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,SACN,MAAM,eACN,MAAM,aAGN,MAAM,gBAEN,MAAM,QAwBhB;IAED;;;;;OAKG;IACH,kBAJW,MAAM,OACN,MAAM,GACJ,MAAM,CAIlB;IAED;;;;;OAKG;IACH,qBAJW,MAAM,OACN,MAAM,GACJ,MAAM,CAIlB;IAED;;;;;;;;;;;;;;;OAeG;IACH,qBAHW,MAAM,OACN,MAAM,QAOhB;IAED;;;;;OAKG;IACH,oBAJW,MAAM,OACN,MAAM,GACJ,MAAM,CAIlB;IAED;;;;;;OAMG;IACH,kBALW,MAAM,OACN,MAAM,OACN,MAAM,EAAE,GAAC,YAAY,cACrB,MAAM,QAOhB;IAED;;;;;;OAMG;IACH,uBAJW,MAAM,OACN,MAAM,GACJ,MAAM,CAIlB;IAED,iEAAiE;IACjE,uBADY,MAAM,OAAe,MAAM,GAAgB,MAAM,CAG5D;IAED,iEAAiE;IACjE,uBADY,MAAM,OAAe,MAAM,GAAgB,MAAM,CAG5D;IAED,iEAAiE;IACjE,oBADY,MAAM,OAAe,MAAM,GAAgB,MAAM,CAG5D;IAED;;;;;OAKG;IACH,gCAEC;IAED;;;;;;;;OAQG;IACH,gBAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;;;;;;OAQG;IACH,wBAHW,MAAM,QACN,MAAM,QAIhB;IAED;;;;;;OAMG;IACH,uBAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;;;;;;;;;;;OAaG;IACH,2CAgDC;IAED;;;OAGG;IACH,wBAcC;IAED;;;OAGG;IACH,uBAkBC;IAED;;OAEG;IACH,eA2BC;CAEJ;8BA3uBqD,2CAA2C;8BACnE,2CAA2C"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { assert } from "../../../core/assert.js";
|
|
2
2
|
import { PAIR_UINT32_MAP_ABSENT, PairUint32Map } from "../../../core/collection/PairUint32Map.js";
|
|
3
|
+
import { Uint32MinHeap } from "../../../core/collection/Uint32MinHeap.js";
|
|
4
|
+
import { body_id_index } from "../body/BodyStorage.js";
|
|
3
5
|
|
|
4
6
|
/**
|
|
5
7
|
* Maximum contact points per manifold. Four is the universal industry choice
|
|
@@ -57,7 +59,8 @@ export const SLOT_DATA_STRIDE = CONTACT_STRIDE * MAX_CONTACTS_PER_MANIFOLD;
|
|
|
57
59
|
* Per-slot meta stride in the Uint32 meta buffer:
|
|
58
60
|
* 0 : bodyA
|
|
59
61
|
* 1 : bodyB
|
|
60
|
-
* 2 : packed = count(0..3) | touched(bit 4) | prev_touched(bit 5) |
|
|
62
|
+
* 2 : packed = count(0..3) | touched(bit 4) | prev_touched(bit 5) |
|
|
63
|
+
* grace(bits 6..13) | had_contacts(bit 14)
|
|
61
64
|
* @type {number}
|
|
62
65
|
*/
|
|
63
66
|
const SLOT_META_STRIDE = 3;
|
|
@@ -68,6 +71,47 @@ const COUNT_MASK = 0x0F;
|
|
|
68
71
|
const GRACE_SHIFT = 6;
|
|
69
72
|
const GRACE_MASK = 0xFF; // 8 bits
|
|
70
73
|
|
|
74
|
+
/**
|
|
75
|
+
* "The previous frame ended with stored contacts." Rolled from
|
|
76
|
+
* `contact_count > 0` by {@link advance_frame}; read by the event diff so
|
|
77
|
+
* Begin/Stay/End track CONTACT transitions, not broadphase proximity (the
|
|
78
|
+
* touched flag is fat-AABB overlap — up to ~10 cm of separation at rest).
|
|
79
|
+
* Preserved while a pair is dormant (both bodies asleep), so waking resumes
|
|
80
|
+
* with Stay rather than re-firing Begin.
|
|
81
|
+
* @type {number}
|
|
82
|
+
*/
|
|
83
|
+
const FLAG_HAD_CONTACTS = 1 << 14;
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* "This slot was allocated by the most recent acquire of this pair" — set
|
|
87
|
+
* when {@link acquire} creates the slot, cleared by the pair's next acquire
|
|
88
|
+
* (i.e. the following frame's broadphase).
|
|
89
|
+
*
|
|
90
|
+
* History: this used to be the precautionary-wake trigger ("a brand-new
|
|
91
|
+
* pair means something arrived near a sleeper"). It no longer is — pair
|
|
92
|
+
* CREATION time depends on broadphase fat-box history (when leaves were
|
|
93
|
+
* last refit), which two engines holding identical body state need not
|
|
94
|
+
* share, so a creation-keyed wake breaks reconstruction determinism. The
|
|
95
|
+
* wake stage now uses the state-derived swept-proximity edge
|
|
96
|
+
* ({@link FLAG_PROX}); FRESH remains as a query for diagnostics and tests.
|
|
97
|
+
* @type {number}
|
|
98
|
+
*/
|
|
99
|
+
const FLAG_FRESH = 1 << 15;
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* "The stage-0 swept-proximity predicate held when this pair was last
|
|
103
|
+
* evaluated" — the memory bit of the EDGE-triggered pre-contact wake
|
|
104
|
+
* (PhysicsSystem.__wake_pairs): a sleeper is woken when the predicate
|
|
105
|
+
* (mover's velocity-swept tight AABB overlaps the sleeper's tight AABB —
|
|
106
|
+
* pure body state) turns false→true, not while it merely holds, so a
|
|
107
|
+
* mover hovering inside the window doesn't re-wake the sleeper every
|
|
108
|
+
* frame. Cleared on slot allocation, preserved across re-acquire,
|
|
109
|
+
* exported/imported with the contact state so a reconstructed engine
|
|
110
|
+
* resumes with the same edge memory.
|
|
111
|
+
* @type {number}
|
|
112
|
+
*/
|
|
113
|
+
const FLAG_PROX = 1 << 16;
|
|
114
|
+
|
|
71
115
|
/**
|
|
72
116
|
* Number of consecutive frames a manifold may stay untouched before eviction.
|
|
73
117
|
* Two frames of grace lets a one-frame separation survive (jitter friendly)
|
|
@@ -85,7 +129,11 @@ export const MANIFOLD_SLOT_ABSENT = -1;
|
|
|
85
129
|
const DEFAULT_INITIAL_CAPACITY = 64;
|
|
86
130
|
|
|
87
131
|
/**
|
|
88
|
-
* Persistent contact-manifold cache keyed by canonical body-id pairs
|
|
132
|
+
* Persistent contact-manifold cache keyed by canonical body-id pairs —
|
|
133
|
+
* canonical meaning ENTITY order: the broadphase assigns the pair's A role
|
|
134
|
+
* to the body with the smaller entity id (see generate_pairs), so the A/B
|
|
135
|
+
* roles (witness sides, normal orientation) are identical in every engine
|
|
136
|
+
* holding the same bodies, regardless of slot-allocation history.
|
|
89
137
|
*
|
|
90
138
|
* Owns:
|
|
91
139
|
* - the SoA `Float64Array` of contact points (per-slot stride 52),
|
|
@@ -127,9 +175,9 @@ export class ManifoldStore {
|
|
|
127
175
|
this.__live_pos.fill(-1);
|
|
128
176
|
this.__live_count = 0;
|
|
129
177
|
|
|
130
|
-
// Min-heap of released slot ids
|
|
131
|
-
|
|
132
|
-
this.
|
|
178
|
+
// Min-heap of released slot ids — reuse is deterministic
|
|
179
|
+
// (lowest released slot first). Self-growing.
|
|
180
|
+
this.__free = new Uint32MinHeap(this.__capacity);
|
|
133
181
|
}
|
|
134
182
|
|
|
135
183
|
/**
|
|
@@ -139,6 +187,23 @@ export class ManifoldStore {
|
|
|
139
187
|
return this.__live_count;
|
|
140
188
|
}
|
|
141
189
|
|
|
190
|
+
/**
|
|
191
|
+
* Drop every live slot: empty pair index, empty live list, all slot ids
|
|
192
|
+
* back on the free heap, high-water mark reset. Capacity is retained.
|
|
193
|
+
*
|
|
194
|
+
* For world reconstruction (remove every body, re-add from a snapshot,
|
|
195
|
+
* then import the exported contact state into the emptied store) — the
|
|
196
|
+
* import requires an empty store so slot allocation starts from a known
|
|
197
|
+
* state.
|
|
198
|
+
*/
|
|
199
|
+
clear() {
|
|
200
|
+
this.__pair_index.clear();
|
|
201
|
+
this.__live_pos.fill(-1);
|
|
202
|
+
this.__live_count = 0;
|
|
203
|
+
this.__free.clear();
|
|
204
|
+
this.__high_water = 0;
|
|
205
|
+
}
|
|
206
|
+
|
|
142
207
|
/**
|
|
143
208
|
* @returns {number} total allocated slot capacity
|
|
144
209
|
*/
|
|
@@ -170,6 +235,7 @@ export class ManifoldStore {
|
|
|
170
235
|
*/
|
|
171
236
|
acquire(idA, idB) {
|
|
172
237
|
let slot = this.find(idA, idB);
|
|
238
|
+
let fresh;
|
|
173
239
|
if (slot === MANIFOLD_SLOT_ABSENT) {
|
|
174
240
|
slot = this.__allocate_slot();
|
|
175
241
|
const meta_off = slot * SLOT_META_STRIDE;
|
|
@@ -182,11 +248,15 @@ export class ManifoldStore {
|
|
|
182
248
|
this.__data.fill(0, data_off, data_off + SLOT_DATA_STRIDE);
|
|
183
249
|
|
|
184
250
|
this.__pair_index.set(idA, idB, slot);
|
|
251
|
+
fresh = FLAG_FRESH;
|
|
252
|
+
} else {
|
|
253
|
+
fresh = 0; // a re-acquire ends the slot's "just created" window
|
|
185
254
|
}
|
|
186
255
|
const meta_off = slot * SLOT_META_STRIDE;
|
|
187
|
-
// Set touched bit, clear grace.
|
|
256
|
+
// Set touched bit, set/clear fresh, clear grace.
|
|
188
257
|
let packed = this.__meta[meta_off + 2];
|
|
189
258
|
packed |= FLAG_TOUCHED;
|
|
259
|
+
packed = (packed & ~FLAG_FRESH) | fresh;
|
|
190
260
|
packed &= ~(GRACE_MASK << GRACE_SHIFT);
|
|
191
261
|
this.__meta[meta_off + 2] = packed;
|
|
192
262
|
return slot;
|
|
@@ -232,6 +302,73 @@ export class ManifoldStore {
|
|
|
232
302
|
return (this.__meta[slot * SLOT_META_STRIDE + 2] & FLAG_PREV_TOUCHED) !== 0;
|
|
233
303
|
}
|
|
234
304
|
|
|
305
|
+
/**
|
|
306
|
+
* Whether the slot ended the PREVIOUS frame with stored contacts — the
|
|
307
|
+
* event diff's "was in contact" side. See {@link FLAG_HAD_CONTACTS}.
|
|
308
|
+
* @param {number} slot
|
|
309
|
+
* @returns {boolean}
|
|
310
|
+
*/
|
|
311
|
+
had_contacts_prev(slot) {
|
|
312
|
+
return (this.__meta[slot * SLOT_META_STRIDE + 2] & FLAG_HAD_CONTACTS) !== 0;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
/**
|
|
316
|
+
* Whether the slot was created by its most recent acquire (and not yet
|
|
317
|
+
* re-acquired). See {@link FLAG_FRESH}.
|
|
318
|
+
* @param {number} slot
|
|
319
|
+
* @returns {boolean}
|
|
320
|
+
*/
|
|
321
|
+
is_fresh(slot) {
|
|
322
|
+
return (this.__meta[slot * SLOT_META_STRIDE + 2] & FLAG_FRESH) !== 0;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
/**
|
|
326
|
+
* Whether the stage-0 swept-proximity predicate held for this pair when
|
|
327
|
+
* last evaluated. See {@link FLAG_PROX}.
|
|
328
|
+
* @param {number} slot
|
|
329
|
+
* @returns {boolean}
|
|
330
|
+
*/
|
|
331
|
+
is_prox(slot) {
|
|
332
|
+
return (this.__meta[slot * SLOT_META_STRIDE + 2] & FLAG_PROX) !== 0;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
/**
|
|
336
|
+
* Record the stage-0 swept-proximity predicate's current value for the
|
|
337
|
+
* pair. See {@link FLAG_PROX}.
|
|
338
|
+
* @param {number} slot
|
|
339
|
+
* @param {boolean} value
|
|
340
|
+
*/
|
|
341
|
+
set_prox(slot, value) {
|
|
342
|
+
const meta_off = slot * SLOT_META_STRIDE + 2;
|
|
343
|
+
if (value) {
|
|
344
|
+
this.__meta[meta_off] |= FLAG_PROX;
|
|
345
|
+
} else {
|
|
346
|
+
this.__meta[meta_off] &= ~FLAG_PROX;
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
/**
|
|
351
|
+
* Whether the pair is DORMANT: both bodies exist and both are outside the
|
|
352
|
+
* awake set (sleeping dynamics, statics, anything not simulating). A
|
|
353
|
+
* dormant pair is frozen — {@link advance_frame} skips its grace/eviction
|
|
354
|
+
* and the event diff emits nothing for it — so a sleeping stack keeps its
|
|
355
|
+
* manifolds (contacts + warm-start impulses) and neither fires a spurious
|
|
356
|
+
* ContactEnd at sleep nor re-fires ContactBegin at wake.
|
|
357
|
+
*
|
|
358
|
+
* @param {number} slot
|
|
359
|
+
* @param {BodyStorage} storage
|
|
360
|
+
* @returns {boolean}
|
|
361
|
+
*/
|
|
362
|
+
is_dormant(slot, storage) {
|
|
363
|
+
const meta_off = slot * SLOT_META_STRIDE;
|
|
364
|
+
const idA = this.__meta[meta_off];
|
|
365
|
+
const idB = this.__meta[meta_off + 1];
|
|
366
|
+
if (!storage.is_valid(idA) || !storage.is_valid(idB)) {
|
|
367
|
+
return false; // a freed body is gone, not asleep — let the slot lapse
|
|
368
|
+
}
|
|
369
|
+
return !storage.is_awake(body_id_index(idA)) && !storage.is_awake(body_id_index(idB));
|
|
370
|
+
}
|
|
371
|
+
|
|
235
372
|
/**
|
|
236
373
|
* Iterate the dense list of currently-live slots without going through
|
|
237
374
|
* the pair map. `i` ranges `[0, count)`.
|
|
@@ -432,6 +569,32 @@ export class ManifoldStore {
|
|
|
432
569
|
return this.__data;
|
|
433
570
|
}
|
|
434
571
|
|
|
572
|
+
/**
|
|
573
|
+
* Raw per-slot lifecycle bits — `count | touched | prev_touched | grace |
|
|
574
|
+
* had_contacts | fresh | prox` — for the contact-state export. The
|
|
575
|
+
* body-id words are NOT included: they are world-instance state, the
|
|
576
|
+
* export keys slots by entity pair instead. Pair with
|
|
577
|
+
* {@link restore_meta_bits}.
|
|
578
|
+
* @param {number} slot
|
|
579
|
+
* @returns {number}
|
|
580
|
+
*/
|
|
581
|
+
meta_bits(slot) {
|
|
582
|
+
return this.__meta[slot * SLOT_META_STRIDE + 2];
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
/**
|
|
586
|
+
* Overwrite a slot's lifecycle bits verbatim — the import half of
|
|
587
|
+
* {@link meta_bits}. The caller has just {@link acquire}d the slot;
|
|
588
|
+
* this replaces the acquire-time bits (touched, cleared grace, fresh)
|
|
589
|
+
* with the exported ones so the restored slot resumes the exact
|
|
590
|
+
* lifecycle position it was exported in.
|
|
591
|
+
* @param {number} slot
|
|
592
|
+
* @param {number} bits
|
|
593
|
+
*/
|
|
594
|
+
restore_meta_bits(slot, bits) {
|
|
595
|
+
this.__meta[slot * SLOT_META_STRIDE + 2] = bits;
|
|
596
|
+
}
|
|
597
|
+
|
|
435
598
|
/**
|
|
436
599
|
* Word offset into {@link data_buffer} where the first contact of `slot`
|
|
437
600
|
* begins. Subsequent contacts within the slot are at
|
|
@@ -444,10 +607,20 @@ export class ManifoldStore {
|
|
|
444
607
|
}
|
|
445
608
|
|
|
446
609
|
/**
|
|
447
|
-
* Advance touched flags by one frame and evict slots that
|
|
448
|
-
* untouched for {@link DEFAULT_GRACE} consecutive frames.
|
|
610
|
+
* Advance touched / had-contacts flags by one frame and evict slots that
|
|
611
|
+
* have been untouched for {@link DEFAULT_GRACE} consecutive frames.
|
|
612
|
+
*
|
|
613
|
+
* With `storage` provided, DORMANT slots ({@link is_dormant}: both bodies
|
|
614
|
+
* alive and outside the awake set) are frozen instead of advanced: no
|
|
615
|
+
* grace bump, no eviction, contacts + warm-start impulses + the
|
|
616
|
+
* had-contacts flag all preserved. Only the touched flag is cleared, so
|
|
617
|
+
* the frame the bodies wake, the broadphase re-acquires the pair and the
|
|
618
|
+
* narrowphase refreshes it immediately. Without `storage` (pure-store
|
|
619
|
+
* usage) every slot advances unconditionally.
|
|
620
|
+
*
|
|
621
|
+
* @param {BodyStorage} [storage] body table for the dormancy test
|
|
449
622
|
*/
|
|
450
|
-
advance_frame() {
|
|
623
|
+
advance_frame(storage = null) {
|
|
451
624
|
// Iterate live slots backwards so swap-with-last during release doesn't
|
|
452
625
|
// skip indices.
|
|
453
626
|
for (let i = this.__live_count - 1; i >= 0; i--) {
|
|
@@ -455,11 +628,26 @@ export class ManifoldStore {
|
|
|
455
628
|
const meta_off = slot * SLOT_META_STRIDE;
|
|
456
629
|
let packed = this.__meta[meta_off + 2];
|
|
457
630
|
|
|
631
|
+
if (storage !== null && this.is_dormant(slot, storage)) {
|
|
632
|
+
// Freeze the sleeping pair. Clearing only `touched` keeps
|
|
633
|
+
// generate_pairs' dedup from suppressing the pair on the wake
|
|
634
|
+
// frame; everything else (grace, had_contacts, contact data)
|
|
635
|
+
// stays exactly as it was when the bodies fell asleep.
|
|
636
|
+
this.__meta[meta_off + 2] = packed & ~FLAG_TOUCHED;
|
|
637
|
+
continue;
|
|
638
|
+
}
|
|
639
|
+
|
|
458
640
|
const was_touched = (packed & FLAG_TOUCHED) !== 0;
|
|
459
641
|
// Roll touched → prev_touched, clear touched.
|
|
460
642
|
if (was_touched) {
|
|
461
643
|
packed |= FLAG_PREV_TOUCHED; // single-bit mask: clear-then-set is just set
|
|
462
644
|
packed &= ~FLAG_TOUCHED;
|
|
645
|
+
// Roll "ended the frame with contacts" for the event diff.
|
|
646
|
+
if ((packed & COUNT_MASK) !== 0) {
|
|
647
|
+
packed |= FLAG_HAD_CONTACTS;
|
|
648
|
+
} else {
|
|
649
|
+
packed &= ~FLAG_HAD_CONTACTS;
|
|
650
|
+
}
|
|
463
651
|
// Reset grace.
|
|
464
652
|
packed &= ~(GRACE_MASK << GRACE_SHIFT);
|
|
465
653
|
this.__meta[meta_off + 2] = packed;
|
|
@@ -467,6 +655,10 @@ export class ManifoldStore {
|
|
|
467
655
|
// Bump grace.
|
|
468
656
|
const grace = ((packed >>> GRACE_SHIFT) & GRACE_MASK) + 1;
|
|
469
657
|
packed &= ~FLAG_PREV_TOUCHED;
|
|
658
|
+
// Proximity lapsed: the stored contacts are stale leftovers
|
|
659
|
+
// from the last narrowphased frame (the End event for them
|
|
660
|
+
// fired in this frame's diff).
|
|
661
|
+
packed &= ~FLAG_HAD_CONTACTS;
|
|
470
662
|
packed &= ~(GRACE_MASK << GRACE_SHIFT);
|
|
471
663
|
packed |= (grace & GRACE_MASK) << GRACE_SHIFT;
|
|
472
664
|
this.__meta[meta_off + 2] = packed;
|
|
@@ -484,8 +676,8 @@ export class ManifoldStore {
|
|
|
484
676
|
*/
|
|
485
677
|
__allocate_slot() {
|
|
486
678
|
let slot;
|
|
487
|
-
if (this.
|
|
488
|
-
slot = this.
|
|
679
|
+
if (this.__free.size > 0) {
|
|
680
|
+
slot = this.__free.pop();
|
|
489
681
|
} else {
|
|
490
682
|
if (this.__high_water === this.__capacity) {
|
|
491
683
|
this.__grow();
|
|
@@ -519,7 +711,7 @@ export class ManifoldStore {
|
|
|
519
711
|
}
|
|
520
712
|
this.__live_pos[slot] = -1;
|
|
521
713
|
|
|
522
|
-
this.
|
|
714
|
+
this.__free.push(slot);
|
|
523
715
|
}
|
|
524
716
|
|
|
525
717
|
/**
|
|
@@ -552,54 +744,6 @@ export class ManifoldStore {
|
|
|
552
744
|
next_live_pos.fill(-1, this.__live_pos.length);
|
|
553
745
|
this.__live_pos = next_live_pos;
|
|
554
746
|
|
|
555
|
-
const next_free = new Uint32Array(new_capacity);
|
|
556
|
-
next_free.set(this.__free_heap);
|
|
557
|
-
this.__free_heap = next_free;
|
|
558
747
|
}
|
|
559
748
|
|
|
560
|
-
/**
|
|
561
|
-
* @private
|
|
562
|
-
* @param {number} v
|
|
563
|
-
*/
|
|
564
|
-
__heap_push(v) {
|
|
565
|
-
const heap = this.__free_heap;
|
|
566
|
-
let i = this.__free_count++;
|
|
567
|
-
heap[i] = v;
|
|
568
|
-
while (i > 0) {
|
|
569
|
-
const parent = (i - 1) >>> 1;
|
|
570
|
-
if (heap[parent] > heap[i]) {
|
|
571
|
-
const tmp = heap[parent];
|
|
572
|
-
heap[parent] = heap[i];
|
|
573
|
-
heap[i] = tmp;
|
|
574
|
-
i = parent;
|
|
575
|
-
} else break;
|
|
576
|
-
}
|
|
577
|
-
}
|
|
578
|
-
|
|
579
|
-
/**
|
|
580
|
-
* @private
|
|
581
|
-
* @returns {number}
|
|
582
|
-
*/
|
|
583
|
-
__heap_pop() {
|
|
584
|
-
const heap = this.__free_heap;
|
|
585
|
-
const result = heap[0];
|
|
586
|
-
const new_count = --this.__free_count;
|
|
587
|
-
if (new_count > 0) {
|
|
588
|
-
heap[0] = heap[new_count];
|
|
589
|
-
let i = 0;
|
|
590
|
-
while (true) {
|
|
591
|
-
const l = (i << 1) + 1;
|
|
592
|
-
const r = l + 1;
|
|
593
|
-
let smallest = i;
|
|
594
|
-
if (l < new_count && heap[l] < heap[smallest]) smallest = l;
|
|
595
|
-
if (r < new_count && heap[r] < heap[smallest]) smallest = r;
|
|
596
|
-
if (smallest === i) break;
|
|
597
|
-
const tmp = heap[i];
|
|
598
|
-
heap[i] = heap[smallest];
|
|
599
|
-
heap[smallest] = tmp;
|
|
600
|
-
i = smallest;
|
|
601
|
-
}
|
|
602
|
-
}
|
|
603
|
-
return result;
|
|
604
|
-
}
|
|
605
749
|
}
|
|
@@ -6,9 +6,13 @@
|
|
|
6
6
|
* common case for game-play objects.
|
|
7
7
|
* - {@link BodyKind.KinematicVelocity }: driven externally by velocity. Pushes Dynamic
|
|
8
8
|
* bodies but is not pushed back. Mass effectively infinite for the solver.
|
|
9
|
-
* - {@link BodyKind.KinematicPosition }: driven externally by direct pose writes.
|
|
10
|
-
*
|
|
11
|
-
*
|
|
9
|
+
* - {@link BodyKind.KinematicPosition }: driven externally by direct pose writes.
|
|
10
|
+
* RESERVED, not yet implemented: per-step velocity derivation is NOT
|
|
11
|
+
* performed, so pose-driven movers currently present to the solver as
|
|
12
|
+
* stationary walls that teleport. (Deriving velocity implicitly from
|
|
13
|
+
* Transform deltas is deliberately deferred — without a separate
|
|
14
|
+
* move/teleport API a spawn snap would read as an enormous velocity and
|
|
15
|
+
* explode contacts. Prefer KinematicVelocity for movers until then.)
|
|
12
16
|
*
|
|
13
17
|
* These are plain enum ordinals compared by identity (`=== BodyKind.Dynamic`),
|
|
14
18
|
* NOT a bitmask: Static is 0 (can't participate in a mask) and the values are
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BodyKind.d.ts","sourceRoot":"","sources":["../../../../../src/engine/physics/ecs/BodyKind.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BodyKind.d.ts","sourceRoot":"","sources":["../../../../../src/engine/physics/ecs/BodyKind.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;uBAqBU,MAAM"}
|
|
@@ -1,25 +1,29 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Kind of a rigid body. Determines how the body participates in the simulation:
|
|
3
|
-
* - {@link BodyKind.Static}: never moves. Has infinite mass. Ideal for level geometry.
|
|
4
|
-
* Stored in the static broadphase tree.
|
|
5
|
-
* - {@link BodyKind.Dynamic}: integrated under forces, gravity and contact impulses. The
|
|
6
|
-
* common case for game-play objects.
|
|
7
|
-
* - {@link BodyKind.KinematicVelocity}: driven externally by velocity. Pushes Dynamic
|
|
8
|
-
* bodies but is not pushed back. Mass effectively infinite for the solver.
|
|
9
|
-
* - {@link BodyKind.KinematicPosition}: driven externally by direct pose writes.
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Kind of a rigid body. Determines how the body participates in the simulation:
|
|
3
|
+
* - {@link BodyKind.Static}: never moves. Has infinite mass. Ideal for level geometry.
|
|
4
|
+
* Stored in the static broadphase tree.
|
|
5
|
+
* - {@link BodyKind.Dynamic}: integrated under forces, gravity and contact impulses. The
|
|
6
|
+
* common case for game-play objects.
|
|
7
|
+
* - {@link BodyKind.KinematicVelocity}: driven externally by velocity. Pushes Dynamic
|
|
8
|
+
* bodies but is not pushed back. Mass effectively infinite for the solver.
|
|
9
|
+
* - {@link BodyKind.KinematicPosition}: driven externally by direct pose writes.
|
|
10
|
+
* RESERVED, not yet implemented: per-step velocity derivation is NOT
|
|
11
|
+
* performed, so pose-driven movers currently present to the solver as
|
|
12
|
+
* stationary walls that teleport. (Deriving velocity implicitly from
|
|
13
|
+
* Transform deltas is deliberately deferred — without a separate
|
|
14
|
+
* move/teleport API a spawn snap would read as an enormous velocity and
|
|
15
|
+
* explode contacts. Prefer KinematicVelocity for movers until then.)
|
|
16
|
+
*
|
|
17
|
+
* These are plain enum ordinals compared by identity (`=== BodyKind.Dynamic`),
|
|
18
|
+
* NOT a bitmask: Static is 0 (can't participate in a mask) and the values are
|
|
19
|
+
* not bit-distinct (KinematicPosition 3 === Dynamic 1 | KinematicVelocity 2).
|
|
20
|
+
*
|
|
21
|
+
* @readonly
|
|
22
|
+
* @enum {number}
|
|
23
|
+
*/
|
|
24
|
+
export const BodyKind = {
|
|
25
|
+
Static: 0,
|
|
26
|
+
Dynamic: 1,
|
|
27
|
+
KinematicVelocity: 2,
|
|
28
|
+
KinematicPosition: 3,
|
|
29
|
+
};
|
|
@@ -77,6 +77,13 @@ export class Collider {
|
|
|
77
77
|
* @param {boolean} value
|
|
78
78
|
*/
|
|
79
79
|
writeFlag(flag: number | ColliderFlags, value: boolean): void;
|
|
80
|
+
/**
|
|
81
|
+
* Surface material + flags only. `shape` is deliberately NOT serialised —
|
|
82
|
+
* shapes are shared, immutable assets wired up by the asset pipeline,
|
|
83
|
+
* exactly as the binary {@link ColliderSerializationAdapter} documents.
|
|
84
|
+
* ({@link equals} DOES compare shapes: value equality and serialisation
|
|
85
|
+
* answer different questions.)
|
|
86
|
+
*/
|
|
80
87
|
toJSON(): {
|
|
81
88
|
friction: number;
|
|
82
89
|
restitution: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Collider.d.ts","sourceRoot":"","sources":["../../../../../src/engine/physics/ecs/Collider.js"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,+BAFU,MAAM,CAEmB;AAEnC;;;;;;;;;;GAUG;AACH;IAEI;;;OAGG;IACH,OAFU,eAAe,CAEU;IAEnC;;;;OAIG;IACH,UAFU,MAAM,CAED;IAEf;;;;OAIG;IACH,aAFU,MAAM,CAEA;IAEhB;;;;OAIG;IACH,SAFU,MAAM,CAEJ;IAEZ;;OAEG;IACH,OAFU,aAAa,GAAC,MAAM,CAEH;IAE3B;;;OAGG;IACH,UAFU,MAAM,CAEY;IAE5B;;;;OAIG;IACH,SAFU,MAAM,CAEH;IAEb;;;OAGG;IACH,cAFW,MAAM,GAAC,aAAa,QAI9B;IAED;;;OAGG;IACH,gBAFW,MAAM,GAAC,aAAa,QAI9B;IAED;;;;OAIG;IACH,cAHW,MAAM,GAAC,aAAa,GAClB,OAAO,CAInB;IAED;;;;OAIG;IACH,gBAHW,MAAM,GAAC,aAAa,SACpB,OAAO,QAQjB;IAED;;;;;MAOC;IAED,0BAKC;IAED;;;;;;;;OAQG;IACH,cAHW,QAAQ,GACN,OAAO,CAWnB;IAED;;;OAGG;IACH,QAFa,MAAM,CASlB;IASL;;;OAGG;IACH,qBAFU,OAAO,CAEY;CAZ5B;;kBAIS,MAAM;;
|
|
1
|
+
{"version":3,"file":"Collider.d.ts","sourceRoot":"","sources":["../../../../../src/engine/physics/ecs/Collider.js"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,+BAFU,MAAM,CAEmB;AAEnC;;;;;;;;;;GAUG;AACH;IAEI;;;OAGG;IACH,OAFU,eAAe,CAEU;IAEnC;;;;OAIG;IACH,UAFU,MAAM,CAED;IAEf;;;;OAIG;IACH,aAFU,MAAM,CAEA;IAEhB;;;;OAIG;IACH,SAFU,MAAM,CAEJ;IAEZ;;OAEG;IACH,OAFU,aAAa,GAAC,MAAM,CAEH;IAE3B;;;OAGG;IACH,UAFU,MAAM,CAEY;IAE5B;;;;OAIG;IACH,SAFU,MAAM,CAEH;IAEb;;;OAGG;IACH,cAFW,MAAM,GAAC,aAAa,QAI9B;IAED;;;OAGG;IACH,gBAFW,MAAM,GAAC,aAAa,QAI9B;IAED;;;;OAIG;IACH,cAHW,MAAM,GAAC,aAAa,GAClB,OAAO,CAInB;IAED;;;;OAIG;IACH,gBAHW,MAAM,GAAC,aAAa,SACpB,OAAO,QAQjB;IAED;;;;;;OAMG;IACH;;;;;MAOC;IAED,0BAKC;IAED;;;;;;;;OAQG;IACH,cAHW,QAAQ,GACN,OAAO,CAWnB;IAED;;;OAGG;IACH,QAFa,MAAM,CASlB;IASL;;;OAGG;IACH,qBAFU,OAAO,CAEY;CAZ5B;;kBAIS,MAAM;;gCAvKgB,gDAAgD;8BAElD,oBAAoB"}
|
|
@@ -107,6 +107,13 @@ export class Collider {
|
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
109
|
|
|
110
|
+
/**
|
|
111
|
+
* Surface material + flags only. `shape` is deliberately NOT serialised —
|
|
112
|
+
* shapes are shared, immutable assets wired up by the asset pipeline,
|
|
113
|
+
* exactly as the binary {@link ColliderSerializationAdapter} documents.
|
|
114
|
+
* ({@link equals} DOES compare shapes: value equality and serialisation
|
|
115
|
+
* answer different questions.)
|
|
116
|
+
*/
|
|
110
117
|
toJSON() {
|
|
111
118
|
return {
|
|
112
119
|
friction: this.friction,
|
|
@@ -32,6 +32,6 @@ export class ColliderSerializationAdapter extends BinaryClassSerializationAdapte
|
|
|
32
32
|
value.friction = buffer.readFloat64();
|
|
33
33
|
value.restitution = buffer.readFloat64();
|
|
34
34
|
value.density = buffer.readFloat64();
|
|
35
|
-
value.flags = buffer.readUint32();
|
|
35
|
+
value.flags = buffer.readUint32() | 0; // normalise signedness like the RigidBody adapter
|
|
36
36
|
}
|
|
37
37
|
}
|