@woosh/meep-engine 2.169.1 → 2.169.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/editor/ecs/component/editors/NumericIntervalEditor.js +18 -35
- package/editor/ecs/component/editors/ObservedIntegerEditor.js +22 -43
- package/editor/ecs/component/editors/ObservedStringEditor.js +34 -51
- package/editor/ecs/component/editors/common/makeV3_editor.js +12 -30
- package/editor/ecs/component/editors/common/two_way_sync.js +50 -0
- package/editor/ecs/component/editors/geom/QuaternionEditor.js +20 -35
- package/editor/ecs/component/editors/geom/Vector1Editor.js +5 -28
- package/editor/ecs/component/editors/primitive/NumberEditor.js +15 -31
- package/editor/tools/paint/TerrainHeightPaintTool.js +22 -31
- package/editor/tools/paint/TerrainPaintTool.js +85 -13
- package/editor/tools/paint/TerrainTexturePaintTool.js +18 -29
- package/editor/view/ecs/components/TerrainController.js +1 -4
- package/package.json +1 -1
- package/src/DUPLICATION_AUDIT_2026_08_07/00_core_reuse_surface.md +738 -0
- package/src/DUPLICATION_AUDIT_2026_08_07/A_core_math_geom.md +79 -0
- package/src/DUPLICATION_AUDIT_2026_08_07/B_core_data.md +93 -0
- package/src/DUPLICATION_AUDIT_2026_08_07/C_gfx_render.md +80 -0
- package/src/DUPLICATION_AUDIT_2026_08_07/D_gfx_features.md +164 -0
- package/src/DUPLICATION_AUDIT_2026_08_07/E_physics.md +69 -0
- package/src/DUPLICATION_AUDIT_2026_08_07/F_sound.md +102 -0
- package/src/DUPLICATION_AUDIT_2026_08_07/G_net_save.md +129 -0
- package/src/DUPLICATION_AUDIT_2026_08_07/H_engine_misc.md +72 -0
- package/src/DUPLICATION_AUDIT_2026_08_07/I_generation_view.md +74 -0
- package/src/DUPLICATION_AUDIT_2026_08_07/K_crosscutting.md +169 -0
- package/src/DUPLICATION_AUDIT_2026_08_07.md +254 -0
- package/src/DUPLICATION_AUDIT_REMEDIATION.md +250 -0
- package/src/core/bvh2/bvh3/query/bvh_collect_user_data.js +2 -2
- package/src/core/bvh2/bvh3/query/bvh_query_leaves_generic.js +77 -77
- package/src/core/bvh2/bvh3/query/bvh_query_leaves_ray.js +90 -90
- package/src/core/bvh2/bvh3/query/bvh_query_leaves_ray_segment.js +94 -94
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_generic.js +86 -86
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_aabb.js +2 -2
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_capsule.js +2 -2
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_frustum.js +2 -2
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_sphere.js +2 -2
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_ray.js +96 -96
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_ray_segment.js +100 -100
- package/src/core/bvh2/bvh3/query/compute_tight_near_far_clipping_planes.js +2 -2
- package/src/core/bvh8/aabb3_round_to_float32.d.ts +16 -0
- package/src/core/bvh8/aabb3_round_to_float32.d.ts.map +1 -0
- package/src/core/bvh8/aabb3_round_to_float32.js +22 -0
- package/src/core/bvh8/bvh8_geometry_validate.d.ts.map +1 -1
- package/src/core/bvh8/bvh8_geometry_validate.js +1 -12
- package/src/core/bvh8/bvh8_geometry_validate_indirect.d.ts.map +1 -1
- package/src/core/bvh8/bvh8_geometry_validate_indirect.js +1 -12
- package/src/core/cache/Cache.d.ts +13 -0
- package/src/core/cache/Cache.d.ts.map +1 -1
- package/src/core/cache/Cache.js +13 -0
- package/src/core/color/operations/color_darken.d.ts +5 -2
- package/src/core/color/operations/color_darken.d.ts.map +1 -1
- package/src/core/color/operations/color_darken.js +24 -33
- package/src/core/color/operations/color_desaturate.d.ts +5 -2
- package/src/core/color/operations/color_desaturate.d.ts.map +1 -1
- package/src/core/color/operations/color_desaturate.js +24 -33
- package/src/core/color/operations/color_lighten.d.ts +5 -2
- package/src/core/color/operations/color_lighten.d.ts.map +1 -1
- package/src/core/color/operations/color_lighten.js +24 -33
- package/src/core/color/operations/color_saturate.d.ts +5 -2
- package/src/core/color/operations/color_saturate.d.ts.map +1 -1
- package/src/core/color/operations/color_saturate.js +24 -33
- package/src/core/color/operations/color_scale_okhsv_channel.d.ts +28 -0
- package/src/core/color/operations/color_scale_okhsv_channel.d.ts.map +1 -0
- package/src/core/color/operations/color_scale_okhsv_channel.js +45 -0
- package/src/core/geom/2d/hash-grid/SpatialHashGrid.d.ts.map +1 -1
- package/src/core/geom/2d/hash-grid/SpatialHashGrid.js +12 -0
- package/src/core/geom/2d/line/segment2_intersects_segment2_2d.d.ts.map +1 -1
- package/src/core/geom/2d/line/segment2_intersects_segment2_2d.js +25 -29
- package/src/core/geom/2d/line/segment2_segment_compute_intersection_array_2d.d.ts.map +1 -1
- package/src/core/geom/2d/line/segment2_segment_compute_intersection_array_2d.js +46 -51
- package/src/core/geom/2d/line/segment2_segment_intersection_fractions.d.ts +31 -0
- package/src/core/geom/2d/line/segment2_segment_intersection_fractions.d.ts.map +1 -0
- package/src/core/geom/2d/line/segment2_segment_intersection_fractions.js +52 -0
- package/src/core/geom/2d/quad-tree/qt_collect_by_circle.d.ts +6 -1
- package/src/core/geom/2d/quad-tree/qt_collect_by_circle.d.ts.map +1 -1
- package/src/core/geom/2d/quad-tree/qt_collect_by_circle.js +39 -65
- package/src/core/geom/2d/quad-tree/qt_match_data_by_circle.d.ts +15 -5
- package/src/core/geom/2d/quad-tree/qt_match_data_by_circle.d.ts.map +1 -1
- package/src/core/geom/2d/quad-tree/qt_match_data_by_circle.js +101 -70
- package/src/core/geom/2d/r-tree/StaticR2Tree.d.ts.map +1 -1
- package/src/core/geom/2d/r-tree/StaticR2Tree.js +7 -3
- package/src/core/geom/3d/aabb/aabb3_intersects_ray_segment.d.ts +7 -8
- package/src/core/geom/3d/aabb/aabb3_intersects_ray_segment.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/aabb3_intersects_ray_segment.js +15 -51
- package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_bff.d.ts.map +1 -1
- package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_bff.js +13 -14
- package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_lscm.d.ts.map +1 -1
- package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_lscm.js +2 -17
- package/src/core/geom/3d/atlas/segment/atlas_chart_roundness_delta.d.ts +22 -0
- package/src/core/geom/3d/atlas/segment/atlas_chart_roundness_delta.d.ts.map +1 -0
- package/src/core/geom/3d/atlas/segment/atlas_chart_roundness_delta.js +30 -0
- package/src/core/geom/3d/atlas/segment/atlas_segment_charts.d.ts +19 -0
- package/src/core/geom/3d/atlas/segment/atlas_segment_charts.d.ts.map +1 -1
- package/src/core/geom/3d/atlas/segment/atlas_segment_charts.js +5 -9
- package/src/core/geom/3d/atlas/segment/atlas_segment_charts_atomic.d.ts.map +1 -1
- package/src/core/geom/3d/atlas/segment/atlas_segment_charts_atomic.js +4 -12
- package/src/core/geom/3d/frustum/read_frustum_corner.d.ts +5 -0
- package/src/core/geom/3d/frustum/read_frustum_corner.d.ts.map +1 -1
- package/src/core/geom/3d/frustum/read_frustum_corner.js +8 -5
- package/src/core/geom/3d/line/line3_segment_segment_closest_point_pair.d.ts +33 -0
- package/src/core/geom/3d/line/line3_segment_segment_closest_point_pair.d.ts.map +1 -0
- package/src/core/geom/3d/line/line3_segment_segment_closest_point_pair.js +71 -0
- package/src/core/geom/3d/mat4/m4_compose.d.ts +5 -0
- package/src/core/geom/3d/mat4/m4_compose.d.ts.map +1 -1
- package/src/core/geom/3d/mat4/m4_compose.js +22 -53
- package/src/core/geom/3d/mat4/m4_decompose.d.ts +8 -0
- package/src/core/geom/3d/mat4/m4_decompose.d.ts.map +1 -1
- package/src/core/geom/3d/mat4/m4_decompose.js +84 -76
- package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale.d.ts +2 -0
- package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale.d.ts.map +1 -1
- package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale.js +10 -44
- package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_scalar.d.ts +27 -0
- package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_scalar.d.ts.map +1 -0
- package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_scalar.js +67 -0
- package/src/core/geom/3d/plane/orient3d_fast.d.ts.map +1 -1
- package/src/core/geom/3d/plane/orient3d_fast.js +2 -22
- package/src/core/geom/3d/plane/orient3d_fast_point.d.ts +28 -0
- package/src/core/geom/3d/plane/orient3d_fast_point.d.ts.map +1 -0
- package/src/core/geom/3d/plane/orient3d_fast_point.js +47 -0
- package/src/core/geom/3d/quaternion/quat3_nlerp.d.ts +48 -0
- package/src/core/geom/3d/quaternion/quat3_nlerp.d.ts.map +1 -0
- package/src/core/geom/3d/quaternion/quat3_nlerp.js +72 -0
- package/src/core/geom/3d/shape/AbstractShape3D.d.ts +9 -0
- package/src/core/geom/3d/shape/AbstractShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/AbstractShape3D.js +44 -1
- package/src/core/geom/3d/shape/BoxShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/BoxShape3D.js +2 -1
- package/src/core/geom/3d/shape/CapsuleShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/CapsuleShape3D.js +2 -1
- package/src/core/geom/3d/shape/ConvexHullShape3D.d.ts +0 -1
- package/src/core/geom/3d/shape/ConvexHullShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/ConvexHullShape3D.js +25 -56
- package/src/core/geom/3d/shape/CylinderShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/CylinderShape3D.js +2 -1
- package/src/core/geom/3d/shape/HeightMapShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/HeightMapShape3D.js +3 -5
- package/src/core/geom/3d/shape/MeshShape3D.d.ts +0 -11
- package/src/core/geom/3d/shape/MeshShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/MeshShape3D.js +27 -106
- package/src/core/geom/3d/shape/Triangle3D.d.ts +1 -1
- package/src/core/geom/3d/shape/Triangle3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/Triangle3D.js +10 -31
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_carve_outside_surface.d.ts.map +1 -1
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_carve_outside_surface.js +8 -57
- package/src/core/geom/3d/topology/simplify/decimate_edge_collapse_snap.d.ts +8 -1
- package/src/core/geom/3d/topology/simplify/decimate_edge_collapse_snap.d.ts.map +1 -1
- package/src/core/geom/3d/topology/simplify/decimate_edge_collapse_snap.js +281 -272
- package/src/core/geom/3d/topology/simplify/quadratic/build_vertex_quadrics.d.ts.map +1 -1
- package/src/core/geom/3d/topology/simplify/quadratic/build_vertex_quadrics.js +3 -4
- package/src/core/geom/3d/topology/simplify/quadratic/quadric3_set_from_plane_through_point.d.ts +22 -0
- package/src/core/geom/3d/topology/simplify/quadratic/quadric3_set_from_plane_through_point.d.ts.map +1 -0
- package/src/core/geom/3d/topology/simplify/quadratic/quadric3_set_from_plane_through_point.js +27 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_boundary_loop.d.ts +24 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_boundary_loop.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_boundary_loop.js +73 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_close_boundary_holes.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_close_boundary_holes.js +2 -53
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compute_vertex_quadrics.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compute_vertex_quadrics.js +3 -4
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_fill_small_holes.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_fill_small_holes.js +3 -33
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_from_indexed_geometry.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_from_indexed_geometry.js +4 -37
- package/src/core/geom/3d/topology/struct/binary/io/face/bt_face_poke.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/face/bt_face_poke.js +3 -32
- package/src/core/geom/3d/topology/struct/binary/query/bt_face_read_triangle.d.ts +32 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_face_read_triangle.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_face_read_triangle.js +66 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path.js +703 -728
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path_polyanya.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path_polyanya.js +13 -24
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.js +8 -54
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_surface_ray_parity.d.ts +35 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_surface_ray_parity.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_surface_ray_parity.js +82 -0
- package/src/core/geom/3d/triangle/tri3_closest_point.d.ts +29 -0
- package/src/core/geom/3d/triangle/tri3_closest_point.d.ts.map +1 -0
- package/src/core/geom/3d/triangle/tri3_closest_point.js +65 -0
- package/src/core/geom/3d/triangle/tri3_flatten_isometric.d.ts +42 -0
- package/src/core/geom/3d/triangle/tri3_flatten_isometric.d.ts.map +1 -0
- package/src/core/geom/3d/triangle/tri3_flatten_isometric.js +79 -0
- package/src/core/geom/Vector2.d.ts.map +1 -1
- package/src/core/geom/Vector2.js +2 -1
- package/src/core/geom/random/random_orthonormal_basis.d.ts +21 -0
- package/src/core/geom/random/random_orthonormal_basis.d.ts.map +1 -0
- package/src/core/geom/random/random_orthonormal_basis.js +31 -0
- package/src/core/geom/vec2/v2_rotate.d.ts +18 -0
- package/src/core/geom/vec2/v2_rotate.d.ts.map +1 -0
- package/src/core/geom/vec2/v2_rotate.js +21 -0
- package/src/core/geom/vec2/v2_rotate_cos_sin.d.ts +19 -0
- package/src/core/geom/vec2/v2_rotate_cos_sin.d.ts.map +1 -0
- package/src/core/geom/vec2/v2_rotate_cos_sin.js +21 -0
- package/src/core/graph/csr/csr_graph_from_undirected_edge_list.d.ts +30 -0
- package/src/core/graph/csr/csr_graph_from_undirected_edge_list.d.ts.map +1 -0
- package/src/core/graph/csr/csr_graph_from_undirected_edge_list.js +94 -0
- package/src/core/graph/layout/CircleLayout.d.ts.map +1 -1
- package/src/core/graph/layout/CircleLayout.js +6 -29
- package/src/core/graph/layout/box/BoxLayouter.d.ts.map +1 -1
- package/src/core/graph/layout/box/BoxLayouter.js +2 -26
- package/src/core/graph/layout/box/position_box_next_to_box.d.ts.map +1 -1
- package/src/core/graph/layout/box/position_box_next_to_box.js +2 -1
- package/src/core/graph/layout/computeDisconnectedSubGraphs.d.ts.map +1 -1
- package/src/core/graph/layout/computeDisconnectedSubGraphs.js +14 -3
- package/src/core/graph/layout/graph_peel_topological_layer.d.ts +25 -0
- package/src/core/graph/layout/graph_peel_topological_layer.d.ts.map +1 -0
- package/src/core/graph/layout/graph_peel_topological_layer.js +45 -0
- package/src/core/math/hash/hash_mix2.d.ts +21 -0
- package/src/core/math/hash/hash_mix2.d.ts.map +1 -0
- package/src/core/math/hash/hash_mix2.js +22 -0
- package/src/core/math/hash/hash_mix3.d.ts +16 -0
- package/src/core/math/hash/hash_mix3.d.ts.map +1 -0
- package/src/core/math/hash/hash_mix3.js +19 -0
- package/src/core/math/lookup/LUT_HEATMAP.d.ts +17 -0
- package/src/core/math/lookup/LUT_HEATMAP.d.ts.map +1 -0
- package/src/core/math/lookup/LUT_HEATMAP.js +30 -0
- package/src/core/math/noise/curl_noise_3d.d.ts +6 -0
- package/src/core/math/noise/curl_noise_3d.d.ts.map +1 -1
- package/src/core/math/noise/curl_noise_3d.js +18 -27
- package/src/core/math/statistics/hammersley_sequence.d.ts +28 -16
- package/src/core/math/statistics/hammersley_sequence.d.ts.map +1 -1
- package/src/core/math/statistics/hammersley_sequence.js +53 -34
- package/src/core/science/units/MEASUREMENT_UNITS_SI.d.ts +3 -0
- package/src/core/science/units/MEASUREMENT_UNITS_SI.d.ts.map +1 -1
- package/src/core/science/units/MEASUREMENT_UNITS_SI.js +5 -16
- package/src/engine/animation/TransitionFunctions.d.ts +31 -0
- package/src/engine/animation/TransitionFunctions.d.ts.map +1 -1
- package/src/engine/animation/TransitionFunctions.js +44 -0
- package/src/engine/animation/curve/animation_curve_binary_codec.d.ts +29 -0
- package/src/engine/animation/curve/animation_curve_binary_codec.d.ts.map +1 -0
- package/src/engine/animation/curve/animation_curve_binary_codec.js +60 -0
- package/src/engine/animation/curve/draw/canvas_point_to_curve.d.ts +16 -0
- package/src/engine/animation/curve/draw/canvas_point_to_curve.d.ts.map +1 -0
- package/src/engine/animation/curve/draw/canvas_point_to_curve.js +22 -0
- package/src/engine/animation/curve/draw/curve_point_to_canvas.d.ts +27 -0
- package/src/engine/animation/curve/draw/curve_point_to_canvas.d.ts.map +1 -0
- package/src/engine/animation/curve/draw/curve_point_to_canvas.js +38 -0
- package/src/engine/animation/curve/draw/position_canvas_to_curve.d.ts +2 -0
- package/src/engine/animation/curve/draw/position_canvas_to_curve.d.ts.map +1 -1
- package/src/engine/animation/curve/draw/position_canvas_to_curve.js +22 -24
- package/src/engine/animation/curve/draw/position_curve_to_canvas.d.ts +2 -0
- package/src/engine/animation/curve/draw/position_curve_to_canvas.d.ts.map +1 -1
- package/src/engine/animation/curve/draw/position_curve_to_canvas.js +22 -25
- package/src/engine/animation/curve/editor/canvas2dDrawWorldAxisLabels.d.ts.map +1 -1
- package/src/engine/animation/curve/editor/canvas2dDrawWorldAxisLabels.js +3 -2
- package/src/engine/animation/curve/editor/canvas2dPlotCurvePoints.d.ts.map +1 -1
- package/src/engine/animation/curve/editor/canvas2dPlotCurvePoints.js +14 -14
- package/src/engine/animation/removeEntityWithMeshParticlesEffect.d.ts.map +1 -1
- package/src/engine/animation/removeEntityWithMeshParticlesEffect.js +5 -0
- package/src/engine/asset/loaders/GLTFAssetLoader.d.ts.map +1 -1
- package/src/engine/asset/loaders/GLTFAssetLoader.js +25 -51
- package/src/engine/asset/loaders/material/StaticMaterialCache.d.ts +3 -2
- package/src/engine/asset/loaders/material/StaticMaterialCache.d.ts.map +1 -1
- package/src/engine/asset/loaders/material/StaticMaterialCache.js +16 -55
- package/src/engine/asset/loaders/material/TextureCoalescer.d.ts +32 -0
- package/src/engine/asset/loaders/material/TextureCoalescer.d.ts.map +1 -0
- package/src/engine/asset/loaders/material/TextureCoalescer.js +68 -0
- package/src/engine/asset/loaders/material/traverseMaterialTextures.d.ts +10 -2
- package/src/engine/asset/loaders/material/traverseMaterialTextures.d.ts.map +1 -1
- package/src/engine/asset/loaders/material/traverseMaterialTextures.js +10 -2
- package/src/engine/control/first-person/abilities/Mantle.d.ts.map +1 -1
- package/src/engine/control/first-person/abilities/Mantle.js +10 -26
- package/src/engine/ecs/dynamic_actions/actions/definition/WeightedRandomActionDescription.d.ts.map +1 -1
- package/src/engine/ecs/dynamic_actions/actions/definition/WeightedRandomActionDescription.js +5 -0
- package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.d.ts +22 -2
- package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.d.ts.map +1 -1
- package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.js +92 -41
- package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.d.ts +3 -1
- package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.d.ts.map +1 -1
- package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.js +14 -16
- package/src/engine/ecs/gui/parallax/GuiElementParallaxSystem.d.ts.map +1 -1
- package/src/engine/ecs/gui/parallax/GuiElementParallaxSystem.js +16 -29
- package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.d.ts.map +1 -1
- package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.js +12 -74
- package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.d.ts.map +1 -1
- package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.js +10 -73
- package/src/engine/ecs/ik/ik_probe_terrain_contact.d.ts +38 -0
- package/src/engine/ecs/ik/ik_probe_terrain_contact.d.ts.map +1 -0
- package/src/engine/ecs/ik/ik_probe_terrain_contact.js +119 -0
- package/src/engine/ecs/terrain/util/paintTerrainOverlayViaLookupTable.d.ts +0 -1
- package/src/engine/ecs/terrain/util/paintTerrainOverlayViaLookupTable.d.ts.map +1 -1
- package/src/engine/ecs/terrain/util/paintTerrainOverlayViaLookupTable.js +2 -14
- package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.d.ts +12 -1
- package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.d.ts.map +1 -1
- package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.js +14 -10
- package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.d.ts.map +1 -1
- package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.js +7 -28
- package/src/engine/graphics/ecs/highlight/renderer/HighlightDecodeShader.d.ts +1 -2
- package/src/engine/graphics/ecs/highlight/renderer/HighlightDecodeShader.d.ts.map +1 -1
- package/src/engine/graphics/ecs/highlight/renderer/HighlightDecodeShader.js +4 -12
- package/src/engine/graphics/ecs/highlight/renderer/OutlineRenderer.d.ts.map +1 -1
- package/src/engine/graphics/ecs/highlight/renderer/OutlineRenderer.js +2 -11
- package/src/engine/graphics/ecs/highlight/renderer/makeBlurShader_9.d.ts +1 -2
- package/src/engine/graphics/ecs/highlight/renderer/makeBlurShader_9.d.ts.map +1 -1
- package/src/engine/graphics/ecs/highlight/renderer/makeBlurShader_9.js +3 -11
- package/src/engine/graphics/ecs/highlight/renderer/makeDilationShader.d.ts +1 -2
- package/src/engine/graphics/ecs/highlight/renderer/makeDilationShader.d.ts.map +1 -1
- package/src/engine/graphics/ecs/highlight/renderer/makeDilationShader.js +3 -11
- package/src/engine/graphics/ecs/highlight/renderer/make_screen_space_quad_material.d.ts +33 -0
- package/src/engine/graphics/ecs/highlight/renderer/make_screen_space_quad_material.d.ts.map +1 -0
- package/src/engine/graphics/ecs/highlight/renderer/make_screen_space_quad_material.js +44 -0
- package/src/engine/graphics/ecs/highlight/system/HighlightSystemBase.d.ts +55 -0
- package/src/engine/graphics/ecs/highlight/system/HighlightSystemBase.d.ts.map +1 -0
- package/src/engine/graphics/ecs/highlight/system/HighlightSystemBase.js +205 -0
- package/src/engine/graphics/ecs/highlight/system/MeshHighlightSystem.d.ts +4 -45
- package/src/engine/graphics/ecs/highlight/system/MeshHighlightSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/highlight/system/MeshHighlightSystem.js +39 -162
- package/src/engine/graphics/ecs/highlight/system/RenderableHighlightSystem.d.ts +4 -51
- package/src/engine/graphics/ecs/highlight/system/RenderableHighlightSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/highlight/system/RenderableHighlightSystem.js +34 -164
- package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.d.ts +5 -57
- package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.js +48 -175
- package/src/engine/graphics/ecs/light/shadow/extend_shadow_camera_near_for_casters.d.ts.map +1 -1
- package/src/engine/graphics/ecs/light/shadow/extend_shadow_camera_near_for_casters.js +7 -25
- package/src/engine/graphics/ecs/make_bvh_depth_range_computer.d.ts +26 -0
- package/src/engine/graphics/ecs/make_bvh_depth_range_computer.d.ts.map +1 -0
- package/src/engine/graphics/ecs/make_bvh_depth_range_computer.js +33 -0
- package/src/engine/graphics/ecs/mesh/MeshSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/mesh/MeshSystem.js +2 -5
- package/src/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.js +2 -5
- package/src/engine/graphics/ecs/render_layers_compute_depth_range.d.ts +35 -0
- package/src/engine/graphics/ecs/render_layers_compute_depth_range.d.ts.map +1 -0
- package/src/engine/graphics/ecs/render_layers_compute_depth_range.js +64 -0
- package/src/engine/graphics/ecs/trail2d/Trail2DSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/trail2d/Trail2DSystem.js +2 -5
- package/src/engine/graphics/ecs/trail3d/Trail3DSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/trail3d/Trail3DSystem.js +2 -5
- package/src/engine/graphics/ecs/water/WaterSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/water/WaterSystem.js +2 -5
- package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_nearest.d.ts.map +1 -1
- package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_nearest.js +22 -94
- package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_overlap_clipping_volume.d.ts.map +1 -1
- package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_overlap_clipping_volume.js +17 -57
- package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_raycast.d.ts.map +1 -1
- package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_raycast.js +17 -57
- package/src/engine/graphics/geometry/buffered/query/nearest_point_on_triangle_record.d.ts +30 -0
- package/src/engine/graphics/geometry/buffered/query/nearest_point_on_triangle_record.d.ts.map +1 -0
- package/src/engine/graphics/geometry/buffered/query/nearest_point_on_triangle_record.js +87 -0
- package/src/engine/graphics/geometry/buffered/query/query_bvh_geometry_nearest.d.ts.map +1 -1
- package/src/engine/graphics/geometry/buffered/query/query_bvh_geometry_nearest.js +11 -55
- package/src/engine/graphics/geometry/buffered/read_triangle_vertices.d.ts +29 -0
- package/src/engine/graphics/geometry/buffered/read_triangle_vertices.d.ts.map +1 -0
- package/src/engine/graphics/geometry/buffered/read_triangle_vertices.js +102 -0
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderDepthV0.d.ts.map +1 -1
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderDepthV0.js +17 -122
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderLitV0.d.ts.map +1 -1
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderLitV0.js +15 -194
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderNormalsV0.d.ts.map +1 -1
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderNormalsV0.js +12 -108
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderPerPixelV0.d.ts.map +1 -1
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderPerPixelV0.js +14 -183
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderV0.d.ts.map +1 -1
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderV0.js +12 -154
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderViewportDepthV0.d.ts.map +1 -1
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderViewportDepthV0.js +10 -94
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderWireframeV0.d.ts.map +1 -1
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderWireframeV0.js +8 -72
- package/src/engine/graphics/impostors/octahedral/shader/glsl/common.glsl +10 -0
- package/src/engine/graphics/impostors/voxel/bake/read_atlas_to_samples.d.ts.map +1 -1
- package/src/engine/graphics/impostors/voxel/bake/read_atlas_to_samples.js +79 -58
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderDepthV0.d.ts.map +1 -1
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderDepthV0.js +11 -22
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderLitV0.d.ts.map +1 -1
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderLitV0.js +7 -16
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderNormalsV0.d.ts.map +1 -1
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderNormalsV0.js +5 -9
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderV0.d.ts.map +1 -1
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderV0.js +4 -19
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderViewportDepthV0.d.ts.map +1 -1
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderViewportDepthV0.js +5 -9
- package/src/engine/graphics/material/SplatMaterial.d.ts.map +1 -1
- package/src/engine/graphics/material/SplatMaterial.js +2 -17
- package/src/engine/graphics/material/WaterMaterial.d.ts.map +1 -1
- package/src/engine/graphics/material/WaterMaterial.js +3 -18
- package/src/engine/graphics/material/manager/compilers/CoalesceTextures.d.ts +4 -4
- package/src/engine/graphics/material/manager/compilers/CoalesceTextures.d.ts.map +1 -1
- package/src/engine/graphics/material/manager/compilers/CoalesceTextures.js +25 -70
- package/src/engine/graphics/particles/ecs/ParticleEmitterSystem.d.ts.map +1 -1
- package/src/engine/graphics/particles/ecs/ParticleEmitterSystem.js +2 -5
- package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.d.ts +8 -11
- package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.d.ts.map +1 -1
- package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.js +20 -21
- package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.d.ts +39 -0
- package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.d.ts.map +1 -0
- package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.js +45 -0
- package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.d.ts +6 -8
- package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.d.ts.map +1 -1
- package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.js +2 -13
- package/src/engine/graphics/particles/particular/engine/utils/distributeParticlesOnObject3D.d.ts.map +1 -1
- package/src/engine/graphics/particles/particular/engine/utils/distributeParticlesOnObject3D.js +16 -78
- package/src/engine/graphics/particles/particular/engine/utils/distribute_points_on_indexed_triangles.d.ts +45 -0
- package/src/engine/graphics/particles/particular/engine/utils/distribute_points_on_indexed_triangles.d.ts.map +1 -0
- package/src/engine/graphics/particles/particular/engine/utils/distribute_points_on_indexed_triangles.js +168 -0
- package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.d.ts.map +1 -1
- package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.js +11 -115
- package/src/engine/graphics/postprocess/threejs/shaders/CopyShader.d.ts +24 -16
- package/src/engine/graphics/postprocess/threejs/shaders/CopyShader.d.ts.map +1 -1
- package/src/engine/graphics/postprocess/threejs/shaders/CopyShader.js +15 -47
- package/src/engine/graphics/render/buffer/simple-fx/ao/AmbientOcclusionPostProcessEffect.d.ts +4 -0
- package/src/engine/graphics/render/buffer/simple-fx/ao/AmbientOcclusionPostProcessEffect.d.ts.map +1 -1
- package/src/engine/graphics/render/buffer/simple-fx/ao/AmbientOcclusionPostProcessEffect.js +4 -0
- package/src/engine/graphics/sh3/build_injected_shader.d.ts +51 -0
- package/src/engine/graphics/sh3/build_injected_shader.d.ts.map +1 -0
- package/src/engine/graphics/sh3/build_injected_shader.js +56 -0
- package/src/engine/graphics/sh3/gi/material/MaterialTransformer.d.ts.map +1 -1
- package/src/engine/graphics/sh3/gi/material/MaterialTransformer.js +10 -1
- package/src/engine/graphics/sh3/gi/material/chunk_lpv_get_irradiance_at.d.ts.map +1 -1
- package/src/engine/graphics/sh3/gi/material/chunk_lpv_get_irradiance_at.js +17 -0
- package/src/engine/graphics/sh3/gi/material/common.d.ts +1 -1
- package/src/engine/graphics/sh3/gi/material/common.js +6 -222
- package/src/engine/graphics/sh3/gi/material/space_fragment/build_fragment_shader.d.ts.map +1 -1
- package/src/engine/graphics/sh3/gi/material/space_fragment/build_fragment_shader.js +7 -11
- package/src/engine/graphics/sh3/gi/material/space_fragment/build_vertex_shader.d.ts.map +1 -1
- package/src/engine/graphics/sh3/gi/material/space_fragment/build_vertex_shader.js +27 -29
- package/src/engine/graphics/sh3/gi/material/space_vertex/build_fragment_shader.d.ts.map +1 -1
- package/src/engine/graphics/sh3/gi/material/space_vertex/build_fragment_shader.js +7 -11
- package/src/engine/graphics/sh3/gi/material/space_vertex/build_vertex_shader.d.ts.map +1 -1
- package/src/engine/graphics/sh3/gi/material/space_vertex/build_vertex_shader.js +7 -12
- package/src/engine/graphics/sh3/grid_dilate_average.d.ts +38 -0
- package/src/engine/graphics/sh3/grid_dilate_average.d.ts.map +1 -0
- package/src/engine/graphics/sh3/grid_dilate_average.js +175 -0
- package/src/engine/graphics/sh3/lightmap/lightmap_dilate.d.ts +4 -0
- package/src/engine/graphics/sh3/lightmap/lightmap_dilate.d.ts.map +1 -1
- package/src/engine/graphics/sh3/lightmap/lightmap_dilate.js +7 -70
- package/src/engine/graphics/sh3/lpg/light_probe_grid_dilate.d.ts +6 -0
- package/src/engine/graphics/sh3/lpg/light_probe_grid_dilate.d.ts.map +1 -1
- package/src/engine/graphics/sh3/lpg/light_probe_grid_dilate.js +14 -113
- package/src/engine/graphics/sh3/lpg/material/chunk_lpg_get_irradiance_at.d.ts.map +1 -1
- package/src/engine/graphics/sh3/lpg/material/chunk_lpg_get_irradiance_at.js +7 -0
- package/src/engine/graphics/sh3/lpg/material/space_fragment/build_fragment_shader.d.ts.map +1 -1
- package/src/engine/graphics/sh3/lpg/material/space_fragment/build_fragment_shader.js +5 -8
- package/src/engine/graphics/sh3/lpg/material/space_fragment/build_vertex_shader.d.ts.map +1 -1
- package/src/engine/graphics/sh3/lpg/material/space_fragment/build_vertex_shader.js +5 -8
- package/src/engine/graphics/sh3/lpg/material/space_vertex/build_fragment_shader.d.ts.map +1 -1
- package/src/engine/graphics/sh3/lpg/material/space_vertex/build_fragment_shader.js +5 -8
- package/src/engine/graphics/sh3/lpg/material/space_vertex/build_vertex_shader.d.ts.map +1 -1
- package/src/engine/graphics/sh3/lpg/material/space_vertex/build_vertex_shader.js +5 -8
- package/src/engine/graphics/sh3/lpv/depth/chunk_probe_depth_sampling.d.ts +38 -0
- package/src/engine/graphics/sh3/lpv/depth/chunk_probe_depth_sampling.d.ts.map +1 -0
- package/src/engine/graphics/sh3/lpv/depth/chunk_probe_depth_sampling.js +265 -0
- package/src/engine/graphics/sh3/lpv/depth/octahedral/shader/visualize.frag.glsl +11 -0
- package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/VLPDepthMapVisualisation.d.ts.map +1 -1
- package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/VLPDepthMapVisualisation.js +5 -1
- package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/visualise.frag.glsl +189 -419
- package/src/engine/graphics/sh3/shader/visualize.frag.d.ts +1 -1
- package/src/engine/graphics/sh3/shader/visualize.frag.js +7 -0
- package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.d.ts +102 -0
- package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.d.ts.map +1 -0
- package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.js +277 -0
- package/src/engine/graphics/shaders/chunks/glsl_packing.d.ts +29 -0
- package/src/engine/graphics/shaders/chunks/glsl_packing.d.ts.map +1 -0
- package/src/engine/graphics/shaders/chunks/glsl_packing.js +30 -0
- package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.d.ts +40 -0
- package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.d.ts.map +1 -0
- package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.js +57 -0
- package/src/engine/graphics/shaders/lib/make_clouds_uniforms.d.ts +22 -0
- package/src/engine/graphics/shaders/lib/make_clouds_uniforms.d.ts.map +1 -0
- package/src/engine/graphics/shaders/lib/make_clouds_uniforms.js +39 -0
- package/src/engine/graphics/texture/attribute_spec_to_three_format.d.ts +6 -0
- package/src/engine/graphics/texture/attribute_spec_to_three_format.d.ts.map +1 -1
- package/src/engine/graphics/texture/attribute_spec_to_three_format.js +9 -9
- package/src/engine/graphics/texture/channel_count_to_format_prefix.d.ts +14 -0
- package/src/engine/graphics/texture/channel_count_to_format_prefix.d.ts.map +1 -0
- package/src/engine/graphics/texture/channel_count_to_format_prefix.js +26 -0
- package/src/engine/graphics/texture/computeThreeTextureInternalFormatFromDataType.d.ts.map +1 -1
- package/src/engine/graphics/texture/computeThreeTextureInternalFormatFromDataType.js +2 -20
- package/src/engine/graphics/texture/normalized_internal_format.d.ts.map +1 -1
- package/src/engine/graphics/texture/normalized_internal_format.js +2 -20
- package/src/engine/graphics/texture/sampler/convertTexture2Sampler2D.d.ts.map +1 -1
- package/src/engine/graphics/texture/sampler/convertTexture2Sampler2D.js +9 -3
- package/src/engine/input/devices/gamepad/GamepadDeviceLayout.d.ts +54 -0
- package/src/engine/input/devices/gamepad/GamepadDeviceLayout.d.ts.map +1 -0
- package/src/engine/input/devices/gamepad/GamepadDeviceLayout.js +323 -0
- package/src/engine/input/devices/gamepad/GamepadHandle.d.ts +21 -2
- package/src/engine/input/devices/gamepad/GamepadHandle.d.ts.map +1 -1
- package/src/engine/input/devices/gamepad/GamepadHandle.js +39 -11
- package/src/engine/input/devices/gamepad/GamepadLayout.d.ts +128 -0
- package/src/engine/input/devices/gamepad/GamepadLayout.d.ts.map +1 -0
- package/src/engine/input/devices/gamepad/GamepadLayout.js +160 -0
- package/src/engine/input/devices/gamepad/GamepadStandardMapping.d.ts +10 -0
- package/src/engine/input/devices/gamepad/GamepadStandardMapping.d.ts.map +1 -1
- package/src/engine/input/devices/gamepad/GamepadStandardMapping.js +11 -0
- package/src/engine/input/devices/gamepad/GamepadStick.d.ts +5 -1
- package/src/engine/input/devices/gamepad/GamepadStick.d.ts.map +1 -1
- package/src/engine/input/devices/gamepad/GamepadStick.js +5 -1
- package/src/engine/input/devices/gamepad/gamepad_layout_database.d.ts +27 -0
- package/src/engine/input/devices/gamepad/gamepad_layout_database.d.ts.map +1 -0
- package/src/engine/input/devices/gamepad/gamepad_layout_database.js +144 -0
- package/src/engine/input/devices/gamepad/gamepad_read_hat_axis.d.ts +25 -0
- package/src/engine/input/devices/gamepad/gamepad_read_hat_axis.d.ts.map +1 -0
- package/src/engine/input/devices/gamepad/gamepad_read_hat_axis.js +61 -0
- package/src/engine/input/devices/gamepad/prototypeGamepadTester.d.ts +2 -0
- package/src/engine/input/devices/gamepad/prototypeGamepadTester.d.ts.map +1 -0
- package/src/engine/input/devices/gamepad/prototypeGamepadTester.js +2124 -0
- package/src/engine/input/ecs/util/TopDownCameraControllerHelper.d.ts.map +1 -1
- package/src/engine/input/ecs/util/TopDownCameraControllerHelper.js +3 -33
- package/src/engine/intelligence/behavior/util/RandomDelayBehavior.d.ts.map +1 -1
- package/src/engine/intelligence/behavior/util/RandomDelayBehavior.js +5 -0
- package/src/engine/network/adapters/QuaternionInterpolationAdapter.d.ts.map +1 -1
- package/src/engine/network/adapters/QuaternionInterpolationAdapter.js +18 -19
- package/src/engine/network/adapters/TransformInterpolationAdapter.d.ts.map +1 -1
- package/src/engine/network/adapters/TransformInterpolationAdapter.js +18 -13
- package/src/engine/network/orchestrator/NetworkPeer.d.ts.map +1 -1
- package/src/engine/network/orchestrator/NetworkPeer.js +2 -1
- package/src/engine/network/sim/ActionLog.d.ts +9 -6
- package/src/engine/network/sim/ActionLog.d.ts.map +1 -1
- package/src/engine/network/sim/ActionLog.js +43 -80
- package/src/engine/network/sim/SmoothingState.d.ts.map +1 -1
- package/src/engine/network/sim/SmoothingState.js +27 -28
- package/src/engine/network/state/FrameBufferRing.d.ts +84 -0
- package/src/engine/network/state/FrameBufferRing.d.ts.map +1 -0
- package/src/engine/network/state/FrameBufferRing.js +168 -0
- package/src/engine/network/state/InputRing.d.ts +14 -12
- package/src/engine/network/state/InputRing.d.ts.map +1 -1
- package/src/engine/network/state/InputRing.js +37 -76
- package/src/engine/network/transport/LoopbackTransport.d.ts.map +1 -1
- package/src/engine/network/transport/LoopbackTransport.js +10 -31
- package/src/engine/network/transport/Transport.d.ts +42 -2
- package/src/engine/network/transport/Transport.d.ts.map +1 -1
- package/src/engine/network/transport/Transport.js +87 -3
- package/src/engine/network/transport/adapters/NodeUDPTransport.d.ts.map +1 -1
- package/src/engine/network/transport/adapters/NodeUDPTransport.js +7 -33
- package/src/engine/network/transport/adapters/SimulatedTransport.d.ts.map +1 -1
- package/src/engine/network/transport/adapters/SimulatedTransport.js +17 -28
- package/src/engine/network/transport/adapters/WebRTCDataChannelTransport.d.ts.map +1 -1
- package/src/engine/network/transport/adapters/WebRTCDataChannelTransport.js +6 -32
- package/src/engine/network/transport/adapters/WebSocketTransport.d.ts.map +1 -1
- package/src/engine/network/transport/adapters/WebSocketTransport.js +6 -32
- package/src/engine/network/transport/adapters/WebTransportTransport.d.ts.map +1 -1
- package/src/engine/network/transport/adapters/WebTransportTransport.js +11 -22
- package/src/engine/physics/constraint/solve_constraints.d.ts.map +1 -1
- package/src/engine/physics/constraint/solve_constraints.js +18 -48
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/engine/physics/fluid/ecs/FluidSystem.d.ts +3 -3
- package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_scalar.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_scalar.js +7 -0
- package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.js +11 -18
- package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.js +7 -0
- package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.js +15 -57
- package/src/engine/physics/fluid/solver/v3_grid_apply_scalar_advection.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_grid_apply_scalar_advection.js +7 -0
- package/src/engine/physics/fluid/solver/v3_grid_limit8_at_indices.d.ts +28 -0
- package/src/engine/physics/fluid/solver/v3_grid_limit8_at_indices.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_limit8_at_indices.js +38 -0
- package/src/engine/physics/fluid/solver/v3_mac_advect_maccormack_velocity.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_mac_advect_maccormack_velocity.js +12 -14
- package/src/engine/physics/fluid/solver/v3_mac_apply_vorticity_confinement.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_mac_apply_vorticity_confinement.js +9 -0
- package/src/engine/physics/mls-mpm/MLS_MPM.d.ts +13 -1
- package/src/engine/physics/mls-mpm/MLS_MPM.d.ts.map +1 -1
- package/src/engine/physics/mls-mpm/MLS_MPM.js +15 -4
- package/src/engine/physics/narrowphase/box_triangle_contact.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/box_triangle_contact.js +9 -0
- package/src/engine/physics/narrowphase/capsule_contacts.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/capsule_contacts.js +10 -11
- package/src/engine/physics/narrowphase/sphere_triangle_contact.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/sphere_triangle_contact.js +7 -12
- package/src/engine/physics/solver/apply_impulse_to_body.d.ts +36 -0
- package/src/engine/physics/solver/apply_impulse_to_body.d.ts.map +1 -0
- package/src/engine/physics/solver/apply_impulse_to_body.js +86 -0
- package/src/engine/physics/solver/solve_contacts.d.ts.map +1 -1
- package/src/engine/physics/solver/solve_contacts.js +1 -53
- package/src/engine/plugin/EnginePlugin.d.ts +3 -0
- package/src/engine/plugin/EnginePlugin.d.ts.map +1 -1
- package/src/engine/plugin/EnginePlugin.js +3 -0
- package/src/engine/save/storage/IndexedDBStorage.d.ts +1 -0
- package/src/engine/save/storage/IndexedDBStorage.d.ts.map +1 -1
- package/src/engine/save/storage/IndexedDBStorage.js +50 -50
- package/src/engine/sound/ecs/SoundControllerSystem.d.ts.map +1 -1
- package/src/engine/sound/ecs/SoundControllerSystem.js +2 -10
- package/src/engine/sound/simulation/AcousticSimulator.d.ts.map +1 -1
- package/src/engine/sound/simulation/AcousticSimulator.js +2 -1
- package/src/engine/sound/simulation/core/AcousticOccluderIndex.d.ts.map +1 -1
- package/src/engine/sound/simulation/core/AcousticOccluderIndex.js +4 -6
- package/src/engine/sound/simulation/core/OcclusionSolver.d.ts.map +1 -1
- package/src/engine/sound/simulation/core/OcclusionSolver.js +2 -9
- package/src/engine/sound/simulation/probe/ProbeVisibilityRecheck.d.ts.map +1 -1
- package/src/engine/sound/simulation/probe/ProbeVisibilityRecheck.js +9 -14
- package/src/engine/sound/simulation/probe/bakeReverbBands.d.ts.map +1 -1
- package/src/engine/sound/simulation/probe/bakeReverbBands.js +2 -6
- package/src/engine/sound/simulation/probe/bakeVisibility.d.ts.map +1 -1
- package/src/engine/sound/simulation/probe/bakeVisibility.js +4 -34
- package/src/engine/sound/simulation/probe/probe_densify_portals.d.ts.map +1 -1
- package/src/engine/sound/simulation/probe/probe_densify_portals.js +3 -6
- package/src/engine/sound/simulation/probe/probe_edge_key.d.ts +31 -0
- package/src/engine/sound/simulation/probe/probe_edge_key.d.ts.map +1 -0
- package/src/engine/sound/simulation/probe/probe_edge_key.js +38 -0
- package/src/engine/sound/simulation/probe/probe_sdf_grid.d.ts +10 -3
- package/src/engine/sound/simulation/probe/probe_sdf_grid.d.ts.map +1 -1
- package/src/engine/sound/simulation/probe/probe_sdf_grid.js +10 -22
- package/src/engine/sound/simulation/probe/probe_visibility_augment.d.ts.map +1 -1
- package/src/engine/sound/simulation/probe/probe_visibility_augment.js +12 -48
- package/src/engine/sound/simulation/probe/probe_visibility_bridge_components.d.ts.map +1 -1
- package/src/engine/sound/simulation/probe/probe_visibility_bridge_components.js +4 -3
- package/src/engine/sound/simulation/render/foaReverbImpulseResponse.d.ts +5 -4
- package/src/engine/sound/simulation/render/foaReverbImpulseResponse.d.ts.map +1 -1
- package/src/engine/sound/simulation/render/foaReverbImpulseResponse.js +23 -31
- package/src/engine/sound/simulation/render/reverbImpulseResponse.d.ts +1 -8
- package/src/engine/sound/simulation/render/reverbImpulseResponse.d.ts.map +1 -1
- package/src/engine/sound/simulation/render/reverbImpulseResponse.js +21 -31
- package/src/engine/sound/simulation/render/reverb_band_tails.d.ts +55 -0
- package/src/engine/sound/simulation/render/reverb_band_tails.d.ts.map +1 -0
- package/src/engine/sound/simulation/render/reverb_band_tails.js +93 -0
- package/src/engine/sound/sopra/definition/EventDescriptionSerializationAdapter.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/EventDescriptionSerializationAdapter.js +6 -22
- package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.js +7 -3
- package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClipSerializationAdapter.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClipSerializationAdapter.js +7 -22
- package/src/engine/sound/sopra/definition/clip/ContainerAudioClip.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/clip/ContainerAudioClip.js +28 -0
- package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.js +1 -5
- package/src/engine/sound/sopra/definition/clip/SequenceContainerAudioClip.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/clip/SequenceContainerAudioClip.js +1 -13
- package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.js +2 -8
- package/src/engine/sound/sopra/definition/effect/ReverbEffect.d.ts +3 -0
- package/src/engine/sound/sopra/definition/effect/ReverbEffect.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/effect/ReverbEffect.js +26 -14
- package/src/engine/sound/sopra/runtime/BusGraph.d.ts.map +1 -1
- package/src/engine/sound/sopra/runtime/BusGraph.js +21 -33
- package/src/engine/sound/sopra/runtime/EventInstance.js +1 -1
- package/src/engine/ui/apply_pointer_tilt_3d.d.ts +25 -0
- package/src/engine/ui/apply_pointer_tilt_3d.d.ts.map +1 -0
- package/src/engine/ui/apply_pointer_tilt_3d.js +50 -0
- package/src/engine/ui/bindings/processors/DomElementProcessorTilt3D.d.ts.map +1 -1
- package/src/engine/ui/bindings/processors/DomElementProcessorTilt3D.js +9 -26
- package/src/generation/filtering/numeric/CellFilterCache.d.ts.map +1 -1
- package/src/generation/filtering/numeric/CellFilterCache.js +4 -21
- package/src/generation/filtering/numeric/complex/CellFilterSobel.d.ts.map +1 -1
- package/src/generation/filtering/numeric/complex/CellFilterSobel.js +11 -20
- package/src/generation/filtering/numeric/math/CellFilterPower.d.ts +1 -1
- package/src/generation/filtering/numeric/math/CellFilterPower.d.ts.map +1 -1
- package/src/generation/filtering/numeric/math/CellFilterPower.js +1 -5
- package/src/generation/filtering/numeric/process/computeCellFilterGradient.d.ts.map +1 -1
- package/src/generation/filtering/numeric/process/computeCellFilterGradient.js +13 -15
- package/src/generation/filtering/numeric/process/computeCellFilterSobel.d.ts +20 -0
- package/src/generation/filtering/numeric/process/computeCellFilterSobel.d.ts.map +1 -0
- package/src/generation/filtering/numeric/process/computeCellFilterSobel.js +36 -0
- package/src/generation/filtering/numeric/util/CellFilterDisplaced.d.ts.map +1 -1
- package/src/generation/filtering/numeric/util/CellFilterDisplaced.js +11 -6
- package/src/generation/filtering/numeric/util/populateSampler2DFromCellFilter.d.ts.map +1 -1
- package/src/generation/filtering/numeric/util/populateSampler2DFromCellFilter.js +18 -36
- package/src/generation/filtering/numeric/util/write_cell_filter_to_sampler2d.d.ts +21 -0
- package/src/generation/filtering/numeric/util/write_cell_filter_to_sampler2d.d.ts.map +1 -0
- package/src/generation/filtering/numeric/util/write_cell_filter_to_sampler2d.js +47 -0
- package/src/generation/filtering/util/cell_filter_weights_pick.d.ts +25 -0
- package/src/generation/filtering/util/cell_filter_weights_pick.d.ts.map +1 -0
- package/src/generation/filtering/util/cell_filter_weights_pick.js +54 -0
- package/src/generation/grid/generation/discrete/GridTaskConnectRooms.d.ts.map +1 -1
- package/src/generation/grid/generation/discrete/GridTaskConnectRooms.js +14 -1
- package/src/generation/markers/GridActionRuleSet.d.ts.map +1 -1
- package/src/generation/markers/GridActionRuleSet.js +10 -7
- package/src/generation/markers/GridCellActionPlaceMarker.d.ts.map +1 -1
- package/src/generation/markers/GridCellActionPlaceMarker.js +10 -12
- package/src/generation/markers/actions/probability/MarkerNodeActionSelectWeighted.d.ts.map +1 -1
- package/src/generation/markers/actions/probability/MarkerNodeActionSelectWeighted.js +7 -42
- package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.d.ts.map +1 -1
- package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.js +11 -6
- package/src/generation/placement/GridCellPlacementRule.d.ts.map +1 -1
- package/src/generation/placement/GridCellPlacementRule.js +10 -7
- package/src/generation/placement/action/GridCellActionPlaceTags.d.ts.map +1 -1
- package/src/generation/placement/action/GridCellActionPlaceTags.js +10 -4
- package/src/generation/placement/action/random/weighted/CellActionSelectWeightedRandom.d.ts.map +1 -1
- package/src/generation/placement/action/random/weighted/CellActionSelectWeightedRandom.js +2 -38
- package/src/generation/placement/action/util/GridCellDisplacedAction.d.ts.map +1 -1
- package/src/generation/placement/action/util/GridCellDisplacedAction.js +11 -6
- package/src/generation/rules/cell/CellMatcherGridPattern.d.ts.map +1 -1
- package/src/generation/rules/cell/CellMatcherGridPattern.js +11 -4
- package/src/generation/theme/ThemeEngine.d.ts.map +1 -1
- package/src/generation/theme/ThemeEngine.js +7 -12
- package/src/view/elements/Group.d.ts +24 -3
- package/src/view/elements/Group.d.ts.map +1 -1
- package/src/view/elements/Group.js +56 -34
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Write a mouse-parallax 3D tilt onto a DOM element.
|
|
3
|
+
*
|
|
4
|
+
* The element is rotated about an axis perpendicular to the pointer's offset from `pivot`, by an
|
|
5
|
+
* angle proportional to how far the pointer is from that pivot relative to half the viewport. The
|
|
6
|
+
* result reads as the element leaning away from / toward the cursor.
|
|
7
|
+
*
|
|
8
|
+
* This exists because the identical body was carried by both {@link GuiElementParallaxSystem} (ECS)
|
|
9
|
+
* and {@link DomElementProcessorTilt3D} (DOM binding), and the ECS copy had silently lost its pivot:
|
|
10
|
+
* it computed the element centre and then took the delta against the viewport centre instead, so
|
|
11
|
+
* every element tilted identically no matter where on screen it sat. There is one pivot convention
|
|
12
|
+
* now — the caller always supplies it, and it is always the element centre.
|
|
13
|
+
*
|
|
14
|
+
* @param {HTMLElement} el element to write the transform onto
|
|
15
|
+
* @param {number} pointer_x pointer position in viewport pixels
|
|
16
|
+
* @param {number} pointer_y
|
|
17
|
+
* @param {number} pivot_x point the tilt is measured from, in viewport pixels; normally the element centre
|
|
18
|
+
* @param {number} pivot_y
|
|
19
|
+
* @param {number} viewport_width used to normalise the pointer offset; must be greater than 0
|
|
20
|
+
* @param {number} viewport_height must be greater than 0
|
|
21
|
+
* @param {number} angle maximum tilt in degrees, reached when the pointer offset equals half the viewport
|
|
22
|
+
* @param {number} depth `translateZ` applied after the rotation, in pixels; 0 for a pure rotation
|
|
23
|
+
*/
|
|
24
|
+
export function apply_pointer_tilt_3d(el: HTMLElement, pointer_x: number, pointer_y: number, pivot_x: number, pivot_y: number, viewport_width: number, viewport_height: number, angle: number, depth: number): void;
|
|
25
|
+
//# sourceMappingURL=apply_pointer_tilt_3d.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply_pointer_tilt_3d.d.ts","sourceRoot":"","sources":["../../../../src/engine/ui/apply_pointer_tilt_3d.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,0CAVW,WAAW,aACX,MAAM,aACN,MAAM,WACN,MAAM,WACN,MAAM,kBACN,MAAM,mBACN,MAAM,SACN,MAAM,SACN,MAAM,QA4BhB"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Write a mouse-parallax 3D tilt onto a DOM element.
|
|
3
|
+
*
|
|
4
|
+
* The element is rotated about an axis perpendicular to the pointer's offset from `pivot`, by an
|
|
5
|
+
* angle proportional to how far the pointer is from that pivot relative to half the viewport. The
|
|
6
|
+
* result reads as the element leaning away from / toward the cursor.
|
|
7
|
+
*
|
|
8
|
+
* This exists because the identical body was carried by both {@link GuiElementParallaxSystem} (ECS)
|
|
9
|
+
* and {@link DomElementProcessorTilt3D} (DOM binding), and the ECS copy had silently lost its pivot:
|
|
10
|
+
* it computed the element centre and then took the delta against the viewport centre instead, so
|
|
11
|
+
* every element tilted identically no matter where on screen it sat. There is one pivot convention
|
|
12
|
+
* now — the caller always supplies it, and it is always the element centre.
|
|
13
|
+
*
|
|
14
|
+
* @param {HTMLElement} el element to write the transform onto
|
|
15
|
+
* @param {number} pointer_x pointer position in viewport pixels
|
|
16
|
+
* @param {number} pointer_y
|
|
17
|
+
* @param {number} pivot_x point the tilt is measured from, in viewport pixels; normally the element centre
|
|
18
|
+
* @param {number} pivot_y
|
|
19
|
+
* @param {number} viewport_width used to normalise the pointer offset; must be greater than 0
|
|
20
|
+
* @param {number} viewport_height must be greater than 0
|
|
21
|
+
* @param {number} angle maximum tilt in degrees, reached when the pointer offset equals half the viewport
|
|
22
|
+
* @param {number} depth `translateZ` applied after the rotation, in pixels; 0 for a pure rotation
|
|
23
|
+
*/
|
|
24
|
+
export function apply_pointer_tilt_3d(
|
|
25
|
+
el,
|
|
26
|
+
pointer_x, pointer_y,
|
|
27
|
+
pivot_x, pivot_y,
|
|
28
|
+
viewport_width, viewport_height,
|
|
29
|
+
angle,
|
|
30
|
+
depth
|
|
31
|
+
) {
|
|
32
|
+
|
|
33
|
+
const viewport_center_x = viewport_width * 0.5;
|
|
34
|
+
const viewport_center_y = viewport_height * 0.5;
|
|
35
|
+
|
|
36
|
+
const delta_x = pointer_x - pivot_x;
|
|
37
|
+
const delta_y = pointer_y - pivot_y;
|
|
38
|
+
|
|
39
|
+
const tilt_x = (delta_y / viewport_center_y);
|
|
40
|
+
const tilt_y = -(delta_x / viewport_center_x);
|
|
41
|
+
|
|
42
|
+
const radius = Math.sqrt(tilt_x * tilt_x + tilt_y * tilt_y);
|
|
43
|
+
|
|
44
|
+
const tilt_angle = radius * angle;
|
|
45
|
+
|
|
46
|
+
const style = el.style;
|
|
47
|
+
|
|
48
|
+
style.transformOrigin = '50% 50%';
|
|
49
|
+
style.transform = `rotate3d(${tilt_x},${tilt_y},0,${tilt_angle}deg) translateZ(${depth}px)`;
|
|
50
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DomElementProcessorTilt3D.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/ui/bindings/processors/DomElementProcessorTilt3D.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DomElementProcessorTilt3D.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/ui/bindings/processors/DomElementProcessorTilt3D.js"],"names":[],"mappings":"AAGA;IAuBI;;;;;OAKG;IACH,+BAJW,MAAM,GAEL,yBAAyB,CAcpC;IArCG;;;OAGG;IACH,OAFU,MAAM,CAEF;IAEd;;;OAGG;IACH,OAFU,MAAM,CAEF;IAEd;;;OAGG;IACH,eAAkB;IAuBtB,+BAEC;CAiCJ;oCAhFmC,2BAA2B"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { apply_pointer_tilt_3d } from "../../apply_pointer_tilt_3d.js";
|
|
1
2
|
import { DomElementProcessor } from "../DomElementProcessor.js";
|
|
2
3
|
|
|
3
4
|
export class DomElementProcessorTilt3D extends DomElementProcessor {
|
|
@@ -61,9 +62,6 @@ export class DomElementProcessorTilt3D extends DomElementProcessor {
|
|
|
61
62
|
|
|
62
63
|
const p = engine.devices.pointer.position;
|
|
63
64
|
|
|
64
|
-
const pointer_x = p.x;
|
|
65
|
-
const pointer_y = p.y;
|
|
66
|
-
|
|
67
65
|
const viewport_size = engine.gameView.size;
|
|
68
66
|
|
|
69
67
|
/**
|
|
@@ -72,28 +70,13 @@ export class DomElementProcessorTilt3D extends DomElementProcessor {
|
|
|
72
70
|
*/
|
|
73
71
|
const rect = el.getBoundingClientRect();
|
|
74
72
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
const delta_y = pointer_y - center_y;
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
const tilt_x = (delta_y / viewport_center_y);
|
|
87
|
-
const tilt_y = -(delta_x / viewport_center_x);
|
|
88
|
-
|
|
89
|
-
const radius = Math.sqrt(tilt_x * tilt_x + tilt_y * tilt_y);
|
|
90
|
-
|
|
91
|
-
const angle = radius * this.angle;
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
const style = el.style;
|
|
95
|
-
|
|
96
|
-
style.transformOrigin = '50% 50%';
|
|
97
|
-
style.transform = `rotate3d(${tilt_x},${tilt_y},0,${angle}deg) translateZ(${this.depth}px)`;
|
|
73
|
+
apply_pointer_tilt_3d(
|
|
74
|
+
el,
|
|
75
|
+
p.x, p.y,
|
|
76
|
+
rect.left + rect.width * 0.5, rect.top + rect.height * 0.5,
|
|
77
|
+
viewport_size.x, viewport_size.y,
|
|
78
|
+
this.angle,
|
|
79
|
+
this.depth
|
|
80
|
+
);
|
|
98
81
|
}
|
|
99
82
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CellFilterCache.d.ts","sourceRoot":"","sources":["../../../../../src/generation/filtering/numeric/CellFilterCache.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CellFilterCache.d.ts","sourceRoot":"","sources":["../../../../../src/generation/filtering/numeric/CellFilterCache.js"],"names":[],"mappings":"AAKA;IAeI;;;;;OAKG;IACH,wCAHW,MAAM,GACJ,eAAe,CAW3B;IA5BD;;;;OAIG;IACH,gBAAqC;IAErC;;;OAGG;IACH,OAFU,MAAM,CAEN;IAmBV,uCAgBC;CAKJ;yCAxDwC,qCAAqC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { assert } from "../../../core/assert.js";
|
|
2
2
|
import { Sampler2D } from "../../../engine/graphics/texture/sampler/Sampler2D.js";
|
|
3
3
|
import { CellFilterUnaryOperation } from "../core/CellFilterUnaryOperation.js";
|
|
4
|
+
import { write_cell_filter_to_sampler2d } from "./util/write_cell_filter_to_sampler2d.js";
|
|
4
5
|
|
|
5
6
|
export class CellFilterCache extends CellFilterUnaryOperation {
|
|
6
7
|
|
|
@@ -43,31 +44,13 @@ export class CellFilterCache extends CellFilterUnaryOperation {
|
|
|
43
44
|
const target_w = this.scale * g_w;
|
|
44
45
|
const target_h = this.scale * g_h;
|
|
45
46
|
|
|
46
|
-
const source = this.source;
|
|
47
47
|
const cache = this.__cache;
|
|
48
48
|
|
|
49
49
|
cache.resize(target_w, target_h);
|
|
50
50
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
let x = 0;
|
|
56
|
-
let y = 0;
|
|
57
|
-
|
|
58
|
-
for (y = 0; y < target_h; y++) {
|
|
59
|
-
const grid_y = y * scale_1;
|
|
60
|
-
|
|
61
|
-
for (x = 0; x < target_w; x++) {
|
|
62
|
-
const grid_x = x * scale_1;
|
|
63
|
-
|
|
64
|
-
const sampleValue = source.execute(grid, grid_x, grid_y, 0);
|
|
65
|
-
|
|
66
|
-
cache.writeChannel(x, y, 0, sampleValue);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
// console.timeEnd('Cache filter build');
|
|
51
|
+
// the source has already been initialized by `super.initialize`, so this must not go through
|
|
52
|
+
// `populateSampler2DFromCellFilter` (which would re-initialize it with seed 0)
|
|
53
|
+
write_cell_filter_to_sampler2d(cache, this.source, grid);
|
|
71
54
|
}
|
|
72
55
|
|
|
73
56
|
execute(grid, x, y, rotation) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CellFilterSobel.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/filtering/numeric/complex/CellFilterSobel.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CellFilterSobel.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/filtering/numeric/complex/CellFilterSobel.js"],"names":[],"mappings":"AAWA;;GAEG;AACH;IAaI;;;;OAIG;IACH,oBAHW,UAAU,GACR,eAAe,CAU3B;IAxBD;;;OAGG;IACH,QAFU,UAAU,CAEN;IAsBd,0DAMC;CACJ;2BAjD0B,qBAAqB"}
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import { CellFilter } from "../../CellFilter.js";
|
|
2
2
|
import { assert } from "../../../../core/assert.js";
|
|
3
|
+
import { v2_length } from "../../../../core/geom/vec2/v2_length.js";
|
|
4
|
+
import { computeCellFilterSobel } from "../process/computeCellFilterSobel.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Scratch for the raw gradient. Read out before returning, so it cannot alias across nested filters.
|
|
8
|
+
* @type {Float64Array}
|
|
9
|
+
*/
|
|
10
|
+
const scratch_gradient = new Float64Array(2);
|
|
3
11
|
|
|
4
12
|
/**
|
|
5
13
|
* Sobel edge-detection filter
|
|
@@ -33,27 +41,10 @@ export class CellFilterSobel extends CellFilter {
|
|
|
33
41
|
}
|
|
34
42
|
|
|
35
43
|
execute(grid, x, y, rotation) {
|
|
36
|
-
const filter = this.source;
|
|
37
|
-
|
|
38
|
-
//read surrounding points
|
|
39
|
-
const topLeft = filter.execute(grid, x - 1, y - 1, 0);
|
|
40
|
-
const top = filter.execute(grid, x, y - 1, 0);
|
|
41
|
-
const topRight = filter.execute(grid, x + 1, y - 1, 0);
|
|
42
|
-
|
|
43
|
-
const left = filter.execute(grid, x - 1, y, 0);
|
|
44
|
-
const right = filter.execute(grid, x + 1, y, 0);
|
|
45
|
-
|
|
46
|
-
const bottomLeft = filter.execute(grid, x - 1, y + 1, 0);
|
|
47
|
-
const bottom = filter.execute(grid, x, y + 1, 0);
|
|
48
|
-
const bottomRight = filter.execute(grid, x + 1, y + 1, 0);
|
|
49
|
-
|
|
50
|
-
// compute gradients
|
|
51
|
-
const dX = (topRight + 2.0 * right + bottomRight) - (topLeft + 2.0 * left + bottomLeft);
|
|
52
|
-
const dY = (bottomLeft + 2.0 * bottom + bottomRight) - (topLeft + 2.0 * top + topRight);
|
|
53
44
|
|
|
54
|
-
|
|
55
|
-
const magnitude = Math.sqrt(dX * dX + dY * dY);
|
|
45
|
+
computeCellFilterSobel(scratch_gradient, 0, this.source, grid, x, y);
|
|
56
46
|
|
|
57
|
-
|
|
47
|
+
//edge strength is the gradient magnitude, the direction is discarded
|
|
48
|
+
return v2_length(scratch_gradient[0], scratch_gradient[1]);
|
|
58
49
|
}
|
|
59
50
|
}
|
|
@@ -6,7 +6,7 @@ export class CellFilterPower extends CellFilterBinaryOperation {
|
|
|
6
6
|
* @returns {CellFilterPower}
|
|
7
7
|
*/
|
|
8
8
|
static from(value: CellFilter, power: CellFilter): CellFilterPower;
|
|
9
|
-
|
|
9
|
+
operation(value: any, power: any): number;
|
|
10
10
|
}
|
|
11
11
|
import { CellFilterBinaryOperation } from "../../core/CellFilterBinaryOperation.js";
|
|
12
12
|
//# sourceMappingURL=CellFilterPower.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CellFilterPower.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/filtering/numeric/math/CellFilterPower.js"],"names":[],"mappings":"AAGA;
|
|
1
|
+
{"version":3,"file":"CellFilterPower.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/filtering/numeric/math/CellFilterPower.js"],"names":[],"mappings":"AAGA;IAEI;;;;;OAKG;IACH,mDAFa,eAAe,CAY3B;IAED,0CAEC;CACJ;0CA1ByC,yCAAyC"}
|
|
@@ -3,7 +3,6 @@ import { assert } from "../../../../core/assert.js";
|
|
|
3
3
|
|
|
4
4
|
export class CellFilterPower extends CellFilterBinaryOperation {
|
|
5
5
|
|
|
6
|
-
|
|
7
6
|
/**
|
|
8
7
|
*
|
|
9
8
|
* @param {CellFilter} value
|
|
@@ -22,10 +21,7 @@ export class CellFilterPower extends CellFilterBinaryOperation {
|
|
|
22
21
|
return r;
|
|
23
22
|
}
|
|
24
23
|
|
|
25
|
-
|
|
26
|
-
const value = this.left.execute(grid, x, y, rotation);
|
|
27
|
-
const power = this.right.execute(grid, x, y, rotation);
|
|
28
|
-
|
|
24
|
+
operation(value, power) {
|
|
29
25
|
return Math.pow(value, power);
|
|
30
26
|
}
|
|
31
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"computeCellFilterGradient.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/filtering/numeric/process/computeCellFilterGradient.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"computeCellFilterGradient.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/filtering/numeric/process/computeCellFilterGradient.js"],"names":[],"mappings":"AASA;;;;;;;;;;GAUG;AACH,kDATW,MAAM,EAAE,KACR,MAAM,KACN,MAAM,uCAKJ,OAAO,CA2BnB"}
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
import { v2_length } from "../../../../core/geom/vec2/v2_length.js";
|
|
2
|
+
import { computeCellFilterSobel } from "./computeCellFilterSobel.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Scratch for the raw gradient. Read out before `result` is written, so `result` may alias it.
|
|
6
|
+
* @type {Float64Array}
|
|
7
|
+
*/
|
|
8
|
+
const scratch_gradient = new Float64Array(2);
|
|
9
|
+
|
|
1
10
|
/**
|
|
2
11
|
*
|
|
3
12
|
* @param {number[]} result
|
|
@@ -11,24 +20,13 @@
|
|
|
11
20
|
*/
|
|
12
21
|
export function computeCellFilterGradient(result, x, y, filter, grid) {
|
|
13
22
|
|
|
14
|
-
|
|
15
|
-
const topLeft = filter.execute(grid, x - 1, y - 1, 0);
|
|
16
|
-
const top = filter.execute(grid, x, y - 1, 0);
|
|
17
|
-
const topRight = filter.execute(grid, x + 1, y - 1, 0);
|
|
18
|
-
|
|
19
|
-
const left = filter.execute(grid, x - 1, y, 0);
|
|
20
|
-
const right = filter.execute(grid, x + 1, y, 0);
|
|
21
|
-
|
|
22
|
-
const bottomLeft = filter.execute(grid, x - 1, y + 1, 0);
|
|
23
|
-
const bottom = filter.execute(grid, x, y + 1, 0);
|
|
24
|
-
const bottomRight = filter.execute(grid, x + 1, y + 1, 0);
|
|
23
|
+
computeCellFilterSobel(scratch_gradient, 0, filter, grid, x, y);
|
|
25
24
|
|
|
26
|
-
|
|
27
|
-
const
|
|
28
|
-
const dY = (bottomLeft + 2.0 * bottom + bottomRight) - (topLeft + 2.0 * top + topRight);
|
|
25
|
+
const dX = scratch_gradient[0];
|
|
26
|
+
const dY = scratch_gradient[1];
|
|
29
27
|
|
|
30
28
|
//normalize vector
|
|
31
|
-
const magnitude =
|
|
29
|
+
const magnitude = v2_length(dX, dY);
|
|
32
30
|
|
|
33
31
|
if (magnitude === 0) {
|
|
34
32
|
result[0] = 0;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Apply the 3x3 Sobel operator to a {@link CellFilter} at a grid position, writing the raw
|
|
3
|
+
* (un-normalized) gradient vector into `result`.
|
|
4
|
+
*
|
|
5
|
+
* This exists so that the eight-tap read and the operator's kernel weights have a single
|
|
6
|
+
* definition: everything downstream of the taps (magnitude, direction, thresholding) differs
|
|
7
|
+
* between callers, but the taps themselves must not.
|
|
8
|
+
*
|
|
9
|
+
* The source filter is sampled at rotation 0 — the operator is defined in grid space, so rotating
|
|
10
|
+
* the taps would rotate the reported gradient with them and cancel out.
|
|
11
|
+
*
|
|
12
|
+
* @param {Float64Array|Float32Array|number[]} result receives `[dX, dY]`
|
|
13
|
+
* @param {number} result_offset
|
|
14
|
+
* @param {CellFilter} filter
|
|
15
|
+
* @param {GridData} grid
|
|
16
|
+
* @param {number} x
|
|
17
|
+
* @param {number} y
|
|
18
|
+
*/
|
|
19
|
+
export function computeCellFilterSobel(result: Float64Array | Float32Array | number[], result_offset: number, filter: CellFilter, grid: GridData, x: number, y: number): void;
|
|
20
|
+
//# sourceMappingURL=computeCellFilterSobel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"computeCellFilterSobel.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/filtering/numeric/process/computeCellFilterSobel.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,+CAPW,YAAY,GAAC,YAAY,GAAC,MAAM,EAAE,iBAClC,MAAM,yCAGN,MAAM,KACN,MAAM,QAmBhB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Apply the 3x3 Sobel operator to a {@link CellFilter} at a grid position, writing the raw
|
|
3
|
+
* (un-normalized) gradient vector into `result`.
|
|
4
|
+
*
|
|
5
|
+
* This exists so that the eight-tap read and the operator's kernel weights have a single
|
|
6
|
+
* definition: everything downstream of the taps (magnitude, direction, thresholding) differs
|
|
7
|
+
* between callers, but the taps themselves must not.
|
|
8
|
+
*
|
|
9
|
+
* The source filter is sampled at rotation 0 — the operator is defined in grid space, so rotating
|
|
10
|
+
* the taps would rotate the reported gradient with them and cancel out.
|
|
11
|
+
*
|
|
12
|
+
* @param {Float64Array|Float32Array|number[]} result receives `[dX, dY]`
|
|
13
|
+
* @param {number} result_offset
|
|
14
|
+
* @param {CellFilter} filter
|
|
15
|
+
* @param {GridData} grid
|
|
16
|
+
* @param {number} x
|
|
17
|
+
* @param {number} y
|
|
18
|
+
*/
|
|
19
|
+
export function computeCellFilterSobel(result, result_offset, filter, grid, x, y) {
|
|
20
|
+
|
|
21
|
+
//read surrounding points
|
|
22
|
+
const topLeft = filter.execute(grid, x - 1, y - 1, 0);
|
|
23
|
+
const top = filter.execute(grid, x, y - 1, 0);
|
|
24
|
+
const topRight = filter.execute(grid, x + 1, y - 1, 0);
|
|
25
|
+
|
|
26
|
+
const left = filter.execute(grid, x - 1, y, 0);
|
|
27
|
+
const right = filter.execute(grid, x + 1, y, 0);
|
|
28
|
+
|
|
29
|
+
const bottomLeft = filter.execute(grid, x - 1, y + 1, 0);
|
|
30
|
+
const bottom = filter.execute(grid, x, y + 1, 0);
|
|
31
|
+
const bottomRight = filter.execute(grid, x + 1, y + 1, 0);
|
|
32
|
+
|
|
33
|
+
// compute gradients
|
|
34
|
+
result[result_offset] = (topRight + 2.0 * right + bottomRight) - (topLeft + 2.0 * left + bottomLeft);
|
|
35
|
+
result[result_offset + 1] = (bottomLeft + 2.0 * bottom + bottomRight) - (topLeft + 2.0 * top + topRight);
|
|
36
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CellFilterDisplaced.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/filtering/numeric/util/CellFilterDisplaced.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CellFilterDisplaced.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/filtering/numeric/util/CellFilterDisplaced.js"],"names":[],"mappings":"AAWA;IAQI;;;;;;OAMG;IACH,mCAJW,MAAM,KACN,MAAM,GACL,mBAAmB,CAW9B;IAvBD;;;OAGG;IACH,iBAFU,OAAO,CAEM;CAiC1B;yCAjDwC,wCAAwC;oBAC7D,kCAAkC"}
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
import { CellFilterUnaryOperation } from "../../core/CellFilterUnaryOperation.js";
|
|
2
2
|
import Vector2 from "../../../../core/geom/Vector2.js";
|
|
3
|
+
import { v2_rotate } from "../../../../core/geom/vec2/v2_rotate.js";
|
|
3
4
|
import { assert } from "../../../../core/assert.js";
|
|
4
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Scratch for the rotated offset. Read out before any nested filter call, so it cannot alias.
|
|
8
|
+
* @type {Float64Array}
|
|
9
|
+
*/
|
|
10
|
+
const scratch_offset = new Float64Array(2);
|
|
11
|
+
|
|
5
12
|
export class CellFilterDisplaced extends CellFilterUnaryOperation {
|
|
6
13
|
/**
|
|
7
14
|
* @readonly
|
|
@@ -30,14 +37,12 @@ export class CellFilterDisplaced extends CellFilterUnaryOperation {
|
|
|
30
37
|
|
|
31
38
|
execute(grid, x, y, rotation) {
|
|
32
39
|
|
|
33
|
-
const
|
|
34
|
-
const cos = Math.cos(rotation);
|
|
40
|
+
const offset = this.offset;
|
|
35
41
|
|
|
36
|
-
|
|
37
|
-
const local_y = this.offset.y;
|
|
42
|
+
v2_rotate(scratch_offset, 0, offset.x, offset.y, rotation);
|
|
38
43
|
|
|
39
|
-
const rotated_local_x =
|
|
40
|
-
const rotated_local_y =
|
|
44
|
+
const rotated_local_x = scratch_offset[0];
|
|
45
|
+
const rotated_local_y = scratch_offset[1];
|
|
41
46
|
|
|
42
47
|
return this.source.execute(grid, x + rotated_local_x, y + rotated_local_y, rotation);
|
|
43
48
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"populateSampler2DFromCellFilter.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/filtering/numeric/util/populateSampler2DFromCellFilter.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"populateSampler2DFromCellFilter.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/filtering/numeric/util/populateSampler2DFromCellFilter.js"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,2FAQC"}
|
|
@@ -1,36 +1,18 @@
|
|
|
1
|
-
import { assert } from "../../../../core/assert.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
*
|
|
6
|
-
* @param {
|
|
7
|
-
* @param {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
assert.defined(
|
|
12
|
-
assert.defined(
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
const result_height = result.height;
|
|
21
|
-
|
|
22
|
-
for (let y = 0; y < result_height; y++) {
|
|
23
|
-
|
|
24
|
-
const grid_y = y / scale_y;
|
|
25
|
-
|
|
26
|
-
for (let x = 0; x < result.width; x++) {
|
|
27
|
-
|
|
28
|
-
const grid_x = x / scale_x;
|
|
29
|
-
|
|
30
|
-
const filterValue = filter.execute(grid, grid_x, grid_y, 0);
|
|
31
|
-
|
|
32
|
-
result.writeChannel(x, y, 0, filterValue);
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
1
|
+
import { assert } from "../../../../core/assert.js";
|
|
2
|
+
import { write_cell_filter_to_sampler2d } from "./write_cell_filter_to_sampler2d.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Utility function, mainly useful for visualizing filter values
|
|
6
|
+
* @param {Sampler2D} result
|
|
7
|
+
* @param {CellFilter} filter
|
|
8
|
+
* @param {GridData} grid
|
|
9
|
+
*/
|
|
10
|
+
export function populateSampler2DFromCellFilter({ result, filter, grid }) {
|
|
11
|
+
assert.defined(result,'result');
|
|
12
|
+
assert.defined(filter,'filter');
|
|
13
|
+
assert.defined(grid,'grid');
|
|
14
|
+
|
|
15
|
+
filter.ensureInitialized(grid, 0);
|
|
16
|
+
|
|
17
|
+
write_cell_filter_to_sampler2d(result, filter, grid);
|
|
18
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rasterize a {@link CellFilter} into channel 0 of a {@link Sampler2D} that covers the whole grid.
|
|
3
|
+
*
|
|
4
|
+
* The sampler may be at a different resolution than the grid; the mapping is the plain ratio
|
|
5
|
+
* (texel t of the result represents grid `t / scale`, see `generation/COORDINATES.md`). That
|
|
6
|
+
* convention is the reason this lives in one place: every rasterization of a filter must agree with
|
|
7
|
+
* it, and a second hand-rolled loop is a second place for it to drift.
|
|
8
|
+
*
|
|
9
|
+
* The filter must already be initialized — this function deliberately does not call
|
|
10
|
+
* `ensureInitialized`, so that callers rasterizing during their own `initialize` (where the source
|
|
11
|
+
* has already been initialized with the real seed) are not forced through a seed-0 re-initialize.
|
|
12
|
+
*
|
|
13
|
+
* The filter is evaluated at rotation 0: a raster covers the grid in grid space, there is no
|
|
14
|
+
* placement orientation to propagate.
|
|
15
|
+
*
|
|
16
|
+
* @param {Sampler2D} result
|
|
17
|
+
* @param {CellFilter} filter
|
|
18
|
+
* @param {GridData} grid
|
|
19
|
+
*/
|
|
20
|
+
export function write_cell_filter_to_sampler2d(result: Sampler2D, filter: CellFilter, grid: GridData): void;
|
|
21
|
+
//# sourceMappingURL=write_cell_filter_to_sampler2d.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write_cell_filter_to_sampler2d.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/filtering/numeric/util/write_cell_filter_to_sampler2d.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AACH,4GAyBC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { assert } from "../../../../core/assert.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Rasterize a {@link CellFilter} into channel 0 of a {@link Sampler2D} that covers the whole grid.
|
|
5
|
+
*
|
|
6
|
+
* The sampler may be at a different resolution than the grid; the mapping is the plain ratio
|
|
7
|
+
* (texel t of the result represents grid `t / scale`, see `generation/COORDINATES.md`). That
|
|
8
|
+
* convention is the reason this lives in one place: every rasterization of a filter must agree with
|
|
9
|
+
* it, and a second hand-rolled loop is a second place for it to drift.
|
|
10
|
+
*
|
|
11
|
+
* The filter must already be initialized — this function deliberately does not call
|
|
12
|
+
* `ensureInitialized`, so that callers rasterizing during their own `initialize` (where the source
|
|
13
|
+
* has already been initialized with the real seed) are not forced through a seed-0 re-initialize.
|
|
14
|
+
*
|
|
15
|
+
* The filter is evaluated at rotation 0: a raster covers the grid in grid space, there is no
|
|
16
|
+
* placement orientation to propagate.
|
|
17
|
+
*
|
|
18
|
+
* @param {Sampler2D} result
|
|
19
|
+
* @param {CellFilter} filter
|
|
20
|
+
* @param {GridData} grid
|
|
21
|
+
*/
|
|
22
|
+
export function write_cell_filter_to_sampler2d(result, filter, grid) {
|
|
23
|
+
assert.defined(result, 'result');
|
|
24
|
+
assert.defined(filter, 'filter');
|
|
25
|
+
assert.defined(grid, 'grid');
|
|
26
|
+
|
|
27
|
+
const result_width = result.width;
|
|
28
|
+
const result_height = result.height;
|
|
29
|
+
|
|
30
|
+
const scale_x = result_width / grid.width;
|
|
31
|
+
const scale_y = result_height / grid.height;
|
|
32
|
+
|
|
33
|
+
for (let y = 0; y < result_height; y++) {
|
|
34
|
+
|
|
35
|
+
const grid_y = y / scale_y;
|
|
36
|
+
|
|
37
|
+
for (let x = 0; x < result_width; x++) {
|
|
38
|
+
|
|
39
|
+
const grid_x = x / scale_x;
|
|
40
|
+
|
|
41
|
+
const filterValue = filter.execute(grid, grid_x, grid_y, 0);
|
|
42
|
+
|
|
43
|
+
result.writeChannel(x, y, 0, filterValue);
|
|
44
|
+
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pick one element out of a set of {@link CellFilter}-weighted alternatives, evaluating each weight
|
|
3
|
+
* at a single grid position.
|
|
4
|
+
*
|
|
5
|
+
* This exists because the weighted-alternative combinator is written once per node hierarchy
|
|
6
|
+
* (`MarkerNodeAction`, `GridCellAction`, ...) and the *shape* of those classes is deliberately
|
|
7
|
+
* duplicated, but the selection *logic* — evaluating the weights, clamping negatives, building the
|
|
8
|
+
* CDF and the "nothing is selectable here" contract — is not, and must stay identical between them.
|
|
9
|
+
*
|
|
10
|
+
* Weight filters are always evaluated at rotation 0: a weight is a property of the position, not of
|
|
11
|
+
* the orientation the alternative will eventually be placed with.
|
|
12
|
+
*
|
|
13
|
+
* @param {function():number} random RNG returning values in [0, 1). Consumed exactly once, and only
|
|
14
|
+
* when at least one element carries positive weight.
|
|
15
|
+
* @param {{weight:CellFilter}[]} elements weighted alternatives, in a stable order
|
|
16
|
+
* @param {GridData} grid
|
|
17
|
+
* @param {number} x
|
|
18
|
+
* @param {number} y
|
|
19
|
+
* @returns {number} index into `elements`, or -1 when every element has zero weight at this
|
|
20
|
+
* position — in which case the caller must select nothing rather than fall back to a uniform pick
|
|
21
|
+
*/
|
|
22
|
+
export function cell_filter_weights_pick(random: () => number, elements: {
|
|
23
|
+
weight: CellFilter;
|
|
24
|
+
}[], grid: GridData, x: number, y: number): number;
|
|
25
|
+
//# sourceMappingURL=cell_filter_weights_pick.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cell_filter_weights_pick.d.ts","sourceRoot":"","sources":["../../../../../src/generation/filtering/util/cell_filter_weights_pick.js"],"names":[],"mappings":"AAaA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,uDATsB,MAAM,YAEjB;IAAC,MAAM,aAAW;CAAC,EAAE,qBAErB,MAAM,KACN,MAAM,GACJ,MAAM,CAsBlB"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { random_pick_weighted_index } from "../../../core/math/random/random_pick_weighted_index.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Cumulative (inclusive prefix-sum) weight scratch.
|
|
5
|
+
*
|
|
6
|
+
* Shared across all callers because the pick is a single synchronous span: the weights are produced
|
|
7
|
+
* by {@link CellFilter#execute}, which evaluates the filter graph only and cannot re-enter an
|
|
8
|
+
* action, and the selected action is invoked after the pick has returned.
|
|
9
|
+
*
|
|
10
|
+
* @type {number[]}
|
|
11
|
+
*/
|
|
12
|
+
const cumulative_weights = [];
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Pick one element out of a set of {@link CellFilter}-weighted alternatives, evaluating each weight
|
|
16
|
+
* at a single grid position.
|
|
17
|
+
*
|
|
18
|
+
* This exists because the weighted-alternative combinator is written once per node hierarchy
|
|
19
|
+
* (`MarkerNodeAction`, `GridCellAction`, ...) and the *shape* of those classes is deliberately
|
|
20
|
+
* duplicated, but the selection *logic* — evaluating the weights, clamping negatives, building the
|
|
21
|
+
* CDF and the "nothing is selectable here" contract — is not, and must stay identical between them.
|
|
22
|
+
*
|
|
23
|
+
* Weight filters are always evaluated at rotation 0: a weight is a property of the position, not of
|
|
24
|
+
* the orientation the alternative will eventually be placed with.
|
|
25
|
+
*
|
|
26
|
+
* @param {function():number} random RNG returning values in [0, 1). Consumed exactly once, and only
|
|
27
|
+
* when at least one element carries positive weight.
|
|
28
|
+
* @param {{weight:CellFilter}[]} elements weighted alternatives, in a stable order
|
|
29
|
+
* @param {GridData} grid
|
|
30
|
+
* @param {number} x
|
|
31
|
+
* @param {number} y
|
|
32
|
+
* @returns {number} index into `elements`, or -1 when every element has zero weight at this
|
|
33
|
+
* position — in which case the caller must select nothing rather than fall back to a uniform pick
|
|
34
|
+
*/
|
|
35
|
+
export function cell_filter_weights_pick(random, elements, grid, x, y) {
|
|
36
|
+
|
|
37
|
+
const n = elements.length;
|
|
38
|
+
|
|
39
|
+
let totalWeight = 0;
|
|
40
|
+
|
|
41
|
+
for (let i = 0; i < n; i++) {
|
|
42
|
+
|
|
43
|
+
const weightValue = elements[i].weight.execute(grid, x, y, 0);
|
|
44
|
+
|
|
45
|
+
if (weightValue > 0) {
|
|
46
|
+
//if the weight is negative, we clamp it to 0
|
|
47
|
+
totalWeight += weightValue;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
cumulative_weights[i] = totalWeight;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return random_pick_weighted_index(random, cumulative_weights, n);
|
|
54
|
+
}
|