@woosh/meep-engine 2.156.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.
Files changed (654) hide show
  1. package/README.md +1 -3
  2. package/editor/view/ecs/components/common/AutoCanvasView.js +100 -53
  3. package/editor/view/ecs/components/common/TextController.js +59 -0
  4. package/editor/view/node-graph/NodeGraphCamera.js +90 -0
  5. package/editor/view/node-graph/NodeGraphEditorView.js +121 -22
  6. package/editor/view/node-graph/NodeGraphSelection.js +89 -0
  7. package/editor/view/node-graph/NodeGraphView.js +669 -453
  8. package/editor/view/node-graph/NodeView.js +211 -135
  9. package/editor/view/node-graph/actions/ConnectionCreateAction.js +53 -0
  10. package/editor/view/node-graph/actions/ConnectionDeleteAction.js +36 -0
  11. package/editor/view/node-graph/actions/NodeDeleteAction.js +88 -0
  12. package/editor/view/node-graph/actions/NodeParameterSetAction.js +52 -0
  13. package/editor/view/node-graph/actions/NodesMoveAction.js +41 -0
  14. package/editor/view/node-graph/actions/SelectionSetAction.js +60 -0
  15. package/editor/view/node-graph/connection_wire_geometry.js +107 -0
  16. package/package.json +1 -1
  17. package/samples/generation/SampleGenerator0.js +8 -1
  18. package/src/core/binary/reinterpret_float32_as_uint32.d.ts +7 -0
  19. package/src/core/binary/reinterpret_float32_as_uint32.d.ts.map +1 -0
  20. package/src/core/binary/reinterpret_float32_as_uint32.js +13 -0
  21. package/src/core/binary/reinterpret_uint32_as_float32.d.ts +7 -0
  22. package/src/core/binary/reinterpret_uint32_as_float32.d.ts.map +1 -0
  23. package/src/core/binary/reinterpret_uint32_as_float32.js +14 -0
  24. package/src/core/bvh2/bvh3/ebvh_build_for_geometry_incremental.d.ts.map +1 -1
  25. package/src/core/bvh2/bvh3/ebvh_build_for_geometry_incremental.js +1 -3
  26. package/src/core/bvh2/bvh3/query/bvh_query_user_data_overlaps_sphere.d.ts +12 -0
  27. package/src/core/bvh2/bvh3/query/bvh_query_user_data_overlaps_sphere.d.ts.map +1 -0
  28. package/src/core/bvh2/bvh3/query/bvh_query_user_data_overlaps_sphere.js +92 -0
  29. package/src/core/bvh8/BVH8.d.ts +127 -0
  30. package/src/core/bvh8/BVH8.d.ts.map +1 -0
  31. package/src/core/bvh8/BVH8.js +436 -0
  32. package/src/core/bvh8/NOTES.md +63 -0
  33. package/src/core/bvh8/build/BVH8Converter.d.ts +59 -0
  34. package/src/core/bvh8/build/BVH8Converter.d.ts.map +1 -0
  35. package/src/core/bvh8/build/BVH8Converter.js +588 -0
  36. package/src/core/bvh8/build/NodeProxy.d.ts +66 -0
  37. package/src/core/bvh8/build/NodeProxy.d.ts.map +1 -0
  38. package/src/core/bvh8/build/NodeProxy.js +308 -0
  39. package/src/core/bvh8/build/TriangleCluster.d.ts +29 -0
  40. package/src/core/bvh8/build/TriangleCluster.d.ts.map +1 -0
  41. package/src/core/bvh8/build/TriangleCluster.js +123 -0
  42. package/src/core/bvh8/build/aabb3_compute_merge_cost.d.ts +8 -0
  43. package/src/core/bvh8/build/aabb3_compute_merge_cost.d.ts.map +1 -0
  44. package/src/core/bvh8/build/aabb3_compute_merge_cost.js +29 -0
  45. package/src/core/bvh8/build/aabb3_from_triangle_by_index.d.ts +10 -0
  46. package/src/core/bvh8/build/aabb3_from_triangle_by_index.d.ts.map +1 -0
  47. package/src/core/bvh8/build/aabb3_from_triangle_by_index.js +18 -0
  48. package/src/core/bvh8/build/bvh8_build_for_geometry.d.ts +10 -0
  49. package/src/core/bvh8/build/bvh8_build_for_geometry.d.ts.map +1 -0
  50. package/src/core/bvh8/build/bvh8_build_for_geometry.js +303 -0
  51. package/src/core/bvh8/build/bvh8_from_proxy.d.ts +9 -0
  52. package/src/core/bvh8/build/bvh8_from_proxy.d.ts.map +1 -0
  53. package/src/core/bvh8/build/bvh8_from_proxy.js +256 -0
  54. package/src/core/bvh8/build/byte.d.ts +7 -0
  55. package/src/core/bvh8/build/byte.d.ts.map +1 -0
  56. package/src/core/bvh8/build/byte.js +10 -0
  57. package/src/core/bvh8/build/encode_bounds_e.d.ts +9 -0
  58. package/src/core/bvh8/build/encode_bounds_e.d.ts.map +1 -0
  59. package/src/core/bvh8/build/encode_bounds_e.js +12 -0
  60. package/src/core/bvh8/bvh8_convert_to_dot.d.ts +11 -0
  61. package/src/core/bvh8/bvh8_convert_to_dot.d.ts.map +1 -0
  62. package/src/core/bvh8/bvh8_convert_to_dot.js +133 -0
  63. package/src/core/bvh8/bvh8_count_primitives.d.ts +22 -0
  64. package/src/core/bvh8/bvh8_count_primitives.d.ts.map +1 -0
  65. package/src/core/bvh8/bvh8_count_primitives.js +98 -0
  66. package/src/core/bvh8/bvh8_geometry_validate.d.ts +16 -0
  67. package/src/core/bvh8/bvh8_geometry_validate.d.ts.map +1 -0
  68. package/src/core/bvh8/bvh8_geometry_validate.js +149 -0
  69. package/src/core/bvh8/bvh8_geometry_validate_indirect.d.ts +16 -0
  70. package/src/core/bvh8/bvh8_geometry_validate_indirect.d.ts.map +1 -0
  71. package/src/core/bvh8/bvh8_geometry_validate_indirect.js +177 -0
  72. package/src/core/bvh8/bvh8_get_node_bounds.d.ts +9 -0
  73. package/src/core/bvh8/bvh8_get_node_bounds.d.ts.map +1 -0
  74. package/src/core/bvh8/bvh8_get_node_bounds.js +35 -0
  75. package/src/core/bvh8/bvh8_get_node_child_bounds.d.ts +10 -0
  76. package/src/core/bvh8/bvh8_get_node_child_bounds.d.ts.map +1 -0
  77. package/src/core/bvh8/bvh8_get_node_child_bounds.js +53 -0
  78. package/src/core/bvh8/bvh8_node_child_surface_area.d.ts +9 -0
  79. package/src/core/bvh8/bvh8_node_child_surface_area.d.ts.map +1 -0
  80. package/src/core/bvh8/bvh8_node_child_surface_area.js +18 -0
  81. package/src/core/bvh8/bvh8_node_count_triangles.d.ts +8 -0
  82. package/src/core/bvh8/bvh8_node_count_triangles.d.ts.map +1 -0
  83. package/src/core/bvh8/bvh8_node_count_triangles.js +28 -0
  84. package/src/core/bvh8/bvh8_quality.d.ts +8 -0
  85. package/src/core/bvh8/bvh8_quality.d.ts.map +1 -0
  86. package/src/core/bvh8/bvh8_quality.js +73 -0
  87. package/src/core/bvh8/bvh8_validate_structure.d.ts +15 -0
  88. package/src/core/bvh8/bvh8_validate_structure.d.ts.map +1 -0
  89. package/src/core/bvh8/bvh8_validate_structure.js +87 -0
  90. package/src/core/collection/Uint32MinHeap.d.ts +56 -0
  91. package/src/core/collection/Uint32MinHeap.d.ts.map +1 -0
  92. package/src/core/collection/Uint32MinHeap.js +109 -0
  93. package/src/core/collection/list/FilteredListProjection.js +1 -1
  94. package/src/{engine/physics/island → core/collection/union-find}/union_find.d.ts +8 -5
  95. package/src/core/collection/union-find/union_find.d.ts.map +1 -0
  96. package/src/{engine/physics/island → core/collection/union-find}/union_find.js +8 -5
  97. package/src/core/dom/isImageBitmap.d.ts +7 -0
  98. package/src/core/dom/isImageBitmap.d.ts.map +1 -0
  99. package/src/core/dom/isImageBitmap.js +12 -0
  100. package/src/core/function/frameThrottle.d.ts +8 -0
  101. package/src/core/function/frameThrottle.d.ts.map +1 -0
  102. package/src/core/function/frameThrottle.js +23 -0
  103. package/src/{engine/physics/narrowphase/clip_against_axis_uv.d.ts → core/geom/2d/polygon/polygon2_clip_axis_halfplane.d.ts} +3 -3
  104. package/src/core/geom/2d/polygon/polygon2_clip_axis_halfplane.d.ts.map +1 -0
  105. package/src/{engine/physics/narrowphase/clip_against_axis_uv.js → core/geom/2d/polygon/polygon2_clip_axis_halfplane.js} +51 -51
  106. package/src/{engine/physics/narrowphase/decomposition/aabb_world_to_local.d.ts → core/geom/3d/aabb/aabb3_transform_oriented_inverse.d.ts} +9 -7
  107. package/src/core/geom/3d/aabb/aabb3_transform_oriented_inverse.d.ts.map +1 -0
  108. package/src/{engine/physics/narrowphase/decomposition/aabb_world_to_local.js → core/geom/3d/aabb/aabb3_transform_oriented_inverse.js} +9 -7
  109. package/src/core/geom/3d/aabb/compute_triangle_group_aabb3.d.ts +12 -0
  110. package/src/core/geom/3d/aabb/compute_triangle_group_aabb3.d.ts.map +1 -0
  111. package/src/core/geom/3d/aabb/compute_triangle_group_aabb3.js +46 -0
  112. package/src/core/geom/3d/box/box3_projected_half_extent.d.ts +28 -0
  113. package/src/core/geom/3d/box/box3_projected_half_extent.d.ts.map +1 -0
  114. package/src/core/geom/3d/box/box3_projected_half_extent.js +35 -0
  115. package/src/core/geom/3d/frustum/read_cluster_frustum_corners.js +1 -1
  116. package/src/core/geom/3d/frustum/read_frustum_corner.d.ts +9 -0
  117. package/src/core/geom/3d/frustum/read_frustum_corner.d.ts.map +1 -0
  118. package/src/core/geom/3d/frustum/read_frustum_corner.js +14 -0
  119. package/src/core/geom/3d/gjk/gjk.d.ts.map +1 -0
  120. package/src/{engine/physics → core/geom/3d}/gjk/gjk.js +430 -372
  121. package/src/{engine/physics → core/geom/3d}/gjk/gjk_epa_penetration.d.ts +8 -5
  122. package/src/core/geom/3d/gjk/gjk_epa_penetration.d.ts.map +1 -0
  123. package/src/{engine/physics → core/geom/3d}/gjk/gjk_epa_penetration.js +520 -544
  124. package/src/{engine/physics → core/geom/3d}/gjk/minkowski_support.d.ts +5 -4
  125. package/src/core/geom/3d/gjk/minkowski_support.d.ts.map +1 -0
  126. package/src/{engine/physics → core/geom/3d}/gjk/minkowski_support.js +71 -70
  127. package/src/{engine/physics → core/geom/3d}/gjk/mpr.d.ts +3 -3
  128. package/src/core/geom/3d/gjk/mpr.d.ts.map +1 -0
  129. package/src/{engine/physics → core/geom/3d}/gjk/mpr.js +368 -362
  130. package/src/{engine/physics/integration/quat_integrate.d.ts → core/geom/3d/quaternion/quat3_integrate.d.ts} +2 -2
  131. package/src/core/geom/3d/quaternion/quat3_integrate.d.ts.map +1 -0
  132. package/src/{engine/physics/integration/quat_integrate.js → core/geom/3d/quaternion/quat3_integrate.js} +1 -1
  133. package/src/{engine/physics/narrowphase/PosedShape.d.ts → core/geom/3d/shape/PosedShape3D.d.ts} +9 -8
  134. package/src/{engine/physics/narrowphase/PosedShape.d.ts.map → core/geom/3d/shape/PosedShape3D.d.ts.map} +1 -1
  135. package/src/{engine/physics/narrowphase/PosedShape.js → core/geom/3d/shape/PosedShape3D.js} +10 -9
  136. package/src/core/geom/3d/shape/TransformedShape3D.d.ts.map +1 -1
  137. package/src/core/geom/3d/shape/TransformedShape3D.js +15 -11
  138. package/src/core/geom/vec3/v3_quat3_apply_inverse.d.ts +1 -1
  139. package/src/core/geom/vec3/v3_quat3_apply_inverse.js +1 -1
  140. package/src/core/math/complex/complex_add.d.ts +1 -1
  141. package/src/core/math/complex/complex_add.d.ts.map +1 -1
  142. package/src/core/math/complex/complex_add.js +12 -3
  143. package/src/core/math/complex/complex_div.d.ts +1 -1
  144. package/src/core/math/complex/complex_div.d.ts.map +1 -1
  145. package/src/core/math/complex/complex_div.js +11 -4
  146. package/src/core/math/complex/complex_mul.d.ts +1 -1
  147. package/src/core/math/complex/complex_mul.d.ts.map +1 -1
  148. package/src/core/math/complex/complex_mul.js +10 -3
  149. package/src/core/math/complex/complex_sub.d.ts +1 -1
  150. package/src/core/math/complex/complex_sub.d.ts.map +1 -1
  151. package/src/core/math/complex/complex_sub.js +12 -3
  152. package/src/{engine/physics/fluid/solver/optimal_sor_omega.d.ts → core/math/linalg/sor_optimal_omega.d.ts} +4 -3
  153. package/src/core/math/linalg/sor_optimal_omega.d.ts.map +1 -0
  154. package/src/{engine/physics/fluid/solver/optimal_sor_omega.js → core/math/linalg/sor_optimal_omega.js} +4 -3
  155. package/src/core/math/lookup/ParameterLookupTable.d.ts +123 -0
  156. package/src/core/math/lookup/ParameterLookupTable.d.ts.map +1 -0
  157. package/src/core/math/lookup/ParameterLookupTable.js +495 -0
  158. package/src/core/math/lookup/ParameterLookupTableFlags.d.ts +5 -0
  159. package/src/core/math/lookup/ParameterLookupTableFlags.d.ts.map +1 -0
  160. package/src/core/math/lookup/ParameterLookupTableFlags.js +6 -0
  161. package/src/core/math/physics/kinematics/computeInterceptPoint.d.ts.map +1 -0
  162. package/src/{engine/physics → core/math/physics/kinematics}/computeInterceptPoint.js +79 -79
  163. package/src/core/math/physics/mie/ri_air.d.ts.map +1 -1
  164. package/src/core/math/physics/mie/ri_air.js +1 -3
  165. package/src/core/math/physics/mie/ri_ammonium_sulfate.d.ts.map +1 -1
  166. package/src/core/math/physics/mie/ri_ammonium_sulfate.js +1 -3
  167. package/src/core/math/physics/mie/ri_brine.d.ts.map +1 -1
  168. package/src/core/math/physics/mie/ri_brine.js +1 -3
  169. package/src/core/math/physics/mie/ri_dust.d.ts.map +1 -1
  170. package/src/core/math/physics/mie/ri_dust.js +1 -3
  171. package/src/core/math/physics/mie/ri_pollen.d.ts.map +1 -1
  172. package/src/core/math/physics/mie/ri_pollen.js +1 -3
  173. package/src/core/math/physics/mie/ri_smoke.d.ts.map +1 -1
  174. package/src/core/math/physics/mie/ri_smoke.js +1 -3
  175. package/src/core/math/physics/mie/ri_soot.d.ts.map +1 -1
  176. package/src/core/math/physics/mie/ri_soot.js +1 -3
  177. package/src/core/math/physics/mie/ri_water.d.ts.map +1 -1
  178. package/src/core/math/physics/mie/ri_water.js +1 -3
  179. package/src/core/math/random/random_pick_weighted_index.d.ts +10 -0
  180. package/src/core/math/random/random_pick_weighted_index.d.ts.map +1 -0
  181. package/src/core/math/random/random_pick_weighted_index.js +26 -0
  182. package/src/core/model/node-graph/NodeGraph.d.ts +9 -0
  183. package/src/core/model/node-graph/NodeGraph.d.ts.map +1 -1
  184. package/src/core/model/node-graph/NodeGraph.js +38 -0
  185. package/src/core/model/node-graph/visual/NodeGraphVisualData.d.ts +23 -0
  186. package/src/core/model/node-graph/visual/NodeGraphVisualData.d.ts.map +1 -1
  187. package/src/core/model/node-graph/visual/NodeGraphVisualData.js +54 -0
  188. package/src/core/path/convertPathToURL.d.ts +9 -0
  189. package/src/core/path/convertPathToURL.d.ts.map +1 -0
  190. package/src/core/path/convertPathToURL.js +107 -0
  191. package/src/core/process/worker/WorkerBuilder.js +1 -1
  192. package/src/core/process/worker/extractTransferables.js +1 -1
  193. package/src/engine/animation/curve/draw/build_tangent_editor.d.ts.map +1 -1
  194. package/src/engine/animation/curve/draw/build_tangent_editor.js +8 -1
  195. package/src/engine/animation/curve/editor/createKeyframeDraggableAspect.d.ts.map +1 -1
  196. package/src/engine/animation/curve/editor/createKeyframeDraggableAspect.js +11 -5
  197. package/src/engine/asset/Asset.d.ts.map +1 -1
  198. package/src/engine/asset/Asset.js +16 -6
  199. package/src/engine/asset/AssetManager.d.ts +61 -52
  200. package/src/engine/asset/AssetManager.d.ts.map +1 -1
  201. package/src/engine/asset/AssetManager.js +1411 -1045
  202. package/src/engine/asset/AssetRequest.d.ts +1 -1
  203. package/src/engine/asset/AssetRequest.d.ts.map +1 -1
  204. package/src/engine/asset/AssetRequest.js +1 -1
  205. package/src/engine/asset/AssetRequestScope.d.ts.map +1 -1
  206. package/src/engine/asset/AssetRequestScope.js +7 -0
  207. package/src/engine/asset/PendingAsset.d.ts +32 -1
  208. package/src/engine/asset/PendingAsset.d.ts.map +1 -1
  209. package/src/engine/asset/PendingAsset.js +108 -61
  210. package/src/engine/asset/loaders/ArrayBufferLoader.js +2 -2
  211. package/src/engine/asset/loaders/AssetLoader.d.ts.map +1 -1
  212. package/src/engine/asset/loaders/AssetLoader.js +19 -2
  213. package/src/engine/asset/loaders/GLTFAssetLoader.d.ts.map +1 -1
  214. package/src/engine/asset/loaders/GLTFAssetLoader.js +123 -114
  215. package/src/engine/asset/loaders/JavascriptAssetLoader.d.ts +1 -1
  216. package/src/engine/asset/loaders/JavascriptAssetLoader.d.ts.map +1 -1
  217. package/src/engine/asset/loaders/JavascriptAssetLoader.js +31 -47
  218. package/src/engine/asset/loaders/JsonAssetLoader.js +1 -1
  219. package/src/engine/asset/loaders/SVGAssetLoader.js +2 -2
  220. package/src/engine/asset/loaders/SoundAssetLoader.js +1 -1
  221. package/src/engine/asset/loaders/TextAssetLoader.js +2 -2
  222. package/src/{core → engine/asset/loaders}/font/FontAsset.d.ts +1 -1
  223. package/src/engine/asset/loaders/font/FontAsset.d.ts.map +1 -0
  224. package/src/{core → engine/asset/loaders}/font/FontAsset.js +21 -21
  225. package/src/{core → engine/asset/loaders}/font/FontAssetLoader.d.ts +1 -1
  226. package/src/engine/asset/loaders/font/FontAssetLoader.d.ts.map +1 -0
  227. package/src/{core → engine/asset/loaders}/font/FontAssetLoader.js +20 -20
  228. package/src/engine/asset/loaders/image/ImageRGBADataLoader.d.ts +1 -1
  229. package/src/engine/asset/loaders/image/ImageRGBADataLoader.d.ts.map +1 -1
  230. package/src/engine/asset/loaders/image/ImageRGBADataLoader.js +11 -20
  231. package/src/engine/asset/loaders/texture/TextureAssetLoader.d.ts.map +1 -1
  232. package/src/engine/asset/loaders/texture/TextureAssetLoader.js +8 -2
  233. package/src/engine/asset/preloader/AssetPreloader.js +1 -1
  234. package/src/engine/ecs/sockets/serialization/AttachmentSocketsAssetLoader.d.ts +1 -1
  235. package/src/engine/ecs/sockets/serialization/AttachmentSocketsAssetLoader.d.ts.map +1 -1
  236. package/src/engine/ecs/sockets/serialization/AttachmentSocketsAssetLoader.js +19 -22
  237. package/src/engine/graphics/FrameThrottle.d.ts +1 -7
  238. package/src/engine/graphics/FrameThrottle.d.ts.map +1 -1
  239. package/src/engine/graphics/FrameThrottle.js +2 -24
  240. package/src/{core/geom/3d/shape/util → engine/graphics/debug}/shape_to_visual_entity.d.ts +1 -1
  241. package/src/engine/graphics/debug/shape_to_visual_entity.d.ts.map +1 -0
  242. package/src/{core/geom/3d/shape/util → engine/graphics/debug}/shape_to_visual_entity.js +159 -159
  243. package/src/{core/geom/3d/tetrahedra → engine/graphics/debug}/visualize_tetrahedral_mesh.d.ts +1 -1
  244. package/src/engine/graphics/debug/visualize_tetrahedral_mesh.d.ts.map +1 -0
  245. package/src/{core/geom/3d/tetrahedra → engine/graphics/debug}/visualize_tetrahedral_mesh.js +46 -46
  246. package/src/engine/graphics/ecs/animation/animator/graph/definition/serialization/AnimationGraphDefinitionAssetLoader.d.ts +1 -1
  247. package/src/engine/graphics/ecs/animation/animator/graph/definition/serialization/AnimationGraphDefinitionAssetLoader.d.ts.map +1 -1
  248. package/src/engine/graphics/ecs/animation/animator/graph/definition/serialization/AnimationGraphDefinitionAssetLoader.js +22 -32
  249. package/src/engine/graphics/particles/particular/engine/emitter/serde/ParameterLookupTableSerializationAdapter.d.ts.map +1 -1
  250. package/src/engine/graphics/particles/particular/engine/emitter/serde/ParameterLookupTableSerializationAdapter.js +2 -76
  251. package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTable.d.ts.map +1 -1
  252. package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTable.js +2 -427
  253. package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTableFlags.d.ts +1 -4
  254. package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTableFlags.d.ts.map +1 -1
  255. package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTableFlags.js +2 -6
  256. package/src/engine/graphics/particles/particular/engine/utils/volume/prototypeParticleVolume.js +1 -1
  257. package/src/engine/graphics/render/forward_plus/read_frustum_corner.d.ts +1 -8
  258. package/src/engine/graphics/render/forward_plus/read_frustum_corner.d.ts.map +1 -1
  259. package/src/engine/graphics/render/forward_plus/read_frustum_corner.js +2 -14
  260. package/src/engine/graphics/sh3/path_tracer/geometry/compute_triangle_group_aabb3.d.ts +1 -11
  261. package/src/engine/graphics/sh3/path_tracer/geometry/compute_triangle_group_aabb3.d.ts.map +1 -1
  262. package/src/engine/graphics/sh3/path_tracer/geometry/compute_triangle_group_aabb3.js +2 -46
  263. package/src/engine/graphics/sh3/prototypeSH3Probe.js +1 -1
  264. package/src/engine/graphics/texture/3d/scs3d_sample_linear3.d.ts +27 -0
  265. package/src/engine/graphics/texture/3d/scs3d_sample_linear3.d.ts.map +1 -0
  266. package/src/engine/graphics/texture/3d/scs3d_sample_linear3.js +81 -0
  267. package/src/engine/graphics/texture/isImageBitmap.d.ts +1 -6
  268. package/src/engine/graphics/texture/isImageBitmap.d.ts.map +1 -1
  269. package/src/engine/graphics/texture/isImageBitmap.js +2 -12
  270. package/src/{core/process/action → engine/intelligence/behavior/util}/AsynchronousDelayAction.d.ts +2 -2
  271. package/src/engine/intelligence/behavior/util/AsynchronousDelayAction.d.ts.map +1 -0
  272. package/src/{core/process/action → engine/intelligence/behavior/util}/AsynchronousDelayAction.js +55 -55
  273. package/src/engine/network/NetworkSession.d.ts +12 -1
  274. package/src/engine/network/NetworkSession.d.ts.map +1 -1
  275. package/src/engine/network/NetworkSession.js +52 -1
  276. package/src/engine/network/README.md +45 -0
  277. package/src/engine/network/convertPathToURL.d.ts +1 -8
  278. package/src/engine/network/convertPathToURL.d.ts.map +1 -1
  279. package/src/engine/network/convertPathToURL.js +2 -107
  280. package/src/engine/network/core/quantize/quantize_float.d.ts.map +1 -1
  281. package/src/engine/network/core/quantize/quantize_float.js +7 -0
  282. package/src/engine/network/core/quantize/quantize_position.d.ts.map +1 -1
  283. package/src/engine/network/core/quantize/quantize_position.js +12 -1
  284. package/src/engine/network/orchestrator/NetworkPeer.d.ts.map +1 -1
  285. package/src/engine/network/orchestrator/NetworkPeer.js +15 -1
  286. package/src/engine/network/replication/Replicator.d.ts +8 -0
  287. package/src/engine/network/replication/Replicator.d.ts.map +1 -1
  288. package/src/engine/network/replication/Replicator.js +48 -0
  289. package/src/engine/network/transport/Channel.d.ts.map +1 -1
  290. package/src/engine/network/transport/Channel.js +46 -12
  291. package/src/engine/network/transport/ReliableCommandPipeline.d.ts +16 -0
  292. package/src/engine/network/transport/ReliableCommandPipeline.d.ts.map +1 -1
  293. package/src/engine/network/transport/ReliableCommandPipeline.js +29 -0
  294. package/src/engine/network/transport/adapters/NodeUDPTransport.d.ts.map +1 -1
  295. package/src/engine/network/transport/adapters/NodeUDPTransport.js +7 -1
  296. package/src/engine/network/transport/fragments/packet_size.d.ts +5 -5
  297. package/src/engine/network/transport/fragments/packet_size.d.ts.map +1 -1
  298. package/src/engine/network/transport/fragments/packet_size.js +5 -5
  299. package/src/engine/physics/BULLET_REVIEW.md +1 -1
  300. package/src/engine/physics/JOLT_REVIEW.md +2 -2
  301. package/src/engine/physics/PLAN.md +1094 -945
  302. package/src/engine/physics/RAPIER_REVIEW.md +2 -2
  303. package/src/engine/physics/body/BodyStorage.d.ts +2 -12
  304. package/src/engine/physics/body/BodyStorage.d.ts.map +1 -1
  305. package/src/engine/physics/body/BodyStorage.js +406 -452
  306. package/src/engine/physics/body/SolverBodyState.d.ts.map +1 -1
  307. package/src/engine/physics/body/SolverBodyState.js +12 -3
  308. package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts +28 -3
  309. package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts.map +1 -1
  310. package/src/engine/physics/broadphase/compute_fat_world_aabb.js +60 -24
  311. package/src/engine/physics/broadphase/generate_pairs.d.ts +9 -5
  312. package/src/engine/physics/broadphase/generate_pairs.d.ts.map +1 -1
  313. package/src/engine/physics/broadphase/generate_pairs.js +52 -37
  314. package/src/engine/physics/ccd/linear_sweep.d.ts +15 -5
  315. package/src/engine/physics/ccd/linear_sweep.d.ts.map +1 -1
  316. package/src/engine/physics/ccd/linear_sweep.js +122 -40
  317. package/src/engine/physics/constraint/solve_constraints.d.ts.map +1 -1
  318. package/src/engine/physics/constraint/solve_constraints.js +830 -805
  319. package/src/engine/physics/contact/ManifoldStore.d.ts +91 -16
  320. package/src/engine/physics/contact/ManifoldStore.d.ts.map +1 -1
  321. package/src/engine/physics/contact/ManifoldStore.js +204 -60
  322. package/src/engine/physics/ecs/BodyKind.d.ts +7 -3
  323. package/src/engine/physics/ecs/BodyKind.d.ts.map +1 -1
  324. package/src/engine/physics/ecs/BodyKind.js +29 -25
  325. package/src/engine/physics/ecs/Collider.d.ts +7 -0
  326. package/src/engine/physics/ecs/Collider.d.ts.map +1 -1
  327. package/src/engine/physics/ecs/Collider.js +7 -0
  328. package/src/engine/physics/ecs/ColliderSerializationAdapter.js +1 -1
  329. package/src/engine/physics/ecs/PhysicsSystem.d.ts +110 -6
  330. package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
  331. package/src/engine/physics/ecs/PhysicsSystem.js +467 -45
  332. package/src/engine/physics/ecs/RigidBody.d.ts +20 -5
  333. package/src/engine/physics/ecs/RigidBody.d.ts.map +1 -1
  334. package/src/engine/physics/ecs/RigidBody.js +307 -286
  335. package/src/engine/physics/ecs/RigidBodyFlags.d.ts +6 -3
  336. package/src/engine/physics/ecs/RigidBodyFlags.d.ts.map +1 -1
  337. package/src/engine/physics/ecs/RigidBodyFlags.js +31 -28
  338. package/src/engine/physics/ecs/RigidBodySerializationAdapter.d.ts +12 -4
  339. package/src/engine/physics/ecs/RigidBodySerializationAdapter.d.ts.map +1 -1
  340. package/src/engine/physics/ecs/RigidBodySerializationAdapter.js +19 -5
  341. package/src/engine/physics/ecs/RigidBodySerializationUpgrader_0_1.d.ts +10 -0
  342. package/src/engine/physics/ecs/RigidBodySerializationUpgrader_0_1.d.ts.map +1 -0
  343. package/src/engine/physics/ecs/RigidBodySerializationUpgrader_0_1.js +37 -0
  344. package/src/engine/physics/ecs/find_non_finite_physics_state.d.ts +28 -0
  345. package/src/engine/physics/ecs/find_non_finite_physics_state.d.ts.map +1 -0
  346. package/src/engine/physics/ecs/find_non_finite_physics_state.js +76 -0
  347. package/src/engine/physics/events/ContactEventBuffer.d.ts +11 -0
  348. package/src/engine/physics/events/ContactEventBuffer.d.ts.map +1 -1
  349. package/src/engine/physics/events/ContactEventBuffer.js +40 -0
  350. package/src/engine/physics/events/diff_manifolds.d.ts +30 -13
  351. package/src/engine/physics/events/diff_manifolds.d.ts.map +1 -1
  352. package/src/engine/physics/events/diff_manifolds.js +87 -50
  353. package/src/engine/physics/fluid/FluidField.d.ts +45 -17
  354. package/src/engine/physics/fluid/FluidField.d.ts.map +1 -1
  355. package/src/engine/physics/fluid/FluidField.js +53 -23
  356. package/src/engine/physics/fluid/FluidSimulator.d.ts +141 -5
  357. package/src/engine/physics/fluid/FluidSimulator.d.ts.map +1 -1
  358. package/src/engine/physics/fluid/FluidSimulator.js +336 -43
  359. package/src/engine/physics/fluid/REVIEW_02_PLAN.md +114 -0
  360. package/src/engine/physics/fluid/ecs/FluidComponent.d.ts +4 -3
  361. package/src/engine/physics/fluid/ecs/FluidComponent.d.ts.map +1 -1
  362. package/src/engine/physics/fluid/ecs/FluidComponent.js +4 -3
  363. package/src/engine/physics/fluid/ecs/FluidSystem.d.ts +3 -3
  364. package/src/engine/physics/fluid/effector/AmbientWindFluidEffector.d.ts +41 -0
  365. package/src/engine/physics/fluid/effector/AmbientWindFluidEffector.d.ts.map +1 -0
  366. package/src/engine/physics/fluid/effector/AmbientWindFluidEffector.js +124 -0
  367. package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts +27 -8
  368. package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts.map +1 -1
  369. package/src/engine/physics/fluid/effector/WakeFluidEffector.js +67 -18
  370. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_scalar.d.ts +42 -0
  371. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_scalar.d.ts.map +1 -0
  372. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_scalar.js +136 -0
  373. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.d.ts +37 -0
  374. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.d.ts.map +1 -0
  375. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.js +169 -0
  376. package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.d.ts +36 -0
  377. package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.d.ts.map +1 -0
  378. package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.js +100 -0
  379. package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.d.ts +6 -0
  380. package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.d.ts.map +1 -1
  381. package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.js +6 -0
  382. package/src/engine/physics/fluid/solver/v3_grid_apply_diffusion.d.ts +7 -2
  383. package/src/engine/physics/fluid/solver/v3_grid_apply_diffusion.d.ts.map +1 -1
  384. package/src/engine/physics/fluid/solver/v3_grid_apply_diffusion.js +17 -12
  385. package/src/engine/physics/fluid/solver/v3_grid_apply_vorticity_confinement.d.ts +42 -0
  386. package/src/engine/physics/fluid/solver/v3_grid_apply_vorticity_confinement.d.ts.map +1 -0
  387. package/src/engine/physics/fluid/solver/v3_grid_apply_vorticity_confinement.js +131 -0
  388. package/src/engine/physics/fluid/solver/v3_grid_compute_solid_neighbour_mask.d.ts +32 -22
  389. package/src/engine/physics/fluid/solver/v3_grid_compute_solid_neighbour_mask.d.ts.map +1 -1
  390. package/src/engine/physics/fluid/solver/v3_grid_compute_solid_neighbour_mask.js +43 -26
  391. package/src/engine/physics/fluid/solver/v3_grid_patch_edges_constant.d.ts +31 -0
  392. package/src/engine/physics/fluid/solver/v3_grid_patch_edges_constant.d.ts.map +1 -0
  393. package/src/engine/physics/fluid/solver/v3_grid_patch_edges_constant.js +77 -0
  394. package/src/engine/physics/fluid/solver/v3_grid_solve_pressure.d.ts +26 -19
  395. package/src/engine/physics/fluid/solver/v3_grid_solve_pressure.d.ts.map +1 -1
  396. package/src/engine/physics/fluid/solver/v3_grid_solve_pressure.js +46 -42
  397. package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_pcg.d.ts +38 -10
  398. package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_pcg.d.ts.map +1 -1
  399. package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_pcg.js +158 -75
  400. package/src/engine/physics/fluid/solver/v3_grid_subtract_pressure_gradient.d.ts +22 -17
  401. package/src/engine/physics/fluid/solver/v3_grid_subtract_pressure_gradient.d.ts.map +1 -1
  402. package/src/engine/physics/fluid/solver/v3_grid_subtract_pressure_gradient.js +108 -96
  403. package/src/engine/physics/inertia/world_inverse_inertia.d.ts +30 -1
  404. package/src/engine/physics/inertia/world_inverse_inertia.d.ts.map +1 -1
  405. package/src/engine/physics/inertia/world_inverse_inertia.js +160 -116
  406. package/src/engine/physics/integration/integrate_position.js +97 -97
  407. package/src/engine/physics/island/IslandBuilder.d.ts +49 -8
  408. package/src/engine/physics/island/IslandBuilder.d.ts.map +1 -1
  409. package/src/engine/physics/island/IslandBuilder.js +93 -14
  410. package/src/engine/physics/narrowphase/box_box_manifold.d.ts.map +1 -1
  411. package/src/engine/physics/narrowphase/box_box_manifold.js +683 -673
  412. package/src/engine/physics/narrowphase/box_triangle_contact.d.ts.map +1 -1
  413. package/src/engine/physics/narrowphase/box_triangle_contact.js +899 -749
  414. package/src/engine/physics/narrowphase/capsule_contacts.d.ts +27 -0
  415. package/src/engine/physics/narrowphase/capsule_contacts.d.ts.map +1 -1
  416. package/src/engine/physics/narrowphase/capsule_contacts.js +624 -459
  417. package/src/engine/physics/narrowphase/capsule_triangle_contact.d.ts.map +1 -1
  418. package/src/engine/physics/narrowphase/capsule_triangle_contact.js +58 -38
  419. package/src/engine/physics/narrowphase/compute_penetration.d.ts.map +1 -1
  420. package/src/engine/physics/narrowphase/compute_penetration.js +369 -325
  421. package/src/engine/physics/narrowphase/convex_convex_manifold.d.ts +3 -1
  422. package/src/engine/physics/narrowphase/convex_convex_manifold.d.ts.map +1 -1
  423. package/src/engine/physics/narrowphase/convex_convex_manifold.js +568 -422
  424. package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.d.ts +6 -3
  425. package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.d.ts.map +1 -1
  426. package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.js +66 -10
  427. package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.d.ts +4 -1
  428. package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.d.ts.map +1 -1
  429. package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.js +97 -94
  430. package/src/engine/physics/narrowphase/mesh_mesh_tet_manifold.js +117 -117
  431. package/src/engine/physics/narrowphase/narrowphase_step.d.ts.map +1 -1
  432. package/src/engine/physics/narrowphase/narrowphase_step.js +1738 -1739
  433. package/src/engine/physics/narrowphase/reduce_manifold_contacts.d.ts +14 -7
  434. package/src/engine/physics/narrowphase/reduce_manifold_contacts.d.ts.map +1 -1
  435. package/src/engine/physics/narrowphase/reduce_manifold_contacts.js +74 -69
  436. package/src/engine/physics/persistence/solver_caches.d.ts +20 -0
  437. package/src/engine/physics/persistence/solver_caches.d.ts.map +1 -0
  438. package/src/engine/physics/persistence/solver_caches.js +309 -0
  439. package/src/engine/physics/queries/overlap_shape.d.ts.map +1 -1
  440. package/src/engine/physics/queries/overlap_shape.js +187 -184
  441. package/src/engine/physics/queries/raycast.d.ts +3 -2
  442. package/src/engine/physics/queries/raycast.d.ts.map +1 -1
  443. package/src/engine/physics/queries/raycast.js +37 -11
  444. package/src/engine/physics/queries/shape_cast.d.ts +18 -5
  445. package/src/engine/physics/queries/shape_cast.d.ts.map +1 -1
  446. package/src/engine/physics/queries/shape_cast.js +417 -393
  447. package/src/engine/physics/solver/solve_contacts.d.ts +22 -6
  448. package/src/engine/physics/solver/solve_contacts.d.ts.map +1 -1
  449. package/src/engine/physics/solver/solve_contacts.js +1482 -1338
  450. package/src/engine/physics/vehicle/RaycastVehicle.d.ts.map +1 -1
  451. package/src/engine/physics/vehicle/RaycastVehicle.js +344 -339
  452. package/src/engine/ui/DraggableAspect.d.ts +12 -3
  453. package/src/engine/ui/DraggableAspect.d.ts.map +1 -1
  454. package/src/engine/ui/DraggableAspect.js +115 -83
  455. package/src/generation/COORDINATES.md +54 -0
  456. package/src/generation/GridTaskGroup.js +2 -2
  457. package/src/generation/REVIEW_01_ACTION_PLAN.md +628 -0
  458. package/src/generation/automata/CaveGeneratorCellularAutomata.d.ts +9 -1
  459. package/src/generation/automata/CaveGeneratorCellularAutomata.d.ts.map +1 -1
  460. package/src/generation/automata/CaveGeneratorCellularAutomata.js +79 -59
  461. package/src/generation/automata/CellularAutomata.d.ts +6 -3
  462. package/src/generation/automata/CellularAutomata.d.ts.map +1 -1
  463. package/src/generation/automata/CellularAutomata.js +22 -19
  464. package/src/generation/filtering/CellFilter.d.ts +17 -0
  465. package/src/generation/filtering/CellFilter.d.ts.map +1 -1
  466. package/src/generation/filtering/CellFilter.js +117 -77
  467. package/src/generation/filtering/CellFilterCellMatcher.d.ts.map +1 -1
  468. package/src/generation/filtering/CellFilterCellMatcher.js +2 -0
  469. package/src/generation/filtering/boolean/CellFilterLiteralBoolean.d.ts +5 -0
  470. package/src/generation/filtering/boolean/CellFilterLiteralBoolean.d.ts.map +1 -1
  471. package/src/generation/filtering/boolean/CellFilterLiteralBoolean.js +15 -0
  472. package/src/generation/filtering/core/CellFilterBinaryOperation.d.ts +0 -1
  473. package/src/generation/filtering/core/CellFilterBinaryOperation.d.ts.map +1 -1
  474. package/src/generation/filtering/core/CellFilterBinaryOperation.js +37 -50
  475. package/src/generation/filtering/core/CellFilterOperationTertiary.d.ts +0 -1
  476. package/src/generation/filtering/core/CellFilterOperationTertiary.d.ts.map +1 -1
  477. package/src/generation/filtering/core/CellFilterOperationTertiary.js +43 -59
  478. package/src/generation/filtering/core/CellFilterUnaryOperation.d.ts +0 -1
  479. package/src/generation/filtering/core/CellFilterUnaryOperation.d.ts.map +1 -1
  480. package/src/generation/filtering/core/CellFilterUnaryOperation.js +29 -33
  481. package/src/generation/filtering/numeric/CellFilterCache.d.ts +1 -0
  482. package/src/generation/filtering/numeric/CellFilterCache.d.ts.map +1 -1
  483. package/src/generation/filtering/numeric/complex/CellFilterAngleToNormal.d.ts +3 -2
  484. package/src/generation/filtering/numeric/complex/CellFilterAngleToNormal.d.ts.map +1 -1
  485. package/src/generation/filtering/numeric/complex/CellFilterAngleToNormal.js +9 -35
  486. package/src/generation/filtering/numeric/complex/CellFilterCurvature.d.ts +0 -1
  487. package/src/generation/filtering/numeric/complex/CellFilterCurvature.d.ts.map +1 -1
  488. package/src/generation/filtering/numeric/complex/CellFilterCurvature.js +19 -43
  489. package/src/generation/filtering/numeric/complex/CellFilterFXAA.d.ts +0 -1
  490. package/src/generation/filtering/numeric/complex/CellFilterFXAA.d.ts.map +1 -1
  491. package/src/generation/filtering/numeric/complex/CellFilterFXAA.js +2 -6
  492. package/src/generation/filtering/numeric/complex/CellFilterGaussianBlur.d.ts.map +1 -1
  493. package/src/generation/filtering/numeric/complex/CellFilterGaussianBlur.js +9 -12
  494. package/src/generation/filtering/numeric/complex/CellFilterSimplexNoise.d.ts.map +1 -1
  495. package/src/generation/filtering/numeric/complex/CellFilterSimplexNoise.js +2 -1
  496. package/src/generation/filtering/numeric/complex/CellFilterSobel.d.ts +0 -1
  497. package/src/generation/filtering/numeric/complex/CellFilterSobel.d.ts.map +1 -1
  498. package/src/generation/filtering/numeric/complex/CellFilterSobel.js +2 -6
  499. package/src/generation/filtering/numeric/math/CellFilterInverseLerp.d.ts +5 -4
  500. package/src/generation/filtering/numeric/math/CellFilterInverseLerp.d.ts.map +1 -1
  501. package/src/generation/filtering/numeric/math/CellFilterInverseLerp.js +5 -4
  502. package/src/generation/filtering/numeric/process/computeFilterSurfaceNormal.d.ts +17 -0
  503. package/src/generation/filtering/numeric/process/computeFilterSurfaceNormal.d.ts.map +1 -0
  504. package/src/generation/filtering/numeric/process/computeFilterSurfaceNormal.js +42 -0
  505. package/src/generation/filtering/numeric/sampling/AbstractCellFilterSampleGridLayer.d.ts.map +1 -1
  506. package/src/generation/filtering/numeric/sampling/AbstractCellFilterSampleGridLayer.js +7 -1
  507. package/src/generation/filtering/numeric/util/populateSampler2DFromCellFilter.d.ts.map +1 -1
  508. package/src/generation/filtering/numeric/util/populateSampler2DFromCellFilter.js +7 -10
  509. package/src/generation/filtering/numeric/util/sampler_from_filter.d.ts.map +1 -1
  510. package/src/generation/filtering/numeric/util/sampler_from_filter.js +2 -1
  511. package/src/generation/grid/GridData.d.ts.map +1 -1
  512. package/src/generation/grid/GridData.js +14 -1
  513. package/src/generation/grid/actions/ContinuousGridCellAction.d.ts +10 -3
  514. package/src/generation/grid/actions/ContinuousGridCellAction.d.ts.map +1 -1
  515. package/src/generation/grid/actions/ContinuousGridCellAction.js +18 -3
  516. package/src/generation/grid/actions/ContinuousGridCellActionSetTerrainHeight.d.ts +11 -1
  517. package/src/generation/grid/actions/ContinuousGridCellActionSetTerrainHeight.d.ts.map +1 -1
  518. package/src/generation/grid/actions/ContinuousGridCellActionSetTerrainHeight.js +13 -3
  519. package/src/generation/grid/actions/ContinuousGridCellActionSetTerrainObstacle.d.ts +1 -1
  520. package/src/generation/grid/actions/ContinuousGridCellActionSetTerrainObstacle.js +2 -2
  521. package/src/generation/grid/actions/ContinuousGridCellActionWriteObstacle.d.ts +1 -1
  522. package/src/generation/grid/actions/ContinuousGridCellActionWriteObstacle.d.ts.map +1 -1
  523. package/src/generation/grid/actions/ContinuousGridCellActionWriteObstacle.js +4 -6
  524. package/src/generation/grid/coords/grid_to_texel.d.ts +9 -0
  525. package/src/generation/grid/coords/grid_to_texel.d.ts.map +1 -0
  526. package/src/generation/grid/coords/grid_to_texel.js +10 -0
  527. package/src/generation/grid/coords/texel_to_grid.d.ts +9 -0
  528. package/src/generation/grid/coords/texel_to_grid.d.ts.map +1 -0
  529. package/src/generation/grid/coords/texel_to_grid.js +10 -0
  530. package/src/generation/grid/generation/GridTaskApplyActionToCells.d.ts +2 -2
  531. package/src/generation/grid/generation/GridTaskApplyActionToCells.d.ts.map +1 -1
  532. package/src/generation/grid/generation/GridTaskApplyActionToCells.js +10 -6
  533. package/src/generation/grid/generation/GridTaskDensityMarkerDistribution.d.ts.map +1 -1
  534. package/src/generation/grid/generation/GridTaskDensityMarkerDistribution.js +20 -21
  535. package/src/generation/grid/generation/GridTaskExecuteRuleTimes.d.ts +7 -0
  536. package/src/generation/grid/generation/GridTaskExecuteRuleTimes.d.ts.map +1 -1
  537. package/src/generation/grid/generation/GridTaskExecuteRuleTimes.js +18 -10
  538. package/src/generation/grid/generation/discrete/GridTaskCellularAutomata.d.ts.map +1 -1
  539. package/src/generation/grid/generation/discrete/GridTaskCellularAutomata.js +16 -7
  540. package/src/generation/grid/generation/discrete/GridTaskConnectRooms.d.ts +5 -3
  541. package/src/generation/grid/generation/discrete/GridTaskConnectRooms.d.ts.map +1 -1
  542. package/src/generation/grid/generation/discrete/GridTaskConnectRooms.js +26 -23
  543. package/src/generation/grid/generation/discrete/layer/GridTaskBuildSourceDistanceMap.d.ts.map +1 -1
  544. package/src/generation/grid/generation/discrete/layer/GridTaskBuildSourceDistanceMap.js +10 -1
  545. package/src/generation/grid/generation/grid/select/CellSupplierBestN.d.ts.map +1 -1
  546. package/src/generation/grid/generation/grid/select/CellSupplierBestN.js +4 -0
  547. package/src/generation/grid/generation/road/GridTaskGenerateRoads.d.ts +15 -8
  548. package/src/generation/grid/generation/road/GridTaskGenerateRoads.d.ts.map +1 -1
  549. package/src/generation/grid/generation/road/GridTaskGenerateRoads.js +89 -92
  550. package/src/generation/markers/GridActionRuleSet.d.ts.map +1 -1
  551. package/src/generation/markers/GridActionRuleSet.js +10 -2
  552. package/src/generation/markers/GridCellActionPlaceMarker.d.ts +11 -0
  553. package/src/generation/markers/GridCellActionPlaceMarker.d.ts.map +1 -1
  554. package/src/generation/markers/GridCellActionPlaceMarker.js +20 -3
  555. package/src/generation/markers/GridCellActionPlaceMarkerGroup.d.ts +3 -1
  556. package/src/generation/markers/GridCellActionPlaceMarkerGroup.d.ts.map +1 -1
  557. package/src/generation/markers/GridCellActionPlaceMarkerGroup.js +9 -2
  558. package/src/generation/markers/MarkerNode.d.ts +8 -3
  559. package/src/generation/markers/MarkerNode.d.ts.map +1 -1
  560. package/src/generation/markers/MarkerNode.js +12 -5
  561. package/src/generation/markers/actions/MarkerNodeActionEntityPlacement.js +1 -1
  562. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessor.d.ts +1 -1
  563. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessor.d.ts.map +1 -1
  564. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessor.js +1 -1
  565. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorClingToTerrain.d.ts +1 -1
  566. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorClingToTerrain.d.ts.map +1 -1
  567. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorClingToTerrain.js +1 -1
  568. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorRandomRotation.d.ts +1 -1
  569. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorRandomRotation.d.ts.map +1 -1
  570. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorRandomRotation.js +2 -2
  571. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorSequence.d.ts +1 -1
  572. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorSequence.d.ts.map +1 -1
  573. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorSequence.js +2 -2
  574. package/src/generation/markers/actions/probability/MarkerNodeActionSelectWeighted.d.ts.map +1 -1
  575. package/src/generation/markers/actions/probability/MarkerNodeActionSelectWeighted.js +6 -4
  576. package/src/generation/markers/actions/probability/MarkerNodeActionWeightedElement.d.ts.map +1 -1
  577. package/src/generation/markers/actions/probability/MarkerNodeActionWeightedElement.js +1 -3
  578. package/src/generation/markers/actions/terrain/MarkerNodeActionPaintTerrain.d.ts.map +1 -1
  579. package/src/generation/markers/actions/terrain/MarkerNodeActionPaintTerrain.js +12 -11
  580. package/src/generation/markers/matcher/MarkerNodeMatcherAnd.js +2 -2
  581. package/src/generation/markers/transform/MarkerNodeTransformer.d.ts +4 -1
  582. package/src/generation/markers/transform/MarkerNodeTransformer.d.ts.map +1 -1
  583. package/src/generation/markers/transform/MarkerNodeTransformer.js +4 -1
  584. package/src/generation/markers/transform/MarkerNodeTransformerAddPositionYFromFilter.d.ts.map +1 -1
  585. package/src/generation/markers/transform/MarkerNodeTransformerAddPositionYFromFilter.js +1 -3
  586. package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.d.ts +5 -0
  587. package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.d.ts.map +1 -1
  588. package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.js +15 -0
  589. package/src/generation/markers/transform/MarkerNodeTransformerRecordProperty.d.ts.map +1 -1
  590. package/src/generation/markers/transform/MarkerNodeTransformerRecordProperty.js +1 -3
  591. package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilter.d.ts.map +1 -1
  592. package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilter.js +2 -4
  593. package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilterGradient.d.ts.map +1 -1
  594. package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilterGradient.js +1 -3
  595. package/src/generation/placement/GridCellPlacementRule.d.ts.map +1 -1
  596. package/src/generation/placement/GridCellPlacementRule.js +1 -3
  597. package/src/generation/placement/action/GridCellActionWriteFilterToLayer.d.ts.map +1 -1
  598. package/src/generation/placement/action/GridCellActionWriteFilterToLayer.js +8 -10
  599. package/src/generation/placement/action/random/weighted/CellActionSelectWeightedRandom.d.ts.map +1 -1
  600. package/src/generation/placement/action/random/weighted/CellActionSelectWeightedRandom.js +6 -4
  601. package/src/generation/placement/action/random/weighted/WeightedGridCellAction.d.ts.map +1 -1
  602. package/src/generation/placement/action/random/weighted/WeightedGridCellAction.js +1 -3
  603. package/src/generation/rules/CellMatcher.d.ts +3 -1
  604. package/src/generation/rules/CellMatcher.d.ts.map +1 -1
  605. package/src/generation/rules/CellMatcher.js +3 -1
  606. package/src/generation/rules/CellMatcherFromFilter.d.ts.map +1 -1
  607. package/src/generation/rules/CellMatcherFromFilter.js +1 -3
  608. package/src/generation/rules/CellMatcherLayerBitMaskTest.d.ts.map +1 -1
  609. package/src/generation/rules/CellMatcherLayerBitMaskTest.js +6 -20
  610. package/src/generation/test_support/executeTaskTreeSync.d.ts +9 -0
  611. package/src/generation/test_support/executeTaskTreeSync.d.ts.map +1 -0
  612. package/src/generation/test_support/executeTaskTreeSync.js +78 -0
  613. package/src/generation/theme/TerrainLayerRuleAggregator.d.ts +2 -1
  614. package/src/generation/theme/TerrainLayerRuleAggregator.d.ts.map +1 -1
  615. package/src/generation/theme/TerrainLayerRuleAggregator.js +9 -6
  616. package/src/generation/theme/Theme.d.ts +1 -1
  617. package/src/generation/theme/Theme.d.ts.map +1 -1
  618. package/src/generation/theme/Theme.js +2 -2
  619. package/src/generation/theme/ThemeEngine.d.ts +3 -3
  620. package/src/generation/theme/ThemeEngine.d.ts.map +1 -1
  621. package/src/generation/theme/ThemeEngine.js +26 -16
  622. package/src/generation/theme/cell/CellProcessingRule.d.ts +3 -3
  623. package/src/generation/theme/cell/CellProcessingRule.d.ts.map +1 -1
  624. package/src/generation/theme/cell/CellProcessingRule.js +6 -10
  625. package/src/generation/theme/cell/CellProcessingRuleSet.d.ts +1 -1
  626. package/src/generation/theme/cell/CellProcessingRuleSet.d.ts.map +1 -1
  627. package/src/generation/theme/cell/CellProcessingRuleSet.js +2 -2
  628. package/src/view/common/ListView.js +1 -1
  629. package/src/view/elements/BottomLeftResizeHandleView.d.ts.map +1 -1
  630. package/src/view/elements/BottomLeftResizeHandleView.js +13 -5
  631. package/src/core/font/FontAsset.d.ts.map +0 -1
  632. package/src/core/font/FontAssetLoader.d.ts.map +0 -1
  633. package/src/core/geom/3d/shape/util/shape_to_visual_entity.d.ts.map +0 -1
  634. package/src/core/geom/3d/tetrahedra/visualize_tetrahedral_mesh.d.ts.map +0 -1
  635. package/src/core/process/action/AsynchronousDelayAction.d.ts.map +0 -1
  636. package/src/engine/physics/computeInterceptPoint.d.ts.map +0 -1
  637. package/src/engine/physics/fluid/solver/optimal_sor_omega.d.ts.map +0 -1
  638. package/src/engine/physics/gjk/gjk.d.ts.map +0 -1
  639. package/src/engine/physics/gjk/gjk_epa_penetration.d.ts.map +0 -1
  640. package/src/engine/physics/gjk/minkowski_support.d.ts.map +0 -1
  641. package/src/engine/physics/gjk/mpr.d.ts.map +0 -1
  642. package/src/engine/physics/integration/quat_integrate.d.ts.map +0 -1
  643. package/src/engine/physics/island/union_find.d.ts.map +0 -1
  644. package/src/engine/physics/narrowphase/clip_against_axis_uv.d.ts.map +0 -1
  645. package/src/engine/physics/narrowphase/decomposition/aabb_world_to_local.d.ts.map +0 -1
  646. package/src/generation/grid/generation/discrete/layer/GridTaskDistanceToMarkers.d.ts +0 -21
  647. package/src/generation/grid/generation/discrete/layer/GridTaskDistanceToMarkers.d.ts.map +0 -1
  648. package/src/generation/grid/generation/discrete/layer/GridTaskDistanceToMarkers.js +0 -68
  649. package/src/generation/grid/generation/grid/GridTaskGridAlignedNodeGenerator.d.ts +0 -10
  650. package/src/generation/grid/generation/grid/GridTaskGridAlignedNodeGenerator.d.ts.map +0 -1
  651. package/src/generation/grid/generation/grid/GridTaskGridAlignedNodeGenerator.js +0 -17
  652. /package/src/{engine/physics → core/geom/3d}/gjk/NOTES.md +0 -0
  653. /package/src/{engine/physics → core/geom/3d}/gjk/gjk.d.ts +0 -0
  654. /package/src/{engine/physics → core/math/physics/kinematics}/computeInterceptPoint.d.ts +0 -0
@@ -29,7 +29,13 @@ export class AbstractCellFilterSampleGridLayer extends CellFilter {
29
29
  initialize(grid, seed) {
30
30
  super.initialize(grid, seed);
31
31
 
32
- this.__layer = grid.getLayerById(this.layerId);
32
+ const layer = grid.getLayerById(this.layerId);
33
+
34
+ if (layer === undefined) {
35
+ throw new Error(`Layer '${this.layerId}' not found`);
36
+ }
37
+
38
+ this.__layer = layer;
33
39
 
34
40
  // cache required values
35
41
  this.__sampler = this.__layer.sampler;
@@ -1 +1 @@
1
- {"version":3,"file":"populateSampler2DFromCellFilter.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/filtering/numeric/util/populateSampler2DFromCellFilter.js"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,2FA8BC"}
1
+ {"version":3,"file":"populateSampler2DFromCellFilter.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/filtering/numeric/util/populateSampler2DFromCellFilter.js"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,2FA2BC"}
@@ -11,24 +11,21 @@ export function populateSampler2DFromCellFilter({ result, filter, grid }) {
11
11
  assert.defined(filter,'filter');
12
12
  assert.defined(grid,'grid');
13
13
 
14
- if (!filter.initialized) {
15
- filter.initialize(grid, 0);
16
- }
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;
17
19
 
18
20
  const result_height = result.height;
19
- const v_scale_result = 1 / (result_height - 1);
20
21
 
21
22
  for (let y = 0; y < result_height; y++) {
22
23
 
23
- const v = y * v_scale_result;
24
-
25
- const grid_y = v * (grid.height - 1);
24
+ const grid_y = y / scale_y;
26
25
 
27
26
  for (let x = 0; x < result.width; x++) {
28
27
 
29
- const u = x / (result.width - 1);
30
-
31
- const grid_x = u * (grid.width - 1);
28
+ const grid_x = x / scale_x;
32
29
 
33
30
  const filterValue = filter.execute(grid, grid_x, grid_y, 0);
34
31
 
@@ -1 +1 @@
1
- {"version":3,"file":"sampler_from_filter.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/filtering/numeric/util/sampler_from_filter.js"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,2FAFW,MAAM,aAiBhB;0BAxByB,0DAA0D"}
1
+ {"version":3,"file":"sampler_from_filter.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/filtering/numeric/util/sampler_from_filter.js"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,2FAFW,MAAM,aAkBhB;0BAzByB,0DAA0D"}
@@ -9,7 +9,8 @@ import { populateSampler2DFromCellFilter } from "./populateSampler2DFromCellFilt
9
9
  * @param {number} resolution_scale must be a positive integer
10
10
  */
11
11
  export function sampler_from_filter(grid, filter, resolution_scale = 1) {
12
- assert.isNonNegativeInteger(resolution_scale, 'scale');
12
+ assert.isNonNegativeInteger(resolution_scale, 'resolution_scale');
13
+ assert.greaterThan(resolution_scale, 0, 'resolution_scale');
13
14
  assert.defined(grid, 'grid');
14
15
  assert.defined(filter, 'filter');
15
16
 
@@ -1 +1 @@
1
- {"version":3,"file":"GridData.d.ts","sourceRoot":"","sources":["../../../../src/generation/grid/GridData.js"],"names":[],"mappings":"AAYA;IAEI,cAAU;IACV,eAAW;IAEX;;;OAGG;IACH,oBAFU,sBAAsB,CAES;IAEzC;;;OAGG;IACH,kBAFU,wBAAwB,CAEL;IAE7B;;;;OAIG;IACH,iBAFU,eAAe,CAEb;IAGZ;;;OAGG;IACH,qCAmBC;IAED;;;;OAIG;IACH,iBAHW,MAAM,GACJ,gBAAc,SAAS,CAkBnC;IAED;;;;;;;OAOG;IACH,0BANW,MAAM,KACN,MAAM,UACN,MAAM,+BAEJ,OAAO,CAInB;IAED;;;;;;;OAOG;IACH,uBANW,MAAM,KACN,MAAM,UACN,MAAM,+BAEJ,MAAM,CAsClB;IAED;;;OAGG;IACH,kCAMC;IAED;;;OAGG;IACH,kCASC;IAED;;;;OAIG;IACH,cAHW,MAAM,UACN,MAAM,QAqChB;IAKL;;;OAGG;IACH,qBAFU,OAAO,CAEY;CAP5B;uCAhNsC,wDAAwD;6BAFlE,8CAA8C"}
1
+ {"version":3,"file":"GridData.d.ts","sourceRoot":"","sources":["../../../../src/generation/grid/GridData.js"],"names":[],"mappings":"AAmBA;IAEI,cAAU;IACV,eAAW;IAEX;;;OAGG;IACH,oBAFU,sBAAsB,CAES;IAEzC;;;OAGG;IACH,kBAFU,wBAAwB,CAEL;IAE7B;;;;OAIG;IACH,iBAFU,eAAe,CAEb;IAGZ;;;OAGG;IACH,qCAmBC;IAED;;;;OAIG;IACH,iBAHW,MAAM,GACJ,gBAAc,SAAS,CAkBnC;IAED;;;;;;;OAOG;IACH,0BANW,MAAM,KACN,MAAM,UACN,MAAM,+BAEJ,OAAO,CAInB;IAED;;;;;;;OAOG;IACH,uBANW,MAAM,KACN,MAAM,UACN,MAAM,+BAEJ,MAAM,CA4ClB;IAED;;;OAGG;IACH,kCAMC;IAED;;;OAGG;IACH,kCASC;IAED;;;;OAIG;IACH,cAHW,MAAM,UACN,MAAM,QAqChB;IAKL;;;OAGG;IACH,qBAFU,OAAO,CAEY;CAP5B;uCA7NsC,wDAAwD;6BAFlE,8CAA8C"}
@@ -10,6 +10,13 @@ import { OffsetScaleTransform2D } from "../../engine/ecs/terrain/ecs/OffsetScale
10
10
  */
11
11
  const marker_collection = [];
12
12
 
13
+ /**
14
+ * Guards against re-entrant use of the shared scratch array, which would corrupt an in-flight query
15
+ * (e.g. a {@link MarkerNodeMatcher} that itself queries the grid)
16
+ * @type {boolean}
17
+ */
18
+ let marker_collection_locked = false;
19
+
13
20
  export class GridData {
14
21
 
15
22
  width = 0;
@@ -104,6 +111,10 @@ export class GridData {
104
111
  * @returns {number}
105
112
  */
106
113
  countMarkerInCircle(x, y, radius, matcher) {
114
+ assert.equal(marker_collection_locked, false, 're-entrant marker query, the matcher of an outer query is querying the grid again');
115
+
116
+ marker_collection_locked = true;
117
+
107
118
  const match_count = qt_collect_by_circle(marker_collection, 0, this.markers, x, y, radius);
108
119
 
109
120
  let result = 0;
@@ -138,6 +149,8 @@ export class GridData {
138
149
  }
139
150
  }
140
151
 
152
+ marker_collection_locked = false;
153
+
141
154
  return result;
142
155
  }
143
156
 
@@ -181,7 +194,7 @@ export class GridData {
181
194
  assert.isNonNegativeInteger(height, 'height');
182
195
 
183
196
  assert.isFinite(width, 'width');
184
- assert.isFinite(height, 'width');
197
+ assert.isFinite(height, 'height');
185
198
 
186
199
  if (width === this.width && height === this.height) {
187
200
  //no need, already the right size
@@ -11,12 +11,19 @@ export class ContinuousGridCellAction {
11
11
  */
12
12
  get initialized(): boolean;
13
13
  /**
14
- *
15
- * @param {number} seed
14
+ * Guarded entry point, no-op when already initialized
15
+ * @param {GridData} grid
16
16
  * @param {EntityComponentDataset} ecd
17
+ * @param {number} seed
18
+ */
19
+ ensureInitialized(grid: GridData, ecd: EntityComponentDataset, seed: number): void;
20
+ /**
21
+ *
17
22
  * @param {GridData} grid
23
+ * @param {EntityComponentDataset} ecd
24
+ * @param {number} seed
18
25
  */
19
- initialize(seed: number, ecd: EntityComponentDataset, grid: GridData): void;
26
+ initialize(grid: GridData, ecd: EntityComponentDataset, seed: number): void;
20
27
  finalize(): void;
21
28
  /**
22
29
  *
@@ -1 +1 @@
1
- {"version":3,"file":"ContinuousGridCellAction.d.ts","sourceRoot":"","sources":["../../../../../src/generation/grid/actions/ContinuousGridCellAction.js"],"names":[],"mappings":"AAAA;IAEI;;;;OAIG;IACH,sBAAsB;IAGtB;;;OAGG;IACH,2BAEC;IAED;;;;;OAKG;IACH,iBAJW,MAAM,qDAMhB;IAED,iBAEC;IAED;;;;;;;;OAQG;IACH,wDALW,MAAM,KACN,MAAM,YACN,MAAM,8BAKhB;IAIL;;;OAGG;IACH,qCAFU,OAAO,CAE4C;CAP5D"}
1
+ {"version":3,"file":"ContinuousGridCellAction.d.ts","sourceRoot":"","sources":["../../../../../src/generation/grid/actions/ContinuousGridCellAction.js"],"names":[],"mappings":"AAAA;IAEI;;;;OAIG;IACH,sBAAsB;IAGtB;;;OAGG;IACH,2BAEC;IAED;;;;;OAKG;IACH,qEAFW,MAAM,QAShB;IAED;;;;;OAKG;IACH,8DAFW,MAAM,QAIhB;IAED,iBAEC;IAED;;;;;;;;OAQG;IACH,wDALW,MAAM,KACN,MAAM,YACN,MAAM,8BAKhB;IAIL;;;OAGG;IACH,qCAFU,OAAO,CAE4C;CAP5D"}
@@ -17,12 +17,27 @@ export class ContinuousGridCellAction {
17
17
  }
18
18
 
19
19
  /**
20
- *
21
- * @param {number} seed
20
+ * Guarded entry point, no-op when already initialized
21
+ * @param {GridData} grid
22
22
  * @param {EntityComponentDataset} ecd
23
+ * @param {number} seed
24
+ */
25
+ ensureInitialized(grid, ecd, seed) {
26
+ if (!this.__initialized) {
27
+ this.initialize(grid, ecd, seed);
28
+
29
+ // make sure initialization flag is set
30
+ this.__initialized = true;
31
+ }
32
+ }
33
+
34
+ /**
35
+ *
23
36
  * @param {GridData} grid
37
+ * @param {EntityComponentDataset} ecd
38
+ * @param {number} seed
24
39
  */
25
- initialize(seed, ecd, grid) {
40
+ initialize(grid, ecd, seed) {
26
41
  this.__initialized = true;
27
42
  }
28
43
 
@@ -1,3 +1,13 @@
1
+ /**
2
+ * Lerps terrain heightmap texels towards a target height filter.
3
+ *
4
+ * NOTE: the terrain heightmap is the terrain renderer's vertex-aligned domain — this action
5
+ * deliberately maps grid corners to sampler corners (x/(w-1) form), unlike grid layers which
6
+ * use the ratio mapping (see generation/COORDINATES.md). Each invocation writes only the
7
+ * <=4 texels under the given position's bilinear footprint; when the heightmap is more than
8
+ * twice as dense as the invocation grid, callers must invoke at sub-cell resolution
9
+ * (e.g. GridActionRuleSet's `resolution` parameter) or texels between cells stay untouched.
10
+ */
1
11
  export class ContinuousGridCellActionSetTerrainHeight extends ContinuousGridCellAction {
2
12
  /**
3
13
  *
@@ -9,7 +19,7 @@ export class ContinuousGridCellActionSetTerrainHeight extends ContinuousGridCell
9
19
  * @type {CellFilter}
10
20
  */
11
21
  target: CellFilter;
12
- initialize(seed: any, ecd: any, grid: any): void;
22
+ initialize(grid: any, ecd: any, seed: any): void;
13
23
  execute(ecd: any, grid: any, x: any, y: any, rotation: any, strength: any): void;
14
24
  }
15
25
  import { ContinuousGridCellAction } from "./ContinuousGridCellAction.js";
@@ -1 +1 @@
1
- {"version":3,"file":"ContinuousGridCellActionSetTerrainHeight.d.ts","sourceRoot":"","sources":["../../../../../src/generation/grid/actions/ContinuousGridCellActionSetTerrainHeight.js"],"names":[],"mappings":"AAQA;IAEI;;;OAGG;IACH,eAFU,SAAS,CAEE;IAErB;;;OAGG;IACH,mBAAwC;IAGxC,iDAeC;IAED,iFAsDC;CACJ;yCAzFwC,+BAA+B;0BAF9C,uDAAuD"}
1
+ {"version":3,"file":"ContinuousGridCellActionSetTerrainHeight.d.ts","sourceRoot":"","sources":["../../../../../src/generation/grid/actions/ContinuousGridCellActionSetTerrainHeight.js"],"names":[],"mappings":"AAQA;;;;;;;;;GASG;AACH;IAEI;;;OAGG;IACH,eAFU,SAAS,CAEE;IAErB;;;OAGG;IACH,mBAAwC;IAGxC,iDAeC;IAED,iFAsDC;CACJ;yCAnGwC,+BAA+B;0BAF9C,uDAAuD"}
@@ -6,6 +6,16 @@ import { Sampler2D } from "../../../engine/graphics/texture/sampler/Sampler2D.js
6
6
  import { CellFilterLiteralFloat } from "../../filtering/numeric/CellFilterLiteralFloat.js";
7
7
  import { ContinuousGridCellAction } from "./ContinuousGridCellAction.js";
8
8
 
9
+ /**
10
+ * Lerps terrain heightmap texels towards a target height filter.
11
+ *
12
+ * NOTE: the terrain heightmap is the terrain renderer's vertex-aligned domain — this action
13
+ * deliberately maps grid corners to sampler corners (x/(w-1) form), unlike grid layers which
14
+ * use the ratio mapping (see generation/COORDINATES.md). Each invocation writes only the
15
+ * <=4 texels under the given position's bilinear footprint; when the heightmap is more than
16
+ * twice as dense as the invocation grid, callers must invoke at sub-cell resolution
17
+ * (e.g. GridActionRuleSet's `resolution` parameter) or texels between cells stay untouched.
18
+ */
9
19
  export class ContinuousGridCellActionSetTerrainHeight extends ContinuousGridCellAction {
10
20
 
11
21
  /**
@@ -21,8 +31,8 @@ export class ContinuousGridCellActionSetTerrainHeight extends ContinuousGridCell
21
31
  target = CellFilterLiteralFloat.from(0);
22
32
 
23
33
 
24
- initialize(seed, ecd, grid) {
25
- super.initialize(seed, ecd, grid);
34
+ initialize(grid, ecd, seed) {
35
+ super.initialize(grid, ecd, seed);
26
36
 
27
37
  /**
28
38
  *
@@ -35,7 +45,7 @@ export class ContinuousGridCellActionSetTerrainHeight extends ContinuousGridCell
35
45
  this.heightSampler = terrain.samplerHeight;
36
46
 
37
47
 
38
- this.target.initialize(grid, seed);
48
+ this.target.ensureInitialized(grid, seed);
39
49
  }
40
50
 
41
51
  execute(ecd, grid, x, y, rotation, strength) {
@@ -9,7 +9,7 @@ export class ContinuousGridCellActionSetTerrainObstacle extends ContinuousGridCe
9
9
  * @type {CellFilter}
10
10
  */
11
11
  threshold: CellFilter;
12
- initialize(seed: any, ecd: any, grid: any): void;
12
+ initialize(grid: any, ecd: any, seed: any): void;
13
13
  execute(ecd: any, grid: any, x: any, y: any, rotation: any, strength: any): void;
14
14
  }
15
15
  import { ContinuousGridCellAction } from "./ContinuousGridCellAction.js";
@@ -21,8 +21,8 @@ export class ContinuousGridCellActionSetTerrainObstacle extends ContinuousGridCe
21
21
  this.threshold = CellFilterLiteralFloat.from(0);
22
22
  }
23
23
 
24
- initialize(seed, ecd, grid) {
25
- super.initialize(seed, ecd, grid);
24
+ initialize(grid, ecd, seed) {
25
+ super.initialize(grid, ecd, seed);
26
26
 
27
27
 
28
28
  const cp = ecd.getAnyComponent(Terrain);
@@ -33,7 +33,7 @@ export class ContinuousGridCellActionWriteObstacle extends ContinuousGridCellAct
33
33
  * @type {GridObstacle}
34
34
  */
35
35
  targetGridObstacle: GridObstacle;
36
- initialize(seed: any, ecd: any, grid: any): void;
36
+ initialize(grid: any, ecd: any, seed: any): void;
37
37
  execute(ecd: any, grid: any, x: any, y: any, rotation: any, strength: any): void;
38
38
  }
39
39
  import { ContinuousGridCellAction } from "./ContinuousGridCellAction.js";
@@ -1 +1 @@
1
- {"version":3,"file":"ContinuousGridCellActionWriteObstacle.d.ts","sourceRoot":"","sources":["../../../../../src/generation/grid/actions/ContinuousGridCellActionWriteObstacle.js"],"names":[],"mappings":"AAOA;IA0CI;;;;;;OAMG;IACH,2DAFY,qCAAqC,CAahD;IAzDG;;;OAGG;IACH,qBAA8C;IAE9C,kBAAkB;IAElB;;;;;OAKG;IACH;kBAFuB,YAAY;kBAAY,YAAY;MAa1D;IAED;;;OAGG;IACH,oBAFU,YAAY,CAEQ;IAC9B;;;OAGG;IACH,oBAFU,YAAY,CAEQ;IAuBlC,iDAwBC;IAED,iFA0BC;CACJ;yCA1HwC,+BAA+B;yBAG/C,+CAA+C;yBAC/C,+CAA+C"}
1
+ {"version":3,"file":"ContinuousGridCellActionWriteObstacle.d.ts","sourceRoot":"","sources":["../../../../../src/generation/grid/actions/ContinuousGridCellActionWriteObstacle.js"],"names":[],"mappings":"AAOA;IA0CI;;;;;;OAMG;IACH,2DAFY,qCAAqC,CAahD;IAzDG;;;OAGG;IACH,qBAA8C;IAE9C,kBAAkB;IAElB;;;;;OAKG;IACH;kBAFuB,YAAY;kBAAY,YAAY;MAa1D;IAED;;;OAGG;IACH,oBAFU,YAAY,CAEQ;IAC9B;;;OAGG;IACH,oBAFU,YAAY,CAEQ;IAuBlC,iDAsBC;IAED,iFA0BC;CACJ;yCAxHwC,+BAA+B;yBAG/C,+CAA+C;yBAC/C,+CAA+C"}
@@ -67,8 +67,8 @@ export class ContinuousGridCellActionWriteObstacle extends ContinuousGridCellAct
67
67
  return r;
68
68
  }
69
69
 
70
- initialize(seed, ecd, grid) {
71
- super.initialize(seed, ecd, grid);
70
+ initialize(grid, ecd, seed) {
71
+ super.initialize(grid, ecd, seed);
72
72
 
73
73
  const target = this.extractTarget(grid, ecd);
74
74
 
@@ -88,9 +88,7 @@ export class ContinuousGridCellActionWriteObstacle extends ContinuousGridCellAct
88
88
 
89
89
 
90
90
  //initialize obstacle filter
91
- if (!this.obstacle.initialized) {
92
- this.obstacle.initialize(grid, seed);
93
- }
91
+ this.obstacle.ensureInitialized(grid, seed);
94
92
  }
95
93
 
96
94
  execute(ecd, grid, x, y, rotation, strength) {
@@ -118,6 +116,6 @@ export class ContinuousGridCellActionWriteObstacle extends ContinuousGridCellAct
118
116
  const isObstacle = v > this.threshold;
119
117
 
120
118
 
121
- to.writePoint(x, y, isObstacle ? 1 : 0);
119
+ to.writePoint(local_x, local_y, isObstacle ? 1 : 0);
122
120
  }
123
121
  }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Canonical grid → layer-texel mapping (see generation/COORDINATES.md).
3
+ * Integer grid coordinates are cell centers, integer texel coordinates are texel centers.
4
+ * @param {number} v grid coordinate
5
+ * @param {number} resolution texels per grid cell ({@link GridDataLayer#resolution})
6
+ * @returns {number} texel coordinate
7
+ */
8
+ export function grid_to_texel(v: number, resolution: number): number;
9
+ //# sourceMappingURL=grid_to_texel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid_to_texel.d.ts","sourceRoot":"","sources":["../../../../../src/generation/grid/coords/grid_to_texel.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,iCAJW,MAAM,cACN,MAAM,GACJ,MAAM,CAIlB"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Canonical grid → layer-texel mapping (see generation/COORDINATES.md).
3
+ * Integer grid coordinates are cell centers, integer texel coordinates are texel centers.
4
+ * @param {number} v grid coordinate
5
+ * @param {number} resolution texels per grid cell ({@link GridDataLayer#resolution})
6
+ * @returns {number} texel coordinate
7
+ */
8
+ export function grid_to_texel(v, resolution) {
9
+ return v * resolution;
10
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Canonical layer-texel → grid mapping (see generation/COORDINATES.md).
3
+ * Inverse of {@link grid_to_texel}.
4
+ * @param {number} v texel coordinate
5
+ * @param {number} resolution texels per grid cell ({@link GridDataLayer#resolution})
6
+ * @returns {number} grid coordinate
7
+ */
8
+ export function texel_to_grid(v: number, resolution: number): number;
9
+ //# sourceMappingURL=texel_to_grid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"texel_to_grid.d.ts","sourceRoot":"","sources":["../../../../../src/generation/grid/coords/texel_to_grid.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,iCAJW,MAAM,cACN,MAAM,GACJ,MAAM,CAIlB"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Canonical layer-texel → grid mapping (see generation/COORDINATES.md).
3
+ * Inverse of {@link grid_to_texel}.
4
+ * @param {number} v texel coordinate
5
+ * @param {number} resolution texels per grid cell ({@link GridDataLayer#resolution})
6
+ * @returns {number} grid coordinate
7
+ */
8
+ export function texel_to_grid(v, resolution) {
9
+ return v / resolution;
10
+ }
@@ -4,7 +4,7 @@ export class GridTaskApplyActionToCells extends GridTaskGenerator {
4
4
  * @returns {GridTaskApplyActionToCells}
5
5
  * @param {CellSupplier} selector
6
6
  * @param {GridCellAction} action
7
- * @param {string} name
7
+ * @param {string} [name]
8
8
  */
9
9
  static from({ selector, action, name }: CellSupplier): GridTaskApplyActionToCells;
10
10
  /**
@@ -16,7 +16,7 @@ export class GridTaskApplyActionToCells extends GridTaskGenerator {
16
16
  *
17
17
  * @type {CellSupplier|null}
18
18
  */
19
- fitness: CellSupplier | null;
19
+ supplier: CellSupplier | null;
20
20
  build(grid: any, ecd: any, seed: any): TaskGroup;
21
21
  }
22
22
  import { GridTaskGenerator } from "../GridTaskGenerator.js";
@@ -1 +1 @@
1
- {"version":3,"file":"GridTaskApplyActionToCells.d.ts","sourceRoot":"","sources":["../../../../../src/generation/grid/generation/GridTaskApplyActionToCells.js"],"names":[],"mappings":"AAOA;IAcI;;;;;;OAMG;IACH,uDALa,0BAA0B,CAetC;IA7BD;;;OAGG;IACH,QAFU,iBAAe,IAAI,CAEf;IAEd;;;OAGG;IACH,SAFU,eAAa,IAAI,CAEZ;IAqBf,iDAwCC;CACJ;kCA5EiC,yBAAyB;sBAHrC,yCAAyC"}
1
+ {"version":3,"file":"GridTaskApplyActionToCells.d.ts","sourceRoot":"","sources":["../../../../../src/generation/grid/generation/GridTaskApplyActionToCells.js"],"names":[],"mappings":"AAOA;IAcI;;;;;;OAMG;IACH,uDALa,0BAA0B,CAmBtC;IAjCD;;;OAGG;IACH,QAFU,iBAAe,IAAI,CAEf;IAEd;;;OAGG;IACH,UAFU,eAAa,IAAI,CAEX;IAyBhB,iDAwCC;CACJ;kCAhFiC,yBAAyB;sBAHrC,yCAAyC"}
@@ -17,14 +17,14 @@ export class GridTaskApplyActionToCells extends GridTaskGenerator {
17
17
  *
18
18
  * @type {CellSupplier|null}
19
19
  */
20
- fitness = null;
20
+ supplier = null;
21
21
 
22
22
  /**
23
23
  *
24
24
  * @returns {GridTaskApplyActionToCells}
25
25
  * @param {CellSupplier} selector
26
26
  * @param {GridCellAction} action
27
- * @param {string} name
27
+ * @param {string} [name]
28
28
  */
29
29
  static from({ selector, action, name }) {
30
30
  assert.equal(selector.isCellSupplier, true, 'selector.isCellSupplier !== true');
@@ -33,14 +33,18 @@ export class GridTaskApplyActionToCells extends GridTaskGenerator {
33
33
  const r = new GridTaskApplyActionToCells();
34
34
 
35
35
  r.action = action;
36
- r.fitness = selector;
36
+ r.supplier = selector;
37
+
38
+ if (name !== undefined) {
39
+ r.name = name;
40
+ }
37
41
 
38
42
  return r;
39
43
  }
40
44
 
41
45
  build(grid, ecd, seed) {
42
46
  const tInitialize = actionTask(() => {
43
- this.fitness.initialize(grid, seed);
47
+ this.supplier.initialize(grid, seed);
44
48
  this.action.initialize(grid, seed);
45
49
  });
46
50
 
@@ -49,7 +53,7 @@ export class GridTaskApplyActionToCells extends GridTaskGenerator {
49
53
  const tMain = new Task({
50
54
  name: `Apply action to cells`,
51
55
  computeProgress: () => {
52
- const c = this.fitness.count();
56
+ const c = this.supplier.count();
53
57
 
54
58
  if (c <= 0) {
55
59
  return 0;
@@ -58,7 +62,7 @@ export class GridTaskApplyActionToCells extends GridTaskGenerator {
58
62
  return cursor / c;
59
63
  },
60
64
  cycleFunction: () => {
61
- const cell_data = this.fitness.next();
65
+ const cell_data = this.supplier.next();
62
66
 
63
67
  if (cell_data === undefined) {
64
68
  return TaskSignal.EndSuccess;
@@ -1 +1 @@
1
- {"version":3,"file":"GridTaskDensityMarkerDistribution.d.ts","sourceRoot":"","sources":["../../../../../src/generation/grid/generation/GridTaskDensityMarkerDistribution.js"],"names":[],"mappings":"AAgBA;IA4BI;;;;;;OAMG;IACH,2EAHW,eAAe,SACf,MAAM,qCAgBhB;IA/CD;;;OAGG;IACH,oBAAe;IAEf;;;OAGG;IACH,kCAAc;IAEd;;;OAGG;IACH,OAFU,eAAe,CAES;IAElC;;;;OAIG;IACH,eAAW;IA2BX;;;;;;;;OAQG;IACH,qCANW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACJ,MAAM,CAwFlB;IAED;;;;;;;;;OASG;IACH,kBARW,MAAM,sBAEN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACJ,IAAI,CAkIhB;IAGD,iDA6EC;CACJ;kCAlXiC,yBAAyB;gCAT3B,gDAAgD;iBAI/D,oCAAoC;sBAC/B,yCAAyC"}
1
+ {"version":3,"file":"GridTaskDensityMarkerDistribution.d.ts","sourceRoot":"","sources":["../../../../../src/generation/grid/generation/GridTaskDensityMarkerDistribution.js"],"names":[],"mappings":"AAgBA;IA4BI;;;;;;OAMG;IACH,2EAHW,eAAe,SACf,MAAM,qCAgBhB;IA/CD;;;OAGG;IACH,oBAAe;IAEf;;;OAGG;IACH,kCAAc;IAEd;;;OAGG;IACH,OAFU,eAAe,CAES;IAElC;;;;OAIG;IACH,eAAW;IA2BX;;;;;;;;OAQG;IACH,qCANW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACJ,MAAM,CAqFlB;IAED;;;;;;;;;OASG;IACH,kBARW,MAAM,sBAEN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACJ,IAAI,CAsIhB;IAGD,iDA2EC;CACJ;kCAjXiC,yBAAyB;gCAT3B,gDAAgD;iBAI/D,oCAAoC;sBAC/B,yCAAyC"}
@@ -124,17 +124,14 @@ export class GridTaskDensityMarkerDistribution extends GridTaskGenerator {
124
124
  continue;
125
125
  }
126
126
 
127
- const node = this.action.buildNode(grid, x, y, 0);
127
+ // estimate the marker size directly; building nodes here would run the action's
128
+ // transformers, which may be stateful (e.g. consume from a finite value pool)
129
+ const node_size = this.action.size * this.scale.sampleRandom(random);
128
130
 
129
- const markerScale = this.scale.sampleRandom(random);
131
+ samplesSize.push(node_size);
130
132
 
131
- //modify size and scale
132
- node.size *= markerScale;
133
-
134
- samplesSize.push(node.size);
135
133
 
136
-
137
- const overlap = grid.containsMarkerInCircle(x, y, node.size, MarkerNodeMatcherAny.INSTANCE);
134
+ const overlap = grid.containsMarkerInCircle(x, y, node_size, MarkerNodeMatcherAny.INSTANCE);
138
135
 
139
136
  if (overlap) {
140
137
  //collision
@@ -244,19 +241,11 @@ export class GridTaskDensityMarkerDistribution extends GridTaskGenerator {
244
241
  return TaskSignal.Continue;
245
242
  }
246
243
 
247
- const node = action.buildNode(grid, _x, _y, 0);
248
-
249
- // remember the filter value for debug purposes
250
- node.properties['@filter_density'] = densityValue;
251
-
252
244
  const markerScale = scale.sampleRandom(random);
253
245
 
254
- //modify size and scale
255
- node.size *= markerScale;
256
-
257
- node.transform.scale.multiplyScalar(markerScale);
246
+ const node_size = action.size * markerScale;
258
247
 
259
- const overlap = grid.containsMarkerInCircle(_x, _y, node.size, MarkerNodeMatcherAny.INSTANCE);
248
+ const overlap = grid.containsMarkerInCircle(_x, _y, node_size, MarkerNodeMatcherAny.INSTANCE);
260
249
 
261
250
  if (overlap) {
262
251
  rejectedSampleBudget--;
@@ -271,6 +260,18 @@ export class GridTaskDensityMarkerDistribution extends GridTaskGenerator {
271
260
 
272
261
  }
273
262
 
263
+ // build the node only once the placement is committed; transformers may be
264
+ // stateful and must not run for rejected attempts
265
+ const node = action.buildNode(grid, _x, _y, 0);
266
+
267
+ // remember the filter value for debug purposes
268
+ node.properties['@filter_density'] = densityValue;
269
+
270
+ //modify size and scale
271
+ node.size *= markerScale;
272
+
273
+ node.transform.scale.multiplyScalar(markerScale);
274
+
274
275
  grid.addMarker(node);
275
276
 
276
277
  return TaskSignal.Continue;
@@ -316,9 +317,7 @@ export class GridTaskDensityMarkerDistribution extends GridTaskGenerator {
316
317
  //we want to estimate average size of a marker
317
318
  const tInitialize = actionTask(() => {
318
319
 
319
- if (!this.density.initialized) {
320
- this.density.initialize(grid, seed);
321
- }
320
+ this.density.ensureInitialized(grid, seed);
322
321
 
323
322
  this.action.initialize(grid, seed);
324
323
  });
@@ -1,3 +1,10 @@
1
+ /**
2
+ * Executes a placement rule a fixed number of times at random matching cells.
3
+ *
4
+ * Each cell is attempted at most once per build — cells whose pattern could become
5
+ * true later (as the grid mutates) are not retried. If every cell has been attempted
6
+ * before the rule completed the requested number of times, the task ends in failure.
7
+ */
1
8
  export class GridTaskExecuteRuleTimes extends GridTaskGenerator {
2
9
  /**
3
10
  *
@@ -1 +1 @@
1
- {"version":3,"file":"GridTaskExecuteRuleTimes.d.ts","sourceRoot":"","sources":["../../../../../src/generation/grid/generation/GridTaskExecuteRuleTimes.js"],"names":[],"mappings":"AAUA;IAUI;;;;OAIG;IACH,iDAFW,MAAM,4BAShB;IApBD;;;OAGG;IACH,4BAAY;IAEZ,cAAU;IAgBV,iDA+EC;CACJ;kCA1GiC,yBAAyB;sBAHrC,yCAAyC"}
1
+ {"version":3,"file":"GridTaskExecuteRuleTimes.d.ts","sourceRoot":"","sources":["../../../../../src/generation/grid/generation/GridTaskExecuteRuleTimes.js"],"names":[],"mappings":"AAUA;;;;;;GAMG;AACH;IAUI;;;;OAIG;IACH,iDAFW,MAAM,4BAShB;IApBD;;;OAGG;IACH,4BAAY;IAEZ,cAAU;IAgBV,iDAgFC;CACJ;kCAlHiC,yBAAyB;sBAHrC,yCAAyC"}
@@ -8,6 +8,13 @@ import { TaskSignal } from "../../../core/process/task/TaskSignal.js";
8
8
  import { actionTask } from "../../../core/process/task/util/actionTask.js";
9
9
  import { GridTaskGenerator } from "../GridTaskGenerator.js";
10
10
 
11
+ /**
12
+ * Executes a placement rule a fixed number of times at random matching cells.
13
+ *
14
+ * Each cell is attempted at most once per build — cells whose pattern could become
15
+ * true later (as the grid mutates) are not retried. If every cell has been attempted
16
+ * before the rule completed the requested number of times, the task ends in failure.
17
+ */
11
18
  export class GridTaskExecuteRuleTimes extends GridTaskGenerator {
12
19
 
13
20
  /**
@@ -47,11 +54,13 @@ export class GridTaskExecuteRuleTimes extends GridTaskGenerator {
47
54
  const endIndex = gridSize - 1;
48
55
 
49
56
  /**
50
- *
57
+ * Cells that have been attempted, successfully or not
51
58
  * @type {BitSet}
52
59
  */
53
60
  const closed = new BitSet();
54
61
 
62
+ let closedCount = 0;
63
+
55
64
  const random = seededRandom(seed);
56
65
 
57
66
  const tInitialize = actionTask(() => {
@@ -65,21 +74,20 @@ export class GridTaskExecuteRuleTimes extends GridTaskGenerator {
65
74
  return TaskSignal.EndSuccess;
66
75
  }
67
76
 
68
- let index = randomIntegerBetween(random, 0, endIndex);
77
+ if (closedCount >= gridSize) {
78
+ //we tried every cell, ran out of cells before reaching the requested count
79
+ return TaskSignal.EndFailure;
80
+ }
69
81
 
70
- let i = 0;
82
+ let index = randomIntegerBetween(random, 0, endIndex);
71
83
 
72
84
  while (closed.get(index)) {
73
85
  index = (index + 1) % gridSize;
74
-
75
- i++;
76
-
77
- if (i >= endIndex) {
78
- //we tried every cell, everything is taken
79
- return TaskSignal.EndFailure;
80
- }
81
86
  }
82
87
 
88
+ closed.set(index, true);
89
+ closedCount++;
90
+
83
91
  const y = (index / width) | 0;
84
92
  const x = index % width;
85
93
 
@@ -1 +1 @@
1
- {"version":3,"file":"GridTaskCellularAutomata.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/grid/generation/discrete/GridTaskCellularAutomata.js"],"names":[],"mappings":"AASA;IA0BI;;;;;;OAMG;IACH;;;;;iCAyBC;IAvDD,mBAAe;IACf,oBAAgB;IAChB,kBAAc;IACd,qBAAiB;IAEjB;;;OAGG;IACH,OAFU,MAAM,CAEL;IAEX;;;OAGG;IACH,WAFU,MAAM,CAEC;IAEjB;;;OAGG;IACH,uBAAc;IAoCd,iDA8DC;CACJ;kCA7HiC,4BAA4B;sBALxC,4CAA4C"}
1
+ {"version":3,"file":"GridTaskCellularAutomata.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/grid/generation/discrete/GridTaskCellularAutomata.js"],"names":[],"mappings":"AAQA;IA0BI;;;;;;OAMG;IACH;;;;;iCAyBC;IAvDD,mBAAe;IACf,oBAAgB;IAChB,kBAAc;IACd,qBAAiB;IAEjB;;;OAGG;IACH,OAFU,MAAM,CAEL;IAEX;;;OAGG;IACH,WAFU,MAAM,CAEC;IAEjB;;;OAGG;IACH,uBAAc;IAoCd,iDAwEC;CACJ;kCAvIiC,4BAA4B;sBAJxC,4CAA4C"}