@woosh/meep-engine 2.156.0 → 2.158.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 (695) 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} +26 -8
  134. package/src/core/geom/3d/shape/PosedShape3D.d.ts.map +1 -0
  135. package/src/{engine/physics/narrowphase/PosedShape.js → core/geom/3d/shape/PosedShape3D.js} +60 -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/ecs/trail2d/Trail2D.d.ts.map +1 -1
  250. package/src/engine/graphics/ecs/trail2d/Trail2D.js +21 -0
  251. package/src/engine/graphics/ecs/trail2d/Trail2DFlags.d.ts +1 -0
  252. package/src/engine/graphics/ecs/trail2d/Trail2DFlags.js +9 -1
  253. package/src/engine/graphics/particles/particular/engine/emitter/serde/ParameterLookupTableSerializationAdapter.d.ts.map +1 -1
  254. package/src/engine/graphics/particles/particular/engine/emitter/serde/ParameterLookupTableSerializationAdapter.js +2 -76
  255. package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTable.d.ts.map +1 -1
  256. package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTable.js +2 -427
  257. package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTableFlags.d.ts +1 -4
  258. package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTableFlags.d.ts.map +1 -1
  259. package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTableFlags.js +2 -6
  260. package/src/engine/graphics/particles/particular/engine/utils/volume/prototypeParticleVolume.js +1 -1
  261. package/src/engine/graphics/render/forward_plus/read_frustum_corner.d.ts +1 -8
  262. package/src/engine/graphics/render/forward_plus/read_frustum_corner.d.ts.map +1 -1
  263. package/src/engine/graphics/render/forward_plus/read_frustum_corner.js +2 -14
  264. package/src/engine/graphics/sh3/path_tracer/geometry/compute_triangle_group_aabb3.d.ts +1 -11
  265. package/src/engine/graphics/sh3/path_tracer/geometry/compute_triangle_group_aabb3.d.ts.map +1 -1
  266. package/src/engine/graphics/sh3/path_tracer/geometry/compute_triangle_group_aabb3.js +2 -46
  267. package/src/engine/graphics/sh3/prototypeSH3Probe.js +1 -1
  268. package/src/engine/graphics/texture/3d/scs3d_sample_linear3.d.ts +27 -0
  269. package/src/engine/graphics/texture/3d/scs3d_sample_linear3.d.ts.map +1 -0
  270. package/src/engine/graphics/texture/3d/scs3d_sample_linear3.js +81 -0
  271. package/src/engine/graphics/texture/isImageBitmap.d.ts +1 -6
  272. package/src/engine/graphics/texture/isImageBitmap.d.ts.map +1 -1
  273. package/src/engine/graphics/texture/isImageBitmap.js +2 -12
  274. package/src/{core/process/action → engine/intelligence/behavior/util}/AsynchronousDelayAction.d.ts +2 -2
  275. package/src/engine/intelligence/behavior/util/AsynchronousDelayAction.d.ts.map +1 -0
  276. package/src/{core/process/action → engine/intelligence/behavior/util}/AsynchronousDelayAction.js +55 -55
  277. package/src/engine/network/NetworkSession.d.ts +12 -1
  278. package/src/engine/network/NetworkSession.d.ts.map +1 -1
  279. package/src/engine/network/NetworkSession.js +52 -1
  280. package/src/engine/network/README.md +45 -0
  281. package/src/engine/network/convertPathToURL.d.ts +1 -8
  282. package/src/engine/network/convertPathToURL.d.ts.map +1 -1
  283. package/src/engine/network/convertPathToURL.js +2 -107
  284. package/src/engine/network/core/quantize/quantize_float.d.ts.map +1 -1
  285. package/src/engine/network/core/quantize/quantize_float.js +7 -0
  286. package/src/engine/network/core/quantize/quantize_position.d.ts.map +1 -1
  287. package/src/engine/network/core/quantize/quantize_position.js +12 -1
  288. package/src/engine/network/orchestrator/NetworkPeer.d.ts.map +1 -1
  289. package/src/engine/network/orchestrator/NetworkPeer.js +15 -1
  290. package/src/engine/network/replication/Replicator.d.ts +8 -0
  291. package/src/engine/network/replication/Replicator.d.ts.map +1 -1
  292. package/src/engine/network/replication/Replicator.js +48 -0
  293. package/src/engine/network/transport/Channel.d.ts.map +1 -1
  294. package/src/engine/network/transport/Channel.js +46 -12
  295. package/src/engine/network/transport/ReliableCommandPipeline.d.ts +16 -0
  296. package/src/engine/network/transport/ReliableCommandPipeline.d.ts.map +1 -1
  297. package/src/engine/network/transport/ReliableCommandPipeline.js +29 -0
  298. package/src/engine/network/transport/adapters/NodeUDPTransport.d.ts.map +1 -1
  299. package/src/engine/network/transport/adapters/NodeUDPTransport.js +7 -1
  300. package/src/engine/network/transport/fragments/packet_size.d.ts +5 -5
  301. package/src/engine/network/transport/fragments/packet_size.d.ts.map +1 -1
  302. package/src/engine/network/transport/fragments/packet_size.js +5 -5
  303. package/src/engine/physics/BULLET_REVIEW.md +1 -1
  304. package/src/engine/physics/JOLT_REVIEW.md +2 -2
  305. package/src/engine/physics/PLAN.md +1094 -945
  306. package/src/engine/physics/RAPIER_REVIEW.md +2 -2
  307. package/src/engine/physics/body/BodyStorage.d.ts +2 -12
  308. package/src/engine/physics/body/BodyStorage.d.ts.map +1 -1
  309. package/src/engine/physics/body/BodyStorage.js +406 -452
  310. package/src/engine/physics/body/SolverBodyState.d.ts.map +1 -1
  311. package/src/engine/physics/body/SolverBodyState.js +12 -3
  312. package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts +28 -3
  313. package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts.map +1 -1
  314. package/src/engine/physics/broadphase/compute_fat_world_aabb.js +60 -24
  315. package/src/engine/physics/broadphase/generate_pairs.d.ts +9 -5
  316. package/src/engine/physics/broadphase/generate_pairs.d.ts.map +1 -1
  317. package/src/engine/physics/broadphase/generate_pairs.js +52 -37
  318. package/src/engine/physics/ccd/linear_sweep.d.ts +15 -5
  319. package/src/engine/physics/ccd/linear_sweep.d.ts.map +1 -1
  320. package/src/engine/physics/ccd/linear_sweep.js +122 -40
  321. package/src/engine/physics/constraint/solve_constraints.d.ts.map +1 -1
  322. package/src/engine/physics/constraint/solve_constraints.js +830 -805
  323. package/src/engine/physics/contact/ManifoldStore.d.ts +91 -16
  324. package/src/engine/physics/contact/ManifoldStore.d.ts.map +1 -1
  325. package/src/engine/physics/contact/ManifoldStore.js +204 -60
  326. package/src/engine/physics/ecs/BodyKind.d.ts +7 -3
  327. package/src/engine/physics/ecs/BodyKind.d.ts.map +1 -1
  328. package/src/engine/physics/ecs/BodyKind.js +29 -25
  329. package/src/engine/physics/ecs/Collider.d.ts +7 -0
  330. package/src/engine/physics/ecs/Collider.d.ts.map +1 -1
  331. package/src/engine/physics/ecs/Collider.js +7 -0
  332. package/src/engine/physics/ecs/ColliderSerializationAdapter.js +1 -1
  333. package/src/engine/physics/ecs/PhysicsSystem.d.ts +110 -6
  334. package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
  335. package/src/engine/physics/ecs/PhysicsSystem.js +467 -45
  336. package/src/engine/physics/ecs/RigidBody.d.ts +20 -5
  337. package/src/engine/physics/ecs/RigidBody.d.ts.map +1 -1
  338. package/src/engine/physics/ecs/RigidBody.js +307 -286
  339. package/src/engine/physics/ecs/RigidBodyFlags.d.ts +6 -3
  340. package/src/engine/physics/ecs/RigidBodyFlags.d.ts.map +1 -1
  341. package/src/engine/physics/ecs/RigidBodyFlags.js +31 -28
  342. package/src/engine/physics/ecs/RigidBodySerializationAdapter.d.ts +12 -4
  343. package/src/engine/physics/ecs/RigidBodySerializationAdapter.d.ts.map +1 -1
  344. package/src/engine/physics/ecs/RigidBodySerializationAdapter.js +19 -5
  345. package/src/engine/physics/ecs/RigidBodySerializationUpgrader_0_1.d.ts +10 -0
  346. package/src/engine/physics/ecs/RigidBodySerializationUpgrader_0_1.d.ts.map +1 -0
  347. package/src/engine/physics/ecs/RigidBodySerializationUpgrader_0_1.js +37 -0
  348. package/src/engine/physics/ecs/find_non_finite_physics_state.d.ts +28 -0
  349. package/src/engine/physics/ecs/find_non_finite_physics_state.d.ts.map +1 -0
  350. package/src/engine/physics/ecs/find_non_finite_physics_state.js +76 -0
  351. package/src/engine/physics/events/ContactEventBuffer.d.ts +11 -0
  352. package/src/engine/physics/events/ContactEventBuffer.d.ts.map +1 -1
  353. package/src/engine/physics/events/ContactEventBuffer.js +40 -0
  354. package/src/engine/physics/events/diff_manifolds.d.ts +30 -13
  355. package/src/engine/physics/events/diff_manifolds.d.ts.map +1 -1
  356. package/src/engine/physics/events/diff_manifolds.js +87 -50
  357. package/src/engine/physics/fluid/FluidField.d.ts +98 -26
  358. package/src/engine/physics/fluid/FluidField.d.ts.map +1 -1
  359. package/src/engine/physics/fluid/FluidField.js +684 -570
  360. package/src/engine/physics/fluid/FluidSimulator.d.ts +157 -6
  361. package/src/engine/physics/fluid/FluidSimulator.d.ts.map +1 -1
  362. package/src/engine/physics/fluid/FluidSimulator.js +450 -83
  363. package/src/engine/physics/fluid/REVIEW_02_PLAN.md +243 -0
  364. package/src/engine/physics/fluid/ecs/FluidComponent.d.ts +4 -3
  365. package/src/engine/physics/fluid/ecs/FluidComponent.d.ts.map +1 -1
  366. package/src/engine/physics/fluid/ecs/FluidComponent.js +4 -3
  367. package/src/engine/physics/fluid/ecs/FluidObstacle.d.ts +72 -0
  368. package/src/engine/physics/fluid/ecs/FluidObstacle.d.ts.map +1 -0
  369. package/src/engine/physics/fluid/ecs/FluidObstacle.js +97 -0
  370. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +117 -0
  371. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts.map +1 -0
  372. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.js +348 -0
  373. package/src/engine/physics/fluid/ecs/FluidSystem.d.ts +3 -3
  374. package/src/engine/physics/fluid/effector/GlobalFluidEffector.d.ts +62 -12
  375. package/src/engine/physics/fluid/effector/GlobalFluidEffector.d.ts.map +1 -1
  376. package/src/engine/physics/fluid/effector/GlobalFluidEffector.js +135 -38
  377. package/src/engine/physics/fluid/effector/ImpulseFluidEffector.d.ts.map +1 -1
  378. package/src/engine/physics/fluid/effector/ImpulseFluidEffector.js +85 -38
  379. package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts +27 -8
  380. package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts.map +1 -1
  381. package/src/engine/physics/fluid/effector/WakeFluidEffector.js +171 -68
  382. package/src/engine/physics/fluid/prototype.js +25 -1
  383. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_scalar.d.ts +42 -0
  384. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_scalar.d.ts.map +1 -0
  385. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_scalar.js +136 -0
  386. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.d.ts +37 -0
  387. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.d.ts.map +1 -0
  388. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.js +169 -0
  389. package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.d.ts +36 -0
  390. package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.d.ts.map +1 -0
  391. package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.js +100 -0
  392. package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.d.ts +6 -0
  393. package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.d.ts.map +1 -1
  394. package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.js +6 -0
  395. package/src/engine/physics/fluid/solver/v3_grid_apply_diffusion.d.ts +7 -2
  396. package/src/engine/physics/fluid/solver/v3_grid_apply_diffusion.d.ts.map +1 -1
  397. package/src/engine/physics/fluid/solver/v3_grid_apply_diffusion.js +17 -12
  398. package/src/engine/physics/fluid/solver/v3_grid_apply_vorticity_confinement.d.ts +42 -0
  399. package/src/engine/physics/fluid/solver/v3_grid_apply_vorticity_confinement.d.ts.map +1 -0
  400. package/src/engine/physics/fluid/solver/v3_grid_apply_vorticity_confinement.js +131 -0
  401. package/src/engine/physics/fluid/solver/v3_grid_compute_solid_neighbour_mask.d.ts +32 -22
  402. package/src/engine/physics/fluid/solver/v3_grid_compute_solid_neighbour_mask.d.ts.map +1 -1
  403. package/src/engine/physics/fluid/solver/v3_grid_compute_solid_neighbour_mask.js +43 -26
  404. package/src/engine/physics/fluid/solver/v3_grid_patch_edges_constant.d.ts +31 -0
  405. package/src/engine/physics/fluid/solver/v3_grid_patch_edges_constant.d.ts.map +1 -0
  406. package/src/engine/physics/fluid/solver/v3_grid_patch_edges_constant.js +77 -0
  407. package/src/engine/physics/fluid/solver/v3_grid_sample_scalar_masked.d.ts +30 -0
  408. package/src/engine/physics/fluid/solver/v3_grid_sample_scalar_masked.d.ts.map +1 -0
  409. package/src/engine/physics/fluid/solver/v3_grid_sample_scalar_masked.js +92 -0
  410. package/src/engine/physics/fluid/solver/v3_grid_solve_pressure.d.ts +26 -19
  411. package/src/engine/physics/fluid/solver/v3_grid_solve_pressure.d.ts.map +1 -1
  412. package/src/engine/physics/fluid/solver/v3_grid_solve_pressure.js +46 -42
  413. package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_pcg.d.ts +38 -10
  414. package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_pcg.d.ts.map +1 -1
  415. package/src/engine/physics/fluid/solver/v3_grid_solve_pressure_pcg.js +158 -75
  416. package/src/engine/physics/fluid/solver/v3_grid_subtract_pressure_gradient.d.ts +22 -17
  417. package/src/engine/physics/fluid/solver/v3_grid_subtract_pressure_gradient.d.ts.map +1 -1
  418. package/src/engine/physics/fluid/solver/v3_grid_subtract_pressure_gradient.js +108 -96
  419. package/src/engine/physics/fluid/solver/v3_mac_advect_maccormack_velocity.d.ts +42 -0
  420. package/src/engine/physics/fluid/solver/v3_mac_advect_maccormack_velocity.d.ts.map +1 -0
  421. package/src/engine/physics/fluid/solver/v3_mac_advect_maccormack_velocity.js +319 -0
  422. package/src/engine/physics/fluid/solver/v3_mac_advect_scalar.d.ts +53 -0
  423. package/src/engine/physics/fluid/solver/v3_mac_advect_scalar.d.ts.map +1 -0
  424. package/src/engine/physics/fluid/solver/v3_mac_advect_scalar.js +236 -0
  425. package/src/engine/physics/fluid/solver/v3_mac_advect_sl_velocity.d.ts +46 -0
  426. package/src/engine/physics/fluid/solver/v3_mac_advect_sl_velocity.d.ts.map +1 -0
  427. package/src/engine/physics/fluid/solver/v3_mac_advect_sl_velocity.js +217 -0
  428. package/src/engine/physics/fluid/solver/v3_mac_apply_vorticity_confinement.d.ts +40 -0
  429. package/src/engine/physics/fluid/solver/v3_mac_apply_vorticity_confinement.d.ts.map +1 -0
  430. package/src/engine/physics/fluid/solver/v3_mac_apply_vorticity_confinement.js +165 -0
  431. package/src/engine/physics/fluid/solver/v3_mac_clip_trace.d.ts +44 -0
  432. package/src/engine/physics/fluid/solver/v3_mac_clip_trace.d.ts.map +1 -0
  433. package/src/engine/physics/fluid/solver/v3_mac_clip_trace.js +95 -0
  434. package/src/engine/physics/fluid/solver/v3_mac_compute_divergence.d.ts +38 -0
  435. package/src/engine/physics/fluid/solver/v3_mac_compute_divergence.d.ts.map +1 -0
  436. package/src/engine/physics/fluid/solver/v3_mac_compute_divergence.js +77 -0
  437. package/src/engine/physics/fluid/solver/v3_mac_compute_face_solid.d.ts +52 -0
  438. package/src/engine/physics/fluid/solver/v3_mac_compute_face_solid.d.ts.map +1 -0
  439. package/src/engine/physics/fluid/solver/v3_mac_compute_face_solid.js +131 -0
  440. package/src/engine/physics/fluid/solver/v3_mac_subtract_pressure_gradient.d.ts +38 -0
  441. package/src/engine/physics/fluid/solver/v3_mac_subtract_pressure_gradient.d.ts.map +1 -0
  442. package/src/engine/physics/fluid/solver/v3_mac_subtract_pressure_gradient.js +104 -0
  443. package/src/engine/physics/inertia/world_inverse_inertia.d.ts +30 -1
  444. package/src/engine/physics/inertia/world_inverse_inertia.d.ts.map +1 -1
  445. package/src/engine/physics/inertia/world_inverse_inertia.js +160 -116
  446. package/src/engine/physics/integration/integrate_position.js +97 -97
  447. package/src/engine/physics/island/IslandBuilder.d.ts +49 -8
  448. package/src/engine/physics/island/IslandBuilder.d.ts.map +1 -1
  449. package/src/engine/physics/island/IslandBuilder.js +93 -14
  450. package/src/engine/physics/narrowphase/box_box_manifold.d.ts.map +1 -1
  451. package/src/engine/physics/narrowphase/box_box_manifold.js +683 -673
  452. package/src/engine/physics/narrowphase/box_triangle_contact.d.ts.map +1 -1
  453. package/src/engine/physics/narrowphase/box_triangle_contact.js +899 -749
  454. package/src/engine/physics/narrowphase/capsule_contacts.d.ts +27 -0
  455. package/src/engine/physics/narrowphase/capsule_contacts.d.ts.map +1 -1
  456. package/src/engine/physics/narrowphase/capsule_contacts.js +624 -459
  457. package/src/engine/physics/narrowphase/capsule_triangle_contact.d.ts.map +1 -1
  458. package/src/engine/physics/narrowphase/capsule_triangle_contact.js +58 -38
  459. package/src/engine/physics/narrowphase/compute_penetration.d.ts.map +1 -1
  460. package/src/engine/physics/narrowphase/compute_penetration.js +369 -325
  461. package/src/engine/physics/narrowphase/convex_convex_manifold.d.ts +3 -1
  462. package/src/engine/physics/narrowphase/convex_convex_manifold.d.ts.map +1 -1
  463. package/src/engine/physics/narrowphase/convex_convex_manifold.js +568 -422
  464. package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.d.ts +6 -3
  465. package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.d.ts.map +1 -1
  466. package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.js +66 -10
  467. package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.d.ts +4 -1
  468. package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.d.ts.map +1 -1
  469. package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.js +97 -94
  470. package/src/engine/physics/narrowphase/mesh_mesh_tet_manifold.js +117 -117
  471. package/src/engine/physics/narrowphase/narrowphase_step.d.ts.map +1 -1
  472. package/src/engine/physics/narrowphase/narrowphase_step.js +1738 -1739
  473. package/src/engine/physics/narrowphase/reduce_manifold_contacts.d.ts +14 -7
  474. package/src/engine/physics/narrowphase/reduce_manifold_contacts.d.ts.map +1 -1
  475. package/src/engine/physics/narrowphase/reduce_manifold_contacts.js +74 -69
  476. package/src/engine/physics/persistence/solver_caches.d.ts +20 -0
  477. package/src/engine/physics/persistence/solver_caches.d.ts.map +1 -0
  478. package/src/engine/physics/persistence/solver_caches.js +309 -0
  479. package/src/engine/physics/queries/overlap_shape.d.ts.map +1 -1
  480. package/src/engine/physics/queries/overlap_shape.js +187 -184
  481. package/src/engine/physics/queries/raycast.d.ts +3 -2
  482. package/src/engine/physics/queries/raycast.d.ts.map +1 -1
  483. package/src/engine/physics/queries/raycast.js +37 -11
  484. package/src/engine/physics/queries/shape_cast.d.ts +18 -5
  485. package/src/engine/physics/queries/shape_cast.d.ts.map +1 -1
  486. package/src/engine/physics/queries/shape_cast.js +417 -393
  487. package/src/engine/physics/solver/solve_contacts.d.ts +22 -6
  488. package/src/engine/physics/solver/solve_contacts.d.ts.map +1 -1
  489. package/src/engine/physics/solver/solve_contacts.js +1482 -1338
  490. package/src/engine/physics/vehicle/RaycastVehicle.d.ts.map +1 -1
  491. package/src/engine/physics/vehicle/RaycastVehicle.js +344 -339
  492. package/src/engine/ui/DraggableAspect.d.ts +12 -3
  493. package/src/engine/ui/DraggableAspect.d.ts.map +1 -1
  494. package/src/engine/ui/DraggableAspect.js +115 -83
  495. package/src/generation/COORDINATES.md +54 -0
  496. package/src/generation/GridTaskGroup.js +2 -2
  497. package/src/generation/REVIEW_01_ACTION_PLAN.md +628 -0
  498. package/src/generation/automata/CaveGeneratorCellularAutomata.d.ts +9 -1
  499. package/src/generation/automata/CaveGeneratorCellularAutomata.d.ts.map +1 -1
  500. package/src/generation/automata/CaveGeneratorCellularAutomata.js +79 -59
  501. package/src/generation/automata/CellularAutomata.d.ts +6 -3
  502. package/src/generation/automata/CellularAutomata.d.ts.map +1 -1
  503. package/src/generation/automata/CellularAutomata.js +22 -19
  504. package/src/generation/filtering/CellFilter.d.ts +17 -0
  505. package/src/generation/filtering/CellFilter.d.ts.map +1 -1
  506. package/src/generation/filtering/CellFilter.js +117 -77
  507. package/src/generation/filtering/CellFilterCellMatcher.d.ts.map +1 -1
  508. package/src/generation/filtering/CellFilterCellMatcher.js +2 -0
  509. package/src/generation/filtering/boolean/CellFilterLiteralBoolean.d.ts +5 -0
  510. package/src/generation/filtering/boolean/CellFilterLiteralBoolean.d.ts.map +1 -1
  511. package/src/generation/filtering/boolean/CellFilterLiteralBoolean.js +15 -0
  512. package/src/generation/filtering/core/CellFilterBinaryOperation.d.ts +0 -1
  513. package/src/generation/filtering/core/CellFilterBinaryOperation.d.ts.map +1 -1
  514. package/src/generation/filtering/core/CellFilterBinaryOperation.js +37 -50
  515. package/src/generation/filtering/core/CellFilterOperationTertiary.d.ts +0 -1
  516. package/src/generation/filtering/core/CellFilterOperationTertiary.d.ts.map +1 -1
  517. package/src/generation/filtering/core/CellFilterOperationTertiary.js +43 -59
  518. package/src/generation/filtering/core/CellFilterUnaryOperation.d.ts +0 -1
  519. package/src/generation/filtering/core/CellFilterUnaryOperation.d.ts.map +1 -1
  520. package/src/generation/filtering/core/CellFilterUnaryOperation.js +29 -33
  521. package/src/generation/filtering/numeric/CellFilterCache.d.ts +1 -0
  522. package/src/generation/filtering/numeric/CellFilterCache.d.ts.map +1 -1
  523. package/src/generation/filtering/numeric/complex/CellFilterAngleToNormal.d.ts +3 -2
  524. package/src/generation/filtering/numeric/complex/CellFilterAngleToNormal.d.ts.map +1 -1
  525. package/src/generation/filtering/numeric/complex/CellFilterAngleToNormal.js +9 -35
  526. package/src/generation/filtering/numeric/complex/CellFilterCurvature.d.ts +0 -1
  527. package/src/generation/filtering/numeric/complex/CellFilterCurvature.d.ts.map +1 -1
  528. package/src/generation/filtering/numeric/complex/CellFilterCurvature.js +19 -43
  529. package/src/generation/filtering/numeric/complex/CellFilterFXAA.d.ts +0 -1
  530. package/src/generation/filtering/numeric/complex/CellFilterFXAA.d.ts.map +1 -1
  531. package/src/generation/filtering/numeric/complex/CellFilterFXAA.js +2 -6
  532. package/src/generation/filtering/numeric/complex/CellFilterGaussianBlur.d.ts.map +1 -1
  533. package/src/generation/filtering/numeric/complex/CellFilterGaussianBlur.js +9 -12
  534. package/src/generation/filtering/numeric/complex/CellFilterSimplexNoise.d.ts.map +1 -1
  535. package/src/generation/filtering/numeric/complex/CellFilterSimplexNoise.js +2 -1
  536. package/src/generation/filtering/numeric/complex/CellFilterSobel.d.ts +0 -1
  537. package/src/generation/filtering/numeric/complex/CellFilterSobel.d.ts.map +1 -1
  538. package/src/generation/filtering/numeric/complex/CellFilterSobel.js +2 -6
  539. package/src/generation/filtering/numeric/math/CellFilterInverseLerp.d.ts +5 -4
  540. package/src/generation/filtering/numeric/math/CellFilterInverseLerp.d.ts.map +1 -1
  541. package/src/generation/filtering/numeric/math/CellFilterInverseLerp.js +5 -4
  542. package/src/generation/filtering/numeric/process/computeFilterSurfaceNormal.d.ts +17 -0
  543. package/src/generation/filtering/numeric/process/computeFilterSurfaceNormal.d.ts.map +1 -0
  544. package/src/generation/filtering/numeric/process/computeFilterSurfaceNormal.js +42 -0
  545. package/src/generation/filtering/numeric/sampling/AbstractCellFilterSampleGridLayer.d.ts.map +1 -1
  546. package/src/generation/filtering/numeric/sampling/AbstractCellFilterSampleGridLayer.js +7 -1
  547. package/src/generation/filtering/numeric/util/populateSampler2DFromCellFilter.d.ts.map +1 -1
  548. package/src/generation/filtering/numeric/util/populateSampler2DFromCellFilter.js +7 -10
  549. package/src/generation/filtering/numeric/util/sampler_from_filter.d.ts.map +1 -1
  550. package/src/generation/filtering/numeric/util/sampler_from_filter.js +2 -1
  551. package/src/generation/grid/GridData.d.ts.map +1 -1
  552. package/src/generation/grid/GridData.js +14 -1
  553. package/src/generation/grid/actions/ContinuousGridCellAction.d.ts +10 -3
  554. package/src/generation/grid/actions/ContinuousGridCellAction.d.ts.map +1 -1
  555. package/src/generation/grid/actions/ContinuousGridCellAction.js +18 -3
  556. package/src/generation/grid/actions/ContinuousGridCellActionSetTerrainHeight.d.ts +11 -1
  557. package/src/generation/grid/actions/ContinuousGridCellActionSetTerrainHeight.d.ts.map +1 -1
  558. package/src/generation/grid/actions/ContinuousGridCellActionSetTerrainHeight.js +13 -3
  559. package/src/generation/grid/actions/ContinuousGridCellActionSetTerrainObstacle.d.ts +1 -1
  560. package/src/generation/grid/actions/ContinuousGridCellActionSetTerrainObstacle.js +2 -2
  561. package/src/generation/grid/actions/ContinuousGridCellActionWriteObstacle.d.ts +1 -1
  562. package/src/generation/grid/actions/ContinuousGridCellActionWriteObstacle.d.ts.map +1 -1
  563. package/src/generation/grid/actions/ContinuousGridCellActionWriteObstacle.js +4 -6
  564. package/src/generation/grid/coords/grid_to_texel.d.ts +9 -0
  565. package/src/generation/grid/coords/grid_to_texel.d.ts.map +1 -0
  566. package/src/generation/grid/coords/grid_to_texel.js +10 -0
  567. package/src/generation/grid/coords/texel_to_grid.d.ts +9 -0
  568. package/src/generation/grid/coords/texel_to_grid.d.ts.map +1 -0
  569. package/src/generation/grid/coords/texel_to_grid.js +10 -0
  570. package/src/generation/grid/generation/GridTaskApplyActionToCells.d.ts +2 -2
  571. package/src/generation/grid/generation/GridTaskApplyActionToCells.d.ts.map +1 -1
  572. package/src/generation/grid/generation/GridTaskApplyActionToCells.js +10 -6
  573. package/src/generation/grid/generation/GridTaskDensityMarkerDistribution.d.ts.map +1 -1
  574. package/src/generation/grid/generation/GridTaskDensityMarkerDistribution.js +20 -21
  575. package/src/generation/grid/generation/GridTaskExecuteRuleTimes.d.ts +7 -0
  576. package/src/generation/grid/generation/GridTaskExecuteRuleTimes.d.ts.map +1 -1
  577. package/src/generation/grid/generation/GridTaskExecuteRuleTimes.js +18 -10
  578. package/src/generation/grid/generation/discrete/GridTaskCellularAutomata.d.ts.map +1 -1
  579. package/src/generation/grid/generation/discrete/GridTaskCellularAutomata.js +16 -7
  580. package/src/generation/grid/generation/discrete/GridTaskConnectRooms.d.ts +5 -3
  581. package/src/generation/grid/generation/discrete/GridTaskConnectRooms.d.ts.map +1 -1
  582. package/src/generation/grid/generation/discrete/GridTaskConnectRooms.js +26 -23
  583. package/src/generation/grid/generation/discrete/layer/GridTaskBuildSourceDistanceMap.d.ts.map +1 -1
  584. package/src/generation/grid/generation/discrete/layer/GridTaskBuildSourceDistanceMap.js +10 -1
  585. package/src/generation/grid/generation/grid/select/CellSupplierBestN.d.ts.map +1 -1
  586. package/src/generation/grid/generation/grid/select/CellSupplierBestN.js +4 -0
  587. package/src/generation/grid/generation/road/GridTaskGenerateRoads.d.ts +15 -8
  588. package/src/generation/grid/generation/road/GridTaskGenerateRoads.d.ts.map +1 -1
  589. package/src/generation/grid/generation/road/GridTaskGenerateRoads.js +89 -92
  590. package/src/generation/markers/GridActionRuleSet.d.ts.map +1 -1
  591. package/src/generation/markers/GridActionRuleSet.js +10 -2
  592. package/src/generation/markers/GridCellActionPlaceMarker.d.ts +11 -0
  593. package/src/generation/markers/GridCellActionPlaceMarker.d.ts.map +1 -1
  594. package/src/generation/markers/GridCellActionPlaceMarker.js +20 -3
  595. package/src/generation/markers/GridCellActionPlaceMarkerGroup.d.ts +3 -1
  596. package/src/generation/markers/GridCellActionPlaceMarkerGroup.d.ts.map +1 -1
  597. package/src/generation/markers/GridCellActionPlaceMarkerGroup.js +9 -2
  598. package/src/generation/markers/MarkerNode.d.ts +8 -3
  599. package/src/generation/markers/MarkerNode.d.ts.map +1 -1
  600. package/src/generation/markers/MarkerNode.js +12 -5
  601. package/src/generation/markers/actions/MarkerNodeActionEntityPlacement.js +1 -1
  602. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessor.d.ts +1 -1
  603. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessor.d.ts.map +1 -1
  604. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessor.js +1 -1
  605. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorClingToTerrain.d.ts +1 -1
  606. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorClingToTerrain.d.ts.map +1 -1
  607. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorClingToTerrain.js +1 -1
  608. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorRandomRotation.d.ts +1 -1
  609. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorRandomRotation.d.ts.map +1 -1
  610. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorRandomRotation.js +2 -2
  611. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorSequence.d.ts +1 -1
  612. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorSequence.d.ts.map +1 -1
  613. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorSequence.js +2 -2
  614. package/src/generation/markers/actions/probability/MarkerNodeActionSelectWeighted.d.ts.map +1 -1
  615. package/src/generation/markers/actions/probability/MarkerNodeActionSelectWeighted.js +6 -4
  616. package/src/generation/markers/actions/probability/MarkerNodeActionWeightedElement.d.ts.map +1 -1
  617. package/src/generation/markers/actions/probability/MarkerNodeActionWeightedElement.js +1 -3
  618. package/src/generation/markers/actions/terrain/MarkerNodeActionPaintTerrain.d.ts.map +1 -1
  619. package/src/generation/markers/actions/terrain/MarkerNodeActionPaintTerrain.js +12 -11
  620. package/src/generation/markers/matcher/MarkerNodeMatcherAnd.js +2 -2
  621. package/src/generation/markers/transform/MarkerNodeTransformer.d.ts +4 -1
  622. package/src/generation/markers/transform/MarkerNodeTransformer.d.ts.map +1 -1
  623. package/src/generation/markers/transform/MarkerNodeTransformer.js +4 -1
  624. package/src/generation/markers/transform/MarkerNodeTransformerAddPositionYFromFilter.d.ts.map +1 -1
  625. package/src/generation/markers/transform/MarkerNodeTransformerAddPositionYFromFilter.js +1 -3
  626. package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.d.ts +5 -0
  627. package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.d.ts.map +1 -1
  628. package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.js +15 -0
  629. package/src/generation/markers/transform/MarkerNodeTransformerRecordProperty.d.ts.map +1 -1
  630. package/src/generation/markers/transform/MarkerNodeTransformerRecordProperty.js +1 -3
  631. package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilter.d.ts.map +1 -1
  632. package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilter.js +2 -4
  633. package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilterGradient.d.ts.map +1 -1
  634. package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilterGradient.js +1 -3
  635. package/src/generation/placement/GridCellPlacementRule.d.ts.map +1 -1
  636. package/src/generation/placement/GridCellPlacementRule.js +1 -3
  637. package/src/generation/placement/action/GridCellActionWriteFilterToLayer.d.ts.map +1 -1
  638. package/src/generation/placement/action/GridCellActionWriteFilterToLayer.js +8 -10
  639. package/src/generation/placement/action/random/weighted/CellActionSelectWeightedRandom.d.ts.map +1 -1
  640. package/src/generation/placement/action/random/weighted/CellActionSelectWeightedRandom.js +6 -4
  641. package/src/generation/placement/action/random/weighted/WeightedGridCellAction.d.ts.map +1 -1
  642. package/src/generation/placement/action/random/weighted/WeightedGridCellAction.js +1 -3
  643. package/src/generation/rules/CellMatcher.d.ts +3 -1
  644. package/src/generation/rules/CellMatcher.d.ts.map +1 -1
  645. package/src/generation/rules/CellMatcher.js +3 -1
  646. package/src/generation/rules/CellMatcherFromFilter.d.ts.map +1 -1
  647. package/src/generation/rules/CellMatcherFromFilter.js +1 -3
  648. package/src/generation/rules/CellMatcherLayerBitMaskTest.d.ts.map +1 -1
  649. package/src/generation/rules/CellMatcherLayerBitMaskTest.js +6 -20
  650. package/src/generation/test_support/executeTaskTreeSync.d.ts +9 -0
  651. package/src/generation/test_support/executeTaskTreeSync.d.ts.map +1 -0
  652. package/src/generation/test_support/executeTaskTreeSync.js +78 -0
  653. package/src/generation/theme/TerrainLayerRuleAggregator.d.ts +2 -1
  654. package/src/generation/theme/TerrainLayerRuleAggregator.d.ts.map +1 -1
  655. package/src/generation/theme/TerrainLayerRuleAggregator.js +9 -6
  656. package/src/generation/theme/Theme.d.ts +1 -1
  657. package/src/generation/theme/Theme.d.ts.map +1 -1
  658. package/src/generation/theme/Theme.js +2 -2
  659. package/src/generation/theme/ThemeEngine.d.ts +3 -3
  660. package/src/generation/theme/ThemeEngine.d.ts.map +1 -1
  661. package/src/generation/theme/ThemeEngine.js +26 -16
  662. package/src/generation/theme/cell/CellProcessingRule.d.ts +3 -3
  663. package/src/generation/theme/cell/CellProcessingRule.d.ts.map +1 -1
  664. package/src/generation/theme/cell/CellProcessingRule.js +6 -10
  665. package/src/generation/theme/cell/CellProcessingRuleSet.d.ts +1 -1
  666. package/src/generation/theme/cell/CellProcessingRuleSet.d.ts.map +1 -1
  667. package/src/generation/theme/cell/CellProcessingRuleSet.js +2 -2
  668. package/src/view/common/ListView.js +1 -1
  669. package/src/view/elements/BottomLeftResizeHandleView.d.ts.map +1 -1
  670. package/src/view/elements/BottomLeftResizeHandleView.js +13 -5
  671. package/src/core/font/FontAsset.d.ts.map +0 -1
  672. package/src/core/font/FontAssetLoader.d.ts.map +0 -1
  673. package/src/core/geom/3d/shape/util/shape_to_visual_entity.d.ts.map +0 -1
  674. package/src/core/geom/3d/tetrahedra/visualize_tetrahedral_mesh.d.ts.map +0 -1
  675. package/src/core/process/action/AsynchronousDelayAction.d.ts.map +0 -1
  676. package/src/engine/physics/computeInterceptPoint.d.ts.map +0 -1
  677. package/src/engine/physics/fluid/solver/optimal_sor_omega.d.ts.map +0 -1
  678. package/src/engine/physics/gjk/gjk.d.ts.map +0 -1
  679. package/src/engine/physics/gjk/gjk_epa_penetration.d.ts.map +0 -1
  680. package/src/engine/physics/gjk/minkowski_support.d.ts.map +0 -1
  681. package/src/engine/physics/gjk/mpr.d.ts.map +0 -1
  682. package/src/engine/physics/integration/quat_integrate.d.ts.map +0 -1
  683. package/src/engine/physics/island/union_find.d.ts.map +0 -1
  684. package/src/engine/physics/narrowphase/PosedShape.d.ts.map +0 -1
  685. package/src/engine/physics/narrowphase/clip_against_axis_uv.d.ts.map +0 -1
  686. package/src/engine/physics/narrowphase/decomposition/aabb_world_to_local.d.ts.map +0 -1
  687. package/src/generation/grid/generation/discrete/layer/GridTaskDistanceToMarkers.d.ts +0 -21
  688. package/src/generation/grid/generation/discrete/layer/GridTaskDistanceToMarkers.d.ts.map +0 -1
  689. package/src/generation/grid/generation/discrete/layer/GridTaskDistanceToMarkers.js +0 -68
  690. package/src/generation/grid/generation/grid/GridTaskGridAlignedNodeGenerator.d.ts +0 -10
  691. package/src/generation/grid/generation/grid/GridTaskGridAlignedNodeGenerator.d.ts.map +0 -1
  692. package/src/generation/grid/generation/grid/GridTaskGridAlignedNodeGenerator.js +0 -17
  693. /package/src/{engine/physics → core/geom/3d}/gjk/NOTES.md +0 -0
  694. /package/src/{engine/physics → core/geom/3d}/gjk/gjk.d.ts +0 -0
  695. /package/src/{engine/physics → core/math/physics/kinematics}/computeInterceptPoint.d.ts +0 -0
@@ -104,6 +104,11 @@ export class GridActionRuleSet {
104
104
  */
105
105
  const ruleIterator = new RuleIteratorClass();
106
106
 
107
+ if (this.policy === RuleSelectionPolicyType.Random) {
108
+ // tie rule visit order to the generation seed
109
+ ruleIterator.setSeed(seed);
110
+ }
111
+
107
112
  //initialize rules
108
113
  const tInitializeRules = countTask(0, this.elements.length, i => {
109
114
  const rule = this.elements[i];
@@ -159,6 +164,11 @@ export class GridActionRuleSet {
159
164
 
160
165
  const ROTATION_COUNT = element.allowRotation ? 4 : 1;
161
166
 
167
+ // a single roll per placement attempt: whether the rule fires is decided once,
168
+ // the rotation scan only decides the orientation. Rolling per rotation would
169
+ // compound the probability for rotation-symmetric patterns and bias rotation 0
170
+ const roll = random();
171
+
162
172
  for (let j = 0; j < ROTATION_COUNT; j++) {
163
173
 
164
174
  const rotation = j * PI_HALF;
@@ -185,8 +195,6 @@ export class GridActionRuleSet {
185
195
  continue;
186
196
  }
187
197
 
188
- const roll = random();
189
-
190
198
  const probabilityValue = element.probability.execute(grid, p_x, p_y, rotation);
191
199
 
192
200
  if (probabilityValue > roll) {
@@ -55,6 +55,17 @@ export class GridCellActionPlaceMarker extends GridCellAction {
55
55
  * @param {MarkerNodeTransformer} transformer
56
56
  */
57
57
  addTransformer(transformer: MarkerNodeTransformer): void;
58
+ /**
59
+ * Build the node geometry only — position, transform, tags, properties — WITHOUT applying
60
+ * transformers. For collision pre-checks and estimation paths that must avoid transformer
61
+ * side effects (transformers may be stateful, see {@link MarkerNodeTransformer}).
62
+ * @param {GridData} data
63
+ * @param {number} x
64
+ * @param {number} y
65
+ * @param {number} rotation
66
+ * @returns {MarkerNode}
67
+ */
68
+ buildBaseNode(data: GridData, x: number, y: number, rotation: number): MarkerNode;
58
69
  /**
59
70
  *
60
71
  * @param {GridData} data
@@ -1 +1 @@
1
- {"version":3,"file":"GridCellActionPlaceMarker.d.ts","sourceRoot":"","sources":["../../../../src/generation/markers/GridCellActionPlaceMarker.js"],"names":[],"mappings":"AAOA;IAkFI;;;;;;;;;;OAUG;IACH,0FAFY,yBAAyB,CAwCpC;IAjID;;;OAGG;IACH,aAAY;IAEZ;;;OAGG;IACH,WAFU,SAAS,CAES;IAE5B;;;OAGG;IACH,MAFU,QAAQ,CAER;IAEV,eAAgB;IAEhB,aAAS;IAET;;;OAGG;IACH,cAFU,uBAAuB,CAEf;IAElB;;;OAGG;IACH,UAFU,MAAM,CAEH;IAEb;;;OAGG;IACH,QAFU,OAAO,CAEM;IAEvB,uCAWC;IAED;;;;OAIG;IACH,qBAFa,OAAO,CAYnB;IAED;;;OAGG;IACH,yDAIC;IAqDD;;;;;;;OAOG;IACH,6BALW,MAAM,KACN,MAAM,YACN,MAAM,GACJ,UAAU,CAgEtB;IAED,wDAIC;IAGL;;;OAGG;IACH,sCAFU,OAAO,CAE8C;CAN9D;+BArN8B,uCAAuC;0BAD5C,yCAAyC;oBAF/C,4BAA4B;2BAIrB,iBAAiB"}
1
+ {"version":3,"file":"GridCellActionPlaceMarker.d.ts","sourceRoot":"","sources":["../../../../src/generation/markers/GridCellActionPlaceMarker.js"],"names":[],"mappings":"AAOA;IAkFI;;;;;;;;;;OAUG;IACH,0FAFY,yBAAyB,CAwCpC;IAjID;;;OAGG;IACH,aAAY;IAEZ;;;OAGG;IACH,WAFU,SAAS,CAES;IAE5B;;;OAGG;IACH,MAFU,QAAQ,CAER;IAEV,eAAgB;IAEhB,aAAS;IAET;;;OAGG;IACH,cAFU,uBAAuB,CAEf;IAElB;;;OAGG;IACH,UAFU,MAAM,CAEH;IAEb;;;OAGG;IACH,QAFU,OAAO,CAEM;IAEvB,uCAWC;IAED;;;;OAIG;IACH,qBAFa,OAAO,CAYnB;IAED;;;OAGG;IACH,yDAIC;IAqDD;;;;;;;;;OASG;IACH,iCALW,MAAM,KACN,MAAM,YACN,MAAM,GACJ,UAAU,CAuDtB;IAED;;;;;;;OAOG;IACH,6BALW,MAAM,KACN,MAAM,YACN,MAAM,GACJ,UAAU,CAgBtB;IAED,wDAIC;IAGL;;;OAGG;IACH,sCAFU,OAAO,CAE8C;CAN9D;+BAtO8B,uCAAuC;0BAD5C,yCAAyC;oBAF/C,4BAA4B;2BAIrB,iBAAiB"}
@@ -139,16 +139,18 @@ export class GridCellActionPlaceMarker extends GridCellAction {
139
139
  }
140
140
 
141
141
  /**
142
- *
142
+ * Build the node geometry only — position, transform, tags, properties — WITHOUT applying
143
+ * transformers. For collision pre-checks and estimation paths that must avoid transformer
144
+ * side effects (transformers may be stateful, see {@link MarkerNodeTransformer}).
143
145
  * @param {GridData} data
144
146
  * @param {number} x
145
147
  * @param {number} y
146
148
  * @param {number} rotation
147
149
  * @returns {MarkerNode}
148
150
  */
149
- buildNode(data, x, y, rotation) {
151
+ buildBaseNode(data, x, y, rotation) {
150
152
 
151
- let node = new MarkerNode();
153
+ const node = new MarkerNode();
152
154
 
153
155
 
154
156
  const sin = Math.sin(rotation);
@@ -198,6 +200,21 @@ export class GridCellActionPlaceMarker extends GridCellAction {
198
200
 
199
201
  node.priority = this.priority;
200
202
 
203
+ return node;
204
+ }
205
+
206
+ /**
207
+ *
208
+ * @param {GridData} data
209
+ * @param {number} x
210
+ * @param {number} y
211
+ * @param {number} rotation
212
+ * @returns {MarkerNode}
213
+ */
214
+ buildNode(data, x, y, rotation) {
215
+
216
+ let node = this.buildBaseNode(data, x, y, rotation);
217
+
201
218
  //apply transformations
202
219
  const transformers = this.transformers;
203
220
  const transformer_count = transformers.length;
@@ -11,7 +11,9 @@ export class GridCellActionPlaceMarkerGroup extends GridCellAction {
11
11
  */
12
12
  children: GridCellActionPlaceMarker[];
13
13
  /**
14
- *
14
+ * Tests the children's geometric footprints against existing markers. Transformers are NOT
15
+ * applied (they may be stateful, and a test must not have side effects), so position changes
16
+ * made by transformers are not reflected in this check.
15
17
  * @param {GridData} data
16
18
  * @param {number} x
17
19
  * @param {number} y
@@ -1 +1 @@
1
- {"version":3,"file":"GridCellActionPlaceMarkerGroup.d.ts","sourceRoot":"","sources":["../../../../src/generation/markers/GridCellActionPlaceMarkerGroup.js"],"names":[],"mappings":"AAKA;IASI;;;;OAIG;IACH,sBAHW,8BAA8B,GAC5B,8BAA8B,CAU1C;IApBD;;;OAGG;IACH,UAFU,2BAA2B,CAEvB;IAkBd;;;;;;;;OAQG;IACH,sCANW,MAAM,KACN,MAAM,YACN,MAAM,+BAEJ,OAAO,CAoBnB;IAED,wDAcC;CACJ;+BAzE8B,uCAAuC"}
1
+ {"version":3,"file":"GridCellActionPlaceMarkerGroup.d.ts","sourceRoot":"","sources":["../../../../src/generation/markers/GridCellActionPlaceMarkerGroup.js"],"names":[],"mappings":"AAUA;IASI;;;;OAIG;IACH,sBAHW,8BAA8B,GAC5B,8BAA8B,CAU1C;IApBD;;;OAGG;IACH,UAFU,2BAA2B,CAEvB;IAkBd;;;;;;;;;;OAUG;IACH,sCANW,MAAM,KACN,MAAM,YACN,MAAM,+BAEJ,OAAO,CAoBnB;IAED,wDAcC;CACJ;+BAhF8B,uCAAuC"}
@@ -1,6 +1,11 @@
1
1
  import { GridCellAction } from "../placement/action/GridCellAction.js";
2
2
  import { assert } from "../../core/assert.js";
3
3
 
4
+ /**
5
+ * Group IDs are opaque: unique within a session and only meaningful for equality
6
+ * comparison. Their absolute values are NOT reproducible across runs.
7
+ * @type {number}
8
+ */
4
9
  let idCounter = 0;
5
10
 
6
11
  export class GridCellActionPlaceMarkerGroup extends GridCellAction {
@@ -28,7 +33,9 @@ export class GridCellActionPlaceMarkerGroup extends GridCellAction {
28
33
  }
29
34
 
30
35
  /**
31
- *
36
+ * Tests the children's geometric footprints against existing markers. Transformers are NOT
37
+ * applied (they may be stateful, and a test must not have side effects), so position changes
38
+ * made by transformers are not reflected in this check.
32
39
  * @param {GridData} data
33
40
  * @param {number} x
34
41
  * @param {number} y
@@ -44,7 +51,7 @@ export class GridCellActionPlaceMarkerGroup extends GridCellAction {
44
51
  for (let i = 0; i < n; i++) {
45
52
  const child = children[i];
46
53
 
47
- const node = child.buildNode(data, x, y, rotation);
54
+ const node = child.buildBaseNode(data, x, y, rotation);
48
55
 
49
56
  const collision = data.containsMarkerInCircle(node.position.x, node.position.y, node.size, matcher);
50
57
 
@@ -15,12 +15,17 @@ export class MarkerNode {
15
15
  */
16
16
  tags: string[];
17
17
  /**
18
- * Grid position
18
+ * Virtual position in the 2D grid domain. This is what spatial queries, the marker
19
+ * quadtree and game logic reason about.
19
20
  * @type {Vector2}
20
21
  */
21
22
  position: Vector2;
22
23
  /**
23
- * World transform, this can differ from the grid position
24
+ * Concrete world-space presentation. The planar (x,z) part is derived from
25
+ * {@link MarkerNode#position} via {@link GridData#transform} when the node is built and
26
+ * must be kept in correspondence by transformers that RELOCATE the marker
27
+ * (e.g. {@link MarkerNodeTransformerOffsetPosition}). Presentation-only adjustments
28
+ * (height, rotation, scale) live here exclusively and leave the virtual position alone.
24
29
  * @type {Transform}
25
30
  */
26
31
  transform: Transform;
@@ -58,7 +63,7 @@ export class MarkerNode {
58
63
  */
59
64
  copy(other: MarkerNode): void;
60
65
  /**
61
- *
66
+ * Compares grid-space footprints, same plane as {@link GridData#containsMarkerInCircle}
62
67
  * @param {MarkerNode} other
63
68
  * @returns {boolean}
64
69
  */
@@ -1 +1 @@
1
- {"version":3,"file":"MarkerNode.d.ts","sourceRoot":"","sources":["../../../../src/generation/markers/MarkerNode.js"],"names":[],"mappings":"AAKA;IAEI;;;OAGG;IACH,UAFU,MAAM,CAEH;IAEb;;;OAGG;IACH,aAAY;IAEZ;;;OAGG;IACH,MAFU,QAAQ,CAER;IAEV;;;OAGG;IACH,UAFU,OAAO,CAEQ;IAEzB;;;OAGG;IACH,WAFU,SAAS,CAES;IAE5B;;;;OAIG;IACH,MAFU,MAAM,CAEP;IAET;;;OAGG;IACH,gBAAgB;IAGhB;;;;OAIG;IACH,YAHW,MAAM,GACJ,OAAO,CAInB;IAED;;;;OAIG;IACH,iBAHW,MAAM,EAAE,GACN,OAAO,CAanB;IAED;;;OAGG;IACH,SAFa,UAAU,CAQtB;IAED;;;OAGG;IACH,YAFW,UAAU,QAcpB;IAED;;;;OAIG;IACH,gBAHW,UAAU,GACR,OAAO,CAOnB;IAIL;;;OAGG;IACH,uBAFU,OAAO,CAEgB;CANhC;oBAtHmB,4BAA4B;0BACtB,yCAAyC"}
1
+ {"version":3,"file":"MarkerNode.d.ts","sourceRoot":"","sources":["../../../../src/generation/markers/MarkerNode.js"],"names":[],"mappings":"AAKA;IAEI;;;OAGG;IACH,UAFU,MAAM,CAEH;IAEb;;;OAGG;IACH,aAAY;IAEZ;;;OAGG;IACH,MAFU,QAAQ,CAER;IAEV;;;;OAIG;IACH,UAFU,OAAO,CAEQ;IAEzB;;;;;;;OAOG;IACH,WAFU,SAAS,CAES;IAE5B;;;;OAIG;IACH,MAFU,MAAM,CAEP;IAET;;;OAGG;IACH,gBAAgB;IAGhB;;;;OAIG;IACH,YAHW,MAAM,GACJ,OAAO,CAInB;IAED;;;;OAIG;IACH,iBAHW,MAAM,EAAE,GACN,OAAO,CAanB;IAED;;;OAGG;IACH,SAFa,UAAU,CAQtB;IAED;;;OAGG;IACH,YAFW,UAAU,QAgBpB;IAED;;;;OAIG;IACH,gBAHW,UAAU,GACR,OAAO,CAOnB;IAIL;;;OAGG;IACH,uBAFU,OAAO,CAEgB;CANhC;oBA7HmB,4BAA4B;0BACtB,yCAAyC"}
@@ -24,13 +24,18 @@ export class MarkerNode {
24
24
  tags = [];
25
25
 
26
26
  /**
27
- * Grid position
27
+ * Virtual position in the 2D grid domain. This is what spatial queries, the marker
28
+ * quadtree and game logic reason about.
28
29
  * @type {Vector2}
29
30
  */
30
31
  position = new Vector2();
31
32
 
32
33
  /**
33
- * World transform, this can differ from the grid position
34
+ * Concrete world-space presentation. The planar (x,z) part is derived from
35
+ * {@link MarkerNode#position} via {@link GridData#transform} when the node is built and
36
+ * must be kept in correspondence by transformers that RELOCATE the marker
37
+ * (e.g. {@link MarkerNodeTransformerOffsetPosition}). Presentation-only adjustments
38
+ * (height, rotation, scale) live here exclusively and leave the virtual position alone.
34
39
  * @type {Transform}
35
40
  */
36
41
  transform = new Transform();
@@ -93,6 +98,8 @@ export class MarkerNode {
93
98
  * @param {MarkerNode} other
94
99
  */
95
100
  copy(other) {
101
+ this.priority = other.priority;
102
+
96
103
  this.type = other.type;
97
104
 
98
105
  array_copy_entire(other.tags, this.tags);
@@ -107,13 +114,13 @@ export class MarkerNode {
107
114
  }
108
115
 
109
116
  /**
110
- *
117
+ * Compares grid-space footprints, same plane as {@link GridData#containsMarkerInCircle}
111
118
  * @param {MarkerNode} other
112
119
  * @returns {boolean}
113
120
  */
114
121
  overlaps(other) {
115
- const p0 = this.transform.position;
116
- const p1 = other.transform.position;
122
+ const p0 = this.position;
123
+ const p1 = other.position;
117
124
 
118
125
  return circle_intersects_circle(p0.x, p0.y, this.size, p1.x, p1.y, other.size);
119
126
  }
@@ -54,7 +54,7 @@ export class MarkerNodeActionEntityPlacement extends MarkerNodeAction {
54
54
 
55
55
  initialize(grid, ecd, seed) {
56
56
  if (this.processor !== null) {
57
- this.processor.initialize(grid, ecd);
57
+ this.processor.initialize(grid, ecd, seed);
58
58
  }
59
59
  }
60
60
 
@@ -4,7 +4,7 @@ export class MarkerNodeEntityProcessor {
4
4
  * @param {GridData} data
5
5
  * @param {EntityComponentDataset} ecd
6
6
  */
7
- initialize(data: GridData, ecd: EntityComponentDataset): void;
7
+ initialize(data: GridData, ecd: EntityComponentDataset, seed: any): void;
8
8
  /**
9
9
  *
10
10
  * @param {Entity} entity
@@ -1 +1 @@
1
- {"version":3,"file":"MarkerNodeEntityProcessor.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/markers/actions/placement/MarkerNodeEntityProcessor.js"],"names":[],"mappings":"AAAA;IACI;;;;OAIG;IACH,8DAEC;IAED;;;;;;OAMG;IACH,6FAEC;IAGL;;;OAGG;IACH,sCAFU,OAAO,CAE8C;CAN9D"}
1
+ {"version":3,"file":"MarkerNodeEntityProcessor.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/markers/actions/placement/MarkerNodeEntityProcessor.js"],"names":[],"mappings":"AAAA;IACI;;;;OAIG;IACH,yEAEC;IAED;;;;;;OAMG;IACH,6FAEC;IAGL;;;OAGG;IACH,sCAFU,OAAO,CAE8C;CAN9D"}
@@ -4,7 +4,7 @@ export class MarkerNodeEntityProcessor {
4
4
  * @param {GridData} data
5
5
  * @param {EntityComponentDataset} ecd
6
6
  */
7
- initialize(data, ecd) {
7
+ initialize(data, ecd, seed) {
8
8
 
9
9
  }
10
10
 
@@ -15,7 +15,7 @@ export class MarkerNodeEntityProcessorClingToTerrain extends MarkerNodeEntityPro
15
15
  * @type {boolean}
16
16
  */
17
17
  normalAlign: boolean;
18
- initialize(data: any, ecd: any): void;
18
+ initialize(data: any, ecd: any, seed: any): void;
19
19
  execute(entity: any, node: any, data: any, ecd: any): void;
20
20
  }
21
21
  import { MarkerNodeEntityProcessor } from "./MarkerNodeEntityProcessor.js";
@@ -1 +1 @@
1
- {"version":3,"file":"MarkerNodeEntityProcessorClingToTerrain.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/markers/actions/placement/MarkerNodeEntityProcessorClingToTerrain.js"],"names":[],"mappings":"AAOA;IAcI;;;;OAIG;IACH,8BAHW,OAAO,GACN,uCAAuC,CAQlD;IAvBD;;;OAGG;IACH,gBAAe;IAEf;;;OAGG;IACH,aAFU,OAAO,CAEG;IAepB,sCAEC;IAED,2DAcC;CACJ;0CArDyC,gCAAgC"}
1
+ {"version":3,"file":"MarkerNodeEntityProcessorClingToTerrain.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/markers/actions/placement/MarkerNodeEntityProcessorClingToTerrain.js"],"names":[],"mappings":"AAOA;IAcI;;;;OAIG;IACH,8BAHW,OAAO,GACN,uCAAuC,CAQlD;IAvBD;;;OAGG;IACH,gBAAe;IAEf;;;OAGG;IACH,aAFU,OAAO,CAEG;IAepB,iDAEC;IAED,2DAcC;CACJ;0CArDyC,gCAAgC"}
@@ -32,7 +32,7 @@ export class MarkerNodeEntityProcessorClingToTerrain extends MarkerNodeEntityPro
32
32
  return r;
33
33
  }
34
34
 
35
- initialize(data, ecd) {
35
+ initialize(data, ecd, seed) {
36
36
  this.terrain = obtainTerrain(ecd);
37
37
  }
38
38
 
@@ -2,7 +2,7 @@ export class MarkerNodeEntityProcessorRandomRotation extends MarkerNodeEntityPro
2
2
  static from(): MarkerNodeEntityProcessorRandomRotation;
3
3
  __seed: number;
4
4
  __random: () => number;
5
- initialize(data: any, ecd: any): void;
5
+ initialize(data: any, ecd: any, seed: any): void;
6
6
  execute(entity: any, node: any, data: any, ecd: any): void;
7
7
  }
8
8
  import { MarkerNodeEntityProcessor } from "./MarkerNodeEntityProcessor.js";
@@ -1 +1 @@
1
- {"version":3,"file":"MarkerNodeEntityProcessorRandomRotation.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/markers/actions/placement/MarkerNodeEntityProcessorRandomRotation.js"],"names":[],"mappings":"AAIA;IAKI,uDAEC;IALD,eAAW;IACX,uBAA2B;IAM3B,sCAEC;IAED,2DAQC;CACJ;0CA1ByC,gCAAgC"}
1
+ {"version":3,"file":"MarkerNodeEntityProcessorRandomRotation.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/markers/actions/placement/MarkerNodeEntityProcessorRandomRotation.js"],"names":[],"mappings":"AAIA;IAKI,uDAEC;IALD,eAAW;IACX,uBAA2B;IAM3B,iDAEC;IAED,2DAQC;CACJ;0CA1ByC,gCAAgC"}
@@ -11,8 +11,8 @@ export class MarkerNodeEntityProcessorRandomRotation extends MarkerNodeEntityPro
11
11
  return new MarkerNodeEntityProcessorRandomRotation();
12
12
  }
13
13
 
14
- initialize(data, ecd) {
15
- this.__random.setCurrentSeed(this.__seed);
14
+ initialize(data, ecd, seed) {
15
+ this.__random.setCurrentSeed(seed + this.__seed);
16
16
  }
17
17
 
18
18
  execute(entity, node, data, ecd) {
@@ -15,7 +15,7 @@ export class MarkerNodeEntityProcessorSequence extends MarkerNodeEntityProcessor
15
15
  * @param {MarkerNodeEntityProcessor} element
16
16
  */
17
17
  add(element: MarkerNodeEntityProcessor): void;
18
- initialize(data: any, ecd: any): void;
18
+ initialize(data: any, ecd: any, seed: any): void;
19
19
  execute(entity: any, node: any, data: any, ecd: any): void;
20
20
  }
21
21
  import { MarkerNodeEntityProcessor } from "./MarkerNodeEntityProcessor.js";
@@ -1 +1 @@
1
- {"version":3,"file":"MarkerNodeEntityProcessorSequence.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/markers/actions/placement/MarkerNodeEntityProcessorSequence.js"],"names":[],"mappings":"AAGA;IAQI;;;;OAIG;IACH,sBAHW,yBAAyB,EAAE,GAC1B,iCAAiC,CAQ5C;IAjBD;;;OAGG;IACH,UAFU,yBAAyB,EAAE,CAEvB;IAed;;;OAGG;IACH,aAFW,yBAAyB,QASnC;IAED,sCAUC;IAED,2DAUC;CACJ;0CA5DyC,gCAAgC"}
1
+ {"version":3,"file":"MarkerNodeEntityProcessorSequence.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/markers/actions/placement/MarkerNodeEntityProcessorSequence.js"],"names":[],"mappings":"AAGA;IAQI;;;;OAIG;IACH,sBAHW,yBAAyB,EAAE,GAC1B,iCAAiC,CAQ5C;IAjBD;;;OAGG;IACH,UAFU,yBAAyB,EAAE,CAEvB;IAed;;;OAGG;IACH,aAFW,yBAAyB,QASnC;IAED,iDAUC;IAED,2DAUC;CACJ;0CA5DyC,gCAAgC"}
@@ -35,14 +35,14 @@ export class MarkerNodeEntityProcessorSequence extends MarkerNodeEntityProcessor
35
35
  this.elements.push(element);
36
36
  }
37
37
 
38
- initialize(data, ecd) {
38
+ initialize(data, ecd, seed) {
39
39
  const elements = this.elements;
40
40
  const n = elements.length;
41
41
 
42
42
  for (let i = 0; i < n; i++) {
43
43
  const element = elements[i];
44
44
 
45
- element.initialize(data, ecd);
45
+ element.initialize(data, ecd, seed);
46
46
  }
47
47
 
48
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MarkerNodeActionSelectWeighted.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/markers/actions/probability/MarkerNodeActionSelectWeighted.js"],"names":[],"mappings":"AAYA;IAUI;;;;OAIG;IACH,sBAFW,iCAAiC,GAD/B,8BAA8B,CAW1C;IArBD;;;OAGG;IACH,UAFU,iCAAiC,CAE7B;IAEd,uBAA2B;IAiB3B,iDAiBC;IAED,8CA6CC;CACJ;iCArGgC,wBAAwB"}
1
+ {"version":3,"file":"MarkerNodeActionSelectWeighted.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/markers/actions/probability/MarkerNodeActionSelectWeighted.js"],"names":[],"mappings":"AAWA;IAUI;;;;OAIG;IACH,sBAFW,iCAAiC,GAD/B,8BAA8B,CAW1C;IArBD;;;OAGG;IACH,UAFU,iCAAiC,CAE7B;IAEd,uBAA2B;IAiB3B,iDAiBC;IAED,8CAgDC;CACJ;iCAtGgC,wBAAwB"}
@@ -1,8 +1,7 @@
1
1
  import { seededRandom } from "../../../../core/math/random/seededRandom.js";
2
+ import { random_pick_weighted_index } from "../../../../core/math/random/random_pick_weighted_index.js";
2
3
  import { MarkerNodeAction } from "../MarkerNodeAction.js";
3
4
  import { assert } from "../../../../core/assert.js";
4
- import { binarySearchHighIndex } from "../../../../core/collection/array/binarySearchHighIndex.js";
5
- import { number_compare_ascending } from "../../../../core/primitives/numbers/number_compare_ascending.js";
6
5
 
7
6
  /**
8
7
  *
@@ -92,9 +91,12 @@ export class MarkerNodeActionSelectWeighted extends MarkerNodeAction {
92
91
 
93
92
  }
94
93
 
95
- const targetWeight = this.__random() * totalWeight;
94
+ const index = random_pick_weighted_index(this.__random, evaluatedWeights, n);
96
95
 
97
- const index = binarySearchHighIndex(evaluatedWeights, targetWeight, number_compare_ascending, 0, n - 1);
96
+ if (index === -1) {
97
+ // every element has zero weight at this position, nothing to select
98
+ return;
99
+ }
98
100
 
99
101
  const targetElement = elements[index];
100
102
 
@@ -1 +1 @@
1
- {"version":3,"file":"MarkerNodeActionWeightedElement.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/markers/actions/probability/MarkerNodeActionWeightedElement.js"],"names":[],"mappings":"AAGA;IA8BI;;;;;OAKG;IACH,4DAFa,+BAA+B,CAY3C;IA5CD;;;OAGG;IACH,yBAAc;IAEd;;;OAGG;IACH,mBAAc;IAGd;;;;;OAKG;IACH,8DAFW,MAAM,QAShB;CAmBJ"}
1
+ {"version":3,"file":"MarkerNodeActionWeightedElement.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/markers/actions/probability/MarkerNodeActionWeightedElement.js"],"names":[],"mappings":"AAGA;IA4BI;;;;;OAKG;IACH,4DAFa,+BAA+B,CAY3C;IA1CD;;;OAGG;IACH,yBAAc;IAEd;;;OAGG;IACH,mBAAc;IAGd;;;;;OAKG;IACH,8DAFW,MAAM,QAOhB;CAmBJ"}
@@ -26,9 +26,7 @@ export class MarkerNodeActionWeightedElement {
26
26
 
27
27
  this.action.initialize(grid, ecd, seed);
28
28
 
29
- if (!this.weight.initialized) {
30
- this.weight.initialize(grid, seed);
31
- }
29
+ this.weight.ensureInitialized(grid, seed);
32
30
  }
33
31
 
34
32
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"MarkerNodeActionPaintTerrain.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/markers/actions/terrain/MarkerNodeActionPaintTerrain.js"],"names":[],"mappings":"AAcA;IA4DI;;;;;;;;OAQG;IACH,kEAPW,cAAc,GAKZ,4BAA4B,CAwBxC;IA1FD;;;OAGG;IACH,+BAAoC;IAEpC;;;OAGG;IACH,+BAAa;IAEb;;;;OAIG;IACH,qBAAkB;IAElB;;;;OAIG;IACH,mBAAkB;IAElB;;;;OAIG;IACH,iBAAgB;IAEhB;;;;OAIG;IACH,UAFU,cAAc,CAEgB;IAExC;;;OAGG;IACH,oCAFmB,MAAM,KAAG,MAAM,CAE0B;IAE5D;;;OAGG;IACH,oBAFU,cAAc,CAE0B;IAElD;;;;OAIG;IACH,gBAAQ;IAmCR;;;;;;;;;;OAUG;IACH,wBAmBC;IAED,yBAwBC;IAED,8CA8EC;IAED,iDAkBC;CACJ;iCA5PgC,wBAAwB;uCADlB,sDAAsD;2BAJlE,+CAA+C"}
1
+ {"version":3,"file":"MarkerNodeActionPaintTerrain.d.ts","sourceRoot":"","sources":["../../../../../../src/generation/markers/actions/terrain/MarkerNodeActionPaintTerrain.js"],"names":[],"mappings":"AAeA;IA4DI;;;;;;;;OAQG;IACH,kEAPW,cAAc,GAKZ,4BAA4B,CAwBxC;IA1FD;;;OAGG;IACH,+BAAoC;IAEpC;;;OAGG;IACH,+BAAa;IAEb;;;;OAIG;IACH,qBAAkB;IAElB;;;;OAIG;IACH,mBAAkB;IAElB;;;;OAIG;IACH,iBAAgB;IAEhB;;;;OAIG;IACH,UAFU,cAAc,CAEgB;IAExC;;;OAGG;IACH,oCAFmB,MAAM,KAAG,MAAM,CAE0B;IAE5D;;;OAGG;IACH,oBAFU,cAAc,CAE0B;IAElD;;;;OAIG;IACH,gBAAQ;IAmCR;;;;;;;;;;OAUG;IACH,wBAmBC;IAED,yBAwBC;IAED,8CA8EC;IAED,iDAkBC;CACJ;iCA5PgC,wBAAwB;uCADlB,sDAAsD;2BAJlE,+CAA+C"}
@@ -4,6 +4,7 @@ import { clamp } from "../../../../core/math/clamp.js";
4
4
  import { clamp01 } from "../../../../core/math/clamp01.js";
5
5
  import { inverseLerp } from "../../../../core/math/inverseLerp.js";
6
6
  import { max2 } from "../../../../core/math/max2.js";
7
+ import { min2 } from "../../../../core/math/min2.js";
7
8
  import { seededRandom } from "../../../../core/math/random/seededRandom.js";
8
9
  import LinearModifier from "../../../../core/model/stat/LinearModifier.js";
9
10
  import TransitionFunctions from "../../../../engine/animation/TransitionFunctions.js";
@@ -183,15 +184,15 @@ export class MarkerNodeActionPaintTerrain extends MarkerNodeAction {
183
184
  const edge_width = node.size * this.weight_edge_easing.a + this.weight_edge_easing.b;
184
185
  const radius_inner = radius_outer - edge_width;
185
186
 
186
- // we shift to the center of the grid cell
187
- const node_p_x = node.position.x + splat_to_grid_x;
188
- const node_p_y = node.position.y + splat_to_grid_y;
187
+ const node_p_x = node.position.x;
188
+ const node_p_y = node.position.y;
189
189
 
190
- // compute affected region in Splat space
191
- const x0 = Math.floor((node_p_x - radius_outer) * splat_scale_x + 0.5);
192
- const x1 = Math.floor((node_p_x + radius_outer) * splat_scale_x + 0.5);
193
- const y0 = Math.ceil((node_p_y - radius_outer) * splat_scale_y + 0.5);
194
- const y1 = Math.ceil((node_p_y + radius_outer) * splat_scale_y + 0.5);
190
+ // affected region in splat space, clamped to the splat map;
191
+ // ratio mapping (see generation/COORDINATES.md): splat texel t is centered at grid t / scale
192
+ const x0 = max2(0, Math.round((node_p_x - radius_outer) * splat_scale_x));
193
+ const x1 = min2(splat_resolution_x - 1, Math.round((node_p_x + radius_outer) * splat_scale_x));
194
+ const y0 = max2(0, Math.round((node_p_y - radius_outer) * splat_scale_y));
195
+ const y1 = min2(splat_resolution_y - 1, Math.round((node_p_y + radius_outer) * splat_scale_y));
195
196
 
196
197
  const layer_count = splat.depth;
197
198
 
@@ -201,9 +202,9 @@ export class MarkerNodeActionPaintTerrain extends MarkerNodeAction {
201
202
  for (let y = y0; y <= y1; y++) {
202
203
  for (let x = x0; x <= x1; x++) {
203
204
 
204
- // convert position into grid coordinates
205
- const grid_x = (x - 0.5) * splat_to_grid_x - splat_to_grid_x;
206
- const grid_y = (y - 0.5) * splat_to_grid_y - splat_to_grid_y;
205
+ // convert texel position into grid coordinates
206
+ const grid_x = x * splat_to_grid_x;
207
+ const grid_y = y * splat_to_grid_y;
207
208
 
208
209
  const weight = this._getPointWeight(grid_x, grid_y, node, grid, radius_outer, radius_inner);
209
210
 
@@ -22,8 +22,8 @@ export class MarkerNodeMatcherAnd extends MarkerNodeMatcherBinary {
22
22
  }
23
23
 
24
24
  match(node) {
25
- if (this.left.match(node)) {
26
- return true;
25
+ if (!this.left.match(node)) {
26
+ return false;
27
27
  }
28
28
 
29
29
  return this.right.match(node);
@@ -6,7 +6,10 @@ export class MarkerNodeTransformer {
6
6
  */
7
7
  initialize(grid: GridData, seed: number): void;
8
8
  /**
9
- *
9
+ * Transformers are only invoked for nodes that are actually produced — estimation and
10
+ * collision-test paths use {@link GridCellActionPlaceMarker#buildBaseNode} and skip
11
+ * transformers entirely, so a transformer MAY keep internal state across calls
12
+ * (e.g. {@link MarkerNodeTransformerRecordUniqueRandomEnum} consumes from a finite pool).
10
13
  * @param {MarkerNode} node
11
14
  * @param {GridData} grid
12
15
  * @returns {MarkerNode}
@@ -1 +1 @@
1
- {"version":3,"file":"MarkerNodeTransformer.d.ts","sourceRoot":"","sources":["../../../../../src/generation/markers/transform/MarkerNodeTransformer.js"],"names":[],"mappings":"AAAA;IACI;;;;OAIG;IACH,iCAFW,MAAM,QAIhB;IAED;;;;;OAKG;IACH,wDAEC;IAGL;;;OAGG;IACH,kCAFU,OAAO,CAEsC;CANtD"}
1
+ {"version":3,"file":"MarkerNodeTransformer.d.ts","sourceRoot":"","sources":["../../../../../src/generation/markers/transform/MarkerNodeTransformer.js"],"names":[],"mappings":"AAAA;IACI;;;;OAIG;IACH,iCAFW,MAAM,QAIhB;IAED;;;;;;;;OAQG;IACH,wDAEC;IAGL;;;OAGG;IACH,kCAFU,OAAO,CAEsC;CANtD"}
@@ -9,7 +9,10 @@ export class MarkerNodeTransformer {
9
9
  }
10
10
 
11
11
  /**
12
- *
12
+ * Transformers are only invoked for nodes that are actually produced — estimation and
13
+ * collision-test paths use {@link GridCellActionPlaceMarker#buildBaseNode} and skip
14
+ * transformers entirely, so a transformer MAY keep internal state across calls
15
+ * (e.g. {@link MarkerNodeTransformerRecordUniqueRandomEnum} consumes from a finite pool).
13
16
  * @param {MarkerNode} node
14
17
  * @param {GridData} grid
15
18
  * @returns {MarkerNode}
@@ -1 +1 @@
1
- {"version":3,"file":"MarkerNodeTransformerAddPositionYFromFilter.d.ts","sourceRoot":"","sources":["../../../../../src/generation/markers/transform/MarkerNodeTransformerAddPositionYFromFilter.js"],"names":[],"mappings":"AAGA;IAQI;;;;OAIG;IACH,iCAFa,2CAA2C,CAUvD;IAnBD;;;OAGG;IACH,mBAAc;IAiBd,uCAMC;IAED,qCAyBC;CACJ;sCA5DqC,4BAA4B"}
1
+ {"version":3,"file":"MarkerNodeTransformerAddPositionYFromFilter.d.ts","sourceRoot":"","sources":["../../../../../src/generation/markers/transform/MarkerNodeTransformerAddPositionYFromFilter.js"],"names":[],"mappings":"AAGA;IAQI;;;;OAIG;IACH,iCAFa,2CAA2C,CAUvD;IAnBD;;;OAGG;IACH,mBAAc;IAiBd,uCAIC;IAED,qCAyBC;CACJ;sCA1DqC,4BAA4B"}
@@ -27,9 +27,7 @@ export class MarkerNodeTransformerAddPositionYFromFilter extends MarkerNodeTrans
27
27
  initialize(grid, seed) {
28
28
  super.initialize(grid, seed);
29
29
 
30
- if (!this.filter.initialized) {
31
- this.filter.initialize(grid, seed);
32
- }
30
+ this.filter.ensureInitialized(grid, seed);
33
31
  }
34
32
 
35
33
  transform(node, grid) {
@@ -1,3 +1,8 @@
1
+ /**
2
+ * Relocates the marker by an offset given in grid units, rotated by the node's yaw.
3
+ * Both domains are updated: the virtual grid position and the planar part of the
4
+ * concrete world transform (see {@link MarkerNode} domain contract).
5
+ */
1
6
  export class MarkerNodeTransformerOffsetPosition extends MarkerNodeTransformer {
2
7
  /**
3
8
  *
@@ -1 +1 @@
1
- {"version":3,"file":"MarkerNodeTransformerOffsetPosition.d.ts","sourceRoot":"","sources":["../../../../../src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.js"],"names":[],"mappings":"AAIA;IAII;;;;;OAKG;IACH,eAJW,MAAM,KACN,MAAM,GACL,mCAAmC,CAQ9C;IAdD,gBAAuB;IAgBvB,qCAkBC;CACJ;sCAzCqC,4BAA4B;oBAC9C,+BAA+B"}
1
+ {"version":3,"file":"MarkerNodeTransformerOffsetPosition.d.ts","sourceRoot":"","sources":["../../../../../src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.js"],"names":[],"mappings":"AAIA;;;;GAIG;AACH;IAII;;;;;OAKG;IACH,eAJW,MAAM,KACN,MAAM,GACL,mCAAmC,CAQ9C;IAdD,gBAAuB;IAgBvB,qCA4BC;CACJ;sCAxDqC,4BAA4B;oBAC9C,+BAA+B"}
@@ -2,6 +2,11 @@ import { MarkerNodeTransformer } from "./MarkerNodeTransformer.js";
2
2
  import Vector2 from "../../../core/geom/Vector2.js";
3
3
  import Vector3 from "../../../core/geom/Vector3.js";
4
4
 
5
+ /**
6
+ * Relocates the marker by an offset given in grid units, rotated by the node's yaw.
7
+ * Both domains are updated: the virtual grid position and the planar part of the
8
+ * concrete world transform (see {@link MarkerNode} domain contract).
9
+ */
5
10
  export class MarkerNodeTransformerOffsetPosition extends MarkerNodeTransformer {
6
11
 
7
12
  offset = new Vector2();
@@ -37,6 +42,16 @@ export class MarkerNodeTransformerOffsetPosition extends MarkerNodeTransformer {
37
42
 
38
43
  r.position._add(rotated_local_x, rotated_local_y);
39
44
 
45
+ // the marker is being relocated, keep the concrete world position in
46
+ // correspondence with the virtual one (world Y is a presentation concern, untouched)
47
+ const world = grid.transform;
48
+
49
+ r.transform.position._add(
50
+ rotated_local_x * world.scale_x,
51
+ 0,
52
+ rotated_local_y * world.scale_y
53
+ );
54
+
40
55
  return r;
41
56
  }
42
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MarkerNodeTransformerRecordProperty.d.ts","sourceRoot":"","sources":["../../../../../src/generation/markers/transform/MarkerNodeTransformerRecordProperty.js"],"names":[],"mappings":"AAGA;;GAEG;AACH;IAcI;;;;;OAKG;IACH,0BAJW,MAAM,sBAEJ,mCAAmC,CAY/C;IA5BD;;;OAGG;IACH,kBAAa;IAEb;;;OAGG;IACH,cAFU,MAAM,CAEI;IAoBpB,uCAIC;IAED,qCAQC;CACJ;sCApDqC,4BAA4B"}
1
+ {"version":3,"file":"MarkerNodeTransformerRecordProperty.d.ts","sourceRoot":"","sources":["../../../../../src/generation/markers/transform/MarkerNodeTransformerRecordProperty.js"],"names":[],"mappings":"AAGA;;GAEG;AACH;IAcI;;;;;OAKG;IACH,0BAJW,MAAM,sBAEJ,mCAAmC,CAY/C;IA5BD;;;OAGG;IACH,kBAAa;IAEb;;;OAGG;IACH,cAFU,MAAM,CAEI;IAoBpB,uCAEC;IAED,qCAQC;CACJ;sCAlDqC,4BAA4B"}
@@ -37,9 +37,7 @@ export class MarkerNodeTransformerRecordProperty extends MarkerNodeTransformer {
37
37
  }
38
38
 
39
39
  initialize(grid, seed) {
40
- if (!this.value.initialized) {
41
- this.value.initialize(grid, seed);
42
- }
40
+ this.value.ensureInitialized(grid, seed);
43
41
  }
44
42
 
45
43
  transform(node, grid) {
@@ -1 +1 @@
1
- {"version":3,"file":"MarkerNodeTransformerYRotateByFilter.d.ts","sourceRoot":"","sources":["../../../../../src/generation/markers/transform/MarkerNodeTransformerYRotateByFilter.js"],"names":[],"mappings":"AAQA;IAqBI;;;;OAIG;IACH,yCAFW,MAAM,wCAahB;IAnCD;;;OAGG;IACH,mBAAc;IAEd;;;OAGG;IACH,QAFU,MAAM,CAEL;IAEX,uCAIC;IAqBD,qCAmBC;CACJ;sCA/DqC,4BAA4B"}
1
+ {"version":3,"file":"MarkerNodeTransformerYRotateByFilter.d.ts","sourceRoot":"","sources":["../../../../../src/generation/markers/transform/MarkerNodeTransformerYRotateByFilter.js"],"names":[],"mappings":"AAQA;IAmBI;;;;OAIG;IACH,yCAFW,MAAM,wCAahB;IAjCD;;;OAGG;IACH,mBAAc;IAEd;;;OAGG;IACH,QAFU,MAAM,CAEL;IAEX,uCAEC;IAqBD,qCAmBC;CACJ;sCA7DqC,4BAA4B"}
@@ -21,9 +21,7 @@ export class MarkerNodeTransformerYRotateByFilter extends MarkerNodeTransformer
21
21
  offset = 0;
22
22
 
23
23
  initialize(grid, seed) {
24
- if (!this.filter.initialized) {
25
- this.filter.initialize(grid, seed);
26
- }
24
+ this.filter.ensureInitialized(grid, seed);
27
25
  }
28
26
 
29
27
 
@@ -51,7 +49,7 @@ export class MarkerNodeTransformerYRotateByFilter extends MarkerNodeTransformer
51
49
 
52
50
  let finalAngle = this.offset + angle_factor * Math.PI * 2;
53
51
 
54
- node.transform.rotation.toEulerAnglesXYZ(v3_object);
52
+ node.transform.rotation.toEulerAnglesYXZ(v3_object);
55
53
 
56
54
  if (epsilonEquals(v3_object.y, finalAngle, EPSILON)) {
57
55
  //special case, already facing in the right direction
@@ -1 +1 @@
1
- {"version":3,"file":"MarkerNodeTransformerYRotateByFilterGradient.d.ts","sourceRoot":"","sources":["../../../../../src/generation/markers/transform/MarkerNodeTransformerYRotateByFilterGradient.js"],"names":[],"mappings":"AAWA;;;GAGG;AACH;IAoBI;;;;OAIG;IACH,yCAFW,MAAM,gDAahB;IAlCD;;;OAGG;IACH,mBAAc;IAEd;;;OAGG;IACH,QAFU,MAAM,CAEL;IAEX,uCAIC;IAoBD,qCA2BC;CACJ;sCA5EqC,4BAA4B"}
1
+ {"version":3,"file":"MarkerNodeTransformerYRotateByFilterGradient.d.ts","sourceRoot":"","sources":["../../../../../src/generation/markers/transform/MarkerNodeTransformerYRotateByFilterGradient.js"],"names":[],"mappings":"AAWA;;;GAGG;AACH;IAkBI;;;;OAIG;IACH,yCAFW,MAAM,gDAahB;IAhCD;;;OAGG;IACH,mBAAc;IAEd;;;OAGG;IACH,QAFU,MAAM,CAEL;IAEX,uCAEC;IAoBD,qCA2BC;CACJ;sCA1EqC,4BAA4B"}