@woosh/meep-engine 2.169.1 → 2.169.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (680) hide show
  1. package/editor/ecs/component/editors/NumericIntervalEditor.js +18 -35
  2. package/editor/ecs/component/editors/ObservedIntegerEditor.js +22 -43
  3. package/editor/ecs/component/editors/ObservedStringEditor.js +34 -51
  4. package/editor/ecs/component/editors/common/makeV3_editor.js +12 -30
  5. package/editor/ecs/component/editors/common/two_way_sync.js +50 -0
  6. package/editor/ecs/component/editors/geom/QuaternionEditor.js +20 -35
  7. package/editor/ecs/component/editors/geom/Vector1Editor.js +5 -28
  8. package/editor/ecs/component/editors/primitive/NumberEditor.js +15 -31
  9. package/editor/tools/paint/TerrainHeightPaintTool.js +22 -31
  10. package/editor/tools/paint/TerrainPaintTool.js +85 -13
  11. package/editor/tools/paint/TerrainTexturePaintTool.js +18 -29
  12. package/editor/view/ecs/components/TerrainController.js +1 -4
  13. package/package.json +1 -1
  14. package/src/DUPLICATION_AUDIT_2026_08_07/00_core_reuse_surface.md +738 -0
  15. package/src/DUPLICATION_AUDIT_2026_08_07/A_core_math_geom.md +79 -0
  16. package/src/DUPLICATION_AUDIT_2026_08_07/B_core_data.md +93 -0
  17. package/src/DUPLICATION_AUDIT_2026_08_07/C_gfx_render.md +80 -0
  18. package/src/DUPLICATION_AUDIT_2026_08_07/D_gfx_features.md +164 -0
  19. package/src/DUPLICATION_AUDIT_2026_08_07/E_physics.md +69 -0
  20. package/src/DUPLICATION_AUDIT_2026_08_07/F_sound.md +102 -0
  21. package/src/DUPLICATION_AUDIT_2026_08_07/G_net_save.md +129 -0
  22. package/src/DUPLICATION_AUDIT_2026_08_07/H_engine_misc.md +72 -0
  23. package/src/DUPLICATION_AUDIT_2026_08_07/I_generation_view.md +74 -0
  24. package/src/DUPLICATION_AUDIT_2026_08_07/K_crosscutting.md +169 -0
  25. package/src/DUPLICATION_AUDIT_2026_08_07.md +254 -0
  26. package/src/DUPLICATION_AUDIT_REMEDIATION.md +250 -0
  27. package/src/core/bvh2/bvh3/query/bvh_collect_user_data.js +2 -2
  28. package/src/core/bvh2/bvh3/query/bvh_query_leaves_generic.js +77 -77
  29. package/src/core/bvh2/bvh3/query/bvh_query_leaves_ray.js +90 -90
  30. package/src/core/bvh2/bvh3/query/bvh_query_leaves_ray_segment.js +94 -94
  31. package/src/core/bvh2/bvh3/query/bvh_query_user_data_generic.js +86 -86
  32. package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_aabb.js +2 -2
  33. package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_capsule.js +2 -2
  34. package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_frustum.js +2 -2
  35. package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_sphere.js +2 -2
  36. package/src/core/bvh2/bvh3/query/bvh_query_user_data_ray.js +96 -96
  37. package/src/core/bvh2/bvh3/query/bvh_query_user_data_ray_segment.js +100 -100
  38. package/src/core/bvh2/bvh3/query/compute_tight_near_far_clipping_planes.js +2 -2
  39. package/src/core/bvh8/aabb3_round_to_float32.d.ts +16 -0
  40. package/src/core/bvh8/aabb3_round_to_float32.d.ts.map +1 -0
  41. package/src/core/bvh8/aabb3_round_to_float32.js +22 -0
  42. package/src/core/bvh8/bvh8_geometry_validate.d.ts.map +1 -1
  43. package/src/core/bvh8/bvh8_geometry_validate.js +1 -12
  44. package/src/core/bvh8/bvh8_geometry_validate_indirect.d.ts.map +1 -1
  45. package/src/core/bvh8/bvh8_geometry_validate_indirect.js +1 -12
  46. package/src/core/cache/Cache.d.ts +13 -0
  47. package/src/core/cache/Cache.d.ts.map +1 -1
  48. package/src/core/cache/Cache.js +13 -0
  49. package/src/core/color/operations/color_darken.d.ts +5 -2
  50. package/src/core/color/operations/color_darken.d.ts.map +1 -1
  51. package/src/core/color/operations/color_darken.js +24 -33
  52. package/src/core/color/operations/color_desaturate.d.ts +5 -2
  53. package/src/core/color/operations/color_desaturate.d.ts.map +1 -1
  54. package/src/core/color/operations/color_desaturate.js +24 -33
  55. package/src/core/color/operations/color_lighten.d.ts +5 -2
  56. package/src/core/color/operations/color_lighten.d.ts.map +1 -1
  57. package/src/core/color/operations/color_lighten.js +24 -33
  58. package/src/core/color/operations/color_saturate.d.ts +5 -2
  59. package/src/core/color/operations/color_saturate.d.ts.map +1 -1
  60. package/src/core/color/operations/color_saturate.js +24 -33
  61. package/src/core/color/operations/color_scale_okhsv_channel.d.ts +28 -0
  62. package/src/core/color/operations/color_scale_okhsv_channel.d.ts.map +1 -0
  63. package/src/core/color/operations/color_scale_okhsv_channel.js +45 -0
  64. package/src/core/geom/2d/hash-grid/SpatialHashGrid.d.ts.map +1 -1
  65. package/src/core/geom/2d/hash-grid/SpatialHashGrid.js +12 -0
  66. package/src/core/geom/2d/line/segment2_intersects_segment2_2d.d.ts.map +1 -1
  67. package/src/core/geom/2d/line/segment2_intersects_segment2_2d.js +25 -29
  68. package/src/core/geom/2d/line/segment2_segment_compute_intersection_array_2d.d.ts.map +1 -1
  69. package/src/core/geom/2d/line/segment2_segment_compute_intersection_array_2d.js +46 -51
  70. package/src/core/geom/2d/line/segment2_segment_intersection_fractions.d.ts +31 -0
  71. package/src/core/geom/2d/line/segment2_segment_intersection_fractions.d.ts.map +1 -0
  72. package/src/core/geom/2d/line/segment2_segment_intersection_fractions.js +52 -0
  73. package/src/core/geom/2d/quad-tree/qt_collect_by_circle.d.ts +6 -1
  74. package/src/core/geom/2d/quad-tree/qt_collect_by_circle.d.ts.map +1 -1
  75. package/src/core/geom/2d/quad-tree/qt_collect_by_circle.js +39 -65
  76. package/src/core/geom/2d/quad-tree/qt_match_data_by_circle.d.ts +15 -5
  77. package/src/core/geom/2d/quad-tree/qt_match_data_by_circle.d.ts.map +1 -1
  78. package/src/core/geom/2d/quad-tree/qt_match_data_by_circle.js +101 -70
  79. package/src/core/geom/2d/r-tree/StaticR2Tree.d.ts.map +1 -1
  80. package/src/core/geom/2d/r-tree/StaticR2Tree.js +7 -3
  81. package/src/core/geom/3d/aabb/aabb3_intersects_ray_segment.d.ts +7 -8
  82. package/src/core/geom/3d/aabb/aabb3_intersects_ray_segment.d.ts.map +1 -1
  83. package/src/core/geom/3d/aabb/aabb3_intersects_ray_segment.js +15 -51
  84. package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_bff.d.ts.map +1 -1
  85. package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_bff.js +13 -14
  86. package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_lscm.d.ts.map +1 -1
  87. package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_lscm.js +2 -17
  88. package/src/core/geom/3d/atlas/segment/atlas_chart_roundness_delta.d.ts +22 -0
  89. package/src/core/geom/3d/atlas/segment/atlas_chart_roundness_delta.d.ts.map +1 -0
  90. package/src/core/geom/3d/atlas/segment/atlas_chart_roundness_delta.js +30 -0
  91. package/src/core/geom/3d/atlas/segment/atlas_segment_charts.d.ts +19 -0
  92. package/src/core/geom/3d/atlas/segment/atlas_segment_charts.d.ts.map +1 -1
  93. package/src/core/geom/3d/atlas/segment/atlas_segment_charts.js +5 -9
  94. package/src/core/geom/3d/atlas/segment/atlas_segment_charts_atomic.d.ts.map +1 -1
  95. package/src/core/geom/3d/atlas/segment/atlas_segment_charts_atomic.js +4 -12
  96. package/src/core/geom/3d/frustum/read_frustum_corner.d.ts +5 -0
  97. package/src/core/geom/3d/frustum/read_frustum_corner.d.ts.map +1 -1
  98. package/src/core/geom/3d/frustum/read_frustum_corner.js +8 -5
  99. package/src/core/geom/3d/line/line3_segment_segment_closest_point_pair.d.ts +33 -0
  100. package/src/core/geom/3d/line/line3_segment_segment_closest_point_pair.d.ts.map +1 -0
  101. package/src/core/geom/3d/line/line3_segment_segment_closest_point_pair.js +71 -0
  102. package/src/core/geom/3d/mat4/m4_compose.d.ts +5 -0
  103. package/src/core/geom/3d/mat4/m4_compose.d.ts.map +1 -1
  104. package/src/core/geom/3d/mat4/m4_compose.js +22 -53
  105. package/src/core/geom/3d/mat4/m4_decompose.d.ts +8 -0
  106. package/src/core/geom/3d/mat4/m4_decompose.d.ts.map +1 -1
  107. package/src/core/geom/3d/mat4/m4_decompose.js +84 -76
  108. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale.d.ts +2 -0
  109. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale.d.ts.map +1 -1
  110. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale.js +10 -44
  111. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_scalar.d.ts +27 -0
  112. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_scalar.d.ts.map +1 -0
  113. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_scalar.js +67 -0
  114. package/src/core/geom/3d/plane/orient3d_fast.d.ts.map +1 -1
  115. package/src/core/geom/3d/plane/orient3d_fast.js +2 -22
  116. package/src/core/geom/3d/plane/orient3d_fast_point.d.ts +28 -0
  117. package/src/core/geom/3d/plane/orient3d_fast_point.d.ts.map +1 -0
  118. package/src/core/geom/3d/plane/orient3d_fast_point.js +47 -0
  119. package/src/core/geom/3d/quaternion/quat3_nlerp.d.ts +48 -0
  120. package/src/core/geom/3d/quaternion/quat3_nlerp.d.ts.map +1 -0
  121. package/src/core/geom/3d/quaternion/quat3_nlerp.js +72 -0
  122. package/src/core/geom/3d/shape/AbstractShape3D.d.ts +9 -0
  123. package/src/core/geom/3d/shape/AbstractShape3D.d.ts.map +1 -1
  124. package/src/core/geom/3d/shape/AbstractShape3D.js +44 -1
  125. package/src/core/geom/3d/shape/BoxShape3D.d.ts.map +1 -1
  126. package/src/core/geom/3d/shape/BoxShape3D.js +2 -1
  127. package/src/core/geom/3d/shape/CapsuleShape3D.d.ts.map +1 -1
  128. package/src/core/geom/3d/shape/CapsuleShape3D.js +2 -1
  129. package/src/core/geom/3d/shape/ConvexHullShape3D.d.ts +0 -1
  130. package/src/core/geom/3d/shape/ConvexHullShape3D.d.ts.map +1 -1
  131. package/src/core/geom/3d/shape/ConvexHullShape3D.js +25 -56
  132. package/src/core/geom/3d/shape/CylinderShape3D.d.ts.map +1 -1
  133. package/src/core/geom/3d/shape/CylinderShape3D.js +2 -1
  134. package/src/core/geom/3d/shape/HeightMapShape3D.d.ts.map +1 -1
  135. package/src/core/geom/3d/shape/HeightMapShape3D.js +3 -5
  136. package/src/core/geom/3d/shape/MeshShape3D.d.ts +0 -11
  137. package/src/core/geom/3d/shape/MeshShape3D.d.ts.map +1 -1
  138. package/src/core/geom/3d/shape/MeshShape3D.js +27 -106
  139. package/src/core/geom/3d/shape/Triangle3D.d.ts +1 -1
  140. package/src/core/geom/3d/shape/Triangle3D.d.ts.map +1 -1
  141. package/src/core/geom/3d/shape/Triangle3D.js +10 -31
  142. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_carve_outside_surface.d.ts.map +1 -1
  143. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_carve_outside_surface.js +8 -57
  144. package/src/core/geom/3d/topology/simplify/decimate_edge_collapse_snap.d.ts +8 -1
  145. package/src/core/geom/3d/topology/simplify/decimate_edge_collapse_snap.d.ts.map +1 -1
  146. package/src/core/geom/3d/topology/simplify/decimate_edge_collapse_snap.js +281 -272
  147. package/src/core/geom/3d/topology/simplify/quadratic/build_vertex_quadrics.d.ts.map +1 -1
  148. package/src/core/geom/3d/topology/simplify/quadratic/build_vertex_quadrics.js +3 -4
  149. package/src/core/geom/3d/topology/simplify/quadratic/quadric3_set_from_plane_through_point.d.ts +22 -0
  150. package/src/core/geom/3d/topology/simplify/quadratic/quadric3_set_from_plane_through_point.d.ts.map +1 -0
  151. package/src/core/geom/3d/topology/simplify/quadratic/quadric3_set_from_plane_through_point.js +27 -0
  152. package/src/core/geom/3d/topology/struct/binary/io/bt_boundary_loop.d.ts +24 -0
  153. package/src/core/geom/3d/topology/struct/binary/io/bt_boundary_loop.d.ts.map +1 -0
  154. package/src/core/geom/3d/topology/struct/binary/io/bt_boundary_loop.js +73 -0
  155. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_close_boundary_holes.d.ts.map +1 -1
  156. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_close_boundary_holes.js +2 -53
  157. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compute_vertex_quadrics.d.ts.map +1 -1
  158. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compute_vertex_quadrics.js +3 -4
  159. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_fill_small_holes.d.ts.map +1 -1
  160. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_fill_small_holes.js +3 -33
  161. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_from_indexed_geometry.d.ts.map +1 -1
  162. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_from_indexed_geometry.js +4 -37
  163. package/src/core/geom/3d/topology/struct/binary/io/face/bt_face_poke.d.ts.map +1 -1
  164. package/src/core/geom/3d/topology/struct/binary/io/face/bt_face_poke.js +3 -32
  165. package/src/core/geom/3d/topology/struct/binary/query/bt_face_read_triangle.d.ts +32 -0
  166. package/src/core/geom/3d/topology/struct/binary/query/bt_face_read_triangle.d.ts.map +1 -0
  167. package/src/core/geom/3d/topology/struct/binary/query/bt_face_read_triangle.js +66 -0
  168. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path.d.ts.map +1 -1
  169. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path.js +703 -728
  170. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path_polyanya.d.ts.map +1 -1
  171. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path_polyanya.js +13 -24
  172. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.d.ts.map +1 -1
  173. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.js +8 -54
  174. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_surface_ray_parity.d.ts +35 -0
  175. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_surface_ray_parity.d.ts.map +1 -0
  176. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_surface_ray_parity.js +82 -0
  177. package/src/core/geom/3d/triangle/tri3_closest_point.d.ts +29 -0
  178. package/src/core/geom/3d/triangle/tri3_closest_point.d.ts.map +1 -0
  179. package/src/core/geom/3d/triangle/tri3_closest_point.js +65 -0
  180. package/src/core/geom/3d/triangle/tri3_flatten_isometric.d.ts +42 -0
  181. package/src/core/geom/3d/triangle/tri3_flatten_isometric.d.ts.map +1 -0
  182. package/src/core/geom/3d/triangle/tri3_flatten_isometric.js +79 -0
  183. package/src/core/geom/Vector2.d.ts.map +1 -1
  184. package/src/core/geom/Vector2.js +2 -1
  185. package/src/core/geom/random/random_orthonormal_basis.d.ts +21 -0
  186. package/src/core/geom/random/random_orthonormal_basis.d.ts.map +1 -0
  187. package/src/core/geom/random/random_orthonormal_basis.js +31 -0
  188. package/src/core/geom/vec2/v2_rotate.d.ts +18 -0
  189. package/src/core/geom/vec2/v2_rotate.d.ts.map +1 -0
  190. package/src/core/geom/vec2/v2_rotate.js +21 -0
  191. package/src/core/geom/vec2/v2_rotate_cos_sin.d.ts +19 -0
  192. package/src/core/geom/vec2/v2_rotate_cos_sin.d.ts.map +1 -0
  193. package/src/core/geom/vec2/v2_rotate_cos_sin.js +21 -0
  194. package/src/core/graph/csr/csr_graph_from_undirected_edge_list.d.ts +30 -0
  195. package/src/core/graph/csr/csr_graph_from_undirected_edge_list.d.ts.map +1 -0
  196. package/src/core/graph/csr/csr_graph_from_undirected_edge_list.js +94 -0
  197. package/src/core/graph/layout/CircleLayout.d.ts.map +1 -1
  198. package/src/core/graph/layout/CircleLayout.js +6 -29
  199. package/src/core/graph/layout/box/BoxLayouter.d.ts.map +1 -1
  200. package/src/core/graph/layout/box/BoxLayouter.js +2 -26
  201. package/src/core/graph/layout/box/position_box_next_to_box.d.ts.map +1 -1
  202. package/src/core/graph/layout/box/position_box_next_to_box.js +2 -1
  203. package/src/core/graph/layout/computeDisconnectedSubGraphs.d.ts.map +1 -1
  204. package/src/core/graph/layout/computeDisconnectedSubGraphs.js +14 -3
  205. package/src/core/graph/layout/graph_peel_topological_layer.d.ts +25 -0
  206. package/src/core/graph/layout/graph_peel_topological_layer.d.ts.map +1 -0
  207. package/src/core/graph/layout/graph_peel_topological_layer.js +45 -0
  208. package/src/core/math/hash/hash_mix2.d.ts +21 -0
  209. package/src/core/math/hash/hash_mix2.d.ts.map +1 -0
  210. package/src/core/math/hash/hash_mix2.js +22 -0
  211. package/src/core/math/hash/hash_mix3.d.ts +16 -0
  212. package/src/core/math/hash/hash_mix3.d.ts.map +1 -0
  213. package/src/core/math/hash/hash_mix3.js +19 -0
  214. package/src/core/math/lookup/LUT_HEATMAP.d.ts +17 -0
  215. package/src/core/math/lookup/LUT_HEATMAP.d.ts.map +1 -0
  216. package/src/core/math/lookup/LUT_HEATMAP.js +30 -0
  217. package/src/core/math/noise/curl_noise_3d.d.ts +6 -0
  218. package/src/core/math/noise/curl_noise_3d.d.ts.map +1 -1
  219. package/src/core/math/noise/curl_noise_3d.js +18 -27
  220. package/src/core/math/statistics/hammersley_sequence.d.ts +28 -16
  221. package/src/core/math/statistics/hammersley_sequence.d.ts.map +1 -1
  222. package/src/core/math/statistics/hammersley_sequence.js +53 -34
  223. package/src/core/science/units/MEASUREMENT_UNITS_SI.d.ts +3 -0
  224. package/src/core/science/units/MEASUREMENT_UNITS_SI.d.ts.map +1 -1
  225. package/src/core/science/units/MEASUREMENT_UNITS_SI.js +5 -16
  226. package/src/engine/animation/TransitionFunctions.d.ts +31 -0
  227. package/src/engine/animation/TransitionFunctions.d.ts.map +1 -1
  228. package/src/engine/animation/TransitionFunctions.js +44 -0
  229. package/src/engine/animation/curve/animation_curve_binary_codec.d.ts +29 -0
  230. package/src/engine/animation/curve/animation_curve_binary_codec.d.ts.map +1 -0
  231. package/src/engine/animation/curve/animation_curve_binary_codec.js +60 -0
  232. package/src/engine/animation/curve/draw/canvas_point_to_curve.d.ts +16 -0
  233. package/src/engine/animation/curve/draw/canvas_point_to_curve.d.ts.map +1 -0
  234. package/src/engine/animation/curve/draw/canvas_point_to_curve.js +22 -0
  235. package/src/engine/animation/curve/draw/curve_point_to_canvas.d.ts +27 -0
  236. package/src/engine/animation/curve/draw/curve_point_to_canvas.d.ts.map +1 -0
  237. package/src/engine/animation/curve/draw/curve_point_to_canvas.js +38 -0
  238. package/src/engine/animation/curve/draw/position_canvas_to_curve.d.ts +2 -0
  239. package/src/engine/animation/curve/draw/position_canvas_to_curve.d.ts.map +1 -1
  240. package/src/engine/animation/curve/draw/position_canvas_to_curve.js +22 -24
  241. package/src/engine/animation/curve/draw/position_curve_to_canvas.d.ts +2 -0
  242. package/src/engine/animation/curve/draw/position_curve_to_canvas.d.ts.map +1 -1
  243. package/src/engine/animation/curve/draw/position_curve_to_canvas.js +22 -25
  244. package/src/engine/animation/curve/editor/canvas2dDrawWorldAxisLabels.d.ts.map +1 -1
  245. package/src/engine/animation/curve/editor/canvas2dDrawWorldAxisLabels.js +3 -2
  246. package/src/engine/animation/curve/editor/canvas2dPlotCurvePoints.d.ts.map +1 -1
  247. package/src/engine/animation/curve/editor/canvas2dPlotCurvePoints.js +14 -14
  248. package/src/engine/animation/removeEntityWithMeshParticlesEffect.d.ts.map +1 -1
  249. package/src/engine/animation/removeEntityWithMeshParticlesEffect.js +5 -0
  250. package/src/engine/asset/loaders/GLTFAssetLoader.d.ts.map +1 -1
  251. package/src/engine/asset/loaders/GLTFAssetLoader.js +25 -51
  252. package/src/engine/asset/loaders/material/StaticMaterialCache.d.ts +3 -2
  253. package/src/engine/asset/loaders/material/StaticMaterialCache.d.ts.map +1 -1
  254. package/src/engine/asset/loaders/material/StaticMaterialCache.js +16 -55
  255. package/src/engine/asset/loaders/material/TextureCoalescer.d.ts +32 -0
  256. package/src/engine/asset/loaders/material/TextureCoalescer.d.ts.map +1 -0
  257. package/src/engine/asset/loaders/material/TextureCoalescer.js +68 -0
  258. package/src/engine/asset/loaders/material/traverseMaterialTextures.d.ts +10 -2
  259. package/src/engine/asset/loaders/material/traverseMaterialTextures.d.ts.map +1 -1
  260. package/src/engine/asset/loaders/material/traverseMaterialTextures.js +10 -2
  261. package/src/engine/control/first-person/abilities/Mantle.d.ts.map +1 -1
  262. package/src/engine/control/first-person/abilities/Mantle.js +10 -26
  263. package/src/engine/ecs/dynamic_actions/actions/definition/WeightedRandomActionDescription.d.ts.map +1 -1
  264. package/src/engine/ecs/dynamic_actions/actions/definition/WeightedRandomActionDescription.js +5 -0
  265. package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.d.ts +22 -2
  266. package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.d.ts.map +1 -1
  267. package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.js +92 -41
  268. package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.d.ts +3 -1
  269. package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.d.ts.map +1 -1
  270. package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.js +14 -16
  271. package/src/engine/ecs/gui/parallax/GuiElementParallaxSystem.d.ts.map +1 -1
  272. package/src/engine/ecs/gui/parallax/GuiElementParallaxSystem.js +16 -29
  273. package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.d.ts.map +1 -1
  274. package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.js +12 -74
  275. package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.d.ts.map +1 -1
  276. package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.js +10 -73
  277. package/src/engine/ecs/ik/ik_probe_terrain_contact.d.ts +38 -0
  278. package/src/engine/ecs/ik/ik_probe_terrain_contact.d.ts.map +1 -0
  279. package/src/engine/ecs/ik/ik_probe_terrain_contact.js +119 -0
  280. package/src/engine/ecs/terrain/util/paintTerrainOverlayViaLookupTable.d.ts +0 -1
  281. package/src/engine/ecs/terrain/util/paintTerrainOverlayViaLookupTable.d.ts.map +1 -1
  282. package/src/engine/ecs/terrain/util/paintTerrainOverlayViaLookupTable.js +2 -14
  283. package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.d.ts +12 -1
  284. package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.d.ts.map +1 -1
  285. package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.js +14 -10
  286. package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.d.ts.map +1 -1
  287. package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.js +7 -28
  288. package/src/engine/graphics/ecs/highlight/renderer/HighlightDecodeShader.d.ts +1 -2
  289. package/src/engine/graphics/ecs/highlight/renderer/HighlightDecodeShader.d.ts.map +1 -1
  290. package/src/engine/graphics/ecs/highlight/renderer/HighlightDecodeShader.js +4 -12
  291. package/src/engine/graphics/ecs/highlight/renderer/OutlineRenderer.d.ts.map +1 -1
  292. package/src/engine/graphics/ecs/highlight/renderer/OutlineRenderer.js +2 -11
  293. package/src/engine/graphics/ecs/highlight/renderer/makeBlurShader_9.d.ts +1 -2
  294. package/src/engine/graphics/ecs/highlight/renderer/makeBlurShader_9.d.ts.map +1 -1
  295. package/src/engine/graphics/ecs/highlight/renderer/makeBlurShader_9.js +3 -11
  296. package/src/engine/graphics/ecs/highlight/renderer/makeDilationShader.d.ts +1 -2
  297. package/src/engine/graphics/ecs/highlight/renderer/makeDilationShader.d.ts.map +1 -1
  298. package/src/engine/graphics/ecs/highlight/renderer/makeDilationShader.js +3 -11
  299. package/src/engine/graphics/ecs/highlight/renderer/make_screen_space_quad_material.d.ts +33 -0
  300. package/src/engine/graphics/ecs/highlight/renderer/make_screen_space_quad_material.d.ts.map +1 -0
  301. package/src/engine/graphics/ecs/highlight/renderer/make_screen_space_quad_material.js +44 -0
  302. package/src/engine/graphics/ecs/highlight/system/HighlightSystemBase.d.ts +55 -0
  303. package/src/engine/graphics/ecs/highlight/system/HighlightSystemBase.d.ts.map +1 -0
  304. package/src/engine/graphics/ecs/highlight/system/HighlightSystemBase.js +205 -0
  305. package/src/engine/graphics/ecs/highlight/system/MeshHighlightSystem.d.ts +4 -45
  306. package/src/engine/graphics/ecs/highlight/system/MeshHighlightSystem.d.ts.map +1 -1
  307. package/src/engine/graphics/ecs/highlight/system/MeshHighlightSystem.js +39 -162
  308. package/src/engine/graphics/ecs/highlight/system/RenderableHighlightSystem.d.ts +4 -51
  309. package/src/engine/graphics/ecs/highlight/system/RenderableHighlightSystem.d.ts.map +1 -1
  310. package/src/engine/graphics/ecs/highlight/system/RenderableHighlightSystem.js +34 -164
  311. package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.d.ts +5 -57
  312. package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.d.ts.map +1 -1
  313. package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.js +48 -175
  314. package/src/engine/graphics/ecs/light/shadow/extend_shadow_camera_near_for_casters.d.ts.map +1 -1
  315. package/src/engine/graphics/ecs/light/shadow/extend_shadow_camera_near_for_casters.js +7 -25
  316. package/src/engine/graphics/ecs/make_bvh_depth_range_computer.d.ts +26 -0
  317. package/src/engine/graphics/ecs/make_bvh_depth_range_computer.d.ts.map +1 -0
  318. package/src/engine/graphics/ecs/make_bvh_depth_range_computer.js +33 -0
  319. package/src/engine/graphics/ecs/mesh/MeshSystem.d.ts.map +1 -1
  320. package/src/engine/graphics/ecs/mesh/MeshSystem.js +2 -5
  321. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.d.ts.map +1 -1
  322. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.js +2 -5
  323. package/src/engine/graphics/ecs/render_layers_compute_depth_range.d.ts +35 -0
  324. package/src/engine/graphics/ecs/render_layers_compute_depth_range.d.ts.map +1 -0
  325. package/src/engine/graphics/ecs/render_layers_compute_depth_range.js +64 -0
  326. package/src/engine/graphics/ecs/trail2d/Trail2DSystem.d.ts.map +1 -1
  327. package/src/engine/graphics/ecs/trail2d/Trail2DSystem.js +2 -5
  328. package/src/engine/graphics/ecs/trail3d/Trail3DSystem.d.ts.map +1 -1
  329. package/src/engine/graphics/ecs/trail3d/Trail3DSystem.js +2 -5
  330. package/src/engine/graphics/ecs/water/WaterSystem.d.ts.map +1 -1
  331. package/src/engine/graphics/ecs/water/WaterSystem.js +2 -5
  332. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_nearest.d.ts.map +1 -1
  333. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_nearest.js +22 -94
  334. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_overlap_clipping_volume.d.ts.map +1 -1
  335. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_overlap_clipping_volume.js +17 -57
  336. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_raycast.d.ts.map +1 -1
  337. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_raycast.js +17 -57
  338. package/src/engine/graphics/geometry/buffered/query/nearest_point_on_triangle_record.d.ts +30 -0
  339. package/src/engine/graphics/geometry/buffered/query/nearest_point_on_triangle_record.d.ts.map +1 -0
  340. package/src/engine/graphics/geometry/buffered/query/nearest_point_on_triangle_record.js +87 -0
  341. package/src/engine/graphics/geometry/buffered/query/query_bvh_geometry_nearest.d.ts.map +1 -1
  342. package/src/engine/graphics/geometry/buffered/query/query_bvh_geometry_nearest.js +11 -55
  343. package/src/engine/graphics/geometry/buffered/read_triangle_vertices.d.ts +29 -0
  344. package/src/engine/graphics/geometry/buffered/read_triangle_vertices.d.ts.map +1 -0
  345. package/src/engine/graphics/geometry/buffered/read_triangle_vertices.js +102 -0
  346. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderDepthV0.d.ts.map +1 -1
  347. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderDepthV0.js +17 -122
  348. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderLitV0.d.ts.map +1 -1
  349. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderLitV0.js +15 -194
  350. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderNormalsV0.d.ts.map +1 -1
  351. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderNormalsV0.js +12 -108
  352. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderPerPixelV0.d.ts.map +1 -1
  353. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderPerPixelV0.js +14 -183
  354. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderV0.d.ts.map +1 -1
  355. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderV0.js +12 -154
  356. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderViewportDepthV0.d.ts.map +1 -1
  357. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderViewportDepthV0.js +10 -94
  358. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderWireframeV0.d.ts.map +1 -1
  359. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderWireframeV0.js +8 -72
  360. package/src/engine/graphics/impostors/octahedral/shader/glsl/common.glsl +10 -0
  361. package/src/engine/graphics/impostors/voxel/bake/read_atlas_to_samples.d.ts.map +1 -1
  362. package/src/engine/graphics/impostors/voxel/bake/read_atlas_to_samples.js +79 -58
  363. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderDepthV0.d.ts.map +1 -1
  364. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderDepthV0.js +11 -22
  365. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderLitV0.d.ts.map +1 -1
  366. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderLitV0.js +7 -16
  367. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderNormalsV0.d.ts.map +1 -1
  368. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderNormalsV0.js +5 -9
  369. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderV0.d.ts.map +1 -1
  370. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderV0.js +4 -19
  371. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderViewportDepthV0.d.ts.map +1 -1
  372. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderViewportDepthV0.js +5 -9
  373. package/src/engine/graphics/material/SplatMaterial.d.ts.map +1 -1
  374. package/src/engine/graphics/material/SplatMaterial.js +2 -17
  375. package/src/engine/graphics/material/WaterMaterial.d.ts.map +1 -1
  376. package/src/engine/graphics/material/WaterMaterial.js +3 -18
  377. package/src/engine/graphics/material/manager/compilers/CoalesceTextures.d.ts +4 -4
  378. package/src/engine/graphics/material/manager/compilers/CoalesceTextures.d.ts.map +1 -1
  379. package/src/engine/graphics/material/manager/compilers/CoalesceTextures.js +25 -70
  380. package/src/engine/graphics/particles/ecs/ParticleEmitterSystem.d.ts.map +1 -1
  381. package/src/engine/graphics/particles/ecs/ParticleEmitterSystem.js +2 -5
  382. package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.d.ts +8 -11
  383. package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.d.ts.map +1 -1
  384. package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.js +20 -21
  385. package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.d.ts +39 -0
  386. package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.d.ts.map +1 -0
  387. package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.js +45 -0
  388. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.d.ts +6 -8
  389. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.d.ts.map +1 -1
  390. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.js +2 -13
  391. package/src/engine/graphics/particles/particular/engine/utils/distributeParticlesOnObject3D.d.ts.map +1 -1
  392. package/src/engine/graphics/particles/particular/engine/utils/distributeParticlesOnObject3D.js +16 -78
  393. package/src/engine/graphics/particles/particular/engine/utils/distribute_points_on_indexed_triangles.d.ts +45 -0
  394. package/src/engine/graphics/particles/particular/engine/utils/distribute_points_on_indexed_triangles.d.ts.map +1 -0
  395. package/src/engine/graphics/particles/particular/engine/utils/distribute_points_on_indexed_triangles.js +168 -0
  396. package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.d.ts.map +1 -1
  397. package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.js +11 -115
  398. package/src/engine/graphics/postprocess/threejs/shaders/CopyShader.d.ts +24 -16
  399. package/src/engine/graphics/postprocess/threejs/shaders/CopyShader.d.ts.map +1 -1
  400. package/src/engine/graphics/postprocess/threejs/shaders/CopyShader.js +15 -47
  401. package/src/engine/graphics/render/buffer/simple-fx/ao/AmbientOcclusionPostProcessEffect.d.ts +4 -0
  402. package/src/engine/graphics/render/buffer/simple-fx/ao/AmbientOcclusionPostProcessEffect.d.ts.map +1 -1
  403. package/src/engine/graphics/render/buffer/simple-fx/ao/AmbientOcclusionPostProcessEffect.js +4 -0
  404. package/src/engine/graphics/sh3/build_injected_shader.d.ts +51 -0
  405. package/src/engine/graphics/sh3/build_injected_shader.d.ts.map +1 -0
  406. package/src/engine/graphics/sh3/build_injected_shader.js +56 -0
  407. package/src/engine/graphics/sh3/gi/material/MaterialTransformer.d.ts.map +1 -1
  408. package/src/engine/graphics/sh3/gi/material/MaterialTransformer.js +10 -1
  409. package/src/engine/graphics/sh3/gi/material/chunk_lpv_get_irradiance_at.d.ts.map +1 -1
  410. package/src/engine/graphics/sh3/gi/material/chunk_lpv_get_irradiance_at.js +17 -0
  411. package/src/engine/graphics/sh3/gi/material/common.d.ts +1 -1
  412. package/src/engine/graphics/sh3/gi/material/common.js +6 -222
  413. package/src/engine/graphics/sh3/gi/material/space_fragment/build_fragment_shader.d.ts.map +1 -1
  414. package/src/engine/graphics/sh3/gi/material/space_fragment/build_fragment_shader.js +7 -11
  415. package/src/engine/graphics/sh3/gi/material/space_fragment/build_vertex_shader.d.ts.map +1 -1
  416. package/src/engine/graphics/sh3/gi/material/space_fragment/build_vertex_shader.js +27 -29
  417. package/src/engine/graphics/sh3/gi/material/space_vertex/build_fragment_shader.d.ts.map +1 -1
  418. package/src/engine/graphics/sh3/gi/material/space_vertex/build_fragment_shader.js +7 -11
  419. package/src/engine/graphics/sh3/gi/material/space_vertex/build_vertex_shader.d.ts.map +1 -1
  420. package/src/engine/graphics/sh3/gi/material/space_vertex/build_vertex_shader.js +7 -12
  421. package/src/engine/graphics/sh3/grid_dilate_average.d.ts +38 -0
  422. package/src/engine/graphics/sh3/grid_dilate_average.d.ts.map +1 -0
  423. package/src/engine/graphics/sh3/grid_dilate_average.js +175 -0
  424. package/src/engine/graphics/sh3/lightmap/lightmap_dilate.d.ts +4 -0
  425. package/src/engine/graphics/sh3/lightmap/lightmap_dilate.d.ts.map +1 -1
  426. package/src/engine/graphics/sh3/lightmap/lightmap_dilate.js +7 -70
  427. package/src/engine/graphics/sh3/lpg/light_probe_grid_dilate.d.ts +6 -0
  428. package/src/engine/graphics/sh3/lpg/light_probe_grid_dilate.d.ts.map +1 -1
  429. package/src/engine/graphics/sh3/lpg/light_probe_grid_dilate.js +14 -113
  430. package/src/engine/graphics/sh3/lpg/material/chunk_lpg_get_irradiance_at.d.ts.map +1 -1
  431. package/src/engine/graphics/sh3/lpg/material/chunk_lpg_get_irradiance_at.js +7 -0
  432. package/src/engine/graphics/sh3/lpg/material/space_fragment/build_fragment_shader.d.ts.map +1 -1
  433. package/src/engine/graphics/sh3/lpg/material/space_fragment/build_fragment_shader.js +5 -8
  434. package/src/engine/graphics/sh3/lpg/material/space_fragment/build_vertex_shader.d.ts.map +1 -1
  435. package/src/engine/graphics/sh3/lpg/material/space_fragment/build_vertex_shader.js +5 -8
  436. package/src/engine/graphics/sh3/lpg/material/space_vertex/build_fragment_shader.d.ts.map +1 -1
  437. package/src/engine/graphics/sh3/lpg/material/space_vertex/build_fragment_shader.js +5 -8
  438. package/src/engine/graphics/sh3/lpg/material/space_vertex/build_vertex_shader.d.ts.map +1 -1
  439. package/src/engine/graphics/sh3/lpg/material/space_vertex/build_vertex_shader.js +5 -8
  440. package/src/engine/graphics/sh3/lpv/depth/chunk_probe_depth_sampling.d.ts +38 -0
  441. package/src/engine/graphics/sh3/lpv/depth/chunk_probe_depth_sampling.d.ts.map +1 -0
  442. package/src/engine/graphics/sh3/lpv/depth/chunk_probe_depth_sampling.js +265 -0
  443. package/src/engine/graphics/sh3/lpv/depth/octahedral/shader/visualize.frag.glsl +11 -0
  444. package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/VLPDepthMapVisualisation.d.ts.map +1 -1
  445. package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/VLPDepthMapVisualisation.js +5 -1
  446. package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/visualise.frag.glsl +189 -419
  447. package/src/engine/graphics/sh3/shader/visualize.frag.d.ts +1 -1
  448. package/src/engine/graphics/sh3/shader/visualize.frag.js +7 -0
  449. package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.d.ts +102 -0
  450. package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.d.ts.map +1 -0
  451. package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.js +277 -0
  452. package/src/engine/graphics/shaders/chunks/glsl_packing.d.ts +29 -0
  453. package/src/engine/graphics/shaders/chunks/glsl_packing.d.ts.map +1 -0
  454. package/src/engine/graphics/shaders/chunks/glsl_packing.js +30 -0
  455. package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.d.ts +40 -0
  456. package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.d.ts.map +1 -0
  457. package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.js +57 -0
  458. package/src/engine/graphics/shaders/lib/make_clouds_uniforms.d.ts +22 -0
  459. package/src/engine/graphics/shaders/lib/make_clouds_uniforms.d.ts.map +1 -0
  460. package/src/engine/graphics/shaders/lib/make_clouds_uniforms.js +39 -0
  461. package/src/engine/graphics/texture/attribute_spec_to_three_format.d.ts +6 -0
  462. package/src/engine/graphics/texture/attribute_spec_to_three_format.d.ts.map +1 -1
  463. package/src/engine/graphics/texture/attribute_spec_to_three_format.js +9 -9
  464. package/src/engine/graphics/texture/channel_count_to_format_prefix.d.ts +14 -0
  465. package/src/engine/graphics/texture/channel_count_to_format_prefix.d.ts.map +1 -0
  466. package/src/engine/graphics/texture/channel_count_to_format_prefix.js +26 -0
  467. package/src/engine/graphics/texture/computeThreeTextureInternalFormatFromDataType.d.ts.map +1 -1
  468. package/src/engine/graphics/texture/computeThreeTextureInternalFormatFromDataType.js +2 -20
  469. package/src/engine/graphics/texture/normalized_internal_format.d.ts.map +1 -1
  470. package/src/engine/graphics/texture/normalized_internal_format.js +2 -20
  471. package/src/engine/graphics/texture/sampler/convertTexture2Sampler2D.d.ts.map +1 -1
  472. package/src/engine/graphics/texture/sampler/convertTexture2Sampler2D.js +9 -3
  473. package/src/engine/input/devices/gamepad/GamepadDeviceLayout.d.ts +54 -0
  474. package/src/engine/input/devices/gamepad/GamepadDeviceLayout.d.ts.map +1 -0
  475. package/src/engine/input/devices/gamepad/GamepadDeviceLayout.js +323 -0
  476. package/src/engine/input/devices/gamepad/GamepadHandle.d.ts +21 -2
  477. package/src/engine/input/devices/gamepad/GamepadHandle.d.ts.map +1 -1
  478. package/src/engine/input/devices/gamepad/GamepadHandle.js +39 -11
  479. package/src/engine/input/devices/gamepad/GamepadLayout.d.ts +128 -0
  480. package/src/engine/input/devices/gamepad/GamepadLayout.d.ts.map +1 -0
  481. package/src/engine/input/devices/gamepad/GamepadLayout.js +160 -0
  482. package/src/engine/input/devices/gamepad/GamepadStandardMapping.d.ts +10 -0
  483. package/src/engine/input/devices/gamepad/GamepadStandardMapping.d.ts.map +1 -1
  484. package/src/engine/input/devices/gamepad/GamepadStandardMapping.js +11 -0
  485. package/src/engine/input/devices/gamepad/GamepadStick.d.ts +5 -1
  486. package/src/engine/input/devices/gamepad/GamepadStick.d.ts.map +1 -1
  487. package/src/engine/input/devices/gamepad/GamepadStick.js +5 -1
  488. package/src/engine/input/devices/gamepad/gamepad_layout_database.d.ts +27 -0
  489. package/src/engine/input/devices/gamepad/gamepad_layout_database.d.ts.map +1 -0
  490. package/src/engine/input/devices/gamepad/gamepad_layout_database.js +144 -0
  491. package/src/engine/input/devices/gamepad/gamepad_read_hat_axis.d.ts +25 -0
  492. package/src/engine/input/devices/gamepad/gamepad_read_hat_axis.d.ts.map +1 -0
  493. package/src/engine/input/devices/gamepad/gamepad_read_hat_axis.js +61 -0
  494. package/src/engine/input/devices/gamepad/prototypeGamepadTester.d.ts +2 -0
  495. package/src/engine/input/devices/gamepad/prototypeGamepadTester.d.ts.map +1 -0
  496. package/src/engine/input/devices/gamepad/prototypeGamepadTester.js +2124 -0
  497. package/src/engine/input/ecs/util/TopDownCameraControllerHelper.d.ts.map +1 -1
  498. package/src/engine/input/ecs/util/TopDownCameraControllerHelper.js +3 -33
  499. package/src/engine/intelligence/behavior/util/RandomDelayBehavior.d.ts.map +1 -1
  500. package/src/engine/intelligence/behavior/util/RandomDelayBehavior.js +5 -0
  501. package/src/engine/network/adapters/QuaternionInterpolationAdapter.d.ts.map +1 -1
  502. package/src/engine/network/adapters/QuaternionInterpolationAdapter.js +18 -19
  503. package/src/engine/network/adapters/TransformInterpolationAdapter.d.ts.map +1 -1
  504. package/src/engine/network/adapters/TransformInterpolationAdapter.js +18 -13
  505. package/src/engine/network/orchestrator/NetworkPeer.d.ts.map +1 -1
  506. package/src/engine/network/orchestrator/NetworkPeer.js +2 -1
  507. package/src/engine/network/sim/ActionLog.d.ts +9 -6
  508. package/src/engine/network/sim/ActionLog.d.ts.map +1 -1
  509. package/src/engine/network/sim/ActionLog.js +43 -80
  510. package/src/engine/network/sim/SmoothingState.d.ts.map +1 -1
  511. package/src/engine/network/sim/SmoothingState.js +27 -28
  512. package/src/engine/network/state/FrameBufferRing.d.ts +84 -0
  513. package/src/engine/network/state/FrameBufferRing.d.ts.map +1 -0
  514. package/src/engine/network/state/FrameBufferRing.js +168 -0
  515. package/src/engine/network/state/InputRing.d.ts +14 -12
  516. package/src/engine/network/state/InputRing.d.ts.map +1 -1
  517. package/src/engine/network/state/InputRing.js +37 -76
  518. package/src/engine/network/transport/LoopbackTransport.d.ts.map +1 -1
  519. package/src/engine/network/transport/LoopbackTransport.js +10 -31
  520. package/src/engine/network/transport/Transport.d.ts +42 -2
  521. package/src/engine/network/transport/Transport.d.ts.map +1 -1
  522. package/src/engine/network/transport/Transport.js +87 -3
  523. package/src/engine/network/transport/adapters/NodeUDPTransport.d.ts.map +1 -1
  524. package/src/engine/network/transport/adapters/NodeUDPTransport.js +7 -33
  525. package/src/engine/network/transport/adapters/SimulatedTransport.d.ts.map +1 -1
  526. package/src/engine/network/transport/adapters/SimulatedTransport.js +17 -28
  527. package/src/engine/network/transport/adapters/WebRTCDataChannelTransport.d.ts.map +1 -1
  528. package/src/engine/network/transport/adapters/WebRTCDataChannelTransport.js +6 -32
  529. package/src/engine/network/transport/adapters/WebSocketTransport.d.ts.map +1 -1
  530. package/src/engine/network/transport/adapters/WebSocketTransport.js +6 -32
  531. package/src/engine/network/transport/adapters/WebTransportTransport.d.ts.map +1 -1
  532. package/src/engine/network/transport/adapters/WebTransportTransport.js +11 -22
  533. package/src/engine/physics/constraint/solve_constraints.d.ts.map +1 -1
  534. package/src/engine/physics/constraint/solve_constraints.js +18 -48
  535. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  536. package/src/engine/physics/fluid/ecs/FluidSystem.d.ts +3 -3
  537. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_scalar.d.ts.map +1 -1
  538. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_scalar.js +7 -0
  539. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.d.ts.map +1 -1
  540. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.js +11 -18
  541. package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.d.ts.map +1 -1
  542. package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.js +7 -0
  543. package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.d.ts.map +1 -1
  544. package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.js +15 -57
  545. package/src/engine/physics/fluid/solver/v3_grid_apply_scalar_advection.d.ts.map +1 -1
  546. package/src/engine/physics/fluid/solver/v3_grid_apply_scalar_advection.js +7 -0
  547. package/src/engine/physics/fluid/solver/v3_grid_limit8_at_indices.d.ts +28 -0
  548. package/src/engine/physics/fluid/solver/v3_grid_limit8_at_indices.d.ts.map +1 -0
  549. package/src/engine/physics/fluid/solver/v3_grid_limit8_at_indices.js +38 -0
  550. package/src/engine/physics/fluid/solver/v3_mac_advect_maccormack_velocity.d.ts.map +1 -1
  551. package/src/engine/physics/fluid/solver/v3_mac_advect_maccormack_velocity.js +12 -14
  552. package/src/engine/physics/fluid/solver/v3_mac_apply_vorticity_confinement.d.ts.map +1 -1
  553. package/src/engine/physics/fluid/solver/v3_mac_apply_vorticity_confinement.js +9 -0
  554. package/src/engine/physics/mls-mpm/MLS_MPM.d.ts +13 -1
  555. package/src/engine/physics/mls-mpm/MLS_MPM.d.ts.map +1 -1
  556. package/src/engine/physics/mls-mpm/MLS_MPM.js +15 -4
  557. package/src/engine/physics/narrowphase/box_triangle_contact.d.ts.map +1 -1
  558. package/src/engine/physics/narrowphase/box_triangle_contact.js +9 -0
  559. package/src/engine/physics/narrowphase/capsule_contacts.d.ts.map +1 -1
  560. package/src/engine/physics/narrowphase/capsule_contacts.js +10 -11
  561. package/src/engine/physics/narrowphase/sphere_triangle_contact.d.ts.map +1 -1
  562. package/src/engine/physics/narrowphase/sphere_triangle_contact.js +7 -12
  563. package/src/engine/physics/solver/apply_impulse_to_body.d.ts +36 -0
  564. package/src/engine/physics/solver/apply_impulse_to_body.d.ts.map +1 -0
  565. package/src/engine/physics/solver/apply_impulse_to_body.js +86 -0
  566. package/src/engine/physics/solver/solve_contacts.d.ts.map +1 -1
  567. package/src/engine/physics/solver/solve_contacts.js +1 -53
  568. package/src/engine/plugin/EnginePlugin.d.ts +3 -0
  569. package/src/engine/plugin/EnginePlugin.d.ts.map +1 -1
  570. package/src/engine/plugin/EnginePlugin.js +3 -0
  571. package/src/engine/save/storage/IndexedDBStorage.d.ts +1 -0
  572. package/src/engine/save/storage/IndexedDBStorage.d.ts.map +1 -1
  573. package/src/engine/save/storage/IndexedDBStorage.js +50 -50
  574. package/src/engine/sound/ecs/SoundControllerSystem.d.ts.map +1 -1
  575. package/src/engine/sound/ecs/SoundControllerSystem.js +2 -10
  576. package/src/engine/sound/simulation/AcousticSimulator.d.ts.map +1 -1
  577. package/src/engine/sound/simulation/AcousticSimulator.js +2 -1
  578. package/src/engine/sound/simulation/core/AcousticOccluderIndex.d.ts.map +1 -1
  579. package/src/engine/sound/simulation/core/AcousticOccluderIndex.js +4 -6
  580. package/src/engine/sound/simulation/core/OcclusionSolver.d.ts.map +1 -1
  581. package/src/engine/sound/simulation/core/OcclusionSolver.js +2 -9
  582. package/src/engine/sound/simulation/probe/ProbeVisibilityRecheck.d.ts.map +1 -1
  583. package/src/engine/sound/simulation/probe/ProbeVisibilityRecheck.js +9 -14
  584. package/src/engine/sound/simulation/probe/bakeReverbBands.d.ts.map +1 -1
  585. package/src/engine/sound/simulation/probe/bakeReverbBands.js +2 -6
  586. package/src/engine/sound/simulation/probe/bakeVisibility.d.ts.map +1 -1
  587. package/src/engine/sound/simulation/probe/bakeVisibility.js +4 -34
  588. package/src/engine/sound/simulation/probe/probe_densify_portals.d.ts.map +1 -1
  589. package/src/engine/sound/simulation/probe/probe_densify_portals.js +3 -6
  590. package/src/engine/sound/simulation/probe/probe_edge_key.d.ts +31 -0
  591. package/src/engine/sound/simulation/probe/probe_edge_key.d.ts.map +1 -0
  592. package/src/engine/sound/simulation/probe/probe_edge_key.js +38 -0
  593. package/src/engine/sound/simulation/probe/probe_sdf_grid.d.ts +10 -3
  594. package/src/engine/sound/simulation/probe/probe_sdf_grid.d.ts.map +1 -1
  595. package/src/engine/sound/simulation/probe/probe_sdf_grid.js +10 -22
  596. package/src/engine/sound/simulation/probe/probe_visibility_augment.d.ts.map +1 -1
  597. package/src/engine/sound/simulation/probe/probe_visibility_augment.js +12 -48
  598. package/src/engine/sound/simulation/probe/probe_visibility_bridge_components.d.ts.map +1 -1
  599. package/src/engine/sound/simulation/probe/probe_visibility_bridge_components.js +4 -3
  600. package/src/engine/sound/simulation/render/foaReverbImpulseResponse.d.ts +5 -4
  601. package/src/engine/sound/simulation/render/foaReverbImpulseResponse.d.ts.map +1 -1
  602. package/src/engine/sound/simulation/render/foaReverbImpulseResponse.js +23 -31
  603. package/src/engine/sound/simulation/render/reverbImpulseResponse.d.ts +1 -8
  604. package/src/engine/sound/simulation/render/reverbImpulseResponse.d.ts.map +1 -1
  605. package/src/engine/sound/simulation/render/reverbImpulseResponse.js +21 -31
  606. package/src/engine/sound/simulation/render/reverb_band_tails.d.ts +55 -0
  607. package/src/engine/sound/simulation/render/reverb_band_tails.d.ts.map +1 -0
  608. package/src/engine/sound/simulation/render/reverb_band_tails.js +93 -0
  609. package/src/engine/sound/sopra/definition/EventDescriptionSerializationAdapter.d.ts.map +1 -1
  610. package/src/engine/sound/sopra/definition/EventDescriptionSerializationAdapter.js +6 -22
  611. package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.d.ts.map +1 -1
  612. package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.js +7 -3
  613. package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClipSerializationAdapter.d.ts.map +1 -1
  614. package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClipSerializationAdapter.js +7 -22
  615. package/src/engine/sound/sopra/definition/clip/ContainerAudioClip.d.ts.map +1 -1
  616. package/src/engine/sound/sopra/definition/clip/ContainerAudioClip.js +28 -0
  617. package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.d.ts.map +1 -1
  618. package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.js +1 -5
  619. package/src/engine/sound/sopra/definition/clip/SequenceContainerAudioClip.d.ts.map +1 -1
  620. package/src/engine/sound/sopra/definition/clip/SequenceContainerAudioClip.js +1 -13
  621. package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.d.ts.map +1 -1
  622. package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.js +2 -8
  623. package/src/engine/sound/sopra/definition/effect/ReverbEffect.d.ts +3 -0
  624. package/src/engine/sound/sopra/definition/effect/ReverbEffect.d.ts.map +1 -1
  625. package/src/engine/sound/sopra/definition/effect/ReverbEffect.js +26 -14
  626. package/src/engine/sound/sopra/runtime/BusGraph.d.ts.map +1 -1
  627. package/src/engine/sound/sopra/runtime/BusGraph.js +21 -33
  628. package/src/engine/sound/sopra/runtime/EventInstance.js +1 -1
  629. package/src/engine/ui/apply_pointer_tilt_3d.d.ts +25 -0
  630. package/src/engine/ui/apply_pointer_tilt_3d.d.ts.map +1 -0
  631. package/src/engine/ui/apply_pointer_tilt_3d.js +50 -0
  632. package/src/engine/ui/bindings/processors/DomElementProcessorTilt3D.d.ts.map +1 -1
  633. package/src/engine/ui/bindings/processors/DomElementProcessorTilt3D.js +9 -26
  634. package/src/generation/filtering/numeric/CellFilterCache.d.ts.map +1 -1
  635. package/src/generation/filtering/numeric/CellFilterCache.js +4 -21
  636. package/src/generation/filtering/numeric/complex/CellFilterSobel.d.ts.map +1 -1
  637. package/src/generation/filtering/numeric/complex/CellFilterSobel.js +11 -20
  638. package/src/generation/filtering/numeric/math/CellFilterPower.d.ts +1 -1
  639. package/src/generation/filtering/numeric/math/CellFilterPower.d.ts.map +1 -1
  640. package/src/generation/filtering/numeric/math/CellFilterPower.js +1 -5
  641. package/src/generation/filtering/numeric/process/computeCellFilterGradient.d.ts.map +1 -1
  642. package/src/generation/filtering/numeric/process/computeCellFilterGradient.js +13 -15
  643. package/src/generation/filtering/numeric/process/computeCellFilterSobel.d.ts +20 -0
  644. package/src/generation/filtering/numeric/process/computeCellFilterSobel.d.ts.map +1 -0
  645. package/src/generation/filtering/numeric/process/computeCellFilterSobel.js +36 -0
  646. package/src/generation/filtering/numeric/util/CellFilterDisplaced.d.ts.map +1 -1
  647. package/src/generation/filtering/numeric/util/CellFilterDisplaced.js +11 -6
  648. package/src/generation/filtering/numeric/util/populateSampler2DFromCellFilter.d.ts.map +1 -1
  649. package/src/generation/filtering/numeric/util/populateSampler2DFromCellFilter.js +18 -36
  650. package/src/generation/filtering/numeric/util/write_cell_filter_to_sampler2d.d.ts +21 -0
  651. package/src/generation/filtering/numeric/util/write_cell_filter_to_sampler2d.d.ts.map +1 -0
  652. package/src/generation/filtering/numeric/util/write_cell_filter_to_sampler2d.js +47 -0
  653. package/src/generation/filtering/util/cell_filter_weights_pick.d.ts +25 -0
  654. package/src/generation/filtering/util/cell_filter_weights_pick.d.ts.map +1 -0
  655. package/src/generation/filtering/util/cell_filter_weights_pick.js +54 -0
  656. package/src/generation/grid/generation/discrete/GridTaskConnectRooms.d.ts.map +1 -1
  657. package/src/generation/grid/generation/discrete/GridTaskConnectRooms.js +14 -1
  658. package/src/generation/markers/GridActionRuleSet.d.ts.map +1 -1
  659. package/src/generation/markers/GridActionRuleSet.js +10 -7
  660. package/src/generation/markers/GridCellActionPlaceMarker.d.ts.map +1 -1
  661. package/src/generation/markers/GridCellActionPlaceMarker.js +10 -12
  662. package/src/generation/markers/actions/probability/MarkerNodeActionSelectWeighted.d.ts.map +1 -1
  663. package/src/generation/markers/actions/probability/MarkerNodeActionSelectWeighted.js +7 -42
  664. package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.d.ts.map +1 -1
  665. package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.js +11 -6
  666. package/src/generation/placement/GridCellPlacementRule.d.ts.map +1 -1
  667. package/src/generation/placement/GridCellPlacementRule.js +10 -7
  668. package/src/generation/placement/action/GridCellActionPlaceTags.d.ts.map +1 -1
  669. package/src/generation/placement/action/GridCellActionPlaceTags.js +10 -4
  670. package/src/generation/placement/action/random/weighted/CellActionSelectWeightedRandom.d.ts.map +1 -1
  671. package/src/generation/placement/action/random/weighted/CellActionSelectWeightedRandom.js +2 -38
  672. package/src/generation/placement/action/util/GridCellDisplacedAction.d.ts.map +1 -1
  673. package/src/generation/placement/action/util/GridCellDisplacedAction.js +11 -6
  674. package/src/generation/rules/cell/CellMatcherGridPattern.d.ts.map +1 -1
  675. package/src/generation/rules/cell/CellMatcherGridPattern.js +11 -4
  676. package/src/generation/theme/ThemeEngine.d.ts.map +1 -1
  677. package/src/generation/theme/ThemeEngine.js +7 -12
  678. package/src/view/elements/Group.d.ts +24 -3
  679. package/src/view/elements/Group.d.ts.map +1 -1
  680. package/src/view/elements/Group.js +56 -34
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Write a mouse-parallax 3D tilt onto a DOM element.
3
+ *
4
+ * The element is rotated about an axis perpendicular to the pointer's offset from `pivot`, by an
5
+ * angle proportional to how far the pointer is from that pivot relative to half the viewport. The
6
+ * result reads as the element leaning away from / toward the cursor.
7
+ *
8
+ * This exists because the identical body was carried by both {@link GuiElementParallaxSystem} (ECS)
9
+ * and {@link DomElementProcessorTilt3D} (DOM binding), and the ECS copy had silently lost its pivot:
10
+ * it computed the element centre and then took the delta against the viewport centre instead, so
11
+ * every element tilted identically no matter where on screen it sat. There is one pivot convention
12
+ * now — the caller always supplies it, and it is always the element centre.
13
+ *
14
+ * @param {HTMLElement} el element to write the transform onto
15
+ * @param {number} pointer_x pointer position in viewport pixels
16
+ * @param {number} pointer_y
17
+ * @param {number} pivot_x point the tilt is measured from, in viewport pixels; normally the element centre
18
+ * @param {number} pivot_y
19
+ * @param {number} viewport_width used to normalise the pointer offset; must be greater than 0
20
+ * @param {number} viewport_height must be greater than 0
21
+ * @param {number} angle maximum tilt in degrees, reached when the pointer offset equals half the viewport
22
+ * @param {number} depth `translateZ` applied after the rotation, in pixels; 0 for a pure rotation
23
+ */
24
+ export function apply_pointer_tilt_3d(el: HTMLElement, pointer_x: number, pointer_y: number, pivot_x: number, pivot_y: number, viewport_width: number, viewport_height: number, angle: number, depth: number): void;
25
+ //# sourceMappingURL=apply_pointer_tilt_3d.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply_pointer_tilt_3d.d.ts","sourceRoot":"","sources":["../../../../src/engine/ui/apply_pointer_tilt_3d.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,0CAVW,WAAW,aACX,MAAM,aACN,MAAM,WACN,MAAM,WACN,MAAM,kBACN,MAAM,mBACN,MAAM,SACN,MAAM,SACN,MAAM,QA4BhB"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Write a mouse-parallax 3D tilt onto a DOM element.
3
+ *
4
+ * The element is rotated about an axis perpendicular to the pointer's offset from `pivot`, by an
5
+ * angle proportional to how far the pointer is from that pivot relative to half the viewport. The
6
+ * result reads as the element leaning away from / toward the cursor.
7
+ *
8
+ * This exists because the identical body was carried by both {@link GuiElementParallaxSystem} (ECS)
9
+ * and {@link DomElementProcessorTilt3D} (DOM binding), and the ECS copy had silently lost its pivot:
10
+ * it computed the element centre and then took the delta against the viewport centre instead, so
11
+ * every element tilted identically no matter where on screen it sat. There is one pivot convention
12
+ * now — the caller always supplies it, and it is always the element centre.
13
+ *
14
+ * @param {HTMLElement} el element to write the transform onto
15
+ * @param {number} pointer_x pointer position in viewport pixels
16
+ * @param {number} pointer_y
17
+ * @param {number} pivot_x point the tilt is measured from, in viewport pixels; normally the element centre
18
+ * @param {number} pivot_y
19
+ * @param {number} viewport_width used to normalise the pointer offset; must be greater than 0
20
+ * @param {number} viewport_height must be greater than 0
21
+ * @param {number} angle maximum tilt in degrees, reached when the pointer offset equals half the viewport
22
+ * @param {number} depth `translateZ` applied after the rotation, in pixels; 0 for a pure rotation
23
+ */
24
+ export function apply_pointer_tilt_3d(
25
+ el,
26
+ pointer_x, pointer_y,
27
+ pivot_x, pivot_y,
28
+ viewport_width, viewport_height,
29
+ angle,
30
+ depth
31
+ ) {
32
+
33
+ const viewport_center_x = viewport_width * 0.5;
34
+ const viewport_center_y = viewport_height * 0.5;
35
+
36
+ const delta_x = pointer_x - pivot_x;
37
+ const delta_y = pointer_y - pivot_y;
38
+
39
+ const tilt_x = (delta_y / viewport_center_y);
40
+ const tilt_y = -(delta_x / viewport_center_x);
41
+
42
+ const radius = Math.sqrt(tilt_x * tilt_x + tilt_y * tilt_y);
43
+
44
+ const tilt_angle = radius * angle;
45
+
46
+ const style = el.style;
47
+
48
+ style.transformOrigin = '50% 50%';
49
+ style.transform = `rotate3d(${tilt_x},${tilt_y},0,${tilt_angle}deg) translateZ(${depth}px)`;
50
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"DomElementProcessorTilt3D.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/ui/bindings/processors/DomElementProcessorTilt3D.js"],"names":[],"mappings":"AAEA;IAuBI;;;;;OAKG;IACH,+BAJW,MAAM,GAEL,yBAAyB,CAcpC;IArCG;;;OAGG;IACH,OAFU,MAAM,CAEF;IAEd;;;OAGG;IACH,OAFU,MAAM,CAEF;IAEd;;;OAGG;IACH,eAAkB;IAuBtB,+BAEC;CAmDJ;oCAlGmC,2BAA2B"}
1
+ {"version":3,"file":"DomElementProcessorTilt3D.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/ui/bindings/processors/DomElementProcessorTilt3D.js"],"names":[],"mappings":"AAGA;IAuBI;;;;;OAKG;IACH,+BAJW,MAAM,GAEL,yBAAyB,CAcpC;IArCG;;;OAGG;IACH,OAFU,MAAM,CAEF;IAEd;;;OAGG;IACH,OAFU,MAAM,CAEF;IAEd;;;OAGG;IACH,eAAkB;IAuBtB,+BAEC;CAiCJ;oCAhFmC,2BAA2B"}
@@ -1,3 +1,4 @@
1
+ import { apply_pointer_tilt_3d } from "../../apply_pointer_tilt_3d.js";
1
2
  import { DomElementProcessor } from "../DomElementProcessor.js";
2
3
 
3
4
  export class DomElementProcessorTilt3D extends DomElementProcessor {
@@ -61,9 +62,6 @@ export class DomElementProcessorTilt3D extends DomElementProcessor {
61
62
 
62
63
  const p = engine.devices.pointer.position;
63
64
 
64
- const pointer_x = p.x;
65
- const pointer_y = p.y;
66
-
67
65
  const viewport_size = engine.gameView.size;
68
66
 
69
67
  /**
@@ -72,28 +70,13 @@ export class DomElementProcessorTilt3D extends DomElementProcessor {
72
70
  */
73
71
  const rect = el.getBoundingClientRect();
74
72
 
75
- const center_x = rect.left + rect.width * 0.5;
76
- const center_y = rect.top + rect.height * 0.5;
77
-
78
-
79
- const viewport_center_x = viewport_size.x * 0.5;
80
- const viewport_center_y = viewport_size.y * 0.5;
81
-
82
- const delta_x = pointer_x - center_x;
83
- const delta_y = pointer_y - center_y;
84
-
85
-
86
- const tilt_x = (delta_y / viewport_center_y);
87
- const tilt_y = -(delta_x / viewport_center_x);
88
-
89
- const radius = Math.sqrt(tilt_x * tilt_x + tilt_y * tilt_y);
90
-
91
- const angle = radius * this.angle;
92
-
93
-
94
- const style = el.style;
95
-
96
- style.transformOrigin = '50% 50%';
97
- style.transform = `rotate3d(${tilt_x},${tilt_y},0,${angle}deg) translateZ(${this.depth}px)`;
73
+ apply_pointer_tilt_3d(
74
+ el,
75
+ p.x, p.y,
76
+ rect.left + rect.width * 0.5, rect.top + rect.height * 0.5,
77
+ viewport_size.x, viewport_size.y,
78
+ this.angle,
79
+ this.depth
80
+ );
98
81
  }
99
82
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CellFilterCache.d.ts","sourceRoot":"","sources":["../../../../../src/generation/filtering/numeric/CellFilterCache.js"],"names":[],"mappings":"AAIA;IAeI;;;;;OAKG;IACH,wCAHW,MAAM,GACJ,eAAe,CAW3B;IA5BD;;;;OAIG;IACH,gBAAqC;IAErC;;;OAGG;IACH,OAFU,MAAM,CAEN;IAmBV,uCAkCC;CAKJ;yCAzEwC,qCAAqC"}
1
+ {"version":3,"file":"CellFilterCache.d.ts","sourceRoot":"","sources":["../../../../../src/generation/filtering/numeric/CellFilterCache.js"],"names":[],"mappings":"AAKA;IAeI;;;;;OAKG;IACH,wCAHW,MAAM,GACJ,eAAe,CAW3B;IA5BD;;;;OAIG;IACH,gBAAqC;IAErC;;;OAGG;IACH,OAFU,MAAM,CAEN;IAmBV,uCAgBC;CAKJ;yCAxDwC,qCAAqC"}
@@ -1,6 +1,7 @@
1
1
  import { assert } from "../../../core/assert.js";
2
2
  import { Sampler2D } from "../../../engine/graphics/texture/sampler/Sampler2D.js";
3
3
  import { CellFilterUnaryOperation } from "../core/CellFilterUnaryOperation.js";
4
+ import { write_cell_filter_to_sampler2d } from "./util/write_cell_filter_to_sampler2d.js";
4
5
 
5
6
  export class CellFilterCache extends CellFilterUnaryOperation {
6
7
 
@@ -43,31 +44,13 @@ export class CellFilterCache extends CellFilterUnaryOperation {
43
44
  const target_w = this.scale * g_w;
44
45
  const target_h = this.scale * g_h;
45
46
 
46
- const source = this.source;
47
47
  const cache = this.__cache;
48
48
 
49
49
  cache.resize(target_w, target_h);
50
50
 
51
- const scale_1 = 1 / this.scale;
52
-
53
- // console.time('Cache filter build');
54
-
55
- let x = 0;
56
- let y = 0;
57
-
58
- for (y = 0; y < target_h; y++) {
59
- const grid_y = y * scale_1;
60
-
61
- for (x = 0; x < target_w; x++) {
62
- const grid_x = x * scale_1;
63
-
64
- const sampleValue = source.execute(grid, grid_x, grid_y, 0);
65
-
66
- cache.writeChannel(x, y, 0, sampleValue);
67
- }
68
- }
69
-
70
- // console.timeEnd('Cache filter build');
51
+ // the source has already been initialized by `super.initialize`, so this must not go through
52
+ // `populateSampler2DFromCellFilter` (which would re-initialize it with seed 0)
53
+ write_cell_filter_to_sampler2d(cache, this.source, grid);
71
54
  }
72
55
 
73
56
  execute(grid, x, y, rotation) {
@@ -1 +1 @@
1
- {"version":3,"file":"CellFilterSobel.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/filtering/numeric/complex/CellFilterSobel.js"],"names":[],"mappings":"AAGA;;GAEG;AACH;IAaI;;;;OAIG;IACH,oBAHW,UAAU,GACR,eAAe,CAU3B;IAxBD;;;OAGG;IACH,QAFU,UAAU,CAEN;IAsBd,0DAuBC;CACJ;2BA1D0B,qBAAqB"}
1
+ {"version":3,"file":"CellFilterSobel.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/filtering/numeric/complex/CellFilterSobel.js"],"names":[],"mappings":"AAWA;;GAEG;AACH;IAaI;;;;OAIG;IACH,oBAHW,UAAU,GACR,eAAe,CAU3B;IAxBD;;;OAGG;IACH,QAFU,UAAU,CAEN;IAsBd,0DAMC;CACJ;2BAjD0B,qBAAqB"}
@@ -1,5 +1,13 @@
1
1
  import { CellFilter } from "../../CellFilter.js";
2
2
  import { assert } from "../../../../core/assert.js";
3
+ import { v2_length } from "../../../../core/geom/vec2/v2_length.js";
4
+ import { computeCellFilterSobel } from "../process/computeCellFilterSobel.js";
5
+
6
+ /**
7
+ * Scratch for the raw gradient. Read out before returning, so it cannot alias across nested filters.
8
+ * @type {Float64Array}
9
+ */
10
+ const scratch_gradient = new Float64Array(2);
3
11
 
4
12
  /**
5
13
  * Sobel edge-detection filter
@@ -33,27 +41,10 @@ export class CellFilterSobel extends CellFilter {
33
41
  }
34
42
 
35
43
  execute(grid, x, y, rotation) {
36
- const filter = this.source;
37
-
38
- //read surrounding points
39
- const topLeft = filter.execute(grid, x - 1, y - 1, 0);
40
- const top = filter.execute(grid, x, y - 1, 0);
41
- const topRight = filter.execute(grid, x + 1, y - 1, 0);
42
-
43
- const left = filter.execute(grid, x - 1, y, 0);
44
- const right = filter.execute(grid, x + 1, y, 0);
45
-
46
- const bottomLeft = filter.execute(grid, x - 1, y + 1, 0);
47
- const bottom = filter.execute(grid, x, y + 1, 0);
48
- const bottomRight = filter.execute(grid, x + 1, y + 1, 0);
49
-
50
- // compute gradients
51
- const dX = (topRight + 2.0 * right + bottomRight) - (topLeft + 2.0 * left + bottomLeft);
52
- const dY = (bottomLeft + 2.0 * bottom + bottomRight) - (topLeft + 2.0 * top + topRight);
53
44
 
54
- //normalize vector
55
- const magnitude = Math.sqrt(dX * dX + dY * dY);
45
+ computeCellFilterSobel(scratch_gradient, 0, this.source, grid, x, y);
56
46
 
57
- return magnitude;
47
+ //edge strength is the gradient magnitude, the direction is discarded
48
+ return v2_length(scratch_gradient[0], scratch_gradient[1]);
58
49
  }
59
50
  }
@@ -6,7 +6,7 @@ export class CellFilterPower extends CellFilterBinaryOperation {
6
6
  * @returns {CellFilterPower}
7
7
  */
8
8
  static from(value: CellFilter, power: CellFilter): CellFilterPower;
9
- execute(grid: any, x: any, y: any, rotation: any): number;
9
+ operation(value: any, power: any): number;
10
10
  }
11
11
  import { CellFilterBinaryOperation } from "../../core/CellFilterBinaryOperation.js";
12
12
  //# sourceMappingURL=CellFilterPower.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CellFilterPower.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/filtering/numeric/math/CellFilterPower.js"],"names":[],"mappings":"AAGA;IAGI;;;;;OAKG;IACH,mDAFa,eAAe,CAY3B;IAED,0DAKC;CACJ;0CA9ByC,yCAAyC"}
1
+ {"version":3,"file":"CellFilterPower.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/filtering/numeric/math/CellFilterPower.js"],"names":[],"mappings":"AAGA;IAEI;;;;;OAKG;IACH,mDAFa,eAAe,CAY3B;IAED,0CAEC;CACJ;0CA1ByC,yCAAyC"}
@@ -3,7 +3,6 @@ import { assert } from "../../../../core/assert.js";
3
3
 
4
4
  export class CellFilterPower extends CellFilterBinaryOperation {
5
5
 
6
-
7
6
  /**
8
7
  *
9
8
  * @param {CellFilter} value
@@ -22,10 +21,7 @@ export class CellFilterPower extends CellFilterBinaryOperation {
22
21
  return r;
23
22
  }
24
23
 
25
- execute(grid, x, y, rotation) {
26
- const value = this.left.execute(grid, x, y, rotation);
27
- const power = this.right.execute(grid, x, y, rotation);
28
-
24
+ operation(value, power) {
29
25
  return Math.pow(value, power);
30
26
  }
31
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"computeCellFilterGradient.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/filtering/numeric/process/computeCellFilterGradient.js"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,kDATW,MAAM,EAAE,KACR,MAAM,KACN,MAAM,uCAKJ,OAAO,CAsCnB"}
1
+ {"version":3,"file":"computeCellFilterGradient.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/filtering/numeric/process/computeCellFilterGradient.js"],"names":[],"mappings":"AASA;;;;;;;;;;GAUG;AACH,kDATW,MAAM,EAAE,KACR,MAAM,KACN,MAAM,uCAKJ,OAAO,CA2BnB"}
@@ -1,3 +1,12 @@
1
+ import { v2_length } from "../../../../core/geom/vec2/v2_length.js";
2
+ import { computeCellFilterSobel } from "./computeCellFilterSobel.js";
3
+
4
+ /**
5
+ * Scratch for the raw gradient. Read out before `result` is written, so `result` may alias it.
6
+ * @type {Float64Array}
7
+ */
8
+ const scratch_gradient = new Float64Array(2);
9
+
1
10
  /**
2
11
  *
3
12
  * @param {number[]} result
@@ -11,24 +20,13 @@
11
20
  */
12
21
  export function computeCellFilterGradient(result, x, y, filter, grid) {
13
22
 
14
- //read surrounding points
15
- const topLeft = filter.execute(grid, x - 1, y - 1, 0);
16
- const top = filter.execute(grid, x, y - 1, 0);
17
- const topRight = filter.execute(grid, x + 1, y - 1, 0);
18
-
19
- const left = filter.execute(grid, x - 1, y, 0);
20
- const right = filter.execute(grid, x + 1, y, 0);
21
-
22
- const bottomLeft = filter.execute(grid, x - 1, y + 1, 0);
23
- const bottom = filter.execute(grid, x, y + 1, 0);
24
- const bottomRight = filter.execute(grid, x + 1, y + 1, 0);
23
+ computeCellFilterSobel(scratch_gradient, 0, filter, grid, x, y);
25
24
 
26
- // compute gradients
27
- const dX = (topRight + 2.0 * right + bottomRight) - (topLeft + 2.0 * left + bottomLeft);
28
- const dY = (bottomLeft + 2.0 * bottom + bottomRight) - (topLeft + 2.0 * top + topRight);
25
+ const dX = scratch_gradient[0];
26
+ const dY = scratch_gradient[1];
29
27
 
30
28
  //normalize vector
31
- const magnitude = Math.sqrt(dX * dX + dY * dY);
29
+ const magnitude = v2_length(dX, dY);
32
30
 
33
31
  if (magnitude === 0) {
34
32
  result[0] = 0;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Apply the 3x3 Sobel operator to a {@link CellFilter} at a grid position, writing the raw
3
+ * (un-normalized) gradient vector into `result`.
4
+ *
5
+ * This exists so that the eight-tap read and the operator's kernel weights have a single
6
+ * definition: everything downstream of the taps (magnitude, direction, thresholding) differs
7
+ * between callers, but the taps themselves must not.
8
+ *
9
+ * The source filter is sampled at rotation 0 — the operator is defined in grid space, so rotating
10
+ * the taps would rotate the reported gradient with them and cancel out.
11
+ *
12
+ * @param {Float64Array|Float32Array|number[]} result receives `[dX, dY]`
13
+ * @param {number} result_offset
14
+ * @param {CellFilter} filter
15
+ * @param {GridData} grid
16
+ * @param {number} x
17
+ * @param {number} y
18
+ */
19
+ export function computeCellFilterSobel(result: Float64Array | Float32Array | number[], result_offset: number, filter: CellFilter, grid: GridData, x: number, y: number): void;
20
+ //# sourceMappingURL=computeCellFilterSobel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"computeCellFilterSobel.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/filtering/numeric/process/computeCellFilterSobel.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,+CAPW,YAAY,GAAC,YAAY,GAAC,MAAM,EAAE,iBAClC,MAAM,yCAGN,MAAM,KACN,MAAM,QAmBhB"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Apply the 3x3 Sobel operator to a {@link CellFilter} at a grid position, writing the raw
3
+ * (un-normalized) gradient vector into `result`.
4
+ *
5
+ * This exists so that the eight-tap read and the operator's kernel weights have a single
6
+ * definition: everything downstream of the taps (magnitude, direction, thresholding) differs
7
+ * between callers, but the taps themselves must not.
8
+ *
9
+ * The source filter is sampled at rotation 0 — the operator is defined in grid space, so rotating
10
+ * the taps would rotate the reported gradient with them and cancel out.
11
+ *
12
+ * @param {Float64Array|Float32Array|number[]} result receives `[dX, dY]`
13
+ * @param {number} result_offset
14
+ * @param {CellFilter} filter
15
+ * @param {GridData} grid
16
+ * @param {number} x
17
+ * @param {number} y
18
+ */
19
+ export function computeCellFilterSobel(result, result_offset, filter, grid, x, y) {
20
+
21
+ //read surrounding points
22
+ const topLeft = filter.execute(grid, x - 1, y - 1, 0);
23
+ const top = filter.execute(grid, x, y - 1, 0);
24
+ const topRight = filter.execute(grid, x + 1, y - 1, 0);
25
+
26
+ const left = filter.execute(grid, x - 1, y, 0);
27
+ const right = filter.execute(grid, x + 1, y, 0);
28
+
29
+ const bottomLeft = filter.execute(grid, x - 1, y + 1, 0);
30
+ const bottom = filter.execute(grid, x, y + 1, 0);
31
+ const bottomRight = filter.execute(grid, x + 1, y + 1, 0);
32
+
33
+ // compute gradients
34
+ result[result_offset] = (topRight + 2.0 * right + bottomRight) - (topLeft + 2.0 * left + bottomLeft);
35
+ result[result_offset + 1] = (bottomLeft + 2.0 * bottom + bottomRight) - (topLeft + 2.0 * top + topRight);
36
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"CellFilterDisplaced.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/filtering/numeric/util/CellFilterDisplaced.js"],"names":[],"mappings":"AAIA;IAQI;;;;;;OAMG;IACH,mCAJW,MAAM,KACN,MAAM,GACL,mBAAmB,CAW9B;IAvBD;;;OAGG;IACH,iBAFU,OAAO,CAEM;CAmC1B;yCA5CwC,wCAAwC;oBAC7D,kCAAkC"}
1
+ {"version":3,"file":"CellFilterDisplaced.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/filtering/numeric/util/CellFilterDisplaced.js"],"names":[],"mappings":"AAWA;IAQI;;;;;;OAMG;IACH,mCAJW,MAAM,KACN,MAAM,GACL,mBAAmB,CAW9B;IAvBD;;;OAGG;IACH,iBAFU,OAAO,CAEM;CAiC1B;yCAjDwC,wCAAwC;oBAC7D,kCAAkC"}
@@ -1,7 +1,14 @@
1
1
  import { CellFilterUnaryOperation } from "../../core/CellFilterUnaryOperation.js";
2
2
  import Vector2 from "../../../../core/geom/Vector2.js";
3
+ import { v2_rotate } from "../../../../core/geom/vec2/v2_rotate.js";
3
4
  import { assert } from "../../../../core/assert.js";
4
5
 
6
+ /**
7
+ * Scratch for the rotated offset. Read out before any nested filter call, so it cannot alias.
8
+ * @type {Float64Array}
9
+ */
10
+ const scratch_offset = new Float64Array(2);
11
+
5
12
  export class CellFilterDisplaced extends CellFilterUnaryOperation {
6
13
  /**
7
14
  * @readonly
@@ -30,14 +37,12 @@ export class CellFilterDisplaced extends CellFilterUnaryOperation {
30
37
 
31
38
  execute(grid, x, y, rotation) {
32
39
 
33
- const sin = Math.sin(rotation);
34
- const cos = Math.cos(rotation);
40
+ const offset = this.offset;
35
41
 
36
- const local_x = this.offset.x;
37
- const local_y = this.offset.y;
42
+ v2_rotate(scratch_offset, 0, offset.x, offset.y, rotation);
38
43
 
39
- const rotated_local_x = local_x * cos - local_y * sin
40
- const rotated_local_y = local_x * sin + local_y * cos;
44
+ const rotated_local_x = scratch_offset[0];
45
+ const rotated_local_y = scratch_offset[1];
41
46
 
42
47
  return this.source.execute(grid, x + rotated_local_x, y + rotated_local_y, rotation);
43
48
 
@@ -1 +1 @@
1
- {"version":3,"file":"populateSampler2DFromCellFilter.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/filtering/numeric/util/populateSampler2DFromCellFilter.js"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,2FA2BC"}
1
+ {"version":3,"file":"populateSampler2DFromCellFilter.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/filtering/numeric/util/populateSampler2DFromCellFilter.js"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,2FAQC"}
@@ -1,36 +1,18 @@
1
- import { assert } from "../../../../core/assert.js";
2
-
3
- /**
4
- * Utility function, mainly useful for visualizing filter values
5
- * @param {Sampler2D} result
6
- * @param {CellFilter} filter
7
- * @param {GridData} grid
8
- */
9
- export function populateSampler2DFromCellFilter({ result, filter, grid }) {
10
- assert.defined(result,'result');
11
- assert.defined(filter,'filter');
12
- assert.defined(grid,'grid');
13
-
14
- filter.ensureInitialized(grid, 0);
15
-
16
- // ratio mapping, texel t of the result represents grid t / scale (see generation/COORDINATES.md)
17
- const scale_x = result.width / grid.width;
18
- const scale_y = result.height / grid.height;
19
-
20
- const result_height = result.height;
21
-
22
- for (let y = 0; y < result_height; y++) {
23
-
24
- const grid_y = y / scale_y;
25
-
26
- for (let x = 0; x < result.width; x++) {
27
-
28
- const grid_x = x / scale_x;
29
-
30
- const filterValue = filter.execute(grid, grid_x, grid_y, 0);
31
-
32
- result.writeChannel(x, y, 0, filterValue);
33
-
34
- }
35
- }
36
- }
1
+ import { assert } from "../../../../core/assert.js";
2
+ import { write_cell_filter_to_sampler2d } from "./write_cell_filter_to_sampler2d.js";
3
+
4
+ /**
5
+ * Utility function, mainly useful for visualizing filter values
6
+ * @param {Sampler2D} result
7
+ * @param {CellFilter} filter
8
+ * @param {GridData} grid
9
+ */
10
+ export function populateSampler2DFromCellFilter({ result, filter, grid }) {
11
+ assert.defined(result,'result');
12
+ assert.defined(filter,'filter');
13
+ assert.defined(grid,'grid');
14
+
15
+ filter.ensureInitialized(grid, 0);
16
+
17
+ write_cell_filter_to_sampler2d(result, filter, grid);
18
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Rasterize a {@link CellFilter} into channel 0 of a {@link Sampler2D} that covers the whole grid.
3
+ *
4
+ * The sampler may be at a different resolution than the grid; the mapping is the plain ratio
5
+ * (texel t of the result represents grid `t / scale`, see `generation/COORDINATES.md`). That
6
+ * convention is the reason this lives in one place: every rasterization of a filter must agree with
7
+ * it, and a second hand-rolled loop is a second place for it to drift.
8
+ *
9
+ * The filter must already be initialized — this function deliberately does not call
10
+ * `ensureInitialized`, so that callers rasterizing during their own `initialize` (where the source
11
+ * has already been initialized with the real seed) are not forced through a seed-0 re-initialize.
12
+ *
13
+ * The filter is evaluated at rotation 0: a raster covers the grid in grid space, there is no
14
+ * placement orientation to propagate.
15
+ *
16
+ * @param {Sampler2D} result
17
+ * @param {CellFilter} filter
18
+ * @param {GridData} grid
19
+ */
20
+ export function write_cell_filter_to_sampler2d(result: Sampler2D, filter: CellFilter, grid: GridData): void;
21
+ //# sourceMappingURL=write_cell_filter_to_sampler2d.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write_cell_filter_to_sampler2d.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/filtering/numeric/util/write_cell_filter_to_sampler2d.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AACH,4GAyBC"}
@@ -0,0 +1,47 @@
1
+ import { assert } from "../../../../core/assert.js";
2
+
3
+ /**
4
+ * Rasterize a {@link CellFilter} into channel 0 of a {@link Sampler2D} that covers the whole grid.
5
+ *
6
+ * The sampler may be at a different resolution than the grid; the mapping is the plain ratio
7
+ * (texel t of the result represents grid `t / scale`, see `generation/COORDINATES.md`). That
8
+ * convention is the reason this lives in one place: every rasterization of a filter must agree with
9
+ * it, and a second hand-rolled loop is a second place for it to drift.
10
+ *
11
+ * The filter must already be initialized — this function deliberately does not call
12
+ * `ensureInitialized`, so that callers rasterizing during their own `initialize` (where the source
13
+ * has already been initialized with the real seed) are not forced through a seed-0 re-initialize.
14
+ *
15
+ * The filter is evaluated at rotation 0: a raster covers the grid in grid space, there is no
16
+ * placement orientation to propagate.
17
+ *
18
+ * @param {Sampler2D} result
19
+ * @param {CellFilter} filter
20
+ * @param {GridData} grid
21
+ */
22
+ export function write_cell_filter_to_sampler2d(result, filter, grid) {
23
+ assert.defined(result, 'result');
24
+ assert.defined(filter, 'filter');
25
+ assert.defined(grid, 'grid');
26
+
27
+ const result_width = result.width;
28
+ const result_height = result.height;
29
+
30
+ const scale_x = result_width / grid.width;
31
+ const scale_y = result_height / grid.height;
32
+
33
+ for (let y = 0; y < result_height; y++) {
34
+
35
+ const grid_y = y / scale_y;
36
+
37
+ for (let x = 0; x < result_width; x++) {
38
+
39
+ const grid_x = x / scale_x;
40
+
41
+ const filterValue = filter.execute(grid, grid_x, grid_y, 0);
42
+
43
+ result.writeChannel(x, y, 0, filterValue);
44
+
45
+ }
46
+ }
47
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Pick one element out of a set of {@link CellFilter}-weighted alternatives, evaluating each weight
3
+ * at a single grid position.
4
+ *
5
+ * This exists because the weighted-alternative combinator is written once per node hierarchy
6
+ * (`MarkerNodeAction`, `GridCellAction`, ...) and the *shape* of those classes is deliberately
7
+ * duplicated, but the selection *logic* — evaluating the weights, clamping negatives, building the
8
+ * CDF and the "nothing is selectable here" contract — is not, and must stay identical between them.
9
+ *
10
+ * Weight filters are always evaluated at rotation 0: a weight is a property of the position, not of
11
+ * the orientation the alternative will eventually be placed with.
12
+ *
13
+ * @param {function():number} random RNG returning values in [0, 1). Consumed exactly once, and only
14
+ * when at least one element carries positive weight.
15
+ * @param {{weight:CellFilter}[]} elements weighted alternatives, in a stable order
16
+ * @param {GridData} grid
17
+ * @param {number} x
18
+ * @param {number} y
19
+ * @returns {number} index into `elements`, or -1 when every element has zero weight at this
20
+ * position — in which case the caller must select nothing rather than fall back to a uniform pick
21
+ */
22
+ export function cell_filter_weights_pick(random: () => number, elements: {
23
+ weight: CellFilter;
24
+ }[], grid: GridData, x: number, y: number): number;
25
+ //# sourceMappingURL=cell_filter_weights_pick.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cell_filter_weights_pick.d.ts","sourceRoot":"","sources":["../../../../../src/generation/filtering/util/cell_filter_weights_pick.js"],"names":[],"mappings":"AAaA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,uDATsB,MAAM,YAEjB;IAAC,MAAM,aAAW;CAAC,EAAE,qBAErB,MAAM,KACN,MAAM,GACJ,MAAM,CAsBlB"}
@@ -0,0 +1,54 @@
1
+ import { random_pick_weighted_index } from "../../../core/math/random/random_pick_weighted_index.js";
2
+
3
+ /**
4
+ * Cumulative (inclusive prefix-sum) weight scratch.
5
+ *
6
+ * Shared across all callers because the pick is a single synchronous span: the weights are produced
7
+ * by {@link CellFilter#execute}, which evaluates the filter graph only and cannot re-enter an
8
+ * action, and the selected action is invoked after the pick has returned.
9
+ *
10
+ * @type {number[]}
11
+ */
12
+ const cumulative_weights = [];
13
+
14
+ /**
15
+ * Pick one element out of a set of {@link CellFilter}-weighted alternatives, evaluating each weight
16
+ * at a single grid position.
17
+ *
18
+ * This exists because the weighted-alternative combinator is written once per node hierarchy
19
+ * (`MarkerNodeAction`, `GridCellAction`, ...) and the *shape* of those classes is deliberately
20
+ * duplicated, but the selection *logic* — evaluating the weights, clamping negatives, building the
21
+ * CDF and the "nothing is selectable here" contract — is not, and must stay identical between them.
22
+ *
23
+ * Weight filters are always evaluated at rotation 0: a weight is a property of the position, not of
24
+ * the orientation the alternative will eventually be placed with.
25
+ *
26
+ * @param {function():number} random RNG returning values in [0, 1). Consumed exactly once, and only
27
+ * when at least one element carries positive weight.
28
+ * @param {{weight:CellFilter}[]} elements weighted alternatives, in a stable order
29
+ * @param {GridData} grid
30
+ * @param {number} x
31
+ * @param {number} y
32
+ * @returns {number} index into `elements`, or -1 when every element has zero weight at this
33
+ * position — in which case the caller must select nothing rather than fall back to a uniform pick
34
+ */
35
+ export function cell_filter_weights_pick(random, elements, grid, x, y) {
36
+
37
+ const n = elements.length;
38
+
39
+ let totalWeight = 0;
40
+
41
+ for (let i = 0; i < n; i++) {
42
+
43
+ const weightValue = elements[i].weight.execute(grid, x, y, 0);
44
+
45
+ if (weightValue > 0) {
46
+ //if the weight is negative, we clamp it to 0
47
+ totalWeight += weightValue;
48
+ }
49
+
50
+ cumulative_weights[i] = totalWeight;
51
+ }
52
+
53
+ return random_pick_weighted_index(random, cumulative_weights, n);
54
+ }