leaflet-city-mapper 0.0.1 → 0.0.2

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 (472) hide show
  1. package/README.md +15 -13
  2. package/cucumber.mjs +4 -0
  3. package/dist/leaflet-city-mapper.js +1 -1
  4. package/dist/leaflet-city-mapper.js.map +4 -4
  5. package/dist/utils/CELL.js +2 -0
  6. package/dist/utils/CELL.js.map +7 -0
  7. package/dist/utils/addBridges.js +2 -0
  8. package/dist/utils/addBridges.js.map +7 -0
  9. package/dist/utils/addRasterTile.js +2 -0
  10. package/dist/utils/addRasterTile.js.map +7 -0
  11. package/dist/utils/along.js +2 -0
  12. package/dist/utils/along.js.map +7 -0
  13. package/dist/utils/atmosphere.js +2 -0
  14. package/dist/utils/atmosphere.js.map +7 -0
  15. package/dist/utils/attach.js +2 -0
  16. package/dist/utils/attach.js.map +7 -0
  17. package/dist/utils/bindSunlight.js +2 -0
  18. package/dist/utils/bindSunlight.js.map +7 -0
  19. package/dist/utils/box.js +2 -0
  20. package/dist/utils/box.js.map +7 -0
  21. package/dist/utils/bridgeElevation.js +2 -0
  22. package/dist/utils/bridgeElevation.js.map +7 -0
  23. package/dist/utils/build.js +2 -0
  24. package/dist/utils/build.js.map +7 -0
  25. package/dist/utils/cameraControls.js +2 -0
  26. package/dist/utils/cameraControls.js.map +7 -0
  27. package/dist/utils/channel.js +2 -0
  28. package/dist/utils/channel.js.map +7 -0
  29. package/dist/utils/collider.js +2 -0
  30. package/dist/utils/collider.js.map +7 -0
  31. package/dist/utils/colliders.js +2 -0
  32. package/dist/utils/colliders.js.map +7 -0
  33. package/dist/utils/computeBounds.js +2 -0
  34. package/dist/utils/computeBounds.js.map +7 -0
  35. package/dist/utils/conformModelToTerrain.js +2 -0
  36. package/dist/utils/conformModelToTerrain.js.map +7 -0
  37. package/dist/utils/createMesh.js +2 -0
  38. package/dist/utils/createMesh.js.map +7 -0
  39. package/dist/utils/createProgram.js +3 -0
  40. package/dist/utils/createProgram.js.map +7 -0
  41. package/dist/utils/decodeDirectory.js +2 -0
  42. package/dist/utils/decodeDirectory.js.map +7 -0
  43. package/dist/utils/decodeHeader.js +2 -0
  44. package/dist/utils/decodeHeader.js.map +7 -0
  45. package/dist/utils/decodeModel.js +2 -0
  46. package/dist/utils/decodeModel.js.map +7 -0
  47. package/dist/utils/decompress.js +2 -0
  48. package/dist/utils/decompress.js.map +7 -0
  49. package/dist/utils/destroyTexture.js +2 -0
  50. package/dist/utils/destroyTexture.js.map +7 -0
  51. package/dist/utils/disposeMesh.js +2 -0
  52. package/dist/utils/disposeMesh.js.map +7 -0
  53. package/dist/utils/drawGeometry.js +2 -0
  54. package/dist/utils/drawGeometry.js.map +7 -0
  55. package/dist/utils/elevationWGSL.js +24 -0
  56. package/dist/utils/elevationWGSL.js.map +7 -0
  57. package/dist/utils/emptyNode.js +2 -0
  58. package/dist/utils/emptyNode.js.map +7 -0
  59. package/dist/utils/endZoom.js +2 -0
  60. package/dist/utils/endZoom.js.map +7 -0
  61. package/dist/utils/findFeature.js +2 -0
  62. package/dist/utils/findFeature.js.map +7 -0
  63. package/dist/utils/geometry.js +0 -1
  64. package/dist/utils/geometry.js.map +4 -4
  65. package/dist/utils/getElevation.js +2 -0
  66. package/dist/utils/getElevation.js.map +7 -0
  67. package/dist/utils/getHeader.js +2 -0
  68. package/dist/utils/getHeader.js.map +7 -0
  69. package/dist/utils/getZxy.js +2 -0
  70. package/dist/utils/getZxy.js.map +7 -0
  71. package/dist/utils/glass.js +2 -0
  72. package/dist/utils/glass.js.map +7 -0
  73. package/dist/utils/headlight.js +2 -0
  74. package/dist/utils/headlight.js.map +7 -0
  75. package/dist/utils/hit.js +2 -0
  76. package/dist/utils/hit.js.map +7 -0
  77. package/dist/utils/horizontalPosition.js +2 -0
  78. package/dist/utils/horizontalPosition.js.map +7 -0
  79. package/dist/utils/horizontalRay.js +2 -0
  80. package/dist/utils/horizontalRay.js.map +7 -0
  81. package/dist/utils/hull.js +2 -0
  82. package/dist/utils/hull.js.map +7 -0
  83. package/dist/utils/initSunlight.js +2 -0
  84. package/dist/utils/initSunlight.js.map +7 -0
  85. package/dist/utils/initTerrain.js +2 -0
  86. package/dist/utils/initTerrain.js.map +7 -0
  87. package/dist/utils/initTraffic.js +40 -0
  88. package/dist/utils/initTraffic.js.map +7 -0
  89. package/dist/utils/initWalk.js +2 -0
  90. package/dist/utils/initWalk.js.map +7 -0
  91. package/dist/utils/intersectMeshes.js +2 -0
  92. package/dist/utils/intersectMeshes.js.map +7 -0
  93. package/dist/utils/isClockWise.js +2 -0
  94. package/dist/utils/isClockWise.js.map +7 -0
  95. package/dist/utils/lampPostGeometry.js +2 -0
  96. package/dist/utils/lampPostGeometry.js.map +7 -0
  97. package/dist/utils/lightGeometry.js +2 -0
  98. package/dist/utils/lightGeometry.js.map +7 -0
  99. package/dist/utils/lightGrid.js +2 -0
  100. package/dist/utils/lightGrid.js.map +7 -0
  101. package/dist/utils/limbs.js +2 -0
  102. package/dist/utils/limbs.js.map +7 -0
  103. package/dist/utils/loadModel.js +2 -0
  104. package/dist/utils/loadModel.js.map +7 -0
  105. package/dist/utils/loadSource.js +2 -0
  106. package/dist/utils/loadSource.js.map +7 -0
  107. package/dist/utils/loadTerrain.js +2 -0
  108. package/dist/utils/loadTerrain.js.map +7 -0
  109. package/dist/utils/mapCamera.js +2 -0
  110. package/dist/utils/mapCamera.js.map +7 -0
  111. package/dist/utils/{shaders.js → materialShaders.js} +16 -8
  112. package/dist/utils/materialShaders.js.map +7 -0
  113. package/dist/utils/mirror.js +2 -0
  114. package/dist/utils/mirror.js.map +7 -0
  115. package/dist/utils/moonPosition.js +2 -0
  116. package/dist/utils/moonPosition.js.map +7 -0
  117. package/dist/utils/moves.js +2 -0
  118. package/dist/utils/moves.js.map +7 -0
  119. package/dist/utils/nativeEvents.js +2 -0
  120. package/dist/utils/nativeEvents.js.map +7 -0
  121. package/dist/utils/nativeGeometry.js +2 -0
  122. package/dist/utils/nativeGeometry.js.map +7 -0
  123. package/dist/utils/nativeLayer.js +2 -0
  124. package/dist/utils/nativeLayer.js.map +7 -0
  125. package/dist/utils/nodeMatrix.js +2 -0
  126. package/dist/utils/nodeMatrix.js.map +7 -0
  127. package/dist/utils/onAdd3DLayer.js +2 -0
  128. package/dist/utils/onAdd3DLayer.js.map +7 -0
  129. package/dist/utils/onAddSun.js +2 -0
  130. package/dist/utils/onAddSun.js.map +7 -0
  131. package/dist/utils/onClick.js +2 -0
  132. package/dist/utils/onClick.js.map +7 -0
  133. package/dist/utils/onMapChange.js +2 -0
  134. package/dist/utils/onMapChange.js.map +7 -0
  135. package/dist/utils/onPMTileAdd.js +2 -0
  136. package/dist/utils/onPMTileAdd.js.map +7 -0
  137. package/dist/utils/onPMTileRemove.js +2 -0
  138. package/dist/utils/onPMTileRemove.js.map +7 -0
  139. package/dist/utils/onPointerLeave.js +2 -0
  140. package/dist/utils/onPointerLeave.js.map +7 -0
  141. package/dist/utils/onPointerMove.js +2 -0
  142. package/dist/utils/onPointerMove.js.map +7 -0
  143. package/dist/utils/onRemove3DLayer.js +2 -0
  144. package/dist/utils/onRemove3DLayer.js.map +7 -0
  145. package/dist/utils/onRemoveSun.js +2 -0
  146. package/dist/utils/onRemoveSun.js.map +7 -0
  147. package/dist/utils/onTerrainAdd.js +2 -0
  148. package/dist/utils/onTerrainAdd.js.map +7 -0
  149. package/dist/utils/onTerrainChange.js +2 -0
  150. package/dist/utils/onTerrainChange.js.map +7 -0
  151. package/dist/utils/onTerrainRemove.js +2 -0
  152. package/dist/utils/onTerrainRemove.js.map +7 -0
  153. package/dist/utils/onZoomAnim.js +2 -0
  154. package/dist/utils/onZoomAnim.js.map +7 -0
  155. package/dist/utils/paints.js +2 -0
  156. package/dist/utils/paints.js.map +7 -0
  157. package/dist/utils/parseColor.js +2 -0
  158. package/dist/utils/parseColor.js.map +7 -0
  159. package/dist/utils/parts.js +2 -0
  160. package/dist/utils/parts.js.map +7 -0
  161. package/dist/utils/projectCelestialBody.js +2 -0
  162. package/dist/utils/projectCelestialBody.js.map +7 -0
  163. package/dist/utils/pump.js +2 -0
  164. package/dist/utils/pump.js.map +7 -0
  165. package/dist/utils/rasterTiles.js +2 -0
  166. package/dist/utils/rasterTiles.js.map +7 -0
  167. package/dist/utils/raycast.js +2 -0
  168. package/dist/utils/raycast.js.map +7 -0
  169. package/dist/utils/read.js +2 -0
  170. package/dist/utils/read.js.map +7 -0
  171. package/dist/utils/readAccessor.js +2 -0
  172. package/dist/utils/readAccessor.js.map +7 -0
  173. package/dist/utils/releaseArea.js +2 -0
  174. package/dist/utils/releaseArea.js.map +7 -0
  175. package/dist/utils/removeRasterTile.js +2 -0
  176. package/dist/utils/removeRasterTile.js.map +7 -0
  177. package/dist/utils/render.js +15 -0
  178. package/dist/utils/render.js.map +7 -0
  179. package/dist/utils/renderSunlight.js +13 -0
  180. package/dist/utils/renderSunlight.js.map +7 -0
  181. package/dist/utils/renderers.js +2 -0
  182. package/dist/utils/renderers.js.map +7 -0
  183. package/dist/utils/resizeSunlight.js +2 -0
  184. package/dist/utils/resizeSunlight.js.map +7 -0
  185. package/dist/utils/roofCoverage.js +2 -0
  186. package/dist/utils/roofCoverage.js.map +7 -0
  187. package/dist/utils/routeGeometry.js +2 -0
  188. package/dist/utils/routeGeometry.js.map +7 -0
  189. package/dist/utils/scheduledTrips.js +2 -0
  190. package/dist/utils/scheduledTrips.js.map +7 -0
  191. package/dist/utils/setGeoJSONData.js +2 -0
  192. package/dist/utils/setGeoJSONData.js.map +7 -0
  193. package/dist/utils/setHighlight.js +2 -0
  194. package/dist/utils/setHighlight.js.map +7 -0
  195. package/dist/utils/setPMTileOpacity.js +2 -0
  196. package/dist/utils/setPMTileOpacity.js.map +7 -0
  197. package/dist/utils/setPMTileZIndex.js +2 -0
  198. package/dist/utils/setPMTileZIndex.js.map +7 -0
  199. package/dist/utils/setParent.js +2 -0
  200. package/dist/utils/setParent.js.map +7 -0
  201. package/dist/utils/setTerrainHeight.js +2 -0
  202. package/dist/utils/setTerrainHeight.js.map +7 -0
  203. package/dist/utils/setVertexColor.js +2 -0
  204. package/dist/utils/setVertexColor.js.map +7 -0
  205. package/dist/utils/showFeature.js +2 -0
  206. package/dist/utils/showFeature.js.map +7 -0
  207. package/dist/utils/sizes.js +2 -0
  208. package/dist/utils/sizes.js.map +7 -0
  209. package/dist/utils/skin.js +2 -0
  210. package/dist/utils/skin.js.map +7 -0
  211. package/dist/utils/solarPosition.js +2 -0
  212. package/dist/utils/solarPosition.js.map +7 -0
  213. package/dist/utils/sortMeshes.js +2 -0
  214. package/dist/utils/sortMeshes.js.map +7 -0
  215. package/dist/utils/speed.js +2 -0
  216. package/dist/utils/speed.js.map +7 -0
  217. package/dist/utils/startZoom.js +2 -0
  218. package/dist/utils/startZoom.js.map +7 -0
  219. package/dist/utils/taillight.js +2 -0
  220. package/dist/utils/taillight.js.map +7 -0
  221. package/dist/utils/terrainAtlas.js +2 -0
  222. package/dist/utils/terrainAtlas.js.map +7 -0
  223. package/dist/utils/terrainElevation.js +2 -0
  224. package/dist/utils/terrainElevation.js.map +7 -0
  225. package/dist/utils/terrainGrid.js +2 -0
  226. package/dist/utils/terrainGrid.js.map +7 -0
  227. package/dist/utils/textureSampler.js +2 -0
  228. package/dist/utils/textureSampler.js.map +7 -0
  229. package/dist/utils/tileId.js +2 -0
  230. package/dist/utils/tileId.js.map +7 -0
  231. package/dist/utils/toLanes.js +2 -0
  232. package/dist/utils/toLanes.js.map +7 -0
  233. package/dist/utils/toSRGB.js +2 -0
  234. package/dist/utils/toSRGB.js.map +7 -0
  235. package/dist/utils/tooltip.js +3 -0
  236. package/dist/utils/tooltip.js.map +7 -0
  237. package/dist/utils/traffic.js +1 -1
  238. package/dist/utils/traffic.js.map +3 -3
  239. package/dist/utils/traverse.js +2 -0
  240. package/dist/utils/traverse.js.map +7 -0
  241. package/dist/utils/treeGeometry.js +2 -0
  242. package/dist/utils/treeGeometry.js.map +7 -0
  243. package/dist/utils/triangulate.js +2 -0
  244. package/dist/utils/triangulate.js.map +7 -0
  245. package/dist/utils/tripsAt.js +2 -0
  246. package/dist/utils/tripsAt.js.map +7 -0
  247. package/dist/utils/types.js +2 -0
  248. package/dist/utils/types.js.map +7 -0
  249. package/dist/utils/underEntry.js +2 -0
  250. package/dist/utils/underEntry.js.map +7 -0
  251. package/dist/utils/update.js +2 -0
  252. package/dist/utils/update.js.map +7 -0
  253. package/dist/utils/updateArea.js +2 -0
  254. package/dist/utils/updateArea.js.map +7 -0
  255. package/dist/utils/updateCamera.js +2 -0
  256. package/dist/utils/updateCamera.js.map +7 -0
  257. package/dist/utils/updatePointLights.js +2 -0
  258. package/dist/utils/updatePointLights.js.map +7 -0
  259. package/dist/utils/updateWorldMatrix.js +2 -0
  260. package/dist/utils/updateWorldMatrix.js.map +7 -0
  261. package/dist/utils/vehicleOffsets.js +2 -0
  262. package/dist/utils/vehicleOffsets.js.map +7 -0
  263. package/dist/utils/vehicles.js +1 -1
  264. package/dist/utils/vehicles.js.map +3 -3
  265. package/dist/utils/vertexNormals.js +2 -0
  266. package/dist/utils/vertexNormals.js.map +7 -0
  267. package/dist/utils/walk.js +1 -1
  268. package/dist/utils/walk.js.map +3 -3
  269. package/dist/utils/white.js +2 -0
  270. package/dist/utils/white.js.map +7 -0
  271. package/dist/utils/worldLights.js +2 -0
  272. package/dist/utils/worldLights.js.map +7 -0
  273. package/dist/utils/wrap.js +2 -0
  274. package/dist/utils/wrap.js.map +7 -0
  275. package/package.json +2 -4
  276. package/src/index.js +365 -50
  277. package/src/utils/CELL.js +4 -0
  278. package/src/utils/addBridges.js +66 -0
  279. package/src/utils/addRasterTile.js +112 -0
  280. package/src/utils/along.js +9 -0
  281. package/src/utils/atmosphere.js +20 -0
  282. package/src/utils/attach.js +255 -0
  283. package/src/utils/bindSunlight.js +12 -0
  284. package/src/utils/box.js +1 -0
  285. package/src/utils/bridgeElevation.js +18 -0
  286. package/src/utils/build.js +20 -0
  287. package/src/utils/cameraControls.js +287 -0
  288. package/src/utils/channel.js +4 -0
  289. package/src/utils/collider.js +62 -0
  290. package/src/utils/colliders.js +2 -0
  291. package/src/utils/computeBounds.js +17 -0
  292. package/src/utils/conformModelToTerrain.js +69 -0
  293. package/src/utils/createMesh.js +31 -0
  294. package/src/utils/createProgram.js +92 -0
  295. package/src/utils/decodeDirectory.js +40 -0
  296. package/src/utils/decodeHeader.js +15 -0
  297. package/src/utils/decodeModel.js +43 -0
  298. package/src/utils/decompress.js +5 -0
  299. package/src/utils/destroyTexture.js +7 -0
  300. package/src/utils/disposeMesh.js +13 -0
  301. package/src/utils/drawGeometry.js +122 -0
  302. package/src/utils/elevationWGSL.js +27 -0
  303. package/src/utils/emptyNode.js +9 -0
  304. package/src/utils/endZoom.js +15 -0
  305. package/src/utils/findFeature.js +49 -0
  306. package/src/utils/geometry.js +0 -254
  307. package/src/utils/getElevation.js +10 -0
  308. package/src/utils/getHeader.js +9 -0
  309. package/src/utils/getZxy.js +76 -0
  310. package/src/utils/glass.js +1 -0
  311. package/src/utils/headlight.js +1 -0
  312. package/src/utils/hit.js +41 -0
  313. package/src/utils/horizontalPosition.js +16 -0
  314. package/src/utils/horizontalRay.js +12 -0
  315. package/src/utils/hull.js +1 -0
  316. package/src/utils/initSunlight.js +9 -0
  317. package/src/utils/initTerrain.js +19 -0
  318. package/src/utils/initTraffic.js +93 -0
  319. package/src/utils/initWalk.js +72 -0
  320. package/src/utils/{picking.js → intersectMeshes.js} +121 -119
  321. package/src/utils/isClockWise.js +12 -0
  322. package/src/utils/lampPostGeometry.js +26 -0
  323. package/src/utils/lightGeometry.js +22 -0
  324. package/src/utils/{lighting.js → lightGrid.js} +50 -51
  325. package/src/utils/limbs.js +9 -0
  326. package/src/{scene/model.js → utils/loadModel.js} +37 -24
  327. package/src/utils/loadSource.js +17 -0
  328. package/src/utils/loadTerrain.js +65 -0
  329. package/src/utils/mapCamera.js +432 -0
  330. package/src/utils/{shaders.js → materialShaders.js} +243 -237
  331. package/src/utils/mirror.js +6 -0
  332. package/src/utils/moonPosition.js +17 -0
  333. package/src/utils/moves.js +11 -0
  334. package/src/utils/nativeEvents.js +77 -0
  335. package/src/utils/nativeGeometry.js +131 -0
  336. package/src/utils/nativeLayer.js +317 -0
  337. package/src/utils/nodeMatrix.js +22 -0
  338. package/src/utils/onAdd3DLayer.js +31 -0
  339. package/src/utils/onAddSun.js +147 -0
  340. package/src/utils/onClick.js +13 -0
  341. package/src/utils/onMapChange.js +16 -0
  342. package/src/utils/onPMTileAdd.js +15 -0
  343. package/src/utils/onPMTileRemove.js +8 -0
  344. package/src/utils/onPointerLeave.js +11 -0
  345. package/src/utils/onPointerMove.js +15 -0
  346. package/src/utils/onRemove3DLayer.js +78 -0
  347. package/src/utils/onRemoveSun.js +3 -0
  348. package/src/utils/onTerrainAdd.js +18 -0
  349. package/src/utils/onTerrainChange.js +13 -0
  350. package/src/utils/onTerrainRemove.js +40 -0
  351. package/src/utils/onZoomAnim.js +14 -0
  352. package/src/utils/paints.js +10 -0
  353. package/src/utils/parseColor.js +42 -0
  354. package/src/utils/parts.js +16 -0
  355. package/src/utils/projectCelestialBody.js +13 -0
  356. package/src/{scene/sources.js → utils/pump.js} +59 -98
  357. package/src/utils/rasterTiles.js +285 -0
  358. package/src/utils/raycast.js +60 -0
  359. package/src/utils/read.js +29 -0
  360. package/src/utils/readAccessor.js +68 -0
  361. package/src/utils/releaseArea.js +34 -0
  362. package/src/utils/removeRasterTile.js +13 -0
  363. package/src/{scene → utils}/render.js +112 -173
  364. package/src/utils/renderSunlight.js +170 -0
  365. package/src/utils/renderers.js +2 -0
  366. package/src/utils/resizeSunlight.js +15 -0
  367. package/src/utils/roofCoverage.js +47 -0
  368. package/src/utils/routeGeometry.js +22 -0
  369. package/src/utils/scheduledTrips.js +29 -0
  370. package/src/utils/setGeoJSONData.js +11 -0
  371. package/src/utils/setHighlight.js +13 -0
  372. package/src/utils/setPMTileOpacity.js +7 -0
  373. package/src/utils/setPMTileZIndex.js +7 -0
  374. package/src/utils/setParent.js +7 -0
  375. package/src/utils/setTerrainHeight.js +10 -0
  376. package/src/utils/setVertexColor.js +14 -0
  377. package/src/utils/showFeature.js +27 -0
  378. package/src/utils/sizes.js +1 -0
  379. package/src/utils/skin.js +2 -0
  380. package/src/utils/solarPosition.js +17 -0
  381. package/src/utils/sortMeshes.js +12 -0
  382. package/src/utils/speed.js +3 -0
  383. package/src/utils/startZoom.js +5 -0
  384. package/src/utils/taillight.js +1 -0
  385. package/src/utils/terrainAtlas.js +21 -0
  386. package/src/utils/terrainElevation.js +20 -0
  387. package/src/utils/terrainGrid.js +23 -0
  388. package/src/utils/textureSampler.js +10 -0
  389. package/src/utils/tileId.js +18 -0
  390. package/src/utils/toLanes.js +7 -0
  391. package/src/utils/toSRGB.js +1 -0
  392. package/src/utils/tooltip.js +6 -0
  393. package/src/utils/traffic.js +310 -85
  394. package/src/utils/traverse.js +6 -0
  395. package/src/utils/treeGeometry.js +45 -0
  396. package/src/utils/triangulate.js +100 -0
  397. package/src/utils/tripsAt.js +16 -0
  398. package/src/utils/types.js +8 -0
  399. package/src/utils/{control.js → underEntry.js} +1 -2
  400. package/src/utils/update.js +18 -0
  401. package/src/utils/updateArea.js +40 -0
  402. package/src/utils/updateCamera.js +32 -0
  403. package/src/utils/updatePointLights.js +38 -0
  404. package/src/utils/updateWorldMatrix.js +47 -0
  405. package/src/utils/vehicleOffsets.js +8 -0
  406. package/src/utils/vehicles.js +65 -69
  407. package/src/utils/vertexNormals.js +30 -0
  408. package/src/utils/walk.js +181 -66
  409. package/src/utils/white.js +1 -0
  410. package/src/utils/worldLights.js +25 -0
  411. package/src/utils/wrap.js +1 -0
  412. package/dist/scene/gpu.js +0 -3
  413. package/dist/scene/gpu.js.map +0 -7
  414. package/dist/scene/lighting.js +0 -9
  415. package/dist/scene/lighting.js.map +0 -7
  416. package/dist/scene/model.js +0 -2
  417. package/dist/scene/model.js.map +0 -7
  418. package/dist/scene/picking.js +0 -2
  419. package/dist/scene/picking.js.map +0 -7
  420. package/dist/scene/pmtiles.js +0 -2
  421. package/dist/scene/pmtiles.js.map +0 -7
  422. package/dist/scene/render.js +0 -15
  423. package/dist/scene/render.js.map +0 -7
  424. package/dist/scene/sources.js +0 -2
  425. package/dist/scene/sources.js.map +0 -7
  426. package/dist/types/3d.js +0 -2
  427. package/dist/types/3d.js.map +0 -7
  428. package/dist/types/geojson.js +0 -2
  429. package/dist/types/geojson.js.map +0 -7
  430. package/dist/types/pmtiles.js +0 -2
  431. package/dist/types/pmtiles.js.map +0 -7
  432. package/dist/types/sunlight.js +0 -2
  433. package/dist/types/sunlight.js.map +0 -7
  434. package/dist/types/terrain.js +0 -24
  435. package/dist/types/terrain.js.map +0 -7
  436. package/dist/types/traffic.js +0 -41
  437. package/dist/types/traffic.js.map +0 -7
  438. package/dist/types/walk.js +0 -2
  439. package/dist/types/walk.js.map +0 -7
  440. package/dist/utils/control.js +0 -2
  441. package/dist/utils/control.js.map +0 -7
  442. package/dist/utils/lighting.js +0 -2
  443. package/dist/utils/lighting.js.map +0 -7
  444. package/dist/utils/model.js +0 -2
  445. package/dist/utils/model.js.map +0 -7
  446. package/dist/utils/picking.js +0 -2
  447. package/dist/utils/picking.js.map +0 -7
  448. package/dist/utils/pmtiles.js +0 -2
  449. package/dist/utils/pmtiles.js.map +0 -7
  450. package/dist/utils/scene.js +0 -2
  451. package/dist/utils/scene.js.map +0 -7
  452. package/dist/utils/shaders.js.map +0 -7
  453. package/dist/utils/sun.js +0 -2
  454. package/dist/utils/sun.js.map +0 -7
  455. package/dist/utils/terrain.js +0 -2
  456. package/dist/utils/terrain.js.map +0 -7
  457. package/src/scene/gpu.js +0 -438
  458. package/src/scene/lighting.js +0 -193
  459. package/src/scene/picking.js +0 -150
  460. package/src/scene/pmtiles.js +0 -94
  461. package/src/types/3d.js +0 -337
  462. package/src/types/geojson.js +0 -42
  463. package/src/types/pmtiles.js +0 -143
  464. package/src/types/sunlight.js +0 -142
  465. package/src/types/terrain.js +0 -331
  466. package/src/types/traffic.js +0 -356
  467. package/src/types/walk.js +0 -219
  468. package/src/utils/model.js +0 -178
  469. package/src/utils/pmtiles.js +0 -79
  470. package/src/utils/scene.js +0 -102
  471. package/src/utils/sun.js +0 -71
  472. package/src/utils/terrain.js +0 -78
@@ -1,2 +1,2 @@
1
- import{box as f}from"./vehicles.js";const B=[.85,.64,.5],G=[.75,.2,.15],H=[.16,.2,.32],D=[.08,.07,.06],K={body:[[f(-.17,.17,-.1,.1),.82,.95,H],[f(-.19,.19,-.11,.11),.95,1.44,G],[f(-.05,.05,-.05,.05),1.44,1.5,B],[f(-.1,.1,-.11,.1),1.5,1.72,B],[f(-.105,.105,-.06,.115),1.58,1.77,D],[f(-.105,.105,-.115,-.06),1.7,1.77,D]],leg:[[f(-.07,.07,-.07,.07),-.82,0,H],[f(-.07,.07,-.17,.07),-.9,-.82,D]],arm:[[f(-.05,.05,-.05,.05),-.55,0,G],[f(-.045,.045,-.045,.045),-.66,-.55,B]]},N=[["body",0,0,0],["leg",-.09,.9,1],["leg",.09,.9,-1],["arm",-.25,1.42,-1],["arm",.25,1.42,1]],E=8,I=new WeakMap;function O(r){let p=I.get(r.geometry);if(p)return p;const o=r.worldMatrix,{position:{data:m},index:l,normal:g,uv:M}=r.geometry.attributes,e=l?l.count:m.length/3,d=[],y=[],h=new Map,t=[];for(let i=0;i<e;i+=3){const k=l?l.data[i]:i;if(r.program.nightLight&&M&&M.data[k*2]<=2)continue;for(let n=0;n<3;n++){const a=(l?l.data[i+n]:i+n)*3,x=m[a],R=m[a+1],W=m[a+2];t[n*3]=o[0]*x+o[4]*R+o[8]*W+o[12],t[n*3+1]=o[1]*x+o[5]*R+o[9]*W+o[13],t[n*3+2]=o[2]*x+o[6]*R+o[10]*W+o[14]}const w=t[3]-t[0],q=t[4]-t[1],L=t[5]-t[2],u=t[6]-t[0],z=t[7]-t[1],b=t[8]-t[2];let s=q*b-L*z,c=w*z-q*u;const j=L*u-w*b,F=Math.hypot(s,j,c);if(!F||Math.abs(j)>.9*F)continue;if(g){const n=k*3,a=g.data;(o[0]*a[n]+o[4]*a[n+1]+o[8]*a[n+2])*s+(o[2]*a[n]+o[6]*a[n+1]+o[10]*a[n+2])*c<0&&(s=-s,c=-c)}const A=Math.hypot(s,c),C=y.length/2;d.push(...t),y.push(s/A,c/A);for(let n=Math.floor(Math.min(t[0],t[3],t[6])/E);n<=Math.floor(Math.max(t[0],t[3],t[6])/E);n++)for(let a=Math.floor(Math.min(t[2],t[5],t[8])/E);a<=Math.floor(Math.max(t[2],t[5],t[8])/E);a++){const x=n+","+a;h.has(x)||h.set(x,[]),h.get(x).push(C)}}return p={tri:Float32Array.from(d),nrm:Float32Array.from(y),cells:h,origin:[o[12],o[13],o[14]]},I.set(r.geometry,p),p}function P(r,p,o,m,l,g,M){const e=p*9,d=r[e+3]-r[e],y=r[e+4]-r[e+1],h=r[e+5]-r[e+2],t=r[e+6]-r[e],i=r[e+7]-r[e+1],k=r[e+8]-r[e+2],w=-M*i,q=M*t-g*k,L=g*i,u=d*w+y*q+h*L;if(Math.abs(u)<1e-9)return-1;const z=o-r[e],b=m-r[e+1],s=l-r[e+2],c=(z*w+b*q+s*L)/u;if(c<0||c>1)return-1;const j=b*h-s*y,F=s*d-z*h,A=z*y-b*d,C=(g*j+M*A)/u;return C<0||c+C>1?-1:(t*j+i*F+k*A)/u}export{E as CELL,O as collider,P as horizontalRay,N as limbs,K as parts};
1
+ import*as Z from"./createMesh.js";import*as A from"./disposeMesh.js";import*as D from"./update.js";import{build as B}from"./build.js";import{getElevation as E}from"./getElevation.js";import{hit as I}from"./hit.js";import{limbs as u}from"./limbs.js";import{moves as y}from"./moves.js";import{parts as C}from"./parts.js";import{wrap as M}from"./wrap.js";function x(){const{layer:t,state:e}=this,i=t._map,s=i.options.crs,o=s.project(t.location),r=Math.cos(t.location.lat*Math.PI/180),n=s.project(e.latlng),l=i._terrain3D?._terrainReady&&i._terrain3D,a=l&&E(l,e.latlng)||0;return[(n.x-o.x)*r,a-t.root.position[1],-(n.y-o.y)*r]}function b(){const[t,e,i]=x.call(this),s=-this.state.heading,o=Math.cos(s),r=Math.sin(s);for(let n=0;n<u.length;n++){const[,l,a,c]=u[n],p=this.meshes[n];p.position[0]=t+l*o,p.position[1]=e+a,p.position[2]=i-l*r,p.rotation[0]=c*this.swing*Math.sin(this.state.phase),p.rotation[1]=s}D.update(this.layer)}function w(t,e,i){const s=Math.hypot(t,e);return s>1e-6&&I(this.layer,i[0],i[1],i[2],t/s,-e/s,s+.3)}function X(t){const e=this.layer,i=e._map;this.frame=requestAnimationFrame(this.step);const s=Math.min(.1,(t-(this.last??t))/1e3);if(this.last=t,!e.renderer)return;let o=!1;if(!this.meshes){this.meshes=[];for(const[a]of u)this.meshes.push(Z.createMesh(e,B(C[a])));o=!0}let r=0,n=0;for(const a of this.keys)r+=y[a]?.[0]||0,n+=y[a]?.[1]||0;if(r=Math.sign(r),n=Math.sign(n),n&&(this.state.heading=M(this.state.heading+n*2.5*s),o=!0),r){const a=r*this.speed*s,{lat:c,lng:p}=this.state.latlng,{position:k,scale:_}=e.root;let m=Math.sin(this.state.heading)*a,d=Math.cos(this.state.heading)*a;const f=x.call(this);for(let h=0;h<f.length;h++)f[h]=k[h]+_[h]*f[h];const g=w.call(this,m,d,f);if(g){const h=m*g[0]-d*g[1];m-=h*g[0],d+=h*g[1],w.call(this,m,d,f)&&(m=d=0)}this.state.latlng=new L.LatLng(c+d/111320,p+m/(111320*Math.cos(c*Math.PI/180))),this.state.phase+=Math.hypot(m,d)/1.6*Math.PI,o=!0}if(r||n){const a=i.getBearing()*Math.PI/180,c=M(-this.state.heading-a);Math.abs(c)>.001&&i._setPitchAndBearing(i.getPitch(),(a+c*Math.min(1,s*4))*180/Math.PI),i.setView(this.state.latlng,i.getZoom(),{animate:!1})}const l=r?.9:0;Math.abs(this.swing-l)>.001&&(this.swing+=(l-this.swing)*Math.min(1,s*10),o=!0),o&&b.call(this)}function Y(t){if(!(t.target.closest?.("input:not([type=checkbox], [type=radio]), select, textarea, [contenteditable]")||t.ctrlKey||t.altKey||t.metaKey)){if(t.type==="keydown"&&t.code==="Escape"){this.stop();return}y[t.code]&&(t.preventDefault(),t.type==="keydown"?this.keys.add(t.code):this.keys.delete(t.code))}}function j(){this.keys.clear()}function q(t){const e=this.layer._map;if(t.type==="pointerdown"){if(t.button!==0||t.target.closest(".leaflet-control"))return;this.drag={x:t.clientX,y:t.clientY},e.getContainer().setPointerCapture(t.pointerId)}else this.drag&&t.type==="pointermove"?(e._setPitchAndBearing(Math.max(20,Math.min(85,e.getPitch()-(t.clientY-this.drag.y)*.2)),e.getBearing()-(t.clientX-this.drag.x)*.25),this.drag={x:t.clientX,y:t.clientY}):this.drag=null}function O(){this.meshes&&b.call(this)}function K(){const t=this.layer._map;if(this.saved||!t)return;this.state.latlng=t.getCenter();const e=t.getSize().y*1.5/this.distance,i=Math.min(t.getMaxZoom(),Math.log2(e*4007501668557849e-8*Math.cos(this.state.latlng.lat*Math.PI/180)/256)),s=[];for(const o of["dragging","keyboard","doubleClickZoom","boxZoom"])t[o]?.enabled()&&s.push(o);this.saved={zoom:t.getZoom(),pitch:t.getPitch(),scrollWheelZoom:t.options.scrollWheelZoom,handlers:s};for(const o of this.saved.handlers)t[o].disable();t.options.scrollWheelZoom=this.saved.scrollWheelZoom&&"center",this.state.heading=-t.getBearing()*Math.PI/180,t.setView(this.state.latlng,i,{animate:!1}),t.setPitch(75),L.DomEvent.on(document,"keydown keyup",this.onKey),L.DomEvent.on(window,"blur",this.onBlur),L.DomEvent.on(t.getContainer(),"pointerdown pointermove pointerup pointercancel",this.onPointer),t.on("terrainchange",this.onTerrain),this.button.setAttribute("aria-pressed","true"),this.button.style.background="#e4e4e4",this.hint.style.display="",this.last=void 0,this.frame=requestAnimationFrame(this.step)}function P(){const t=this.layer._map;cancelAnimationFrame(this.frame),this.keys.clear(),this.drag=null,L.DomEvent.off(document,"keydown keyup",this.onKey),L.DomEvent.off(window,"blur",this.onBlur);for(const e of this.meshes||[])A.disposeMesh(this.layer,e);if(this.meshes=null,this.button.setAttribute("aria-pressed","false"),this.button.style.background="#fff",this.hint.style.display="none",!(!t||!this.saved)){L.DomEvent.off(t.getContainer(),"pointerdown pointermove pointerup pointercancel",this.onPointer),t.off("terrainchange",this.onTerrain),t.options.scrollWheelZoom=this.saved.scrollWheelZoom;for(const e of this.saved.handlers)t[e].enable();t.setView(this.state.latlng,this.saved.zoom,{animate:!1}),t.setPitch(this.saved.pitch),this.saved=null}}function S(){this.saved?P.call(this):K.call(this)}function G(){return this.container}function H(){this.ready=!0,this.layer._map&&this.control.addTo(this.layer._map)}function J(){this.ready&&this.control.addTo(this.layer._map)}function N(){P.call(this),this.control.remove()}export{w as blocked,G as controlOnAdd,x as local,j as onBlur,Y as onKey,J as onLayerAdd,N as onLayerRemove,q as onPointer,H as onReady,O as onTerrain,b as place,K as start,X as step,P as stop,S as toggle};
2
2
  //# sourceMappingURL=walk.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/utils/walk.js"],
4
- "sourcesContent": ["import { box } from './vehicles.js';\r\n\r\n// Pedestrian, about 1.77 m tall, prisms as in utils/vehicles.js (forward -z). Limbs hang from their pivot at y = 0.\r\nconst skin = [0.85, 0.64, 0.5], shirt = [0.75, 0.2, 0.15], trousers = [0.16, 0.2, 0.32], dark = [0.08, 0.07, 0.06];\r\nexport const parts = {\r\n body: [\r\n [box(-0.17, 0.17, -0.1, 0.1), 0.82, 0.95, trousers],\r\n [box(-0.19, 0.19, -0.11, 0.11), 0.95, 1.44, shirt],\r\n [box(-0.05, 0.05, -0.05, 0.05), 1.44, 1.5, skin],\r\n [box(-0.1, 0.1, -0.11, 0.1), 1.5, 1.72, skin],\r\n [box(-0.105, 0.105, -0.06, 0.115), 1.58, 1.77, dark],\r\n [box(-0.105, 0.105, -0.115, -0.06), 1.7, 1.77, dark],\r\n ],\r\n leg: [[box(-0.07, 0.07, -0.07, 0.07), -0.82, 0, trousers], [box(-0.07, 0.07, -0.17, 0.07), -0.9, -0.82, dark]],\r\n arm: [[box(-0.05, 0.05, -0.05, 0.05), -0.55, 0, shirt], [box(-0.045, 0.045, -0.045, 0.045), -0.66, -0.55, skin]],\r\n};\r\n// [part, pivot x, pivot y, swing sign]\r\nexport const limbs = [['body', 0, 0, 0], ['leg', -0.09, 0.9, 1], ['leg', 0.09, 0.9, -1], ['arm', -0.25, 1.42, -1], ['arm', 0.25, 1.42, 1]];\r\n// Walls (non-horizontal triangles) of a mesh in world space, bucketed by 8 m cells; `origin` is the world translation\r\n// at build time, since layer roots only move vertically with the terrain afterwards.\r\nexport const CELL = 8;\r\nconst colliders = new WeakMap();\r\nexport function collider(mesh) {\r\n let c = colliders.get(mesh.geometry);\r\n if (c) return c;\r\n const m = mesh.worldMatrix, { position: { data: p }, index, normal, uv } = mesh.geometry.attributes;\r\n const count = index ? index.count : p.length / 3, tri = [], nrm = [], cells = new Map(), v = [];\r\n for (let i = 0; i < count; i += 3) {\r\n const first = index ? index.data[i] : i;\r\n // Streetlight halos (uv.x <= 2, see scene/picking.js) are light, not matter.\r\n if (mesh.program.nightLight && uv && uv.data[first * 2] <= 2) continue;\r\n for (let k = 0; k < 3; k++) {\r\n const j = (index ? index.data[i + k] : i + k) * 3, x = p[j], y = p[j + 1], z = p[j + 2];\r\n v[k * 3] = m[0] * x + m[4] * y + m[8] * z + m[12];\r\n v[k * 3 + 1] = m[1] * x + m[5] * y + m[9] * z + m[13];\r\n v[k * 3 + 2] = m[2] * x + m[6] * y + m[10] * z + m[14];\r\n }\r\n const ex = v[3] - v[0], ey = v[4] - v[1], ez = v[5] - v[2], fx = v[6] - v[0], fy = v[7] - v[1], fz = v[8] - v[2];\r\n let nx = ey * fz - ez * fy, nz = ex * fy - ey * fx;\r\n const ny = ez * fx - ex * fz, length = Math.hypot(nx, ny, nz);\r\n if (!length || Math.abs(ny) > 0.9 * length) continue;\r\n if (normal) {\r\n // The stored normal tells the outside, whatever the winding.\r\n const j = first * 3, a = normal.data;\r\n if ((m[0] * a[j] + m[4] * a[j + 1] + m[8] * a[j + 2]) * nx + (m[2] * a[j] + m[6] * a[j + 1] + m[10] * a[j + 2]) * nz < 0) { nx = -nx; nz = -nz; }\r\n }\r\n const h = Math.hypot(nx, nz), t = nrm.length / 2;\r\n tri.push(...v); nrm.push(nx / h, nz / h);\r\n for (let ix = Math.floor(Math.min(v[0], v[3], v[6]) / CELL); ix <= Math.floor(Math.max(v[0], v[3], v[6]) / CELL); ix++)\r\n for (let iz = Math.floor(Math.min(v[2], v[5], v[8]) / CELL); iz <= Math.floor(Math.max(v[2], v[5], v[8]) / CELL); iz++) {\r\n const key = ix + ',' + iz;\r\n if (!cells.has(key)) cells.set(key, []);\r\n cells.get(key).push(t);\r\n }\r\n }\r\n c = { tri: Float32Array.from(tri), nrm: Float32Array.from(nrm), cells, origin: [m[12], m[13], m[14]] };\r\n colliders.set(mesh.geometry, c);\r\n return c;\r\n}\r\n\r\n// M\u00F6ller-Trumbore for the horizontal ray (ox, oy, oz) + d\u00B7(dx, 0, dz) against triangle t; returns d or -1.\r\nexport function horizontalRay(v, t, ox, oy, oz, dx, dz) {\r\n const i = t * 9, ex = v[i + 3] - v[i], ey = v[i + 4] - v[i + 1], ez = v[i + 5] - v[i + 2];\r\n const fx = v[i + 6] - v[i], fy = v[i + 7] - v[i + 1], fz = v[i + 8] - v[i + 2];\r\n const px = -dz * fy, py = dz * fx - dx * fz, pz = dx * fy, det = ex * px + ey * py + ez * pz;\r\n if (Math.abs(det) < 1e-9) return -1;\r\n const tx = ox - v[i], ty = oy - v[i + 1], tz = oz - v[i + 2], u = (tx * px + ty * py + tz * pz) / det;\r\n if (u < 0 || u > 1) return -1;\r\n const qx = ty * ez - tz * ey, qy = tz * ex - tx * ez, qz = tx * ey - ty * ex, w = (dx * qx + dz * qz) / det;\r\n if (w < 0 || u + w > 1) return -1;\r\n return (fx * qx + fy * qy + fz * qz) / det;\r\n}\r\n"],
5
- "mappings": "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",
6
- "names": ["box", "skin", "shirt", "trousers", "dark", "parts", "limbs", "CELL", "colliders", "collider", "mesh", "c", "m", "p", "index", "normal", "uv", "count", "tri", "nrm", "cells", "v", "first", "k", "j", "y", "z", "ex", "ey", "ez", "fx", "fy", "fz", "nx", "nz", "ny", "length", "h", "t", "ix", "iz", "key", "horizontalRay", "ox", "oy", "oz", "dx", "dz", "i", "px", "py", "pz", "det", "tx", "ty", "tz", "u", "qx", "qy", "qz", "w"]
4
+ "sourcesContent": ["import * as createMesh from './createMesh.js';\r\nimport * as disposeMesh from './disposeMesh.js';\r\nimport * as update from './update.js';\r\nimport { build } from './build.js';\r\nimport { getElevation } from './getElevation.js';\r\nimport { hit } from './hit.js';\r\nimport { limbs } from './limbs.js';\r\nimport { moves } from './moves.js';\r\nimport { parts } from './parts.js';\r\nimport { wrap } from './wrap.js';\r\n\r\nexport function local() {\r\n const { layer, state } = this;\r\n const map = layer._map, crs = map.options.crs, origin = crs.project(layer.location);\r\n const metres = Math.cos(layer.location.lat * Math.PI / 180);\r\n const p = crs.project(state.latlng), terrain = map._terrain3D?._terrainReady && map._terrain3D;\r\n const ground = (terrain && getElevation(terrain, state.latlng)) || 0;\r\n return [(p.x - origin.x) * metres, ground - layer.root.position[1], -(p.y - origin.y) * metres];\r\n}\r\n\r\nexport function place() {\r\n const [x, y, z] = local.call(this);\r\n // Model forward is -z; a yaw of -heading turns it to the compass heading (x east, -z north).\r\n const yaw = -this.state.heading, cos = Math.cos(yaw), sin = Math.sin(yaw);\r\n for (let i = 0; i < limbs.length; i++) {\r\n const [, px, py, sign] = limbs[i];\r\n const mesh = this.meshes[i];\r\n mesh.position[0] = x + px * cos; mesh.position[1] = y + py; mesh.position[2] = z - px * sin;\r\n mesh.rotation[0] = sign * this.swing * Math.sin(this.state.phase);\r\n mesh.rotation[1] = yaw;\r\n }\r\n update.update(this.layer);\r\n}\r\n\r\nexport function blocked(east, north, feet) {\r\n const length = Math.hypot(east, north);\r\n return length > 1e-6 && hit(this.layer, feet[0], feet[1], feet[2], east / length, -north / length, length + 0.3);\r\n}\r\n\r\nexport function step(now) {\r\n const layer = this.layer, map = layer._map;\r\n this.frame = requestAnimationFrame(this.step);\r\n const dt = Math.min(0.1, (now - (this.last ?? now)) / 1000);\r\n this.last = now;\r\n if (!layer.renderer) return;\r\n let changed = false;\r\n if (!this.meshes) {\r\n this.meshes = [];\r\n for (const [part] of limbs) this.meshes.push(createMesh.createMesh(layer, build(parts[part])));\r\n changed = true;\r\n }\r\n let forward = 0, turn = 0;\r\n for (const key of this.keys) { forward += moves[key]?.[0] || 0; turn += moves[key]?.[1] || 0; }\r\n forward = Math.sign(forward); turn = Math.sign(turn);\r\n if (turn) { this.state.heading = wrap(this.state.heading + turn * 2.5 * dt); changed = true; }\r\n if (forward) {\r\n const metres = forward * this.speed * dt, { lat, lng } = this.state.latlng, { position, scale } = layer.root;\r\n let east = Math.sin(this.state.heading) * metres, north = Math.cos(this.state.heading) * metres;\r\n const feet = local.call(this);\r\n for (let i = 0; i < feet.length; i++) feet[i] = position[i] + scale[i] * feet[i];\r\n // World x is east, z south; keep 0.3 m from walls and slide along the one in the way.\r\n const wall = blocked.call(this, east, north, feet);\r\n if (wall) {\r\n const into = east * wall[0] - north * wall[1];\r\n east -= into * wall[0]; north += into * wall[1];\r\n if (blocked.call(this, east, north, feet)) east = north = 0;\r\n }\r\n this.state.latlng = new L.LatLng(lat + north / 111320, lng + east / (111320 * Math.cos(lat * Math.PI / 180)));\r\n this.state.phase += Math.hypot(east, north) / 1.6 * Math.PI;\r\n changed = true;\r\n }\r\n if (forward || turn) {\r\n // The camera (looking along -bearing) swings back behind the walker.\r\n const bearing = map.getBearing() * Math.PI / 180, behind = wrap(-this.state.heading - bearing);\r\n if (Math.abs(behind) > 1e-3) map._setPitchAndBearing(map.getPitch(), (bearing + behind * Math.min(1, dt * 4)) * 180 / Math.PI);\r\n map.setView(this.state.latlng, map.getZoom(), { animate: false });\r\n }\r\n const target = forward ? 0.9 : 0;\r\n if (Math.abs(this.swing - target) > 1e-3) { this.swing += (target - this.swing) * Math.min(1, dt * 10); changed = true; }\r\n if (changed) place.call(this);\r\n}\r\n\r\nexport function onKey(event) {\r\n // Text fields and sliders keep their keys; buttons and checkboxes don't.\r\n if (event.target.closest?.('input:not([type=checkbox], [type=radio]), select, textarea, [contenteditable]') ||\r\n event.ctrlKey || event.altKey || event.metaKey) return;\r\n if (event.type === 'keydown' && event.code === 'Escape') { this.stop(); return; }\r\n if (!moves[event.code]) return;\r\n event.preventDefault();\r\n if (event.type === 'keydown') this.keys.add(event.code); else this.keys.delete(event.code);\r\n}\r\n\r\nexport function onBlur() {\r\n this.keys.clear();\r\n}\r\n\r\nexport function onPointer(event) {\r\n // Dragging only turns the camera around the walker: horizontal = bearing, vertical = pitch.\r\n const map = this.layer._map;\r\n if (event.type === 'pointerdown') {\r\n if (event.button !== 0 || event.target.closest('.leaflet-control')) return;\r\n this.drag = { x: event.clientX, y: event.clientY };\r\n map.getContainer().setPointerCapture(event.pointerId);\r\n } else if (this.drag && event.type === 'pointermove') {\r\n map._setPitchAndBearing(Math.max(20, Math.min(85, map.getPitch() - (event.clientY - this.drag.y) * 0.2)),\r\n map.getBearing() - (event.clientX - this.drag.x) * 0.25);\r\n this.drag = { x: event.clientX, y: event.clientY };\r\n } else this.drag = null;\r\n}\r\n\r\nexport function onTerrain() {\r\n if (this.meshes) place.call(this);\r\n}\r\n\r\nexport function start() {\r\n const map = this.layer._map;\r\n if (this.saved || !map) return;\r\n this.state.latlng = map.getCenter();\r\n // Zoom whose camera distance (1.5 viewport heights, as in scene/render.js) is about `distance` metres behind the walker.\r\n const pixelsPerMetre = map.getSize().y * 1.5 / this.distance;\r\n const zoom = Math.min(map.getMaxZoom(), Math.log2(pixelsPerMetre * 40075016.68557849 * Math.cos(this.state.latlng.lat * Math.PI / 180) / 256));\r\n const handlers = [];\r\n for (const name of ['dragging', 'keyboard', 'doubleClickZoom', 'boxZoom']) {\r\n if (map[name]?.enabled()) handlers.push(name);\r\n }\r\n this.saved = {\r\n zoom: map.getZoom(), pitch: map.getPitch(), scrollWheelZoom: map.options.scrollWheelZoom, handlers\r\n };\r\n for (const name of this.saved.handlers) map[name].disable();\r\n // Wheel zoom moves the camera closer or farther, keeping the walker centred.\r\n map.options.scrollWheelZoom = this.saved.scrollWheelZoom && 'center';\r\n this.state.heading = -map.getBearing() * Math.PI / 180;\r\n map.setView(this.state.latlng, zoom, { animate: false });\r\n map.setPitch(75);\r\n L.DomEvent.on(document, 'keydown keyup', this.onKey);\r\n L.DomEvent.on(window, 'blur', this.onBlur);\r\n L.DomEvent.on(map.getContainer(), 'pointerdown pointermove pointerup pointercancel', this.onPointer);\r\n map.on('terrainchange', this.onTerrain);\r\n this.button.setAttribute('aria-pressed', 'true');\r\n this.button.style.background = '#e4e4e4';\r\n this.hint.style.display = '';\r\n this.last = undefined;\r\n this.frame = requestAnimationFrame(this.step);\r\n}\r\n\r\nexport function stop() {\r\n const map = this.layer._map;\r\n cancelAnimationFrame(this.frame);\r\n this.keys.clear(); this.drag = null;\r\n L.DomEvent.off(document, 'keydown keyup', this.onKey);\r\n L.DomEvent.off(window, 'blur', this.onBlur);\r\n for (const mesh of this.meshes || []) disposeMesh.disposeMesh(this.layer, mesh);\r\n this.meshes = null;\r\n this.button.setAttribute('aria-pressed', 'false');\r\n this.button.style.background = '#fff';\r\n this.hint.style.display = 'none';\r\n if (!map || !this.saved) return;\r\n L.DomEvent.off(map.getContainer(), 'pointerdown pointermove pointerup pointercancel', this.onPointer);\r\n map.off('terrainchange', this.onTerrain);\r\n map.options.scrollWheelZoom = this.saved.scrollWheelZoom;\r\n for (const name of this.saved.handlers) map[name].enable();\r\n map.setView(this.state.latlng, this.saved.zoom, { animate: false });\r\n map.setPitch(this.saved.pitch);\r\n this.saved = null;\r\n}\r\n\r\nexport function toggle() {\r\n if (this.saved) stop.call(this); else start.call(this);\r\n}\r\n\r\nexport function controlOnAdd() {\r\n return this.container;\r\n}\r\n\r\nexport function onReady() {\r\n this.ready = true;\r\n if (this.layer._map) this.control.addTo(this.layer._map);\r\n}\r\n\r\nexport function onLayerAdd() {\r\n if (this.ready) this.control.addTo(this.layer._map);\r\n}\r\n\r\nexport function onLayerRemove() {\r\n stop.call(this);\r\n this.control.remove();\r\n}\r\n"],
5
+ "mappings": "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",
6
+ "names": ["createMesh", "disposeMesh", "update", "build", "getElevation", "hit", "limbs", "moves", "parts", "wrap", "local", "layer", "state", "map", "crs", "origin", "metres", "p", "terrain", "ground", "place", "x", "y", "z", "yaw", "cos", "sin", "i", "px", "py", "sign", "mesh", "blocked", "east", "north", "feet", "length", "step", "now", "dt", "changed", "part", "forward", "turn", "key", "lat", "lng", "position", "scale", "wall", "into", "bearing", "behind", "target", "onKey", "event", "onBlur", "onPointer", "onTerrain", "start", "pixelsPerMetre", "zoom", "handlers", "name", "stop", "toggle", "controlOnAdd", "onReady", "onLayerAdd", "onLayerRemove"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ const t=[.92,.93,.92];export{t as white};
2
+ //# sourceMappingURL=white.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/white.js"],
4
+ "sourcesContent": ["export const white = [0.92, 0.93, 0.92];\n"],
5
+ "mappings": "AAAO,MAAMA,EAAQ,CAAC,IAAM,IAAM,GAAI",
6
+ "names": ["white"]
7
+ }
@@ -0,0 +1,2 @@
1
+ function u(a,t){const s=new Float32Array(a.length*8);return a.forEach(({position:[o,n,r],radius:c,color:h,flux:i},l)=>{const e=t[3]*o+t[7]*n+t[11]*r+t[15];s.set([(t[0]*o+t[4]*n+t[8]*r+t[12])/e,(t[1]*o+t[5]*n+t[9]*r+t[13])/e,(t[2]*o+t[6]*n+t[10]*r+t[14])/e,c,...h,i/(4*Math.PI)*.03],l*8)}),s}export{u as worldLights};
2
+ //# sourceMappingURL=worldLights.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/worldLights.js"],
4
+ "sourcesContent": ["\n/** World-space [x, y, z, radius, r, g, b, intensity] for one mesh's point lights. */\nexport function worldLights(lights, m) {\n const values = new Float32Array(lights.length * 8);\n lights.forEach(({\n position: [x, y, z],\n radius,\n color,\n flux\n }, i) => {\n const w = m[3] * x + m[7] * y + m[11] * z + m[15];\n values.set(\n [\n (m[0] * x + m[4] * y + m[8] * z + m[12]) / w,\n (m[1] * x + m[5] * y + m[9] * z + m[13]) / w,\n (m[2] * x + m[6] * y + m[10] * z + m[14]) / w,\n radius,\n ...color,\n flux / (4 * Math.PI) * 0.03\n ],\n i * 8\n );\n });\n return values;\n}"],
5
+ "mappings": "AAEO,SAASA,EAAYC,EAAQC,EAAG,CACrC,MAAMC,EAAS,IAAI,aAAaF,EAAO,OAAS,CAAC,EACjD,OAAAA,EAAO,QAAQ,CAAC,CACd,SAAU,CAACG,EAAGC,EAAGC,CAAC,EAClB,OAAAC,EACA,MAAAC,EACA,KAAAC,CACF,EAAGC,IAAM,CACP,MAAMC,EAAIT,EAAE,CAAC,EAAIE,EAAIF,EAAE,CAAC,EAAIG,EAAIH,EAAE,EAAE,EAAII,EAAIJ,EAAE,EAAE,EAChDC,EAAO,IACL,EACGD,EAAE,CAAC,EAAIE,EAAIF,EAAE,CAAC,EAAIG,EAAIH,EAAE,CAAC,EAAII,EAAIJ,EAAE,EAAE,GAAKS,GAC1CT,EAAE,CAAC,EAAIE,EAAIF,EAAE,CAAC,EAAIG,EAAIH,EAAE,CAAC,EAAII,EAAIJ,EAAE,EAAE,GAAKS,GAC3CT,EAAE,CAAC,EAAIE,EAAIF,EAAE,CAAC,EAAIG,EAAIH,EAAE,EAAE,EAAII,EAAIJ,EAAE,EAAE,GAAKS,EAC5CJ,EACA,GAAGC,EACHC,GAAQ,EAAI,KAAK,IAAM,GACxB,EACCC,EAAI,CACP,CACF,CAAC,EACMP,CACT",
6
+ "names": ["worldLights", "lights", "m", "values", "x", "y", "z", "radius", "color", "flux", "i", "w"]
7
+ }
@@ -0,0 +1,2 @@
1
+ const a=t=>Math.atan2(Math.sin(t),Math.cos(t));export{a as wrap};
2
+ //# sourceMappingURL=wrap.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/wrap.js"],
4
+ "sourcesContent": ["export const wrap = angle => Math.atan2(Math.sin(angle), Math.cos(angle));\n"],
5
+ "mappings": "AAAO,MAAMA,EAAOC,GAAS,KAAK,MAAM,KAAK,IAAIA,CAAK,EAAG,KAAK,IAAIA,CAAK,CAAC",
6
+ "names": ["wrap", "angle"]
7
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "leaflet-city-mapper",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "description": "A small 3D rendering engine for leaflet",
5
5
  "type": "module",
6
6
  "main": "dist/leaflet-city-mapper.js",
@@ -19,7 +19,6 @@
19
19
  },
20
20
  "keywords": [
21
21
  "leaflet",
22
- "leaflet-rotate",
23
22
  "3d",
24
23
  "rotation",
25
24
  "webgpu",
@@ -36,8 +35,7 @@
36
35
  },
37
36
  "homepage": "https://github.com/Raruto/leaflet-city-mapper#readme",
38
37
  "peerDependencies": {
39
- "leaflet": "^1.9.3 || ^2.0.0-alpha.1",
40
- "leaflet-rotate": "^0.5.3"
38
+ "leaflet": "^1.9.3 || ^2.0.0-alpha.1"
41
39
  },
42
40
  "devDependencies": {
43
41
  "@cucumber/cucumber": "^10.3.1",