@woosh/meep-engine 2.155.0 → 2.157.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -4
- package/build/bundle-worker-image-decoder.js +1 -1
- package/build/bundle-worker-terrain.js +1 -1
- package/editor/view/ecs/ComponentControlView.d.ts +0 -9
- package/editor/view/ecs/ComponentControlView.js +2 -98
- package/editor/view/ecs/components/common/AutoCanvasView.js +100 -53
- package/editor/view/ecs/components/common/TextController.js +59 -0
- package/editor/view/node-graph/NodeGraphCamera.js +90 -0
- package/editor/view/node-graph/NodeGraphEditorView.js +121 -22
- package/editor/view/node-graph/NodeGraphSelection.js +89 -0
- package/editor/view/node-graph/NodeGraphView.js +669 -453
- package/editor/view/node-graph/NodeView.js +211 -135
- package/editor/view/node-graph/actions/ConnectionCreateAction.js +53 -0
- package/editor/view/node-graph/actions/ConnectionDeleteAction.js +36 -0
- package/editor/view/node-graph/actions/NodeDeleteAction.js +88 -0
- package/editor/view/node-graph/actions/NodeParameterSetAction.js +52 -0
- package/editor/view/node-graph/actions/NodesMoveAction.js +41 -0
- package/editor/view/node-graph/actions/SelectionSetAction.js +60 -0
- package/editor/view/node-graph/connection_wire_geometry.js +107 -0
- package/package.json +1 -1
- package/samples/generation/SampleGenerator0.js +8 -1
- package/src/core/binary/32BitEncoder.js +1 -1
- package/src/core/binary/reinterpret_float32_as_uint32.d.ts +7 -0
- package/src/core/binary/reinterpret_float32_as_uint32.d.ts.map +1 -0
- package/src/core/binary/reinterpret_float32_as_uint32.js +13 -0
- package/src/core/binary/reinterpret_uint32_as_float32.d.ts +7 -0
- package/src/core/binary/reinterpret_uint32_as_float32.d.ts.map +1 -0
- package/src/core/binary/reinterpret_uint32_as_float32.js +14 -0
- package/src/core/binary/to_half_float_uint16.js +3 -3
- package/src/core/bvh2/bvh3/ebvh_build_for_geometry_incremental.d.ts.map +1 -1
- package/src/core/bvh2/bvh3/ebvh_build_for_geometry_incremental.js +1 -3
- package/src/core/bvh2/bvh3/ebvh_build_hierarchy_radix.d.ts.map +1 -1
- package/src/core/bvh2/bvh3/ebvh_build_hierarchy_radix.js +275 -253
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_overlaps_sphere.d.ts +12 -0
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_overlaps_sphere.d.ts.map +1 -0
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_overlaps_sphere.js +92 -0
- package/src/core/bvh8/BVH8.d.ts +127 -0
- package/src/core/bvh8/BVH8.d.ts.map +1 -0
- package/src/core/bvh8/BVH8.js +436 -0
- package/src/core/bvh8/NOTES.md +63 -0
- package/src/core/bvh8/build/BVH8Converter.d.ts +59 -0
- package/src/core/bvh8/build/BVH8Converter.d.ts.map +1 -0
- package/src/core/bvh8/build/BVH8Converter.js +588 -0
- package/src/core/bvh8/build/NodeProxy.d.ts +66 -0
- package/src/core/bvh8/build/NodeProxy.d.ts.map +1 -0
- package/src/core/bvh8/build/NodeProxy.js +308 -0
- package/src/core/bvh8/build/TriangleCluster.d.ts +29 -0
- package/src/core/bvh8/build/TriangleCluster.d.ts.map +1 -0
- package/src/core/bvh8/build/TriangleCluster.js +123 -0
- package/src/core/bvh8/build/aabb3_compute_merge_cost.d.ts +8 -0
- package/src/core/bvh8/build/aabb3_compute_merge_cost.d.ts.map +1 -0
- package/src/core/bvh8/build/aabb3_compute_merge_cost.js +29 -0
- package/src/core/bvh8/build/aabb3_from_triangle_by_index.d.ts +10 -0
- package/src/core/bvh8/build/aabb3_from_triangle_by_index.d.ts.map +1 -0
- package/src/core/bvh8/build/aabb3_from_triangle_by_index.js +18 -0
- package/src/core/bvh8/build/bvh8_build_for_geometry.d.ts +10 -0
- package/src/core/bvh8/build/bvh8_build_for_geometry.d.ts.map +1 -0
- package/src/core/bvh8/build/bvh8_build_for_geometry.js +303 -0
- package/src/core/bvh8/build/bvh8_from_proxy.d.ts +9 -0
- package/src/core/bvh8/build/bvh8_from_proxy.d.ts.map +1 -0
- package/src/core/bvh8/build/bvh8_from_proxy.js +256 -0
- package/src/core/bvh8/build/byte.d.ts +7 -0
- package/src/core/bvh8/build/byte.d.ts.map +1 -0
- package/src/core/bvh8/build/byte.js +10 -0
- package/src/core/bvh8/build/encode_bounds_e.d.ts +9 -0
- package/src/core/bvh8/build/encode_bounds_e.d.ts.map +1 -0
- package/src/core/bvh8/build/encode_bounds_e.js +12 -0
- package/src/core/bvh8/bvh8_convert_to_dot.d.ts +11 -0
- package/src/core/bvh8/bvh8_convert_to_dot.d.ts.map +1 -0
- package/src/core/bvh8/bvh8_convert_to_dot.js +133 -0
- package/src/core/bvh8/bvh8_count_primitives.d.ts +22 -0
- package/src/core/bvh8/bvh8_count_primitives.d.ts.map +1 -0
- package/src/core/bvh8/bvh8_count_primitives.js +98 -0
- package/src/core/bvh8/bvh8_geometry_validate.d.ts +16 -0
- package/src/core/bvh8/bvh8_geometry_validate.d.ts.map +1 -0
- package/src/core/bvh8/bvh8_geometry_validate.js +149 -0
- package/src/core/bvh8/bvh8_geometry_validate_indirect.d.ts +16 -0
- package/src/core/bvh8/bvh8_geometry_validate_indirect.d.ts.map +1 -0
- package/src/core/bvh8/bvh8_geometry_validate_indirect.js +177 -0
- package/src/core/bvh8/bvh8_get_node_bounds.d.ts +9 -0
- package/src/core/bvh8/bvh8_get_node_bounds.d.ts.map +1 -0
- package/src/core/bvh8/bvh8_get_node_bounds.js +35 -0
- package/src/core/bvh8/bvh8_get_node_child_bounds.d.ts +10 -0
- package/src/core/bvh8/bvh8_get_node_child_bounds.d.ts.map +1 -0
- package/src/core/bvh8/bvh8_get_node_child_bounds.js +53 -0
- package/src/core/bvh8/bvh8_node_child_surface_area.d.ts +9 -0
- package/src/core/bvh8/bvh8_node_child_surface_area.d.ts.map +1 -0
- package/src/core/bvh8/bvh8_node_child_surface_area.js +18 -0
- package/src/core/bvh8/bvh8_node_count_triangles.d.ts +8 -0
- package/src/core/bvh8/bvh8_node_count_triangles.d.ts.map +1 -0
- package/src/core/bvh8/bvh8_node_count_triangles.js +28 -0
- package/src/core/bvh8/bvh8_quality.d.ts +8 -0
- package/src/core/bvh8/bvh8_quality.d.ts.map +1 -0
- package/src/core/bvh8/bvh8_quality.js +73 -0
- package/src/core/bvh8/bvh8_validate_structure.d.ts +15 -0
- package/src/core/bvh8/bvh8_validate_structure.d.ts.map +1 -0
- package/src/core/bvh8/bvh8_validate_structure.js +87 -0
- package/src/core/cache/Cache.d.ts.map +1 -1
- package/src/core/cache/Cache.js +7 -0
- package/src/core/cache/FrequencySketch.d.ts.map +1 -1
- package/src/core/cache/FrequencySketch.js +8 -4
- package/src/core/clipboard/obtainClipBoard.d.ts +6 -0
- package/src/core/clipboard/obtainClipBoard.d.ts.map +1 -0
- package/src/core/clipboard/obtainClipBoard.js +29 -0
- package/src/core/clipboard/safeClipboardReadText.d.ts +6 -0
- package/src/core/clipboard/safeClipboardReadText.d.ts.map +1 -0
- package/src/core/clipboard/safeClipboardReadText.js +55 -0
- package/src/core/clipboard/safeClipboardWriteText.d.ts +8 -0
- package/src/core/clipboard/safeClipboardWriteText.d.ts.map +1 -0
- package/src/core/clipboard/safeClipboardWriteText.js +23 -0
- package/src/core/collection/Uint32MinHeap.d.ts +56 -0
- package/src/core/collection/Uint32MinHeap.d.ts.map +1 -0
- package/src/core/collection/Uint32MinHeap.js +109 -0
- package/src/core/collection/array/array_quick_sort_by_lookup_map.js +1 -1
- package/src/core/collection/array/array_set_diff_sorting.d.ts.map +1 -1
- package/src/core/collection/array/array_set_diff_sorting.js +4 -1
- package/src/core/collection/array/array_shuffle.d.ts.map +1 -1
- package/src/core/collection/array/array_shuffle.js +30 -27
- package/src/core/collection/array/binarySearchLowIndex.d.ts.map +1 -1
- package/src/core/collection/array/binarySearchLowIndex.js +4 -3
- package/src/core/collection/array/typed/array_buffer_hash.js +1 -1
- package/src/core/collection/array/typed/is_typed_array_equals.d.ts.map +1 -1
- package/src/core/collection/array/typed/is_typed_array_equals.js +12 -2
- package/src/core/collection/heap/BinaryHeap.d.ts.map +1 -1
- package/src/core/collection/heap/BinaryHeap.js +12 -2
- package/src/core/collection/list/FilteredListProjection.js +1 -1
- package/src/core/collection/queue/Deque.d.ts.map +1 -1
- package/src/core/collection/queue/Deque.js +10 -8
- package/src/core/collection/table/RowFirstTable.d.ts.map +1 -1
- package/src/core/collection/table/RowFirstTable.js +4 -2
- package/src/core/collection/table/RowFirstTableSpec.js +2 -2
- package/src/{engine/physics/island → core/collection/union-find}/union_find.d.ts +8 -5
- package/src/core/collection/union-find/union_find.d.ts.map +1 -0
- package/src/{engine/physics/island → core/collection/union-find}/union_find.js +8 -5
- package/src/core/color/operations/color_lerp.d.ts.map +1 -1
- package/src/core/color/operations/color_lerp.js +10 -3
- package/src/core/color/rgb2uint32.js +1 -1
- package/src/core/color/rgbe9995_to_rgb.js +1 -1
- package/src/core/dom/isImageBitmap.d.ts +7 -0
- package/src/core/dom/isImageBitmap.d.ts.map +1 -0
- package/src/core/dom/isImageBitmap.js +12 -0
- package/src/core/function/frameThrottle.d.ts +8 -0
- package/src/core/function/frameThrottle.d.ts.map +1 -0
- package/src/core/function/frameThrottle.js +23 -0
- package/src/core/function/objectsEqual.d.ts.map +1 -1
- package/src/core/function/objectsEqual.js +2 -1
- package/src/core/geom/2d/aabb/AABB2.d.ts.map +1 -1
- package/src/core/geom/2d/aabb/AABB2.js +12 -11
- package/src/core/geom/2d/convex-hull/convex_hull_jarvis_2d.d.ts.map +1 -1
- package/src/core/geom/2d/convex-hull/convex_hull_jarvis_2d.js +30 -4
- package/src/core/geom/2d/convex-hull/fixed_convex_hull_relaxation.d.ts.map +1 -1
- package/src/core/geom/2d/convex-hull/fixed_convex_hull_relaxation.js +6 -2
- package/src/core/geom/2d/hash-grid/SpatialHashGrid.d.ts.map +1 -1
- package/src/core/geom/2d/hash-grid/SpatialHashGrid.js +388 -386
- package/src/core/geom/2d/hash-grid/shg_query_elements_line.d.ts.map +1 -1
- package/src/core/geom/2d/hash-grid/shg_query_elements_line.js +8 -3
- package/src/{engine/physics/narrowphase/clip_against_axis_uv.d.ts → core/geom/2d/polygon/polygon2_clip_axis_halfplane.d.ts} +3 -3
- package/src/core/geom/2d/polygon/polygon2_clip_axis_halfplane.d.ts.map +1 -0
- package/src/{engine/physics/narrowphase/clip_against_axis_uv.js → core/geom/2d/polygon/polygon2_clip_axis_halfplane.js} +51 -51
- package/src/core/geom/2d/quad-tree/QuadTreeDatum.d.ts.map +1 -1
- package/src/core/geom/2d/quad-tree/QuadTreeDatum.js +9 -1
- package/src/core/geom/2d/quad-tree/qt_query_data_nearest_to_point.d.ts +3 -1
- package/src/core/geom/2d/quad-tree/qt_query_data_nearest_to_point.d.ts.map +1 -1
- package/src/core/geom/2d/quad-tree/qt_query_data_nearest_to_point.js +3 -1
- package/src/core/geom/2d/quad-tree-binary/QuadTree.js +714 -714
- package/src/core/geom/2d/r-tree/StaticR2Tree.d.ts.map +1 -1
- package/src/core/geom/2d/r-tree/StaticR2Tree.js +5 -4
- package/src/core/geom/3d/aabb/aabb3_detailed_volume_intersection.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/aabb3_detailed_volume_intersection.js +33 -29
- package/src/core/geom/3d/aabb/aabb3_near_distance_to_intersection_ray_segment.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/aabb3_near_distance_to_intersection_ray_segment.js +3 -1
- package/src/core/geom/3d/aabb/aabb3_signed_distance_to_aabb3.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/aabb3_signed_distance_to_aabb3.js +10 -7
- package/src/{engine/physics/narrowphase/decomposition/aabb_world_to_local.d.ts → core/geom/3d/aabb/aabb3_transform_oriented_inverse.d.ts} +9 -7
- package/src/core/geom/3d/aabb/aabb3_transform_oriented_inverse.d.ts.map +1 -0
- package/src/{engine/physics/narrowphase/decomposition/aabb_world_to_local.js → core/geom/3d/aabb/aabb3_transform_oriented_inverse.js} +9 -7
- package/src/core/geom/3d/aabb/aabb3_transformed_compute_plane_side.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/aabb3_transformed_compute_plane_side.js +30 -9
- package/src/core/geom/3d/aabb/compute_aabb_from_points.js +3 -3
- package/src/core/geom/3d/aabb/compute_triangle_group_aabb3.d.ts +12 -0
- package/src/core/geom/3d/aabb/compute_triangle_group_aabb3.d.ts.map +1 -0
- package/src/core/geom/3d/aabb/compute_triangle_group_aabb3.js +46 -0
- package/src/core/geom/3d/box/box3_projected_half_extent.d.ts +28 -0
- package/src/core/geom/3d/box/box3_projected_half_extent.d.ts.map +1 -0
- package/src/core/geom/3d/box/box3_projected_half_extent.js +35 -0
- package/src/core/geom/3d/box/box3_raycast.d.ts +37 -0
- package/src/core/geom/3d/box/box3_raycast.d.ts.map +1 -0
- package/src/core/geom/3d/box/box3_raycast.js +81 -0
- package/src/core/geom/3d/capsule/capsule_raycast.d.ts +35 -0
- package/src/core/geom/3d/capsule/capsule_raycast.d.ts.map +1 -0
- package/src/core/geom/3d/capsule/capsule_raycast.js +93 -0
- package/src/core/geom/3d/cone/compute_bounding_cone_of_2_cones.d.ts.map +1 -1
- package/src/core/geom/3d/cone/compute_bounding_cone_of_2_cones.js +4 -0
- package/src/core/geom/3d/frustum/frustum3_computeNearestPointToPoint.js +1 -1
- package/src/core/geom/3d/frustum/read_cluster_frustum_corners.js +1 -1
- package/src/core/geom/3d/frustum/read_frustum_corner.d.ts +9 -0
- package/src/core/geom/3d/frustum/read_frustum_corner.d.ts.map +1 -0
- package/src/core/geom/3d/frustum/read_frustum_corner.js +14 -0
- package/src/core/geom/3d/gjk/gjk.d.ts.map +1 -0
- package/src/{engine/physics → core/geom/3d}/gjk/gjk.js +430 -372
- package/src/{engine/physics → core/geom/3d}/gjk/gjk_epa_penetration.d.ts +8 -5
- package/src/core/geom/3d/gjk/gjk_epa_penetration.d.ts.map +1 -0
- package/src/{engine/physics → core/geom/3d}/gjk/gjk_epa_penetration.js +520 -548
- package/src/{engine/physics → core/geom/3d}/gjk/minkowski_support.d.ts +5 -4
- package/src/core/geom/3d/gjk/minkowski_support.d.ts.map +1 -0
- package/src/{engine/physics → core/geom/3d}/gjk/minkowski_support.js +71 -70
- package/src/{engine/physics → core/geom/3d}/gjk/mpr.d.ts +3 -3
- package/src/core/geom/3d/gjk/mpr.d.ts.map +1 -0
- package/src/{engine/physics → core/geom/3d}/gjk/mpr.js +368 -362
- package/src/core/geom/3d/line/line3_compute_segment_point_distance_eikonal.d.ts.map +1 -1
- package/src/core/geom/3d/line/line3_compute_segment_point_distance_eikonal.js +3 -2
- package/src/core/geom/3d/mat4/decompose_matrix_4_array.d.ts.map +1 -1
- package/src/core/geom/3d/mat4/decompose_matrix_4_array.js +12 -2
- package/src/core/geom/3d/mat4/eulerAnglesFromMatrix.js +2 -2
- package/src/core/geom/3d/mat4/m4_multiply_alphatensor.d.ts +1 -1
- package/src/core/geom/3d/mat4/m4_multiply_alphatensor.d.ts.map +1 -1
- package/src/core/geom/3d/mat4/m4_multiply_alphatensor.js +19 -13
- package/src/core/geom/3d/octahedra/octahedral_direction_to_uv.d.ts.map +1 -1
- package/src/core/geom/3d/octahedra/octahedral_direction_to_uv.js +3 -2
- package/src/core/geom/3d/plane/plane3_compute_plane_intersection.js +3 -2
- package/src/{engine/physics/integration/quat_integrate.d.ts → core/geom/3d/quaternion/quat3_integrate.d.ts} +2 -2
- package/src/core/geom/3d/quaternion/quat3_integrate.d.ts.map +1 -0
- package/src/{engine/physics/integration/quat_integrate.js → core/geom/3d/quaternion/quat3_integrate.js} +1 -1
- package/src/core/geom/3d/shape/MeshShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/MeshShape3D.js +7 -0
- package/src/{engine/physics/narrowphase/PosedShape.d.ts → core/geom/3d/shape/PosedShape3D.d.ts} +9 -8
- package/src/{engine/physics/narrowphase/PosedShape.d.ts.map → core/geom/3d/shape/PosedShape3D.d.ts.map} +1 -1
- package/src/{engine/physics/narrowphase/PosedShape.js → core/geom/3d/shape/PosedShape3D.js} +10 -9
- package/src/core/geom/3d/shape/TransformedShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/TransformedShape3D.js +15 -11
- package/src/core/geom/3d/shape/UnionShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/UnionShape3D.js +3 -2
- package/src/core/geom/3d/shape/util/shape3d_voxelize_to_grid.d.ts.map +1 -1
- package/src/core/geom/3d/shape/util/shape3d_voxelize_to_grid.js +153 -148
- package/src/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.d.ts.map +1 -1
- package/src/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.js +7 -0
- package/src/core/geom/3d/sphere/harmonics/sh3_sample_by_direction.d.ts.map +1 -1
- package/src/core/geom/3d/sphere/harmonics/sh3_sample_by_direction.js +13 -10
- package/src/core/geom/3d/sphere/sphere_projected_sphere_radius_sqr.d.ts +1 -1
- package/src/core/geom/3d/sphere/sphere_projected_sphere_radius_sqr.js +2 -2
- package/src/core/geom/3d/sphere/sphere_raycast.d.ts +33 -0
- package/src/core/geom/3d/sphere/sphere_raycast.d.ts.map +1 -0
- package/src/core/geom/3d/sphere/sphere_raycast.js +47 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_tet_get_neighbours.d.ts +24 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_tet_get_neighbours.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_tet_get_neighbours.js +39 -0
- package/src/core/geom/3d/tetrahedra/triangle/trace_triangular_depth_map.d.ts.map +1 -1
- package/src/core/geom/3d/tetrahedra/triangle/trace_triangular_depth_map.js +4 -2
- package/src/core/geom/3d/topology/bounds/computeTriangleClusterNormalBoundingCone.js +3 -3
- package/src/core/geom/3d/topology/simplify/decimate_edge_collapse_snap.js +1 -1
- package/src/core/geom/3d/topology/tm_vertex_compute_normal.d.ts.map +1 -1
- package/src/core/geom/3d/topology/tm_vertex_compute_normal.js +4 -2
- package/src/core/geom/3d/util/make_justified_point_grid.d.ts.map +1 -1
- package/src/core/geom/3d/util/make_justified_point_grid.js +18 -10
- package/src/core/geom/ConicRay.d.ts.map +1 -1
- package/src/core/geom/ConicRay.js +11 -13
- package/src/core/geom/packing/max-rect/removeRedundantBoxes.d.ts.map +1 -1
- package/src/core/geom/packing/max-rect/removeRedundantBoxes.js +19 -4
- package/src/core/geom/vec3/v3_orthonormal_matrix_from_normal.d.ts.map +1 -0
- package/src/{engine/graphics/sh3/path_tracer/sampling → core/geom/vec3}/v3_orthonormal_matrix_from_normal.js +1 -1
- package/src/core/geom/vec3/v3_quat3_apply_inverse.d.ts +1 -1
- package/src/core/geom/vec3/v3_quat3_apply_inverse.js +1 -1
- package/src/core/graph/coloring/colorizeGraph.js +2 -2
- package/src/core/graph/csr/CSRGraph.d.ts.map +1 -1
- package/src/core/graph/csr/CSRGraph.js +325 -319
- package/src/core/graph/layout/CircleLayout.d.ts.map +1 -1
- package/src/core/graph/layout/CircleLayout.js +8 -6
- package/src/core/graph/metis/native/refine/compute_kway_params.d.ts.map +1 -1
- package/src/core/graph/metis/native/refine/compute_kway_params.js +139 -138
- package/src/core/graph/mn_graph_coarsen.d.ts.map +1 -1
- package/src/core/graph/mn_graph_coarsen.js +4 -2
- package/src/core/graph/v2/NodeContainer.js +7 -7
- package/src/core/localization/LocalizationEngine.js +1 -1
- package/src/core/math/bell_membership_function.d.ts.map +1 -1
- package/src/core/math/bell_membership_function.js +3 -1
- package/src/core/math/complex/complex_add.d.ts +4 -4
- package/src/core/math/complex/complex_add.d.ts.map +1 -1
- package/src/core/math/complex/complex_add.js +14 -5
- package/src/core/math/complex/complex_div.d.ts +4 -4
- package/src/core/math/complex/complex_div.d.ts.map +1 -1
- package/src/core/math/complex/complex_div.js +13 -6
- package/src/core/math/complex/complex_mul.d.ts +4 -4
- package/src/core/math/complex/complex_mul.d.ts.map +1 -1
- package/src/core/math/complex/complex_mul.js +12 -5
- package/src/core/math/complex/complex_sub.d.ts +4 -4
- package/src/core/math/complex/complex_sub.d.ts.map +1 -1
- package/src/core/math/complex/complex_sub.js +14 -5
- package/src/core/math/idct_1d.d.ts +4 -4
- package/src/core/math/idct_1d.d.ts.map +1 -1
- package/src/core/math/idct_1d.js +3 -3
- package/src/{engine/physics/fluid/solver/optimal_sor_omega.d.ts → core/math/linalg/sor_optimal_omega.d.ts} +4 -3
- package/src/core/math/linalg/sor_optimal_omega.d.ts.map +1 -0
- package/src/{engine/physics/fluid/solver/optimal_sor_omega.js → core/math/linalg/sor_optimal_omega.js} +4 -3
- package/src/core/math/lookup/ParameterLookupTable.d.ts +123 -0
- package/src/core/math/lookup/ParameterLookupTable.d.ts.map +1 -0
- package/src/core/math/lookup/ParameterLookupTable.js +495 -0
- package/src/core/math/lookup/ParameterLookupTableFlags.d.ts +5 -0
- package/src/core/math/lookup/ParameterLookupTableFlags.d.ts.map +1 -0
- package/src/core/math/lookup/ParameterLookupTableFlags.js +6 -0
- package/src/core/math/noise/create_simplex_noise_2d.d.ts.map +1 -1
- package/src/core/math/noise/create_simplex_noise_2d.js +4 -2
- package/src/core/math/noise/sdnoise.d.ts.map +1 -1
- package/src/core/math/noise/sdnoise.js +12 -9
- package/src/core/math/physics/kinematics/computeInterceptPoint.d.ts.map +1 -0
- package/src/{engine/physics → core/math/physics/kinematics}/computeInterceptPoint.js +79 -79
- package/src/core/math/physics/mie/compute_bhmie_optical_properties.d.ts.map +1 -1
- package/src/core/math/physics/mie/compute_bhmie_optical_properties.js +94 -50
- package/src/core/math/physics/mie/lorenz_mie_coefs.d.ts +3 -6
- package/src/core/math/physics/mie/lorenz_mie_coefs.d.ts.map +1 -1
- package/src/core/math/physics/mie/lorenz_mie_coefs.js +180 -157
- package/src/core/math/physics/mie/mie_ab_to_optical_properties.d.ts +3 -4
- package/src/core/math/physics/mie/mie_ab_to_optical_properties.d.ts.map +1 -1
- package/src/core/math/physics/mie/mie_ab_to_optical_properties.js +47 -21
- package/src/core/math/physics/mie/ri_air.d.ts.map +1 -1
- package/src/core/math/physics/mie/ri_air.js +1 -3
- package/src/core/math/physics/mie/ri_ammonium_sulfate.d.ts.map +1 -1
- package/src/core/math/physics/mie/ri_ammonium_sulfate.js +1 -3
- package/src/core/math/physics/mie/ri_brine.d.ts.map +1 -1
- package/src/core/math/physics/mie/ri_brine.js +1 -3
- package/src/core/math/physics/mie/ri_dust.d.ts.map +1 -1
- package/src/core/math/physics/mie/ri_dust.js +1 -3
- package/src/core/math/physics/mie/ri_pollen.d.ts.map +1 -1
- package/src/core/math/physics/mie/ri_pollen.js +1 -3
- package/src/core/math/physics/mie/ri_smoke.d.ts.map +1 -1
- package/src/core/math/physics/mie/ri_smoke.js +1 -3
- package/src/core/math/physics/mie/ri_soot.d.ts.map +1 -1
- package/src/core/math/physics/mie/ri_soot.js +1 -3
- package/src/core/math/physics/mie/ri_water.d.ts.map +1 -1
- package/src/core/math/physics/mie/ri_water.js +1 -3
- package/src/core/math/random/randomIntegerBetween.d.ts.map +1 -1
- package/src/core/math/random/randomIntegerBetween.js +4 -1
- package/src/core/math/random/random_pick_weighted_index.d.ts +10 -0
- package/src/core/math/random/random_pick_weighted_index.d.ts.map +1 -0
- package/src/core/math/random/random_pick_weighted_index.js +26 -0
- package/src/core/math/solveCubic.d.ts.map +1 -1
- package/src/core/math/solveCubic.js +95 -82
- package/src/core/math/spline/computeCatmullRomSplineUniformDistance.d.ts.map +1 -1
- package/src/core/math/spline/computeCatmullRomSplineUniformDistance.js +13 -0
- package/src/core/math/statistics/softmax.js +1 -1
- package/src/core/model/node-graph/NodeGraph.d.ts +9 -0
- package/src/core/model/node-graph/NodeGraph.d.ts.map +1 -1
- package/src/core/model/node-graph/NodeGraph.js +38 -0
- package/src/core/model/node-graph/visual/NodeGraphVisualData.d.ts +24 -0
- package/src/core/model/node-graph/visual/NodeGraphVisualData.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/NodeGraphVisualData.js +56 -1
- package/src/core/model/node-graph/visual/NodeVisualData.js +1 -1
- package/src/core/model/object/ImmutableObjectPool.d.ts +7 -0
- package/src/core/model/object/ImmutableObjectPool.d.ts.map +1 -1
- package/src/core/model/object/ImmutableObjectPool.js +20 -10
- package/src/core/model/reactive/evaluation/MultiPredicateEvaluator.d.ts.map +1 -1
- package/src/core/model/reactive/evaluation/MultiPredicateEvaluator.js +39 -2
- package/src/core/model/reactive/model/terminal/ReactiveReference.d.ts.map +1 -1
- package/src/core/model/reactive/model/terminal/ReactiveReference.js +2 -0
- package/src/core/parser/simple/readHexToken.d.ts.map +1 -1
- package/src/core/parser/simple/readHexToken.js +6 -0
- package/src/core/path/convertPathToURL.d.ts +9 -0
- package/src/core/path/convertPathToURL.d.ts.map +1 -0
- package/src/core/path/convertPathToURL.js +107 -0
- package/src/core/primitives/numbers/number_pretty_print.d.ts.map +1 -1
- package/src/core/primitives/numbers/number_pretty_print.js +4 -1
- package/src/core/primitives/strings/string_jaro_winkler.js +1 -1
- package/src/core/process/CompositeProcess.js +1 -1
- package/src/core/process/executor/ConcurrentExecutor.d.ts.map +1 -1
- package/src/core/process/executor/ConcurrentExecutor.js +3 -2
- package/src/core/process/task/util/randomCountTask.d.ts.map +1 -1
- package/src/core/process/task/util/randomCountTask.js +3 -1
- package/src/core/process/undo/ActionProcessor.d.ts.map +1 -1
- package/src/core/process/undo/ActionProcessor.js +5 -3
- package/src/core/process/worker/WorkerBuilder.js +4 -4
- package/src/core/process/worker/extractTransferables.js +1 -1
- package/src/engine/animation/curve/AnimationCurve.d.ts.map +1 -1
- package/src/engine/animation/curve/AnimationCurve.js +4 -2
- package/src/engine/animation/curve/draw/build_tangent_editor.d.ts.map +1 -1
- package/src/engine/animation/curve/draw/build_tangent_editor.js +8 -1
- package/src/engine/animation/curve/editor/createKeyframeDraggableAspect.d.ts.map +1 -1
- package/src/engine/animation/curve/editor/createKeyframeDraggableAspect.js +11 -5
- package/src/engine/asset/Asset.d.ts.map +1 -1
- package/src/engine/asset/Asset.js +16 -6
- package/src/engine/asset/AssetManager.d.ts +61 -52
- package/src/engine/asset/AssetManager.d.ts.map +1 -1
- package/src/engine/asset/AssetManager.js +1411 -1045
- package/src/engine/asset/AssetRequest.d.ts +1 -1
- package/src/engine/asset/AssetRequest.d.ts.map +1 -1
- package/src/engine/asset/AssetRequest.js +1 -1
- package/src/engine/asset/AssetRequestScope.d.ts.map +1 -1
- package/src/engine/asset/AssetRequestScope.js +7 -0
- package/src/engine/asset/PendingAsset.d.ts +32 -1
- package/src/engine/asset/PendingAsset.d.ts.map +1 -1
- package/src/engine/asset/PendingAsset.js +108 -61
- package/src/engine/asset/loaders/ArrayBufferLoader.js +2 -2
- package/src/engine/asset/loaders/AssetLoader.d.ts.map +1 -1
- package/src/engine/asset/loaders/AssetLoader.js +19 -2
- package/src/engine/asset/loaders/GLTFAssetLoader.d.ts.map +1 -1
- package/src/engine/asset/loaders/GLTFAssetLoader.js +123 -114
- package/src/engine/asset/loaders/JavascriptAssetLoader.d.ts +1 -1
- package/src/engine/asset/loaders/JavascriptAssetLoader.d.ts.map +1 -1
- package/src/engine/asset/loaders/JavascriptAssetLoader.js +31 -47
- package/src/engine/asset/loaders/JsonAssetLoader.js +1 -1
- package/src/engine/asset/loaders/SVGAssetLoader.js +2 -2
- package/src/engine/asset/loaders/SoundAssetLoader.js +1 -1
- package/src/engine/asset/loaders/TextAssetLoader.js +2 -2
- package/src/{core → engine/asset/loaders}/font/FontAsset.d.ts +1 -1
- package/src/engine/asset/loaders/font/FontAsset.d.ts.map +1 -0
- package/src/{core → engine/asset/loaders}/font/FontAsset.js +21 -21
- package/src/{core → engine/asset/loaders}/font/FontAssetLoader.d.ts +1 -1
- package/src/engine/asset/loaders/font/FontAssetLoader.d.ts.map +1 -0
- package/src/{core → engine/asset/loaders}/font/FontAssetLoader.js +20 -20
- package/src/engine/asset/loaders/image/ImageRGBADataLoader.d.ts +1 -1
- package/src/engine/asset/loaders/image/ImageRGBADataLoader.d.ts.map +1 -1
- package/src/engine/asset/loaders/image/ImageRGBADataLoader.js +11 -20
- package/src/engine/asset/loaders/texture/TextureAssetLoader.d.ts.map +1 -1
- package/src/engine/asset/loaders/texture/TextureAssetLoader.js +8 -2
- package/src/engine/asset/preloader/AssetPreloader.js +1 -1
- package/src/engine/control/first-person/DESIGN.md +1 -1
- package/src/engine/control/first-person/FirstPersonMotionPhase.d.ts +55 -0
- package/src/engine/control/first-person/FirstPersonMotionPhase.d.ts.map +1 -0
- package/src/engine/control/first-person/FirstPersonMotionPhase.js +134 -0
- package/src/engine/control/first-person/FirstPersonPlayerController.d.ts +23 -2
- package/src/engine/control/first-person/FirstPersonPlayerController.d.ts.map +1 -1
- package/src/engine/control/first-person/FirstPersonPlayerController.js +1 -1
- package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.d.ts +168 -0
- package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.d.ts.map +1 -1
- package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.js +115 -0
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts +71 -0
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts.map +1 -1
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.js +255 -55
- package/src/engine/control/first-person/abilities/LedgeGrab.d.ts +82 -43
- package/src/engine/control/first-person/abilities/LedgeGrab.d.ts.map +1 -1
- package/src/engine/control/first-person/abilities/LedgeGrab.js +405 -213
- package/src/engine/control/first-person/abilities/Mantle.d.ts +6 -0
- package/src/engine/control/first-person/abilities/Mantle.d.ts.map +1 -1
- package/src/engine/control/first-person/abilities/Mantle.js +104 -45
- package/src/engine/control/first-person/abilities/ScrambleUp.d.ts +61 -0
- package/src/engine/control/first-person/abilities/ScrambleUp.d.ts.map +1 -0
- package/src/engine/control/first-person/abilities/ScrambleUp.js +182 -0
- package/src/engine/control/first-person/math/jumpDynamics.d.ts +84 -0
- package/src/engine/control/first-person/math/jumpDynamics.d.ts.map +1 -0
- package/src/engine/control/first-person/math/jumpDynamics.js +108 -0
- package/src/engine/control/first-person/prototype_first_person_controller.js +45 -1
- package/src/engine/ecs/sockets/serialization/AttachmentSocketsAssetLoader.d.ts +1 -1
- package/src/engine/ecs/sockets/serialization/AttachmentSocketsAssetLoader.d.ts.map +1 -1
- package/src/engine/ecs/sockets/serialization/AttachmentSocketsAssetLoader.js +19 -22
- package/src/engine/graphics/FrameThrottle.d.ts +1 -7
- package/src/engine/graphics/FrameThrottle.d.ts.map +1 -1
- package/src/engine/graphics/FrameThrottle.js +2 -24
- package/src/engine/graphics/camera/testClippingPlaneComputation.js +1 -1
- package/src/{core/geom/3d/shape/util → engine/graphics/debug}/shape_to_visual_entity.d.ts +1 -1
- package/src/engine/graphics/debug/shape_to_visual_entity.d.ts.map +1 -0
- package/src/{core/geom/3d/shape/util → engine/graphics/debug}/shape_to_visual_entity.js +159 -159
- package/src/{core/geom/3d/tetrahedra → engine/graphics/debug}/visualize_tetrahedral_mesh.d.ts +1 -1
- package/src/engine/graphics/debug/visualize_tetrahedral_mesh.d.ts.map +1 -0
- package/src/{core/geom/3d/tetrahedra → engine/graphics/debug}/visualize_tetrahedral_mesh.js +46 -46
- package/src/engine/graphics/ecs/animation/animator/graph/definition/serialization/AnimationGraphDefinitionAssetLoader.d.ts +1 -1
- package/src/engine/graphics/ecs/animation/animator/graph/definition/serialization/AnimationGraphDefinitionAssetLoader.d.ts.map +1 -1
- package/src/engine/graphics/ecs/animation/animator/graph/definition/serialization/AnimationGraphDefinitionAssetLoader.js +22 -32
- package/src/engine/graphics/ecs/path/tube/prototypeAnimatedPathMask.js +1 -1
- package/src/engine/graphics/particles/particular/engine/emitter/serde/ParameterLookupTableSerializationAdapter.d.ts.map +1 -1
- package/src/engine/graphics/particles/particular/engine/emitter/serde/ParameterLookupTableSerializationAdapter.js +2 -76
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTable.d.ts.map +1 -1
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTable.js +2 -427
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTableFlags.d.ts +1 -4
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTableFlags.d.ts.map +1 -1
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTableFlags.js +2 -6
- package/src/engine/graphics/particles/particular/engine/utils/volume/prototypeParticleVolume.js +2 -2
- package/src/engine/graphics/render/buffer/buffers/prototypeNormalFrameBuffer.js +1 -1
- package/src/engine/graphics/render/forward_plus/plugin/ptototypeFPPlugin.js +1 -1
- package/src/engine/graphics/render/forward_plus/read_frustum_corner.d.ts +1 -8
- package/src/engine/graphics/render/forward_plus/read_frustum_corner.d.ts.map +1 -1
- package/src/engine/graphics/render/forward_plus/read_frustum_corner.js +2 -14
- package/src/engine/graphics/render/visibility/hiz/prototypeHiZ.js +1 -1
- package/src/engine/graphics/sh3/path_tracer/geometry/compute_triangle_group_aabb3.d.ts +1 -11
- package/src/engine/graphics/sh3/path_tracer/geometry/compute_triangle_group_aabb3.d.ts.map +1 -1
- package/src/engine/graphics/sh3/path_tracer/geometry/compute_triangle_group_aabb3.js +2 -46
- package/src/engine/graphics/sh3/path_tracer/texture/sample_material.js +1 -1
- package/src/engine/graphics/sh3/prototypeSH3Probe.js +1 -1
- package/src/engine/graphics/shadows/testShadowMapRendering.js +1 -1
- package/src/engine/graphics/texture/3d/scs3d_sample_linear3.d.ts +27 -0
- package/src/engine/graphics/texture/3d/scs3d_sample_linear3.d.ts.map +1 -0
- package/src/engine/graphics/texture/3d/scs3d_sample_linear3.js +81 -0
- package/src/engine/graphics/texture/isImageBitmap.d.ts +1 -6
- package/src/engine/graphics/texture/isImageBitmap.d.ts.map +1 -1
- package/src/engine/graphics/texture/isImageBitmap.js +2 -12
- package/src/{core/process/action → engine/intelligence/behavior/util}/AsynchronousDelayAction.d.ts +2 -2
- package/src/engine/intelligence/behavior/util/AsynchronousDelayAction.d.ts.map +1 -0
- package/src/{core/process/action → engine/intelligence/behavior/util}/AsynchronousDelayAction.js +55 -52
- package/src/engine/network/NetworkSession.d.ts +12 -1
- package/src/engine/network/NetworkSession.d.ts.map +1 -1
- package/src/engine/network/NetworkSession.js +52 -1
- package/src/engine/network/README.md +45 -0
- package/src/engine/network/convertPathToURL.d.ts +1 -8
- package/src/engine/network/convertPathToURL.d.ts.map +1 -1
- package/src/engine/network/convertPathToURL.js +2 -107
- package/src/engine/network/core/quantize/quantize_float.d.ts.map +1 -1
- package/src/engine/network/core/quantize/quantize_float.js +7 -0
- package/src/engine/network/core/quantize/quantize_position.d.ts.map +1 -1
- package/src/engine/network/core/quantize/quantize_position.js +12 -1
- package/src/engine/network/orchestrator/NetworkPeer.d.ts.map +1 -1
- package/src/engine/network/orchestrator/NetworkPeer.js +15 -1
- package/src/engine/network/replication/Replicator.d.ts +8 -0
- package/src/engine/network/replication/Replicator.d.ts.map +1 -1
- package/src/engine/network/replication/Replicator.js +48 -0
- package/src/engine/network/transport/Channel.d.ts.map +1 -1
- package/src/engine/network/transport/Channel.js +46 -12
- package/src/engine/network/transport/ReliableCommandPipeline.d.ts +16 -0
- package/src/engine/network/transport/ReliableCommandPipeline.d.ts.map +1 -1
- package/src/engine/network/transport/ReliableCommandPipeline.js +29 -0
- package/src/engine/network/transport/adapters/NodeUDPTransport.d.ts.map +1 -1
- package/src/engine/network/transport/adapters/NodeUDPTransport.js +7 -1
- package/src/engine/network/transport/fragments/packet_size.d.ts +5 -5
- package/src/engine/network/transport/fragments/packet_size.d.ts.map +1 -1
- package/src/engine/network/transport/fragments/packet_size.js +5 -5
- package/src/engine/physics/BULLET_REVIEW.md +1 -1
- package/src/engine/physics/CONSTRAINT_SOLVER_BENCH_LOG.md +208 -0
- package/src/engine/physics/CONSTRAINT_SOLVER_IMPROVEMENTS_PLAN.md +364 -0
- package/src/engine/physics/JOLT_REVIEW.md +2 -2
- package/src/engine/physics/PLAN.md +1094 -944
- package/src/engine/physics/RAPIER_REVIEW.md +2 -2
- package/src/engine/physics/body/BodyStorage.d.ts +2 -12
- package/src/engine/physics/body/BodyStorage.d.ts.map +1 -1
- package/src/engine/physics/body/BodyStorage.js +406 -452
- package/src/engine/physics/body/SolverBodyState.d.ts.map +1 -1
- package/src/engine/physics/body/SolverBodyState.js +12 -3
- package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts +28 -3
- package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts.map +1 -1
- package/src/engine/physics/broadphase/compute_fat_world_aabb.js +60 -24
- package/src/engine/physics/broadphase/generate_pairs.d.ts +9 -5
- package/src/engine/physics/broadphase/generate_pairs.d.ts.map +1 -1
- package/src/engine/physics/broadphase/generate_pairs.js +52 -37
- package/src/engine/physics/ccd/linear_sweep.d.ts +15 -5
- package/src/engine/physics/ccd/linear_sweep.d.ts.map +1 -1
- package/src/engine/physics/ccd/linear_sweep.js +122 -40
- package/src/engine/physics/constraint/solve_constraints.d.ts +4 -1
- package/src/engine/physics/constraint/solve_constraints.d.ts.map +1 -1
- package/src/engine/physics/constraint/solve_constraints.js +830 -691
- package/src/engine/physics/contact/ManifoldStore.d.ts +91 -16
- package/src/engine/physics/contact/ManifoldStore.d.ts.map +1 -1
- package/src/engine/physics/contact/ManifoldStore.js +204 -60
- package/src/engine/physics/ecs/BodyKind.d.ts +7 -3
- package/src/engine/physics/ecs/BodyKind.d.ts.map +1 -1
- package/src/engine/physics/ecs/BodyKind.js +29 -25
- package/src/engine/physics/ecs/Collider.d.ts +7 -0
- package/src/engine/physics/ecs/Collider.d.ts.map +1 -1
- package/src/engine/physics/ecs/Collider.js +7 -0
- package/src/engine/physics/ecs/ColliderSerializationAdapter.js +1 -1
- package/src/engine/physics/ecs/PhysicsSystem.d.ts +110 -6
- package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
- package/src/engine/physics/ecs/PhysicsSystem.js +2172 -1747
- package/src/engine/physics/ecs/RigidBody.d.ts +20 -5
- package/src/engine/physics/ecs/RigidBody.d.ts.map +1 -1
- package/src/engine/physics/ecs/RigidBody.js +307 -286
- package/src/engine/physics/ecs/RigidBodyFlags.d.ts +6 -3
- package/src/engine/physics/ecs/RigidBodyFlags.d.ts.map +1 -1
- package/src/engine/physics/ecs/RigidBodyFlags.js +31 -28
- package/src/engine/physics/ecs/RigidBodySerializationAdapter.d.ts +12 -4
- package/src/engine/physics/ecs/RigidBodySerializationAdapter.d.ts.map +1 -1
- package/src/engine/physics/ecs/RigidBodySerializationAdapter.js +19 -5
- package/src/engine/physics/ecs/RigidBodySerializationUpgrader_0_1.d.ts +10 -0
- package/src/engine/physics/ecs/RigidBodySerializationUpgrader_0_1.d.ts.map +1 -0
- package/src/engine/physics/ecs/RigidBodySerializationUpgrader_0_1.js +37 -0
- package/src/engine/physics/ecs/find_non_finite_physics_state.d.ts +28 -0
- package/src/engine/physics/ecs/find_non_finite_physics_state.d.ts.map +1 -0
- package/src/engine/physics/ecs/find_non_finite_physics_state.js +76 -0
- package/src/engine/physics/events/ContactEventBuffer.d.ts +11 -0
- package/src/engine/physics/events/ContactEventBuffer.d.ts.map +1 -1
- package/src/engine/physics/events/ContactEventBuffer.js +40 -0
- package/src/engine/physics/events/diff_manifolds.d.ts +30 -13
- package/src/engine/physics/events/diff_manifolds.d.ts.map +1 -1
- package/src/engine/physics/events/diff_manifolds.js +87 -50
- package/src/engine/physics/fluid/FluidField.d.ts +45 -17
- package/src/engine/physics/fluid/FluidField.d.ts.map +1 -1
- package/src/engine/physics/fluid/FluidField.js +53 -23
- package/src/engine/physics/fluid/FluidSimulator.d.ts +141 -5
- package/src/engine/physics/fluid/FluidSimulator.d.ts.map +1 -1
- package/src/engine/physics/fluid/FluidSimulator.js +336 -43
- package/src/engine/physics/fluid/REVIEW_02_PLAN.md +114 -0
- package/src/engine/physics/fluid/ecs/FluidComponent.d.ts +4 -3
- package/src/engine/physics/fluid/ecs/FluidComponent.d.ts.map +1 -1
- package/src/engine/physics/fluid/ecs/FluidComponent.js +4 -3
- package/src/engine/physics/fluid/ecs/FluidSystem.d.ts +3 -3
- package/src/engine/physics/fluid/effector/AmbientWindFluidEffector.d.ts +41 -0
- package/src/engine/physics/fluid/effector/AmbientWindFluidEffector.d.ts.map +1 -0
- package/src/engine/physics/fluid/effector/AmbientWindFluidEffector.js +124 -0
- package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts +27 -8
- package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts.map +1 -1
- package/src/engine/physics/fluid/effector/WakeFluidEffector.js +67 -18
- package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_scalar.d.ts +42 -0
- package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_scalar.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_scalar.js +136 -0
- package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.d.ts +37 -0
- package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.js +169 -0
- package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.d.ts +36 -0
- package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.js +100 -0
- package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.d.ts +6 -0
- package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.js +6 -0
- package/src/engine/physics/fluid/solver/v3_grid_apply_diffusion.d.ts +7 -2
- package/src/engine/physics/fluid/solver/v3_grid_apply_diffusion.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_grid_apply_diffusion.js +17 -12
- package/src/engine/physics/fluid/solver/v3_grid_apply_vorticity_confinement.d.ts +42 -0
- package/src/engine/physics/fluid/solver/v3_grid_apply_vorticity_confinement.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_apply_vorticity_confinement.js +131 -0
- package/src/engine/physics/fluid/solver/v3_grid_compute_solid_neighbour_mask.d.ts +32 -22
- package/src/engine/physics/fluid/solver/v3_grid_compute_solid_neighbour_mask.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_grid_compute_solid_neighbour_mask.js +43 -26
- package/src/engine/physics/fluid/solver/v3_grid_patch_edges_constant.d.ts +31 -0
- package/src/engine/physics/fluid/solver/v3_grid_patch_edges_constant.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_patch_edges_constant.js +77 -0
- package/src/engine/physics/fluid/solver/v3_grid_solve_pressure.d.ts +26 -19
- package/src/engine/physics/fluid/solver/v3_grid_solve_pressure.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_grid_solve_pressure.js +46 -42
- package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_pcg.d.ts +38 -10
- package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_pcg.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_pcg.js +158 -75
- package/src/engine/physics/fluid/solver/v3_grid_subtract_pressure_gradient.d.ts +22 -17
- package/src/engine/physics/fluid/solver/v3_grid_subtract_pressure_gradient.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_grid_subtract_pressure_gradient.js +108 -96
- package/src/engine/physics/inertia/world_inverse_inertia.d.ts +30 -1
- package/src/engine/physics/inertia/world_inverse_inertia.d.ts.map +1 -1
- package/src/engine/physics/inertia/world_inverse_inertia.js +160 -116
- package/src/engine/physics/integration/integrate_position.js +97 -97
- package/src/engine/physics/island/IslandBuilder.d.ts +49 -8
- package/src/engine/physics/island/IslandBuilder.d.ts.map +1 -1
- package/src/engine/physics/island/IslandBuilder.js +93 -14
- package/src/engine/physics/narrowphase/box_box_manifold.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/box_box_manifold.js +683 -673
- package/src/engine/physics/narrowphase/box_triangle_contact.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/box_triangle_contact.js +899 -749
- package/src/engine/physics/narrowphase/capsule_contacts.d.ts +27 -0
- package/src/engine/physics/narrowphase/capsule_contacts.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/capsule_contacts.js +624 -459
- package/src/engine/physics/narrowphase/capsule_triangle_contact.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/capsule_triangle_contact.js +58 -38
- package/src/engine/physics/narrowphase/compute_penetration.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/compute_penetration.js +369 -325
- package/src/engine/physics/narrowphase/convex_convex_manifold.d.ts +3 -1
- package/src/engine/physics/narrowphase/convex_convex_manifold.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/convex_convex_manifold.js +568 -425
- package/src/engine/physics/narrowphase/convex_decomposition.d.ts +32 -13
- package/src/engine/physics/narrowphase/convex_decomposition.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/convex_decomposition.js +61 -65
- package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.d.ts +6 -3
- package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.js +66 -10
- package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.d.ts +4 -1
- package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.js +97 -94
- package/src/engine/physics/narrowphase/mesh_convex_hull.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/mesh_convex_hull.js +13 -8
- package/src/engine/physics/narrowphase/mesh_mesh_tet_manifold.js +117 -117
- package/src/engine/physics/narrowphase/narrowphase_step.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/narrowphase_step.js +1738 -1739
- package/src/engine/physics/narrowphase/reduce_manifold_contacts.d.ts +14 -7
- package/src/engine/physics/narrowphase/reduce_manifold_contacts.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/reduce_manifold_contacts.js +74 -69
- package/src/engine/physics/narrowphase/refine_ray_concave.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/refine_ray_concave.js +5 -3
- package/src/engine/physics/narrowphase/refine_ray_hit.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/refine_ray_hit.js +81 -78
- package/src/engine/physics/persistence/solver_caches.d.ts +20 -0
- package/src/engine/physics/persistence/solver_caches.d.ts.map +1 -0
- package/src/engine/physics/persistence/solver_caches.js +309 -0
- package/src/engine/physics/queries/overlap_shape.d.ts.map +1 -1
- package/src/engine/physics/queries/overlap_shape.js +187 -184
- package/src/engine/physics/queries/raycast.d.ts +3 -2
- package/src/engine/physics/queries/raycast.d.ts.map +1 -1
- package/src/engine/physics/queries/raycast.js +37 -11
- package/src/engine/physics/queries/shape_cast.d.ts +18 -5
- package/src/engine/physics/queries/shape_cast.d.ts.map +1 -1
- package/src/engine/physics/queries/shape_cast.js +417 -393
- package/src/engine/physics/solver/solve_contacts.d.ts +22 -6
- package/src/engine/physics/solver/solve_contacts.d.ts.map +1 -1
- package/src/engine/physics/solver/solve_contacts.js +1482 -1338
- package/src/engine/physics/vehicle/RaycastVehicle.d.ts.map +1 -1
- package/src/engine/physics/vehicle/RaycastVehicle.js +344 -339
- package/src/engine/sound/SoundEngine.d.ts.map +1 -1
- package/src/engine/sound/SoundEngine.js +28 -0
- package/src/engine/sound/dB2Volume.d.ts +1 -1
- package/src/engine/sound/dB2Volume.d.ts.map +1 -1
- package/src/engine/sound/dB2Volume.js +1 -1
- package/src/engine/sound/ecs/SoundController.d.ts +4 -0
- package/src/engine/sound/ecs/SoundController.d.ts.map +1 -1
- package/src/engine/sound/ecs/SoundController.js +4 -0
- package/src/engine/sound/ecs/SoundControllerSystem.d.ts +5 -0
- package/src/engine/sound/ecs/SoundControllerSystem.d.ts.map +1 -1
- package/src/engine/sound/ecs/SoundControllerSystem.js +5 -0
- package/src/engine/sound/ecs/audio/AudioEmitter.d.ts +69 -0
- package/src/engine/sound/ecs/audio/AudioEmitter.d.ts.map +1 -0
- package/src/engine/sound/ecs/audio/AudioEmitter.js +83 -0
- package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts +97 -0
- package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts.map +1 -0
- package/src/engine/sound/ecs/audio/AudioEmitterSystem.js +238 -0
- package/src/engine/sound/ecs/audio/LiveEmitterSet.d.ts +90 -0
- package/src/engine/sound/ecs/audio/LiveEmitterSet.d.ts.map +1 -0
- package/src/engine/sound/ecs/audio/LiveEmitterSet.js +324 -0
- package/src/engine/sound/ecs/audio/SpatialAudioIndex.d.ts +59 -0
- package/src/engine/sound/ecs/audio/SpatialAudioIndex.d.ts.map +1 -0
- package/src/engine/sound/ecs/audio/SpatialAudioIndex.js +140 -0
- package/src/engine/sound/ecs/emitter/SoundEmitter.d.ts +16 -65
- package/src/engine/sound/ecs/emitter/SoundEmitter.d.ts.map +1 -1
- package/src/engine/sound/ecs/emitter/SoundEmitter.js +19 -224
- package/src/engine/sound/ecs/emitter/SoundEmitterComponentContext.d.ts +26 -29
- package/src/engine/sound/ecs/emitter/SoundEmitterComponentContext.d.ts.map +1 -1
- package/src/engine/sound/ecs/emitter/SoundEmitterComponentContext.js +168 -135
- package/src/engine/sound/ecs/emitter/SoundEmitterSystem.d.ts +36 -59
- package/src/engine/sound/ecs/emitter/SoundEmitterSystem.d.ts.map +1 -1
- package/src/engine/sound/ecs/emitter/SoundEmitterSystem.js +154 -390
- package/src/engine/sound/ecs/emitter/SoundTrack.d.ts +20 -23
- package/src/engine/sound/ecs/emitter/SoundTrack.d.ts.map +1 -1
- package/src/engine/sound/ecs/emitter/SoundTrack.js +34 -152
- package/src/engine/sound/sopra/IMPLEMENTATION_PLAN.md +993 -0
- package/src/engine/sound/sopra/README.md +643 -7
- package/src/engine/sound/sopra/SopraEngine.d.ts +229 -0
- package/src/engine/sound/sopra/SopraEngine.d.ts.map +1 -0
- package/src/engine/sound/sopra/SopraEngine.js +423 -0
- package/src/engine/sound/sopra/asset/AssetManagerBufferProvider.d.ts +26 -0
- package/src/engine/sound/sopra/asset/AssetManagerBufferProvider.d.ts.map +1 -0
- package/src/engine/sound/sopra/asset/AssetManagerBufferProvider.js +71 -0
- package/src/engine/sound/sopra/asset/BufferProvider.d.ts +24 -0
- package/src/engine/sound/sopra/asset/BufferProvider.d.ts.map +1 -0
- package/src/engine/sound/sopra/asset/BufferProvider.js +29 -0
- package/src/engine/sound/sopra/asset/StubBufferProvider.d.ts +31 -0
- package/src/engine/sound/sopra/asset/StubBufferProvider.d.ts.map +1 -0
- package/src/engine/sound/sopra/asset/StubBufferProvider.js +58 -0
- package/src/engine/sound/sopra/definition/BusDefinition.d.ts +83 -0
- package/src/engine/sound/sopra/definition/BusDefinition.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/BusDefinition.js +142 -0
- package/src/engine/sound/sopra/definition/BusDefinitionSerializationAdapter.d.ts +17 -0
- package/src/engine/sound/sopra/definition/BusDefinitionSerializationAdapter.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/BusDefinitionSerializationAdapter.js +54 -0
- package/src/engine/sound/sopra/definition/DuckingRule.d.ts +71 -0
- package/src/engine/sound/sopra/definition/DuckingRule.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/DuckingRule.js +106 -0
- package/src/engine/sound/sopra/definition/DuckingRuleSerializationAdapter.d.ts +18 -0
- package/src/engine/sound/sopra/definition/DuckingRuleSerializationAdapter.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/DuckingRuleSerializationAdapter.js +31 -0
- package/src/engine/sound/sopra/definition/EventDescription.d.ts +132 -0
- package/src/engine/sound/sopra/definition/EventDescription.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/EventDescription.js +259 -0
- package/src/engine/sound/sopra/definition/EventDescriptionSerializationAdapter.d.ts +17 -0
- package/src/engine/sound/sopra/definition/EventDescriptionSerializationAdapter.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/EventDescriptionSerializationAdapter.js +71 -0
- package/src/engine/sound/sopra/definition/MixerSnapshot.d.ts +51 -0
- package/src/engine/sound/sopra/definition/MixerSnapshot.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/MixerSnapshot.js +83 -0
- package/src/engine/sound/sopra/definition/MixerSnapshotSerializationAdapter.d.ts +18 -0
- package/src/engine/sound/sopra/definition/MixerSnapshotSerializationAdapter.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/MixerSnapshotSerializationAdapter.js +39 -0
- package/src/engine/sound/sopra/definition/ParameterDefinition.d.ts +72 -0
- package/src/engine/sound/sopra/definition/ParameterDefinition.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/ParameterDefinition.js +117 -0
- package/src/engine/sound/sopra/definition/ParameterDefinitionSerializationAdapter.d.ts +18 -0
- package/src/engine/sound/sopra/definition/ParameterDefinitionSerializationAdapter.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/ParameterDefinitionSerializationAdapter.js +31 -0
- package/src/engine/sound/sopra/definition/SopraPanningModel.d.ts +14 -0
- package/src/engine/sound/sopra/definition/SopraPanningModel.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/SopraPanningModel.js +20 -0
- package/src/engine/sound/sopra/definition/VoiceStealMode.d.ts +10 -0
- package/src/engine/sound/sopra/definition/VoiceStealMode.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/VoiceStealMode.js +18 -0
- package/src/engine/sound/sopra/definition/clip/AbstractAudioClip.d.ts +93 -0
- package/src/engine/sound/sopra/definition/clip/AbstractAudioClip.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/clip/AbstractAudioClip.js +109 -0
- package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.d.ts +80 -0
- package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.js +181 -0
- package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClipSerializationAdapter.d.ts +17 -0
- package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClipSerializationAdapter.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClipSerializationAdapter.js +74 -0
- package/src/engine/sound/sopra/definition/clip/ContainerAudioClip.d.ts +34 -0
- package/src/engine/sound/sopra/definition/clip/ContainerAudioClip.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/clip/ContainerAudioClip.js +100 -0
- package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.d.ts +101 -0
- package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.js +230 -0
- package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClipSerializationAdapter.d.ts +17 -0
- package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClipSerializationAdapter.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClipSerializationAdapter.js +54 -0
- package/src/engine/sound/sopra/definition/clip/SampleAudioClip.d.ts +103 -0
- package/src/engine/sound/sopra/definition/clip/SampleAudioClip.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/clip/SampleAudioClip.js +191 -0
- package/src/engine/sound/sopra/definition/clip/SampleAudioClipSerializationAdapter.d.ts +18 -0
- package/src/engine/sound/sopra/definition/clip/SampleAudioClipSerializationAdapter.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/clip/SampleAudioClipSerializationAdapter.js +39 -0
- package/src/engine/sound/sopra/definition/clip/SequenceContainerAudioClip.d.ts +40 -0
- package/src/engine/sound/sopra/definition/clip/SequenceContainerAudioClip.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/clip/SequenceContainerAudioClip.js +91 -0
- package/src/engine/sound/sopra/definition/clip/SequenceContainerAudioClipSerializationAdapter.d.ts +17 -0
- package/src/engine/sound/sopra/definition/clip/SequenceContainerAudioClipSerializationAdapter.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/clip/SequenceContainerAudioClipSerializationAdapter.js +42 -0
- package/src/engine/sound/sopra/definition/clip/SilenceAudioClip.d.ts +44 -0
- package/src/engine/sound/sopra/definition/clip/SilenceAudioClip.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/clip/SilenceAudioClip.js +77 -0
- package/src/engine/sound/sopra/definition/clip/SilenceAudioClipSerializationAdapter.d.ts +18 -0
- package/src/engine/sound/sopra/definition/clip/SilenceAudioClipSerializationAdapter.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/clip/SilenceAudioClipSerializationAdapter.js +27 -0
- package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.d.ts +65 -0
- package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.js +131 -0
- package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClipSerializationAdapter.d.ts +17 -0
- package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClipSerializationAdapter.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClipSerializationAdapter.js +41 -0
- package/src/engine/sound/sopra/definition/effect/AbstractAudioEffect.d.ts +24 -0
- package/src/engine/sound/sopra/definition/effect/AbstractAudioEffect.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/effect/AbstractAudioEffect.js +24 -0
- package/src/engine/sound/sopra/definition/effect/CompressorEffect.d.ts +70 -0
- package/src/engine/sound/sopra/definition/effect/CompressorEffect.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/effect/CompressorEffect.js +120 -0
- package/src/engine/sound/sopra/definition/effect/CompressorEffectSerializationAdapter.d.ts +18 -0
- package/src/engine/sound/sopra/definition/effect/CompressorEffectSerializationAdapter.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/effect/CompressorEffectSerializationAdapter.js +31 -0
- package/src/engine/sound/sopra/definition/effect/EqEffect.d.ts +74 -0
- package/src/engine/sound/sopra/definition/effect/EqEffect.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/effect/EqEffect.js +128 -0
- package/src/engine/sound/sopra/definition/effect/EqEffectSerializationAdapter.d.ts +18 -0
- package/src/engine/sound/sopra/definition/effect/EqEffectSerializationAdapter.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/effect/EqEffectSerializationAdapter.js +29 -0
- package/src/engine/sound/sopra/definition/effect/ReverbEffect.d.ts +49 -0
- package/src/engine/sound/sopra/definition/effect/ReverbEffect.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/effect/ReverbEffect.js +101 -0
- package/src/engine/sound/sopra/definition/effect/ReverbEffectSerializationAdapter.d.ts +18 -0
- package/src/engine/sound/sopra/definition/effect/ReverbEffectSerializationAdapter.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/effect/ReverbEffectSerializationAdapter.js +25 -0
- package/src/engine/sound/sopra/legacy/soundEmitterToEventDescription.d.ts +31 -0
- package/src/engine/sound/sopra/legacy/soundEmitterToEventDescription.d.ts.map +1 -0
- package/src/engine/sound/sopra/legacy/soundEmitterToEventDescription.js +106 -0
- package/src/engine/sound/sopra/runtime/BusGraph.d.ts +79 -0
- package/src/engine/sound/sopra/runtime/BusGraph.d.ts.map +1 -0
- package/src/engine/sound/sopra/runtime/BusGraph.js +227 -0
- package/src/engine/sound/sopra/runtime/EventInstance.d.ts +144 -0
- package/src/engine/sound/sopra/runtime/EventInstance.d.ts.map +1 -0
- package/src/engine/sound/sopra/runtime/EventInstance.js +579 -0
- package/src/engine/sound/sopra/runtime/ParameterStore.d.ts +42 -0
- package/src/engine/sound/sopra/runtime/ParameterStore.d.ts.map +1 -0
- package/src/engine/sound/sopra/runtime/ParameterStore.js +98 -0
- package/src/engine/sound/sopra/runtime/SopraPlaybackContext.d.ts +42 -0
- package/src/engine/sound/sopra/runtime/SopraPlaybackContext.d.ts.map +1 -0
- package/src/engine/sound/sopra/runtime/SopraPlaybackContext.js +68 -0
- package/src/engine/sound/sopra/runtime/Voice.d.ts +67 -0
- package/src/engine/sound/sopra/runtime/Voice.d.ts.map +1 -0
- package/src/engine/sound/sopra/runtime/Voice.js +145 -0
- package/src/engine/sound/sopra/runtime/VoiceManager.d.ts +38 -0
- package/src/engine/sound/sopra/runtime/VoiceManager.d.ts.map +1 -0
- package/src/engine/sound/sopra/runtime/VoiceManager.js +136 -0
- package/src/engine/sound/sopra/runtime/VoicePool.d.ts +12 -0
- package/src/engine/sound/sopra/runtime/VoicePool.d.ts.map +1 -0
- package/src/engine/sound/sopra/runtime/VoicePool.js +17 -0
- package/src/engine/sound/sopra/serialization/populateSopraSerializationRegistry.d.ts +11 -0
- package/src/engine/sound/sopra/serialization/populateSopraSerializationRegistry.d.ts.map +1 -0
- package/src/engine/sound/sopra/serialization/populateSopraSerializationRegistry.js +42 -0
- package/src/engine/sound/sopra/serialization/sopraJSON.d.ts +33 -0
- package/src/engine/sound/sopra/serialization/sopraJSON.d.ts.map +1 -0
- package/src/engine/sound/sopra/serialization/sopraJSON.js +99 -0
- package/src/engine/sound/sopra/serialization/sopraSerializationHarness.d.ts +27 -0
- package/src/engine/sound/sopra/serialization/sopraSerializationHarness.d.ts.map +1 -0
- package/src/engine/sound/sopra/serialization/sopraSerializationHarness.js +49 -0
- package/src/engine/sound/sopra/util/MockAudioContext.d.ts +74 -0
- package/src/engine/sound/sopra/util/MockAudioContext.d.ts.map +1 -0
- package/src/engine/sound/sopra/util/MockAudioContext.js +215 -0
- package/src/engine/sound/sopra/util/buildAttenuationCurve.d.ts +15 -0
- package/src/engine/sound/sopra/util/buildAttenuationCurve.d.ts.map +1 -0
- package/src/engine/sound/sopra/util/buildAttenuationCurve.js +40 -0
- package/src/engine/sound/sopra/util/fadeOutAndStop.d.ts +34 -0
- package/src/engine/sound/sopra/util/fadeOutAndStop.d.ts.map +1 -0
- package/src/engine/sound/sopra/util/fadeOutAndStop.js +60 -0
- package/src/engine/sound/volume2dB.d.ts +1 -1
- package/src/engine/sound/volume2dB.d.ts.map +1 -1
- package/src/engine/sound/volume2dB.js +1 -1
- package/src/engine/ui/DraggableAspect.d.ts +12 -3
- package/src/engine/ui/DraggableAspect.d.ts.map +1 -1
- package/src/engine/ui/DraggableAspect.js +115 -83
- package/src/generation/COORDINATES.md +54 -0
- package/src/generation/GridTaskGroup.js +2 -2
- package/src/generation/REVIEW_01_ACTION_PLAN.md +628 -0
- package/src/generation/automata/CaveGeneratorCellularAutomata.d.ts +9 -1
- package/src/generation/automata/CaveGeneratorCellularAutomata.d.ts.map +1 -1
- package/src/generation/automata/CaveGeneratorCellularAutomata.js +79 -59
- package/src/generation/automata/CellularAutomata.d.ts +6 -3
- package/src/generation/automata/CellularAutomata.d.ts.map +1 -1
- package/src/generation/automata/CellularAutomata.js +22 -19
- package/src/generation/filtering/CellFilter.d.ts +17 -0
- package/src/generation/filtering/CellFilter.d.ts.map +1 -1
- package/src/generation/filtering/CellFilter.js +117 -77
- package/src/generation/filtering/CellFilterCellMatcher.d.ts.map +1 -1
- package/src/generation/filtering/CellFilterCellMatcher.js +2 -0
- package/src/generation/filtering/boolean/CellFilterLiteralBoolean.d.ts +5 -0
- package/src/generation/filtering/boolean/CellFilterLiteralBoolean.d.ts.map +1 -1
- package/src/generation/filtering/boolean/CellFilterLiteralBoolean.js +15 -0
- package/src/generation/filtering/core/CellFilterBinaryOperation.d.ts +0 -1
- package/src/generation/filtering/core/CellFilterBinaryOperation.d.ts.map +1 -1
- package/src/generation/filtering/core/CellFilterBinaryOperation.js +37 -50
- package/src/generation/filtering/core/CellFilterOperationTertiary.d.ts +0 -1
- package/src/generation/filtering/core/CellFilterOperationTertiary.d.ts.map +1 -1
- package/src/generation/filtering/core/CellFilterOperationTertiary.js +43 -59
- package/src/generation/filtering/core/CellFilterUnaryOperation.d.ts +0 -1
- package/src/generation/filtering/core/CellFilterUnaryOperation.d.ts.map +1 -1
- package/src/generation/filtering/core/CellFilterUnaryOperation.js +29 -33
- package/src/generation/filtering/numeric/CellFilterCache.d.ts +1 -0
- package/src/generation/filtering/numeric/CellFilterCache.d.ts.map +1 -1
- package/src/generation/filtering/numeric/complex/CellFilterAngleToNormal.d.ts +3 -2
- package/src/generation/filtering/numeric/complex/CellFilterAngleToNormal.d.ts.map +1 -1
- package/src/generation/filtering/numeric/complex/CellFilterAngleToNormal.js +9 -35
- package/src/generation/filtering/numeric/complex/CellFilterCurvature.d.ts +0 -1
- package/src/generation/filtering/numeric/complex/CellFilterCurvature.d.ts.map +1 -1
- package/src/generation/filtering/numeric/complex/CellFilterCurvature.js +19 -43
- package/src/generation/filtering/numeric/complex/CellFilterFXAA.d.ts +0 -1
- package/src/generation/filtering/numeric/complex/CellFilterFXAA.d.ts.map +1 -1
- package/src/generation/filtering/numeric/complex/CellFilterFXAA.js +2 -6
- package/src/generation/filtering/numeric/complex/CellFilterGaussianBlur.d.ts.map +1 -1
- package/src/generation/filtering/numeric/complex/CellFilterGaussianBlur.js +9 -12
- package/src/generation/filtering/numeric/complex/CellFilterSimplexNoise.d.ts.map +1 -1
- package/src/generation/filtering/numeric/complex/CellFilterSimplexNoise.js +2 -1
- package/src/generation/filtering/numeric/complex/CellFilterSobel.d.ts +0 -1
- package/src/generation/filtering/numeric/complex/CellFilterSobel.d.ts.map +1 -1
- package/src/generation/filtering/numeric/complex/CellFilterSobel.js +2 -6
- package/src/generation/filtering/numeric/math/CellFilterInverseLerp.d.ts +5 -4
- package/src/generation/filtering/numeric/math/CellFilterInverseLerp.d.ts.map +1 -1
- package/src/generation/filtering/numeric/math/CellFilterInverseLerp.js +5 -4
- package/src/generation/filtering/numeric/process/computeFilterSurfaceNormal.d.ts +17 -0
- package/src/generation/filtering/numeric/process/computeFilterSurfaceNormal.d.ts.map +1 -0
- package/src/generation/filtering/numeric/process/computeFilterSurfaceNormal.js +42 -0
- package/src/generation/filtering/numeric/sampling/AbstractCellFilterSampleGridLayer.d.ts.map +1 -1
- package/src/generation/filtering/numeric/sampling/AbstractCellFilterSampleGridLayer.js +7 -1
- package/src/generation/filtering/numeric/util/populateSampler2DFromCellFilter.d.ts.map +1 -1
- package/src/generation/filtering/numeric/util/populateSampler2DFromCellFilter.js +7 -10
- package/src/generation/filtering/numeric/util/sampler_from_filter.d.ts.map +1 -1
- package/src/generation/filtering/numeric/util/sampler_from_filter.js +2 -1
- package/src/generation/grid/GridData.d.ts.map +1 -1
- package/src/generation/grid/GridData.js +14 -1
- package/src/generation/grid/actions/ContinuousGridCellAction.d.ts +10 -3
- package/src/generation/grid/actions/ContinuousGridCellAction.d.ts.map +1 -1
- package/src/generation/grid/actions/ContinuousGridCellAction.js +18 -3
- package/src/generation/grid/actions/ContinuousGridCellActionSetTerrainHeight.d.ts +11 -1
- package/src/generation/grid/actions/ContinuousGridCellActionSetTerrainHeight.d.ts.map +1 -1
- package/src/generation/grid/actions/ContinuousGridCellActionSetTerrainHeight.js +13 -3
- package/src/generation/grid/actions/ContinuousGridCellActionSetTerrainObstacle.d.ts +1 -1
- package/src/generation/grid/actions/ContinuousGridCellActionSetTerrainObstacle.js +2 -2
- package/src/generation/grid/actions/ContinuousGridCellActionWriteObstacle.d.ts +1 -1
- package/src/generation/grid/actions/ContinuousGridCellActionWriteObstacle.d.ts.map +1 -1
- package/src/generation/grid/actions/ContinuousGridCellActionWriteObstacle.js +4 -6
- package/src/generation/grid/coords/grid_to_texel.d.ts +9 -0
- package/src/generation/grid/coords/grid_to_texel.d.ts.map +1 -0
- package/src/generation/grid/coords/grid_to_texel.js +10 -0
- package/src/generation/grid/coords/texel_to_grid.d.ts +9 -0
- package/src/generation/grid/coords/texel_to_grid.d.ts.map +1 -0
- package/src/generation/grid/coords/texel_to_grid.js +10 -0
- package/src/generation/grid/generation/GridTaskApplyActionToCells.d.ts +2 -2
- package/src/generation/grid/generation/GridTaskApplyActionToCells.d.ts.map +1 -1
- package/src/generation/grid/generation/GridTaskApplyActionToCells.js +10 -6
- package/src/generation/grid/generation/GridTaskDensityMarkerDistribution.d.ts.map +1 -1
- package/src/generation/grid/generation/GridTaskDensityMarkerDistribution.js +20 -21
- package/src/generation/grid/generation/GridTaskExecuteRuleTimes.d.ts +7 -0
- package/src/generation/grid/generation/GridTaskExecuteRuleTimes.d.ts.map +1 -1
- package/src/generation/grid/generation/GridTaskExecuteRuleTimes.js +18 -10
- package/src/generation/grid/generation/discrete/GridTaskCellularAutomata.d.ts.map +1 -1
- package/src/generation/grid/generation/discrete/GridTaskCellularAutomata.js +16 -7
- package/src/generation/grid/generation/discrete/GridTaskConnectRooms.d.ts +5 -3
- package/src/generation/grid/generation/discrete/GridTaskConnectRooms.d.ts.map +1 -1
- package/src/generation/grid/generation/discrete/GridTaskConnectRooms.js +26 -23
- package/src/generation/grid/generation/discrete/layer/GridTaskBuildSourceDistanceMap.d.ts.map +1 -1
- package/src/generation/grid/generation/discrete/layer/GridTaskBuildSourceDistanceMap.js +10 -1
- package/src/generation/grid/generation/grid/select/CellSupplierBestN.d.ts.map +1 -1
- package/src/generation/grid/generation/grid/select/CellSupplierBestN.js +4 -0
- package/src/generation/grid/generation/road/GridTaskGenerateRoads.d.ts +15 -8
- package/src/generation/grid/generation/road/GridTaskGenerateRoads.d.ts.map +1 -1
- package/src/generation/grid/generation/road/GridTaskGenerateRoads.js +89 -92
- package/src/generation/markers/GridActionRuleSet.d.ts.map +1 -1
- package/src/generation/markers/GridActionRuleSet.js +10 -2
- package/src/generation/markers/GridCellActionPlaceMarker.d.ts +11 -0
- package/src/generation/markers/GridCellActionPlaceMarker.d.ts.map +1 -1
- package/src/generation/markers/GridCellActionPlaceMarker.js +20 -3
- package/src/generation/markers/GridCellActionPlaceMarkerGroup.d.ts +3 -1
- package/src/generation/markers/GridCellActionPlaceMarkerGroup.d.ts.map +1 -1
- package/src/generation/markers/GridCellActionPlaceMarkerGroup.js +9 -2
- package/src/generation/markers/MarkerNode.d.ts +8 -3
- package/src/generation/markers/MarkerNode.d.ts.map +1 -1
- package/src/generation/markers/MarkerNode.js +12 -5
- package/src/generation/markers/actions/MarkerNodeActionEntityPlacement.js +1 -1
- package/src/generation/markers/actions/placement/MarkerNodeEntityProcessor.d.ts +1 -1
- package/src/generation/markers/actions/placement/MarkerNodeEntityProcessor.d.ts.map +1 -1
- package/src/generation/markers/actions/placement/MarkerNodeEntityProcessor.js +1 -1
- package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorClingToTerrain.d.ts +1 -1
- package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorClingToTerrain.d.ts.map +1 -1
- package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorClingToTerrain.js +1 -1
- package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorRandomRotation.d.ts +1 -1
- package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorRandomRotation.d.ts.map +1 -1
- package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorRandomRotation.js +2 -2
- package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorSequence.d.ts +1 -1
- package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorSequence.d.ts.map +1 -1
- package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorSequence.js +2 -2
- package/src/generation/markers/actions/probability/MarkerNodeActionSelectWeighted.d.ts.map +1 -1
- package/src/generation/markers/actions/probability/MarkerNodeActionSelectWeighted.js +6 -4
- package/src/generation/markers/actions/probability/MarkerNodeActionWeightedElement.d.ts.map +1 -1
- package/src/generation/markers/actions/probability/MarkerNodeActionWeightedElement.js +1 -3
- package/src/generation/markers/actions/terrain/MarkerNodeActionPaintTerrain.d.ts.map +1 -1
- package/src/generation/markers/actions/terrain/MarkerNodeActionPaintTerrain.js +12 -11
- package/src/generation/markers/matcher/MarkerNodeMatcherAnd.js +2 -2
- package/src/generation/markers/transform/MarkerNodeTransformer.d.ts +4 -1
- package/src/generation/markers/transform/MarkerNodeTransformer.d.ts.map +1 -1
- package/src/generation/markers/transform/MarkerNodeTransformer.js +4 -1
- package/src/generation/markers/transform/MarkerNodeTransformerAddPositionYFromFilter.d.ts.map +1 -1
- package/src/generation/markers/transform/MarkerNodeTransformerAddPositionYFromFilter.js +1 -3
- package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.d.ts +5 -0
- package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.d.ts.map +1 -1
- package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.js +15 -0
- package/src/generation/markers/transform/MarkerNodeTransformerRecordProperty.d.ts.map +1 -1
- package/src/generation/markers/transform/MarkerNodeTransformerRecordProperty.js +1 -3
- package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilter.d.ts.map +1 -1
- package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilter.js +2 -4
- package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilterGradient.d.ts.map +1 -1
- package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilterGradient.js +1 -3
- package/src/generation/placement/GridCellPlacementRule.d.ts.map +1 -1
- package/src/generation/placement/GridCellPlacementRule.js +1 -3
- package/src/generation/placement/action/GridCellActionWriteFilterToLayer.d.ts.map +1 -1
- package/src/generation/placement/action/GridCellActionWriteFilterToLayer.js +8 -10
- package/src/generation/placement/action/random/weighted/CellActionSelectWeightedRandom.d.ts.map +1 -1
- package/src/generation/placement/action/random/weighted/CellActionSelectWeightedRandom.js +6 -4
- package/src/generation/placement/action/random/weighted/WeightedGridCellAction.d.ts.map +1 -1
- package/src/generation/placement/action/random/weighted/WeightedGridCellAction.js +1 -3
- package/src/generation/rules/CellMatcher.d.ts +3 -1
- package/src/generation/rules/CellMatcher.d.ts.map +1 -1
- package/src/generation/rules/CellMatcher.js +3 -1
- package/src/generation/rules/CellMatcherFromFilter.d.ts.map +1 -1
- package/src/generation/rules/CellMatcherFromFilter.js +1 -3
- package/src/generation/rules/CellMatcherLayerBitMaskTest.d.ts.map +1 -1
- package/src/generation/rules/CellMatcherLayerBitMaskTest.js +6 -20
- package/src/generation/test_support/executeTaskTreeSync.d.ts +9 -0
- package/src/generation/test_support/executeTaskTreeSync.d.ts.map +1 -0
- package/src/generation/test_support/executeTaskTreeSync.js +78 -0
- package/src/generation/theme/TerrainLayerRuleAggregator.d.ts +2 -1
- package/src/generation/theme/TerrainLayerRuleAggregator.d.ts.map +1 -1
- package/src/generation/theme/TerrainLayerRuleAggregator.js +9 -6
- package/src/generation/theme/Theme.d.ts +1 -1
- package/src/generation/theme/Theme.d.ts.map +1 -1
- package/src/generation/theme/Theme.js +2 -2
- package/src/generation/theme/ThemeEngine.d.ts +3 -3
- package/src/generation/theme/ThemeEngine.d.ts.map +1 -1
- package/src/generation/theme/ThemeEngine.js +26 -16
- package/src/generation/theme/cell/CellProcessingRule.d.ts +3 -3
- package/src/generation/theme/cell/CellProcessingRule.d.ts.map +1 -1
- package/src/generation/theme/cell/CellProcessingRule.js +6 -10
- package/src/generation/theme/cell/CellProcessingRuleSet.d.ts +1 -1
- package/src/generation/theme/cell/CellProcessingRuleSet.d.ts.map +1 -1
- package/src/generation/theme/cell/CellProcessingRuleSet.js +2 -2
- package/src/view/common/ListView.js +1 -1
- package/src/view/elements/BottomLeftResizeHandleView.d.ts.map +1 -1
- package/src/view/elements/BottomLeftResizeHandleView.js +13 -5
- package/src/core/font/FontAsset.d.ts.map +0 -1
- package/src/core/font/FontAssetLoader.d.ts.map +0 -1
- package/src/core/geom/3d/shape/util/shape_to_visual_entity.d.ts.map +0 -1
- package/src/core/geom/3d/tetrahedra/visualize_tetrahedral_mesh.d.ts.map +0 -1
- package/src/core/process/action/AsynchronousDelayAction.d.ts.map +0 -1
- package/src/engine/graphics/sh3/path_tracer/sampling/v3_orthonormal_matrix_from_normal.d.ts.map +0 -1
- package/src/engine/physics/computeInterceptPoint.d.ts.map +0 -1
- package/src/engine/physics/fluid/solver/optimal_sor_omega.d.ts.map +0 -1
- package/src/engine/physics/gjk/gjk.d.ts.map +0 -1
- package/src/engine/physics/gjk/gjk_epa_penetration.d.ts.map +0 -1
- package/src/engine/physics/gjk/minkowski_support.d.ts.map +0 -1
- package/src/engine/physics/gjk/mpr.d.ts.map +0 -1
- package/src/engine/physics/integration/quat_integrate.d.ts.map +0 -1
- package/src/engine/physics/island/union_find.d.ts.map +0 -1
- package/src/engine/physics/narrowphase/clip_against_axis_uv.d.ts.map +0 -1
- package/src/engine/physics/narrowphase/decomposition/aabb_world_to_local.d.ts.map +0 -1
- package/src/engine/physics/narrowphase/ray_shapes.d.ts +0 -66
- package/src/engine/physics/narrowphase/ray_shapes.d.ts.map +0 -1
- package/src/engine/physics/narrowphase/ray_shapes.js +0 -187
- package/src/engine/sound/ecs/emitter/SoundEmitterChannel.d.ts +0 -23
- package/src/engine/sound/ecs/emitter/SoundEmitterChannel.d.ts.map +0 -1
- package/src/engine/sound/ecs/emitter/SoundEmitterChannel.js +0 -32
- package/src/engine/sound/ecs/emitter/SoundTrackNodes.d.ts +0 -18
- package/src/engine/sound/ecs/emitter/SoundTrackNodes.d.ts.map +0 -1
- package/src/engine/sound/ecs/emitter/SoundTrackNodes.js +0 -18
- package/src/engine/sound/sopra/AbstractAudioClip.d.ts +0 -26
- package/src/engine/sound/sopra/AbstractAudioClip.d.ts.map +0 -1
- package/src/engine/sound/sopra/AbstractAudioClip.js +0 -29
- package/src/engine/sound/sopra/ContainerAudioClip.d.ts +0 -12
- package/src/engine/sound/sopra/ContainerAudioClip.d.ts.map +0 -1
- package/src/engine/sound/sopra/ContainerAudioClip.js +0 -13
- package/src/engine/sound/sopra/RandomContainerAudioClip.d.ts +0 -12
- package/src/engine/sound/sopra/RandomContainerAudioClip.d.ts.map +0 -1
- package/src/engine/sound/sopra/RandomContainerAudioClip.js +0 -15
- package/src/engine/sound/sopra/SequenceContainerAudioClip.d.ts +0 -7
- package/src/engine/sound/sopra/SequenceContainerAudioClip.d.ts.map +0 -1
- package/src/engine/sound/sopra/SequenceContainerAudioClip.js +0 -8
- package/src/engine/sound/sopra/SilenceAudioClip.d.ts +0 -13
- package/src/engine/sound/sopra/SilenceAudioClip.d.ts.map +0 -1
- package/src/engine/sound/sopra/SilenceAudioClip.js +0 -15
- package/src/generation/grid/generation/discrete/layer/GridTaskDistanceToMarkers.d.ts +0 -21
- package/src/generation/grid/generation/discrete/layer/GridTaskDistanceToMarkers.d.ts.map +0 -1
- package/src/generation/grid/generation/discrete/layer/GridTaskDistanceToMarkers.js +0 -68
- package/src/generation/grid/generation/grid/GridTaskGridAlignedNodeGenerator.d.ts +0 -10
- package/src/generation/grid/generation/grid/GridTaskGridAlignedNodeGenerator.d.ts.map +0 -1
- package/src/generation/grid/generation/grid/GridTaskGridAlignedNodeGenerator.js +0 -17
- /package/src/{engine/physics → core/geom/3d}/gjk/NOTES.md +0 -0
- /package/src/{engine/physics → core/geom/3d}/gjk/gjk.d.ts +0 -0
- /package/src/{engine/graphics/sh3/path_tracer/sampling → core/geom/vec3}/v3_orthonormal_matrix_from_normal.d.ts +0 -0
- /package/src/{engine/physics → core/math/physics/kinematics}/computeInterceptPoint.d.ts +0 -0
|
@@ -0,0 +1,628 @@
|
|
|
1
|
+
# Generation Package — Review 01 Action Plan
|
|
2
|
+
|
|
3
|
+
Source: architectural + correctness review of `meep/src/generation`, 2026-06-11.
|
|
4
|
+
Paths below are relative to this directory unless noted.
|
|
5
|
+
|
|
6
|
+
## Scope rulings (from review discussion)
|
|
7
|
+
|
|
8
|
+
These override the raw review findings:
|
|
9
|
+
|
|
10
|
+
1. **No string-keyed factories.** One-class-per-operation stays. We accept the
|
|
11
|
+
verbosity of `CellFilterAdd` etc. in exchange for typed, greppable, JSDoc-able
|
|
12
|
+
code. Boilerplate reduction must come from better *base classes*, never from
|
|
13
|
+
`X.of('add', fn)`-style magic.
|
|
14
|
+
2. **This is a library.** "Nothing imports it" is not an argument for removal.
|
|
15
|
+
Unreferenced classes are public surface: bugs in them get **fixed**, not
|
|
16
|
+
deleted. Removal is only on the table for code that *cannot work for any
|
|
17
|
+
caller* (non-functional stubs), and that is a per-item decision.
|
|
18
|
+
3. **`prototype*.js` files are internal prototyping tools**, never published.
|
|
19
|
+
Out of scope for this plan.
|
|
20
|
+
4. House rules that shape the fixes: correctness first (no bandaids), black-box
|
|
21
|
+
tests with real objects (no mocks, no call-count assertions), Jest runs from
|
|
22
|
+
the `moh` root with the root `jest.conf.json`, asserts are free in prod,
|
|
23
|
+
module-static pools are accepted style (guard them, don't remove them),
|
|
24
|
+
prefer required parameters over null-means-default sentinels.
|
|
25
|
+
|
|
26
|
+
**Output-stability flag:** items marked `[output-changing]` alter generated
|
|
27
|
+
levels for a fixed seed. Each such fix must be verified visually (see
|
|
28
|
+
*Verification protocol* at the bottom) and batched consciously — they are the
|
|
29
|
+
reason this plan is phased.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Phase 1 — Surgical bug fixes
|
|
34
|
+
|
|
35
|
+
Local, mechanically obvious fixes. Each lands with a black-box spec.
|
|
36
|
+
|
|
37
|
+
- [x] **1.1 `MarkerNodeMatcherAnd.match` implements OR.**
|
|
38
|
+
`markers/matcher/MarkerNodeMatcherAnd.js`
|
|
39
|
+
Fix: `if (!this.left.match(node)) return false; return this.right.match(node);`
|
|
40
|
+
Test: spec with two `MarkerNodeMatcherByType`/`ContainsTag` matchers over a real
|
|
41
|
+
`MarkerNode`; truth-table all four combinations. Do the same table for `Or` and
|
|
42
|
+
`Not` while in there — the family has zero coverage.
|
|
43
|
+
`[output-changing]` — restores intended semantics in
|
|
44
|
+
`app/src/generator/generator/objectives/GENERATE_BOSS_OBJECTIVE.js` and
|
|
45
|
+
`generateMusic.js`. While fixing, read both call sites and confirm AND is what
|
|
46
|
+
they want (it is what they wrote).
|
|
47
|
+
|
|
48
|
+
- [x] **1.2 Road relaxation typo.**
|
|
49
|
+
`grid/generation/road/GridTaskGenerateRoads.js:287`
|
|
50
|
+
Fix: `distances[neighbour_index] = distances;` → `= distance;`
|
|
51
|
+
Test: covered by the end-to-end roads test in 1.3 (the branch is hard to force
|
|
52
|
+
in isolation; the e2e test plus an `assert.isNumber` in the loop is enough).
|
|
53
|
+
|
|
54
|
+
- [x] **1.3 Road groups self-connect and are then skipped.**
|
|
55
|
+
`grid/generation/road/GridTaskGenerateRoads.js` (node-encounter branch, ~line 336)
|
|
56
|
+
Fix: skip own-group nodes the same way the path-encounter branch skips own-group
|
|
57
|
+
paths: `if (targetGroupId === groupId) continue;` before the
|
|
58
|
+
`directGroupConnectionExists` check.
|
|
59
|
+
Test (e2e, black-box): small `GridData`, all-traversable layer, two marker
|
|
60
|
+
groups of **two adjacent connectors each**, placed apart; run the task to
|
|
61
|
+
completion; assert a `RoadConnection` exists whose endpoints belong to
|
|
62
|
+
*different* groups, and that every group is reachable in the connection graph.
|
|
63
|
+
Note: requires the matcher/action parameters from 5.1, or temporarily importing
|
|
64
|
+
the sample matchers in the spec (acceptable for the test, not for src).
|
|
65
|
+
Also in this file: delete the leftover `console.log(path)` in `tDrawPaths`, and
|
|
66
|
+
the constructed-but-unused `Graph` instance.
|
|
67
|
+
|
|
68
|
+
- [x] **1.4 `GridTaskExecuteRuleTimes` never terminates when the pattern can't match.**
|
|
69
|
+
`grid/generation/GridTaskExecuteRuleTimes.js`
|
|
70
|
+
Fix: `closed.set(index, true)` after each attempted cell (match or not), and
|
|
71
|
+
make the exhaustion check count closed cells (`closedCount >= gridSize`)
|
|
72
|
+
instead of the linear-probe counter `i >= endIndex`.
|
|
73
|
+
Semantics note: this closes cells whose match could become true later as the
|
|
74
|
+
grid mutates. That is the original design intent (the `closed` set exists);
|
|
75
|
+
document it in the class doc.
|
|
76
|
+
Test: rule whose pattern never matches → task ends with failure within one
|
|
77
|
+
pass; rule that can match exactly `k < count` cells → terminates, `k`
|
|
78
|
+
placements. Used live in `AlienGridGenerator` / boss objective — confirm the
|
|
79
|
+
failure signal (`EndFailure`) is acceptable to those flows or whether
|
|
80
|
+
exhaustion should be `EndSuccess` with fewer placements. **Decision:** failure
|
|
81
|
+
vs. partial success on exhaustion.
|
|
82
|
+
|
|
83
|
+
- [x] **1.6 `MarkerNodeTransformerYRotateByFilter` Euler convention mismatch.**
|
|
84
|
+
`markers/transform/MarkerNodeTransformerYRotateByFilter.js`
|
|
85
|
+
Fix: `toEulerAnglesXYZ` → `toEulerAnglesYXZ`, matching the recompose call and
|
|
86
|
+
the sibling `…YRotateByFilterGradient`.
|
|
87
|
+
Test: node with a known non-trivial prior YXZ rotation (x ≠ 0), constant
|
|
88
|
+
filter; assert resulting quaternion equals `fromEulerAnglesYXZ(x, expectedY, z)`.
|
|
89
|
+
`[output-changing]` for rotated decor in `theme-1/theme-2 injectDecor`.
|
|
90
|
+
|
|
91
|
+
- [x] **1.7 `ThemeEngine.applyNodes` searches a stale-length influence array.**
|
|
92
|
+
`theme/ThemeEngine.js` (applyNodes)
|
|
93
|
+
Fix: pass explicit bounds to `binarySearchLowIndex(themeInfluence, t, cmp, 0, matchingThemeCount - 1)`
|
|
94
|
+
(mirroring the weighted selects). Handle `influenceSum === 0`: pick uniformly
|
|
95
|
+
among the matching themes using the same `random` stream (deterministic), since
|
|
96
|
+
"all themes at mask-distance 0" is a legitimate boundary state.
|
|
97
|
+
Test: grid with two overlapping `AreaTheme` masks; a marker matching 3 themes
|
|
98
|
+
processed immediately before one matching 1 theme; assert the second node is
|
|
99
|
+
processed by its only matching theme. Use a test-local recording
|
|
100
|
+
`MarkerNodeAction` subclass (a real action, observable behaviour — not a mock).
|
|
101
|
+
`[output-changing]` at theme boundaries.
|
|
102
|
+
|
|
103
|
+
- [x] **1.8 `MarkerNodeActionPaintTerrain`: clamp the splat region.**
|
|
104
|
+
`markers/actions/terrain/MarkerNodeActionPaintTerrain.js`
|
|
105
|
+
Fix (this phase, pure bug): clamp `x0/x1/y0/y1` to `[0, splat_resolution-1]`
|
|
106
|
+
so edge markers stop wrapping writes into the opposite row. Make the X/Y
|
|
107
|
+
region rounding symmetric (`floor(v + 0.5)` both axes).
|
|
108
|
+
The deeper grid↔texel mapping question (the `+ splat_to_grid` "cell center"
|
|
109
|
+
shift) is deferred to Phase 3 — leave a `TODO(review-01 §3)` comment.
|
|
110
|
+
Test: marker at grid (0,0) with radius reaching off-map; assert no texel in the
|
|
111
|
+
rightmost column / other rows changes. `[output-changing]` within one texel of
|
|
112
|
+
map edges only.
|
|
113
|
+
|
|
114
|
+
- [x] **1.9 `ContinuousGridCellActionWriteObstacle` writes global coords.**
|
|
115
|
+
`grid/actions/ContinuousGridCellActionWriteObstacle.js`
|
|
116
|
+
Fix: `to.writePoint(local_x, local_y, …)`. Library surface — fix despite no
|
|
117
|
+
internal callers. Test: obstacle target with non-zero `GridPosition`; execute at
|
|
118
|
+
a global coordinate; assert the *local* cell is written.
|
|
119
|
+
|
|
120
|
+
- [x] **1.10 `MarkerNode.overlaps` compares the wrong plane.**
|
|
121
|
+
`markers/MarkerNode.js`
|
|
122
|
+
Fix: use `this.position` / `other.position` (grid-space Vector2), matching
|
|
123
|
+
`GridDataNodePredicateOverlaps`. Library surface; fix, add a 3-case spec
|
|
124
|
+
(overlap / touch / disjoint).
|
|
125
|
+
|
|
126
|
+
- [x] **1.11 `CellFilterLiteralBoolean` cannot execute.**
|
|
127
|
+
`filtering/boolean/CellFilterLiteralBoolean.js`
|
|
128
|
+
Fix: implement `execute() { return this.value ? 1 : 0; }` (the package-wide
|
|
129
|
+
boolean-as-number convention, same as `CellFilterCellMatcher`). Add `TRUE` /
|
|
130
|
+
`FALSE` singletons alongside `CellFilterLiteralFloat.ONE/ZERO` for symmetry.
|
|
131
|
+
Spec: both values, plus `dataType === DataType.Boolean`.
|
|
132
|
+
|
|
133
|
+
- [x] **1.12 Weighted selects: total weight 0 still executes an element.**
|
|
134
|
+
`placement/action/random/weighted/CellActionSelectWeightedRandom.js`,
|
|
135
|
+
`markers/actions/probability/MarkerNodeActionSelectWeighted.js`
|
|
136
|
+
Fix: if `totalWeight <= 0`, execute nothing. (Folded into 5.2's shared helper;
|
|
137
|
+
if 5.2 is deferred, fix both copies now.)
|
|
138
|
+
Test: all-zero weight filters → no action executed (recording action).
|
|
139
|
+
|
|
140
|
+
- [x] **1.13 Small fixes batch** (no individual specs needed beyond existing suites):
|
|
141
|
+
- `GridTaskGroup.catchGeneratorErrors` — include `reason` in the
|
|
142
|
+
`console.error` (currently drops the actual error).
|
|
143
|
+
- `GridTaskApplyActionToCells.from` — apply the `name` parameter; rename the
|
|
144
|
+
misleading `fitness` field to `supplier` (or `selector`) to match the API.
|
|
145
|
+
- `CellSupplierBestN` — implement `count()` (`this.elements.length`) so task
|
|
146
|
+
progress works.
|
|
147
|
+
- `GridTaskGenerateRoads` — assert integer connector positions before
|
|
148
|
+
`index = x + y * width` (fractional positions silently corrupt the search).
|
|
149
|
+
- `GridData.resize` — assert message typo (`'width'` on the height check).
|
|
150
|
+
- `CellFilterInverseLerp.from` — JSDoc for `f`/`value` is copy-pasted from Lerp.
|
|
151
|
+
- `sampler_from_filter` — assert says non-negative, doc says positive; make it
|
|
152
|
+
`greaterThan(0)`.
|
|
153
|
+
- `GridTaskConnectRooms` — move the unconditional `drawSamplerHTML` import into
|
|
154
|
+
the (commented) debug path or a lazy import so headless bundles don't pull
|
|
155
|
+
DOM helpers. Keep `debugState`/`drawDebugState` (internal tooling).
|
|
156
|
+
- `GridActionRuleSet.process` — seed the `Random` policy iterator
|
|
157
|
+
(`ArrayIteratorRandom.setSeed(seed)`) so rule order responds to the world
|
|
158
|
+
seed. `[output-changing]` for `Random`-policy rule sets.
|
|
159
|
+
|
|
160
|
+
- [x] **1.14 Re-entrancy guards on module-static pools.**
|
|
161
|
+
Module-static pools are house style and stay. Add cheap in-use assert guards
|
|
162
|
+
(free in prod) where recursion through user code is possible:
|
|
163
|
+
`GridData.marker_collection` (matcher could re-query the grid),
|
|
164
|
+
`CellFilterCurvature`'s normal scratch (curvature-of-curvature),
|
|
165
|
+
`CellFilterLookupTable.sample`, `RoadConnectionNetwork.scratch_paths`.
|
|
166
|
+
Pattern: `assert.ok(!pool_in_use, 're-entrant use of <pool>')` + try/finally
|
|
167
|
+
flag toggle is NOT acceptable (silent catch rule) — use a plain set/unset; an
|
|
168
|
+
assert firing in dev is the goal.
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## Phase 2 — Semantic decisions, then fixes
|
|
173
|
+
|
|
174
|
+
Each item changes generated output by design. Decide the intended semantics,
|
|
175
|
+
fix, then verify via the sample generators (see Verification protocol).
|
|
176
|
+
|
|
177
|
+
- [x] **2.1 Cellular automata: synchronous update.**
|
|
178
|
+
`automata/CaveGeneratorCellularAutomata.js`, `grid/generation/discrete/GridTaskCellularAutomata.js`
|
|
179
|
+
Current `step` mutates in place → sequential CA with scan-order bias.
|
|
180
|
+
Decision A: change `step(data, …)` to `step(src, dst, …)` and ping-pong the two
|
|
181
|
+
buffers across the 50 iterations in `GridTaskCellularAutomata` (signature
|
|
182
|
+
change to the `CellularAutomata` base — library surface, sweep subclasses).
|
|
183
|
+
Decision B (same time): out-of-bounds neighbor policy. Current clamping
|
|
184
|
+
double-counts edge cells; the conventional cave-CA choice is OOB = wall
|
|
185
|
+
(alive), which seals cave borders. Margin seeding interaction: margins start
|
|
186
|
+
dead but can currently come alive — decide whether margins should be frozen.
|
|
187
|
+
Also: write `0/1`, not `false/true`, into the `Uint8Array`.
|
|
188
|
+
Test: synchronicity — a glider-style asymmetric seed must produce the same
|
|
189
|
+
result as a reference two-buffer implementation; plus determinism (same seed →
|
|
190
|
+
identical field). `[output-changing]` — all CA-generated caves.
|
|
191
|
+
|
|
192
|
+
- [x] **2.2 Fractal noise octave direction.**
|
|
193
|
+
`filtering/numeric/complex/CellFilterSimplexNoise.js` (`fractal`)
|
|
194
|
+
`scale` is a wavelength; passing `scale * frequency` makes successive octaves
|
|
195
|
+
*lower* frequency at *lower* amplitude — inverted fBm. Intended:
|
|
196
|
+
`scale / frequency`.
|
|
197
|
+
Decision: fix to conventional fBm, or keep current output and rename/document?
|
|
198
|
+
Recommendation: fix; the parameter names (`octaves`, `persistence`,
|
|
199
|
+
`lacunarity`) promise conventional fBm. Grep `fractal(` call sites first and
|
|
200
|
+
eyeball each generated surface after.
|
|
201
|
+
Test: spectral sanity — with 3 octaves, correlation length of the output must
|
|
202
|
+
*decrease* as octave count rises (or simpler: octave-2 filter alone must have
|
|
203
|
+
shorter wavelength than octave-1; assert via zero-crossing counts along a row).
|
|
204
|
+
`[output-changing]`.
|
|
205
|
+
|
|
206
|
+
- [x] **2.3 Gaussian blur sigma units.**
|
|
207
|
+
`filtering/numeric/complex/CellFilterGaussianBlur.js`
|
|
208
|
+
`sigma = radius * 3` in kernel-index units makes the kernel flat (a box blur).
|
|
209
|
+
For a real Gaussian: sigma ≈ kernel half-width / 3, i.e.
|
|
210
|
+
`sigma = (samples - 1) / 6` in index units.
|
|
211
|
+
Decision: is the box-like character relied upon visually? If yes, keep and
|
|
212
|
+
rename the comment; if no, fix the constant. Recommendation: fix, since the
|
|
213
|
+
class advertises Gaussian and callers tuned radius, not shape.
|
|
214
|
+
Test: kernel center weight vs. edge weight ratio > some threshold (e.g. center
|
|
215
|
+
≥ 3× edge for quality 3) via `build_gaussian_kernel_2d` inspection — that's
|
|
216
|
+
testing the helper's contract, not implementation internals.
|
|
217
|
+
`[output-changing]` — all blurred filters.
|
|
218
|
+
|
|
219
|
+
- [x] **2.4 Heightfield normal convention (sign of gradient).**
|
|
220
|
+
`filtering/numeric/complex/CellFilterAngleToNormal.js`,
|
|
221
|
+
`filtering/numeric/complex/CellFilterCurvature.js`
|
|
222
|
+
Both build normals as `(+dX, +dY, 2)`; a true surface normal is
|
|
223
|
+
`∝ (−dX, −dY, 2)`. AngleToNormal is unaffected for the default vertical
|
|
224
|
+
reference; directional references get mirrored slopes; Curvature's sign is
|
|
225
|
+
inverted vs. its cited reference shader.
|
|
226
|
+
Fix: extract one shared `computeFilterSurfaceNormal(result, filter, grid, x, y)`
|
|
227
|
+
helper (also de-duplicates the two implementations), with the negated-gradient
|
|
228
|
+
convention, and document the axis mapping (grid x,y,height → normal x,y,z).
|
|
229
|
+
Audit the two consumers for baked-in compensations before flipping.
|
|
230
|
+
Test: synthetic ramp filter (`h = x`): normal must tilt *toward −x*; curvature
|
|
231
|
+
of a paraboloid bump must be positive at the peak (pick and document the
|
|
232
|
+
convention).
|
|
233
|
+
`[output-changing]` where non-default references / curvature thresholds are used.
|
|
234
|
+
|
|
235
|
+
- [x] **2.5 `GridActionRuleSet` rotation/probability coupling.**
|
|
236
|
+
`markers/GridActionRuleSet.js`
|
|
237
|
+
Today each rotation re-rolls probability: symmetric patterns get effective
|
|
238
|
+
`1−(1−p)⁴` and rotation 0 is favored.
|
|
239
|
+
Decision: intended semantics. Recommendation: roll once per (cell × rule ×
|
|
240
|
+
pattern-offset), then scan rotations for the first match — "does this rule
|
|
241
|
+
fire here?" and "in which orientation?" become independent.
|
|
242
|
+
Test: probability 0.5 rule, rotation-symmetric matcher, large grid, fixed
|
|
243
|
+
seed: firing rate within tolerance of 0.5 (black-box statistical bound);
|
|
244
|
+
rotation histogram roughly uniform across matching rotations if that's the
|
|
245
|
+
chosen semantic. `[output-changing]`.
|
|
246
|
+
|
|
247
|
+
- [x] **2.6 ThemeEngine blending math.**
|
|
248
|
+
`theme/ThemeEngine.js`, `theme/TerrainLayerRuleAggregator.js`
|
|
249
|
+
- Remove the `influence = distance / matchingThemeCount` divisor — it cancels
|
|
250
|
+
in both consumers (verified no-op; pure simplification, output-stable).
|
|
251
|
+
- `aggregator.normalize(255)` normalizes by **L2**; splat weights conventionally
|
|
252
|
+
sum to 255 (L1). Investigate what the terrain shader expects before changing.
|
|
253
|
+
If shader renormalizes, L2→L1 is output-stable; otherwise `[output-changing]`.
|
|
254
|
+
- Guard `d === 0` (no theme contributes) explicitly instead of relying on
|
|
255
|
+
`NaN → uint8 0`.
|
|
256
|
+
- `tResample` half-texel: source coords should be
|
|
257
|
+
`(x + 0.5) / splatWidth * weights.width − 0.5`; decide if the visual shift
|
|
258
|
+
is worth fixing while in here. `[output-changing]` (sub-texel).
|
|
259
|
+
|
|
260
|
+
- [x] **2.7 Stateful transformers vs. estimation/test paths.**
|
|
261
|
+
`grid/generation/GridTaskDensityMarkerDistribution.js` (`estimateTapCount`),
|
|
262
|
+
`markers/GridCellActionPlaceMarkerGroup.js` (`testNodeCollisions`),
|
|
263
|
+
`markers/transform/MarkerNodeTransformerRecordUniqueRandomEnum.js`
|
|
264
|
+
`buildNode` runs transformers; estimation/collision-test paths therefore
|
|
265
|
+
*consume* from stateful transformers (UniqueRandomEnum's pool drains before
|
|
266
|
+
real placement).
|
|
267
|
+
Fixes, in order of preference:
|
|
268
|
+
1. `estimateTapCount` doesn't need nodes at all — it uses only `node.size`.
|
|
269
|
+
Compute size as `action.size * scale.sampleRandom(random)` directly; no
|
|
270
|
+
`buildNode` call. (Current transformers never alter `size`; assert that
|
|
271
|
+
invariant in `buildNode` if we rely on it — or just accept estimate drift.)
|
|
272
|
+
2. `testNodeCollisions`: grep callers; it wants post-offset positions, so it
|
|
273
|
+
can't skip transformers blindly. Split `buildNode` into the geometric phase
|
|
274
|
+
(offset/rotation/transform composition) and the transformer phase as two
|
|
275
|
+
named methods; `testNodeCollisions` uses the geometric phase. Document the
|
|
276
|
+
residual inaccuracy for position-moving transformers, or accept running
|
|
277
|
+
transformers there and document the purity requirement.
|
|
278
|
+
3. Document on `MarkerNodeTransformer`: transformers should be pure w.r.t.
|
|
279
|
+
their own state per `transform` call *or* tolerate being called for
|
|
280
|
+
discarded nodes. `RecordUniqueRandomEnum` inherently can't — note it in its
|
|
281
|
+
class doc as incompatible with estimating tasks.
|
|
282
|
+
Test: DensityMarkerDistribution with a UniqueRandomEnum transformer whose pool
|
|
283
|
+
is exactly the expected placement count → must not throw "All values used up".
|
|
284
|
+
|
|
285
|
+
- [x] **2.8 Seed plumbing decisions.**
|
|
286
|
+
- `MarkerNodeEntityProcessorRandomRotation` ignores the world seed because
|
|
287
|
+
`MarkerNodeEntityProcessor.initialize(data, ecd)` has no seed parameter.
|
|
288
|
+
Add `seed` to the processor interface (sweep: ClingToTerrain, Sequence,
|
|
289
|
+
RandomRotation). Folds into Phase 4's signature unification — do it there.
|
|
290
|
+
`[output-changing]` (entity rotations start varying with seed — that's the point).
|
|
291
|
+
- `GridCellActionPlaceMarkerGroup`'s module-global `idCounter`: uniqueness is
|
|
292
|
+
all that's required today, but it breaks cross-session reproducibility of
|
|
293
|
+
`properties.groupId` values. Decision: leave (document "IDs are opaque,
|
|
294
|
+
equality-only") or derive from a per-generation counter owned by the task.
|
|
295
|
+
Recommendation: document as opaque now; revisit if save/replay needs arise.
|
|
296
|
+
- Standardize derived seeds (`seed + i`, `(s+1)*31`, `seed + 91234`, …) on one
|
|
297
|
+
small typed helper (e.g. `derive_seed(seed, salt)`) — mechanical, low risk,
|
|
298
|
+
`[output-changing]` wherever applied, so batch it with other output-changing
|
|
299
|
+
work, not piecemeal.
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
## Phase 3 — One grid↔sampler coordinate convention
|
|
304
|
+
|
|
305
|
+
The package has three conversions for the same mapping: corner-aligned
|
|
306
|
+
`x/(w−1)·(sw−1)` (`GridCellActionWriteFilterToLayer`, `CellMatcherLayerBitMaskTest`,
|
|
307
|
+
`ContinuousGridCellActionSetTerrainHeight`, `populateSampler2DFromCellFilter`),
|
|
308
|
+
ratio `x·(sw/w)` (`AbstractCellFilterSampleGridLayer` → both sample-layer
|
|
309
|
+
filters), and PaintTerrain's bespoke shift. Writes and reads through different
|
|
310
|
+
conventions drift by up to a cell at the far edge whenever `resolution ≠ 1`,
|
|
311
|
+
and `/(w−1)` divides by zero on 1-wide grids.
|
|
312
|
+
|
|
313
|
+
- [x] **3.1 Write the mapping spec.** One short doc section (in this file or a
|
|
314
|
+
`COORDINATES.md`): grid integer coordinates are cell centers; layer texel `t`
|
|
315
|
+
covers grid `[t/r, (t+1)/r)`; conversion is the ratio form
|
|
316
|
+
`texel = grid · resolution` (consistent with `GridDataLayer.resolution` and
|
|
317
|
+
`GridData.computeScale`'s half-tile world offset). Define the out-of-bounds
|
|
318
|
+
policy per operation class: *reads* clamp or return a defined exterior value
|
|
319
|
+
(pick one), *matches* fail (no silent edge-clamping), *writes* are discarded
|
|
320
|
+
with bounds checks.
|
|
321
|
+
- [x] **3.2 Implement typed helpers** (plain functions, no string keys):
|
|
322
|
+
`grid_to_texel(x, resolution)`, `texel_to_grid(t, resolution)` or equivalent —
|
|
323
|
+
small enough to inline, but one canonical definition to reference.
|
|
324
|
+
- [x] **3.3 Migrate the corner-convention sites** listed above to the ratio
|
|
325
|
+
convention. Each migration gets a `resolution = 2` round-trip spec
|
|
326
|
+
(write filter → layer → read via `CellFilterSampleLayerLinear`, assert values
|
|
327
|
+
at interior and far-edge cells). `[output-changing]` for `resolution ≠ 1`
|
|
328
|
+
layers (game currently uses resolution 1 — verify with a grep — so likely
|
|
329
|
+
output-stable in practice).
|
|
330
|
+
- [x] **3.4 `CellMatcherLayerBitMaskTest`: out-of-bounds = no match.**
|
|
331
|
+
Today OOB probes clamp to the border cell, so `CellMatcherGridPattern`
|
|
332
|
+
patterns match at map edges against themselves. Make OOB return `false`.
|
|
333
|
+
`[output-changing]` at map borders — likely fixes visible edge artifacts;
|
|
334
|
+
verify against the sample generators.
|
|
335
|
+
- [x] **3.5 `MarkerNodeActionPaintTerrain` mapping rebuild** on top of 3.1–3.2:
|
|
336
|
+
replace the `+ splat_to_grid` shift and hand-rolled region math with the
|
|
337
|
+
helpers; keep the Phase-1 clamping test green; add a "paint a radius-r marker
|
|
338
|
+
at center, splat 2× resolution → painted disc is centered and symmetric" spec.
|
|
339
|
+
- [x] **3.6 `ContinuousGridCellActionSetTerrainHeight` coverage check.** With the
|
|
340
|
+
ratio convention, document that per-cell invocation (e.g. via
|
|
341
|
+
`ThemeEngine.applyCellRules`) writes only the texels under the cell footprint;
|
|
342
|
+
if the height sampler is ever denser than `2× grid`, callers must use
|
|
343
|
+
`GridActionRuleSet`'s `resolution` parameter. Add an assert comparing sampler
|
|
344
|
+
resolution to invocation resolution if cheap to thread through; otherwise doc.
|
|
345
|
+
|
|
346
|
+
---
|
|
347
|
+
|
|
348
|
+
## Phase 4 — One initialization protocol
|
|
349
|
+
|
|
350
|
+
Today: five signatures (`(grid, seed)`, `(grid, ecd, seed)`, `(seed, ecd, grid)`,
|
|
351
|
+
`(data, ecd)`, `(grid)`), three flag disciplines, `ensureInitialized` used at 3 of
|
|
352
|
+
~35 sites, `CellFilterCellMatcher` never sets its flag (re-initialized by every
|
|
353
|
+
parent), and no composite finalizes recursively (stale noise tables/caches on
|
|
354
|
+
reuse with a new grid/seed).
|
|
355
|
+
|
|
356
|
+
Staged to keep the library API stable until the deliberate break:
|
|
357
|
+
|
|
358
|
+
- [x] **4.1 (non-breaking) Base-class template within each hierarchy.**
|
|
359
|
+
For `CellFilter`: children enumerate via an overridable
|
|
360
|
+
`get children() { return EMPTY; }` on the base (Binary/Unary/Tertiary/complex
|
|
361
|
+
filters override with their inputs); `ensureInitialized` becomes the only
|
|
362
|
+
recursion driver (walks children, then calls the subclass hook); subclass
|
|
363
|
+
`initialize` overrides lose all flag/child bookkeeping; `finalize` recurses the
|
|
364
|
+
same way. Delete the ~15 hand-rolled `if (!x.initialized) x.initialize(...)`
|
|
365
|
+
blocks inside the filter hierarchy. Fixes the `CellFilterCellMatcher` flag bug
|
|
366
|
+
by construction. Same treatment inside `CellMatcher` (flagless today — give it
|
|
367
|
+
the same base machinery or document statelessness as a requirement).
|
|
368
|
+
Tests: shared-subtree DAG (one filter referenced by two parents) initialized
|
|
369
|
+
once per generation; re-initialization after `finalize` with a different seed
|
|
370
|
+
actually re-seeds (SimplexNoise spec: different seeds → different output after
|
|
371
|
+
finalize+initialize).
|
|
372
|
+
- [x] **4.2 (breaking, one sweep) Signature unification.**
|
|
373
|
+
Decision first: target signature `initialize(grid, ecd, seed)` everywhere
|
|
374
|
+
(hierarchies that don't need `ecd` ignore it), or keep two sanctioned
|
|
375
|
+
signatures (`(grid, seed)` and `(grid, ecd, seed)`) and only fix the outliers
|
|
376
|
+
(`ContinuousGridCellAction`'s `(seed, ecd, grid)`, `Theme`/`CellProcessingRule*`'s
|
|
377
|
+
`(seed, ecd, grid)`, `MarkerNodeEntityProcessor`'s missing seed).
|
|
378
|
+
Recommendation: the two-signature option — smaller blast radius, still removes
|
|
379
|
+
the argument-order traps. Sweep all subclasses + meep samples + `app/src/generator`
|
|
380
|
+
call sites in one commit. Includes 2.8's `MarkerNodeEntityProcessor` seed.
|
|
381
|
+
- [x] **4.3 `AbstractCellFilterSampleGridLayer`**: throw the same friendly
|
|
382
|
+
"Layer 'x' not found" error `GridLayerCellMatcher` throws instead of a
|
|
383
|
+
`TypeError` on the next line.
|
|
384
|
+
|
|
385
|
+
---
|
|
386
|
+
|
|
387
|
+
## Phase 5 — Library architecture
|
|
388
|
+
|
|
389
|
+
- [x] **5.1 Invert the `src → samples` dependency.** (Do early — 1.3's test wants it.)
|
|
390
|
+
`grid/generation/road/GridTaskGenerateRoads.js` imports `GridTags`,
|
|
391
|
+
`MirGridLayers`, `matcher_tag_traversable`; `grid/generation/discrete/GridTaskConnectRooms.js`
|
|
392
|
+
imports `matcher_tag_unoccupied`. A library must not hardcode one sample
|
|
393
|
+
game's tag scheme. Make `traversable`/`modifiable`/`actions` **required**
|
|
394
|
+
`from({...})` parameters (house rule: required params, not null-default
|
|
395
|
+
sentinels). Update the two classes, the samples, and `app/src/generator`
|
|
396
|
+
call sites. Roads also: `vertex` field is unused — remove or wire it; the
|
|
397
|
+
unused `weightMap` argument passed to `buildPaths` goes too.
|
|
398
|
+
- [x] **5.2 One weighted-pick helper.** Extract the duplicated
|
|
399
|
+
cumulative-weights + `binarySearchHighIndex` selection from
|
|
400
|
+
`CellActionSelectWeightedRandom` and `MarkerNodeActionSelectWeighted` into a
|
|
401
|
+
typed core function (e.g. `random_pick_weighted_index(random, weights, count)`
|
|
402
|
+
over a caller-owned cumulative array). Both classes keep their typed public
|
|
403
|
+
shape; total-weight-0 handled once (see 1.12). Keep the two element-wrapper
|
|
404
|
+
classes — they're the typed API.
|
|
405
|
+
- [ ] **5.3 One grid BFS/Dijkstra core.** Four hand-rolled variants:
|
|
406
|
+
`GridTaskBuildSourceDistanceMap`, `util/buildDistanceMapToObjective`,
|
|
407
|
+
`GridTaskConnectRooms.fillConnectedArea` (a BinaryHeap used as a FIFO),
|
|
408
|
+
roads' `tBuildPaths` loop. Extract one expansion routine with: multi-source
|
|
409
|
+
seeding, traversable predicate, per-visit callback / termination predicate,
|
|
410
|
+
and **mark-on-push** membership (BitSet) instead of `heap.contains` linear
|
|
411
|
+
scans (O(n²) today). Migrate the four call sites; behavior must be
|
|
412
|
+
output-stable (same expansion order — keep pop-order semantics identical;
|
|
413
|
+
verify with the roads/connect-rooms e2e tests from Phase 1).
|
|
414
|
+
- [x] **5.4 `MarkerNode` position authority.** Nodes carry grid `position` and
|
|
415
|
+
world `transform`, hand-synced; `MarkerNodeTransformerOffsetPosition` moves
|
|
416
|
+
only grid, `…AddPositionYFromFilter` only world — after either, the other is
|
|
417
|
+
stale. Decision: grid `position` (+ yaw + scale) is authoritative; world XZ is
|
|
418
|
+
derived via `GridData.transform` at consumption time (entity placement,
|
|
419
|
+
PaintTerrain); world Y remains free (terrain cling / Y-offset transformers).
|
|
420
|
+
Concretely: `MarkerNodeActionEntityPlacement` recomputes world XZ from grid
|
|
421
|
+
position before composing transforms, and `OffsetPosition` stops being a
|
|
422
|
+
silent divergence point. Audit every `transform.position` reader in the
|
|
423
|
+
package + game call sites before flipping. This is the largest semantic
|
|
424
|
+
refactor in the plan — schedule last, behind a dedicated decision review.
|
|
425
|
+
- [ ] **5.5 Task-ordering mechanisms.** `GridTaskGenerator.dependencies` resolves
|
|
426
|
+
by `indexOf` among direct siblings of one `GridTaskGroup` (cross-group deps
|
|
427
|
+
throw "not found"), while `GridTaskSequence` is structural and *rejects*
|
|
428
|
+
children with dependencies. Decision: (a) document the constraint and improve
|
|
429
|
+
the error message (cheap), or (b) resolve dependencies via a build-context map
|
|
430
|
+
(generator → task) threaded through nested `build` calls so cross-composite
|
|
431
|
+
deps work. Recommendation: (b) is a contained change to `GridTaskGroup`/
|
|
432
|
+
`GridTaskSequence.build` signatures (internal callers only) and removes the
|
|
433
|
+
landmine; do it when a real cross-group dependency first appears, (a) now.
|
|
434
|
+
- [x] **5.6 Combinator hierarchies — explicit go/no-go.** Full unification
|
|
435
|
+
(matchers as boolean-typed filters; generic marker predicates) would remove
|
|
436
|
+
~2 of the 4 And/Or/Not families and both bridge classes, but it is a breaking
|
|
437
|
+
conceptual change to the library's public vocabulary, and ruling #1 limits how
|
|
438
|
+
much boilerplate it can actually save. Default: **no-go for now.** Keep the
|
|
439
|
+
four families; rely on 1.1's full truth-table specs (replicated for each
|
|
440
|
+
family) to keep the hand-copied combinators honest. Revisit only alongside a
|
|
441
|
+
major-version API pass.
|
|
442
|
+
- [x] **5.7 Non-functional stubs — finish or remove (decision, per ruling #2).**
|
|
443
|
+
- `grid/generation/discrete/layer/GridTaskDistanceToMarkers.js` — `build`
|
|
444
|
+
references an undefined `target` and returns `undefined`; crashes any
|
|
445
|
+
caller via `GridTaskGroup`. No caller can use it as-is.
|
|
446
|
+
- `grid/generation/grid/GridTaskGridAlignedNodeGenerator.js` — empty `build`
|
|
447
|
+
returning `undefined`; same failure mode.
|
|
448
|
+
- `GraphGenerationRule.js` / `GridGeneratorConfig.js` — inert data holders,
|
|
449
|
+
harmless; keep unless a vocabulary cleanup happens.
|
|
450
|
+
Options per stub: finish (BuildSourceDistanceMap covers DistanceToMarkers'
|
|
451
|
+
apparent intent — maybe it's already superseded), or remove. Owner call.
|
|
452
|
+
- [x] **5.8 `GridTaskConnectRooms` / roads internal cleanups** (output-stable):
|
|
453
|
+
`fillConnectedArea` → stack/queue + mark-on-push (via 5.3); drop the
|
|
454
|
+
re-flood-of-everything per connected room if 5.3 makes incremental frontiers
|
|
455
|
+
cheap (measure first — only worth it on large grids); `drawPath`'s
|
|
456
|
+
constant `remap(0, n, 1, 1, i)` thickness scaffolding → either implement
|
|
457
|
+
per-endpoint thickness or simplify to the constant.
|
|
458
|
+
|
|
459
|
+
---
|
|
460
|
+
|
|
461
|
+
## Testing & verification protocol
|
|
462
|
+
|
|
463
|
+
- **Where/how:** Jest from `H:/git/moh` with the root `jest.conf.json`.
|
|
464
|
+
Black-box only: build a real `GridData` (+ real layers, markers, filters),
|
|
465
|
+
run the task/filter/action to completion, assert observable state (layer
|
|
466
|
+
contents, marker set, returned values). No mocks, no call-count assertions.
|
|
467
|
+
Test-local *recording* subclasses of action/consumer base classes are fine —
|
|
468
|
+
they observe behaviour through the public contract.
|
|
469
|
+
- **Determinism suite (new, cheap, high value):** for each task generator fixed
|
|
470
|
+
in this plan, one spec asserting two runs with the same seed produce identical
|
|
471
|
+
grid/layer/marker state, and (where meaningful) different seeds differ.
|
|
472
|
+
This is the regression net for all `[output-changing]` work.
|
|
473
|
+
- **`[output-changing]` verification:** after each Phase-2/3 batch, run
|
|
474
|
+
`SampleGenerator0` / `AlienGridGenerator` (and the combat generator) with a
|
|
475
|
+
fixed seed and eyeball the result against pre-change captures. Batch
|
|
476
|
+
output-changing merges so level-gen output shifts a known number of times,
|
|
477
|
+
not once per commit.
|
|
478
|
+
- **Coverage debt:** the bugs found all lived in files with constructor-only or
|
|
479
|
+
no specs (`MarkerNodeMatcher*`, roads, `GridTaskExecuteRuleTimes`,
|
|
480
|
+
`ThemeEngine.applyNodes`, `PaintTerrain`, the CA). Every Phase-1 fix lands
|
|
481
|
+
with its spec; don't backfill beyond that until the phases above are done.
|
|
482
|
+
|
|
483
|
+
## Explicitly rejected / out of scope (for the record)
|
|
484
|
+
|
|
485
|
+
- String-keyed operation factories (`CellFilterBinary.of('add', …)`) — rejected;
|
|
486
|
+
typed verbosity preferred (ruling #1).
|
|
487
|
+
- Deleting unreferenced-but-working classes (`CellFilterAnd`, `CellFilterSobel`,
|
|
488
|
+
`MarkerNodeEmitterGroup`, `NoopGridTaskGenerator`, etc.) — rejected; library
|
|
489
|
+
surface (ruling #2). Bugs inside them are fixed instead (1.9, 1.10, 1.11).
|
|
490
|
+
- Any treatment of `prototype*.js` files — internal tooling, out of scope
|
|
491
|
+
(ruling #3).
|
|
492
|
+
- Blanket replacement of module-static scratch pools — house style; assert
|
|
493
|
+
guards instead (1.14).
|
|
494
|
+
|
|
495
|
+
---
|
|
496
|
+
|
|
497
|
+
## Execution log
|
|
498
|
+
|
|
499
|
+
**Phase 1 + 5.1 (2026-06-11)** — all items landed with specs, full generation
|
|
500
|
+
suite green (50 suites / 109 tests). Decisions taken during execution:
|
|
501
|
+
|
|
502
|
+
- 1.4: exhaustion keeps signalling `EndFailure` (current intent preserved);
|
|
503
|
+
cells are now closed per attempt, so a rule can no longer fire twice on the
|
|
504
|
+
same cell within one build.
|
|
505
|
+
- 1.12: the pre-existing spec pinned "single option with weight 0 still
|
|
506
|
+
executes" — flipped per plan to "all-zero weights execute nothing".
|
|
507
|
+
- 1.14: guards added to `GridData.marker_collection` and `CellFilterCurvature`
|
|
508
|
+
scratch only; `CellFilterLookupTable.sample` and
|
|
509
|
+
`RoadConnectionNetwork.scratch_paths` run no user code between fill and read,
|
|
510
|
+
so they cannot re-enter — left unguarded.
|
|
511
|
+
- 5.1: `GridTaskGenerateRoads` lost its unused `vertex` field and the dead
|
|
512
|
+
`weightMap` argument; `GridTaskConnectRooms.drawDebugState` now imports the
|
|
513
|
+
DOM helper lazily. Call sites updated: `SampleGenerator0` (meep),
|
|
514
|
+
`generateGameplay` (moh).
|
|
515
|
+
- New test helper: `test_support/executeTaskTreeSync.js` — runs a Task/TaskGroup
|
|
516
|
+
tree synchronously, respecting dependencies.
|
|
517
|
+
|
|
518
|
+
**Phase 2 (2026-06-11)** — semantic fixes landed, suite green (51 suites / 122
|
|
519
|
+
tests). Decisions taken:
|
|
520
|
+
|
|
521
|
+
- 2.1: OOB neighbours = dead (in this CA, alive = open space, so OOB-dead seals
|
|
522
|
+
borders); margins not frozen (same creep semantics as before); state is
|
|
523
|
+
double-buffered via front/back Uint8Arrays in GridTaskCellularAutomata.
|
|
524
|
+
- 2.3: sigma = (samples-1)/6 in kernel-index units (kernel covers +-3 sigma).
|
|
525
|
+
- 2.4: shared computeFilterSurfaceNormal helper; convention: z up, surface
|
|
526
|
+
rising along +x tilts normal towards -x; dome = positive curvature.
|
|
527
|
+
- 2.5: one roll per (cell x rule x offset); rotation scan picks orientation
|
|
528
|
+
only. RNG is now drawn before matching, so draw sequences shift everywhere.
|
|
529
|
+
- 2.6: aggregator normalize switched L2 -> L1 (terrain shader divides by weight
|
|
530
|
+
sum, so this is output-stable); zero-sum guard added; influence divisor
|
|
531
|
+
removed (proven no-op); resample uses texel-center mapping.
|
|
532
|
+
- 2.7: estimation reads action.size directly; processArea builds nodes only
|
|
533
|
+
AFTER the overlap rejection (the spec caught this second consumption site);
|
|
534
|
+
testNodeCollisions uses new buildBaseNode (geometry only); purity
|
|
535
|
+
expectations documented on MarkerNodeTransformer.
|
|
536
|
+
- 2.8: ArrayIteratorRandom seeding landed in 1.13; groupId documented as
|
|
537
|
+
opaque; derive_seed helper DEFERRED — applying it would shift all generation
|
|
538
|
+
output for marginal gain, revisit alongside a future intentional regen-shift;
|
|
539
|
+
EntityProcessor seed plumbed in Phase 4.
|
|
540
|
+
|
|
541
|
+
**Phase 3 (2026-06-11)** — coordinate convention unified, suite green (52
|
|
542
|
+
suites / 128 tests). Decisions taken:
|
|
543
|
+
|
|
544
|
+
- Convention doc lives in `COORDINATES.md`; canonical helpers in `grid/coords/`.
|
|
545
|
+
- DEVIATION from 3.3: `ContinuousGridCellActionSetTerrainHeight` was NOT
|
|
546
|
+
migrated — the terrain heightmap is the terrain renderer's vertex-aligned
|
|
547
|
+
domain and its corner mapping must match the terrain mesh, not grid layers.
|
|
548
|
+
Documented on the class and in COORDINATES.md (covers 3.6 as well).
|
|
549
|
+
- 3.4: out-of-bounds layer probes now fail the match (border patterns stop
|
|
550
|
+
matching against themselves) — output-changing at map borders.
|
|
551
|
+
- 3.5: PaintTerrain's one-texel center shift removed; painted discs are now
|
|
552
|
+
centered on the marker (verified at 1x and 2x splat resolution).
|
|
553
|
+
|
|
554
|
+
**Phase 4 (2026-06-11)** — init protocol unified, suite green (53 suites / 130
|
|
555
|
+
tests). Decisions taken:
|
|
556
|
+
|
|
557
|
+
- 4.1: `CellFilter` base drives recursion via an overridable `get children()`;
|
|
558
|
+
`ensureInitialized` is the guarded entry, `initialize` the unconditional
|
|
559
|
+
subclass hook (super first), `finalize` recurses. All hand-rolled
|
|
560
|
+
`if (!x.initialized) x.initialize(...)` sites replaced with
|
|
561
|
+
`ensureInitialized`. `CellFilterCellMatcher`'s missing flag fixed by
|
|
562
|
+
construction. `CellMatcher` stays flagless: idempotence documented as the
|
|
563
|
+
contract.
|
|
564
|
+
- 4.2: went with the two-sanctioned-signatures option — `(grid, seed)` and
|
|
565
|
+
`(grid, ecd, seed)`. Outliers flipped: `ContinuousGridCellAction` family
|
|
566
|
+
(+ `ensureInitialized` added to that base), `Theme`, `CellProcessingRule(Set)`,
|
|
567
|
+
`ThemeEngine.initializeThemes`. `MarkerNodeEntityProcessor.initialize` now
|
|
568
|
+
receives `seed`; `RandomRotation` finally varies with the world seed
|
|
569
|
+
(output-changing, was the point). `SetTerrainObstacle`'s threshold filter
|
|
570
|
+
is initialized via the same sweep.
|
|
571
|
+
- New spec `filtering/CellFilter.spec.js` pins DAG init-once and
|
|
572
|
+
finalize-then-reseed.
|
|
573
|
+
|
|
574
|
+
**Phase 5 (2026-06-11)** — suite green (53 suites / 130 tests). Status per item:
|
|
575
|
+
|
|
576
|
+
- 5.2 DONE: `core/math/random/random_pick_weighted_index.js` — both weighted
|
|
577
|
+
selects rewired; zero-total guard lives in one place; RNG draw order
|
|
578
|
+
unchanged (helper does not consume the RNG when total weight is 0, same as
|
|
579
|
+
the phase-1 guards).
|
|
580
|
+
- 5.3 PARTIAL (deliberate): mark-on-push membership BitSets replace every
|
|
581
|
+
linear `heap.contains` scan (BuildSourceDistanceMap, roads buildPaths), and
|
|
582
|
+
`fillConnectedArea` is a plain stack flood-fill instead of a BinaryHeap used
|
|
583
|
+
as a FIFO (order-independent result, verified by the e2e specs). The full
|
|
584
|
+
one-core-for-all extraction was NOT done: the four loops differ in exactly
|
|
585
|
+
the parts that matter (incremental task pumping, objective early-exit,
|
|
586
|
+
per-neighbor quadtree probes with early returns) — a shared core would be
|
|
587
|
+
callback soup costlier than the duplication. Revisit if a fifth variant
|
|
588
|
+
appears.
|
|
589
|
+
- 5.4 RESOLVED (owner framing, 2026-06-11): `.position` is the virtual 2D-domain
|
|
590
|
+
location, `transform` is concrete world-space presentation — two domains, not
|
|
591
|
+
duplication; the "pick one authority" sweep is dead. Under that framing the
|
|
592
|
+
only defect was `MarkerNodeTransformerOffsetPosition` relocating the marker
|
|
593
|
+
in the virtual domain only; it now maintains the planar correspondence
|
|
594
|
+
(output-changing in the intended direction: offset wall segments / base
|
|
595
|
+
connectors finally move in world space — GenerateWalls, place_bases).
|
|
596
|
+
Domain contract documented on the `MarkerNode` fields.
|
|
597
|
+
- 5.5 option (a) DONE: GridTaskGroup's dependency-resolution error now explains
|
|
598
|
+
the sibling-only constraint and points at GridTaskSequence. Option (b)
|
|
599
|
+
(build-context resolution map) deferred until a real cross-group dependency
|
|
600
|
+
appears.
|
|
601
|
+
- 5.6 NO-GO confirmed: combinator hierarchies stay; truth-table specs (phase 1)
|
|
602
|
+
are the guard against future copy-paste drift.
|
|
603
|
+
- 5.7 RESOLVED (owner: "if something is a stub - remove it"):
|
|
604
|
+
`GridTaskDistanceToMarkers` and `GridTaskGridAlignedNodeGenerator` removed.
|
|
605
|
+
- 5.8 DONE: `drawPath` constant-thickness scaffolding simplified away (output
|
|
606
|
+
identical: thickness was constant 1); the per-room re-flood optimization
|
|
607
|
+
skipped per the item's "measure first".
|
|
608
|
+
|
|
609
|
+
**Coverage pass (2026-06-11)** — package-wide first-principles black-box specs:
|
|
610
|
+
117 suites / 234 tests (from 54 / 132). Constructor-only specs replaced with
|
|
611
|
+
behavioural ones. Found and fixed in the process: `MarkerNode.copy` dropped
|
|
612
|
+
`priority` — every cloning transformer silently reset a node's processing
|
|
613
|
+
priority (applyNodes sorts on it).
|
|
614
|
+
|
|
615
|
+
Deliberately NOT given dedicated specs: abstract bases and one-line data
|
|
616
|
+
holders; debug tooling (`visualizeMarkers`, `visualise_filters_as_grid`,
|
|
617
|
+
LogToConsole actions/filters, `GridCellActionDebugBreak` — contains a
|
|
618
|
+
`debugger` statement); `MarkerNodeEntityProcessorClingToTerrain` and
|
|
619
|
+
`ThemeEngine.applyTerrainThemes` (both need the built terrain tile/asset
|
|
620
|
+
pipeline — integration tests, not headless unit territory);
|
|
621
|
+
`GridTaskActionRuleSet` (one-line delegation, covered through
|
|
622
|
+
GridActionRuleSet's own specs).
|
|
623
|
+
|
|
624
|
+
VISUAL VERIFICATION PENDING: phases 1–4 change generated output (fixed seeds
|
|
625
|
+
produce different levels). Run SampleGenerator0 / AlienGridGenerator and the
|
|
626
|
+
combat generator against pre-change captures before shipping. Phase 5 and the
|
|
627
|
+
coverage pass are output-stable (the priority fix only affects nodes that were
|
|
628
|
+
losing priority through transformer clones).
|
|
@@ -1,5 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cave-generation rule: a live cell survives with 4 or more live neighbours,
|
|
3
|
+
* a dead cell becomes alive with more than 5 live neighbours.
|
|
4
|
+
*
|
|
5
|
+
* The step is synchronous: the whole next generation is computed from `source`
|
|
6
|
+
* before anything is observed from `target`, so the result does not depend on
|
|
7
|
+
* cell visit order. Out-of-bounds neighbours count as dead.
|
|
8
|
+
*/
|
|
1
9
|
export class CaveGeneratorCellularAutomata extends CellularAutomata {
|
|
2
|
-
step(
|
|
10
|
+
step(source: any, target: any, width: any, height: any): void;
|
|
3
11
|
}
|
|
4
12
|
import { CellularAutomata } from "./CellularAutomata.js";
|
|
5
13
|
//# sourceMappingURL=CaveGeneratorCellularAutomata.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CaveGeneratorCellularAutomata.d.ts","sourceRoot":"","sources":["../../../../src/generation/automata/CaveGeneratorCellularAutomata.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CaveGeneratorCellularAutomata.d.ts","sourceRoot":"","sources":["../../../../src/generation/automata/CaveGeneratorCellularAutomata.js"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH;IACI,8DAkEC;CACJ;iCA9EgC,uBAAuB"}
|