@woosh/meep-engine 2.131.48 → 2.132.1

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 (228) hide show
  1. package/README.md +1 -1
  2. package/package.json +1 -1
  3. package/src/core/bvh2/bvh3/ebvh_optimize_treelet.d.ts.map +1 -1
  4. package/src/core/bvh2/bvh3/ebvh_optimize_treelet.js +4 -3
  5. package/src/core/codegen/LineBuilder.js +3 -3
  6. package/src/core/collection/heap/Uint32Heap.d.ts +14 -0
  7. package/src/core/collection/heap/Uint32Heap.d.ts.map +1 -1
  8. package/src/core/collection/heap/Uint32Heap.js +18 -0
  9. package/src/core/collection/map/HashMap.d.ts.map +1 -1
  10. package/src/core/collection/map/HashMap.js +4 -22
  11. package/src/core/collection/map/generate_next_linear_congruential_index.d.ts +15 -0
  12. package/src/core/collection/map/generate_next_linear_congruential_index.d.ts.map +1 -0
  13. package/src/core/collection/map/generate_next_linear_congruential_index.js +18 -0
  14. package/src/core/geom/3d/aabb/AABB3.js +1 -1
  15. package/src/core/geom/3d/line/line3_compute_nearest_point_to_point.d.ts.map +1 -1
  16. package/src/core/geom/3d/line/line3_compute_nearest_point_to_point.js +10 -26
  17. package/src/core/geom/3d/line/line3_compute_segment_nearest_point_to_point_t.d.ts +19 -0
  18. package/src/core/geom/3d/line/line3_compute_segment_nearest_point_to_point_t.d.ts.map +1 -0
  19. package/src/core/geom/3d/line/line3_compute_segment_nearest_point_to_point_t.js +48 -0
  20. package/src/core/geom/3d/line/line3_compute_segment_point_distance.d.ts +15 -0
  21. package/src/core/geom/3d/line/line3_compute_segment_point_distance.d.ts.map +1 -0
  22. package/src/core/geom/3d/line/line3_compute_segment_point_distance.js +24 -0
  23. package/src/core/geom/3d/line/line3_compute_segment_point_distance_eikonal.d.ts +17 -0
  24. package/src/core/geom/3d/line/line3_compute_segment_point_distance_eikonal.d.ts.map +1 -0
  25. package/src/core/geom/3d/line/line3_compute_segment_point_distance_eikonal.js +95 -0
  26. package/src/core/geom/3d/line/line3_compute_segment_point_distance_sqr.d.ts +16 -0
  27. package/src/core/geom/3d/line/line3_compute_segment_point_distance_sqr.d.ts.map +1 -0
  28. package/src/core/geom/3d/line/{line3_computeSegmentPointDistance_sqr.js → line3_compute_segment_point_distance_sqr.js} +16 -3
  29. package/src/core/geom/3d/topology/struct/TopoMesh.d.ts +4 -0
  30. package/src/core/geom/3d/topology/struct/TopoMesh.d.ts.map +1 -1
  31. package/src/core/geom/3d/topology/struct/TopoMesh.js +4 -0
  32. package/src/core/geom/3d/topology/struct/binary/BinaryElementPool.d.ts +18 -1
  33. package/src/core/geom/3d/topology/struct/binary/BinaryElementPool.d.ts.map +1 -1
  34. package/src/core/geom/3d/topology/struct/binary/BinaryElementPool.js +56 -0
  35. package/src/core/geom/3d/topology/struct/binary/BinaryTopology.d.ts +46 -16
  36. package/src/core/geom/3d/topology/struct/binary/BinaryTopology.d.ts.map +1 -1
  37. package/src/core/geom/3d/topology/struct/binary/BinaryTopology.js +85 -15
  38. package/src/core/geom/3d/topology/struct/binary/io/bt_disk_edge_add.d.ts +9 -0
  39. package/src/core/geom/3d/topology/struct/binary/io/bt_disk_edge_add.d.ts.map +1 -0
  40. package/src/core/geom/3d/topology/struct/binary/io/bt_disk_edge_add.js +43 -0
  41. package/src/core/geom/3d/topology/struct/binary/io/bt_disk_edge_remove.d.ts +4 -3
  42. package/src/core/geom/3d/topology/struct/binary/io/bt_disk_edge_remove.d.ts.map +1 -1
  43. package/src/core/geom/3d/topology/struct/binary/io/bt_disk_edge_remove.js +38 -4
  44. package/src/core/geom/3d/topology/struct/binary/io/bt_loop_kill.d.ts +8 -0
  45. package/src/core/geom/3d/topology/struct/binary/io/bt_loop_kill.d.ts.map +1 -0
  46. package/src/core/geom/3d/topology/struct/binary/io/bt_loop_kill.js +36 -0
  47. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_cleanup_faceless_references.d.ts +10 -0
  48. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_cleanup_faceless_references.d.ts.map +1 -0
  49. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_cleanup_faceless_references.js +62 -0
  50. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_face_decouple.d.ts +13 -0
  51. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_face_decouple.d.ts.map +1 -0
  52. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_face_decouple.js +145 -0
  53. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_face_decouple_islands.d.ts +12 -0
  54. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_face_decouple_islands.d.ts.map +1 -0
  55. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_face_decouple_islands.js +111 -0
  56. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_face_island_erode.d.ts +15 -0
  57. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_face_island_erode.d.ts.map +1 -0
  58. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_face_island_erode.js +290 -0
  59. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_from_indexed_geometry.d.ts +11 -0
  60. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_from_indexed_geometry.d.ts.map +1 -0
  61. package/src/core/geom/3d/topology/struct/binary/io/{bt_index_geometry_to_topology.js → bt_mesh_from_indexed_geometry.js} +6 -7
  62. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_from_unindexed_geometry.d.ts +8 -0
  63. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_from_unindexed_geometry.d.ts.map +1 -0
  64. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_from_unindexed_geometry.js +31 -0
  65. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_triangulate.d.ts +7 -0
  66. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_triangulate.d.ts.map +1 -0
  67. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_triangulate.js +22 -0
  68. package/src/core/geom/3d/topology/struct/binary/io/bt_radial_loop_add.d.ts +8 -0
  69. package/src/core/geom/3d/topology/struct/binary/io/bt_radial_loop_add.d.ts.map +1 -0
  70. package/src/core/geom/3d/topology/struct/binary/io/bt_radial_loop_add.js +32 -0
  71. package/src/core/geom/3d/topology/struct/binary/io/bt_radial_loop_remove.d.ts +8 -0
  72. package/src/core/geom/3d/topology/struct/binary/io/bt_radial_loop_remove.d.ts.map +1 -0
  73. package/src/core/geom/3d/topology/struct/binary/io/bt_radial_loop_remove.js +26 -0
  74. package/src/core/geom/3d/topology/struct/binary/io/edge/OrderedEdge.d.ts.map +1 -0
  75. package/src/core/geom/3d/topology/struct/binary/io/{OrderedEdge.js → edge/OrderedEdge.js} +1 -1
  76. package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_create.d.ts.map +1 -0
  77. package/src/core/geom/3d/topology/struct/binary/io/{bt_edge_create.js → edge/bt_edge_create.js} +1 -1
  78. package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_get_or_create.d.ts.map +1 -0
  79. package/src/core/geom/3d/topology/struct/binary/io/{bt_edge_get_or_create.js → edge/bt_edge_get_or_create.js} +1 -1
  80. package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_kill.d.ts.map +1 -0
  81. package/src/core/geom/3d/topology/struct/binary/io/{bt_edge_kill.js → edge/bt_edge_kill.js} +6 -3
  82. package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_split.d.ts +13 -0
  83. package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_split.d.ts.map +1 -0
  84. package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_split.js +180 -0
  85. package/src/core/geom/3d/topology/struct/binary/io/edge/bt_kill_only_edge.d.ts.map +1 -0
  86. package/src/core/geom/3d/topology/struct/binary/io/edge/bt_mesh_calc_edges.d.ts.map +1 -0
  87. package/src/core/geom/3d/topology/struct/binary/io/{bt_mesh_calc_edges.js → edge/bt_mesh_calc_edges.js} +10 -7
  88. package/src/core/geom/3d/topology/struct/binary/io/edge/get_or_create_edge_map.d.ts.map +1 -0
  89. package/src/core/geom/3d/topology/struct/binary/io/face/bt_face_kill.d.ts +8 -0
  90. package/src/core/geom/3d/topology/struct/binary/io/face/bt_face_kill.d.ts.map +1 -0
  91. package/src/core/geom/3d/topology/struct/binary/io/face/bt_face_kill.js +26 -0
  92. package/src/core/geom/3d/topology/struct/binary/io/face/bt_face_poke.d.ts +15 -0
  93. package/src/core/geom/3d/topology/struct/binary/io/face/bt_face_poke.d.ts.map +1 -0
  94. package/src/core/geom/3d/topology/struct/binary/io/face/bt_face_poke.js +152 -0
  95. package/src/core/geom/3d/topology/struct/binary/io/face/bt_face_triangulate.d.ts +13 -0
  96. package/src/core/geom/3d/topology/struct/binary/io/face/bt_face_triangulate.d.ts.map +1 -0
  97. package/src/core/geom/3d/topology/struct/binary/io/face/bt_face_triangulate.js +124 -0
  98. package/src/core/geom/3d/topology/struct/binary/io/face/bt_kill_only_face.d.ts.map +1 -0
  99. package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_kill_only_vert.d.ts.map +1 -0
  100. package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_merge_verts_by_distance.d.ts +10 -0
  101. package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_merge_verts_by_distance.d.ts.map +1 -0
  102. package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_merge_verts_by_distance.js +165 -0
  103. package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vert_kill.d.ts.map +1 -0
  104. package/src/core/geom/3d/topology/struct/binary/io/{bt_vert_kill.js → vertex/bt_vert_kill.js} +5 -2
  105. package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vertex_replace.d.ts +13 -0
  106. package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vertex_replace.d.ts.map +1 -0
  107. package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vertex_replace.js +125 -0
  108. package/src/core/geom/3d/topology/struct/binary/query/bt_edge_has_vertex.d.ts +9 -0
  109. package/src/core/geom/3d/topology/struct/binary/query/bt_edge_has_vertex.d.ts.map +1 -0
  110. package/src/core/geom/3d/topology/struct/binary/query/{bt_mesh_edge_has_vertex.js → bt_edge_has_vertex.js} +1 -1
  111. package/src/core/geom/3d/topology/struct/binary/query/{bt_mesh_edge_other_vertex.d.ts → bt_edge_other_vertex.d.ts} +2 -2
  112. package/src/core/geom/3d/topology/struct/binary/query/bt_edge_other_vertex.d.ts.map +1 -0
  113. package/src/core/geom/3d/topology/struct/binary/query/{bt_mesh_edge_other_vertex.js → bt_edge_other_vertex.js} +1 -1
  114. package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_attached_faces.d.ts +12 -0
  115. package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_attached_faces.d.ts.map +1 -0
  116. package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_attached_faces.js +96 -0
  117. package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_centroid.d.ts +10 -0
  118. package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_centroid.d.ts.map +1 -0
  119. package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_centroid.js +75 -0
  120. package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_incenter.d.ts +10 -0
  121. package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_incenter.d.ts.map +1 -0
  122. package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_incenter.js +85 -0
  123. package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_neighbour_faces.d.ts +12 -0
  124. package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_neighbour_faces.d.ts.map +1 -0
  125. package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_neighbour_faces.js +74 -0
  126. package/src/core/geom/3d/topology/struct/binary/query/bt_face_is_degenerate.d.ts +9 -0
  127. package/src/core/geom/3d/topology/struct/binary/query/bt_face_is_degenerate.d.ts.map +1 -0
  128. package/src/core/geom/3d/topology/struct/binary/query/bt_face_is_degenerate.js +78 -0
  129. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_build_boundary_distance_field.d.ts +15 -0
  130. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_build_boundary_distance_field.d.ts.map +1 -0
  131. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_build_boundary_distance_field.js +151 -0
  132. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_compute_edge_distance_eikonal.d.ts +13 -0
  133. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_compute_edge_distance_eikonal.d.ts.map +1 -0
  134. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_compute_edge_distance_eikonal.js +46 -0
  135. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_compute_face_islands.d.ts +9 -0
  136. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_compute_face_islands.d.ts.map +1 -0
  137. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_compute_face_islands.js +78 -0
  138. package/src/core/geom/3d/topology/struct/binary/query/bt_vertex_distance_to_edge.d.ts +10 -0
  139. package/src/core/geom/3d/topology/struct/binary/query/bt_vertex_distance_to_edge.d.ts.map +1 -0
  140. package/src/core/geom/3d/topology/struct/binary/query/bt_vertex_distance_to_edge.js +48 -0
  141. package/src/core/geom/3d/topology/struct/binary/query/bt_vertex_distance_to_vertex.d.ts +9 -0
  142. package/src/core/geom/3d/topology/struct/binary/query/bt_vertex_distance_to_vertex.d.ts.map +1 -0
  143. package/src/core/geom/3d/topology/struct/binary/query/bt_vertex_distance_to_vertex.js +31 -0
  144. package/src/core/geom/3d/topology/struct/prototypeBinaryTopology.js +2 -2
  145. package/src/core/geom/3d/triangle/triangle3_incenter.d.ts +19 -0
  146. package/src/core/geom/3d/triangle/triangle3_incenter.d.ts.map +1 -0
  147. package/src/core/geom/3d/triangle/triangle3_incenter.js +60 -0
  148. package/src/core/math/hash/lowbias32.d.ts +9 -0
  149. package/src/core/math/hash/lowbias32.d.ts.map +1 -0
  150. package/src/core/math/hash/lowbias32.js +20 -0
  151. package/src/core/process/task/util/iteratorTask.d.ts +2 -2
  152. package/src/core/process/task/util/iteratorTask.d.ts.map +1 -1
  153. package/src/core/process/task/util/iteratorTask.js +3 -3
  154. package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.d.ts.map +1 -1
  155. package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.js +4 -4
  156. package/src/engine/graphics/render/forward_plus/query/detailed_sphere_frustum_intersection_test.js +4 -4
  157. package/src/engine/navigation/ecs/components/Path.js +3 -3
  158. package/src/engine/navigation/grid/find_path_on_grid_astar.d.ts +4 -4
  159. package/src/engine/navigation/grid/find_path_on_grid_astar.d.ts.map +1 -1
  160. package/src/engine/navigation/grid/find_path_on_grid_astar.js +5 -4
  161. package/src/engine/navigation/mesh/NavigationMesh.d.ts +32 -0
  162. package/src/engine/navigation/mesh/NavigationMesh.d.ts.map +1 -0
  163. package/src/engine/navigation/mesh/NavigationMesh.js +190 -0
  164. package/src/engine/navigation/mesh/NavigationMeshAgent.d.ts +9 -0
  165. package/src/engine/navigation/mesh/NavigationMeshAgent.d.ts.map +1 -0
  166. package/src/engine/navigation/mesh/NavigationMeshAgent.js +11 -0
  167. package/src/engine/navigation/mesh/README.md +3 -0
  168. package/src/engine/navigation/mesh/bt_mesh_face_find_path.d.ts +14 -0
  169. package/src/engine/navigation/mesh/bt_mesh_face_find_path.d.ts.map +1 -0
  170. package/src/engine/navigation/mesh/bt_mesh_face_find_path.js +203 -0
  171. package/src/engine/navigation/mesh/build/bvh_build_from_unindexed_triangles.d.ts +8 -0
  172. package/src/engine/navigation/mesh/build/bvh_build_from_unindexed_triangles.d.ts.map +1 -0
  173. package/src/engine/navigation/mesh/build/bvh_build_from_unindexed_triangles.js +46 -0
  174. package/src/engine/navigation/mesh/build/enforce_agent_height_clearance.d.ts +12 -0
  175. package/src/engine/navigation/mesh/build/enforce_agent_height_clearance.d.ts.map +1 -0
  176. package/src/engine/navigation/mesh/build/enforce_agent_height_clearance.js +204 -0
  177. package/src/engine/navigation/mesh/build/navmesh_build_topology.d.ts +14 -0
  178. package/src/engine/navigation/mesh/build/navmesh_build_topology.d.ts.map +1 -0
  179. package/src/engine/navigation/mesh/build/navmesh_build_topology.js +183 -0
  180. package/src/engine/navigation/mesh/bvh_build_from_bt_mesh.d.ts +7 -0
  181. package/src/engine/navigation/mesh/bvh_build_from_bt_mesh.d.ts.map +1 -0
  182. package/src/engine/navigation/mesh/bvh_build_from_bt_mesh.js +64 -0
  183. package/src/engine/navigation/mesh/funnel_string_pull.d.ts +15 -0
  184. package/src/engine/navigation/mesh/funnel_string_pull.d.ts.map +1 -0
  185. package/src/engine/navigation/mesh/funnel_string_pull.js +225 -0
  186. package/src/core/geom/3d/line/line3_computeSegmentPointDistance_sqr.d.ts +0 -14
  187. package/src/core/geom/3d/line/line3_computeSegmentPointDistance_sqr.d.ts.map +0 -1
  188. package/src/core/geom/3d/topology/struct/binary/io/OrderedEdge.d.ts.map +0 -1
  189. package/src/core/geom/3d/topology/struct/binary/io/bt_edge_create.d.ts.map +0 -1
  190. package/src/core/geom/3d/topology/struct/binary/io/bt_edge_get_or_create.d.ts.map +0 -1
  191. package/src/core/geom/3d/topology/struct/binary/io/bt_edge_kill.d.ts.map +0 -1
  192. package/src/core/geom/3d/topology/struct/binary/io/bt_face_kill.d.ts +0 -7
  193. package/src/core/geom/3d/topology/struct/binary/io/bt_face_kill.d.ts.map +0 -1
  194. package/src/core/geom/3d/topology/struct/binary/io/bt_face_kill.js +0 -8
  195. package/src/core/geom/3d/topology/struct/binary/io/bt_index_geometry_to_topology.d.ts +0 -11
  196. package/src/core/geom/3d/topology/struct/binary/io/bt_index_geometry_to_topology.d.ts.map +0 -1
  197. package/src/core/geom/3d/topology/struct/binary/io/bt_kill_only_edge.d.ts.map +0 -1
  198. package/src/core/geom/3d/topology/struct/binary/io/bt_kill_only_face.d.ts.map +0 -1
  199. package/src/core/geom/3d/topology/struct/binary/io/bt_kill_only_vert.d.ts.map +0 -1
  200. package/src/core/geom/3d/topology/struct/binary/io/bt_merge_verts_by_distance.d.ts +0 -18
  201. package/src/core/geom/3d/topology/struct/binary/io/bt_merge_verts_by_distance.d.ts.map +0 -1
  202. package/src/core/geom/3d/topology/struct/binary/io/bt_merge_verts_by_distance.js +0 -83
  203. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_calc_edges.d.ts.map +0 -1
  204. package/src/core/geom/3d/topology/struct/binary/io/bt_vert_kill.d.ts.map +0 -1
  205. package/src/core/geom/3d/topology/struct/binary/io/get_or_create_edge_map.d.ts.map +0 -1
  206. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_edge_has_vertex.d.ts +0 -9
  207. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_edge_has_vertex.d.ts.map +0 -1
  208. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_edge_other_vertex.d.ts.map +0 -1
  209. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_get_neighbour_faces.d.ts +0 -10
  210. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_get_neighbour_faces.d.ts.map +0 -1
  211. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_get_neighbour_faces.js +0 -44
  212. package/src/engine/navigation/__module.d.ts +0 -2
  213. package/src/engine/navigation/__module.d.ts.map +0 -1
  214. package/src/engine/navigation/__module.js +0 -1
  215. /package/src/core/geom/3d/topology/struct/binary/io/{OrderedEdge.d.ts → edge/OrderedEdge.d.ts} +0 -0
  216. /package/src/core/geom/3d/topology/struct/binary/io/{bt_edge_create.d.ts → edge/bt_edge_create.d.ts} +0 -0
  217. /package/src/core/geom/3d/topology/struct/binary/io/{bt_edge_get_or_create.d.ts → edge/bt_edge_get_or_create.d.ts} +0 -0
  218. /package/src/core/geom/3d/topology/struct/binary/io/{bt_edge_kill.d.ts → edge/bt_edge_kill.d.ts} +0 -0
  219. /package/src/core/geom/3d/topology/struct/binary/io/{bt_kill_only_edge.d.ts → edge/bt_kill_only_edge.d.ts} +0 -0
  220. /package/src/core/geom/3d/topology/struct/binary/io/{bt_kill_only_edge.js → edge/bt_kill_only_edge.js} +0 -0
  221. /package/src/core/geom/3d/topology/struct/binary/io/{bt_mesh_calc_edges.d.ts → edge/bt_mesh_calc_edges.d.ts} +0 -0
  222. /package/src/core/geom/3d/topology/struct/binary/io/{get_or_create_edge_map.d.ts → edge/get_or_create_edge_map.d.ts} +0 -0
  223. /package/src/core/geom/3d/topology/struct/binary/io/{get_or_create_edge_map.js → edge/get_or_create_edge_map.js} +0 -0
  224. /package/src/core/geom/3d/topology/struct/binary/io/{bt_kill_only_face.d.ts → face/bt_kill_only_face.d.ts} +0 -0
  225. /package/src/core/geom/3d/topology/struct/binary/io/{bt_kill_only_face.js → face/bt_kill_only_face.js} +0 -0
  226. /package/src/core/geom/3d/topology/struct/binary/io/{bt_kill_only_vert.d.ts → vertex/bt_kill_only_vert.d.ts} +0 -0
  227. /package/src/core/geom/3d/topology/struct/binary/io/{bt_kill_only_vert.js → vertex/bt_kill_only_vert.js} +0 -0
  228. /package/src/core/geom/3d/topology/struct/binary/io/{bt_vert_kill.d.ts → vertex/bt_vert_kill.d.ts} +0 -0
@@ -0,0 +1,151 @@
1
+ import { Uint32Heap } from "../../../../../../collection/heap/Uint32Heap.js";
2
+ import { NULL_POINTER } from "../BinaryTopology.js";
3
+ import { bt_mesh_compute_edge_distance_eikonal } from "./bt_mesh_compute_edge_distance_eikonal.js";
4
+
5
+ /**
6
+ * Build distance field for a given island (group of faces).
7
+ * Distances are calculated as shortest from the boundary.
8
+ *
9
+ * Distances are the shortest distances from the boundary along the mesh.
10
+ * Only the island vertices are considered.
11
+ *
12
+ * Unreachable vertices are marked with Infinity distance.
13
+ * @param {Map<number, number>} vertex_boundary_distances Mapping from vertex ID to distance from boundary. The result is stored here.
14
+ * @param {BinaryTopology} mesh
15
+ * @param {Set<number>} island_vertices
16
+ * @param {Set<number>} boundary_vertices Subset of island_vertices that are on the boundary.
17
+ */
18
+ export function bt_mesh_build_boundary_distance_field(
19
+ vertex_boundary_distances,
20
+ mesh,
21
+ island_vertices,
22
+ boundary_vertices
23
+ ) {
24
+
25
+ const heap = new Uint32Heap(island_vertices.size);
26
+
27
+ // initialize distances
28
+ for (const v of island_vertices) {
29
+ if (boundary_vertices.has(v)) {
30
+ vertex_boundary_distances.set(v, 0);
31
+ heap.insert(v, 0);
32
+ } else {
33
+ vertex_boundary_distances.set(v, Infinity);
34
+ }
35
+ }
36
+
37
+ const scratch_vertex = new Float32Array(3);
38
+
39
+ while (!heap.is_empty()) {
40
+ const current_vertex = heap.pop_min();
41
+ const current_distance = vertex_boundary_distances.get(current_vertex);
42
+
43
+ // Traverse disk cycle to get neighboring edges
44
+ const e_first = mesh.vertex_read_edge(current_vertex);
45
+ if (e_first === NULL_POINTER) {
46
+ continue;
47
+ }
48
+
49
+ let e_curr = e_first;
50
+ do {
51
+ const v1 = mesh.edge_read_vertex1(e_curr);
52
+ const v2 = mesh.edge_read_vertex2(e_curr);
53
+
54
+ const is_v1 = v1 === current_vertex;
55
+ const v_other = is_v1 ? v2 : v1;
56
+
57
+ // ---------------------------------------------------------
58
+ // STEP A: Vertex Update (Dijkstra Fallback)
59
+ // ---------------------------------------------------------
60
+ // We must attempt to update the neighbor (v_other) directly from current_vertex.
61
+ // This ensures that 'v_other' gets a valid distance (if it was Infinity),
62
+ // allowing the subsequent Eikonal step to have a valid edge to propagate from.
63
+
64
+ // 1. Read coordinates to compute edge length
65
+ mesh.vertex_read_coordinate(scratch_vertex, 0, current_vertex);
66
+ const cx = scratch_vertex[0];
67
+ const cy = scratch_vertex[1];
68
+ const cz = scratch_vertex[2];
69
+
70
+ mesh.vertex_read_coordinate(scratch_vertex, 0, v_other);
71
+ const ox = scratch_vertex[0];
72
+ const oy = scratch_vertex[1];
73
+ const oz = scratch_vertex[2];
74
+
75
+ const edge_len = Math.hypot(cx - ox, cy - oy, cz - oz);
76
+ const new_neighbor_dist = current_distance + edge_len;
77
+
78
+ let other_distance = vertex_boundary_distances.get(v_other);
79
+
80
+ // Update v_other if the direct edge path is shorter than what it currently has
81
+ if (new_neighbor_dist < other_distance) {
82
+ vertex_boundary_distances.set(v_other, new_neighbor_dist);
83
+ heap.insert_or_update(v_other, new_neighbor_dist);
84
+ // Update local variable so STEP B uses the tighter bound immediately
85
+ other_distance = new_neighbor_dist;
86
+ }
87
+
88
+ // ---------------------------------------------------------
89
+ // STEP B: Edge Update (Eikonal)
90
+ // ---------------------------------------------------------
91
+ // Now that we've ensured v_other is as up-to-date as possible,
92
+ // we check if we can form a valid front (edge) to update the triangle's 3rd vertex.
93
+
94
+ if (other_distance !== undefined && other_distance !== Infinity) {
95
+
96
+ // Find the faces (triangles) sharing this edge using the radial cycle
97
+ const l_first = mesh.edge_read_loop(e_curr);
98
+
99
+ if (l_first !== NULL_POINTER) {
100
+ let l_curr = l_first;
101
+ do {
102
+ const face = mesh.loop_read_face(l_curr);
103
+
104
+ // Find the 3rd "target" vertex of this triangular face
105
+ let fl = mesh.face_read_loop(face);
106
+ let v_target = -1;
107
+
108
+
109
+ // TODO assert the 3-vertex assumption
110
+
111
+ // Iterate max 3 times (explicitly assuming faces are triangles)
112
+ for (let i = 0; i < 3; i++) {
113
+ const fv = mesh.loop_read_vertex(fl);
114
+ if (fv !== v1 && fv !== v2) {
115
+ v_target = fv;
116
+ break;
117
+ }
118
+ fl = mesh.loop_read_next(fl);
119
+ }
120
+
121
+ // If we found a valid 3rd vertex inside our island, attempt to relax its distance
122
+ if (v_target !== -1 && island_vertices.has(v_target)) {
123
+
124
+ const new_distance = bt_mesh_compute_edge_distance_eikonal(
125
+ mesh,
126
+ current_vertex,
127
+ v_other,
128
+ current_distance,
129
+ other_distance,
130
+ v_target
131
+ );
132
+
133
+ const existing_distance = vertex_boundary_distances.get(v_target);
134
+
135
+ if (new_distance < existing_distance) {
136
+ vertex_boundary_distances.set(v_target, new_distance);
137
+ heap.insert_or_update(v_target, new_distance);
138
+ }
139
+ }
140
+
141
+ // Move to the next face sharing this edge
142
+ l_curr = mesh.loop_read_radial_next(l_curr);
143
+ } while (l_curr !== l_first && l_curr !== NULL_POINTER);
144
+ }
145
+ }
146
+
147
+ // Move to the next edge in the vertex's disk cycle
148
+ e_curr = is_v1 ? mesh.edge_read_v1_disk_next(e_curr) : mesh.edge_read_v2_disk_next(e_curr);
149
+ } while (e_curr !== e_first && e_curr !== NULL_POINTER);
150
+ }
151
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Solves the quadratic Eikonal equation for a triangle.
3
+ * Based on the Kimmel-Sethian update for Fast Marching Methods.
4
+ * @param {BinaryTopology} mesh
5
+ * @param {number} v0 Vertex ID of edge start
6
+ * @param {number} v1 Vertex ID of edge end
7
+ * @param {number} d0 Distance at v0
8
+ * @param {number} d1 Distance at v1
9
+ * @param {number} v_target The vertex we are solving for
10
+ * @returns {number} The exact geodesic distance
11
+ */
12
+ export function bt_mesh_compute_edge_distance_eikonal(mesh: BinaryTopology, v0: number, v1: number, d0: number, d1: number, v_target: number): number;
13
+ //# sourceMappingURL=bt_mesh_compute_edge_distance_eikonal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bt_mesh_compute_edge_distance_eikonal.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/core/geom/3d/topology/struct/binary/query/bt_mesh_compute_edge_distance_eikonal.js"],"names":[],"mappings":"AAMA;;;;;;;;;;GAUG;AACH,gFAPW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,YACN,MAAM,GACJ,MAAM,CA8BlB"}
@@ -0,0 +1,46 @@
1
+ import {
2
+ line3_compute_segment_point_distance_eikonal
3
+ } from "../../../../line/line3_compute_segment_point_distance_eikonal.js";
4
+
5
+ const scratch_vertex = new Float32Array(3);
6
+
7
+ /**
8
+ * Solves the quadratic Eikonal equation for a triangle.
9
+ * Based on the Kimmel-Sethian update for Fast Marching Methods.
10
+ * @param {BinaryTopology} mesh
11
+ * @param {number} v0 Vertex ID of edge start
12
+ * @param {number} v1 Vertex ID of edge end
13
+ * @param {number} d0 Distance at v0
14
+ * @param {number} d1 Distance at v1
15
+ * @param {number} v_target The vertex we are solving for
16
+ * @returns {number} The exact geodesic distance
17
+ */
18
+ export function bt_mesh_compute_edge_distance_eikonal(
19
+ mesh,
20
+ v0, v1,
21
+ d0, d1,
22
+ v_target
23
+ ) {
24
+ // 1. Read Coordinates
25
+ mesh.vertex_read_coordinate(scratch_vertex, 0, v0);
26
+ const ax = scratch_vertex[0];
27
+ const ay = scratch_vertex[1];
28
+ const az = scratch_vertex[2];
29
+
30
+ mesh.vertex_read_coordinate(scratch_vertex, 0, v1);
31
+ const bx = scratch_vertex[0];
32
+ const by = scratch_vertex[1];
33
+ const bz = scratch_vertex[2];
34
+
35
+ mesh.vertex_read_coordinate(scratch_vertex, 0, v_target);
36
+ const cx = scratch_vertex[0];
37
+ const cy = scratch_vertex[1];
38
+ const cz = scratch_vertex[2];
39
+
40
+ return line3_compute_segment_point_distance_eikonal(
41
+ d0, d1,
42
+ ax, ay, az,
43
+ bx, by, bz,
44
+ cx, cy, cz
45
+ );
46
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Find groups of connected faces in the mesh. Faces are considered connected if they share an edge.
3
+ * If the entire mesh is connected - there will be a single island.
4
+ *
5
+ * @param {BinaryTopology} mesh
6
+ * @returns {number[][]} each island is a sequence of face IDs
7
+ */
8
+ export function bt_mesh_compute_face_islands(mesh: BinaryTopology): number[][];
9
+ //# sourceMappingURL=bt_mesh_compute_face_islands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bt_mesh_compute_face_islands.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/core/geom/3d/topology/struct/binary/query/bt_mesh_compute_face_islands.js"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,oEAFa,MAAM,EAAE,EAAE,CAqEtB"}
@@ -0,0 +1,78 @@
1
+ import { BitSet } from "../../../../../../binary/BitSet.js";
2
+ import { bt_face_get_neighbour_faces } from "./bt_face_get_neighbour_faces.js";
3
+
4
+ /**
5
+ * Find groups of connected faces in the mesh. Faces are considered connected if they share an edge.
6
+ * If the entire mesh is connected - there will be a single island.
7
+ *
8
+ * @param {BinaryTopology} mesh
9
+ * @returns {number[][]} each island is a sequence of face IDs
10
+ */
11
+ export function bt_mesh_compute_face_islands(mesh) {
12
+ /**
13
+ *
14
+ * @type {number[][]}
15
+ */
16
+ const result = [];
17
+
18
+ // traverse over all faced in the mesh, flood-filling to build islands
19
+ const closed_set = new BitSet();
20
+
21
+ const faces = mesh.faces;
22
+
23
+ /**
24
+ * @type {number}
25
+ */
26
+ const face_count = faces.size;
27
+
28
+ /**
29
+ *
30
+ * @type {number[]}
31
+ */
32
+ const scratch_neighbours = [];
33
+
34
+ for (let seed_face_id = 0; seed_face_id < face_count; seed_face_id++) {
35
+ if (closed_set.getAndSet(seed_face_id)) {
36
+ // already processed
37
+ continue;
38
+ }
39
+
40
+ if (!faces.is_allocated(seed_face_id)) {
41
+ // a hole
42
+ continue;
43
+ }
44
+
45
+ // start a new island
46
+
47
+ /**
48
+ *
49
+ * @type {number[]}
50
+ */
51
+ const island = [];
52
+
53
+ result.push(island);
54
+
55
+ const open = [seed_face_id];
56
+
57
+ while (open.length > 0) {
58
+ const face_id = open.pop();
59
+
60
+ island.push(face_id);
61
+
62
+ const neighbour_count = bt_face_get_neighbour_faces(scratch_neighbours, 0, mesh, face_id);
63
+
64
+ for (let i = 0; i < neighbour_count; i++) {
65
+ const neighbour_id = scratch_neighbours[i];
66
+
67
+ if (closed_set.getAndSet(neighbour_id)) {
68
+ continue;
69
+ }
70
+
71
+ open.push(neighbour_id);
72
+ }
73
+ }
74
+
75
+ }
76
+
77
+ return result;
78
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Shortest distance from a vertex to a given edge.
3
+ *
4
+ * @param {BinaryTopology} mesh
5
+ * @param {number} v Vertex ID
6
+ * @param {number} e Edge ID
7
+ * @returns {number}
8
+ */
9
+ export function bt_vertex_distance_to_edge(mesh: BinaryTopology, v: number, e: number): number;
10
+ //# sourceMappingURL=bt_vertex_distance_to_edge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bt_vertex_distance_to_edge.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/core/geom/3d/topology/struct/binary/query/bt_vertex_distance_to_edge.js"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,oEAJW,MAAM,KACN,MAAM,GACJ,MAAM,CAqClB"}
@@ -0,0 +1,48 @@
1
+ import { line3_compute_segment_point_distance_sqr } from "../../../../line/line3_compute_segment_point_distance_sqr.js";
2
+
3
+ const scratch_vertex = new Float32Array(3);
4
+
5
+ /**
6
+ * Shortest distance from a vertex to a given edge.
7
+ *
8
+ * @param {BinaryTopology} mesh
9
+ * @param {number} v Vertex ID
10
+ * @param {number} e Edge ID
11
+ * @returns {number}
12
+ */
13
+ export function bt_vertex_distance_to_edge(mesh, v, e) {
14
+
15
+ const e_v1 = mesh.edge_read_vertex1(e);
16
+ const e_v2 = mesh.edge_read_vertex2(e);
17
+
18
+ if (e_v1 === v || e_v2 === v) {
19
+ // vertex is on edge
20
+ return 0;
21
+ }
22
+
23
+ mesh.vertex_read_coordinate(scratch_vertex, 0, v);
24
+
25
+ const px = scratch_vertex[0];
26
+ const py = scratch_vertex[1];
27
+ const pz = scratch_vertex[2];
28
+
29
+ mesh.vertex_read_coordinate(scratch_vertex, 0, e_v1);
30
+
31
+ const ax = scratch_vertex[0];
32
+ const ay = scratch_vertex[1];
33
+ const az = scratch_vertex[2];
34
+
35
+ mesh.vertex_read_coordinate(scratch_vertex, 0, e_v2);
36
+
37
+ const bx = scratch_vertex[0];
38
+ const by = scratch_vertex[1];
39
+ const bz = scratch_vertex[2];
40
+
41
+ const d2 = line3_compute_segment_point_distance_sqr(
42
+ ax, ay, az,
43
+ bx, by, bz,
44
+ px, py, pz
45
+ );
46
+
47
+ return Math.sqrt(d2);
48
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Straight-line distance between two vertices in the mesh.
3
+ * @param {BinaryTopology} mesh
4
+ * @param {number} v1
5
+ * @param {number} v2
6
+ * @returns {number}
7
+ */
8
+ export function bt_vertex_distance_to_vertex(mesh: BinaryTopology, v1: number, v2: number): number;
9
+ //# sourceMappingURL=bt_vertex_distance_to_vertex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bt_vertex_distance_to_vertex.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/core/geom/3d/topology/struct/binary/query/bt_vertex_distance_to_vertex.js"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,uEAJW,MAAM,MACN,MAAM,GACJ,MAAM,CAmBlB"}
@@ -0,0 +1,31 @@
1
+ import { v3_distance } from "../../../../../vec3/v3_distance.js";
2
+
3
+ const scratch_vertex = new Float32Array(3);
4
+
5
+ /**
6
+ * Straight-line distance between two vertices in the mesh.
7
+ * @param {BinaryTopology} mesh
8
+ * @param {number} v1
9
+ * @param {number} v2
10
+ * @returns {number}
11
+ */
12
+ export function bt_vertex_distance_to_vertex(mesh, v1, v2) {
13
+ mesh.vertex_read_coordinate(scratch_vertex, 0, v1);
14
+
15
+ const x0 = scratch_vertex[0];
16
+ const y0 = scratch_vertex[1];
17
+ const z0 = scratch_vertex[2];
18
+
19
+ mesh.vertex_read_coordinate(scratch_vertex, 0, v2);
20
+
21
+ const x1 = scratch_vertex[0];
22
+ const y1 = scratch_vertex[1];
23
+ const z1 = scratch_vertex[2];
24
+
25
+ return v3_distance(
26
+ x0, y0, z0,
27
+ x1, y1, z1,
28
+ );
29
+ }
30
+
31
+
@@ -6,7 +6,7 @@ import {
6
6
  import { noop } from "../../../../function/noop.js";
7
7
  import { number_pretty_print } from "../../../../primitives/numbers/number_pretty_print.js";
8
8
  import { BinaryTopology } from "./binary/BinaryTopology.js";
9
- import { bt_index_geometry_to_topology } from "./binary/io/bt_index_geometry_to_topology.js";
9
+ import { bt_mesh_from_indexed_geometry } from "./binary/io/bt_mesh_from_indexed_geometry.js";
10
10
  import { TopoMesh } from "./TopoMesh.js";
11
11
 
12
12
  function promise_ply(url) {
@@ -33,7 +33,7 @@ async function main() {
33
33
 
34
34
  console.time('topo build - bin');
35
35
  // console.profile('topo build - bin');
36
- bt_index_geometry_to_topology(mesh, index_array, positions_array);
36
+ bt_mesh_from_indexed_geometry(mesh, index_array, positions_array);
37
37
  // console.profileEnd('topo build - bin');
38
38
  console.timeEnd('topo build - bin');
39
39
  //
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Calculates the incenter of a triangle.
3
+ *
4
+ * @see https://en.wikipedia.org/wiki/Incenter
5
+ * @param {number[]|Float32Array|Float64Array|ArrayLike<number>} output
6
+ * @param {number} output_offset
7
+ * @param {number} x0
8
+ * @param {number} y0
9
+ * @param {number} z0
10
+ * @param {number} x1
11
+ * @param {number} y1
12
+ * @param {number} z1
13
+ * @param {number} x2
14
+ * @param {number} y2
15
+ * @param {number} z2
16
+ * @returns {boolean} true when the result was calculated, false for degenerate triangle
17
+ */
18
+ export function triangle3_incenter(output: number[] | Float32Array | Float64Array | ArrayLike<number>, output_offset: number, x0: number, y0: number, z0: number, x1: number, y1: number, z1: number, x2: number, y2: number, z2: number): boolean;
19
+ //# sourceMappingURL=triangle3_incenter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"triangle3_incenter.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/triangle/triangle3_incenter.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,2CAbW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,GAAC,UAAU,MAAM,CAAC,iBACpD,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACJ,OAAO,CA4CnB"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Calculates the incenter of a triangle.
3
+ *
4
+ * @see https://en.wikipedia.org/wiki/Incenter
5
+ * @param {number[]|Float32Array|Float64Array|ArrayLike<number>} output
6
+ * @param {number} output_offset
7
+ * @param {number} x0
8
+ * @param {number} y0
9
+ * @param {number} z0
10
+ * @param {number} x1
11
+ * @param {number} y1
12
+ * @param {number} z1
13
+ * @param {number} x2
14
+ * @param {number} y2
15
+ * @param {number} z2
16
+ * @returns {boolean} true when the result was calculated, false for degenerate triangle
17
+ */
18
+ export function triangle3_incenter(
19
+ output, output_offset,
20
+ x0, y0, z0,
21
+ x1, y1, z1,
22
+ x2, y2, z2
23
+ ) {
24
+ // Calculate edge lengths opposite to each vertex
25
+
26
+ // 'a' is length of edge v1-v2 (opposite v0)
27
+ const dxA = x2 - x1;
28
+ const dyA = y2 - y1;
29
+ const dzA = z2 - z1;
30
+
31
+ const a = Math.sqrt(dxA * dxA + dyA * dyA + dzA * dzA);
32
+
33
+ // 'b' is length of edge v2-v0 (opposite v1)
34
+ const dxB = x0 - x2;
35
+ const dyB = y0 - y2;
36
+ const dzB = z0 - z2;
37
+
38
+ const b = Math.sqrt(dxB * dxB + dyB * dyB + dzB * dzB);
39
+
40
+ // 'c' is length of edge v0-v1 (opposite v2)
41
+ const dxC = x1 - x0;
42
+ const dyC = y1 - y0;
43
+ const dzC = z1 - z0;
44
+
45
+ const c = Math.sqrt(dxC * dxC + dyC * dyC + dzC * dzC);
46
+
47
+ const perimeter = a + b + c;
48
+
49
+ if (perimeter <= 0) {
50
+ // 0 perimeter triangle
51
+ return false;
52
+ }
53
+
54
+ output[output_offset] = (a * x0 + b * x1 + c * x2) / perimeter;
55
+ output[output_offset + 1] = (a * y0 + b * y1 + c * y2) / perimeter;
56
+ output[output_offset + 2] = (a * z0 + b * z1 + c * z2) / perimeter;
57
+
58
+ return true;
59
+
60
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Excellent 32bit hash function.
3
+ *
4
+ * Based on work by TheIronBorn circa 2022.
5
+ * @param {number} v
6
+ * @returns {number}
7
+ */
8
+ export function lowbias32(v: number): number;
9
+ //# sourceMappingURL=lowbias32.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lowbias32.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/hash/lowbias32.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,6BAHW,MAAM,GACJ,MAAM,CAclB"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Excellent 32bit hash function.
3
+ *
4
+ * Based on work by TheIronBorn circa 2022.
5
+ * @param {number} v
6
+ * @returns {number}
7
+ */
8
+ export function lowbias32(v) {
9
+
10
+ let x = v;
11
+
12
+ x ^= x >>> 16;
13
+ x = Math.imul(x, 0x21f0aaad);
14
+ x ^= x >>> 15;
15
+ x = Math.imul(x, 0xd35a2d97)
16
+ x ^= x >>> 15;
17
+
18
+ return x >>> 0;
19
+
20
+ }
@@ -2,10 +2,10 @@
2
2
  *
3
3
  * @param {string} name
4
4
  * @param {Iterator} iterator
5
- * @param {(TaskSignal.Continue)|(TaskSignal.Yield)} [cycle_signal] what to signal at the end of each iteration, Continue will provide better throughput, whereas Yield will produce very low load on the CPU
5
+ * @param {TaskSignal} [cycle_signal] what to signal at the end of each iteration, Continue will provide better throughput, whereas Yield will produce very low load on the CPU
6
6
  * @returns {Task}
7
7
  */
8
- export function iteratorTask(name: string, iterator: Iterator<any, any, undefined>, cycle_signal?: (TaskSignal.Continue) | (TaskSignal.Yield)): Task;
8
+ export function iteratorTask(name: string, iterator: Iterator<any, any, undefined>, cycle_signal?: TaskSignal): Task;
9
9
  import { TaskSignal } from "../TaskSignal.js";
10
10
  import Task from "../Task.js";
11
11
  //# sourceMappingURL=iteratorTask.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"iteratorTask.d.ts","sourceRoot":"","sources":["../../../../../../src/core/process/task/util/iteratorTask.js"],"names":[],"mappings":"AAKA;;;;;;GAMG;AACH,mCALW,MAAM,0DAEN,CAAC,WAAW,QAAQ,CAAC,GAAC,CAAC,WAAW,KAAK,CAAC,GACtC,IAAI,CAoBhB;2BA7B0B,kBAAkB;iBAD5B,YAAY"}
1
+ {"version":3,"file":"iteratorTask.d.ts","sourceRoot":"","sources":["../../../../../../src/core/process/task/util/iteratorTask.js"],"names":[],"mappings":"AAKA;;;;;;GAMG;AACH,mCALW,MAAM,0DAEN,UAAU,GACR,IAAI,CAoBhB;2BA3B0B,kBAAkB;iBAD5B,YAAY"}
@@ -1,13 +1,13 @@
1
- import Task from "../Task.js";
2
- import { TaskSignal } from "../TaskSignal.js";
3
1
  import { assert } from "../../../assert.js";
4
2
  import { anyOf, equalTo } from "../../../debug/matchers/matchers.js";
3
+ import Task from "../Task.js";
4
+ import { TaskSignal } from "../TaskSignal.js";
5
5
 
6
6
  /**
7
7
  *
8
8
  * @param {string} name
9
9
  * @param {Iterator} iterator
10
- * @param {(TaskSignal.Continue)|(TaskSignal.Yield)} [cycle_signal] what to signal at the end of each iteration, Continue will provide better throughput, whereas Yield will produce very low load on the CPU
10
+ * @param {TaskSignal} [cycle_signal] what to signal at the end of each iteration, Continue will provide better throughput, whereas Yield will produce very low load on the CPU
11
11
  * @returns {Task}
12
12
  */
13
13
  export function iteratorTask(name, iterator, cycle_signal = TaskSignal.Continue) {
@@ -1 +1 @@
1
- {"version":3,"file":"distrubuteParticlesOnMesh.d.ts","sourceRoot":"","sources":["../../../../../../../../src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.js"],"names":[],"mappings":"AAOA;;;;;;GAMG;AACH,mDALW,eAAe,QACf,kBAAgB,kCAEhB,MAAM,QA0BhB;AAGD;;;;;;;;GAQG;AACH,8CAPW,MAAM,8CAGN,MAAM,+CA6IhB;gCAxL+B,+BAA+B"}
1
+ {"version":3,"file":"distrubuteParticlesOnMesh.d.ts","sourceRoot":"","sources":["../../../../../../../../src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.js"],"names":[],"mappings":"AAOA;;;;;;GAMG;AACH,mDALW,eAAe,QACf,kBAAgB,kCAEhB,MAAM,QA0BhB;AAGD;;;;;;;;GAQG;AACH,8CAPW,MAAM,8CAGN,MAAM,+CA6IhB;gCAvL+B,+BAA+B"}
@@ -1,9 +1,9 @@
1
+ import { roundFair } from "../../../../../../core/math/random/roundFair.js";
1
2
  import { seededRandom } from "../../../../../../core/math/random/seededRandom.js";
2
- import { ParticleEmitterFlag } from "../emitter/ParticleEmitterFlag.js";
3
3
  import { computeMeshSurfaceArea } from "../../../../geometry/computeMeshSurfaceArea.js";
4
- import { ParticleEmitter } from "../emitter/ParticleEmitter.js";
5
4
  import { computeSkinnedMeshVertices } from "../../../../geometry/skining/computeSkinnedMeshVertices.js";
6
- import { roundFair } from "../../../../../../core/math/random/roundFair.js";
5
+ import { ParticleEmitter } from "../emitter/ParticleEmitter.js";
6
+ import { ParticleEmitterFlag } from "../emitter/ParticleEmitterFlag.js";
7
7
 
8
8
  /**
9
9
  *
@@ -144,7 +144,7 @@ export function distributePointsOnMesh(count, mesh, transform, randomSeed, callb
144
144
  const cy = points[c3 + 1];
145
145
  const cz = points[c3 + 2];
146
146
 
147
- //pick random point on the triangle
147
+ // pick random point on the triangle using barycentric coordinates
148
148
  // method from here: https://math.stackexchange.com/questions/538458/triangle-point-picking-in-3d
149
149
  const cax = cx - ax;
150
150
  const cay = cy - ay;
@@ -1,8 +1,8 @@
1
+ import {
2
+ line3_compute_segment_point_distance_sqr
3
+ } from "../../../../../core/geom/3d/line/line3_compute_segment_point_distance_sqr.js";
1
4
  import { v3_distance_sqr } from "../../../../../core/geom/vec3/v3_distance_sqr.js";
2
5
  import { biplanar_edge_mapping, triplanar_corner_mapping } from "./cube_mapping.js";
3
- import {
4
- line3_computeSegmentPointDistance_sqr
5
- } from "../../../../../core/geom/3d/line/line3_computeSegmentPointDistance_sqr.js";
6
6
 
7
7
  /**
8
8
  *
@@ -67,7 +67,7 @@ export function detailed_sphere_frustum_intersection_test(
67
67
  const point_1_y = points[corner_address_1 + 1];
68
68
  const point_1_z = points[corner_address_1 + 2];
69
69
 
70
- const distance_to_frustum_sqr = line3_computeSegmentPointDistance_sqr(
70
+ const distance_to_frustum_sqr = line3_compute_segment_point_distance_sqr(
71
71
  point_0_x, point_0_y, point_0_z,
72
72
  point_1_x, point_1_y, point_1_z,
73
73
  light_x, light_y, light_z