@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
package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path_polyanya.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bt_mesh_face_find_path_polyanya.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path_polyanya.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bt_mesh_face_find_path_polyanya.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path_polyanya.js"],"names":[],"mappings":"AA6RA;;;;;;;;;;;;;;GAcG;AACH,wDAZW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,gCAElC,MAAM,MACN,MAAM,MACN,MAAM,cACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,aACN,MAAM,GACJ,MAAM,CA+HlB"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { bt_face_read_triangle_vertices } from "./bt_face_read_triangle.js";
|
|
2
|
+
import { bt_vertex_distance_to_vertex } from "./bt_vertex_distance_to_vertex.js";
|
|
1
3
|
import { Uint32Heap4 } from "../../../../../../collection/heap/Uint32Heap4.js";
|
|
2
4
|
import {
|
|
3
5
|
line2_segment_intersection_fraction_2d
|
|
@@ -87,24 +89,11 @@ function touch_distance(rx, ry, i0x, i0y, i1x, i1y, gx, gy) {
|
|
|
87
89
|
// ---- mesh helpers ----------------------------------------------------------------------------------
|
|
88
90
|
|
|
89
91
|
const _va = new Float64Array(3), _vb = new Float64Array(3), _vc = new Float64Array(3);
|
|
90
|
-
const _qa = new Float64Array(3)
|
|
92
|
+
const _qa = new Float64Array(3); // vertex-coordinate read, kept off _va/_vb/_vc
|
|
91
93
|
|
|
92
94
|
const _tri = [0, 0, 0];
|
|
93
|
-
function triangle_vertices(topology, face) {
|
|
94
|
-
const l0 = topology.face_read_loop(face);
|
|
95
|
-
const l1 = topology.loop_read_next(l0);
|
|
96
|
-
const l2 = topology.loop_read_next(l1);
|
|
97
|
-
_tri[0] = topology.loop_read_vertex(l0);
|
|
98
|
-
_tri[1] = topology.loop_read_vertex(l1);
|
|
99
|
-
_tri[2] = topology.loop_read_vertex(l2);
|
|
100
|
-
}
|
|
101
95
|
|
|
102
|
-
|
|
103
|
-
function vid_distance_3d(topology, va, vb) {
|
|
104
|
-
topology.vertex_read_coordinate(_qa, 0, va);
|
|
105
|
-
topology.vertex_read_coordinate(_qb, 0, vb);
|
|
106
|
-
return Math.hypot(_qa[0] - _qb[0], _qa[1] - _qb[1], _qa[2] - _qb[2]);
|
|
107
|
-
}
|
|
96
|
+
|
|
108
97
|
|
|
109
98
|
/** The face across edge (va,vb) other than `face`, or NULL_POINTER if that edge is a boundary. */
|
|
110
99
|
function neighbour_across(topology, face, va, vb) {
|
|
@@ -135,15 +124,15 @@ function neighbour_across(topology, face, va, vb) {
|
|
|
135
124
|
*/
|
|
136
125
|
const _apex = new Float64Array(2);
|
|
137
126
|
function unfold_apex(topology, face, e0v, e1v, e0x, e0y, e1x, e1y) {
|
|
138
|
-
|
|
127
|
+
bt_face_read_triangle_vertices(_tri, topology, face);
|
|
139
128
|
let apex = -1, e0_before_e1 = false;
|
|
140
129
|
for (let i = 0; i < 3; i++) {
|
|
141
130
|
if (_tri[i] === e0v && _tri[(i + 1) % 3] === e1v) e0_before_e1 = true;
|
|
142
131
|
if (_tri[i] !== e0v && _tri[i] !== e1v) apex = _tri[i];
|
|
143
132
|
}
|
|
144
133
|
|
|
145
|
-
const dac =
|
|
146
|
-
const dbc =
|
|
134
|
+
const dac = bt_vertex_distance_to_vertex(topology, e0v, apex);
|
|
135
|
+
const dbc = bt_vertex_distance_to_vertex(topology, e1v, apex);
|
|
147
136
|
const ex = e1x - e0x, ey = e1y - e0y;
|
|
148
137
|
const d = Math.hypot(ex, ey);
|
|
149
138
|
const a = (dac * dac - dbc * dbc + d * d) / (2 * d); // foot of the apex along the edge
|
|
@@ -212,7 +201,7 @@ function is_corner(topology, vid) {
|
|
|
212
201
|
const ox = _va[0], oy = _va[1], oz = _va[2];
|
|
213
202
|
let angle = 0;
|
|
214
203
|
for (const f of _corner_faces) {
|
|
215
|
-
|
|
204
|
+
bt_face_read_triangle_vertices(_tri, topology, f);
|
|
216
205
|
let a = -1, b = -1;
|
|
217
206
|
for (let i = 0; i < 3; i++) {
|
|
218
207
|
if (_tri[i] !== vid) { if (a === -1) a = _tri[i]; else b = _tri[i]; }
|
|
@@ -325,17 +314,17 @@ export function bt_mesh_face_find_path_polyanya(output, topology, sx, sy, sz, st
|
|
|
325
314
|
}
|
|
326
315
|
|
|
327
316
|
// goal barycentric, so the goal can be unfolded into any frame that reaches the goal face
|
|
328
|
-
|
|
317
|
+
bt_face_read_triangle_vertices(_tri, topology, goal_face);
|
|
329
318
|
_goal_v0 = _tri[0]; _goal_v1 = _tri[1]; _goal_v2 = _tri[2];
|
|
330
319
|
barycentric_3d(topology, _goal_v0, _goal_v1, _goal_v2, gx, gy, gz, _bw);
|
|
331
320
|
_goal_w0 = _bw[0]; _goal_w1 = _bw[1]; _goal_w2 = _bw[2];
|
|
332
321
|
|
|
333
322
|
// lay the start face out in 2D (CCW: apex on the +y/left side of edge a->b) and place the start point
|
|
334
|
-
|
|
323
|
+
bt_face_read_triangle_vertices(_tri, topology, start_face);
|
|
335
324
|
const a = _tri[0], b = _tri[1], c = _tri[2];
|
|
336
|
-
const dab =
|
|
337
|
-
const dac =
|
|
338
|
-
const dbc =
|
|
325
|
+
const dab = bt_vertex_distance_to_vertex(topology, a, b);
|
|
326
|
+
const dac = bt_vertex_distance_to_vertex(topology, a, c);
|
|
327
|
+
const dbc = bt_vertex_distance_to_vertex(topology, b, c);
|
|
339
328
|
const cx = (dac * dac - dbc * dbc + dab * dab) / (2 * dab);
|
|
340
329
|
let ch2 = dac * dac - cx * cx; if (ch2 < 0) ch2 = 0;
|
|
341
330
|
const cy = Math.sqrt(ch2); // p_a=(0,0), p_b=(dab,0), p_c=(cx,cy)
|
package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bt_mesh_sample_interior_grid_points.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bt_mesh_sample_interior_grid_points.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.js"],"names":[],"mappings":"AA8EA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,yFAJW,MAAM,SACN,MAAM,GACJ,YAAY,CA8ExB"}
|
package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bt_mesh_build_surface_triangle_bvh, SURFACE_PARITY_RAY_COUNT, SURFACE_PARITY_RAY_DIRECTIONS } from "./bt_mesh_surface_ray_parity.js";
|
|
1
2
|
import { assert } from "../../../../../../assert.js";
|
|
2
3
|
import { BVH, NULL_NODE } from "../../../../../../bvh2/bvh3/BVH.js";
|
|
3
4
|
import { bvh_query_user_data_ray } from "../../../../../../bvh2/bvh3/query/bvh_query_user_data_ray.js";
|
|
@@ -9,12 +10,6 @@ import { tri3_ray_intersection } from "../../../../triangle/tri3_ray_intersectio
|
|
|
9
10
|
// majority vote. Same scheme as tetrahedral_mesh_carve_outside_surface — a
|
|
10
11
|
// single ray is fragile at grazing edges, three independent rays settle the
|
|
11
12
|
// vote correctly except in vanishingly improbable configurations.
|
|
12
|
-
const RAY_DIRECTIONS = [
|
|
13
|
-
0.97123, 0.18927, 0.14431,
|
|
14
|
-
0.34219, 0.91283, -0.22971,
|
|
15
|
-
-0.51237, 0.27894, 0.81235,
|
|
16
|
-
];
|
|
17
|
-
const RAY_COUNT = RAY_DIRECTIONS.length / 3;
|
|
18
13
|
|
|
19
14
|
// Stratification offset cap (as a fraction of a cell). 0 = perfect grid
|
|
20
15
|
// (worst case for Delaunay sliver count), 0.5 = candidates can sit anywhere
|
|
@@ -22,47 +17,6 @@ const RAY_COUNT = RAY_DIRECTIONS.length / 3;
|
|
|
22
17
|
// face/edge alignments without losing the locality benefits of the grid.
|
|
23
18
|
const JITTER = 0.35;
|
|
24
19
|
|
|
25
|
-
/**
|
|
26
|
-
* Build a BVH whose leaves are the surface's triangle faces. User data on
|
|
27
|
-
* each leaf is the source face ID.
|
|
28
|
-
*/
|
|
29
|
-
function build_surface_bvh(bvh, mesh) {
|
|
30
|
-
bvh.release_all();
|
|
31
|
-
|
|
32
|
-
const face_count = mesh.faces.size;
|
|
33
|
-
const v = [0, 0, 0];
|
|
34
|
-
|
|
35
|
-
for (let f = 0; f < face_count; f++) {
|
|
36
|
-
if (!mesh.faces.is_allocated(f)) continue;
|
|
37
|
-
|
|
38
|
-
const l0 = mesh.face_read_loop(f);
|
|
39
|
-
const l1 = mesh.loop_read_next(l0);
|
|
40
|
-
const l2 = mesh.loop_read_next(l1);
|
|
41
|
-
|
|
42
|
-
const v0 = mesh.loop_read_vertex(l0);
|
|
43
|
-
const v1 = mesh.loop_read_vertex(l1);
|
|
44
|
-
const v2 = mesh.loop_read_vertex(l2);
|
|
45
|
-
|
|
46
|
-
mesh.vertex_read_coordinate(v, 0, v0);
|
|
47
|
-
let minx = v[0], miny = v[1], minz = v[2];
|
|
48
|
-
let maxx = v[0], maxy = v[1], maxz = v[2];
|
|
49
|
-
|
|
50
|
-
mesh.vertex_read_coordinate(v, 0, v1);
|
|
51
|
-
if (v[0] < minx) minx = v[0]; else if (v[0] > maxx) maxx = v[0];
|
|
52
|
-
if (v[1] < miny) miny = v[1]; else if (v[1] > maxy) maxy = v[1];
|
|
53
|
-
if (v[2] < minz) minz = v[2]; else if (v[2] > maxz) maxz = v[2];
|
|
54
|
-
|
|
55
|
-
mesh.vertex_read_coordinate(v, 0, v2);
|
|
56
|
-
if (v[0] < minx) minx = v[0]; else if (v[0] > maxx) maxx = v[0];
|
|
57
|
-
if (v[1] < miny) miny = v[1]; else if (v[1] > maxy) maxy = v[1];
|
|
58
|
-
if (v[2] < minz) minz = v[2]; else if (v[2] > maxz) maxz = v[2];
|
|
59
|
-
|
|
60
|
-
const node = bvh.allocate_node();
|
|
61
|
-
bvh.node_set_user_data(node, f);
|
|
62
|
-
bvh.node_set_aabb_primitive(node, minx, miny, minz, maxx, maxy, maxz);
|
|
63
|
-
bvh.insert_leaf(node);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
20
|
|
|
67
21
|
const ray_hit = new SurfacePoint3();
|
|
68
22
|
const ray_candidates = [];
|
|
@@ -71,7 +25,7 @@ const vb = [0, 0, 0];
|
|
|
71
25
|
const vc = [0, 0, 0];
|
|
72
26
|
|
|
73
27
|
/**
|
|
74
|
-
* Parity ray-cast across `
|
|
28
|
+
* Parity ray-cast across `SURFACE_PARITY_RAY_COUNT` directions; majority decides
|
|
75
29
|
* inside/outside. Returns true if (strict majority of) rays cross the
|
|
76
30
|
* surface an odd number of times.
|
|
77
31
|
*/
|
|
@@ -81,10 +35,10 @@ function point_is_inside(mesh, bvh, ox, oy, oz) {
|
|
|
81
35
|
|
|
82
36
|
let inside_votes = 0;
|
|
83
37
|
|
|
84
|
-
for (let r = 0; r <
|
|
85
|
-
const dx =
|
|
86
|
-
const dy =
|
|
87
|
-
const dz =
|
|
38
|
+
for (let r = 0; r < SURFACE_PARITY_RAY_COUNT; r++) {
|
|
39
|
+
const dx = SURFACE_PARITY_RAY_DIRECTIONS[r * 3];
|
|
40
|
+
const dy = SURFACE_PARITY_RAY_DIRECTIONS[r * 3 + 1];
|
|
41
|
+
const dz = SURFACE_PARITY_RAY_DIRECTIONS[r * 3 + 2];
|
|
88
42
|
|
|
89
43
|
const candidate_count = bvh_query_user_data_ray(
|
|
90
44
|
ray_candidates, 0,
|
|
@@ -119,7 +73,7 @@ function point_is_inside(mesh, bvh, ox, oy, oz) {
|
|
|
119
73
|
if ((hits & 1) === 1) inside_votes++;
|
|
120
74
|
}
|
|
121
75
|
|
|
122
|
-
return inside_votes * 2 >
|
|
76
|
+
return inside_votes * 2 > SURFACE_PARITY_RAY_COUNT;
|
|
123
77
|
}
|
|
124
78
|
|
|
125
79
|
/**
|
|
@@ -195,7 +149,7 @@ export function bt_mesh_sample_interior_grid_points(mesh, cells_per_dim, seed =
|
|
|
195
149
|
|
|
196
150
|
// Build BVH over surface triangles for the inside-test.
|
|
197
151
|
const bvh = new BVH();
|
|
198
|
-
|
|
152
|
+
bt_mesh_build_surface_triangle_bvh(bvh, mesh);
|
|
199
153
|
|
|
200
154
|
const rng = seededRandom(seed);
|
|
201
155
|
const out = []; // grow dynamically; copy to Float32Array at the end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build a BVH whose leaves are the mesh's triangular faces, each leaf's `user_data` being the source face
|
|
3
|
+
* id. The BVH is cleared first, so it may be reused across calls.
|
|
4
|
+
*
|
|
5
|
+
* Shared by the tetrahedral carver and the interior-point sampler, which each carried a token-identical
|
|
6
|
+
* copy of this loop.
|
|
7
|
+
*
|
|
8
|
+
* @param {BVH} bvh destination, released and refilled
|
|
9
|
+
* @param {BinaryTopology} mesh surface mesh
|
|
10
|
+
*
|
|
11
|
+
* @author Alex Goldring
|
|
12
|
+
* @copyright Company Named Limited (c) 2026
|
|
13
|
+
*/
|
|
14
|
+
export function bt_mesh_build_surface_triangle_bvh(bvh: BVH, mesh: BinaryTopology): void;
|
|
15
|
+
/**
|
|
16
|
+
* Three irrational, mutually unrelated ray directions for the parity-raycast majority vote used by
|
|
17
|
+
* point-in-closed-surface tests.
|
|
18
|
+
*
|
|
19
|
+
* A single ray is fragile at grazing edges and vertices, where a hit can be counted twice or not at all;
|
|
20
|
+
* three independent directions settle the vote correctly except in vanishingly improbable configurations.
|
|
21
|
+
*
|
|
22
|
+
* Each row is roughly unit length so the AABB-vs-ray slab test in the BVH query does not degenerate.
|
|
23
|
+
* Hand-picked rather than randomised so the classification is fully deterministic — which is why these
|
|
24
|
+
* digits must not be "tidied": two callers previously carried them digit-for-digit and any edit to one
|
|
25
|
+
* copy would silently have given the two classifiers different tie-breaking on the same mesh.
|
|
26
|
+
*
|
|
27
|
+
* @type {number[]}
|
|
28
|
+
*/
|
|
29
|
+
export const SURFACE_PARITY_RAY_DIRECTIONS: number[];
|
|
30
|
+
/**
|
|
31
|
+
* Number of rays in {@link SURFACE_PARITY_RAY_DIRECTIONS}.
|
|
32
|
+
* @type {number}
|
|
33
|
+
*/
|
|
34
|
+
export const SURFACE_PARITY_RAY_COUNT: number;
|
|
35
|
+
//# sourceMappingURL=bt_mesh_surface_ray_parity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bt_mesh_surface_ray_parity.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/core/geom/3d/topology/struct/binary/query/bt_mesh_surface_ray_parity.js"],"names":[],"mappings":"AA0BA;;;;;;;;;;;;GAYG;AACH,yFAwCC;AA/ED;;;;;;;;;;;;;GAaG;AACH,4CAFU,MAAM,EAAE,CAMhB;AAEF;;;GAGG;AACH,uCAFU,MAAM,CAEiE"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Three irrational, mutually unrelated ray directions for the parity-raycast majority vote used by
|
|
3
|
+
* point-in-closed-surface tests.
|
|
4
|
+
*
|
|
5
|
+
* A single ray is fragile at grazing edges and vertices, where a hit can be counted twice or not at all;
|
|
6
|
+
* three independent directions settle the vote correctly except in vanishingly improbable configurations.
|
|
7
|
+
*
|
|
8
|
+
* Each row is roughly unit length so the AABB-vs-ray slab test in the BVH query does not degenerate.
|
|
9
|
+
* Hand-picked rather than randomised so the classification is fully deterministic — which is why these
|
|
10
|
+
* digits must not be "tidied": two callers previously carried them digit-for-digit and any edit to one
|
|
11
|
+
* copy would silently have given the two classifiers different tie-breaking on the same mesh.
|
|
12
|
+
*
|
|
13
|
+
* @type {number[]}
|
|
14
|
+
*/
|
|
15
|
+
export const SURFACE_PARITY_RAY_DIRECTIONS = [
|
|
16
|
+
0.97123, 0.18927, 0.14431,
|
|
17
|
+
0.34219, 0.91283, -0.22971,
|
|
18
|
+
-0.51237, 0.27894, 0.81235,
|
|
19
|
+
];
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Number of rays in {@link SURFACE_PARITY_RAY_DIRECTIONS}.
|
|
23
|
+
* @type {number}
|
|
24
|
+
*/
|
|
25
|
+
export const SURFACE_PARITY_RAY_COUNT = SURFACE_PARITY_RAY_DIRECTIONS.length / 3;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Build a BVH whose leaves are the mesh's triangular faces, each leaf's `user_data` being the source face
|
|
29
|
+
* id. The BVH is cleared first, so it may be reused across calls.
|
|
30
|
+
*
|
|
31
|
+
* Shared by the tetrahedral carver and the interior-point sampler, which each carried a token-identical
|
|
32
|
+
* copy of this loop.
|
|
33
|
+
*
|
|
34
|
+
* @param {BVH} bvh destination, released and refilled
|
|
35
|
+
* @param {BinaryTopology} mesh surface mesh
|
|
36
|
+
*
|
|
37
|
+
* @author Alex Goldring
|
|
38
|
+
* @copyright Company Named Limited (c) 2026
|
|
39
|
+
*/
|
|
40
|
+
export function bt_mesh_build_surface_triangle_bvh(bvh, mesh) {
|
|
41
|
+
bvh.release_all();
|
|
42
|
+
|
|
43
|
+
const face_count = mesh.faces.size;
|
|
44
|
+
const v = scratch_coordinate;
|
|
45
|
+
|
|
46
|
+
for (let f = 0; f < face_count; f++) {
|
|
47
|
+
if (!mesh.faces.is_allocated(f)) {
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const l0 = mesh.face_read_loop(f);
|
|
52
|
+
const l1 = mesh.loop_read_next(l0);
|
|
53
|
+
const l2 = mesh.loop_read_next(l1);
|
|
54
|
+
|
|
55
|
+
const v0 = mesh.loop_read_vertex(l0);
|
|
56
|
+
const v1 = mesh.loop_read_vertex(l1);
|
|
57
|
+
const v2 = mesh.loop_read_vertex(l2);
|
|
58
|
+
|
|
59
|
+
mesh.vertex_read_coordinate(v, 0, v0);
|
|
60
|
+
|
|
61
|
+
let minx = v[0], miny = v[1], minz = v[2];
|
|
62
|
+
let maxx = v[0], maxy = v[1], maxz = v[2];
|
|
63
|
+
|
|
64
|
+
mesh.vertex_read_coordinate(v, 0, v1);
|
|
65
|
+
if (v[0] < minx) minx = v[0]; else if (v[0] > maxx) maxx = v[0];
|
|
66
|
+
if (v[1] < miny) miny = v[1]; else if (v[1] > maxy) maxy = v[1];
|
|
67
|
+
if (v[2] < minz) minz = v[2]; else if (v[2] > maxz) maxz = v[2];
|
|
68
|
+
|
|
69
|
+
mesh.vertex_read_coordinate(v, 0, v2);
|
|
70
|
+
if (v[0] < minx) minx = v[0]; else if (v[0] > maxx) maxx = v[0];
|
|
71
|
+
if (v[1] < miny) miny = v[1]; else if (v[1] > maxy) maxy = v[1];
|
|
72
|
+
if (v[2] < minz) minz = v[2]; else if (v[2] > maxz) maxz = v[2];
|
|
73
|
+
|
|
74
|
+
const node = bvh.allocate_node();
|
|
75
|
+
|
|
76
|
+
bvh.node_set_user_data(node, f);
|
|
77
|
+
bvh.node_set_aabb_primitive(node, minx, miny, minz, maxx, maxy, maxz);
|
|
78
|
+
bvh.insert_leaf(node);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
const scratch_coordinate = [0, 0, 0];
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Closest point to `(px, py, pz)` on the triangle `ABC`, written into `out` as `(x, y, z)`.
|
|
3
|
+
*
|
|
4
|
+
* Wraps {@link tri3_closest_point_barycentric}, which reports the closest point as barycentric weights
|
|
5
|
+
* `[u, v]` (the weight of C being the implied `1 - u - v`). Every caller of that function immediately
|
|
6
|
+
* performed this same reconstruction, and each named the third weight differently — which is how one of
|
|
7
|
+
* them could quietly get the ordering wrong.
|
|
8
|
+
*
|
|
9
|
+
* @param {number[]|Float32Array|Float64Array} out destination for the closest point `(x, y, z)`
|
|
10
|
+
* @param {number} out_offset
|
|
11
|
+
* @param {number} px
|
|
12
|
+
* @param {number} py
|
|
13
|
+
* @param {number} pz
|
|
14
|
+
* @param {number} ax
|
|
15
|
+
* @param {number} ay
|
|
16
|
+
* @param {number} az
|
|
17
|
+
* @param {number} bx
|
|
18
|
+
* @param {number} by
|
|
19
|
+
* @param {number} bz
|
|
20
|
+
* @param {number} cx
|
|
21
|
+
* @param {number} cy
|
|
22
|
+
* @param {number} cz
|
|
23
|
+
* @returns {number} the SQUARED distance from the query point to the closest point
|
|
24
|
+
*
|
|
25
|
+
* @author Alex Goldring
|
|
26
|
+
* @copyright Company Named Limited (c) 2026
|
|
27
|
+
*/
|
|
28
|
+
export function tri3_closest_point(out: number[] | Float32Array | Float64Array, out_offset: number, px: number, py: number, pz: number, ax: number, ay: number, az: number, bx: number, by: number, bz: number, cx: number, cy: number, cz: number): number;
|
|
29
|
+
//# sourceMappingURL=tri3_closest_point.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tri3_closest_point.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/triangle/tri3_closest_point.js"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wCAnBW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,cAClC,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACJ,MAAM,CAqClB"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { tri3_closest_point_barycentric } from "./tri3_closest_point_barycentric.js";
|
|
2
|
+
|
|
3
|
+
// barycentric weights of the closest point, [u, v] with the third weight implied
|
|
4
|
+
const scratch_barycentric = new Float64Array(2);
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Closest point to `(px, py, pz)` on the triangle `ABC`, written into `out` as `(x, y, z)`.
|
|
8
|
+
*
|
|
9
|
+
* Wraps {@link tri3_closest_point_barycentric}, which reports the closest point as barycentric weights
|
|
10
|
+
* `[u, v]` (the weight of C being the implied `1 - u - v`). Every caller of that function immediately
|
|
11
|
+
* performed this same reconstruction, and each named the third weight differently — which is how one of
|
|
12
|
+
* them could quietly get the ordering wrong.
|
|
13
|
+
*
|
|
14
|
+
* @param {number[]|Float32Array|Float64Array} out destination for the closest point `(x, y, z)`
|
|
15
|
+
* @param {number} out_offset
|
|
16
|
+
* @param {number} px
|
|
17
|
+
* @param {number} py
|
|
18
|
+
* @param {number} pz
|
|
19
|
+
* @param {number} ax
|
|
20
|
+
* @param {number} ay
|
|
21
|
+
* @param {number} az
|
|
22
|
+
* @param {number} bx
|
|
23
|
+
* @param {number} by
|
|
24
|
+
* @param {number} bz
|
|
25
|
+
* @param {number} cx
|
|
26
|
+
* @param {number} cy
|
|
27
|
+
* @param {number} cz
|
|
28
|
+
* @returns {number} the SQUARED distance from the query point to the closest point
|
|
29
|
+
*
|
|
30
|
+
* @author Alex Goldring
|
|
31
|
+
* @copyright Company Named Limited (c) 2026
|
|
32
|
+
*/
|
|
33
|
+
export function tri3_closest_point(
|
|
34
|
+
out, out_offset,
|
|
35
|
+
px, py, pz,
|
|
36
|
+
ax, ay, az,
|
|
37
|
+
bx, by, bz,
|
|
38
|
+
cx, cy, cz
|
|
39
|
+
) {
|
|
40
|
+
tri3_closest_point_barycentric(
|
|
41
|
+
scratch_barycentric, 0,
|
|
42
|
+
px, py, pz,
|
|
43
|
+
ax, ay, az,
|
|
44
|
+
bx, by, bz,
|
|
45
|
+
cx, cy, cz
|
|
46
|
+
);
|
|
47
|
+
|
|
48
|
+
const u = scratch_barycentric[0];
|
|
49
|
+
const v = scratch_barycentric[1];
|
|
50
|
+
const w = 1 - u - v;
|
|
51
|
+
|
|
52
|
+
const qx = u * ax + v * bx + w * cx;
|
|
53
|
+
const qy = u * ay + v * by + w * cy;
|
|
54
|
+
const qz = u * az + v * bz + w * cz;
|
|
55
|
+
|
|
56
|
+
out[out_offset] = qx;
|
|
57
|
+
out[out_offset + 1] = qy;
|
|
58
|
+
out[out_offset + 2] = qz;
|
|
59
|
+
|
|
60
|
+
const dx = qx - px;
|
|
61
|
+
const dy = qy - py;
|
|
62
|
+
const dz = qz - pz;
|
|
63
|
+
|
|
64
|
+
return dx * dx + dy * dy + dz * dz;
|
|
65
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Flatten a 3D triangle into its own isometric 2D frame: vertex A at the origin, vertex B on the +x axis,
|
|
3
|
+
* vertex C in the upper half-plane. Writes `[len_ab, x_c, y_c]` into `out` — vertex B is implicitly
|
|
4
|
+
* `(len_ab, 0)` and vertex A is implicitly `(0, 0)`.
|
|
5
|
+
*
|
|
6
|
+
* "Isometric" means edge lengths and the interior angle at A are preserved exactly, which is what makes
|
|
7
|
+
* this the standard first step of any conformal / ARAP / LSCM / BFF parameterisation and of geodesic
|
|
8
|
+
* triangle unfolding: the flattened triangle is congruent to the original, so all per-triangle intrinsic
|
|
9
|
+
* quantities can be computed in 2D.
|
|
10
|
+
*
|
|
11
|
+
* DEGENERATE EDGE: when A and B coincide the frame has no direction, `inv1` is forced to 0, and the result
|
|
12
|
+
* is `[0, 0, 0]` rather than NaN.
|
|
13
|
+
*
|
|
14
|
+
* @param {number[]|Float32Array|Float64Array} out destination for `[len_ab, x_c, y_c]`
|
|
15
|
+
* @param {number} out_offset
|
|
16
|
+
* @param {number} ax
|
|
17
|
+
* @param {number} ay
|
|
18
|
+
* @param {number} az
|
|
19
|
+
* @param {number} bx
|
|
20
|
+
* @param {number} by
|
|
21
|
+
* @param {number} bz
|
|
22
|
+
* @param {number} cx
|
|
23
|
+
* @param {number} cy
|
|
24
|
+
* @param {number} cz
|
|
25
|
+
*
|
|
26
|
+
* @author Alex Goldring
|
|
27
|
+
* @copyright Company Named Limited (c) 2026
|
|
28
|
+
*/
|
|
29
|
+
export function tri3_flatten_isometric(out: number[] | Float32Array | Float64Array, out_offset: number, ax: number, ay: number, az: number, bx: number, by: number, bz: number, cx: number, cy: number, cz: number): void;
|
|
30
|
+
/**
|
|
31
|
+
* Indexed form of {@link tri3_flatten_isometric}: reads the three vertices out of a flat
|
|
32
|
+
* `(x, y, z)`-per-vertex position buffer.
|
|
33
|
+
*
|
|
34
|
+
* @param {number[]|Float32Array|Float64Array} out destination for `[len_ab, x_c, y_c]`
|
|
35
|
+
* @param {number} out_offset
|
|
36
|
+
* @param {number[]|Float32Array|Float64Array} positions flat `(x, y, z)` per vertex
|
|
37
|
+
* @param {number} i0 index of vertex A
|
|
38
|
+
* @param {number} i1 index of vertex B
|
|
39
|
+
* @param {number} i2 index of vertex C
|
|
40
|
+
*/
|
|
41
|
+
export function tri3_flatten_isometric_indexed(out: number[] | Float32Array | Float64Array, out_offset: number, positions: number[] | Float32Array | Float64Array, i0: number, i1: number, i2: number): void;
|
|
42
|
+
//# sourceMappingURL=tri3_flatten_isometric.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tri3_flatten_isometric.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/triangle/tri3_flatten_isometric.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,4CAfW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,cAClC,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,QA6BhB;AAED;;;;;;;;;;GAUG;AACH,oDAPW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,cAClC,MAAM,aACN,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,MAClC,MAAM,MACN,MAAM,MACN,MAAM,QAehB"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Flatten a 3D triangle into its own isometric 2D frame: vertex A at the origin, vertex B on the +x axis,
|
|
3
|
+
* vertex C in the upper half-plane. Writes `[len_ab, x_c, y_c]` into `out` — vertex B is implicitly
|
|
4
|
+
* `(len_ab, 0)` and vertex A is implicitly `(0, 0)`.
|
|
5
|
+
*
|
|
6
|
+
* "Isometric" means edge lengths and the interior angle at A are preserved exactly, which is what makes
|
|
7
|
+
* this the standard first step of any conformal / ARAP / LSCM / BFF parameterisation and of geodesic
|
|
8
|
+
* triangle unfolding: the flattened triangle is congruent to the original, so all per-triangle intrinsic
|
|
9
|
+
* quantities can be computed in 2D.
|
|
10
|
+
*
|
|
11
|
+
* DEGENERATE EDGE: when A and B coincide the frame has no direction, `inv1` is forced to 0, and the result
|
|
12
|
+
* is `[0, 0, 0]` rather than NaN.
|
|
13
|
+
*
|
|
14
|
+
* @param {number[]|Float32Array|Float64Array} out destination for `[len_ab, x_c, y_c]`
|
|
15
|
+
* @param {number} out_offset
|
|
16
|
+
* @param {number} ax
|
|
17
|
+
* @param {number} ay
|
|
18
|
+
* @param {number} az
|
|
19
|
+
* @param {number} bx
|
|
20
|
+
* @param {number} by
|
|
21
|
+
* @param {number} bz
|
|
22
|
+
* @param {number} cx
|
|
23
|
+
* @param {number} cy
|
|
24
|
+
* @param {number} cz
|
|
25
|
+
*
|
|
26
|
+
* @author Alex Goldring
|
|
27
|
+
* @copyright Company Named Limited (c) 2026
|
|
28
|
+
*/
|
|
29
|
+
export function tri3_flatten_isometric(
|
|
30
|
+
out, out_offset,
|
|
31
|
+
ax, ay, az,
|
|
32
|
+
bx, by, bz,
|
|
33
|
+
cx, cy, cz
|
|
34
|
+
) {
|
|
35
|
+
const e1x = bx - ax, e1y = by - ay, e1z = bz - az;
|
|
36
|
+
|
|
37
|
+
const len1 = Math.sqrt(e1x * e1x + e1y * e1y + e1z * e1z);
|
|
38
|
+
const inv1 = len1 > 0 ? 1 / len1 : 0;
|
|
39
|
+
|
|
40
|
+
// unit vector along AB -- the +x axis of the local frame
|
|
41
|
+
const ux = e1x * inv1, uy = e1y * inv1, uz = e1z * inv1;
|
|
42
|
+
|
|
43
|
+
const e2x = cx - ax, e2y = cy - ay, e2z = cz - az;
|
|
44
|
+
|
|
45
|
+
// x of C is its projection onto the frame axis; y is the length of what remains
|
|
46
|
+
const x3 = e2x * ux + e2y * uy + e2z * uz;
|
|
47
|
+
|
|
48
|
+
const px = e2x - x3 * ux, py = e2y - x3 * uy, pz = e2z - x3 * uz;
|
|
49
|
+
|
|
50
|
+
out[out_offset] = len1;
|
|
51
|
+
out[out_offset + 1] = x3;
|
|
52
|
+
out[out_offset + 2] = Math.sqrt(px * px + py * py + pz * pz);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Indexed form of {@link tri3_flatten_isometric}: reads the three vertices out of a flat
|
|
57
|
+
* `(x, y, z)`-per-vertex position buffer.
|
|
58
|
+
*
|
|
59
|
+
* @param {number[]|Float32Array|Float64Array} out destination for `[len_ab, x_c, y_c]`
|
|
60
|
+
* @param {number} out_offset
|
|
61
|
+
* @param {number[]|Float32Array|Float64Array} positions flat `(x, y, z)` per vertex
|
|
62
|
+
* @param {number} i0 index of vertex A
|
|
63
|
+
* @param {number} i1 index of vertex B
|
|
64
|
+
* @param {number} i2 index of vertex C
|
|
65
|
+
*/
|
|
66
|
+
export function tri3_flatten_isometric_indexed(
|
|
67
|
+
out, out_offset,
|
|
68
|
+
positions,
|
|
69
|
+
i0, i1, i2
|
|
70
|
+
) {
|
|
71
|
+
const a = i0 * 3, b = i1 * 3, c = i2 * 3;
|
|
72
|
+
|
|
73
|
+
tri3_flatten_isometric(
|
|
74
|
+
out, out_offset,
|
|
75
|
+
positions[a], positions[a + 1], positions[a + 2],
|
|
76
|
+
positions[b], positions[b + 1], positions[b + 2],
|
|
77
|
+
positions[c], positions[c + 1], positions[c + 2]
|
|
78
|
+
);
|
|
79
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Vector2.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Vector2.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Vector2.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Vector2.js"],"names":[],"mappings":"AAeA;;;;;;;;;;;;;;;;GAgBG;AACH,8DALwB,MAAM;IA8B1B;;;;OAIG;IACH,uDAEC;IA/BD;;;;OAIG;IACH,gBAHW,MAAM,MACN,MAAM,EAmBhB;IARG,UAAW;IACX,UAAW;IAEX;;;OAGG;IACH,wBAA6B;IAoBjC;;;OAGG;IACH,mBAEC;IAdD;;;OAGG;IACH,gBAEC;IAkBD;;;OAGG;IACH,mBAEC;IAdD;;;OAGG;IACH,gBAEC;IAUD;;;;;OAKG;IACH,iBAJW,MAAM,EAAE,GAAC,YAAY,WACrB,MAAM,GACJ,IAAI,CAOhB;IAED;;;;OAIG;IACH,eAHW,MAAM,EAAE,GAAC,YAAY,WACrB,MAAM,QAQhB;IAED,iBAMC;IAED;;;;;OAKG;IACH,OAJW,MAAM,KACN,MAAM,GACJ,IAAI,CAuBhB;IAED;;;;;OAKG;IACH,aAJW,MAAM,KACN,MAAM,GACJ,IAAI,CAahB;IAED;;;;OAIG;IACH,QAHW,MAAM,GACJ,IAAI,CAIhB;IAED;;;;OAIG;IACH,QAHW,MAAM,GACJ,IAAI,CAIhB;IAED;;;;;OAKG;IACH,QAJW,MAAM,KACN,MAAM,GACJ,IAAI,CAIhB;IAED;;;;OAIG;IACH,WAHW,OAAO,GACL,IAAI,CAIhB;IAED;;;;;OAKG;IACH,cAJW,OAAO,KACP,OAAO,GACL,IAAI,CAIhB;IAED;;;OAGG;IACH,SAFa,IAAI,CAIhB;IAED;;;OAGG;IACH,QAFa,IAAI,CAIhB;IAED;;;OAGG;IACH,SAFa,IAAI,CAMhB;IAED;;;OAGG;IACH,OAFa,IAAI,CAIhB;IAED;;;;;OAKG;IACH,QAJW,MAAM,KACN,MAAM,GACJ,IAAI,CAIhB;IAED;;;;OAIG;IACH,WAHW,OAAO,GACL,IAAI,CAIhB;IAED;;;;OAIG;IACH,cAHW,OAAO,GACL,IAAI,CAIhB;IAED;;;;OAIG;IACH,gBAHW,OAAO,GACL,IAAI,CAIhB;IAED;;;;;OAKG;IACH,aAJW,MAAM,KACN,MAAM,GACJ,IAAI,CAIhB;IAED;;;;OAIG;IACH,WAHW,OAAO,GACL,IAAI,CAOhB;IAED;;;;OAIG;IACH,WAHW,OAAO,GACL,MAAM,CAIlB;IAED;;;;OAIG;IACH,YAHW,OAAO,GACL,IAAI,CAIhB;IAED;;;OAGG;IACH,SAFa,OAAO,CAInB;IAED;;;OAGG;IACH,UAFa,IAAI,CAIhB;IAED;;;;;OAKG;IACH,QAJW,MAAM,KACN,MAAM,GACJ,IAAI,CAIhB;IAED;;;;OAIG;IACH,WAHW,OAAO,GACL,IAAI,CAIhB;IAED;;;;;OAKG;IACH,iBAJW,OAAO,SACP,MAAM,GACJ,IAAI,CAIhB;IAED;;;;OAIG;IACH,eAHW,MAAM,GACJ,IAAI,CAIhB;IAED;;;;OAIG;IACH,eAHW,MAAM,GACJ,IAAI,CAIhB;IAED;;;;OAIG;IACH,kBAHW,MAAM,GACJ,IAAI,CAIhB;IAED;;;;OAIG;IACH,oBAHW,MAAM,GACJ,IAAI,CAOhB;IAED;;;MAEC;IAED,0BAOC;IAED;;;OAGG;IACH,2CAGC;IAED;;;OAGG;IACH,6CAKC;IAED;;;OAGG;IACH,kDAGC;IAED;;;OAGG;IACH,oDAKC;IAED;;;OAGG;IACH,UAFa,OAAO,CAInB;IAED;;;;;;;OAOG;IACH,YANW,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,GACJ,IAAI,CAMhB;IAED;;;;;OAKG;IACH,eAJW,MAAM,QACN,MAAM,GACJ,IAAI,CAMhB;IAED;;;;;OAKG;IACH,iBAJW,MAAM,SACN,MAAM,GACJ,IAAI,CAMhB;IAED;;;;OAIG;IACH,qBAHW,OAAO,GACL,MAAM,CAIlB;IAED;;;;;OAKG;IACH,kBAJW,MAAM,KACN,MAAM,GACJ,MAAM,CAMlB;IAED;;;;;;OAMG;IACH,eALW,OAAO,KACP,OAAO,YACP,MAAM,GACJ,IAAI,CAOhB;IAED;;;;OAIG;IACH,sBAHW,MAAM,EAAE,GACN,IAAI,CAUhB;IAED;;;;OAIG;IACH,kBAHW,OAAO,GACL,MAAM,CAIlB;IAED;;;;;OAKG;IACH,eAJW,MAAM,KACN,MAAM,GACJ,MAAM,CAIlB;IAED;;;;OAIG;IACH,2BAHW,OAAO,GACL,MAAM,CAOlB;IAED;;OAEG;IACH,UAFa,MAAM,CAIlB;IAED;;;OAGG;IACH,aAFa,IAAI,CAkBhB;IAGD;;;OAGG;IACH,QAFa,MAAM,CAOlB;IAED;;;;OAIG;IACH,cAHW,MAAM,GACJ,IAAI,CAahB;IAED;;;;;OAKG;IACH,6CAFa,IAAI,CAQhB;IAMD;;;;OAIG;IACH,cAHW,OAAO,GACL,OAAO,CAMnB;IAED;;;;;OAKG;IACH,qBAJW,OAAO,cACP,MAAM,GACL,OAAO,CAIlB;IAED;;;;;;OAMG;IACH,kBALW,MAAM,KACN,MAAM,cACN,MAAM,GACL,OAAO,CAKlB;IAsCL;;OAEG;IACH,sBA9nBe,MAAM,EAAE,GAAC,YAAY,WACrB,MAAM,UA6nBS;IAE9B;;OAEG;IACH,uBAhpBe,MAAM,EAAE,GAAC,YAAY,WACrB,MAAM,KACJ,IAAI,CA8oBU;IAG/B;;;OAGG;IACH,oBAFU,OAAO,CAEU;CApD1B;;mBAIS,OAAO;qBAMP,OAAO;qBAMP,OAAO;sBAMP,OAAO;qBAMP,OAAO;oBAKP,OAAO;;yBAsBP,MAAM;;;4BApvBY,uBAAuB"}
|
package/src/core/geom/Vector2.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { hash_mix2 } from "../math/hash/hash_mix2.js";
|
|
1
2
|
import { assert } from "../assert.js";
|
|
2
3
|
import Signal from "../events/signal/Signal.js";
|
|
3
4
|
import { clamp } from "../math/clamp.js";
|
|
@@ -637,7 +638,7 @@ export class Vector2 extends Float64Array {
|
|
|
637
638
|
const x = computeHashFloat(this[0]);
|
|
638
639
|
const y = computeHashFloat(this[1]);
|
|
639
640
|
|
|
640
|
-
return (
|
|
641
|
+
return hash_mix2(x, y);
|
|
641
642
|
}
|
|
642
643
|
|
|
643
644
|
/**
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Write a UNIFORMLY random orthonormal 3x3 basis into `result` (row-major, 9 elements), built around a
|
|
3
|
+
* uniformly-random unit direction that becomes the third (Z) row.
|
|
4
|
+
*
|
|
5
|
+
* WHY this exists: rotating a deterministic direction set (a Fibonacci sphere lattice, a fixed cone fan)
|
|
6
|
+
* by a fresh random basis decorrelates the lattice from the geometry it samples, which is what removes the
|
|
7
|
+
* structured bias a fixed lattice bakes in. Every sampler that wants that has to (a) draw a uniform point
|
|
8
|
+
* on the sphere and (b) complete it to a basis — two easy-to-get-wrong steps (the uniform axis must be
|
|
9
|
+
* `z ~ U(-1,1)`, NOT a uniform polar angle, and the ring radius needs the `max(0, ...)` guard so a
|
|
10
|
+
* `z = ±1` draw cannot produce `sqrt` of a negative rounding residue). Both acoustic ray samplers had
|
|
11
|
+
* inlined their own copy of exactly these four lines.
|
|
12
|
+
*
|
|
13
|
+
* The direction is drawn as `z = 2·random() − 1` FIRST and the azimuth second — the RNG consumption order
|
|
14
|
+
* is part of the contract, since callers are seeded and reproducible.
|
|
15
|
+
*
|
|
16
|
+
* @param {number[]|Float32Array|Float64Array} result receives 9 elements: rows X, Y, Z (Z is the random direction)
|
|
17
|
+
* @param {number} result_offset
|
|
18
|
+
* @param {function():number} random RNG in [0, 1); consumed exactly twice
|
|
19
|
+
*/
|
|
20
|
+
export function random_orthonormal_basis(result: number[] | Float32Array | Float64Array, result_offset: number, random: () => number): void;
|
|
21
|
+
//# sourceMappingURL=random_orthonormal_basis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"random_orthonormal_basis.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/random/random_orthonormal_basis.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AACH,iDAJW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,iBAClC,MAAM,gBACK,MAAM,QAW3B"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { v3_orthonormal_matrix_from_normal } from "../vec3/v3_orthonormal_matrix_from_normal.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Write a UNIFORMLY random orthonormal 3x3 basis into `result` (row-major, 9 elements), built around a
|
|
5
|
+
* uniformly-random unit direction that becomes the third (Z) row.
|
|
6
|
+
*
|
|
7
|
+
* WHY this exists: rotating a deterministic direction set (a Fibonacci sphere lattice, a fixed cone fan)
|
|
8
|
+
* by a fresh random basis decorrelates the lattice from the geometry it samples, which is what removes the
|
|
9
|
+
* structured bias a fixed lattice bakes in. Every sampler that wants that has to (a) draw a uniform point
|
|
10
|
+
* on the sphere and (b) complete it to a basis — two easy-to-get-wrong steps (the uniform axis must be
|
|
11
|
+
* `z ~ U(-1,1)`, NOT a uniform polar angle, and the ring radius needs the `max(0, ...)` guard so a
|
|
12
|
+
* `z = ±1` draw cannot produce `sqrt` of a negative rounding residue). Both acoustic ray samplers had
|
|
13
|
+
* inlined their own copy of exactly these four lines.
|
|
14
|
+
*
|
|
15
|
+
* The direction is drawn as `z = 2·random() − 1` FIRST and the azimuth second — the RNG consumption order
|
|
16
|
+
* is part of the contract, since callers are seeded and reproducible.
|
|
17
|
+
*
|
|
18
|
+
* @param {number[]|Float32Array|Float64Array} result receives 9 elements: rows X, Y, Z (Z is the random direction)
|
|
19
|
+
* @param {number} result_offset
|
|
20
|
+
* @param {function():number} random RNG in [0, 1); consumed exactly twice
|
|
21
|
+
*/
|
|
22
|
+
export function random_orthonormal_basis(result, result_offset, random) {
|
|
23
|
+
const z = 2 * random() - 1;
|
|
24
|
+
const azimuth = 2 * Math.PI * random();
|
|
25
|
+
const ring = Math.sqrt(Math.max(0, 1 - z * z));
|
|
26
|
+
|
|
27
|
+
v3_orthonormal_matrix_from_normal(
|
|
28
|
+
result, result_offset,
|
|
29
|
+
ring * Math.cos(azimuth), ring * Math.sin(azimuth), z
|
|
30
|
+
);
|
|
31
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rotate a 2d vector around the origin by an angle.
|
|
3
|
+
*
|
|
4
|
+
* Before this existed the four-line body was inlined at every site that needed it, which made the
|
|
5
|
+
* sign convention a copy-paste artifact instead of a documented contract. Keep new callers here.
|
|
6
|
+
*
|
|
7
|
+
* The rotation matches the standard 2d rotation matrix `[cos, -sin; sin, cos]`, i.e.
|
|
8
|
+
* counter-clockwise in a Y-up frame and clockwise in the Y-down frames used by grid/screen space.
|
|
9
|
+
* 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} angle in radians
|
|
16
|
+
*/
|
|
17
|
+
export function v2_rotate(result: Float64Array | Float32Array | number[], result_offset: number, x: number, y: number, angle: number): void;
|
|
18
|
+
//# sourceMappingURL=v2_rotate.d.ts.map
|