@woosh/meep-engine 2.169.1 → 2.169.2
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/editor/ecs/component/editors/NumericIntervalEditor.js +18 -35
- package/editor/ecs/component/editors/ObservedIntegerEditor.js +22 -43
- package/editor/ecs/component/editors/ObservedStringEditor.js +34 -51
- package/editor/ecs/component/editors/common/makeV3_editor.js +12 -30
- package/editor/ecs/component/editors/common/two_way_sync.js +50 -0
- package/editor/ecs/component/editors/geom/QuaternionEditor.js +20 -35
- package/editor/ecs/component/editors/geom/Vector1Editor.js +5 -28
- package/editor/ecs/component/editors/primitive/NumberEditor.js +15 -31
- package/editor/tools/paint/TerrainHeightPaintTool.js +22 -31
- package/editor/tools/paint/TerrainPaintTool.js +85 -13
- package/editor/tools/paint/TerrainTexturePaintTool.js +18 -29
- package/editor/view/ecs/components/TerrainController.js +1 -4
- package/package.json +1 -1
- package/src/DUPLICATION_AUDIT_2026_08_07/00_core_reuse_surface.md +738 -0
- package/src/DUPLICATION_AUDIT_2026_08_07/A_core_math_geom.md +79 -0
- package/src/DUPLICATION_AUDIT_2026_08_07/B_core_data.md +93 -0
- package/src/DUPLICATION_AUDIT_2026_08_07/C_gfx_render.md +80 -0
- package/src/DUPLICATION_AUDIT_2026_08_07/D_gfx_features.md +164 -0
- package/src/DUPLICATION_AUDIT_2026_08_07/E_physics.md +69 -0
- package/src/DUPLICATION_AUDIT_2026_08_07/F_sound.md +102 -0
- package/src/DUPLICATION_AUDIT_2026_08_07/G_net_save.md +129 -0
- package/src/DUPLICATION_AUDIT_2026_08_07/H_engine_misc.md +72 -0
- package/src/DUPLICATION_AUDIT_2026_08_07/I_generation_view.md +74 -0
- package/src/DUPLICATION_AUDIT_2026_08_07/K_crosscutting.md +169 -0
- package/src/DUPLICATION_AUDIT_2026_08_07.md +254 -0
- package/src/DUPLICATION_AUDIT_REMEDIATION.md +250 -0
- package/src/core/bvh2/bvh3/query/bvh_collect_user_data.js +2 -2
- package/src/core/bvh2/bvh3/query/bvh_query_leaves_generic.js +77 -77
- package/src/core/bvh2/bvh3/query/bvh_query_leaves_ray.js +90 -90
- package/src/core/bvh2/bvh3/query/bvh_query_leaves_ray_segment.js +94 -94
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_generic.js +86 -86
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_aabb.js +2 -2
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_capsule.js +2 -2
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_frustum.js +2 -2
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_sphere.js +2 -2
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_ray.js +96 -96
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_ray_segment.js +100 -100
- package/src/core/bvh2/bvh3/query/compute_tight_near_far_clipping_planes.js +2 -2
- package/src/core/bvh8/aabb3_round_to_float32.d.ts +16 -0
- package/src/core/bvh8/aabb3_round_to_float32.d.ts.map +1 -0
- package/src/core/bvh8/aabb3_round_to_float32.js +22 -0
- package/src/core/bvh8/bvh8_geometry_validate.d.ts.map +1 -1
- package/src/core/bvh8/bvh8_geometry_validate.js +1 -12
- package/src/core/bvh8/bvh8_geometry_validate_indirect.d.ts.map +1 -1
- package/src/core/bvh8/bvh8_geometry_validate_indirect.js +1 -12
- package/src/core/cache/Cache.d.ts +13 -0
- package/src/core/cache/Cache.d.ts.map +1 -1
- package/src/core/cache/Cache.js +13 -0
- package/src/core/color/operations/color_darken.d.ts +5 -2
- package/src/core/color/operations/color_darken.d.ts.map +1 -1
- package/src/core/color/operations/color_darken.js +24 -33
- package/src/core/color/operations/color_desaturate.d.ts +5 -2
- package/src/core/color/operations/color_desaturate.d.ts.map +1 -1
- package/src/core/color/operations/color_desaturate.js +24 -33
- package/src/core/color/operations/color_lighten.d.ts +5 -2
- package/src/core/color/operations/color_lighten.d.ts.map +1 -1
- package/src/core/color/operations/color_lighten.js +24 -33
- package/src/core/color/operations/color_saturate.d.ts +5 -2
- package/src/core/color/operations/color_saturate.d.ts.map +1 -1
- package/src/core/color/operations/color_saturate.js +24 -33
- package/src/core/color/operations/color_scale_okhsv_channel.d.ts +28 -0
- package/src/core/color/operations/color_scale_okhsv_channel.d.ts.map +1 -0
- package/src/core/color/operations/color_scale_okhsv_channel.js +45 -0
- package/src/core/geom/2d/hash-grid/SpatialHashGrid.d.ts.map +1 -1
- package/src/core/geom/2d/hash-grid/SpatialHashGrid.js +12 -0
- package/src/core/geom/2d/line/segment2_intersects_segment2_2d.d.ts.map +1 -1
- package/src/core/geom/2d/line/segment2_intersects_segment2_2d.js +25 -29
- package/src/core/geom/2d/line/segment2_segment_compute_intersection_array_2d.d.ts.map +1 -1
- package/src/core/geom/2d/line/segment2_segment_compute_intersection_array_2d.js +46 -51
- package/src/core/geom/2d/line/segment2_segment_intersection_fractions.d.ts +31 -0
- package/src/core/geom/2d/line/segment2_segment_intersection_fractions.d.ts.map +1 -0
- package/src/core/geom/2d/line/segment2_segment_intersection_fractions.js +52 -0
- package/src/core/geom/2d/quad-tree/qt_collect_by_circle.d.ts +6 -1
- package/src/core/geom/2d/quad-tree/qt_collect_by_circle.d.ts.map +1 -1
- package/src/core/geom/2d/quad-tree/qt_collect_by_circle.js +39 -65
- package/src/core/geom/2d/quad-tree/qt_match_data_by_circle.d.ts +15 -5
- package/src/core/geom/2d/quad-tree/qt_match_data_by_circle.d.ts.map +1 -1
- package/src/core/geom/2d/quad-tree/qt_match_data_by_circle.js +101 -70
- package/src/core/geom/2d/r-tree/StaticR2Tree.d.ts.map +1 -1
- package/src/core/geom/2d/r-tree/StaticR2Tree.js +7 -3
- package/src/core/geom/3d/aabb/aabb3_intersects_ray_segment.d.ts +7 -8
- package/src/core/geom/3d/aabb/aabb3_intersects_ray_segment.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/aabb3_intersects_ray_segment.js +15 -51
- package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_bff.d.ts.map +1 -1
- package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_bff.js +13 -14
- package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_lscm.d.ts.map +1 -1
- package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_lscm.js +2 -17
- package/src/core/geom/3d/atlas/segment/atlas_chart_roundness_delta.d.ts +22 -0
- package/src/core/geom/3d/atlas/segment/atlas_chart_roundness_delta.d.ts.map +1 -0
- package/src/core/geom/3d/atlas/segment/atlas_chart_roundness_delta.js +30 -0
- package/src/core/geom/3d/atlas/segment/atlas_segment_charts.d.ts +19 -0
- package/src/core/geom/3d/atlas/segment/atlas_segment_charts.d.ts.map +1 -1
- package/src/core/geom/3d/atlas/segment/atlas_segment_charts.js +5 -9
- package/src/core/geom/3d/atlas/segment/atlas_segment_charts_atomic.d.ts.map +1 -1
- package/src/core/geom/3d/atlas/segment/atlas_segment_charts_atomic.js +4 -12
- package/src/core/geom/3d/frustum/read_frustum_corner.d.ts +5 -0
- package/src/core/geom/3d/frustum/read_frustum_corner.d.ts.map +1 -1
- package/src/core/geom/3d/frustum/read_frustum_corner.js +8 -5
- package/src/core/geom/3d/line/line3_segment_segment_closest_point_pair.d.ts +33 -0
- package/src/core/geom/3d/line/line3_segment_segment_closest_point_pair.d.ts.map +1 -0
- package/src/core/geom/3d/line/line3_segment_segment_closest_point_pair.js +71 -0
- package/src/core/geom/3d/mat4/m4_compose.d.ts +5 -0
- package/src/core/geom/3d/mat4/m4_compose.d.ts.map +1 -1
- package/src/core/geom/3d/mat4/m4_compose.js +22 -53
- package/src/core/geom/3d/mat4/m4_decompose.d.ts +8 -0
- package/src/core/geom/3d/mat4/m4_decompose.d.ts.map +1 -1
- package/src/core/geom/3d/mat4/m4_decompose.js +84 -76
- package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale.d.ts +2 -0
- package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale.d.ts.map +1 -1
- package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale.js +10 -44
- package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_scalar.d.ts +27 -0
- package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_scalar.d.ts.map +1 -0
- package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_scalar.js +67 -0
- package/src/core/geom/3d/plane/orient3d_fast.d.ts.map +1 -1
- package/src/core/geom/3d/plane/orient3d_fast.js +2 -22
- package/src/core/geom/3d/plane/orient3d_fast_point.d.ts +28 -0
- package/src/core/geom/3d/plane/orient3d_fast_point.d.ts.map +1 -0
- package/src/core/geom/3d/plane/orient3d_fast_point.js +47 -0
- package/src/core/geom/3d/quaternion/quat3_nlerp.d.ts +48 -0
- package/src/core/geom/3d/quaternion/quat3_nlerp.d.ts.map +1 -0
- package/src/core/geom/3d/quaternion/quat3_nlerp.js +72 -0
- package/src/core/geom/3d/shape/AbstractShape3D.d.ts +9 -0
- package/src/core/geom/3d/shape/AbstractShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/AbstractShape3D.js +44 -1
- package/src/core/geom/3d/shape/BoxShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/BoxShape3D.js +2 -1
- package/src/core/geom/3d/shape/CapsuleShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/CapsuleShape3D.js +2 -1
- package/src/core/geom/3d/shape/ConvexHullShape3D.d.ts +0 -1
- package/src/core/geom/3d/shape/ConvexHullShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/ConvexHullShape3D.js +25 -56
- package/src/core/geom/3d/shape/CylinderShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/CylinderShape3D.js +2 -1
- package/src/core/geom/3d/shape/HeightMapShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/HeightMapShape3D.js +3 -5
- package/src/core/geom/3d/shape/MeshShape3D.d.ts +0 -11
- package/src/core/geom/3d/shape/MeshShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/MeshShape3D.js +27 -106
- package/src/core/geom/3d/shape/Triangle3D.d.ts +1 -1
- package/src/core/geom/3d/shape/Triangle3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/Triangle3D.js +10 -31
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_carve_outside_surface.d.ts.map +1 -1
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_carve_outside_surface.js +8 -57
- package/src/core/geom/3d/topology/simplify/decimate_edge_collapse_snap.d.ts +8 -1
- package/src/core/geom/3d/topology/simplify/decimate_edge_collapse_snap.d.ts.map +1 -1
- package/src/core/geom/3d/topology/simplify/decimate_edge_collapse_snap.js +281 -272
- package/src/core/geom/3d/topology/simplify/quadratic/build_vertex_quadrics.d.ts.map +1 -1
- package/src/core/geom/3d/topology/simplify/quadratic/build_vertex_quadrics.js +3 -4
- package/src/core/geom/3d/topology/simplify/quadratic/quadric3_set_from_plane_through_point.d.ts +22 -0
- package/src/core/geom/3d/topology/simplify/quadratic/quadric3_set_from_plane_through_point.d.ts.map +1 -0
- package/src/core/geom/3d/topology/simplify/quadratic/quadric3_set_from_plane_through_point.js +27 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_boundary_loop.d.ts +24 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_boundary_loop.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_boundary_loop.js +73 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_close_boundary_holes.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_close_boundary_holes.js +2 -53
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compute_vertex_quadrics.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compute_vertex_quadrics.js +3 -4
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_fill_small_holes.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_fill_small_holes.js +3 -33
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_from_indexed_geometry.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_from_indexed_geometry.js +4 -37
- package/src/core/geom/3d/topology/struct/binary/io/face/bt_face_poke.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/face/bt_face_poke.js +3 -32
- package/src/core/geom/3d/topology/struct/binary/query/bt_face_read_triangle.d.ts +32 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_face_read_triangle.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_face_read_triangle.js +66 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path.js +703 -728
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path_polyanya.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path_polyanya.js +13 -24
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.js +8 -54
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_surface_ray_parity.d.ts +35 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_surface_ray_parity.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_surface_ray_parity.js +82 -0
- package/src/core/geom/3d/triangle/tri3_closest_point.d.ts +29 -0
- package/src/core/geom/3d/triangle/tri3_closest_point.d.ts.map +1 -0
- package/src/core/geom/3d/triangle/tri3_closest_point.js +65 -0
- package/src/core/geom/3d/triangle/tri3_flatten_isometric.d.ts +42 -0
- package/src/core/geom/3d/triangle/tri3_flatten_isometric.d.ts.map +1 -0
- package/src/core/geom/3d/triangle/tri3_flatten_isometric.js +79 -0
- package/src/core/geom/Vector2.d.ts.map +1 -1
- package/src/core/geom/Vector2.js +2 -1
- package/src/core/geom/random/random_orthonormal_basis.d.ts +21 -0
- package/src/core/geom/random/random_orthonormal_basis.d.ts.map +1 -0
- package/src/core/geom/random/random_orthonormal_basis.js +31 -0
- package/src/core/geom/vec2/v2_rotate.d.ts +18 -0
- package/src/core/geom/vec2/v2_rotate.d.ts.map +1 -0
- package/src/core/geom/vec2/v2_rotate.js +21 -0
- package/src/core/geom/vec2/v2_rotate_cos_sin.d.ts +19 -0
- package/src/core/geom/vec2/v2_rotate_cos_sin.d.ts.map +1 -0
- package/src/core/geom/vec2/v2_rotate_cos_sin.js +21 -0
- package/src/core/graph/csr/csr_graph_from_undirected_edge_list.d.ts +30 -0
- package/src/core/graph/csr/csr_graph_from_undirected_edge_list.d.ts.map +1 -0
- package/src/core/graph/csr/csr_graph_from_undirected_edge_list.js +94 -0
- package/src/core/graph/layout/CircleLayout.d.ts.map +1 -1
- package/src/core/graph/layout/CircleLayout.js +6 -29
- package/src/core/graph/layout/box/BoxLayouter.d.ts.map +1 -1
- package/src/core/graph/layout/box/BoxLayouter.js +2 -26
- package/src/core/graph/layout/box/position_box_next_to_box.d.ts.map +1 -1
- package/src/core/graph/layout/box/position_box_next_to_box.js +2 -1
- package/src/core/graph/layout/computeDisconnectedSubGraphs.d.ts.map +1 -1
- package/src/core/graph/layout/computeDisconnectedSubGraphs.js +14 -3
- package/src/core/graph/layout/graph_peel_topological_layer.d.ts +25 -0
- package/src/core/graph/layout/graph_peel_topological_layer.d.ts.map +1 -0
- package/src/core/graph/layout/graph_peel_topological_layer.js +45 -0
- package/src/core/math/hash/hash_mix2.d.ts +21 -0
- package/src/core/math/hash/hash_mix2.d.ts.map +1 -0
- package/src/core/math/hash/hash_mix2.js +22 -0
- package/src/core/math/hash/hash_mix3.d.ts +16 -0
- package/src/core/math/hash/hash_mix3.d.ts.map +1 -0
- package/src/core/math/hash/hash_mix3.js +19 -0
- package/src/core/math/lookup/LUT_HEATMAP.d.ts +17 -0
- package/src/core/math/lookup/LUT_HEATMAP.d.ts.map +1 -0
- package/src/core/math/lookup/LUT_HEATMAP.js +30 -0
- package/src/core/math/noise/curl_noise_3d.d.ts +6 -0
- package/src/core/math/noise/curl_noise_3d.d.ts.map +1 -1
- package/src/core/math/noise/curl_noise_3d.js +18 -27
- package/src/core/math/statistics/hammersley_sequence.d.ts +28 -16
- package/src/core/math/statistics/hammersley_sequence.d.ts.map +1 -1
- package/src/core/math/statistics/hammersley_sequence.js +53 -34
- package/src/core/science/units/MEASUREMENT_UNITS_SI.d.ts +3 -0
- package/src/core/science/units/MEASUREMENT_UNITS_SI.d.ts.map +1 -1
- package/src/core/science/units/MEASUREMENT_UNITS_SI.js +5 -16
- package/src/engine/animation/TransitionFunctions.d.ts +31 -0
- package/src/engine/animation/TransitionFunctions.d.ts.map +1 -1
- package/src/engine/animation/TransitionFunctions.js +44 -0
- package/src/engine/animation/curve/animation_curve_binary_codec.d.ts +29 -0
- package/src/engine/animation/curve/animation_curve_binary_codec.d.ts.map +1 -0
- package/src/engine/animation/curve/animation_curve_binary_codec.js +60 -0
- package/src/engine/animation/curve/draw/canvas_point_to_curve.d.ts +16 -0
- package/src/engine/animation/curve/draw/canvas_point_to_curve.d.ts.map +1 -0
- package/src/engine/animation/curve/draw/canvas_point_to_curve.js +22 -0
- package/src/engine/animation/curve/draw/curve_point_to_canvas.d.ts +27 -0
- package/src/engine/animation/curve/draw/curve_point_to_canvas.d.ts.map +1 -0
- package/src/engine/animation/curve/draw/curve_point_to_canvas.js +38 -0
- package/src/engine/animation/curve/draw/position_canvas_to_curve.d.ts +2 -0
- package/src/engine/animation/curve/draw/position_canvas_to_curve.d.ts.map +1 -1
- package/src/engine/animation/curve/draw/position_canvas_to_curve.js +22 -24
- package/src/engine/animation/curve/draw/position_curve_to_canvas.d.ts +2 -0
- package/src/engine/animation/curve/draw/position_curve_to_canvas.d.ts.map +1 -1
- package/src/engine/animation/curve/draw/position_curve_to_canvas.js +22 -25
- package/src/engine/animation/curve/editor/canvas2dDrawWorldAxisLabels.d.ts.map +1 -1
- package/src/engine/animation/curve/editor/canvas2dDrawWorldAxisLabels.js +3 -2
- package/src/engine/animation/curve/editor/canvas2dPlotCurvePoints.d.ts.map +1 -1
- package/src/engine/animation/curve/editor/canvas2dPlotCurvePoints.js +14 -14
- package/src/engine/animation/removeEntityWithMeshParticlesEffect.d.ts.map +1 -1
- package/src/engine/animation/removeEntityWithMeshParticlesEffect.js +5 -0
- package/src/engine/asset/loaders/GLTFAssetLoader.d.ts.map +1 -1
- package/src/engine/asset/loaders/GLTFAssetLoader.js +25 -51
- package/src/engine/asset/loaders/material/StaticMaterialCache.d.ts +3 -2
- package/src/engine/asset/loaders/material/StaticMaterialCache.d.ts.map +1 -1
- package/src/engine/asset/loaders/material/StaticMaterialCache.js +16 -55
- package/src/engine/asset/loaders/material/TextureCoalescer.d.ts +32 -0
- package/src/engine/asset/loaders/material/TextureCoalescer.d.ts.map +1 -0
- package/src/engine/asset/loaders/material/TextureCoalescer.js +68 -0
- package/src/engine/asset/loaders/material/traverseMaterialTextures.d.ts +10 -2
- package/src/engine/asset/loaders/material/traverseMaterialTextures.d.ts.map +1 -1
- package/src/engine/asset/loaders/material/traverseMaterialTextures.js +10 -2
- package/src/engine/control/first-person/abilities/Mantle.d.ts.map +1 -1
- package/src/engine/control/first-person/abilities/Mantle.js +10 -26
- package/src/engine/ecs/dynamic_actions/actions/definition/WeightedRandomActionDescription.d.ts.map +1 -1
- package/src/engine/ecs/dynamic_actions/actions/definition/WeightedRandomActionDescription.js +5 -0
- package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.d.ts +22 -2
- package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.d.ts.map +1 -1
- package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.js +92 -41
- package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.d.ts +3 -1
- package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.d.ts.map +1 -1
- package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.js +14 -16
- package/src/engine/ecs/gui/parallax/GuiElementParallaxSystem.d.ts.map +1 -1
- package/src/engine/ecs/gui/parallax/GuiElementParallaxSystem.js +16 -29
- package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.d.ts.map +1 -1
- package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.js +12 -74
- package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.d.ts.map +1 -1
- package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.js +10 -73
- package/src/engine/ecs/ik/ik_probe_terrain_contact.d.ts +38 -0
- package/src/engine/ecs/ik/ik_probe_terrain_contact.d.ts.map +1 -0
- package/src/engine/ecs/ik/ik_probe_terrain_contact.js +119 -0
- package/src/engine/ecs/terrain/util/paintTerrainOverlayViaLookupTable.d.ts +0 -1
- package/src/engine/ecs/terrain/util/paintTerrainOverlayViaLookupTable.d.ts.map +1 -1
- package/src/engine/ecs/terrain/util/paintTerrainOverlayViaLookupTable.js +2 -14
- package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.d.ts +12 -1
- package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.d.ts.map +1 -1
- package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.js +14 -10
- package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.d.ts.map +1 -1
- package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.js +7 -28
- package/src/engine/graphics/ecs/highlight/renderer/HighlightDecodeShader.d.ts +1 -2
- package/src/engine/graphics/ecs/highlight/renderer/HighlightDecodeShader.d.ts.map +1 -1
- package/src/engine/graphics/ecs/highlight/renderer/HighlightDecodeShader.js +4 -12
- package/src/engine/graphics/ecs/highlight/renderer/OutlineRenderer.d.ts.map +1 -1
- package/src/engine/graphics/ecs/highlight/renderer/OutlineRenderer.js +2 -11
- package/src/engine/graphics/ecs/highlight/renderer/makeBlurShader_9.d.ts +1 -2
- package/src/engine/graphics/ecs/highlight/renderer/makeBlurShader_9.d.ts.map +1 -1
- package/src/engine/graphics/ecs/highlight/renderer/makeBlurShader_9.js +3 -11
- package/src/engine/graphics/ecs/highlight/renderer/makeDilationShader.d.ts +1 -2
- package/src/engine/graphics/ecs/highlight/renderer/makeDilationShader.d.ts.map +1 -1
- package/src/engine/graphics/ecs/highlight/renderer/makeDilationShader.js +3 -11
- package/src/engine/graphics/ecs/highlight/renderer/make_screen_space_quad_material.d.ts +33 -0
- package/src/engine/graphics/ecs/highlight/renderer/make_screen_space_quad_material.d.ts.map +1 -0
- package/src/engine/graphics/ecs/highlight/renderer/make_screen_space_quad_material.js +44 -0
- package/src/engine/graphics/ecs/highlight/system/HighlightSystemBase.d.ts +55 -0
- package/src/engine/graphics/ecs/highlight/system/HighlightSystemBase.d.ts.map +1 -0
- package/src/engine/graphics/ecs/highlight/system/HighlightSystemBase.js +205 -0
- package/src/engine/graphics/ecs/highlight/system/MeshHighlightSystem.d.ts +4 -45
- package/src/engine/graphics/ecs/highlight/system/MeshHighlightSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/highlight/system/MeshHighlightSystem.js +39 -162
- package/src/engine/graphics/ecs/highlight/system/RenderableHighlightSystem.d.ts +4 -51
- package/src/engine/graphics/ecs/highlight/system/RenderableHighlightSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/highlight/system/RenderableHighlightSystem.js +34 -164
- package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.d.ts +5 -57
- package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.js +48 -175
- package/src/engine/graphics/ecs/light/shadow/extend_shadow_camera_near_for_casters.d.ts.map +1 -1
- package/src/engine/graphics/ecs/light/shadow/extend_shadow_camera_near_for_casters.js +7 -25
- package/src/engine/graphics/ecs/make_bvh_depth_range_computer.d.ts +26 -0
- package/src/engine/graphics/ecs/make_bvh_depth_range_computer.d.ts.map +1 -0
- package/src/engine/graphics/ecs/make_bvh_depth_range_computer.js +33 -0
- package/src/engine/graphics/ecs/mesh/MeshSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/mesh/MeshSystem.js +2 -5
- package/src/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.js +2 -5
- package/src/engine/graphics/ecs/render_layers_compute_depth_range.d.ts +35 -0
- package/src/engine/graphics/ecs/render_layers_compute_depth_range.d.ts.map +1 -0
- package/src/engine/graphics/ecs/render_layers_compute_depth_range.js +64 -0
- package/src/engine/graphics/ecs/trail2d/Trail2DSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/trail2d/Trail2DSystem.js +2 -5
- package/src/engine/graphics/ecs/trail3d/Trail3DSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/trail3d/Trail3DSystem.js +2 -5
- package/src/engine/graphics/ecs/water/WaterSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/water/WaterSystem.js +2 -5
- package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_nearest.d.ts.map +1 -1
- package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_nearest.js +22 -94
- package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_overlap_clipping_volume.d.ts.map +1 -1
- package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_overlap_clipping_volume.js +17 -57
- package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_raycast.d.ts.map +1 -1
- package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_raycast.js +17 -57
- package/src/engine/graphics/geometry/buffered/query/nearest_point_on_triangle_record.d.ts +30 -0
- package/src/engine/graphics/geometry/buffered/query/nearest_point_on_triangle_record.d.ts.map +1 -0
- package/src/engine/graphics/geometry/buffered/query/nearest_point_on_triangle_record.js +87 -0
- package/src/engine/graphics/geometry/buffered/query/query_bvh_geometry_nearest.d.ts.map +1 -1
- package/src/engine/graphics/geometry/buffered/query/query_bvh_geometry_nearest.js +11 -55
- package/src/engine/graphics/geometry/buffered/read_triangle_vertices.d.ts +29 -0
- package/src/engine/graphics/geometry/buffered/read_triangle_vertices.d.ts.map +1 -0
- package/src/engine/graphics/geometry/buffered/read_triangle_vertices.js +102 -0
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderDepthV0.d.ts.map +1 -1
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderDepthV0.js +17 -122
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderLitV0.d.ts.map +1 -1
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderLitV0.js +15 -194
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderNormalsV0.d.ts.map +1 -1
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderNormalsV0.js +12 -108
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderPerPixelV0.d.ts.map +1 -1
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderPerPixelV0.js +14 -183
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderV0.d.ts.map +1 -1
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderV0.js +12 -154
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderViewportDepthV0.d.ts.map +1 -1
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderViewportDepthV0.js +10 -94
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderWireframeV0.d.ts.map +1 -1
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderWireframeV0.js +8 -72
- package/src/engine/graphics/impostors/octahedral/shader/glsl/common.glsl +10 -0
- package/src/engine/graphics/impostors/voxel/bake/read_atlas_to_samples.d.ts.map +1 -1
- package/src/engine/graphics/impostors/voxel/bake/read_atlas_to_samples.js +79 -58
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderDepthV0.d.ts.map +1 -1
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderDepthV0.js +11 -22
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderLitV0.d.ts.map +1 -1
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderLitV0.js +7 -16
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderNormalsV0.d.ts.map +1 -1
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderNormalsV0.js +5 -9
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderV0.d.ts.map +1 -1
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderV0.js +4 -19
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderViewportDepthV0.d.ts.map +1 -1
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderViewportDepthV0.js +5 -9
- package/src/engine/graphics/material/SplatMaterial.d.ts.map +1 -1
- package/src/engine/graphics/material/SplatMaterial.js +2 -17
- package/src/engine/graphics/material/WaterMaterial.d.ts.map +1 -1
- package/src/engine/graphics/material/WaterMaterial.js +3 -18
- package/src/engine/graphics/material/manager/compilers/CoalesceTextures.d.ts +4 -4
- package/src/engine/graphics/material/manager/compilers/CoalesceTextures.d.ts.map +1 -1
- package/src/engine/graphics/material/manager/compilers/CoalesceTextures.js +25 -70
- package/src/engine/graphics/particles/ecs/ParticleEmitterSystem.d.ts.map +1 -1
- package/src/engine/graphics/particles/ecs/ParticleEmitterSystem.js +2 -5
- package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.d.ts +8 -11
- package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.d.ts.map +1 -1
- package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.js +20 -21
- package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.d.ts +39 -0
- package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.d.ts.map +1 -0
- package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.js +45 -0
- package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.d.ts +6 -8
- package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.d.ts.map +1 -1
- package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.js +2 -13
- package/src/engine/graphics/particles/particular/engine/utils/distributeParticlesOnObject3D.d.ts.map +1 -1
- package/src/engine/graphics/particles/particular/engine/utils/distributeParticlesOnObject3D.js +16 -78
- package/src/engine/graphics/particles/particular/engine/utils/distribute_points_on_indexed_triangles.d.ts +45 -0
- package/src/engine/graphics/particles/particular/engine/utils/distribute_points_on_indexed_triangles.d.ts.map +1 -0
- package/src/engine/graphics/particles/particular/engine/utils/distribute_points_on_indexed_triangles.js +168 -0
- package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.d.ts.map +1 -1
- package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.js +11 -115
- package/src/engine/graphics/postprocess/threejs/shaders/CopyShader.d.ts +24 -16
- package/src/engine/graphics/postprocess/threejs/shaders/CopyShader.d.ts.map +1 -1
- package/src/engine/graphics/postprocess/threejs/shaders/CopyShader.js +15 -47
- package/src/engine/graphics/render/buffer/simple-fx/ao/AmbientOcclusionPostProcessEffect.d.ts +4 -0
- package/src/engine/graphics/render/buffer/simple-fx/ao/AmbientOcclusionPostProcessEffect.d.ts.map +1 -1
- package/src/engine/graphics/render/buffer/simple-fx/ao/AmbientOcclusionPostProcessEffect.js +4 -0
- package/src/engine/graphics/sh3/build_injected_shader.d.ts +51 -0
- package/src/engine/graphics/sh3/build_injected_shader.d.ts.map +1 -0
- package/src/engine/graphics/sh3/build_injected_shader.js +56 -0
- package/src/engine/graphics/sh3/gi/material/MaterialTransformer.d.ts.map +1 -1
- package/src/engine/graphics/sh3/gi/material/MaterialTransformer.js +10 -1
- package/src/engine/graphics/sh3/gi/material/chunk_lpv_get_irradiance_at.d.ts.map +1 -1
- package/src/engine/graphics/sh3/gi/material/chunk_lpv_get_irradiance_at.js +17 -0
- package/src/engine/graphics/sh3/gi/material/common.d.ts +1 -1
- package/src/engine/graphics/sh3/gi/material/common.js +6 -222
- package/src/engine/graphics/sh3/gi/material/space_fragment/build_fragment_shader.d.ts.map +1 -1
- package/src/engine/graphics/sh3/gi/material/space_fragment/build_fragment_shader.js +7 -11
- package/src/engine/graphics/sh3/gi/material/space_fragment/build_vertex_shader.d.ts.map +1 -1
- package/src/engine/graphics/sh3/gi/material/space_fragment/build_vertex_shader.js +27 -29
- package/src/engine/graphics/sh3/gi/material/space_vertex/build_fragment_shader.d.ts.map +1 -1
- package/src/engine/graphics/sh3/gi/material/space_vertex/build_fragment_shader.js +7 -11
- package/src/engine/graphics/sh3/gi/material/space_vertex/build_vertex_shader.d.ts.map +1 -1
- package/src/engine/graphics/sh3/gi/material/space_vertex/build_vertex_shader.js +7 -12
- package/src/engine/graphics/sh3/grid_dilate_average.d.ts +38 -0
- package/src/engine/graphics/sh3/grid_dilate_average.d.ts.map +1 -0
- package/src/engine/graphics/sh3/grid_dilate_average.js +175 -0
- package/src/engine/graphics/sh3/lightmap/lightmap_dilate.d.ts +4 -0
- package/src/engine/graphics/sh3/lightmap/lightmap_dilate.d.ts.map +1 -1
- package/src/engine/graphics/sh3/lightmap/lightmap_dilate.js +7 -70
- package/src/engine/graphics/sh3/lpg/light_probe_grid_dilate.d.ts +6 -0
- package/src/engine/graphics/sh3/lpg/light_probe_grid_dilate.d.ts.map +1 -1
- package/src/engine/graphics/sh3/lpg/light_probe_grid_dilate.js +14 -113
- package/src/engine/graphics/sh3/lpg/material/chunk_lpg_get_irradiance_at.d.ts.map +1 -1
- package/src/engine/graphics/sh3/lpg/material/chunk_lpg_get_irradiance_at.js +7 -0
- package/src/engine/graphics/sh3/lpg/material/space_fragment/build_fragment_shader.d.ts.map +1 -1
- package/src/engine/graphics/sh3/lpg/material/space_fragment/build_fragment_shader.js +5 -8
- package/src/engine/graphics/sh3/lpg/material/space_fragment/build_vertex_shader.d.ts.map +1 -1
- package/src/engine/graphics/sh3/lpg/material/space_fragment/build_vertex_shader.js +5 -8
- package/src/engine/graphics/sh3/lpg/material/space_vertex/build_fragment_shader.d.ts.map +1 -1
- package/src/engine/graphics/sh3/lpg/material/space_vertex/build_fragment_shader.js +5 -8
- package/src/engine/graphics/sh3/lpg/material/space_vertex/build_vertex_shader.d.ts.map +1 -1
- package/src/engine/graphics/sh3/lpg/material/space_vertex/build_vertex_shader.js +5 -8
- package/src/engine/graphics/sh3/lpv/depth/chunk_probe_depth_sampling.d.ts +38 -0
- package/src/engine/graphics/sh3/lpv/depth/chunk_probe_depth_sampling.d.ts.map +1 -0
- package/src/engine/graphics/sh3/lpv/depth/chunk_probe_depth_sampling.js +265 -0
- package/src/engine/graphics/sh3/lpv/depth/octahedral/shader/visualize.frag.glsl +11 -0
- package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/VLPDepthMapVisualisation.d.ts.map +1 -1
- package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/VLPDepthMapVisualisation.js +5 -1
- package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/visualise.frag.glsl +189 -419
- package/src/engine/graphics/sh3/shader/visualize.frag.d.ts +1 -1
- package/src/engine/graphics/sh3/shader/visualize.frag.js +7 -0
- package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.d.ts +102 -0
- package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.d.ts.map +1 -0
- package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.js +277 -0
- package/src/engine/graphics/shaders/chunks/glsl_packing.d.ts +29 -0
- package/src/engine/graphics/shaders/chunks/glsl_packing.d.ts.map +1 -0
- package/src/engine/graphics/shaders/chunks/glsl_packing.js +30 -0
- package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.d.ts +40 -0
- package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.d.ts.map +1 -0
- package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.js +57 -0
- package/src/engine/graphics/shaders/lib/make_clouds_uniforms.d.ts +22 -0
- package/src/engine/graphics/shaders/lib/make_clouds_uniforms.d.ts.map +1 -0
- package/src/engine/graphics/shaders/lib/make_clouds_uniforms.js +39 -0
- package/src/engine/graphics/texture/attribute_spec_to_three_format.d.ts +6 -0
- package/src/engine/graphics/texture/attribute_spec_to_three_format.d.ts.map +1 -1
- package/src/engine/graphics/texture/attribute_spec_to_three_format.js +9 -9
- package/src/engine/graphics/texture/channel_count_to_format_prefix.d.ts +14 -0
- package/src/engine/graphics/texture/channel_count_to_format_prefix.d.ts.map +1 -0
- package/src/engine/graphics/texture/channel_count_to_format_prefix.js +26 -0
- package/src/engine/graphics/texture/computeThreeTextureInternalFormatFromDataType.d.ts.map +1 -1
- package/src/engine/graphics/texture/computeThreeTextureInternalFormatFromDataType.js +2 -20
- package/src/engine/graphics/texture/normalized_internal_format.d.ts.map +1 -1
- package/src/engine/graphics/texture/normalized_internal_format.js +2 -20
- package/src/engine/graphics/texture/sampler/convertTexture2Sampler2D.d.ts.map +1 -1
- package/src/engine/graphics/texture/sampler/convertTexture2Sampler2D.js +9 -3
- package/src/engine/input/devices/gamepad/GamepadDeviceLayout.d.ts +54 -0
- package/src/engine/input/devices/gamepad/GamepadDeviceLayout.d.ts.map +1 -0
- package/src/engine/input/devices/gamepad/GamepadDeviceLayout.js +323 -0
- package/src/engine/input/devices/gamepad/GamepadHandle.d.ts +21 -2
- package/src/engine/input/devices/gamepad/GamepadHandle.d.ts.map +1 -1
- package/src/engine/input/devices/gamepad/GamepadHandle.js +39 -11
- package/src/engine/input/devices/gamepad/GamepadLayout.d.ts +128 -0
- package/src/engine/input/devices/gamepad/GamepadLayout.d.ts.map +1 -0
- package/src/engine/input/devices/gamepad/GamepadLayout.js +160 -0
- package/src/engine/input/devices/gamepad/GamepadStandardMapping.d.ts +10 -0
- package/src/engine/input/devices/gamepad/GamepadStandardMapping.d.ts.map +1 -1
- package/src/engine/input/devices/gamepad/GamepadStandardMapping.js +11 -0
- package/src/engine/input/devices/gamepad/GamepadStick.d.ts +5 -1
- package/src/engine/input/devices/gamepad/GamepadStick.d.ts.map +1 -1
- package/src/engine/input/devices/gamepad/GamepadStick.js +5 -1
- package/src/engine/input/devices/gamepad/gamepad_layout_database.d.ts +27 -0
- package/src/engine/input/devices/gamepad/gamepad_layout_database.d.ts.map +1 -0
- package/src/engine/input/devices/gamepad/gamepad_layout_database.js +144 -0
- package/src/engine/input/devices/gamepad/gamepad_read_hat_axis.d.ts +25 -0
- package/src/engine/input/devices/gamepad/gamepad_read_hat_axis.d.ts.map +1 -0
- package/src/engine/input/devices/gamepad/gamepad_read_hat_axis.js +61 -0
- package/src/engine/input/devices/gamepad/prototypeGamepadTester.d.ts +2 -0
- package/src/engine/input/devices/gamepad/prototypeGamepadTester.d.ts.map +1 -0
- package/src/engine/input/devices/gamepad/prototypeGamepadTester.js +2124 -0
- package/src/engine/input/ecs/util/TopDownCameraControllerHelper.d.ts.map +1 -1
- package/src/engine/input/ecs/util/TopDownCameraControllerHelper.js +3 -33
- package/src/engine/intelligence/behavior/util/RandomDelayBehavior.d.ts.map +1 -1
- package/src/engine/intelligence/behavior/util/RandomDelayBehavior.js +5 -0
- package/src/engine/network/adapters/QuaternionInterpolationAdapter.d.ts.map +1 -1
- package/src/engine/network/adapters/QuaternionInterpolationAdapter.js +18 -19
- package/src/engine/network/adapters/TransformInterpolationAdapter.d.ts.map +1 -1
- package/src/engine/network/adapters/TransformInterpolationAdapter.js +18 -13
- package/src/engine/network/orchestrator/NetworkPeer.d.ts.map +1 -1
- package/src/engine/network/orchestrator/NetworkPeer.js +2 -1
- package/src/engine/network/sim/ActionLog.d.ts +9 -6
- package/src/engine/network/sim/ActionLog.d.ts.map +1 -1
- package/src/engine/network/sim/ActionLog.js +43 -80
- package/src/engine/network/sim/SmoothingState.d.ts.map +1 -1
- package/src/engine/network/sim/SmoothingState.js +27 -28
- package/src/engine/network/state/FrameBufferRing.d.ts +84 -0
- package/src/engine/network/state/FrameBufferRing.d.ts.map +1 -0
- package/src/engine/network/state/FrameBufferRing.js +168 -0
- package/src/engine/network/state/InputRing.d.ts +14 -12
- package/src/engine/network/state/InputRing.d.ts.map +1 -1
- package/src/engine/network/state/InputRing.js +37 -76
- package/src/engine/network/transport/LoopbackTransport.d.ts.map +1 -1
- package/src/engine/network/transport/LoopbackTransport.js +10 -31
- package/src/engine/network/transport/Transport.d.ts +42 -2
- package/src/engine/network/transport/Transport.d.ts.map +1 -1
- package/src/engine/network/transport/Transport.js +87 -3
- package/src/engine/network/transport/adapters/NodeUDPTransport.d.ts.map +1 -1
- package/src/engine/network/transport/adapters/NodeUDPTransport.js +7 -33
- package/src/engine/network/transport/adapters/SimulatedTransport.d.ts.map +1 -1
- package/src/engine/network/transport/adapters/SimulatedTransport.js +17 -28
- package/src/engine/network/transport/adapters/WebRTCDataChannelTransport.d.ts.map +1 -1
- package/src/engine/network/transport/adapters/WebRTCDataChannelTransport.js +6 -32
- package/src/engine/network/transport/adapters/WebSocketTransport.d.ts.map +1 -1
- package/src/engine/network/transport/adapters/WebSocketTransport.js +6 -32
- package/src/engine/network/transport/adapters/WebTransportTransport.d.ts.map +1 -1
- package/src/engine/network/transport/adapters/WebTransportTransport.js +11 -22
- package/src/engine/physics/constraint/solve_constraints.d.ts.map +1 -1
- package/src/engine/physics/constraint/solve_constraints.js +18 -48
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/engine/physics/fluid/ecs/FluidSystem.d.ts +3 -3
- package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_scalar.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_scalar.js +7 -0
- package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.js +11 -18
- package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.js +7 -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 +15 -57
- package/src/engine/physics/fluid/solver/v3_grid_apply_scalar_advection.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_grid_apply_scalar_advection.js +7 -0
- package/src/engine/physics/fluid/solver/v3_grid_limit8_at_indices.d.ts +28 -0
- package/src/engine/physics/fluid/solver/v3_grid_limit8_at_indices.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_limit8_at_indices.js +38 -0
- package/src/engine/physics/fluid/solver/v3_mac_advect_maccormack_velocity.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_mac_advect_maccormack_velocity.js +12 -14
- package/src/engine/physics/fluid/solver/v3_mac_apply_vorticity_confinement.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_mac_apply_vorticity_confinement.js +9 -0
- package/src/engine/physics/mls-mpm/MLS_MPM.d.ts +13 -1
- package/src/engine/physics/mls-mpm/MLS_MPM.d.ts.map +1 -1
- package/src/engine/physics/mls-mpm/MLS_MPM.js +15 -4
- package/src/engine/physics/narrowphase/box_triangle_contact.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/box_triangle_contact.js +9 -0
- package/src/engine/physics/narrowphase/capsule_contacts.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/capsule_contacts.js +10 -11
- package/src/engine/physics/narrowphase/sphere_triangle_contact.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/sphere_triangle_contact.js +7 -12
- package/src/engine/physics/solver/apply_impulse_to_body.d.ts +36 -0
- package/src/engine/physics/solver/apply_impulse_to_body.d.ts.map +1 -0
- package/src/engine/physics/solver/apply_impulse_to_body.js +86 -0
- package/src/engine/physics/solver/solve_contacts.d.ts.map +1 -1
- package/src/engine/physics/solver/solve_contacts.js +1 -53
- package/src/engine/plugin/EnginePlugin.d.ts +3 -0
- package/src/engine/plugin/EnginePlugin.d.ts.map +1 -1
- package/src/engine/plugin/EnginePlugin.js +3 -0
- package/src/engine/save/storage/IndexedDBStorage.d.ts +1 -0
- package/src/engine/save/storage/IndexedDBStorage.d.ts.map +1 -1
- package/src/engine/save/storage/IndexedDBStorage.js +50 -50
- package/src/engine/sound/ecs/SoundControllerSystem.d.ts.map +1 -1
- package/src/engine/sound/ecs/SoundControllerSystem.js +2 -10
- package/src/engine/sound/simulation/AcousticSimulator.d.ts.map +1 -1
- package/src/engine/sound/simulation/AcousticSimulator.js +2 -1
- package/src/engine/sound/simulation/core/AcousticOccluderIndex.d.ts.map +1 -1
- package/src/engine/sound/simulation/core/AcousticOccluderIndex.js +4 -6
- package/src/engine/sound/simulation/core/OcclusionSolver.d.ts.map +1 -1
- package/src/engine/sound/simulation/core/OcclusionSolver.js +2 -9
- package/src/engine/sound/simulation/probe/ProbeVisibilityRecheck.d.ts.map +1 -1
- package/src/engine/sound/simulation/probe/ProbeVisibilityRecheck.js +9 -14
- package/src/engine/sound/simulation/probe/bakeReverbBands.d.ts.map +1 -1
- package/src/engine/sound/simulation/probe/bakeReverbBands.js +2 -6
- package/src/engine/sound/simulation/probe/bakeVisibility.d.ts.map +1 -1
- package/src/engine/sound/simulation/probe/bakeVisibility.js +4 -34
- package/src/engine/sound/simulation/probe/probe_densify_portals.d.ts.map +1 -1
- package/src/engine/sound/simulation/probe/probe_densify_portals.js +3 -6
- package/src/engine/sound/simulation/probe/probe_edge_key.d.ts +31 -0
- package/src/engine/sound/simulation/probe/probe_edge_key.d.ts.map +1 -0
- package/src/engine/sound/simulation/probe/probe_edge_key.js +38 -0
- package/src/engine/sound/simulation/probe/probe_sdf_grid.d.ts +10 -3
- package/src/engine/sound/simulation/probe/probe_sdf_grid.d.ts.map +1 -1
- package/src/engine/sound/simulation/probe/probe_sdf_grid.js +10 -22
- package/src/engine/sound/simulation/probe/probe_visibility_augment.d.ts.map +1 -1
- package/src/engine/sound/simulation/probe/probe_visibility_augment.js +12 -48
- package/src/engine/sound/simulation/probe/probe_visibility_bridge_components.d.ts.map +1 -1
- package/src/engine/sound/simulation/probe/probe_visibility_bridge_components.js +4 -3
- package/src/engine/sound/simulation/render/foaReverbImpulseResponse.d.ts +5 -4
- package/src/engine/sound/simulation/render/foaReverbImpulseResponse.d.ts.map +1 -1
- package/src/engine/sound/simulation/render/foaReverbImpulseResponse.js +23 -31
- package/src/engine/sound/simulation/render/reverbImpulseResponse.d.ts +1 -8
- package/src/engine/sound/simulation/render/reverbImpulseResponse.d.ts.map +1 -1
- package/src/engine/sound/simulation/render/reverbImpulseResponse.js +21 -31
- package/src/engine/sound/simulation/render/reverb_band_tails.d.ts +55 -0
- package/src/engine/sound/simulation/render/reverb_band_tails.d.ts.map +1 -0
- package/src/engine/sound/simulation/render/reverb_band_tails.js +93 -0
- package/src/engine/sound/sopra/definition/EventDescriptionSerializationAdapter.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/EventDescriptionSerializationAdapter.js +6 -22
- package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.js +7 -3
- package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClipSerializationAdapter.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClipSerializationAdapter.js +7 -22
- package/src/engine/sound/sopra/definition/clip/ContainerAudioClip.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/clip/ContainerAudioClip.js +28 -0
- package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.js +1 -5
- package/src/engine/sound/sopra/definition/clip/SequenceContainerAudioClip.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/clip/SequenceContainerAudioClip.js +1 -13
- package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.js +2 -8
- package/src/engine/sound/sopra/definition/effect/ReverbEffect.d.ts +3 -0
- package/src/engine/sound/sopra/definition/effect/ReverbEffect.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/effect/ReverbEffect.js +26 -14
- package/src/engine/sound/sopra/runtime/BusGraph.d.ts.map +1 -1
- package/src/engine/sound/sopra/runtime/BusGraph.js +21 -33
- package/src/engine/sound/sopra/runtime/EventInstance.js +1 -1
- package/src/engine/ui/apply_pointer_tilt_3d.d.ts +25 -0
- package/src/engine/ui/apply_pointer_tilt_3d.d.ts.map +1 -0
- package/src/engine/ui/apply_pointer_tilt_3d.js +50 -0
- package/src/engine/ui/bindings/processors/DomElementProcessorTilt3D.d.ts.map +1 -1
- package/src/engine/ui/bindings/processors/DomElementProcessorTilt3D.js +9 -26
- package/src/generation/filtering/numeric/CellFilterCache.d.ts.map +1 -1
- package/src/generation/filtering/numeric/CellFilterCache.js +4 -21
- package/src/generation/filtering/numeric/complex/CellFilterSobel.d.ts.map +1 -1
- package/src/generation/filtering/numeric/complex/CellFilterSobel.js +11 -20
- package/src/generation/filtering/numeric/math/CellFilterPower.d.ts +1 -1
- package/src/generation/filtering/numeric/math/CellFilterPower.d.ts.map +1 -1
- package/src/generation/filtering/numeric/math/CellFilterPower.js +1 -5
- package/src/generation/filtering/numeric/process/computeCellFilterGradient.d.ts.map +1 -1
- package/src/generation/filtering/numeric/process/computeCellFilterGradient.js +13 -15
- package/src/generation/filtering/numeric/process/computeCellFilterSobel.d.ts +20 -0
- package/src/generation/filtering/numeric/process/computeCellFilterSobel.d.ts.map +1 -0
- package/src/generation/filtering/numeric/process/computeCellFilterSobel.js +36 -0
- package/src/generation/filtering/numeric/util/CellFilterDisplaced.d.ts.map +1 -1
- package/src/generation/filtering/numeric/util/CellFilterDisplaced.js +11 -6
- package/src/generation/filtering/numeric/util/populateSampler2DFromCellFilter.d.ts.map +1 -1
- package/src/generation/filtering/numeric/util/populateSampler2DFromCellFilter.js +18 -36
- package/src/generation/filtering/numeric/util/write_cell_filter_to_sampler2d.d.ts +21 -0
- package/src/generation/filtering/numeric/util/write_cell_filter_to_sampler2d.d.ts.map +1 -0
- package/src/generation/filtering/numeric/util/write_cell_filter_to_sampler2d.js +47 -0
- package/src/generation/filtering/util/cell_filter_weights_pick.d.ts +25 -0
- package/src/generation/filtering/util/cell_filter_weights_pick.d.ts.map +1 -0
- package/src/generation/filtering/util/cell_filter_weights_pick.js +54 -0
- package/src/generation/grid/generation/discrete/GridTaskConnectRooms.d.ts.map +1 -1
- package/src/generation/grid/generation/discrete/GridTaskConnectRooms.js +14 -1
- package/src/generation/markers/GridActionRuleSet.d.ts.map +1 -1
- package/src/generation/markers/GridActionRuleSet.js +10 -7
- package/src/generation/markers/GridCellActionPlaceMarker.d.ts.map +1 -1
- package/src/generation/markers/GridCellActionPlaceMarker.js +10 -12
- package/src/generation/markers/actions/probability/MarkerNodeActionSelectWeighted.d.ts.map +1 -1
- package/src/generation/markers/actions/probability/MarkerNodeActionSelectWeighted.js +7 -42
- package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.d.ts.map +1 -1
- package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.js +11 -6
- package/src/generation/placement/GridCellPlacementRule.d.ts.map +1 -1
- package/src/generation/placement/GridCellPlacementRule.js +10 -7
- package/src/generation/placement/action/GridCellActionPlaceTags.d.ts.map +1 -1
- package/src/generation/placement/action/GridCellActionPlaceTags.js +10 -4
- package/src/generation/placement/action/random/weighted/CellActionSelectWeightedRandom.d.ts.map +1 -1
- package/src/generation/placement/action/random/weighted/CellActionSelectWeightedRandom.js +2 -38
- package/src/generation/placement/action/util/GridCellDisplacedAction.d.ts.map +1 -1
- package/src/generation/placement/action/util/GridCellDisplacedAction.js +11 -6
- package/src/generation/rules/cell/CellMatcherGridPattern.d.ts.map +1 -1
- package/src/generation/rules/cell/CellMatcherGridPattern.js +11 -4
- package/src/generation/theme/ThemeEngine.d.ts.map +1 -1
- package/src/generation/theme/ThemeEngine.js +7 -12
- package/src/view/elements/Group.d.ts +24 -3
- package/src/view/elements/Group.d.ts.map +1 -1
- package/src/view/elements/Group.js +56 -34
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v2_rotate.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/vec2/v2_rotate.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;GAeG;AACH,kCANW,YAAY,GAAC,YAAY,GAAC,MAAM,EAAE,iBAClC,MAAM,KACN,MAAM,KACN,MAAM,SACN,MAAM,QAIhB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { v2_rotate_cos_sin } from "./v2_rotate_cos_sin.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Rotate a 2d vector around the origin by an angle.
|
|
5
|
+
*
|
|
6
|
+
* Before this existed the four-line body was inlined at every site that needed it, which made the
|
|
7
|
+
* sign convention a copy-paste artifact instead of a documented contract. Keep new callers here.
|
|
8
|
+
*
|
|
9
|
+
* The rotation matches the standard 2d rotation matrix `[cos, -sin; sin, cos]`, i.e.
|
|
10
|
+
* counter-clockwise in a Y-up frame and clockwise in the Y-down frames used by grid/screen space.
|
|
11
|
+
* Callers own any rounding or snapping of the result.
|
|
12
|
+
*
|
|
13
|
+
* @param {Float64Array|Float32Array|number[]} result
|
|
14
|
+
* @param {number} result_offset
|
|
15
|
+
* @param {number} x
|
|
16
|
+
* @param {number} y
|
|
17
|
+
* @param {number} angle in radians
|
|
18
|
+
*/
|
|
19
|
+
export function v2_rotate(result, result_offset, x, y, angle) {
|
|
20
|
+
v2_rotate_cos_sin(result, result_offset, x, y, Math.cos(angle), Math.sin(angle));
|
|
21
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rotate a 2d vector around the origin, given the cosine and sine of the angle.
|
|
3
|
+
*
|
|
4
|
+
* This exists so that a loop rotating many vectors by the *same* angle pays for `Math.cos`/`Math.sin`
|
|
5
|
+
* once instead of once per vector. Prefer {@link v2_rotate} when only a single vector is rotated.
|
|
6
|
+
*
|
|
7
|
+
* The rotation matches the standard 2d rotation matrix
|
|
8
|
+
* `[cos, -sin; sin, cos]`, i.e. counter-clockwise in a Y-up frame and clockwise in the Y-down
|
|
9
|
+
* frames used by grid/screen space. Callers own any rounding or snapping of the result.
|
|
10
|
+
*
|
|
11
|
+
* @param {Float64Array|Float32Array|number[]} result
|
|
12
|
+
* @param {number} result_offset
|
|
13
|
+
* @param {number} x
|
|
14
|
+
* @param {number} y
|
|
15
|
+
* @param {number} cos cosine of the rotation angle
|
|
16
|
+
* @param {number} sin sine of the rotation angle
|
|
17
|
+
*/
|
|
18
|
+
export function v2_rotate_cos_sin(result: Float64Array | Float32Array | number[], result_offset: number, x: number, y: number, cos: number, sin: number): void;
|
|
19
|
+
//# sourceMappingURL=v2_rotate_cos_sin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v2_rotate_cos_sin.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/vec2/v2_rotate_cos_sin.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,0CAPW,YAAY,GAAC,YAAY,GAAC,MAAM,EAAE,iBAClC,MAAM,KACN,MAAM,KACN,MAAM,OACN,MAAM,OACN,MAAM,QAKhB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rotate a 2d vector around the origin, given the cosine and sine of the angle.
|
|
3
|
+
*
|
|
4
|
+
* This exists so that a loop rotating many vectors by the *same* angle pays for `Math.cos`/`Math.sin`
|
|
5
|
+
* once instead of once per vector. Prefer {@link v2_rotate} when only a single vector is rotated.
|
|
6
|
+
*
|
|
7
|
+
* The rotation matches the standard 2d rotation matrix
|
|
8
|
+
* `[cos, -sin; sin, cos]`, i.e. counter-clockwise in a Y-up frame and clockwise in the Y-down
|
|
9
|
+
* frames used by grid/screen space. Callers own any rounding or snapping of the result.
|
|
10
|
+
*
|
|
11
|
+
* @param {Float64Array|Float32Array|number[]} result
|
|
12
|
+
* @param {number} result_offset
|
|
13
|
+
* @param {number} x
|
|
14
|
+
* @param {number} y
|
|
15
|
+
* @param {number} cos cosine of the rotation angle
|
|
16
|
+
* @param {number} sin sine of the rotation angle
|
|
17
|
+
*/
|
|
18
|
+
export function v2_rotate_cos_sin(result, result_offset, x, y, cos, sin) {
|
|
19
|
+
result[result_offset] = x * cos - y * sin;
|
|
20
|
+
result[result_offset + 1] = x * sin + y * cos;
|
|
21
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build a symmetric {@link CSRGraph} from an undirected edge list — the producer `core/graph/csr` was
|
|
3
|
+
* missing.
|
|
4
|
+
*
|
|
5
|
+
* WHY this exists: the package ships plenty of CSR *consumers* (`csr_graph_find_edge`,
|
|
6
|
+
* `csr_graph_build_distance_field`, `csr_graph_find_shortest_path`) but nothing that turns an
|
|
7
|
+
* `{a[], b[], weights[]}` edge list into one, so every caller re-derived the same three-pass idiom by hand:
|
|
8
|
+
* count degrees, prefix-sum them into row offsets, then fill both half-edges through a per-vertex write
|
|
9
|
+
* cursor. It is short but easy to get subtly wrong (forgetting that an undirected edge occupies a slot at
|
|
10
|
+
* BOTH endpoints, or advancing the cursor for only one of them), and a bug shows up as silently truncated
|
|
11
|
+
* adjacency rather than a crash.
|
|
12
|
+
*
|
|
13
|
+
* Each undirected edge `(a[e], b[e])` contributes a row entry at both endpoints, so
|
|
14
|
+
* `adjacency_length === 2 · edge_count`. Rows come out SORTED ascending by neighbour id, with
|
|
15
|
+
* `edge_weights` permuted alongside — the conventional CSR form, which makes the adjacency a canonical
|
|
16
|
+
* function of the edge SET rather than of the order the edges happened to be appended in, and lets callers
|
|
17
|
+
* binary-search a row. Degrees in the graphs this serves are small, so the per-row sort is an insertion
|
|
18
|
+
* sort and costs nothing measurable next to building the edge list itself.
|
|
19
|
+
*
|
|
20
|
+
* A self-loop `a[e] === b[e]` would occupy two slots in the same row; callers are expected not to emit one.
|
|
21
|
+
*
|
|
22
|
+
* @param {number} vertex_count
|
|
23
|
+
* @param {ArrayLike<number>} a per-edge first endpoint, each in `[0, vertex_count)`
|
|
24
|
+
* @param {ArrayLike<number>} b per-edge second endpoint, each in `[0, vertex_count)`; parallel to `a`
|
|
25
|
+
* @param {ArrayLike<number>} edge_weights per-edge weight, parallel to `a`/`b`; both half-edges get it
|
|
26
|
+
* @returns {CSRGraph}
|
|
27
|
+
*/
|
|
28
|
+
export function csr_graph_from_undirected_edge_list(vertex_count: number, a: ArrayLike<number>, b: ArrayLike<number>, edge_weights: ArrayLike<number>): CSRGraph;
|
|
29
|
+
import { CSRGraph } from "./CSRGraph.js";
|
|
30
|
+
//# sourceMappingURL=csr_graph_from_undirected_edge_list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csr_graph_from_undirected_edge_list.d.ts","sourceRoot":"","sources":["../../../../../src/core/graph/csr/csr_graph_from_undirected_edge_list.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,kEANW,MAAM,KACN,UAAU,MAAM,CAAC,KACjB,UAAU,MAAM,CAAC,gBACjB,UAAU,MAAM,CAAC,GACf,QAAQ,CAiEpB;yBA5FwB,eAAe"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { assert } from "../../assert.js";
|
|
2
|
+
import { CSRGraph } from "./CSRGraph.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Build a symmetric {@link CSRGraph} from an undirected edge list — the producer `core/graph/csr` was
|
|
6
|
+
* missing.
|
|
7
|
+
*
|
|
8
|
+
* WHY this exists: the package ships plenty of CSR *consumers* (`csr_graph_find_edge`,
|
|
9
|
+
* `csr_graph_build_distance_field`, `csr_graph_find_shortest_path`) but nothing that turns an
|
|
10
|
+
* `{a[], b[], weights[]}` edge list into one, so every caller re-derived the same three-pass idiom by hand:
|
|
11
|
+
* count degrees, prefix-sum them into row offsets, then fill both half-edges through a per-vertex write
|
|
12
|
+
* cursor. It is short but easy to get subtly wrong (forgetting that an undirected edge occupies a slot at
|
|
13
|
+
* BOTH endpoints, or advancing the cursor for only one of them), and a bug shows up as silently truncated
|
|
14
|
+
* adjacency rather than a crash.
|
|
15
|
+
*
|
|
16
|
+
* Each undirected edge `(a[e], b[e])` contributes a row entry at both endpoints, so
|
|
17
|
+
* `adjacency_length === 2 · edge_count`. Rows come out SORTED ascending by neighbour id, with
|
|
18
|
+
* `edge_weights` permuted alongside — the conventional CSR form, which makes the adjacency a canonical
|
|
19
|
+
* function of the edge SET rather than of the order the edges happened to be appended in, and lets callers
|
|
20
|
+
* binary-search a row. Degrees in the graphs this serves are small, so the per-row sort is an insertion
|
|
21
|
+
* sort and costs nothing measurable next to building the edge list itself.
|
|
22
|
+
*
|
|
23
|
+
* A self-loop `a[e] === b[e]` would occupy two slots in the same row; callers are expected not to emit one.
|
|
24
|
+
*
|
|
25
|
+
* @param {number} vertex_count
|
|
26
|
+
* @param {ArrayLike<number>} a per-edge first endpoint, each in `[0, vertex_count)`
|
|
27
|
+
* @param {ArrayLike<number>} b per-edge second endpoint, each in `[0, vertex_count)`; parallel to `a`
|
|
28
|
+
* @param {ArrayLike<number>} edge_weights per-edge weight, parallel to `a`/`b`; both half-edges get it
|
|
29
|
+
* @returns {CSRGraph}
|
|
30
|
+
*/
|
|
31
|
+
export function csr_graph_from_undirected_edge_list(vertex_count, a, b, edge_weights) {
|
|
32
|
+
assert.isNonNegativeInteger(vertex_count, 'vertex_count');
|
|
33
|
+
assert.equal(b.length, a.length, 'b.length !== a.length');
|
|
34
|
+
assert.greaterThanOrEqual(edge_weights.length, a.length, 'edge_weights shorter than the edge list');
|
|
35
|
+
|
|
36
|
+
const edge_count = a.length;
|
|
37
|
+
|
|
38
|
+
const graph = new CSRGraph(vertex_count, edge_count * 2);
|
|
39
|
+
|
|
40
|
+
const edge_addresses = graph.edge_addresses;
|
|
41
|
+
const adjacency = graph.adjacency;
|
|
42
|
+
const weights = graph.edge_weights;
|
|
43
|
+
|
|
44
|
+
// pass 1 — degree of every vertex (both endpoints of each undirected edge)
|
|
45
|
+
for (let e = 0; e < edge_count; e++) {
|
|
46
|
+
edge_addresses[a[e] + 1]++;
|
|
47
|
+
edge_addresses[b[e] + 1]++;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// pass 2 — prefix-sum the degrees into row offsets (edge_addresses[v] is now the start of v's row)
|
|
51
|
+
for (let v = 0; v < vertex_count; v++) {
|
|
52
|
+
edge_addresses[v + 1] += edge_addresses[v];
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// pass 3 — fill both half-edges through a per-vertex write cursor
|
|
56
|
+
const cursor = edge_addresses.slice(0, vertex_count);
|
|
57
|
+
|
|
58
|
+
for (let e = 0; e < edge_count; e++) {
|
|
59
|
+
const u = a[e];
|
|
60
|
+
const v = b[e];
|
|
61
|
+
const w = edge_weights[e];
|
|
62
|
+
|
|
63
|
+
adjacency[cursor[u]] = v;
|
|
64
|
+
weights[cursor[u]] = w;
|
|
65
|
+
cursor[u]++;
|
|
66
|
+
|
|
67
|
+
adjacency[cursor[v]] = u;
|
|
68
|
+
weights[cursor[v]] = w;
|
|
69
|
+
cursor[v]++;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// pass 4 — canonicalise each row (ascending neighbour id), carrying the weights along
|
|
73
|
+
for (let v = 0; v < vertex_count; v++) {
|
|
74
|
+
const start = edge_addresses[v];
|
|
75
|
+
const end = edge_addresses[v + 1];
|
|
76
|
+
|
|
77
|
+
for (let i = start + 1; i < end; i++) {
|
|
78
|
+
const neighbour = adjacency[i];
|
|
79
|
+
const weight = weights[i];
|
|
80
|
+
|
|
81
|
+
let j = i - 1;
|
|
82
|
+
while (j >= start && adjacency[j] > neighbour) {
|
|
83
|
+
adjacency[j + 1] = adjacency[j];
|
|
84
|
+
weights[j + 1] = weights[j];
|
|
85
|
+
j--;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
adjacency[j + 1] = neighbour;
|
|
89
|
+
weights[j + 1] = weight;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
return graph;
|
|
94
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CircleLayout.d.ts","sourceRoot":"","sources":["../../../../../src/core/graph/layout/CircleLayout.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CircleLayout.d.ts","sourceRoot":"","sources":["../../../../../src/core/graph/layout/CircleLayout.js"],"names":[],"mappings":"AA0HA;;;;;GAKG;AACH,yCAJW,MAAM,EAAE,yBAER,OAAO,QAyEjB;AAsBD;;;;GAIG;AACH,kDAHW,MAAM,EAAE,UACR,OAAO,QAcjB;AA2TD,sGAsBC;AA4MD;;;;GAIG;AACH,8CAHW,MAAM,WACN,MAAM,EAAE,QAgBlB;AAED;;;;;GAKG;AACH,4CAJW,MAAM,EAAE,UACR,OAAO,YACP,MAAM,QAkBhB;AAED;;;;;GAKG;AACH,qDAJW,MAAM,WACN,MAAM,EAAE,GACP,MAAM,CA2EjB;mBAp4BkB,gCAAgC;oBAI/B,uBAAuB"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import { graph_peel_topological_layer } from "./graph_peel_topological_layer.js";
|
|
1
2
|
import { assert } from "../../assert.js";
|
|
2
3
|
import AABB2 from "../../geom/2d/aabb/AABB2.js";
|
|
3
4
|
import Circle from "../../geom/2d/circle/Circle.js";
|
|
4
5
|
import { segment2_intersects_segment2_2d } from "../../geom/2d/line/segment2_intersects_segment2_2d.js";
|
|
5
6
|
import { v2_distance } from "../../geom/vec2/v2_distance.js";
|
|
7
|
+
import { v2_length } from "../../geom/vec2/v2_length.js";
|
|
6
8
|
import Vector2 from "../../geom/Vector2.js";
|
|
7
9
|
import { max2 } from "../../math/max2.js";
|
|
8
10
|
import { min2 } from "../../math/min2.js";
|
|
@@ -22,35 +24,10 @@ function doLayerLayout(circles) {
|
|
|
22
24
|
return b.locked !== true;
|
|
23
25
|
});
|
|
24
26
|
|
|
25
|
-
function buildLayer() {
|
|
26
|
-
const layer = [];
|
|
27
|
-
|
|
28
|
-
main_loop:for (let i = remaining.length - 1; i >= 0; i--) {
|
|
29
|
-
const box = remaining[i];
|
|
30
|
-
const connections = box.connections;
|
|
31
|
-
|
|
32
|
-
for (let j = 0; j < connections.length; j++) {
|
|
33
|
-
const connection = connections[j];
|
|
34
|
-
|
|
35
|
-
const source = connection.source;
|
|
36
|
-
if (source !== box && remaining.indexOf(source) !== -1) {
|
|
37
|
-
//not closed yet
|
|
38
|
-
continue main_loop;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
remaining.splice(i, 1);
|
|
43
|
-
|
|
44
|
-
//all sources are already laid out
|
|
45
|
-
layer.push(box);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
return layer;
|
|
49
|
-
}
|
|
50
27
|
|
|
51
28
|
let offsetY = 0;
|
|
52
29
|
while (remaining.length > 0) {
|
|
53
|
-
const layer =
|
|
30
|
+
const layer = graph_peel_topological_layer(remaining);
|
|
54
31
|
|
|
55
32
|
if (layer.length === 0) {
|
|
56
33
|
console.error("Layer is empty", remaining, circles, offsetY);
|
|
@@ -285,7 +262,7 @@ function applyPull(edges, strength) {
|
|
|
285
262
|
const dX = x1 - x0;
|
|
286
263
|
const dY = y1 - y0;
|
|
287
264
|
|
|
288
|
-
const length =
|
|
265
|
+
const length = v2_length(dX, dY);
|
|
289
266
|
|
|
290
267
|
const r0 = c0.r;
|
|
291
268
|
const r1 = c1.r;
|
|
@@ -742,7 +719,7 @@ function resolveCircleLineOverlap(circle, c0, c1) {
|
|
|
742
719
|
const ndX = cX - nX;
|
|
743
720
|
const ndY = cY - nY;
|
|
744
721
|
|
|
745
|
-
const ncD =
|
|
722
|
+
const ncD = v2_length(ndX, ndY);
|
|
746
723
|
|
|
747
724
|
//compute penetration distance
|
|
748
725
|
const penD = r - ncD;
|
|
@@ -877,7 +854,7 @@ export function resolveCircleOverlapStep(numCircles, circles) {
|
|
|
877
854
|
const dx = x1 - x0;
|
|
878
855
|
const dy = y1 - y0;
|
|
879
856
|
|
|
880
|
-
const distance =
|
|
857
|
+
const distance = v2_length(dx, dy);
|
|
881
858
|
|
|
882
859
|
const minSeparation = r0 + r1;
|
|
883
860
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BoxLayouter.d.ts","sourceRoot":"","sources":["../../../../../../src/core/graph/layout/box/BoxLayouter.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BoxLayouter.d.ts","sourceRoot":"","sources":["../../../../../../src/core/graph/layout/box/BoxLayouter.js"],"names":[],"mappings":"AAiZA;;;;GAIG;AACH,+CAHW,KAAK,EAAE,UACP,OAAO,QASjB;kBAtZiB,gCAAgC;oBAC9B,0BAA0B;AA8Z9C;;;;;GAKG;AACH,mCAJW,MAAO,KAAK,CAAC,yBAEb,OAAO,QA0FjB;AArGD,gDAKC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { graph_peel_topological_layer } from "../graph_peel_topological_layer.js";
|
|
1
2
|
/**
|
|
2
3
|
*
|
|
3
4
|
* @param {Array.<AABB2>} boxes
|
|
@@ -358,35 +359,10 @@ function doLayerLayout(boxes) {
|
|
|
358
359
|
return b.locked !== true;
|
|
359
360
|
});
|
|
360
361
|
|
|
361
|
-
function buildLayer() {
|
|
362
|
-
const layer = [];
|
|
363
|
-
|
|
364
|
-
main_loop:for (let i = remaining.length - 1; i >= 0; i--) {
|
|
365
|
-
const box = remaining[i];
|
|
366
|
-
const connections = box.connections;
|
|
367
|
-
|
|
368
|
-
for (let j = 0; j < connections.length; j++) {
|
|
369
|
-
const connection = connections[j];
|
|
370
|
-
|
|
371
|
-
const source = connection.source;
|
|
372
|
-
if (source !== box && remaining.indexOf(source) !== -1) {
|
|
373
|
-
//not closed yet
|
|
374
|
-
continue main_loop;
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
remaining.splice(i, 1);
|
|
379
|
-
|
|
380
|
-
//all sources are already laid out
|
|
381
|
-
layer.push(box);
|
|
382
|
-
}
|
|
383
|
-
|
|
384
|
-
return layer;
|
|
385
|
-
}
|
|
386
362
|
|
|
387
363
|
let offsetY = 0;
|
|
388
364
|
while (remaining.length > 0) {
|
|
389
|
-
const layer =
|
|
365
|
+
const layer = graph_peel_topological_layer(remaining);
|
|
390
366
|
|
|
391
367
|
if (layer.length === 0) {
|
|
392
368
|
console.error("Layer is empty", remaining, boxes, offsetY);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"position_box_next_to_box.d.ts","sourceRoot":"","sources":["../../../../../../src/core/graph/layout/box/position_box_next_to_box.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"position_box_next_to_box.d.ts","sourceRoot":"","sources":["../../../../../../src/core/graph/layout/box/position_box_next_to_box.js"],"names":[],"mappings":"AA+JA;;;;;;GAMG;AACH,8CALW,KAAK,UACL,KAAK,UACL,KAAK,GACH,KAAK,CAsCjB;kBAzMiB,gCAAgC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { v2_length } from "../../../geom/vec2/v2_length.js";
|
|
1
2
|
import AABB2 from "../../../geom/2d/aabb/AABB2.js";
|
|
2
3
|
import Vector2 from "../../../geom/Vector2.js";
|
|
3
4
|
import { EPSILON } from "../../../math/EPSILON.js";
|
|
@@ -34,7 +35,7 @@ function compute_initial_placement(
|
|
|
34
35
|
const targetH = target.height;
|
|
35
36
|
const targetW = target.width;
|
|
36
37
|
|
|
37
|
-
const targetDiagonal =
|
|
38
|
+
const targetDiagonal = v2_length(targetW, targetH);
|
|
38
39
|
|
|
39
40
|
const boxWidth = box.width;
|
|
40
41
|
const boxHeight = box.height;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"computeDisconnectedSubGraphs.d.ts","sourceRoot":"","sources":["../../../../../src/core/graph/layout/computeDisconnectedSubGraphs.js"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,oDAHW;IAAC,WAAW,EAAC,YAAY,CAAA;CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"computeDisconnectedSubGraphs.d.ts","sourceRoot":"","sources":["../../../../../src/core/graph/layout/computeDisconnectedSubGraphs.js"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,oDAHW;IAAC,WAAW,EAAC,YAAY,CAAA;CAAC,EAAE,SAkEtC"}
|
|
@@ -8,15 +8,20 @@ export function computeDisconnectedSubGraphs(nodes) {
|
|
|
8
8
|
//find disconnected sub-graphs
|
|
9
9
|
const unexplored = nodes.slice();
|
|
10
10
|
|
|
11
|
+
// Membership mirror. This used to be `unexplored.indexOf(node)` + `splice`, which made the whole
|
|
12
|
+
// traversal O(n^2). Claimed nodes are now skipped at pop time instead of being spliced out: since
|
|
13
|
+
// `splice` removed from the middle while `pop` reads from the end, the order of the remaining nodes --
|
|
14
|
+
// and therefore the sequence of cluster seeds -- is identical either way.
|
|
15
|
+
const claimed = new Set();
|
|
16
|
+
|
|
11
17
|
let cursor, i;
|
|
12
18
|
|
|
13
19
|
|
|
14
20
|
let currentCluster;
|
|
15
21
|
|
|
16
22
|
function exploreNode(node) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
unexplored.splice(i, 1);
|
|
23
|
+
if (!claimed.has(node)) {
|
|
24
|
+
claimed.add(node);
|
|
20
25
|
|
|
21
26
|
currentCluster.push(node);
|
|
22
27
|
}
|
|
@@ -27,6 +32,12 @@ export function computeDisconnectedSubGraphs(nodes) {
|
|
|
27
32
|
while (unexplored.length > 0) {
|
|
28
33
|
const node = unexplored.pop();
|
|
29
34
|
|
|
35
|
+
if (claimed.has(node)) {
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
claimed.add(node);
|
|
40
|
+
|
|
30
41
|
currentCluster = [node];
|
|
31
42
|
|
|
32
43
|
cursor = 0;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Peel one topological layer off `remaining`: every node whose incoming connections all originate outside
|
|
3
|
+
* `remaining` (i.e. from nodes already laid out) is removed from it and returned.
|
|
4
|
+
*
|
|
5
|
+
* MUTATES `remaining` — peeled nodes are spliced out, so repeated calls walk the graph layer by layer and
|
|
6
|
+
* an empty result means the rest of the graph is cyclic.
|
|
7
|
+
*
|
|
8
|
+
* Self-connections are ignored, so a node pointing at itself does not block its own layer.
|
|
9
|
+
*
|
|
10
|
+
* Pure graph topology, no geometry: shared verbatim by the box and circle layouters, which each held an
|
|
11
|
+
* identical private copy closed over their own `remaining`.
|
|
12
|
+
*
|
|
13
|
+
* @template {{ connections: Array<{ source: * }> }} T
|
|
14
|
+
* @param {T[]} remaining nodes not yet laid out; mutated
|
|
15
|
+
* @returns {T[]} the peeled layer, empty when nothing can be peeled
|
|
16
|
+
*
|
|
17
|
+
* @author Alex Goldring
|
|
18
|
+
* @copyright Company Named Limited (c) 2026
|
|
19
|
+
*/
|
|
20
|
+
export function graph_peel_topological_layer<T extends {
|
|
21
|
+
connections: Array<{
|
|
22
|
+
source: any;
|
|
23
|
+
}>;
|
|
24
|
+
}>(remaining: T[]): T[];
|
|
25
|
+
//# sourceMappingURL=graph_peel_topological_layer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph_peel_topological_layer.d.ts","sourceRoot":"","sources":["../../../../../src/core/graph/layout/graph_peel_topological_layer.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH;iBAP6B,MAAM;QAAE,MAAM,MAAG;KAAE,CAAC;wBAgChD"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Peel one topological layer off `remaining`: every node whose incoming connections all originate outside
|
|
3
|
+
* `remaining` (i.e. from nodes already laid out) is removed from it and returned.
|
|
4
|
+
*
|
|
5
|
+
* MUTATES `remaining` — peeled nodes are spliced out, so repeated calls walk the graph layer by layer and
|
|
6
|
+
* an empty result means the rest of the graph is cyclic.
|
|
7
|
+
*
|
|
8
|
+
* Self-connections are ignored, so a node pointing at itself does not block its own layer.
|
|
9
|
+
*
|
|
10
|
+
* Pure graph topology, no geometry: shared verbatim by the box and circle layouters, which each held an
|
|
11
|
+
* identical private copy closed over their own `remaining`.
|
|
12
|
+
*
|
|
13
|
+
* @template {{ connections: Array<{ source: * }> }} T
|
|
14
|
+
* @param {T[]} remaining nodes not yet laid out; mutated
|
|
15
|
+
* @returns {T[]} the peeled layer, empty when nothing can be peeled
|
|
16
|
+
*
|
|
17
|
+
* @author Alex Goldring
|
|
18
|
+
* @copyright Company Named Limited (c) 2026
|
|
19
|
+
*/
|
|
20
|
+
export function graph_peel_topological_layer(remaining) {
|
|
21
|
+
const layer = [];
|
|
22
|
+
|
|
23
|
+
main_loop: for (let i = remaining.length - 1; i >= 0; i--) {
|
|
24
|
+
const node = remaining[i];
|
|
25
|
+
const connections = node.connections;
|
|
26
|
+
|
|
27
|
+
for (let j = 0; j < connections.length; j++) {
|
|
28
|
+
const connection = connections[j];
|
|
29
|
+
|
|
30
|
+
const source = connection.source;
|
|
31
|
+
|
|
32
|
+
if (source !== node && remaining.indexOf(source) !== -1) {
|
|
33
|
+
// a source is still pending, so this node is not ready for this layer
|
|
34
|
+
continue main_loop;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
remaining.splice(i, 1);
|
|
39
|
+
|
|
40
|
+
// all sources are already laid out
|
|
41
|
+
layer.push(node);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return layer;
|
|
45
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Combine two integer hashes into one, using the classic `h * 31 + x` step truncated to int32.
|
|
3
|
+
*
|
|
4
|
+
* This is the canonical two-value mixer. Prefer it over {@link combine_hash} on any path that runs more
|
|
5
|
+
* than occasionally: `combine_hash` is varargs and therefore allocates a rest array per call, whereas this
|
|
6
|
+
* is allocation-free and monomorphic.
|
|
7
|
+
*
|
|
8
|
+
* Both `(a << 5) - a + b` and `a * 31 + b` spellings appear in the codebase and agree once truncated —
|
|
9
|
+
* `a * 31 + b` stays exact in a double for int32 inputs (31 * 2^31 is well under 2^53), so the trailing
|
|
10
|
+
* `| 0` reduces both mod 2^32 identically. The spelling is unified here so the truncation cannot be
|
|
11
|
+
* forgotten, which is how {@link Vector2#hash} came to return a non-int32.
|
|
12
|
+
*
|
|
13
|
+
* @param {number} a
|
|
14
|
+
* @param {number} b
|
|
15
|
+
* @returns {number} int32
|
|
16
|
+
*
|
|
17
|
+
* @author Alex Goldring
|
|
18
|
+
* @copyright Company Named Limited (c) 2026
|
|
19
|
+
*/
|
|
20
|
+
export function hash_mix2(a: number, b: number): number;
|
|
21
|
+
//# sourceMappingURL=hash_mix2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash_mix2.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/hash/hash_mix2.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,6BAPW,MAAM,KACN,MAAM,GACJ,MAAM,CAOlB"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Combine two integer hashes into one, using the classic `h * 31 + x` step truncated to int32.
|
|
3
|
+
*
|
|
4
|
+
* This is the canonical two-value mixer. Prefer it over {@link combine_hash} on any path that runs more
|
|
5
|
+
* than occasionally: `combine_hash` is varargs and therefore allocates a rest array per call, whereas this
|
|
6
|
+
* is allocation-free and monomorphic.
|
|
7
|
+
*
|
|
8
|
+
* Both `(a << 5) - a + b` and `a * 31 + b` spellings appear in the codebase and agree once truncated —
|
|
9
|
+
* `a * 31 + b` stays exact in a double for int32 inputs (31 * 2^31 is well under 2^53), so the trailing
|
|
10
|
+
* `| 0` reduces both mod 2^32 identically. The spelling is unified here so the truncation cannot be
|
|
11
|
+
* forgotten, which is how {@link Vector2#hash} came to return a non-int32.
|
|
12
|
+
*
|
|
13
|
+
* @param {number} a
|
|
14
|
+
* @param {number} b
|
|
15
|
+
* @returns {number} int32
|
|
16
|
+
*
|
|
17
|
+
* @author Alex Goldring
|
|
18
|
+
* @copyright Company Named Limited (c) 2026
|
|
19
|
+
*/
|
|
20
|
+
export function hash_mix2(a, b) {
|
|
21
|
+
return (a * 31 + b) | 0;
|
|
22
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Combine three integer hashes into one. Left-folded {@link hash_mix2}, so
|
|
3
|
+
* `hash_mix3(a, b, c) === hash_mix2(hash_mix2(a, b), c)`.
|
|
4
|
+
*
|
|
5
|
+
* Allocation-free, unlike the varargs {@link combine_hash}.
|
|
6
|
+
*
|
|
7
|
+
* @param {number} a
|
|
8
|
+
* @param {number} b
|
|
9
|
+
* @param {number} c
|
|
10
|
+
* @returns {number} int32
|
|
11
|
+
*
|
|
12
|
+
* @author Alex Goldring
|
|
13
|
+
* @copyright Company Named Limited (c) 2026
|
|
14
|
+
*/
|
|
15
|
+
export function hash_mix3(a: number, b: number, c: number): number;
|
|
16
|
+
//# sourceMappingURL=hash_mix3.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash_mix3.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/hash/hash_mix3.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AACH,6BARW,MAAM,KACN,MAAM,KACN,MAAM,GACJ,MAAM,CAOlB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { hash_mix2 } from "./hash_mix2.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Combine three integer hashes into one. Left-folded {@link hash_mix2}, so
|
|
5
|
+
* `hash_mix3(a, b, c) === hash_mix2(hash_mix2(a, b), c)`.
|
|
6
|
+
*
|
|
7
|
+
* Allocation-free, unlike the varargs {@link combine_hash}.
|
|
8
|
+
*
|
|
9
|
+
* @param {number} a
|
|
10
|
+
* @param {number} b
|
|
11
|
+
* @param {number} c
|
|
12
|
+
* @returns {number} int32
|
|
13
|
+
*
|
|
14
|
+
* @author Alex Goldring
|
|
15
|
+
* @copyright Company Named Limited (c) 2026
|
|
16
|
+
*/
|
|
17
|
+
export function hash_mix3(a, b, c) {
|
|
18
|
+
return hash_mix2(hash_mix2(a, b), c);
|
|
19
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical 6-stop "cold to hot" heatmap ramp, RGBA in 0..255, uniformly spaced across `[0,1]`:
|
|
3
|
+
* black → blue → teal → green → yellow → red.
|
|
4
|
+
*
|
|
5
|
+
* This exists so that every debug/diagnostic overlay in the engine reads the same colours; before
|
|
6
|
+
* it the identical six rows were declared independently by the terrain overlay painter and the
|
|
7
|
+
* forward+ froxel debug grid, and a palette tweak in one made the two disagree.
|
|
8
|
+
*
|
|
9
|
+
* Write mode is disabled, so the shared instance cannot be mutated by a consumer — build your own
|
|
10
|
+
* {@link ParameterLookupTable} if you need a different ramp.
|
|
11
|
+
*
|
|
12
|
+
* @readonly
|
|
13
|
+
* @type {ParameterLookupTable}
|
|
14
|
+
*/
|
|
15
|
+
export const LUT_HEATMAP: ParameterLookupTable;
|
|
16
|
+
import { ParameterLookupTable } from "./ParameterLookupTable.js";
|
|
17
|
+
//# sourceMappingURL=LUT_HEATMAP.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LUT_HEATMAP.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/lookup/LUT_HEATMAP.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AACH,0BAFU,oBAAoB,CAEyB;qCAhBlB,2BAA2B"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { ParameterLookupTable } from "./ParameterLookupTable.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Canonical 6-stop "cold to hot" heatmap ramp, RGBA in 0..255, uniformly spaced across `[0,1]`:
|
|
5
|
+
* black → blue → teal → green → yellow → red.
|
|
6
|
+
*
|
|
7
|
+
* This exists so that every debug/diagnostic overlay in the engine reads the same colours; before
|
|
8
|
+
* it the identical six rows were declared independently by the terrain overlay painter and the
|
|
9
|
+
* forward+ froxel debug grid, and a palette tweak in one made the two disagree.
|
|
10
|
+
*
|
|
11
|
+
* Write mode is disabled, so the shared instance cannot be mutated by a consumer — build your own
|
|
12
|
+
* {@link ParameterLookupTable} if you need a different ramp.
|
|
13
|
+
*
|
|
14
|
+
* @readonly
|
|
15
|
+
* @type {ParameterLookupTable}
|
|
16
|
+
*/
|
|
17
|
+
export const LUT_HEATMAP = new ParameterLookupTable(4);
|
|
18
|
+
|
|
19
|
+
LUT_HEATMAP.write([
|
|
20
|
+
0, 0, 0, 255,
|
|
21
|
+
0, 0, 255, 255,
|
|
22
|
+
0, 179, 179, 255,
|
|
23
|
+
0, 255, 0, 255,
|
|
24
|
+
255, 255, 0, 255,
|
|
25
|
+
255, 5, 5, 255
|
|
26
|
+
]);
|
|
27
|
+
|
|
28
|
+
LUT_HEATMAP.computeUniformPositions();
|
|
29
|
+
|
|
30
|
+
LUT_HEATMAP.disableWriteMode();
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
+
* Divergence-free 3D curl noise.
|
|
3
|
+
*
|
|
4
|
+
* This is the time-independent face of {@link curl_noise_3dt}: sampling the animated field at `w = 0`.
|
|
5
|
+
* `0` is a real point on the time axis, not a sentinel. The three decorrelation offsets that separate the
|
|
6
|
+
* potential-field components live in `curl_noise_3dt` only — duplicating them here meant retuning one
|
|
7
|
+
* field silently decorrelated it from the other.
|
|
2
8
|
*
|
|
3
9
|
* @param {number[]} result
|
|
4
10
|
* @param {number} x
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"curl_noise_3d.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/noise/curl_noise_3d.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"curl_noise_3d.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/noise/curl_noise_3d.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,sCALW,MAAM,EAAE,KACR,MAAM,KACN,MAAM,KACN,MAAM,QAIhB"}
|