@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
@@ -1,17 +1,16 @@
1
1
  import { NULL_POINTER } from "../BinaryTopology.js";
2
- import { bt_edge_get_or_create } from "./bt_edge_get_or_create.js";
3
-
2
+ import { bt_edge_get_or_create } from "./edge/bt_edge_get_or_create.js";
4
3
 
5
4
  /**
6
- * Populates supplied topology with data from supplied indexed geometry
5
+ * Populates supplied topology with data from supplied indexed geometry (triangles)
7
6
  * @see https://github.com/blender/blender/blob/9cb061f4f0119e647173e7d354e1457e97632333/source/blender/blenkernel/intern/mesh_calc_edges.cc
8
7
  * @see https://github.com/blender/blender/blob/9cb061f4f0119e647173e7d354e1457e97632333/source/blender/io/stl/importer/stl_import_mesh.cc#L63
9
8
  * @param {BinaryTopology} out
10
- * @param {number[]} indices
11
- * @param {number[]} vertex_positions
12
- * @param {number[]} [vertex_normals]
9
+ * @param {number[]|Uint32Array|Uint16Array|Uint8Array} indices
10
+ * @param {number[]|Float32Array} vertex_positions
11
+ * @param {number[]|Float32Array} [vertex_normals] Optional vertex normals. Can be skipped.
13
12
  */
14
- export function bt_index_geometry_to_topology(
13
+ export function bt_mesh_from_indexed_geometry(
15
14
  out,
16
15
  indices,
17
16
  vertex_positions,
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Populates supplied topology with data from supplied unindexed geometry (triangles)
3
+ * @param {BinaryTopology} out
4
+ * @param {number[]} vertex_positions
5
+ * @param {number[]} [vertex_normals] Optional vertex normals. Can be skipped.
6
+ */
7
+ export function bt_mesh_from_unindexed_geometry(out: BinaryTopology, vertex_positions: number[], vertex_normals?: number[]): void;
8
+ //# sourceMappingURL=bt_mesh_from_unindexed_geometry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bt_mesh_from_unindexed_geometry.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/core/geom/3d/topology/struct/binary/io/bt_mesh_from_unindexed_geometry.js"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,uFAHW,MAAM,EAAE,mBACR,MAAM,EAAE,QAuBlB"}
@@ -0,0 +1,31 @@
1
+ import { assert } from "../../../../../../assert.js";
2
+ import { bt_mesh_from_indexed_geometry } from "./bt_mesh_from_indexed_geometry.js";
3
+
4
+ /**
5
+ * Populates supplied topology with data from supplied unindexed geometry (triangles)
6
+ * @param {BinaryTopology} out
7
+ * @param {number[]} vertex_positions
8
+ * @param {number[]} [vertex_normals] Optional vertex normals. Can be skipped.
9
+ */
10
+ export function bt_mesh_from_unindexed_geometry(
11
+ out,
12
+ vertex_positions,
13
+ vertex_normals,
14
+ ) {
15
+
16
+ const triangle_count = vertex_positions.length / 9;
17
+
18
+ assert.isNonNegativeInteger(triangle_count, 'triangle_count');
19
+
20
+ const indices = new Uint32Array(triangle_count * 3);
21
+ for (let i = 0; i < indices.length; i++) {
22
+ indices[i] = i;
23
+ }
24
+
25
+ return bt_mesh_from_indexed_geometry(
26
+ out,
27
+ indices,
28
+ vertex_positions,
29
+ vertex_normals
30
+ );
31
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Convert all non-triangular faces into triangles.
3
+ *
4
+ * @param {BinaryTopology} mesh
5
+ */
6
+ export function bt_mesh_triangulate(mesh: BinaryTopology): void;
7
+ //# sourceMappingURL=bt_mesh_triangulate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bt_mesh_triangulate.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/core/geom/3d/topology/struct/binary/io/bt_mesh_triangulate.js"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,gEAcC"}
@@ -0,0 +1,22 @@
1
+ import { bt_face_triangulate } from "./face/bt_face_triangulate.js";
2
+
3
+ /**
4
+ * Convert all non-triangular faces into triangles.
5
+ *
6
+ * @param {BinaryTopology} mesh
7
+ */
8
+ export function bt_mesh_triangulate(mesh) {
9
+
10
+ const faces = mesh.faces;
11
+
12
+ const face_count = faces.size;
13
+
14
+ for (let face_id = 0; face_id < face_count; face_id++) {
15
+ if (!faces.is_allocated(face_id)) {
16
+ continue;
17
+ }
18
+
19
+ bt_face_triangulate(mesh, face_id);
20
+ }
21
+
22
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Adds a loop to an edge's radial cycle.
3
+ * @param {BinaryTopology} mesh
4
+ * @param {number} loop Loop ID
5
+ * @param {number} edge Edge ID
6
+ */
7
+ export function bt_radial_loop_add(mesh: BinaryTopology, loop: number, edge: number): void;
8
+ //# sourceMappingURL=bt_radial_loop_add.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bt_radial_loop_add.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/core/geom/3d/topology/struct/binary/io/bt_radial_loop_add.js"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,+DAHW,MAAM,QACN,MAAM,QAyBhB"}
@@ -0,0 +1,32 @@
1
+ import { NULL_POINTER } from "../BinaryTopology.js";
2
+
3
+ /**
4
+ * Adds a loop to an edge's radial cycle.
5
+ * @param {BinaryTopology} mesh
6
+ * @param {number} loop Loop ID
7
+ * @param {number} edge Edge ID
8
+ */
9
+ export function bt_radial_loop_add(mesh, loop, edge) {
10
+ // Associate the loop with the edge
11
+ mesh.loop_write_edge(loop, edge);
12
+
13
+ const base_loop = mesh.edge_read_loop(edge);
14
+
15
+ if (base_loop === NULL_POINTER) {
16
+ // First loop on this edge
17
+ mesh.edge_write_loop(edge, loop);
18
+ mesh.loop_write_radial_next(loop, loop);
19
+ mesh.loop_write_radial_prev(loop, loop);
20
+ } else {
21
+ // Splice into existing cycle just before the base_loop
22
+ const base_prev = mesh.loop_read_radial_prev(base_loop);
23
+
24
+ // Link base_prev -> loop
25
+ mesh.loop_write_radial_next(base_prev, loop);
26
+ mesh.loop_write_radial_prev(loop, base_prev);
27
+
28
+ // Link loop -> base_loop
29
+ mesh.loop_write_radial_next(loop, base_loop);
30
+ mesh.loop_write_radial_prev(base_loop, loop);
31
+ }
32
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Removes a loop from an edge's radial cycle.
3
+ * @param {BinaryTopology} mesh
4
+ * @param {number} loop Loop ID
5
+ * @param {number} edge Edge ID
6
+ */
7
+ export function bt_radial_loop_remove(mesh: BinaryTopology, loop: number, edge: number): void;
8
+ //# sourceMappingURL=bt_radial_loop_remove.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bt_radial_loop_remove.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/core/geom/3d/topology/struct/binary/io/bt_radial_loop_remove.js"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,kEAHW,MAAM,QACN,MAAM,QAmBhB"}
@@ -0,0 +1,26 @@
1
+ import { NULL_POINTER } from "../BinaryTopology.js";
2
+
3
+ /**
4
+ * Removes a loop from an edge's radial cycle.
5
+ * @param {BinaryTopology} mesh
6
+ * @param {number} loop Loop ID
7
+ * @param {number} edge Edge ID
8
+ */
9
+ export function bt_radial_loop_remove(mesh, loop, edge) {
10
+ const r_prev = mesh.loop_read_radial_prev(loop);
11
+ const r_next = mesh.loop_read_radial_next(loop);
12
+
13
+ // Bypass the loop in the doubly linked list
14
+ mesh.loop_write_radial_next(r_prev, r_next);
15
+ mesh.loop_write_radial_prev(r_next, r_prev);
16
+
17
+ // If the edge's base pointer is looking at the loop being removed
18
+ if (mesh.edge_read_loop(edge) === loop) {
19
+ // If it was the only loop, set to NULL. Otherwise, advance to the next loop.
20
+ mesh.edge_write_loop(edge, r_next === loop ? NULL_POINTER : r_next);
21
+ }
22
+
23
+ // Reset the removed loop's radial pointers to itself for safety
24
+ mesh.loop_write_radial_next(loop, loop);
25
+ mesh.loop_write_radial_prev(loop, loop);
26
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrderedEdge.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/core/geom/3d/topology/struct/binary/io/edge/OrderedEdge.js"],"names":[],"mappings":"AAEA;IACI;;;;OAIG;IACH,gBAHW,MAAM,MACN,MAAM,EAUhB;IANO,cAAe;IACf,eAAgB;IAOxB;;;;OAIG;IACH,QAHW,MAAM,MACN,MAAM,QAUhB;IAED;;;OAGG;IACH,YAFW,WAAW,QAKrB;IAED,qBAEC;IAED;;;OAGG;IACH,QAFY,MAAM,CAKjB;IAED;;;;OAIG;IACH,cAHW,WAAW,GACT,OAAO,CAMnB;CACJ"}
@@ -1,4 +1,4 @@
1
- import { split_by_2 } from "../../../../../../binary/split_by_2.js";
1
+ import { split_by_2 } from "../../../../../../../binary/split_by_2.js";
2
2
 
3
3
  export class OrderedEdge {
4
4
  /**
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bt_edge_create.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_create.js"],"names":[],"mappings":"AA8DA;;;;;;GAMG;AACH,yDAJW,MAAM,MACN,MAAM,GACL,MAAM,CAsCjB"}
@@ -1,4 +1,4 @@
1
- import { NULL_POINTER } from "../BinaryTopology.js";
1
+ import { NULL_POINTER } from "../../BinaryTopology.js";
2
2
 
3
3
  /**
4
4
  *
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bt_edge_get_or_create.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_get_or_create.js"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,gEAJW,MAAM,MACN,MAAM,GACJ,MAAM,CAmClB"}
@@ -1,4 +1,4 @@
1
- import { NULL_POINTER } from "../BinaryTopology.js";
1
+ import { NULL_POINTER } from "../../BinaryTopology.js";
2
2
  import { bt_edge_create } from "./bt_edge_create.js";
3
3
 
4
4
  /**
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bt_edge_kill.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_kill.js"],"names":[],"mappings":"AAMA;;;GAGG;AACH,sDAFW,MAAM,QAoBhB"}
@@ -1,6 +1,7 @@
1
- import { NULL_POINTER } from "../BinaryTopology.js";
2
- import { bt_disk_edge_remove } from "./bt_disk_edge_remove.js";
3
- import { bt_face_kill } from "./bt_face_kill.js";
1
+ import { assert } from "../../../../../../../assert.js";
2
+ import { NULL_POINTER } from "../../BinaryTopology.js";
3
+ import { bt_disk_edge_remove } from "../bt_disk_edge_remove.js";
4
+ import { bt_face_kill } from "../face/bt_face_kill.js";
4
5
  import { bt_kill_only_edge } from "./bt_kill_only_edge.js";
5
6
 
6
7
  /**
@@ -8,6 +9,8 @@ import { bt_kill_only_edge } from "./bt_kill_only_edge.js";
8
9
  * @param {number} e
9
10
  */
10
11
  export function bt_edge_kill(mesh, e) {
12
+ assert.isNonNegativeInteger(e, 'e');
13
+
11
14
  let l = NULL_POINTER;
12
15
 
13
16
  while ((l = mesh.edge_read_loop(e)) !== NULL_POINTER) {
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Splits an edge at parameter t and triangulates adjacent faces.
3
+ *
4
+ * NOTE: Assumes that the input mesh is triangulated.
5
+ * NOTE: Does not check for created self-intersections or degenerate edges/faces. Make sure that if you pass t <= 0 or t >= 1 - you understand the implications.
6
+ *
7
+ * @param {BinaryTopology} mesh
8
+ * @param {number} edge_id The edge to split
9
+ * @param {number} t Interpolation parameter (0.0 to 1.0)
10
+ * @returns {number} The newly created vertex ID
11
+ */
12
+ export function bt_edge_split(mesh: BinaryTopology, edge_id: number, t: number): number;
13
+ //# sourceMappingURL=bt_edge_split.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bt_edge_split.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_split.js"],"names":[],"mappings":"AAoBA;;;;;;;;;;GAUG;AACH,6DAJW,MAAM,KACN,MAAM,GACJ,MAAM,CAsJlB"}
@@ -0,0 +1,180 @@
1
+ import { assert } from "../../../../../../../assert.js";
2
+ import { NULL_POINTER } from "../../BinaryTopology.js";
3
+ import { bt_disk_edge_add } from "../bt_disk_edge_add.js";
4
+ import { bt_disk_edge_remove } from "../bt_disk_edge_remove.js";
5
+ import { bt_radial_loop_add } from "../bt_radial_loop_add.js";
6
+ import { bt_radial_loop_remove } from "../bt_radial_loop_remove.js";
7
+ import { bt_edge_create } from "./bt_edge_create.js";
8
+
9
+
10
+ const f_normal = new Float32Array(3);
11
+
12
+ const c1 = new Float32Array(3);
13
+ const c2 = new Float32Array(3);
14
+
15
+ const n1 = new Float32Array(3);
16
+ const n2 = new Float32Array(3);
17
+
18
+ const c_new = new Float32Array(3);
19
+ const n_new = new Float32Array(3);
20
+
21
+ /**
22
+ * Splits an edge at parameter t and triangulates adjacent faces.
23
+ *
24
+ * NOTE: Assumes that the input mesh is triangulated.
25
+ * NOTE: Does not check for created self-intersections or degenerate edges/faces. Make sure that if you pass t <= 0 or t >= 1 - you understand the implications.
26
+ *
27
+ * @param {BinaryTopology} mesh
28
+ * @param {number} edge_id The edge to split
29
+ * @param {number} t Interpolation parameter (0.0 to 1.0)
30
+ * @returns {number} The newly created vertex ID
31
+ */
32
+ export function bt_edge_split(
33
+ mesh,
34
+ edge_id,
35
+ t
36
+ ) {
37
+ assert.isNonNegativeInteger(edge_id, 'edge_id');
38
+ assert.isNumber(t, 't');
39
+ assert.greaterThanOrEqual(t, 0, 't');
40
+ assert.lessThanOrEqual(t, 1, 't');
41
+
42
+ assert.defined(mesh, 'mesh');
43
+ assert.notNull(mesh, 'mesh');
44
+
45
+ const v1 = mesh.edge_read_vertex1(edge_id);
46
+ const v2 = mesh.edge_read_vertex2(edge_id);
47
+
48
+ // ----------------------------------------------------------------
49
+ // 1. Interpolate and Create New Vertex
50
+ // ----------------------------------------------------------------
51
+
52
+ mesh.vertex_read_coordinate(c1, 0, v1);
53
+ mesh.vertex_read_coordinate(c2, 0, v2);
54
+
55
+ c_new[0] = c1[0] + (c2[0] - c1[0]) * t;
56
+ c_new[1] = c1[1] + (c2[1] - c1[1]) * t;
57
+ c_new[2] = c1[2] + (c2[2] - c1[2]) * t;
58
+
59
+ mesh.vertex_read_normal(n1, 0, v1);
60
+ mesh.vertex_read_normal(n2, 0, v2);
61
+
62
+ n_new[0] = n1[0] + (n2[0] - n1[0]) * t;
63
+ n_new[1] = n1[1] + (n2[1] - n1[1]) * t;
64
+ n_new[2] = n1[2] + (n2[2] - n1[2]) * t;
65
+
66
+ const len = Math.sqrt(n_new[0] ** 2 + n_new[1] ** 2 + n_new[2] ** 2);
67
+ if (len > 0) {
68
+ n_new[0] /= len;
69
+ n_new[1] /= len;
70
+ n_new[2] /= len;
71
+ }
72
+
73
+ const v_new = mesh.vertices.allocate();
74
+ mesh.vertex_write_coordinate(v_new, c_new, 0);
75
+ mesh.vertex_write_normal(v_new, n_new, 0);
76
+ mesh.vertex_write_edge(v_new, NULL_POINTER); // Initialize disk cycle
77
+
78
+ // ----------------------------------------------------------------
79
+ // 2. Gather Connected Faces (Radial Cycle)
80
+ // ----------------------------------------------------------------
81
+ const loops_to_split = [];
82
+ let curr_loop = mesh.edge_read_loop(edge_id);
83
+ if (curr_loop !== NULL_POINTER) {
84
+ let start_loop = curr_loop;
85
+ do {
86
+ loops_to_split.push(curr_loop);
87
+ curr_loop = mesh.loop_read_radial_next(curr_loop);
88
+ } while (curr_loop !== start_loop && curr_loop !== NULL_POINTER);
89
+ }
90
+
91
+ // ----------------------------------------------------------------
92
+ // 3. Split the Edge Topologically
93
+ // ----------------------------------------------------------------
94
+ // Shrink original edge to (v1, v_new)
95
+ bt_disk_edge_remove(mesh, edge_id, v2);
96
+ mesh.edge_write_vertex2(edge_id, v_new);
97
+ bt_disk_edge_add(mesh, edge_id, v_new);
98
+
99
+ // Create new edge for (v_new, v2)
100
+ // Note: bt_edge_create handles the disk cycle attachments for us!
101
+ const e_new = bt_edge_create(mesh, v_new, v2);
102
+
103
+ // ----------------------------------------------------------------
104
+ // 4. Split Adjacent Faces
105
+ // ----------------------------------------------------------------
106
+
107
+
108
+ for (let i = 0; i < loops_to_split.length; i++) {
109
+ const l_start = loops_to_split[i];
110
+ const l_end = mesh.loop_read_next(l_start);
111
+ const l_opp = mesh.loop_read_next(l_end);
112
+
113
+ const v_start = mesh.loop_read_vertex(l_start);
114
+ const v_end = mesh.loop_read_vertex(l_end);
115
+ const v_opp = mesh.loop_read_vertex(l_opp);
116
+
117
+ const f = mesh.loop_read_face(l_start);
118
+ mesh.face_read_normal(f_normal, 0, f);
119
+
120
+ const e_end_opp = mesh.loop_read_edge(l_end);
121
+
122
+ // Determine which physical edge corresponds to this loop's direction
123
+ const is_start_v1 = (v_start === v1);
124
+ const edge_start_new = is_start_v1 ? edge_id : e_new;
125
+ const edge_new_end = is_start_v1 ? e_new : edge_id;
126
+
127
+ // Create the cross edge dividing the triangle
128
+ const e_cross = bt_edge_create(mesh, v_new, v_opp);
129
+
130
+ // --- FACE 1: Re-use existing face (v_start, v_new, v_opp) ---
131
+
132
+ // Update l_start (ensure it points to the correct half of the split edge)
133
+ if (mesh.loop_read_edge(l_start) !== edge_start_new) {
134
+ bt_radial_loop_remove(mesh, l_start, mesh.loop_read_edge(l_start));
135
+ bt_radial_loop_add(mesh, l_start, edge_start_new);
136
+ }
137
+
138
+ // Update l_end (now acts as the loop for v_new -> v_opp)
139
+ bt_radial_loop_remove(mesh, l_end, e_end_opp);
140
+ mesh.loop_write_vertex(l_end, v_new);
141
+ bt_radial_loop_add(mesh, l_end, e_cross);
142
+
143
+ // l_opp remains unchanged (v_opp -> v_start)
144
+
145
+ // --- FACE 2: Create new face (v_new, v_end, v_opp) ---
146
+ const f2 = mesh.faces.allocate();
147
+ mesh.face_write_normal(f2, f_normal, 0);
148
+
149
+ const nl1 = mesh.loop_create();
150
+ const nl2 = mesh.loop_create();
151
+ const nl3 = mesh.loop_create();
152
+
153
+ // nl1: v_new -> v_end
154
+ mesh.loop_write_vertex(nl1, v_new);
155
+ mesh.loop_write_face(nl1, f2);
156
+ bt_radial_loop_add(mesh, nl1, edge_new_end);
157
+
158
+ // nl2: v_end -> v_opp
159
+ mesh.loop_write_vertex(nl2, v_end);
160
+ mesh.loop_write_face(nl2, f2);
161
+ bt_radial_loop_add(mesh, nl2, e_end_opp);
162
+
163
+ // nl3: v_opp -> v_new
164
+ mesh.loop_write_vertex(nl3, v_opp);
165
+ mesh.loop_write_face(nl3, f2);
166
+ bt_radial_loop_add(mesh, nl3, e_cross);
167
+
168
+ // Wire up loops for f2
169
+ mesh.loop_write_next(nl1, nl2);
170
+ mesh.loop_write_prev(nl1, nl3);
171
+ mesh.loop_write_next(nl2, nl3);
172
+ mesh.loop_write_prev(nl2, nl1);
173
+ mesh.loop_write_next(nl3, nl1);
174
+ mesh.loop_write_prev(nl3, nl2);
175
+
176
+ mesh.face_write_loop(f2, nl1);
177
+ }
178
+
179
+ return v_new;
180
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bt_kill_only_edge.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/core/geom/3d/topology/struct/binary/io/edge/bt_kill_only_edge.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,2DAFW,MAAM,QAIhB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bt_mesh_calc_edges.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/core/geom/3d/topology/struct/binary/io/edge/bt_mesh_calc_edges.js"],"names":[],"mappings":""}
@@ -1,26 +1,29 @@
1
+ import { HashSet } from "../../../../../../../collection/set/HashSet.js";
1
2
  import { OrderedEdge } from "./OrderedEdge.js";
2
- import { HashMap } from "../../../../../../collection/map/HashMap.js";
3
3
 
4
4
  /**
5
5
  * @see https://github.com/blender/blender/blob/9cb061f4f0119e647173e7d354e1457e97632333/source/blender/blenkernel/intern/mesh_calc_edges.cc#L209
6
6
  * @param {BinaryTopology} mesh
7
+ * @returns {HashSet<OrderedEdge>}
7
8
  */
8
9
  function bt_mesh_calc_edges(mesh) {
9
10
  /**
10
11
  *
11
- * @type {HashMap<OrderedEdge, unknown>}
12
+ * @type {HashSet<OrderedEdge>}
12
13
  */
13
- const map = new HashMap();
14
+ const collection = new HashSet();
14
15
 
15
- add_polygon_edges_to_map(mesh, map);
16
+ add_polygon_edges_to_map(mesh, collection);
17
+
18
+ return collection;
16
19
  }
17
20
 
18
21
  /**
19
22
  * @see https://github.com/blender/blender/blob/9cb061f4f0119e647173e7d354e1457e97632333/source/blender/blenkernel/intern/mesh_calc_edges.cc#L96
20
23
  * @param {BinaryTopology} mesh
21
- * @param {HashMap<OrderedEdge,*>} edge_map
24
+ * @param {HashSet<OrderedEdge>} edge_set
22
25
  */
23
- function add_polygon_edges_to_map(mesh, edge_map) {
26
+ function add_polygon_edges_to_map(mesh, edge_set) {
24
27
 
25
28
  const faces = mesh.faces;
26
29
  const face_count = faces.size;
@@ -42,7 +45,7 @@ function add_polygon_edges_to_map(mesh, edge_map) {
42
45
 
43
46
  const edge = new OrderedEdge(prev_v, next_v);
44
47
 
45
- edge_map.getOrSet(edge, null);
48
+ edge_set.ensure(edge);
46
49
 
47
50
  prev_loop = loop;
48
51
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get_or_create_edge_map.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/core/geom/3d/topology/struct/binary/io/edge/get_or_create_edge_map.js"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Safely removes a face from the topology.
3
+ * Iteratively untangles and frees all its loops, then releases the face memory.
4
+ * @param {BinaryTopology} mesh
5
+ * @param {number} f Face ID
6
+ */
7
+ export function bt_face_kill(mesh: BinaryTopology, f: number): void;
8
+ //# sourceMappingURL=bt_face_kill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bt_face_kill.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/core/geom/3d/topology/struct/binary/io/face/bt_face_kill.js"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,sDAFW,MAAM,QAiBhB"}
@@ -0,0 +1,26 @@
1
+ import { assert } from "../../../../../../../assert.js";
2
+ import { NULL_POINTER } from "../../BinaryTopology.js";
3
+ import { bt_loop_kill } from "../bt_loop_kill.js";
4
+
5
+ /**
6
+ * Safely removes a face from the topology.
7
+ * Iteratively untangles and frees all its loops, then releases the face memory.
8
+ * @param {BinaryTopology} mesh
9
+ * @param {number} f Face ID
10
+ */
11
+ export function bt_face_kill(mesh, f) {
12
+ assert.isNonNegativeInteger(f, 'f');
13
+
14
+ let l = NULL_POINTER;
15
+
16
+ // TODO add a cycle limit to avoid infinite loops on bad topologies
17
+
18
+ // bt_loop_kill automatically updates the face's base loop pointer to the
19
+ // next loop, or to NULL_POINTER if it's the last loop in the cycle.
20
+ while ((l = mesh.face_read_loop(f)) !== NULL_POINTER) {
21
+ bt_loop_kill(mesh, l);
22
+ }
23
+
24
+ // With all loops removed, the face is completely isolated and can be freed
25
+ mesh.faces.release(f);
26
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Pokes a face by adding a vertex at the specified coordinates and fan-tessellating the face.
3
+ * Reuses bt_edge_create to handle the complex vertex-disk linking automatically.
4
+ *
5
+ * Coordinates of the new vertex must be co-planar with the face.
6
+ *
7
+ * @param {BinaryTopology} mesh
8
+ * @param {number} face_id
9
+ * @param {number} x
10
+ * @param {number} y
11
+ * @param {number} z
12
+ * @returns {number} vertex ID of the new center vertex, NULL_POINTER if face is degenerate or does not exist.
13
+ */
14
+ export function bt_mesh_face_poke(mesh: BinaryTopology, face_id: number, x: number, y: number, z: number): number;
15
+ //# sourceMappingURL=bt_face_poke.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bt_face_poke.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/core/geom/3d/topology/struct/binary/io/face/bt_face_poke.js"],"names":[],"mappings":"AAMA;;;;;;;;;;;;GAYG;AACH,iEANW,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,GACJ,MAAM,CAuGlB"}