gps-plus-slam-app-framework 1.11.0 → 1.13.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 (248) hide show
  1. package/README.md +13 -14
  2. package/dist/{app-selectors-DG0ZqaeI.d.ts → app-selectors-QM0ZpNA4.d.ts} +1 -1
  3. package/dist/ar/ar-crash-isolation.d.ts +1 -1
  4. package/dist/ar/bresenham3d.d.ts +1 -1
  5. package/dist/ar/camera-blit-capture.d.ts +1 -1
  6. package/dist/ar/capability-checker.d.ts +1 -1
  7. package/dist/ar/capture-failure-tracker.d.ts +1 -1
  8. package/dist/ar/capture-motion-gate.d.ts +1 -1
  9. package/dist/ar/chromium-camera-access-workaround.d.ts +1 -1
  10. package/dist/ar/depth-grid-lookup.d.ts +1 -1
  11. package/dist/ar/depth-occluder.d.ts +1 -1
  12. package/dist/ar/depth-sampler.d.ts +3 -3
  13. package/dist/ar/depth-sampler.js +28 -1
  14. package/dist/ar/depth-unprojection.d.ts +1 -1
  15. package/dist/ar/enable-gps-ar.d.ts +1 -1
  16. package/dist/ar/enable-gps-ar.js +20 -5
  17. package/dist/ar/frame-loop.d.ts +1 -1
  18. package/dist/ar/hit-test-reticle-driver.d.ts +2 -0
  19. package/dist/ar/hit-test-reticle-driver.js +122 -0
  20. package/dist/ar/image-capture.d.ts +1 -1
  21. package/dist/ar/image-capture.js +1 -1
  22. package/dist/ar/image-quality.d.ts +1 -1
  23. package/dist/ar/index.d.ts +35 -34
  24. package/dist/ar/index.js +5 -4
  25. package/dist/ar/occlusion-mesh-worker.d.ts +2 -2
  26. package/dist/ar/occlusion-mesh-worker.js +6 -4
  27. package/dist/ar/occupancy-grid.d.ts +2 -2
  28. package/dist/ar/occupancy-grid.js +191 -11
  29. package/dist/ar/occupancy-mesher.d.ts +1 -1
  30. package/dist/ar/occupancy-mesher.js +1 -636
  31. package/dist/ar/qr/index.d.ts +10 -10
  32. package/dist/ar/qr/planar-pnp.d.ts +1 -1
  33. package/dist/ar/qr/qr-debug-view.d.ts +1 -1
  34. package/dist/ar/qr/qr-derived-pose.d.ts +1 -1
  35. package/dist/ar/qr/qr-detection-controller.d.ts +1 -1
  36. package/dist/ar/qr/qr-frontend.d.ts +1 -1
  37. package/dist/ar/qr/qr-pose.d.ts +1 -1
  38. package/dist/ar/qr/qr-size-depth-context.d.ts +2 -2
  39. package/dist/ar/qr/qr-size-measurer.d.ts +1 -1
  40. package/dist/ar/replay-scene.d.ts +1 -1
  41. package/dist/ar/replay-scene.js +1 -1
  42. package/dist/ar/scene-node-names.d.ts +1 -1
  43. package/dist/ar/webxr-nue-basis.d.ts +1 -1
  44. package/dist/ar/webxr-session.d.ts +3 -3
  45. package/dist/ar/webxr-session.js +1 -1
  46. package/dist/ar/xr-camera-texture.d.ts +1 -1
  47. package/dist/ar/xr-error-handler.d.ts +1 -1
  48. package/dist/ar/xr-frame-loop.d.ts +1 -1
  49. package/dist/{ar-world-group-alignment-BdS_h8Nf.d.ts → ar-world-group-alignment-CvvfACfx.d.ts} +1 -1
  50. package/dist/{cell-key-Bj-eYTLA.js → cell-key-D1b_Ix-p.js} +12 -1
  51. package/dist/core/index.d.ts +1 -1
  52. package/dist/{create-slam-app-store-DFm5K9Ob.d.ts → create-slam-app-store-HNe1PBtx.d.ts} +26 -4
  53. package/dist/{create-slam-app-store-oK9bnqyI.js → create-slam-app-store-wYN7YkB5.js} +13 -4
  54. package/dist/{depth-grid-lookup-CCuzlqUo.d.ts → depth-grid-lookup-PcJTdRLL.d.ts} +1 -1
  55. package/dist/{depth-sampler-CS2jAFw4.d.ts → depth-sampler-BcvuxgCS.d.ts} +29 -2
  56. package/dist/{depth-unprojection-ET3Gwedf.d.ts → depth-unprojection-DbGipFkA.d.ts} +1 -1
  57. package/dist/{enable-gps-ar-D_xEHzh5.d.ts → enable-gps-ar-xjz3jNqm.d.ts} +4 -4
  58. package/dist/{frame-conversions-CH7E2Iv_.d.ts → frame-conversions-CzPQDYpM.d.ts} +1 -1
  59. package/dist/{fused-path-DOKzVMiO.d.ts → fused-path-CBAttcVm.d.ts} +1 -1
  60. package/dist/geo/h3-proximity.d.ts +1 -1
  61. package/dist/geo/index.d.ts +1 -1
  62. package/dist/{gps-anchor-BaqyRsPC.d.ts → gps-anchor-Gv4NDwH4.d.ts} +1 -1
  63. package/dist/{gps-ar-pose-sampler-BuuUuK-D.d.ts → gps-ar-pose-sampler-DBEYDFY5.d.ts} +1 -1
  64. package/dist/{gps-event-coordinator-Cruoe5I-.d.ts → gps-event-coordinator-BKwB4RyQ.d.ts} +4 -4
  65. package/dist/{gps-event-markers-y2b2aVl6.d.ts → gps-event-markers-212h7j3D.d.ts} +4 -4
  66. package/dist/hit-test-reticle-driver-CfKiDgsa.d.ts +40 -0
  67. package/dist/{image-capture-BevgKpoO.d.ts → image-capture-BXmx1YvD.d.ts} +3 -3
  68. package/dist/{index-Dxb6ATNK.d.ts → index-DVmgFIgm.d.ts} +1 -1
  69. package/dist/{index-BWVwd9Zw.d.ts → index-DX9VC257.d.ts} +3 -3
  70. package/dist/{index-ClmnNJ6-.d.ts → index-qtZ2muFd.d.ts} +1 -1
  71. package/dist/index.d.ts +89 -82
  72. package/dist/index.js +17 -10
  73. package/dist/{leaflet-map-overlay-CksetpTt.d.ts → leaflet-map-overlay-BkHmzvpD.d.ts} +1 -1
  74. package/dist/{map-data-D8cCqpOM.d.ts → map-data-BQXPtRz7.d.ts} +1 -1
  75. package/dist/{map-overlay-draw-Cy-klqoA.d.ts → map-overlay-draw-sTM3wug_.d.ts} +1 -1
  76. package/dist/{null-storage-backend-DXXuwG8T.d.ts → null-storage-backend-Dtn3TBfT.d.ts} +2 -2
  77. package/dist/{occlusion-mesh-BWe2PrVi.d.ts → occlusion-mesh-BY2aMej3.d.ts} +22 -4
  78. package/dist/occupancy-cubes-visualizer-soN0Sizd.d.ts +146 -0
  79. package/dist/{occupancy-grid-CYBdmMOo.d.ts → occupancy-grid-DKzIdCSZ.d.ts} +113 -3
  80. package/dist/{occupancy-mesher-B4Bv4BTk.d.ts → occupancy-mesher-Co80tOpl.d.ts} +22 -1
  81. package/dist/occupancy-mesher-DzNeJdQf.js +837 -0
  82. package/dist/{opfs-storage-backend-D1ZpeNEL.d.ts → opfs-storage-backend-CZ-ECudx.d.ts} +2 -2
  83. package/dist/perf-stats-overlay-BMEQrzx6.d.ts +68 -0
  84. package/dist/{persistence-middleware-Cun4aF5M.d.ts → persistence-middleware-Byo_Fs4n.d.ts} +1 -1
  85. package/dist/{planar-pnp-ByxwDEyM.d.ts → planar-pnp-CkcMN3o3.d.ts} +1 -1
  86. package/dist/pointer-picking-BATHHTlT.d.ts +41 -0
  87. package/dist/{qr-debug-view-CGlITU09.d.ts → qr-debug-view-BMjNVhV2.d.ts} +1 -1
  88. package/dist/{qr-derived-pose-DZPxZd9C.d.ts → qr-derived-pose-Dq7mPK2s.d.ts} +2 -2
  89. package/dist/{qr-detected-slice-mfyxD2-M.d.ts → qr-detected-slice-8t_laDR9.d.ts} +4 -4
  90. package/dist/{qr-detection-controller-C5NII-vs.d.ts → qr-detection-controller-Dh4Paymb.d.ts} +3 -3
  91. package/dist/{qr-frontend-QzKZSqB-.d.ts → qr-frontend-BnLlVjKu.d.ts} +1 -1
  92. package/dist/{qr-pose-aggregation-mABSN0AW.d.ts → qr-pose-aggregation-Bpv4uARJ.d.ts} +1 -1
  93. package/dist/{qr-size-depth-context-CMDv6T29.d.ts → qr-size-depth-context-Bzbx98nS.d.ts} +2 -2
  94. package/dist/{qr-size-measurer-rVFf4AdM.d.ts → qr-size-measurer-18_W3INY.d.ts} +3 -3
  95. package/dist/{recording-replayer-qT2EM1Qs.d.ts → recording-replayer-BKmVuchg.d.ts} +2 -2
  96. package/dist/{recording-slice-DXw5-UvO.d.ts → recording-slice-zMedT0ot.d.ts} +1 -1
  97. package/dist/{replay-engine-B1H_kLhK.d.ts → replay-engine-D-cbT0Fw.d.ts} +1 -1
  98. package/dist/{replay-scene-BJeO36YT.d.ts → replay-scene-D5qzY0_x.d.ts} +3 -3
  99. package/dist/sensors/absolute-orientation.d.ts +1 -1
  100. package/dist/sensors/gps-error-handler.d.ts +1 -1
  101. package/dist/sensors/gps.d.ts +1 -1
  102. package/dist/sensors/index.d.ts +4 -4
  103. package/dist/sensors/permission-checker.d.ts +1 -1
  104. package/dist/state/app-selectors.d.ts +1 -1
  105. package/dist/state/combined-root-state.d.ts +1 -1
  106. package/dist/state/create-slam-app-store.d.ts +1 -1
  107. package/dist/state/create-slam-app-store.js +1 -1
  108. package/dist/state/gps-ar-pose-sampler.d.ts +2 -2
  109. package/dist/state/gps-event-coordinator.d.ts +2 -2
  110. package/dist/state/gps-event-coordinator.js +1 -1
  111. package/dist/state/index.d.ts +18 -18
  112. package/dist/state/index.js +3 -3
  113. package/dist/state/persistence-middleware.d.ts +1 -1
  114. package/dist/state/qr-detected-slice.d.ts +3 -3
  115. package/dist/state/recording-replayer.d.ts +2 -2
  116. package/dist/state/recording-replayer.js +1 -1
  117. package/dist/state/recording-slice.d.ts +1 -1
  118. package/dist/state/replay-engine.d.ts +1 -1
  119. package/dist/state/replay-occupancy-subscriber.d.ts +51 -0
  120. package/dist/state/replay-occupancy-subscriber.js +85 -0
  121. package/dist/state/replay-session.d.ts +88 -0
  122. package/dist/state/replay-session.js +165 -0
  123. package/dist/state/store-subscribers.d.ts +2 -2
  124. package/dist/state/store-subscribers.js +1 -1
  125. package/dist/state/subscribe-to-selector.d.ts +1 -1
  126. package/dist/state/tracking-quality.d.ts +1 -1
  127. package/dist/state/tracking-slice.d.ts +1 -1
  128. package/dist/{state-CDF5LvsO.js → state-DxL3T1Id.js} +1 -1
  129. package/dist/storage/file-system-utils.d.ts +1 -1
  130. package/dist/storage/index.d.ts +8 -8
  131. package/dist/storage/null-storage-backend.d.ts +1 -1
  132. package/dist/storage/opfs-storage-backend.d.ts +1 -1
  133. package/dist/storage/opfs-storage.d.ts +1 -1
  134. package/dist/storage/storage-backend.d.ts +1 -1
  135. package/dist/storage/zip-coverage-embed.d.ts +1 -1
  136. package/dist/storage/zip-export.d.ts +1 -1
  137. package/dist/storage/zip-reader.d.ts +1 -1
  138. package/dist/{storage-backend-BX7egQKi.d.ts → storage-backend-DCYbOvTw.d.ts} +1 -1
  139. package/dist/{store-subscribers-CWHToX6N.d.ts → store-subscribers-BbRW35u5.d.ts} +2 -2
  140. package/dist/{subscribe-to-selector-j-eOYybQ.d.ts → subscribe-to-selector-B_lm_euO.d.ts} +1 -1
  141. package/dist/test-utils/browser-mocks.d.ts +1 -1
  142. package/dist/test-utils/zip-round-trip-helpers.d.ts +1 -1
  143. package/dist/text-sprite-C6VcC2mo.d.ts +53 -0
  144. package/dist/{tracking-slice-BAbcZK-Y.d.ts → tracking-slice-D5LDL_y4.d.ts} +1 -1
  145. package/dist/types/ar-types.d.ts +1 -1
  146. package/dist/types/geo-types.d.ts +1 -1
  147. package/dist/types/index.d.ts +2 -2
  148. package/dist/utils/concurrency.d.ts +1 -1
  149. package/dist/utils/failure-tracker.d.ts +1 -1
  150. package/dist/utils/format-file-size.d.ts +1 -1
  151. package/dist/utils/fused-path.d.ts +1 -1
  152. package/dist/utils/index.d.ts +7 -7
  153. package/dist/utils/list-formatter.d.ts +1 -1
  154. package/dist/utils/logger.d.ts +1 -1
  155. package/dist/visualization/accuracy-circles.d.ts +1 -1
  156. package/dist/visualization/alignment-lerper.d.ts +1 -1
  157. package/dist/visualization/ar-world-group-alignment.d.ts +1 -1
  158. package/dist/visualization/ar-world-group-alignment.js +1 -1
  159. package/dist/visualization/camera-follower.d.ts +1 -1
  160. package/dist/visualization/css3d-renderer-manager.d.ts +1 -1
  161. package/dist/visualization/frame-conversions.d.ts +1 -1
  162. package/dist/visualization/frustum-visibility.d.ts +1 -1
  163. package/dist/visualization/gps-anchor.d.ts +1 -1
  164. package/dist/visualization/gps-compass-cubes.d.ts +1 -1
  165. package/dist/visualization/gps-compass-cubes.js +6 -22
  166. package/dist/visualization/gps-event-markers.d.ts +1 -1
  167. package/dist/visualization/gps-event-markers.js +1 -1
  168. package/dist/visualization/hit-test-reticle.d.ts +1 -1
  169. package/dist/visualization/hit-test-reticle.js +3 -2
  170. package/dist/visualization/index.d.ts +25 -19
  171. package/dist/visualization/index.js +10 -4
  172. package/dist/visualization/leaflet-map-overlay.d.ts +1 -1
  173. package/dist/visualization/leaflet-map-overlay.js +1 -1
  174. package/dist/visualization/lerp-utils.d.ts +1 -1
  175. package/dist/visualization/map-data.d.ts +1 -1
  176. package/dist/visualization/map-data.js +1 -1
  177. package/dist/visualization/map-overlay-draw.d.ts +1 -1
  178. package/dist/visualization/occluder-mesh-driver.d.ts +2 -2
  179. package/dist/visualization/occlusion-mesh.d.ts +1 -1
  180. package/dist/visualization/occlusion-mesh.js +26 -1
  181. package/dist/visualization/occupancy-cubes-visualizer.d.ts +2 -0
  182. package/dist/visualization/occupancy-cubes-visualizer.js +221 -0
  183. package/dist/visualization/perf-stats-overlay.d.ts +2 -0
  184. package/dist/visualization/perf-stats-overlay.js +85 -0
  185. package/dist/visualization/pointer-picking.d.ts +2 -0
  186. package/dist/visualization/pointer-picking.js +58 -0
  187. package/dist/visualization/text-sprite.d.ts +2 -0
  188. package/dist/visualization/text-sprite.js +105 -0
  189. package/dist/visualization/three-dispose.d.ts +1 -1
  190. package/dist/visualization/vis-colors.d.ts +1 -1
  191. package/dist/visualization/wayfinding-hud.d.ts +2 -0
  192. package/dist/visualization/wayfinding-hud.js +289 -0
  193. package/dist/visualization/wayfinding-placement.d.ts +2 -0
  194. package/dist/visualization/wayfinding-placement.js +157 -0
  195. package/dist/wayfinding-hud-DVun2b69.d.ts +82 -0
  196. package/dist/wayfinding-placement-dnHzfYlT.d.ts +97 -0
  197. package/dist/{webxr-session-OyR3YbTq.js → webxr-session-BBlgzrqY.js} +3 -3
  198. package/dist/{webxr-session-DefwObIu.d.ts → webxr-session-DurXRnl_.d.ts} +7 -7
  199. package/package.json +3 -3
  200. /package/dist/{absolute-orientation-Dj1One3y.d.ts → absolute-orientation-0WIsqJnu.d.ts} +0 -0
  201. /package/dist/{accuracy-circles-BHz7yVIL.d.ts → accuracy-circles-CFnKGfsD.d.ts} +0 -0
  202. /package/dist/{alignment-lerper-DAHicRON.d.ts → alignment-lerper-CK1TYLIL.d.ts} +0 -0
  203. /package/dist/{ar-crash-isolation-DlXCGzMf.d.ts → ar-crash-isolation-BSFw_beO.d.ts} +0 -0
  204. /package/dist/{ar-types-D6PYS4bc.d.ts → ar-types-BprL3nKv.d.ts} +0 -0
  205. /package/dist/{bresenham3d-D-t9i_b5.d.ts → bresenham3d-bt61R-Qa.d.ts} +0 -0
  206. /package/dist/{camera-blit-capture-BlC-arRb.d.ts → camera-blit-capture-CgNJ9grH.d.ts} +0 -0
  207. /package/dist/{camera-follower-CO_ibF2o.d.ts → camera-follower-OnnXsbHd.d.ts} +0 -0
  208. /package/dist/{capability-checker-BZ3_x1YL.d.ts → capability-checker-DrWimJ_t.d.ts} +0 -0
  209. /package/dist/{capture-failure-tracker-BAUKjtXU.d.ts → capture-failure-tracker-bUXJeMvQ.d.ts} +0 -0
  210. /package/dist/{capture-motion-gate-CPwLekNf.d.ts → capture-motion-gate-C60Qrilh.d.ts} +0 -0
  211. /package/dist/{chromium-camera-access-workaround-BHR4clTE.d.ts → chromium-camera-access-workaround-BRs6gkI4.d.ts} +0 -0
  212. /package/dist/{concurrency-DW0jQo3G.d.ts → concurrency-CMhbkxBk.d.ts} +0 -0
  213. /package/dist/{css3d-renderer-manager-CJjHtCMT.d.ts → css3d-renderer-manager-CE6xN7XM.d.ts} +0 -0
  214. /package/dist/{device-orientation-cache-j-kLP8he.js → device-orientation-cache-BjEaEAmh.js} +0 -0
  215. /package/dist/{failure-tracker-B7fzPfZo.d.ts → failure-tracker-BdaFulDA.d.ts} +0 -0
  216. /package/dist/{file-system-utils-BHI0rXr9.d.ts → file-system-utils-DE3BViuq.d.ts} +0 -0
  217. /package/dist/{format-file-size-Da8rZgfs.d.ts → format-file-size-B2CJdRqD.d.ts} +0 -0
  218. /package/dist/{frame-loop-7GBMBu68.d.ts → frame-loop-CUEIdlhS.d.ts} +0 -0
  219. /package/dist/{frustum-visibility-COPfzruF.d.ts → frustum-visibility-BTx1Sqfo.d.ts} +0 -0
  220. /package/dist/{geo-types-BfDK8kJu.d.ts → geo-types-DGe5UKgx.d.ts} +0 -0
  221. /package/dist/{gps-CnhYrJCa.d.ts → gps-CC0l9lCp.d.ts} +0 -0
  222. /package/dist/{gps-compass-cubes-CT3TWctJ.d.ts → gps-compass-cubes-QQJgpRXR.d.ts} +0 -0
  223. /package/dist/{gps-error-handler-DjVuLXve.d.ts → gps-error-handler-da4DCcs5.d.ts} +0 -0
  224. /package/dist/{h3-proximity-BaAulrnM.d.ts → h3-proximity-CAEk3osq.d.ts} +0 -0
  225. /package/dist/{hit-test-reticle-DhnCMOsc.d.ts → hit-test-reticle-DcOyqo3B.d.ts} +0 -0
  226. /package/dist/{image-capture-C4DwxC10.js → image-capture-Dn8uLIP2.js} +0 -0
  227. /package/dist/{image-quality--HLuyJ2r.d.ts → image-quality-G7_qT4aj.d.ts} +0 -0
  228. /package/dist/{index-CjxbDm8W.d.ts → index-T8Fxvzka.d.ts} +0 -0
  229. /package/dist/{index-Nr3qg4IH.d.ts → index-Y_RNWbQX.d.ts} +0 -0
  230. /package/dist/{leaflet-map-overlay-CTcTVmL1.js → leaflet-map-overlay-DjWfRT8a.js} +0 -0
  231. /package/dist/{lerp-utils-bwMwVCpU.d.ts → lerp-utils-B-ecvLq2.d.ts} +0 -0
  232. /package/dist/{list-formatter-1ttG18MQ.d.ts → list-formatter-C45u3Vgv.d.ts} +0 -0
  233. /package/dist/{logger-B4StJUDb.d.ts → logger-BQGNXi9W.d.ts} +0 -0
  234. /package/dist/{map-data-DkhsYDGM.js → map-data-vL8jb5Z9.js} +0 -0
  235. /package/dist/{opfs-storage-S_odkCk1.d.ts → opfs-storage-CrhVauNL.d.ts} +0 -0
  236. /package/dist/{permission-checker-B-VtjnBA.d.ts → permission-checker-BDrCOwQF.d.ts} +0 -0
  237. /package/dist/{qr-pose-21fRDcFO.d.ts → qr-pose-_dInl6di.d.ts} +0 -0
  238. /package/dist/{scene-node-names-DWzhE7Ro.d.ts → scene-node-names-Ct6ATrfM.d.ts} +0 -0
  239. /package/dist/{session-disposers-B7hUN90w.js → session-disposers-BJM5U62W.js} +0 -0
  240. /package/dist/{three-dispose-C3mnKQR5.d.ts → three-dispose-B5-XiECx.d.ts} +0 -0
  241. /package/dist/{vis-colors-CoSpbZEO.d.ts → vis-colors-16Pht13u.d.ts} +0 -0
  242. /package/dist/{webxr-nue-basis-C3vTqkE2.d.ts → webxr-nue-basis-B8ZEetVb.d.ts} +0 -0
  243. /package/dist/{xr-camera-texture-q0eIDSRg.d.ts → xr-camera-texture-BA4xiaQ4.d.ts} +0 -0
  244. /package/dist/{xr-error-handler-D9y5r8ok.d.ts → xr-error-handler-BeyxXCE_.d.ts} +0 -0
  245. /package/dist/{xr-frame-loop-BiZvgqP7.d.ts → xr-frame-loop-A1mGDFHI.d.ts} +0 -0
  246. /package/dist/{zip-coverage-embed-CyoX7XL7.d.ts → zip-coverage-embed-BC3O2-8b.d.ts} +0 -0
  247. /package/dist/{zip-export-CuBimX1J.d.ts → zip-export-Cfl_kNQ7.d.ts} +0 -0
  248. /package/dist/{zip-reader-BHc_b_iA.d.ts → zip-reader-DwkuvlGo.d.ts} +0 -0
@@ -1,5 +1,5 @@
1
- import { t as GridCell } from "./bresenham3d-D-t9i_b5.js";
2
- import { a as RgbTuple, i as DepthSample } from "./ar-types-D6PYS4bc.js";
1
+ import { t as GridCell } from "./bresenham3d-bt61R-Qa.js";
2
+ import { a as RgbTuple, i as DepthSample } from "./ar-types-BprL3nKv.js";
3
3
  import { Vector3 } from "gps-plus-slam-js";
4
4
 
5
5
  //#region ../src/ar/cell-key.d.ts
@@ -21,10 +21,65 @@ interface OccupancyGridOptions {
21
21
  * carving stops, to respect depth noise. Default 2 (Unity parity).
22
22
  */
23
23
  readonly carveStopCells?: number;
24
+ /**
25
+ * Confidence-guarded carving (2026-07-16 synthetic-scene investigation):
26
+ * when set, a carve ray reaching a cell whose observation count is at or
27
+ * above this threshold DECAYS the cell (count − 1, measured point/color
28
+ * means preserved) and stops the trace — an established surface can no
29
+ * longer be erased by a single deeper reading (silhouette-grazing churn
30
+ * under a perfect sensor, or a noisy/bled too-far endpoint sweeping
31
+ * through a confirmed wall into the occluded background), while REPEATED
32
+ * contradicting rays still drain and eventually delete confidently-wrong
33
+ * cells (the 2026-07-16-1547 fossilization field regression: a HARD block
34
+ * made noise meshes immortal — mesh built while the grid was uncertain
35
+ * could never be un-built by better data). Once below the threshold, the
36
+ * legacy delete applies. Default undefined = legacy unguarded carving.
37
+ * Must be a positive safe integer when set.
38
+ */
39
+ readonly carveConfidenceThreshold?: number;
24
40
  }
41
+ /**
42
+ * Recommended reconstruction defaults for apps that build AND render an occupancy
43
+ * mesh (the Recorder, the PhysicsDemo). These are the single framework-level source
44
+ * of truth so every consumer inherits the same tuning — change them here and both
45
+ * apps follow.
46
+ *
47
+ * They are DELIBERATELY separate from {@link OccupancyGrid}'s constructor fallback
48
+ * (`cellSizeM ?? 0.15`, Unity parity): that primitive fallback stays 0.15 because a
49
+ * pile of low-level tests build `new OccupancyGrid()` with no args and assume 0.15
50
+ * quantization. Both apps always pass an explicit `cellSizeM`, so the app-facing
51
+ * recommended default and the primitive fallback can differ without conflict.
52
+ *
53
+ * Tuning (2026-07-16 EVENING, maintainer's on-device framerate/mesh trade-off
54
+ * pass — supersedes the same-day corpus-sweep values 0.18/3): voxel 16 cm,
55
+ * noise floor 2. The sweep's argument for floor 3 (floaters = phantom
56
+ * colliders: mc 3 ≈ 1.9% vs mc 2 ≈ 3.5%) was measured under LEGACY carving;
57
+ * with the decay carve guard the floater gap largely disappears (real
58
+ * pillar-orbit A/B: guarded mc 2 isolates 2.12% vs guarded mc 3 2.19%), so
59
+ * the faster floor is affordable now. `0.16` stays within
60
+ * `OCCUPANCY_CONSTRAINTS.cellSizeM.max` (0.20); `2` within `minConfidence`
61
+ * 1–10. History: 2026-07-16-0557 corpus sweep (0.18/3),
62
+ * 2026-07-15-1640 device-impression change (0.18/2). See the recorder's
63
+ * recording-options.ts.md for the full tuning timeline.
64
+ */
65
+ declare const DEFAULT_OCCUPANCY_CELL_SIZE_M = 0.16;
66
+ /**
67
+ * Recommended occupancy noise floor — the minimum observation count before a cell
68
+ * is rendered/meshed (the Recorder's `minConfidence`, the demo's `minObservations`,
69
+ * and — since the decay guard — both apps' `carveConfidenceThreshold`).
70
+ * See {@link DEFAULT_OCCUPANCY_CELL_SIZE_M} for the rationale and the tuning note.
71
+ */
72
+ declare const DEFAULT_OCCUPANCY_MIN_OBSERVATIONS = 2;
25
73
  declare class OccupancyGrid {
26
74
  readonly cellSizeM: number;
27
75
  readonly carveStopCells: number;
76
+ /**
77
+ * Carve-blocking observation-count threshold, or undefined for legacy
78
+ * unguarded carving (see {@link OccupancyGridOptions}). Public + always
79
+ * present on instances so consumers built against a newer source can
80
+ * feature-detect the guard on an installed build at runtime.
81
+ */
82
+ readonly carveConfidenceThreshold: number | undefined;
28
83
  private readonly cells;
29
84
  /**
30
85
  * Chunk index (Step 2 of the 2026-07-03 long-session fps plan): cell keys
@@ -180,8 +235,63 @@ declare class OccupancyGrid {
180
235
  * steps before the endpoint. The endpoint cell itself is additionally
181
236
  * protected so a current observation is never erased (relevant for
182
237
  * carveStopCells = 0 and for the unconditional start-cell visit).
238
+ *
239
+ * With `carveConfidenceThreshold` set, the trace additionally stops at the
240
+ * first cell whose count has reached the threshold, DECAYING it by one
241
+ * observation (means preserved) — soft contradiction instead of deletion,
242
+ * so nothing behind an established surface is carved but repeated
243
+ * contradictions still un-build it (see the option docs). Note this makes
244
+ * a repeated identical carve NOT a no-op — the per-sample unique-endpoint
245
+ * dedupe in `addSample` is therefore semantically load-bearing under the
246
+ * guard (one decay per contradicting ray per sample).
247
+ *
248
+ * PERFORMANCE — fused walk (2026-07-17 perf loop, iteration 1): this is
249
+ * the framework's hottest non-render loop (hundreds of rays per depth
250
+ * sample at the 200 ms reconstruction cadence), and the generic
251
+ * `bresenham3d(callback)` shape dominated the fold profile: a fresh
252
+ * `[x, y, z]` tuple + callback dispatch + full `cellKey` repack +
253
+ * `cellsEqual` per visited cell. The Bresenham walk (identical integer
254
+ * stepping, `bresenham3d` stays the reference — see the fold-oracle
255
+ * property test) is therefore fused in here with two key tricks:
256
+ *
257
+ * - The packed cell key is maintained INCREMENTALLY: stepping one cell
258
+ * along an axis moves the key by that axis' constant field stride
259
+ * (base-2^17 positional packing), replacing the 3-term repack.
260
+ * - The endpoint guard compares packed keys (`key === endpointKey`).
261
+ * Every walked cell lies inside the camera→point AABB whose corners the
262
+ * caller range-checked, so packing is bijective on the whole walk and
263
+ * the compare is exactly `cellsEqual` — and key aliasing is impossible.
264
+ *
265
+ * The cell tuple is materialized only on an actual delete/decay hit (rare
266
+ * per trace, handled in {@link carveCellAt}). Measured on the
267
+ * occupancy-fold bench (devbox-win11, Node 24, 50 samples × 576 pts,
268
+ * production config): 37.05 → 25.71 ms median of 5, −30.6%.
269
+ * Input safety: cameraCell/pointCell are integer cells from
270
+ * `cellForPosition` (finite-checked upstream) and both range-checked by
271
+ * `addSample`, so dm ≤ 2·CELL_KEY_LIMIT « MAX_TRACE_STEPS and the generic
272
+ * tracer's integer/span guards are structurally satisfied here.
183
273
  */
184
274
  private carve;
275
+ /**
276
+ * Per-cell action of the fused carve walk (extracted so both it and the
277
+ * walk stay under the lint complexity budget; a monomorphic private-method
278
+ * call per visited cell measured within noise of the fully-inlined form).
279
+ *
280
+ * @returns `false` when the trace must stop: the cell is an established
281
+ * surface (count ≥ threshold) that was decayed instead of deleted.
282
+ */
283
+ private carveCellAt;
284
+ /**
285
+ * Soft contradiction of an established cell (confidence-guarded carving):
286
+ * remove one observation while preserving the measured point/color MEANS
287
+ * (sums are scaled with the count — decrementing the divisor alone would
288
+ * silently shift `getCellPoint`/`getCellColor`). Deletes outright when the
289
+ * count would reach 0 (threshold 1). Bumps revisions like any mutation
290
+ * that can change a consumer's occupied set (counts above
291
+ * MAX_RELEVANT_COUNT cannot cross any selectable floor, so those decays
292
+ * stay revision-silent).
293
+ */
294
+ private decayCell;
185
295
  /** Add a newly-occupied cell to its chunk's index set. */
186
296
  private indexCell;
187
297
  /** Remove a carved cell from its chunk (dropping an emptied chunk set). */
@@ -191,4 +301,4 @@ declare class OccupancyGrid {
191
301
  private increment;
192
302
  }
193
303
  //#endregion
194
- export { unpackCellKey as i, OccupancyGridOptions as n, cellKey as r, OccupancyGrid as t };
304
+ export { cellKey as a, OccupancyGridOptions as i, DEFAULT_OCCUPANCY_MIN_OBSERVATIONS as n, unpackCellKey as o, OccupancyGrid as r, DEFAULT_OCCUPANCY_CELL_SIZE_M as t };
@@ -1,4 +1,4 @@
1
- import { t as GridCell } from "./bresenham3d-D-t9i_b5.js";
1
+ import { t as GridCell } from "./bresenham3d-bt61R-Qa.js";
2
2
  import { Vector3 } from "gps-plus-slam-js";
3
3
 
4
4
  //#region ../src/ar/occupancy-mesher.d.ts
@@ -75,6 +75,27 @@ interface MeshOccupiedCellsOptions {
75
75
  * retain the tuple (no caching it as a key, no async use). Copy it if needed.
76
76
  */
77
77
  readonly getCellPoint?: (cell: GridCell) => Vector3 | null;
78
+ /**
79
+ * Pre-packed per-cell centroids for `'smooth'`, aligned with the **input
80
+ * `cells` order** (3 numbers per input cell; a non-finite triple — the
81
+ * worker wire protocol packs NaN for "no centroid" — falls back to that
82
+ * cell's geometric centre, exactly like a null/non-finite `getCellPoint`
83
+ * result). This is the mesh-worker fast path (2026-07-17 perf loop,
84
+ * iteration 2): `runMeshRequest` receives exactly this array over the wire,
85
+ * so consuming it directly deletes the per-cell key-map + callback + tuple
86
+ * plumbing from the hottest re-mesh loop. When set, `'smooth'` ignores
87
+ * `getCellPoint`; other modes ignore `centroids` entirely (`'corner-fit'`
88
+ * still needs the callback).
89
+ */
90
+ readonly centroids?: Float64Array | null;
91
+ /**
92
+ * Set `false` to skip building the per-cell AABB list (`result.aabbs` is
93
+ * then empty). The occlusion-mesh worker path consumes only
94
+ * positions/indices, and at the ~100k-cell regime the discarded AABB
95
+ * objects (~2 allocations per cell, every re-mesh) were pure GC pressure
96
+ * (2026-07-17 perf loop, iteration 2). Default `true`.
97
+ */
98
+ readonly includeAabbs?: boolean;
78
99
  }
79
100
  /**
80
101
  * Mesh a snapshot of occupied cells into a face-culled surface + AABB list.