@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
|
@@ -1,11 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Blurs another {@link PointFitnessFunction} by sampling it over an axis-aligned box centred on the
|
|
3
|
+
* query point and weighting the samples with a separable 3D gaussian.
|
|
4
|
+
*
|
|
5
|
+
* Sampling convention (shared with {@link CellFilterGaussianBlur}): the taps are centred on
|
|
6
|
+
* `(samples-1)/2` and spaced `size/(samples-1)` apart, so the outermost taps land exactly on the
|
|
7
|
+
* faces of the box and the tap pattern is symmetric about the query point.
|
|
8
|
+
*
|
|
9
|
+
* An axis with a zero `size` still gets its (minimum) taps, but they all land on the query point,
|
|
10
|
+
* so the axis contributes a constant factor that cancels in the normalisation — i.e. a `size_z` of
|
|
11
|
+
* 0 gives a plain 2D blur.
|
|
12
|
+
*/
|
|
1
13
|
export class PointFitnessGaussianBlur extends PointFitnessFunction {
|
|
2
14
|
/**
|
|
3
15
|
*
|
|
4
16
|
* @param {PointFitnessFunction} source
|
|
5
|
-
* @param {number} x
|
|
17
|
+
* @param {number} x size of the blur box along X, in world units
|
|
6
18
|
* @param {number} y
|
|
7
19
|
* @param {number} z
|
|
8
|
-
* @param {number} [quality]
|
|
20
|
+
* @param {number} [quality] taps per world unit along each axis
|
|
9
21
|
* @returns {PointFitnessGaussianBlur}
|
|
10
22
|
*/
|
|
11
23
|
static from(source: PointFitnessFunction, x: number, y: number, z: number, quality?: number): PointFitnessGaussianBlur;
|
|
@@ -18,6 +30,14 @@ export class PointFitnessGaussianBlur extends PointFitnessFunction {
|
|
|
18
30
|
size_x: number;
|
|
19
31
|
size_y: number;
|
|
20
32
|
size_z: number;
|
|
33
|
+
/**
|
|
34
|
+
* Taps per world unit that {@link samples_x}/{@link samples_y}/{@link samples_z} were derived
|
|
35
|
+
* from. Kept only so the derivation can be reproduced (serialization records the box size and
|
|
36
|
+
* the quality, not the resulting tap counts); {@link evaluate} reads the sample counts.
|
|
37
|
+
*
|
|
38
|
+
* @type {number}
|
|
39
|
+
*/
|
|
40
|
+
quality: number;
|
|
21
41
|
/**
|
|
22
42
|
*
|
|
23
43
|
* @type {PointFitnessFunction}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PointFitnessGaussianBlur.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PointFitnessGaussianBlur.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.js"],"names":[],"mappings":"AAiCA;;;;;;;;;;;GAWG;AACH;IA6BI;;;;;;;;OAQG;IACH,oBAPW,oBAAoB,KACpB,MAAM,KACN,MAAM,KACN,MAAM,YACN,MAAM,GACJ,wBAAwB,CA8BpC;IAhED,kBAAc;IACd,kBAAc;IACd,kBAAc;IAEd,gBAAwB;IACxB,gBAAwB;IACxB,gBAAwB;IAExB,eAAW;IACX,eAAW;IACX,eAAW;IAEX;;;;;;OAMG;IACH,SAFU,MAAM,CAEJ;IAEZ;;;OAGG;IACH,QAFU,oBAAoB,CAEhB;IAyCd,mDA2DC;IAGL,aAAuC;CAFtC;qCA7KoC,4BAA4B"}
|
|
@@ -1,38 +1,84 @@
|
|
|
1
1
|
import { PointFitnessFunction } from "../PointFitnessFunction.js";
|
|
2
2
|
import { assert } from "../../../../core/assert.js";
|
|
3
3
|
import { gaussian } from "../../../../core/math/gaussian.js";
|
|
4
|
+
import { max2 } from "../../../../core/math/max2.js";
|
|
5
|
+
import { nextOdd } from "../../../../core/math/nextOdd.js";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Number of taps to spread across one axis of the blur box.
|
|
9
|
+
*
|
|
10
|
+
* Forced odd so a tap lands exactly on the centre, and to at least 3 so the axis is actually
|
|
11
|
+
* sampled either side of centre. Matches {@link CellFilterGaussianBlur.from}.
|
|
12
|
+
*
|
|
13
|
+
* @param {number} extent size of the blur box along this axis, in world units
|
|
14
|
+
* @param {number} quality taps per world unit
|
|
15
|
+
* @returns {number} odd integer, at least 3
|
|
16
|
+
*/
|
|
17
|
+
function axis_sample_count(extent, quality) {
|
|
18
|
+
return max2(3, nextOdd(Math.round(quality * extent)));
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Standard deviation for an axis, in kernel-index units.
|
|
23
|
+
*
|
|
24
|
+
* The kernel spans `±(samples-1)/2` indices and should cover `±3` sigma of the gaussian, otherwise
|
|
25
|
+
* the taps sit on a near-flat part of the bell and the "blur" degenerates into a box filter.
|
|
26
|
+
*
|
|
27
|
+
* @param {number} samples
|
|
28
|
+
* @returns {number}
|
|
29
|
+
*/
|
|
30
|
+
function axis_sigma(samples) {
|
|
31
|
+
return (samples - 1) / 6;
|
|
32
|
+
}
|
|
4
33
|
|
|
34
|
+
/**
|
|
35
|
+
* Blurs another {@link PointFitnessFunction} by sampling it over an axis-aligned box centred on the
|
|
36
|
+
* query point and weighting the samples with a separable 3D gaussian.
|
|
37
|
+
*
|
|
38
|
+
* Sampling convention (shared with {@link CellFilterGaussianBlur}): the taps are centred on
|
|
39
|
+
* `(samples-1)/2` and spaced `size/(samples-1)` apart, so the outermost taps land exactly on the
|
|
40
|
+
* faces of the box and the tap pattern is symmetric about the query point.
|
|
41
|
+
*
|
|
42
|
+
* An axis with a zero `size` still gets its (minimum) taps, but they all land on the query point,
|
|
43
|
+
* so the axis contributes a constant factor that cancels in the normalisation — i.e. a `size_z` of
|
|
44
|
+
* 0 gives a plain 2D blur.
|
|
45
|
+
*/
|
|
5
46
|
export class PointFitnessGaussianBlur extends PointFitnessFunction {
|
|
6
|
-
constructor() {
|
|
7
|
-
super();
|
|
8
47
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
48
|
+
samples_x = 5;
|
|
49
|
+
samples_y = 5;
|
|
50
|
+
samples_z = 5;
|
|
12
51
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
52
|
+
sigma_x = axis_sigma(5);
|
|
53
|
+
sigma_y = axis_sigma(5);
|
|
54
|
+
sigma_z = axis_sigma(5);
|
|
16
55
|
|
|
56
|
+
size_x = 1;
|
|
57
|
+
size_y = 1;
|
|
58
|
+
size_z = 1;
|
|
17
59
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
60
|
+
/**
|
|
61
|
+
* Taps per world unit that {@link samples_x}/{@link samples_y}/{@link samples_z} were derived
|
|
62
|
+
* from. Kept only so the derivation can be reproduced (serialization records the box size and
|
|
63
|
+
* the quality, not the resulting tap counts); {@link evaluate} reads the sample counts.
|
|
64
|
+
*
|
|
65
|
+
* @type {number}
|
|
66
|
+
*/
|
|
67
|
+
quality = 5;
|
|
21
68
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
69
|
+
/**
|
|
70
|
+
*
|
|
71
|
+
* @type {PointFitnessFunction}
|
|
72
|
+
*/
|
|
73
|
+
source = null;
|
|
28
74
|
|
|
29
75
|
/**
|
|
30
76
|
*
|
|
31
77
|
* @param {PointFitnessFunction} source
|
|
32
|
-
* @param {number} x
|
|
78
|
+
* @param {number} x size of the blur box along X, in world units
|
|
33
79
|
* @param {number} y
|
|
34
80
|
* @param {number} z
|
|
35
|
-
* @param {number} [quality]
|
|
81
|
+
* @param {number} [quality] taps per world unit along each axis
|
|
36
82
|
* @returns {PointFitnessGaussianBlur}
|
|
37
83
|
*/
|
|
38
84
|
static from(source, x, y, z, quality = 5) {
|
|
@@ -48,14 +94,20 @@ export class PointFitnessGaussianBlur extends PointFitnessFunction {
|
|
|
48
94
|
|
|
49
95
|
r.source = source;
|
|
50
96
|
|
|
51
|
-
r.
|
|
52
|
-
|
|
53
|
-
r.
|
|
97
|
+
r.quality = quality;
|
|
98
|
+
|
|
99
|
+
r.samples_x = axis_sample_count(x, quality);
|
|
100
|
+
r.samples_y = axis_sample_count(y, quality);
|
|
101
|
+
r.samples_z = axis_sample_count(z, quality);
|
|
54
102
|
|
|
55
103
|
r.size_x = x;
|
|
56
104
|
r.size_y = y;
|
|
57
105
|
r.size_z = z;
|
|
58
106
|
|
|
107
|
+
r.sigma_x = axis_sigma(r.samples_x);
|
|
108
|
+
r.sigma_y = axis_sigma(r.samples_y);
|
|
109
|
+
r.sigma_z = axis_sigma(r.samples_z);
|
|
110
|
+
|
|
59
111
|
return r;
|
|
60
112
|
}
|
|
61
113
|
|
|
@@ -64,13 +116,17 @@ export class PointFitnessGaussianBlur extends PointFitnessFunction {
|
|
|
64
116
|
const samplesY = this.samples_y;
|
|
65
117
|
const samplesZ = this.samples_z;
|
|
66
118
|
|
|
67
|
-
|
|
68
|
-
const
|
|
69
|
-
const
|
|
119
|
+
// taps are centred on the middle index, so they are symmetric about the query point
|
|
120
|
+
const half_samples_x = (samplesX - 1) * 0.5;
|
|
121
|
+
const half_samples_y = (samplesY - 1) * 0.5;
|
|
122
|
+
const half_samples_z = (samplesZ - 1) * 0.5;
|
|
123
|
+
|
|
124
|
+
// spacing that puts the outermost taps exactly on the faces of the blur box
|
|
125
|
+
const step_x = this.size_x / (samplesX - 1);
|
|
126
|
+
const step_y = this.size_y / (samplesY - 1);
|
|
127
|
+
const step_z = this.size_z / (samplesZ - 1);
|
|
70
128
|
|
|
71
|
-
const
|
|
72
|
-
const sizeY = this.size_y;
|
|
73
|
-
const sizeZ = this.size_z;
|
|
129
|
+
const source = this.source;
|
|
74
130
|
|
|
75
131
|
let sum = 0;
|
|
76
132
|
let powerTotal = 0;
|
|
@@ -81,18 +137,14 @@ export class PointFitnessGaussianBlur extends PointFitnessFunction {
|
|
|
81
137
|
|
|
82
138
|
const fz = gaussian(this.sigma_z, local_z);
|
|
83
139
|
|
|
84
|
-
const
|
|
85
|
-
|
|
86
|
-
const offset_z = sizeZ * nz;
|
|
140
|
+
const offset_z = local_z * step_z;
|
|
87
141
|
|
|
88
142
|
for (let iy = 0; iy < samplesY; iy++) {
|
|
89
143
|
const local_y = iy - half_samples_y;
|
|
90
144
|
|
|
91
145
|
const fy = gaussian(this.sigma_y, local_y);
|
|
92
146
|
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
const offset_y = sizeY * ny;
|
|
147
|
+
const offset_y = local_y * step_y;
|
|
96
148
|
|
|
97
149
|
for (let ix = 0; ix < samplesX; ix++) {
|
|
98
150
|
|
|
@@ -100,15 +152,13 @@ export class PointFitnessGaussianBlur extends PointFitnessFunction {
|
|
|
100
152
|
|
|
101
153
|
const fx = gaussian(this.sigma_x, local_x);
|
|
102
154
|
|
|
103
|
-
const
|
|
104
|
-
|
|
105
|
-
const offset_x = sizeX * nx;
|
|
155
|
+
const offset_x = local_x * step_x;
|
|
106
156
|
|
|
107
157
|
const power = fx * fy * fz;
|
|
108
158
|
|
|
109
159
|
powerTotal += power;
|
|
110
160
|
|
|
111
|
-
const sourceValue =
|
|
161
|
+
const sourceValue = source.evaluate(ecd, x + offset_x, y + offset_y, z + offset_z);
|
|
112
162
|
|
|
113
163
|
sum += sourceValue * power;
|
|
114
164
|
|
|
@@ -116,9 +166,10 @@ export class PointFitnessGaussianBlur extends PointFitnessFunction {
|
|
|
116
166
|
}
|
|
117
167
|
}
|
|
118
168
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
169
|
+
// dividing by the accumulated power is exactly what a pre-normalized kernel
|
|
170
|
+
// (see `core/math/build_gaussian_kernel_2d.js`) does; there is no `initialize` stage on
|
|
171
|
+
// PointFitnessFunction to precompute one into, so the weights are evaluated inline
|
|
172
|
+
return sum / powerTotal;
|
|
122
173
|
}
|
|
123
174
|
}
|
|
124
175
|
|
|
@@ -23,7 +23,9 @@ declare class HeadsUpDisplaySystem extends System<any> {
|
|
|
23
23
|
shutdown(em: any): Promise<void>;
|
|
24
24
|
startup(em: any): Promise<void>;
|
|
25
25
|
/**
|
|
26
|
-
* NOTE: for the sake of speed
|
|
26
|
+
* NOTE: for the sake of speed the projection multiplications have been inlined, readability of this method is pretty bad.
|
|
27
|
+
* The quaternion rotation is NOT inlined — {@link v3_quaternion_apply} already writes into a caller-supplied
|
|
28
|
+
* array, so it costs no allocation and there is nothing to gain from a private copy of the expansion.
|
|
27
29
|
* @param {HeadsUpDisplay} hud
|
|
28
30
|
* @param {Transform} transform
|
|
29
31
|
* @param {ViewportPosition} vp
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeadsUpDisplaySystem.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/ecs/gui/hud/HeadsUpDisplaySystem.js"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"HeadsUpDisplaySystem.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/ecs/gui/hud/HeadsUpDisplaySystem.js"],"names":[],"mappings":";AAsBA;;;;;GAKG;AACH;IASI;;;OAGG;IACH,4BAFW,cAAc,EAqBxB;IA/BD,wCAAgC;IAGhC,2HAGE;IAaE,yBAA8B;IAM9B;;;;OAIG;IACH,+BAAiD;IAGrD,iCAGC;IAED,gCAIC;IAED;;;;;;;;;OASG;IACH,sCAkJC;IAED,6BAsBC;CACJ;uBAxPsB,iBAAiB;2BAIb,qBAAqB;uBAFzB,kBAAkB;4CALG,uDAAuD;6BAMtE,iCAAiC;+BAL/B,qCAAqC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { m4_multiply } from "../../../../core/geom/3d/mat4/m4_multiply.js";
|
|
2
|
+
import { v3_quaternion_apply } from "../../../../core/geom/vec3/v3_quaternion_apply.js";
|
|
2
3
|
import { ResourceAccessKind } from "../../../../core/model/ResourceAccessKind.js";
|
|
3
4
|
import { ResourceAccessSpecification } from "../../../../core/model/ResourceAccessSpecification.js";
|
|
4
5
|
import { GraphicsEngine } from "../../../graphics/GraphicsEngine.js";
|
|
@@ -12,6 +13,12 @@ import { HeadsUpDisplayFlag } from "./HeadsUpDisplayFlag.js";
|
|
|
12
13
|
|
|
13
14
|
const projection = new Float32Array(16);
|
|
14
15
|
|
|
16
|
+
/**
|
|
17
|
+
* Destination for {@link v3_quaternion_apply}; the world offset is rotated through here.
|
|
18
|
+
* @type {Float64Array}
|
|
19
|
+
*/
|
|
20
|
+
const scratch_rotated_offset = new Float64Array(3);
|
|
21
|
+
|
|
15
22
|
|
|
16
23
|
/**
|
|
17
24
|
*
|
|
@@ -65,7 +72,9 @@ class HeadsUpDisplaySystem extends System {
|
|
|
65
72
|
}
|
|
66
73
|
|
|
67
74
|
/**
|
|
68
|
-
* NOTE: for the sake of speed
|
|
75
|
+
* NOTE: for the sake of speed the projection multiplications have been inlined, readability of this method is pretty bad.
|
|
76
|
+
* The quaternion rotation is NOT inlined — {@link v3_quaternion_apply} already writes into a caller-supplied
|
|
77
|
+
* array, so it costs no allocation and there is nothing to gain from a private copy of the expansion.
|
|
69
78
|
* @param {HeadsUpDisplay} hud
|
|
70
79
|
* @param {Transform} transform
|
|
71
80
|
* @param {ViewportPosition} vp
|
|
@@ -89,22 +98,11 @@ class HeadsUpDisplaySystem extends System {
|
|
|
89
98
|
|
|
90
99
|
const q = transform.rotation;
|
|
91
100
|
|
|
92
|
-
|
|
93
|
-
const qy = q.y;
|
|
94
|
-
const qz = q.z;
|
|
95
|
-
const qw = q.w;
|
|
96
|
-
|
|
97
|
-
// calculate quat * vec
|
|
98
|
-
const ix = qw * x + qy * z - qz * y;
|
|
99
|
-
const iy = qw * y + qz * x - qx * z;
|
|
100
|
-
const iz = qw * z + qx * y - qy * x;
|
|
101
|
-
const iw = -qx * x - qy * y - qz * z;
|
|
102
|
-
|
|
103
|
-
// calculate result * inverse quat
|
|
104
|
-
x = ix * qw + iw * -qx + iy * -qz - iz * -qy;
|
|
105
|
-
y = iy * qw + iw * -qy + iz * -qx - ix * -qz;
|
|
106
|
-
z = iz * qw + iw * -qz + ix * -qy - iy * -qx;
|
|
101
|
+
v3_quaternion_apply(scratch_rotated_offset, 0, x, y, z, q.x, q.y, q.z, q.w);
|
|
107
102
|
|
|
103
|
+
x = scratch_rotated_offset[0];
|
|
104
|
+
y = scratch_rotated_offset[1];
|
|
105
|
+
z = scratch_rotated_offset[2];
|
|
108
106
|
}
|
|
109
107
|
|
|
110
108
|
// add transform position to get final world position
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GuiElementParallaxSystem.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/ecs/gui/parallax/GuiElementParallaxSystem.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GuiElementParallaxSystem.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/ecs/gui/parallax/GuiElementParallaxSystem.js"],"names":[],"mappings":"AAKA;IAGI;;;;OAIG;IACH,yCAeC;IAtBD,gEAAgD;IAW5C;;;OAGG;IACH,UAFU,OAAK,IAAI,CAEK;IAExB;;;OAGG;IACH,SAFU,gBAAc,IAAI,CAEN;IAG1B;;;;;OAKG;IACH,uBAJW,kBAAkB,WAClB,UAAU,UACV,MAAM,QA6BhB;IAED,6BAWC;CACJ;uBA5EsB,iBAAiB;uBACjB,kBAAkB;mCACN,yBAAyB"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { apply_pointer_tilt_3d } from "../../../ui/apply_pointer_tilt_3d.js";
|
|
1
2
|
import { System } from "../../System.js";
|
|
2
3
|
import GUIElement from "../GUIElement.js";
|
|
3
4
|
import { GuiElementParallax } from "./GuiElementParallax.js";
|
|
@@ -37,43 +38,29 @@ export class GuiElementParallaxSystem extends System {
|
|
|
37
38
|
|
|
38
39
|
const p = this.pointer.position;
|
|
39
40
|
|
|
40
|
-
const pointer_x = p.x;
|
|
41
|
-
const pointer_y = p.y;
|
|
42
|
-
|
|
43
41
|
const viewport_side = this.viewport.size;
|
|
44
42
|
|
|
45
43
|
const view = element.view;
|
|
46
44
|
|
|
45
|
+
const el = view.el;
|
|
46
|
+
|
|
47
47
|
/**
|
|
48
48
|
*
|
|
49
49
|
* @type {ClientRect}
|
|
50
50
|
*/
|
|
51
|
-
const rect =
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
const tilt_x = (delta_y / viewport_center_y);
|
|
65
|
-
const tilt_y = -(delta_x / viewport_center_x);
|
|
66
|
-
|
|
67
|
-
const radius = Math.sqrt(tilt_x * tilt_x + tilt_y * tilt_y);
|
|
68
|
-
|
|
69
|
-
const angle = radius * parallax.angle;
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
const style = view.el.style;
|
|
73
|
-
|
|
74
|
-
style.transformOrigin = '50% 50%';
|
|
75
|
-
style.transform = `rotate3d(${tilt_x},${tilt_y},0,${angle}deg)`;
|
|
76
|
-
style.transformStyle = 'preserve-3d';
|
|
51
|
+
const rect = el.getBoundingClientRect();
|
|
52
|
+
|
|
53
|
+
apply_pointer_tilt_3d(
|
|
54
|
+
el,
|
|
55
|
+
p.x, p.y,
|
|
56
|
+
rect.left + rect.width * 0.5, rect.top + rect.height * 0.5,
|
|
57
|
+
viewport_side.x, viewport_side.y,
|
|
58
|
+
parallax.angle,
|
|
59
|
+
0
|
|
60
|
+
);
|
|
61
|
+
|
|
62
|
+
// children of a parallaxed element participate in the same 3d space
|
|
63
|
+
el.style.transformStyle = 'preserve-3d';
|
|
77
64
|
}
|
|
78
65
|
|
|
79
66
|
update(timeDelta) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OneBoneSurfaceAlignmentSolver.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"OneBoneSurfaceAlignmentSolver.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.js"],"names":[],"mappings":"AAkCA;;GAEG;AACH;IACI,0BA+GC;CACJ;yBA/IwB,eAAe"}
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import { SurfacePoint3 } from "../../../core/geom/3d/SurfacePoint3.js";
|
|
2
2
|
import Quaternion from "../../../core/geom/Quaternion.js";
|
|
3
|
-
import { v3_displace_in_direction } from "../../../core/geom/vec3/v3_displace_in_direction.js";
|
|
4
|
-
import { v3_dot } from "../../../core/geom/vec3/v3_dot.js";
|
|
5
|
-
import { v3_length } from "../../../core/geom/vec3/v3_length.js";
|
|
6
3
|
import Vector3 from "../../../core/geom/Vector3.js";
|
|
7
4
|
import { clamp } from "../../../core/math/clamp.js";
|
|
8
|
-
import { clamp01 } from "../../../core/math/clamp01.js";
|
|
9
5
|
import { inverseLerp } from "../../../core/math/inverseLerp.js";
|
|
10
6
|
import { findSkeletonBoneByType } from "../../graphics/ecs/mesh/SkeletonUtils.js";
|
|
7
|
+
import { ik_probe_terrain_contact } from "./ik_probe_terrain_contact.js";
|
|
11
8
|
import { IKSolver } from "./IKSolver.js";
|
|
12
9
|
|
|
13
10
|
const boneWorldPosition = new Vector3();
|
|
@@ -71,85 +68,26 @@ export class OneBoneSurfaceAlignmentSolver extends IKSolver {
|
|
|
71
68
|
parentWorldPosition.y = parentBoneWM[13];
|
|
72
69
|
parentWorldPosition.z = parentBoneWM[14];
|
|
73
70
|
|
|
74
|
-
//compute direction for ray casting
|
|
75
|
-
const directionX = boneWorldPosition.x - parentWorldPosition.x;
|
|
76
|
-
const directionY = boneWorldPosition.y - parentWorldPosition.y;
|
|
77
|
-
const directionZ = boneWorldPosition.z - parentWorldPosition.z;
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
let contactExists = terrain.raycastFirstSync(
|
|
81
|
-
contact,
|
|
82
|
-
parentWorldPosition.x,
|
|
83
|
-
parentWorldPosition.y,
|
|
84
|
-
parentWorldPosition.z,
|
|
85
|
-
directionX,
|
|
86
|
-
directionY,
|
|
87
|
-
directionZ
|
|
88
|
-
);
|
|
89
|
-
|
|
90
|
-
if (!contactExists) {
|
|
91
|
-
//no contact
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
const contactPosition = contact.position;
|
|
96
|
-
const contactNormal = contact.normal;
|
|
97
|
-
|
|
98
|
-
//perform secondary cast from the bone, back along the surface normal
|
|
99
|
-
contactExists = terrain.raycastFirstSync(
|
|
100
|
-
contact,
|
|
101
|
-
boneWorldPosition.x + contactNormal.x,
|
|
102
|
-
boneWorldPosition.y + contactNormal.y,
|
|
103
|
-
boneWorldPosition.z + contactNormal.z,
|
|
104
|
-
-contactNormal.x,
|
|
105
|
-
-contactNormal.y,
|
|
106
|
-
-contactNormal.z
|
|
107
|
-
);
|
|
108
|
-
|
|
109
|
-
if (!contactExists) {
|
|
110
|
-
//no contact
|
|
111
|
-
return;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
|
|
115
71
|
const bone_scale = boneWorldScale.length() * ONE_OVER_SQRT_3;
|
|
116
72
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
v3_displace_in_direction(
|
|
73
|
+
//cast from the parent towards the bone to find the surface underneath it
|
|
74
|
+
let influence = ik_probe_terrain_contact(
|
|
120
75
|
targetPosition,
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
76
|
+
contact,
|
|
77
|
+
terrain,
|
|
78
|
+
parentWorldPosition,
|
|
79
|
+
boneWorldPosition,
|
|
80
|
+
constraint,
|
|
81
|
+
bone_scale
|
|
124
82
|
);
|
|
125
83
|
|
|
126
|
-
const delta_contact_c_x = targetPosition.x - boneWorldPosition.x;
|
|
127
|
-
const delta_contact_c_y = targetPosition.y - boneWorldPosition.y;
|
|
128
|
-
const delta_contact_c_z = targetPosition.z - boneWorldPosition.z;
|
|
129
|
-
|
|
130
|
-
//check if current effector position is above the contact point
|
|
131
|
-
const dot_contact_side = v3_dot(directionX, directionY, directionZ, delta_contact_c_x, delta_contact_c_y, delta_contact_c_z);
|
|
132
|
-
|
|
133
|
-
const delta_contact_c_length = v3_length(delta_contact_c_x, delta_contact_c_y, delta_contact_c_z);
|
|
134
|
-
|
|
135
|
-
let influence;
|
|
136
|
-
|
|
137
|
-
if (dot_contact_side < 0) {
|
|
138
|
-
//penetration detected
|
|
139
|
-
influence = 1;
|
|
140
|
-
|
|
141
|
-
} else {
|
|
142
|
-
//no penetration, hovering case, use hover distance for influence
|
|
143
|
-
const normalized_effector_distance = inverseLerp(0, bone_scale, delta_contact_c_length);
|
|
144
|
-
|
|
145
|
-
influence = 1 - clamp01(constraint.distance.normalizeValue(normalized_effector_distance));
|
|
146
|
-
}
|
|
147
|
-
|
|
148
84
|
if (influence <= 0) {
|
|
149
|
-
//no influence
|
|
85
|
+
//no contact, or no influence
|
|
150
86
|
return;
|
|
151
87
|
}
|
|
152
88
|
|
|
89
|
+
const contactNormal = contact.normal;
|
|
90
|
+
|
|
153
91
|
r.copy(bone.quaternion);
|
|
154
92
|
|
|
155
93
|
//we want to make bone align orthogonally to surface contact normal
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TwoBoneInverseKinematicsSolver.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TwoBoneInverseKinematicsSolver.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.js"],"names":[],"mappings":"AA0CA;IAGI,0BA4EC;CACJ;yBAnHwB,eAAe"}
|
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
import { assert } from "../../../core/assert.js";
|
|
2
2
|
import { SurfacePoint3 } from "../../../core/geom/3d/SurfacePoint3.js";
|
|
3
3
|
import Quaternion from "../../../core/geom/Quaternion.js";
|
|
4
|
-
import { v3_displace_in_direction } from "../../../core/geom/vec3/v3_displace_in_direction.js";
|
|
5
|
-
import { v3_dot } from "../../../core/geom/vec3/v3_dot.js";
|
|
6
|
-
import { v3_length } from "../../../core/geom/vec3/v3_length.js";
|
|
7
4
|
import Vector3 from "../../../core/geom/Vector3.js";
|
|
8
|
-
import { clamp01 } from "../../../core/math/clamp01.js";
|
|
9
|
-
import { inverseLerp } from "../../../core/math/inverseLerp.js";
|
|
10
5
|
import { findSkeletonBoneByType } from "../../graphics/ecs/mesh/SkeletonUtils.js";
|
|
11
6
|
import { two_joint_ik } from "../../physics/inverse_kinematics/two_joint_ik.js";
|
|
7
|
+
import { ik_probe_terrain_contact } from "./ik_probe_terrain_contact.js";
|
|
12
8
|
import { IKSolver } from "./IKSolver.js";
|
|
13
9
|
|
|
14
10
|
const boneWorldPositionC = new Vector3();
|
|
@@ -72,81 +68,22 @@ export class TwoBoneInverseKinematicsSolver extends IKSolver {
|
|
|
72
68
|
computeGlobalTransform(boneB, boneWorldPositionB, globalRotationB, v3);
|
|
73
69
|
computeGlobalTransform(boneC, boneWorldPositionC, globalRotationC, v3);
|
|
74
70
|
|
|
75
|
-
//check if the there is a penetration with the terrain between the two bones
|
|
76
|
-
const directionX = boneWorldPositionC.x - boneWorldPositionA.x;
|
|
77
|
-
const directionY = boneWorldPositionC.y - boneWorldPositionA.y;
|
|
78
|
-
const directionZ = boneWorldPositionC.z - boneWorldPositionA.z;
|
|
79
|
-
|
|
80
|
-
let contactExists = terrain.raycastFirstSync(
|
|
81
|
-
contact,
|
|
82
|
-
boneWorldPositionA.x,
|
|
83
|
-
boneWorldPositionA.y,
|
|
84
|
-
boneWorldPositionA.z,
|
|
85
|
-
directionX,
|
|
86
|
-
directionY,
|
|
87
|
-
directionZ
|
|
88
|
-
);
|
|
89
|
-
|
|
90
|
-
if (!contactExists) {
|
|
91
|
-
//no contact
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
const contactPosition = contact.position;
|
|
96
|
-
const contactNormal = contact.normal;
|
|
97
|
-
|
|
98
|
-
//perform secondary cast from the bone, back along the surface normal
|
|
99
|
-
contactExists = terrain.raycastFirstSync(
|
|
100
|
-
contact,
|
|
101
|
-
boneWorldPositionC.x + contactNormal.x,
|
|
102
|
-
boneWorldPositionC.y + contactNormal.y,
|
|
103
|
-
boneWorldPositionC.z + contactNormal.z,
|
|
104
|
-
-contactNormal.x,
|
|
105
|
-
-contactNormal.y,
|
|
106
|
-
-contactNormal.z
|
|
107
|
-
);
|
|
108
|
-
|
|
109
|
-
if (!contactExists) {
|
|
110
|
-
//no contact
|
|
111
|
-
return;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
71
|
//compute total length of the limb
|
|
115
72
|
const limbLength = boneWorldPositionA.distanceTo(boneWorldPositionB) + boneWorldPositionB.distanceTo(boneWorldPositionC);
|
|
116
73
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
v3_displace_in_direction(
|
|
74
|
+
//check if there is a penetration with the terrain between the two bones
|
|
75
|
+
const influence = ik_probe_terrain_contact(
|
|
120
76
|
targetPosition,
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
77
|
+
contact,
|
|
78
|
+
terrain,
|
|
79
|
+
boneWorldPositionA,
|
|
80
|
+
boneWorldPositionC,
|
|
81
|
+
constraint,
|
|
82
|
+
limbLength
|
|
124
83
|
);
|
|
125
84
|
|
|
126
|
-
const delta_contact_c_x = targetPosition.x - boneWorldPositionC.x;
|
|
127
|
-
const delta_contact_c_y = targetPosition.y - boneWorldPositionC.y;
|
|
128
|
-
const delta_contact_c_z = targetPosition.z - boneWorldPositionC.z;
|
|
129
|
-
|
|
130
|
-
//check if current effector position is above the contact point
|
|
131
|
-
const dot_contact_side = v3_dot(directionX, directionY, directionZ, delta_contact_c_x, delta_contact_c_y, delta_contact_c_z);
|
|
132
|
-
|
|
133
|
-
const delta_contact_c_length = v3_length(delta_contact_c_x, delta_contact_c_y, delta_contact_c_z);
|
|
134
|
-
|
|
135
|
-
let influence;
|
|
136
|
-
|
|
137
|
-
if (dot_contact_side < 0) {
|
|
138
|
-
//penetration detected
|
|
139
|
-
influence = 1;
|
|
140
|
-
|
|
141
|
-
} else {
|
|
142
|
-
//no penetration, hovering case, use hover distance for influence
|
|
143
|
-
const normalized_effector_distance = inverseLerp(0, limbLength, delta_contact_c_length);
|
|
144
|
-
|
|
145
|
-
influence = 1 - clamp01(constraint.distance.normalizeValue(normalized_effector_distance));
|
|
146
|
-
}
|
|
147
|
-
|
|
148
85
|
if (influence <= 0) {
|
|
149
|
-
//no influence
|
|
86
|
+
//no contact, or no influence
|
|
150
87
|
return;
|
|
151
88
|
}
|
|
152
89
|
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Find where an IK chain meets the terrain and how strongly the solver should pull towards it.
|
|
3
|
+
*
|
|
4
|
+
* Two casts are made. The first travels from `origin` towards `effector` and establishes which
|
|
5
|
+
* surface the limb is over at all. The second starts just outside that surface, directly above the
|
|
6
|
+
* effector along the surface normal, and comes back down — that is what actually locates the point
|
|
7
|
+
* under the effector rather than the point under the limb's root, and it is what `out_contact` and
|
|
8
|
+
* `out_target` describe on return.
|
|
9
|
+
*
|
|
10
|
+
* The returned influence answers "how much of this correction should apply":
|
|
11
|
+
* - the effector is BELOW the surface (penetrating) → `1`, correct it fully;
|
|
12
|
+
* - the effector HOVERS above the surface → falls off from `1` to `0` across
|
|
13
|
+
* `constraint.distance`, measured as a fraction of `length_scale`, so the same constraint reads
|
|
14
|
+
* the same way for a long limb and a short one;
|
|
15
|
+
* - no surface was found at all → `0`.
|
|
16
|
+
*
|
|
17
|
+
* This exists because {@link TwoBoneInverseKinematicsSolver} and
|
|
18
|
+
* {@link OneBoneSurfaceAlignmentSolver} carried the identical ~70-line probe, comments and variable
|
|
19
|
+
* names included, differing only in which lengths they scaled by. The solvers now hold nothing but
|
|
20
|
+
* their rotation math.
|
|
21
|
+
*
|
|
22
|
+
* @param {Vector3} out_target receives the world position the effector should be moved to; only
|
|
23
|
+
* written when a non-zero influence is returned
|
|
24
|
+
* @param {SurfacePoint3} out_contact receives the surface contact from the SECOND cast; only
|
|
25
|
+
* written when a non-zero influence is returned. Solvers that need the contact normal (surface
|
|
26
|
+
* alignment) read it from here
|
|
27
|
+
* @param {Terrain} terrain
|
|
28
|
+
* @param {Vector3} origin start of the limb, the root bone's world position
|
|
29
|
+
* @param {Vector3} effector world position of the bone being placed. The probe direction is
|
|
30
|
+
* `effector - origin`, so these must not coincide
|
|
31
|
+
* @param {IKConstraint} constraint supplies `offset` (how far off the surface the effector rests)
|
|
32
|
+
* and `distance` (the hover band over which influence falls off)
|
|
33
|
+
* @param {number} length_scale limb length in world units; `constraint.offset` and the hover
|
|
34
|
+
* distance are both expressed relative to it. Must be greater than 0
|
|
35
|
+
* @returns {number} influence in `[0,1]`; `0` means "do nothing"
|
|
36
|
+
*/
|
|
37
|
+
export function ik_probe_terrain_contact(out_target: Vector3, out_contact: SurfacePoint3, terrain: Terrain, origin: Vector3, effector: Vector3, constraint: IKConstraint, length_scale: number): number;
|
|
38
|
+
//# sourceMappingURL=ik_probe_terrain_contact.d.ts.map
|