leaflet-city-mapper 0.1.0 → 0.1.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 (515) hide show
  1. package/README.md +1 -1
  2. package/dist/leaflet-city-mapper-src.js.map +1 -1
  3. package/dist/leaflet-city-mapper-worker-src.js.map +1 -1
  4. package/dist/leaflet-city-mapper-worker.js.map +1 -1
  5. package/dist/leaflet-city-mapper.js.map +1 -1
  6. package/libs/leaflet-lens.js +151 -151
  7. package/libs/leaflet.js +3 -3
  8. package/libs/openlayers-bindings.js +1129 -1129
  9. package/libs/openlayers-bindings.min.js.map +1 -1
  10. package/package.json +2 -4
  11. package/src/animations/cancelCameraAnimation.js +19 -19
  12. package/src/animations/mapStopPitchBearingAnimation.js +10 -10
  13. package/src/animations/scheduleCameraAnimation.js +15 -15
  14. package/src/animations/scheduleMarkerPan.js +14 -14
  15. package/src/animations/updateZoomCamera.js +25 -25
  16. package/src/archives/findDirectoryEntry.js +17 -17
  17. package/src/archives/findTile.js +45 -45
  18. package/src/archives/getDirectoryEntries.js +30 -30
  19. package/src/archives/getTileData.js +26 -26
  20. package/src/archives/readArchiveRange.js +48 -48
  21. package/src/astronomy/solarTime.js +21 -21
  22. package/src/camera/cameraMapReady.js +9 -9
  23. package/src/camera/cleanupCameraMap.js +13 -13
  24. package/src/camera/constrainCameraToBounds.js +3 -3
  25. package/src/camera/createSceneCamera.js +25 -25
  26. package/src/camera/getBearing.js +10 -10
  27. package/src/camera/getPitch.js +10 -10
  28. package/src/camera/mapGetBoundsCenterZoom.js +14 -14
  29. package/src/camera/mapLimitOffset.js +17 -17
  30. package/src/camera/mapPanBy.js +14 -14
  31. package/src/camera/setBearing.js +13 -13
  32. package/src/camera/setPitch.js +13 -13
  33. package/src/cog/decodeCogTile.js +37 -37
  34. package/src/cog/finiteCogValues.js +12 -12
  35. package/src/cog/getCogAssetEntry.js +26 -26
  36. package/src/cog/getCogBase.js +22 -22
  37. package/src/cog/getCogHeader.js +10 -10
  38. package/src/cog/getCogProfile.js +25 -25
  39. package/src/cog/getCogTile.js +25 -25
  40. package/src/cog/getColorTile.js +38 -38
  41. package/src/cog/getElevationTile.js +29 -29
  42. package/src/cog/hasCogProjection.js +16 -16
  43. package/src/cog/initCog.js +13 -13
  44. package/src/cog/invalidCogFullResponse.js +10 -10
  45. package/src/cog/openCog.js +40 -40
  46. package/src/cog/openCogAsset.js +22 -22
  47. package/src/cog/readCog.js +39 -39
  48. package/src/cog/readCogBlock.js +19 -19
  49. package/src/cog/readCogBody.js +30 -30
  50. package/src/cog/readCogDirectories.js +32 -32
  51. package/src/cog/readCogDirectory.js +34 -34
  52. package/src/cog/readCogLevel.js +36 -36
  53. package/src/cog/readCogTag.js +28 -28
  54. package/src/cog/validCogDimensions.js +15 -15
  55. package/src/cog/validCogEncoding.js +18 -18
  56. package/src/cog/validCogGeoArrays.js +17 -17
  57. package/src/cog/validCogGrid.js +22 -22
  58. package/src/cog/validCogTileCoordinates.js +13 -13
  59. package/src/cog/validateCogContainer.js +17 -17
  60. package/src/cog/validateCogContentRange.js +18 -18
  61. package/src/cog/validateCogOffsets.js +19 -19
  62. package/src/cog/validateCogRange.js +16 -16
  63. package/src/cog/validateCogResponse.js +26 -26
  64. package/src/collision/collectIntersections.js +41 -41
  65. package/src/collision/hiddenLightHit.js +19 -19
  66. package/src/collision/indexTriangle.js +18 -18
  67. package/src/collision/insideMesh.js +47 -47
  68. package/src/collision/insideWalker.js +52 -52
  69. package/src/collision/intersectMeshes.js +40 -40
  70. package/src/collision/localRay.js +31 -31
  71. package/src/collision/mergeHits.js +19 -19
  72. package/src/collision/rayBounds.js +28 -28
  73. package/src/collision/readTriangle.js +32 -32
  74. package/src/collision/trafficCollision.js +23 -23
  75. package/src/collision/transformTriangle.js +18 -18
  76. package/src/collision/triangleDistance.js +34 -34
  77. package/src/collision/vertexCount.js +11 -11
  78. package/src/collision/worldHit.js +30 -30
  79. package/src/controls/acceptPitchDrag.js +10 -10
  80. package/src/controls/acceptRotateDrag.js +9 -9
  81. package/src/controls/addCameraHandler.js +18 -18
  82. package/src/controls/adjustCameraDrag.js +13 -13
  83. package/src/controls/cameraDragContextMenu.js +12 -12
  84. package/src/controls/cameraDragEnd.js +10 -10
  85. package/src/controls/cameraDragMove.js +31 -31
  86. package/src/controls/changeCameraTouch.js +17 -17
  87. package/src/controls/compassOrientation.js +12 -12
  88. package/src/controls/compassRemoveHooks.js +2 -2
  89. package/src/controls/containerResizeRemoveHooks.js +2 -2
  90. package/src/controls/endCameraTouch.js +18 -18
  91. package/src/controls/failCompassPermission.js +10 -10
  92. package/src/controls/finishCameraDrag.js +14 -14
  93. package/src/controls/finishCompassPermission.js +24 -24
  94. package/src/controls/isEditableTarget.js +9 -9
  95. package/src/controls/loadCameraControls.js +18 -18
  96. package/src/controls/moveCameraTouch.js +34 -34
  97. package/src/controls/refreshRotateFocus.js +5 -5
  98. package/src/controls/removeCameraDrag.js +28 -28
  99. package/src/controls/resizeMap.js +7 -7
  100. package/src/controls/rotateButtonClick.js +16 -16
  101. package/src/controls/rotateButtonKeydown.js +20 -20
  102. package/src/controls/rotateControl.js +12 -12
  103. package/src/controls/shiftRotateRemoveHooks.js +2 -2
  104. package/src/controls/shiftRotateWheel.js +15 -15
  105. package/src/core/cameraMarkerOnDrag.js +16 -16
  106. package/src/core/constructLayer.js +16 -16
  107. package/src/core/extendLeafletClass.js +12 -12
  108. package/src/core/extendTerrainPixelBounds.js +41 -41
  109. package/src/core/layerAddInitHook.js +12 -12
  110. package/src/core/layerMergeOptions.js +14 -14
  111. package/src/core/markerInitInteraction.js +10 -10
  112. package/src/core/markerSetIcon.js +14 -14
  113. package/src/core/markerSetRotation.js +19 -19
  114. package/src/core/projectNativePath.js +30 -30
  115. package/src/core/redrawPath.js +11 -11
  116. package/src/core/removeLayer.js +26 -26
  117. package/src/core/setRotation.js +12 -12
  118. package/src/core/whenReady.js +14 -14
  119. package/src/geometry/addBridges.js +36 -36
  120. package/src/geometry/addGeneratedTriangle.js +10 -10
  121. package/src/geometry/appendAreaTriangle.js +32 -32
  122. package/src/geometry/appendNativeTriangle.js +17 -17
  123. package/src/geometry/appendRouteDash.js +33 -33
  124. package/src/geometry/appendRouteSegment.js +28 -28
  125. package/src/geometry/assembleAreaGeometry.js +48 -48
  126. package/src/geometry/bridgeEdge.js +18 -18
  127. package/src/geometry/bridgeFaces.js +22 -22
  128. package/src/geometry/bridgePaths.js +19 -19
  129. package/src/geometry/bridgePolygon.js +37 -37
  130. package/src/geometry/bridgeSides.js +18 -18
  131. package/src/geometry/buildProjectedPoint.js +32 -32
  132. package/src/geometry/buildProjectedPolygon.js +34 -34
  133. package/src/geometry/circleAt.js +20 -20
  134. package/src/geometry/circleGeometry.js +41 -41
  135. package/src/geometry/createModelGeometry.js +44 -44
  136. package/src/geometry/crossVector.js +15 -15
  137. package/src/geometry/dashValues.js +23 -23
  138. package/src/geometry/dashedSegment.js +33 -33
  139. package/src/geometry/diskAt.js +18 -18
  140. package/src/geometry/emitter.js +18 -18
  141. package/src/geometry/fillNativePolygon.js +28 -28
  142. package/src/geometry/generateTreeGeometry.js +18 -18
  143. package/src/geometry/indexBridge.js +36 -36
  144. package/src/geometry/instanceAreaGeometry.js +37 -37
  145. package/src/geometry/line.js +28 -28
  146. package/src/geometry/lineJoin.js +35 -35
  147. package/src/geometry/markerImageBounds.js +20 -20
  148. package/src/geometry/meshShadowBounds.js +33 -33
  149. package/src/geometry/offsetBelowGround.js +10 -10
  150. package/src/geometry/quad.js +23 -23
  151. package/src/geometry/restoreGeometry.js +29 -29
  152. package/src/geometry/roofCoverage.js +33 -33
  153. package/src/geometry/roofFootprint.js +40 -40
  154. package/src/geometry/samePoint.js +11 -11
  155. package/src/geometry/segment.js +32 -32
  156. package/src/geometry/subtractRoofTile.js +28 -28
  157. package/src/geometry/terrainBuffers.js +36 -36
  158. package/src/geometry/terrainTileGeometry.js +28 -28
  159. package/src/geometry/validateTree.js +19 -19
  160. package/src/globals/L.js +6 -6
  161. package/src/globals/cameraFov.js +8 -8
  162. package/src/globals/cogTags.js +6 -6
  163. package/src/globals/colorTexture.js +11 -11
  164. package/src/globals/cosObliquity.js +8 -8
  165. package/src/globals/degrees.js +6 -6
  166. package/src/globals/earthCirc.js +6 -6
  167. package/src/globals/geometryWorkerUrl.js +8 -8
  168. package/src/globals/halfRadians.js +6 -6
  169. package/src/globals/lampDirections.js +13 -13
  170. package/src/globals/layerControlAddItem.js +8 -8
  171. package/src/globals/leafletLayer.js +8 -8
  172. package/src/globals/lightScale.js +6 -6
  173. package/src/globals/mvtTextDecoder.js +6 -6
  174. package/src/globals/nativeScalableStyleKeys.js +6 -6
  175. package/src/globals/sinObliquity.js +8 -8
  176. package/src/globals/tau.js +6 -6
  177. package/src/globals/vectorStyleNamedColors.js +13 -13
  178. package/src/globals/vectorTileEvents.js +6 -6
  179. package/src/globals/workerCogSource.js +6 -6
  180. package/src/gpu/initializeRendererResources.js +39 -39
  181. package/src/gpu/initializeSharedRenderer.js +59 -59
  182. package/src/gpu/mountRenderer.js +25 -25
  183. package/src/layer-controls/layerControlInputId.js +18 -18
  184. package/src/layer-controls/layerCountTitle.js +16 -16
  185. package/src/layer-controls/placeEntryElement.js +29 -29
  186. package/src/layer-controls/renderLayerCount.js +28 -28
  187. package/src/lighting/visitLightCells.js +26 -26
  188. package/src/lighting/writeLightCell.js +14 -14
  189. package/src/materials/createProgramLayout.js +44 -44
  190. package/src/materials/createProgramUniforms.js +25 -25
  191. package/src/materials/modelMaterialFor.js +29 -29
  192. package/src/materials/prepareMeshCutout.js +21 -21
  193. package/src/materials/terrainRasterProgram.js +65 -65
  194. package/src/materials/validateRoofMaterial.js +17 -17
  195. package/src/models/applyModelTransform.js +18 -18
  196. package/src/models/buildModelNodes.js +24 -24
  197. package/src/models/createModelContext.js +24 -24
  198. package/src/models/loadBuffer.js +16 -16
  199. package/src/models/loadModelResources.js +22 -22
  200. package/src/models/normalizeAccessor.js +21 -21
  201. package/src/models/prepareModel.js +29 -29
  202. package/src/models/prepareModelGeometry.js +35 -35
  203. package/src/models/prepareModelPrimitive.js +25 -25
  204. package/src/models/readAccessorValue.js +16 -16
  205. package/src/models/readModelAttributes.js +32 -32
  206. package/src/models/readModelIndices.js +28 -28
  207. package/src/models/readSparseAccessor.js +31 -31
  208. package/src/models/releaseModelResources.js +15 -15
  209. package/src/mvt/addMvtCrossings.js +23 -23
  210. package/src/mvt/appendMvtBandTriangles.js +42 -42
  211. package/src/mvt/appendMvtCoordinates.js +20 -20
  212. package/src/mvt/appendMvtPolygonTriangles.js +29 -29
  213. package/src/mvt/beginMvtPath.js +19 -19
  214. package/src/mvt/closeMvtPath.js +16 -16
  215. package/src/mvt/collectMvtEdges.js +29 -29
  216. package/src/mvt/createMvtReader.js +14 -14
  217. package/src/mvt/decodeVectorTile.js +39 -39
  218. package/src/mvt/expectMvtWire.js +11 -11
  219. package/src/mvt/finishMvtPath.js +14 -14
  220. package/src/mvt/finiteMvtCoordinate.js +14 -14
  221. package/src/mvt/groupMvtPolygons.js +35 -35
  222. package/src/mvt/isMvtFallbackError.js +13 -13
  223. package/src/mvt/mergeMvtActiveEdges.js +18 -18
  224. package/src/mvt/mvtEdgeX.js +12 -12
  225. package/src/mvt/mvtPathsVertices.js +15 -15
  226. package/src/mvt/mvtPolygonPaths.js +19 -19
  227. package/src/mvt/numericMvtValue.js +11 -11
  228. package/src/mvt/readMvtFeature.js +46 -46
  229. package/src/mvt/readMvtField.js +17 -17
  230. package/src/mvt/readMvtGeometry.js +42 -42
  231. package/src/mvt/readMvtInteger.js +22 -22
  232. package/src/mvt/readMvtKnownValue.js +30 -30
  233. package/src/mvt/readMvtLayer.js +40 -40
  234. package/src/mvt/readMvtMessage.js +18 -18
  235. package/src/mvt/readMvtNumber.js +18 -18
  236. package/src/mvt/readMvtNumbers.js +18 -18
  237. package/src/mvt/readMvtString.js +14 -14
  238. package/src/mvt/readMvtValue.js +29 -29
  239. package/src/mvt/skipMvtField.js +22 -22
  240. package/src/mvt/sortMvtActiveEdges.js +20 -20
  241. package/src/mvt/sortedMvtLevels.js +29 -29
  242. package/src/mvt/takeMvtBytes.js +18 -18
  243. package/src/mvt/tessellateVectorRings.js +26 -26
  244. package/src/mvt/triangulateVectorRings.js +23 -23
  245. package/src/native/beforeNativeRender.js +21 -21
  246. package/src/native/bypassNativeEvent.js +21 -21
  247. package/src/native/canScaleNativeStyle.js +26 -26
  248. package/src/native/compareNativeHits.js +10 -10
  249. package/src/native/createNativeMesh.js +46 -46
  250. package/src/native/forwardNativeError.js +8 -8
  251. package/src/native/getGridTerrainTile.js +47 -47
  252. package/src/native/gridTerrainElevation.js +34 -34
  253. package/src/native/isCurrentNativeLayer.js +11 -11
  254. package/src/native/loadGridTerrain.js +36 -36
  255. package/src/native/nativeEventSource.js +27 -27
  256. package/src/native/nativeProgram.js +28 -28
  257. package/src/native/nativeTerrainElevation.js +27 -27
  258. package/src/native/nativeVectorGeometry.js +30 -30
  259. package/src/native/orderNativeGridLayer.js +20 -20
  260. package/src/native/prepareGridTerrainRequests.js +23 -23
  261. package/src/native/pruneNativeResources.js +25 -25
  262. package/src/native/readyNativeGPU.js +13 -13
  263. package/src/native/rejectNativeReady.js +2 -2
  264. package/src/native/removeNativeEvents.js +20 -20
  265. package/src/native/resolveNativeReady.js +2 -2
  266. package/src/native/restoreNativeEvents.js +8 -8
  267. package/src/native/retainGridTerrain.js +15 -15
  268. package/src/native/styleNativeMesh.js +20 -20
  269. package/src/native/syncGridTile.js +28 -28
  270. package/src/native/syncImageOverlay.js +13 -13
  271. package/src/native/syncNativeStrokeAnchors.js +18 -18
  272. package/src/native/syncNativeStrokeZoom.js +34 -34
  273. package/src/native/syncTerrainGridTile.js +38 -38
  274. package/src/native/terrainGridMesh.js +47 -47
  275. package/src/native/updateNativeHover.js +15 -15
  276. package/src/native/updateNativeStrokeRadius.js +14 -14
  277. package/src/picking/hitColliderCell.js +29 -29
  278. package/src/picking/validateCameraInverse.js +15 -15
  279. package/src/projections/displayContainerPoint.js +32 -32
  280. package/src/projections/projectBridgePoint.js +17 -17
  281. package/src/projections/toPoint.js +13 -13
  282. package/src/projections/transformZoomAnimationPoint.js +8 -8
  283. package/src/projections/verticalGroundY.js +14 -14
  284. package/src/raster/rasterTileRange.js +32 -32
  285. package/src/raster/retainRasterTiles.js +21 -21
  286. package/src/rendering/collectVisibleMesh.js +48 -48
  287. package/src/rendering/compareMeshDepth.js +14 -14
  288. package/src/rendering/drawPipeline.js +44 -44
  289. package/src/rendering/nativeStrokeExpansion.js +11 -11
  290. package/src/rendering/prepareFrameBuffer.js +24 -24
  291. package/src/rendering/prepareMeshUniforms.js +36 -36
  292. package/src/rendering/revealRoofMesh.js +43 -43
  293. package/src/scene/addSceneLayer.js +24 -24
  294. package/src/scene/callLayer.js +34 -34
  295. package/src/scene/createLayer.js +13 -13
  296. package/src/scene/getLocation.js +12 -12
  297. package/src/scene/isNativeLayer.js +19 -19
  298. package/src/scene/removeSceneLayer.js +22 -22
  299. package/src/scene/reportLayerError.js +9 -9
  300. package/src/shaders/materialBaseShader.js +26 -26
  301. package/src/shaders/materialSurfaceShader.js +60 -60
  302. package/src/shaders/materialVertexShader.js +89 -89
  303. package/src/shaders/nativeStrokeShader.js +13 -13
  304. package/src/shaders/roofVertexShader.js +16 -16
  305. package/src/shadows/shadowMeshMatches.js +19 -19
  306. package/src/sources/buildAreaFeatures.js +23 -23
  307. package/src/sources/extrusionStyle.js +21 -21
  308. package/src/sources/featureAnchor.js +21 -21
  309. package/src/sources/groundOffset.js +9 -9
  310. package/src/sources/initVectorTiles.js +21 -21
  311. package/src/sources/isVectorTileSource.js +11 -11
  312. package/src/sources/matchesAreaTile.js +17 -17
  313. package/src/sources/pendingSourceAreas.js +28 -28
  314. package/src/sources/prepareAreaGeometryJob.js +34 -34
  315. package/src/sources/projectAreaPolygons.js +25 -25
  316. package/src/sources/readyVectorTiles.js +17 -17
  317. package/src/sunlight/addTimeControlToMap.js +18 -18
  318. package/src/sunlight/addTimeLayer.js +12 -12
  319. package/src/sunlight/initializeTimeControl.js +18 -18
  320. package/src/sunlight/onAddSun.js +37 -37
  321. package/src/sunlight/onAddTimeControl.js +12 -12
  322. package/src/sunlight/onRemoveSun.js +10 -10
  323. package/src/sunlight/removeSun.js +25 -25
  324. package/src/sunlight/removeTimeControl.js +14 -14
  325. package/src/sunlight/removeTimeLayer.js +11 -11
  326. package/src/sunlight/requestSunlightRender.js +12 -12
  327. package/src/sunlight/styleTimeControl.js +13 -13
  328. package/src/sunlight/tickSun.js +10 -10
  329. package/src/sunlight/updateCelestialDisc.js +23 -23
  330. package/src/sunlight/updateSun.js +44 -44
  331. package/src/sunlight/useLiveTime.js +11 -11
  332. package/src/sunlight/useSelectedTime.js +26 -26
  333. package/src/terrain/applyTerrain.js +30 -30
  334. package/src/terrain/copyTerrainTile.js +20 -20
  335. package/src/terrain/loadReadyTerrain.js +6 -6
  336. package/src/terrain/mapElevationOf.js +19 -19
  337. package/src/terrain/readBridges.js +13 -13
  338. package/src/terrain/readyTerrainOf.js +14 -14
  339. package/src/terrain/sampleTerrainTile.js +16 -16
  340. package/src/terrain/terrainTileQueue.js +34 -34
  341. package/src/textures/addImageState.js +13 -13
  342. package/src/textures/bindMeshTextures.js +57 -57
  343. package/src/textures/collectRoofTiles.js +23 -23
  344. package/src/textures/loadModelImage.js +29 -29
  345. package/src/textures/modelTextureFor.js +47 -47
  346. package/src/textures/prepareMeshTextures.js +31 -31
  347. package/src/textures/removeImageState.js +13 -13
  348. package/src/textures/resizeRoofTexture.js +32 -32
  349. package/src/textures/restoreMaterialTextures.js +22 -22
  350. package/src/textures/updateRoofAtlas.js +29 -29
  351. package/src/textures/uploadMeshTexture.js +32 -32
  352. package/src/textures/uploadNativeImage.js +26 -26
  353. package/src/textures/uploadRoofTile.js +29 -29
  354. package/src/traffic/createTrafficMesh.js +17 -17
  355. package/src/traffic/disposeTrafficObject.js +19 -19
  356. package/src/traffic/failTraffic.js +12 -12
  357. package/src/traffic/failedTrafficLoad.js +10 -10
  358. package/src/traffic/fetchTrafficLanes.js +21 -21
  359. package/src/traffic/loadedTrafficLanes.js +21 -21
  360. package/src/traffic/locateTraffic.js +20 -20
  361. package/src/traffic/moveTraffic.js +21 -21
  362. package/src/traffic/readyTraffic.js +10 -10
  363. package/src/traffic/refreshTrafficTrips.js +42 -42
  364. package/src/traffic/routeColor.js +13 -13
  365. package/src/traffic/startTraffic.js +12 -12
  366. package/src/traffic/trafficNow.js +15 -15
  367. package/src/traffic/trafficStatusText.js +13 -13
  368. package/src/traffic/trafficStorage.js +13 -13
  369. package/src/traffic/updateTraffic.js +13 -13
  370. package/src/traffic/updateTrafficLights.js +23 -23
  371. package/src/traffic/updateTrafficPose.js +15 -15
  372. package/src/traffic/updateTrafficTerrain.js +15 -15
  373. package/src/traffic/uploadTrafficLanes.js +27 -27
  374. package/src/transforms/composeLocalTransform.js +23 -23
  375. package/src/transforms/transformNativePoint.js +19 -19
  376. package/src/transforms/worldMatrixChanged.js +26 -26
  377. package/src/triangulation/clipEars.js +32 -32
  378. package/src/triangulation/connectHole.js +30 -30
  379. package/src/triangulation/cross.js +12 -12
  380. package/src/triangulation/equal.js +11 -11
  381. package/src/triangulation/intersects.js +21 -21
  382. package/src/triangulation/mergeHoles.js +19 -19
  383. package/src/triangulation/on.js +13 -13
  384. package/src/triangulation/polygonRings.js +22 -22
  385. package/src/triangulation/validateArea.js +19 -19
  386. package/src/utils/compareDistance.js +11 -11
  387. package/src/utils/yieldTask.js +12 -12
  388. package/src/vector-style/appendQuotedStyleCharacter.js +30 -30
  389. package/src/vector-style/arrayContainsRange.js +18 -18
  390. package/src/vector-style/evaluateBoolean.js +31 -31
  391. package/src/vector-style/evaluateCoalesceOrCase.js +34 -34
  392. package/src/vector-style/evaluateComparison.js +29 -29
  393. package/src/vector-style/evaluateIExpression.js +21 -21
  394. package/src/vector-style/evaluateInput.js +16 -16
  395. package/src/vector-style/evaluateInterpolate.js +36 -36
  396. package/src/vector-style/evaluateMatch.js +21 -21
  397. package/src/vector-style/evaluateMath.js +26 -26
  398. package/src/vector-style/evaluateMembership.js +29 -29
  399. package/src/vector-style/evaluateNegation.js +26 -26
  400. package/src/vector-style/evaluatePrimitive.js +21 -21
  401. package/src/vector-style/evaluateStep.js +20 -20
  402. package/src/vector-style/evaluateStyle.js +43 -43
  403. package/src/vector-style/evaluateToExpression.js +27 -27
  404. package/src/vector-style/fillVectorPaint.js +26 -26
  405. package/src/vector-style/lineVectorPaint.js +31 -31
  406. package/src/vector-style/parseFunctionalColor.js +23 -23
  407. package/src/vector-style/parseHexColor.js +20 -20
  408. package/src/vector-style/parseVectorStyle.js +20 -20
  409. package/src/vector-style/readPaintValue.js +17 -17
  410. package/src/vector-style/removeTrailingCommas.js +19 -19
  411. package/src/vector-style/scaleDashArray.js +25 -25
  412. package/src/vector-style/skipStyleComment.js +20 -20
  413. package/src/vector-style/stripStyleComments.js +28 -28
  414. package/src/vector-style/styleColor.js +18 -18
  415. package/src/vector-style/validateVectorLayers.js +18 -18
  416. package/src/vector-style/vectorPaint.js +17 -17
  417. package/src/vector-style/visibleStyle.js +16 -16
  418. package/src/vector-tiles/appendVectorBatch.js +34 -34
  419. package/src/vector-tiles/attachVectorTileBatch.js +25 -25
  420. package/src/vector-tiles/attachVectorTileBatches.js +26 -26
  421. package/src/vector-tiles/compareVectorLabelPriority.js +11 -11
  422. package/src/vector-tiles/compareVectorTileDistance.js +11 -11
  423. package/src/vector-tiles/createVectorLabel.js +37 -37
  424. package/src/vector-tiles/forwardVectorTileError.js +10 -10
  425. package/src/vector-tiles/loadVectorSprite.js +14 -14
  426. package/src/vector-tiles/loadVectorTile.js +45 -45
  427. package/src/vector-tiles/onVectorTileAdd.js +44 -44
  428. package/src/vector-tiles/onVectorTileMessage.js +15 -15
  429. package/src/vector-tiles/onVectorTileRemove.js +25 -25
  430. package/src/vector-tiles/onVectorTileWorkerError.js +16 -16
  431. package/src/vector-tiles/paintVectorTileBatch.js +18 -18
  432. package/src/vector-tiles/prepareVectorLabel.js +34 -34
  433. package/src/vector-tiles/prepareVectorStyleLayer.js +38 -38
  434. package/src/vector-tiles/prepareVectorTile.js +29 -29
  435. package/src/vector-tiles/projectVectorPaths.js +25 -25
  436. package/src/vector-tiles/projectVectorPoint.js +15 -15
  437. package/src/vector-tiles/projectVectorTriangles.js +28 -28
  438. package/src/vector-tiles/pruneVectorTiles.js +14 -14
  439. package/src/vector-tiles/pumpVectorTiles.js +21 -21
  440. package/src/vector-tiles/readTileJSON.js +27 -27
  441. package/src/vector-tiles/readVectorStyle.js +28 -28
  442. package/src/vector-tiles/refreshVectorTiles.js +8 -8
  443. package/src/vector-tiles/reserveVectorLabelCells.js +14 -14
  444. package/src/vector-tiles/retireVectorTileGroup.js +20 -20
  445. package/src/vector-tiles/revokeVectorWorkerUrl.js +14 -14
  446. package/src/vector-tiles/rotateVectorLabel.js +19 -19
  447. package/src/vector-tiles/rotateVectorLabels.js +9 -9
  448. package/src/vector-tiles/simplifyVectorPath.js +29 -29
  449. package/src/vector-tiles/updateVectorLabelMarker.js +36 -36
  450. package/src/vector-tiles/updateVectorLabelStyle.js +14 -14
  451. package/src/vector-tiles/updateVectorTileLabels.js +33 -33
  452. package/src/vector-tiles/updateVectorTilePaint.js +25 -25
  453. package/src/vector-tiles/updateVectorTiles.js +32 -32
  454. package/src/vector-tiles/validateVectorTileZooms.js +15 -15
  455. package/src/vector-tiles/vectorFeaturePaint.js +25 -25
  456. package/src/vector-tiles/vectorFeaturePaths.js +26 -26
  457. package/src/vector-tiles/vectorFeatureZoom.js +18 -18
  458. package/src/vector-tiles/vectorLabelAnchors.js +31 -31
  459. package/src/vector-tiles/vectorLabelCandidates.js +18 -18
  460. package/src/vector-tiles/vectorLabelCells.js +32 -32
  461. package/src/vector-tiles/vectorLabelIcon.js +38 -38
  462. package/src/vector-tiles/vectorLabelProperty.js +12 -12
  463. package/src/vector-tiles/vectorLabelText.js +19 -19
  464. package/src/vector-tiles/vectorSpriteIcon.js +19 -19
  465. package/src/vector-tiles/vectorStraightRun.js +23 -23
  466. package/src/vector-tiles/vectorStyleDependencies.js +22 -22
  467. package/src/vector-tiles/vectorStyleValue.js +16 -16
  468. package/src/vector-tiles/vectorStyleZoom.js +12 -12
  469. package/src/vector-tiles/vectorTileAwaited.js +17 -17
  470. package/src/vector-tiles/vectorTileOverlaps.js +12 -12
  471. package/src/vector-tiles/vectorTilePaint.js +18 -18
  472. package/src/vector-tiles/vectorTileSettings.js +27 -27
  473. package/src/vector-tiles/vectorTilesIdle.js +11 -11
  474. package/src/vector-tiles/vectorTolerance.js +11 -11
  475. package/src/vector-tiles/wrapVectorLabel.js +17 -17
  476. package/src/vehicles/boatModel.js +35 -35
  477. package/src/vehicles/busModel.js +13 -13
  478. package/src/vehicles/carModel.js +39 -39
  479. package/src/walk/initializeWalkControl.js +12 -12
  480. package/src/walk/isWalkBlocked.js +15 -15
  481. package/src/walk/landWalker.js +41 -41
  482. package/src/walk/moveWalker.js +37 -37
  483. package/src/walk/onAddWalkControl.js +40 -40
  484. package/src/walk/onRemoveWalkControl.js +17 -17
  485. package/src/walk/onWalkBlur.js +3 -3
  486. package/src/walk/onWalkTerrain.js +3 -3
  487. package/src/walk/resolveWalkerPosition.js +33 -33
  488. package/src/walk/stepWalkerHeight.js +18 -18
  489. package/src/walk/toggleWalking.js +4 -4
  490. package/src/walk/updateWalkerFrame.js +29 -29
  491. package/src/walk/updateWalkerView.js +31 -31
  492. package/src/weakmaps/cameraHandlersByMap.js +6 -6
  493. package/src/weakmaps/geometryWorkersByMap.js +6 -6
  494. package/src/weakmaps/nativeProgramsByRenderer.js +6 -6
  495. package/src/weakmaps/pathProjectionByMap.js +6 -6
  496. package/src/weakmaps/streamTerrainByLayer.js +6 -6
  497. package/src/weakmaps/streamTerrainByMap.js +6 -6
  498. package/src/weakmaps/sunByMap.js +6 -6
  499. package/src/weakmaps/vectorTileOptionsByLayer.js +6 -6
  500. package/src/weakmaps/vectorWorkerByLayer.js +6 -6
  501. package/src/weakmaps/walkByMap.js +6 -6
  502. package/src/weakmaps/workerMapByLayer.js +6 -6
  503. package/src/workers/acquireGeometryWorker.js +39 -39
  504. package/src/workers/buildAreaInWorker.js +24 -24
  505. package/src/workers/closeGeometryWorkers.js +16 -16
  506. package/src/workers/cogWorker.js +27 -27
  507. package/src/workers/createGeometryWorker.js +30 -30
  508. package/src/workers/geometryWorker.js +34 -34
  509. package/src/workers/getCogInWorker.js +18 -18
  510. package/src/workers/modelWorker.js +17 -17
  511. package/src/workers/openCogInWorker.js +22 -22
  512. package/src/workers/runSourceWorker.js +44 -44
  513. package/src/workers/settleGeometryWorker.js +16 -16
  514. package/src/workers/startGeometryWorker.js +23 -23
  515. package/src/workers/vectorTileWorker.js +15 -15
@@ -1,15 +1,15 @@
1
- /**
2
- * Dispatch hover transitions and update the cursor for the current native hit.
3
- *
4
- * @param {Object} map Leaflet map.
5
- * @param {Object} context Native event state.
6
- * @param {Event} event Original DOM event.
7
- * @param {Object|null} source Hit source layer, if any.
8
- */
9
- export function updateNativeHover(map, context, event, source) {
10
- if (context.hovered === source) return;
11
- if (context.hovered) context.fireDOMEvent.call(map, event, context.out, /* alloc */ [context.hovered]);
12
- context.hovered = source;
13
- if (source) context.fireDOMEvent.call(map, event, context.over, /* alloc */ [source]);
14
- map.getContainer().style.cursor = source ? 'pointer' : '';
15
- }
1
+ /**
2
+ * Dispatch hover transitions and update the cursor for the current native hit.
3
+ *
4
+ * @param {Object} map Leaflet map.
5
+ * @param {Object} context Native event state.
6
+ * @param {Event} event Original DOM event.
7
+ * @param {Object|null} source Hit source layer, if any.
8
+ */
9
+ export function updateNativeHover(map, context, event, source) {
10
+ if (context.hovered === source) return;
11
+ if (context.hovered) context.fireDOMEvent.call(map, event, context.out, /* alloc */ [context.hovered]);
12
+ context.hovered = source;
13
+ if (source) context.fireDOMEvent.call(map, event, context.over, /* alloc */ [source]);
14
+ map.getContainer().style.cursor = source ? 'pointer' : '';
15
+ }
@@ -1,14 +1,14 @@
1
- /**
2
- * Store the maximum distance between stroke vertices and their anchors.
3
- *
4
- * @param {Object} mesh Native stroke mesh.
5
- */
6
- export function updateNativeStrokeRadius(mesh) {
7
- const attributes = mesh.geometry.attributes, positions = attributes.position.data, anchors = attributes.normal.data;
8
- let i, radius = 0;
9
- for (i = 0; i < positions.length; i += 3) {
10
- radius = Math.max(radius, Math.hypot(positions[i] - anchors[i],
11
- positions[i + 1] - anchors[i + 1], positions[i + 2] - anchors[i + 2]));
12
- }
13
- mesh.geometry.nativeStrokeRadius = radius;
14
- }
1
+ /**
2
+ * Store the maximum distance between stroke vertices and their anchors.
3
+ *
4
+ * @param {Object} mesh Native stroke mesh.
5
+ */
6
+ export function updateNativeStrokeRadius(mesh) {
7
+ const attributes = mesh.geometry.attributes, positions = attributes.position.data, anchors = attributes.normal.data;
8
+ let i, radius = 0;
9
+ for (i = 0; i < positions.length; i += 3) {
10
+ radius = Math.max(radius, Math.hypot(positions[i] - anchors[i],
11
+ positions[i + 1] - anchors[i + 1], positions[i + 2] - anchors[i + 2]));
12
+ }
13
+ mesh.geometry.nativeStrokeRadius = radius;
14
+ }
@@ -1,29 +1,29 @@
1
- import { horizontalRay } from '../collision/horizontalRay.js';
2
-
3
- /**
4
- * Test unseen, front-facing triangles in a collider cell at knee and chest heights.
5
- *
6
- * @param {number[]} cell Triangle indices in the cell.
7
- * @param {Object} c Cached collider geometry and normals.
8
- * @param {Object} data Collision scratch and nearest-hit state.
9
- * @param {number} ox Collider-local ray origin x coordinate.
10
- * @param {number} oy Collider-local ray origin y coordinate.
11
- * @param {number} oz Collider-local ray origin z coordinate.
12
- */
13
- export function hitColliderCell(cell, c, data, ox, oy, oz) {
14
- const { dx, dz, seen } = data;
15
- let t, height, d;
16
- for (t of cell) {
17
- if (seen.has(t) || dx * c.nrm[t * 2] + dz * c.nrm[t * 2 + 1] >= 0) continue;
18
- seen.add(t);
19
- for (height = 0.4; height < 2; height += 1.1) {
20
- d = horizontalRay(c.tri, t, ox, oy + height, oz, dx, dz);
21
- if (d >= 0 && d < data.best) {
22
- data.best = d;
23
- data.found = true;
24
- data.normal[0] = c.nrm[t * 2];
25
- data.normal[1] = c.nrm[t * 2 + 1];
26
- }
27
- }
28
- }
29
- }
1
+ import { horizontalRay } from '../collision/horizontalRay.js';
2
+
3
+ /**
4
+ * Test unseen, front-facing triangles in a collider cell at knee and chest heights.
5
+ *
6
+ * @param {number[]} cell Triangle indices in the cell.
7
+ * @param {Object} c Cached collider geometry and normals.
8
+ * @param {Object} data Collision scratch and nearest-hit state.
9
+ * @param {number} ox Collider-local ray origin x coordinate.
10
+ * @param {number} oy Collider-local ray origin y coordinate.
11
+ * @param {number} oz Collider-local ray origin z coordinate.
12
+ */
13
+ export function hitColliderCell(cell, c, data, ox, oy, oz) {
14
+ const { dx, dz, seen } = data;
15
+ let t, height, d;
16
+ for (t of cell) {
17
+ if (seen.has(t) || dx * c.nrm[t * 2] + dz * c.nrm[t * 2 + 1] >= 0) continue;
18
+ seen.add(t);
19
+ for (height = 0.4; height < 2; height += 1.1) {
20
+ d = horizontalRay(c.tri, t, ox, oy + height, oz, dx, dz);
21
+ if (d >= 0 && d < data.best) {
22
+ data.best = d;
23
+ data.found = true;
24
+ data.normal[0] = c.nrm[t * 2];
25
+ data.normal[1] = c.nrm[t * 2 + 1];
26
+ }
27
+ }
28
+ }
29
+ }
@@ -1,15 +1,15 @@
1
- /**
2
- * Verify that all components of an inverse camera matrix are finite.
3
- *
4
- * @param {DOMMatrix} matrix Inverse camera matrix.
5
- *
6
- * @throws {Error} If any matrix component is not finite.
7
- */
8
- export function validateCameraInverse(matrix) {
9
- let column, row;
10
- for (column = 1; column <= 4; column++) {
11
- for (row = 1; row <= 4; row++) {
12
- if (!Number.isFinite(matrix[`m${column}${row}`])) throw /* alloc */ new Error('Singular 3D transform');
13
- }
14
- }
15
- }
1
+ /**
2
+ * Verify that all components of an inverse camera matrix are finite.
3
+ *
4
+ * @param {DOMMatrix} matrix Inverse camera matrix.
5
+ *
6
+ * @throws {Error} If any matrix component is not finite.
7
+ */
8
+ export function validateCameraInverse(matrix) {
9
+ let column, row;
10
+ for (column = 1; column <= 4; column++) {
11
+ for (row = 1; row <= 4; row++) {
12
+ if (!Number.isFinite(matrix[`m${column}${row}`])) throw /* alloc */ new Error('Singular 3D transform');
13
+ }
14
+ }
15
+ }
@@ -1,32 +1,32 @@
1
- import { streamTerrainByMap } from '../weakmaps/streamTerrainByMap.js';
2
- import { renderers } from '../weakmaps/renderers.js';
3
- import { sceneOriginByLayer } from '../weakmaps/sceneOriginByLayer.js';
4
- import { cameraViewByMap } from '../weakmaps/cameraViewByMap.js';
5
- import { mapMethods } from '../globals/mapMethods.js';
6
- import { radians } from '../globals/radians.js';
7
- import { earthCirc } from '../globals/earthCirc.js';
8
- import { mapElevationOf } from '../terrain/mapElevationOf.js';
9
- import { animationPoint } from './transformZoomAnimationPoint.js';
10
- import { project } from './projectCameraPoint.js';
11
-
12
- /**
13
- * Convert a layer point to container coordinates, accounting for terrain elevation and camera animation.
14
- *
15
- * @param {L.Map} map Map containing the point.
16
- * @param {L.Point} point Layer point to project.
17
- * @param {L.LatLng} [location] Geographic position used to sample elevation.
18
- *
19
- * @returns {L.Point} Display position relative to the map pane.
20
- */
21
- export function displayPoint(map, point, location) {
22
- const shared = renderers.get(map), origin = shared && sceneOriginByLayer.get(shared);
23
- if (!streamTerrainByMap.get(map) || !origin) {
24
- return map.layerPointToContainerPoint(point).subtract(map._getMapPanePos());
25
- }
26
- const elevation = mapElevationOf(map, location || map.layerPointToLatLng(point)) ?? 0;
27
- const center = mapElevationOf(map, map.getCenter()) ?? 0;
28
- const zoom = cameraViewByMap.get(map)?.zoom ?? map.getZoom();
29
- const height = (elevation - center) * map.options.crs.scale(zoom) / (earthCirc * Math.cos(origin.lat * radians));
30
- const raw = animationPoint(map, mapMethods.value.layerPointToContainerPoint.call(map, point));
31
- return project(map, raw, false, false, height).subtract(map._getMapPanePos());
32
- }
1
+ import { streamTerrainByMap } from '../weakmaps/streamTerrainByMap.js';
2
+ import { renderers } from '../weakmaps/renderers.js';
3
+ import { sceneOriginByLayer } from '../weakmaps/sceneOriginByLayer.js';
4
+ import { cameraViewByMap } from '../weakmaps/cameraViewByMap.js';
5
+ import { mapMethods } from '../globals/mapMethods.js';
6
+ import { radians } from '../globals/radians.js';
7
+ import { earthCirc } from '../globals/earthCirc.js';
8
+ import { mapElevationOf } from '../terrain/mapElevationOf.js';
9
+ import { animationPoint } from './transformZoomAnimationPoint.js';
10
+ import { project } from './projectCameraPoint.js';
11
+
12
+ /**
13
+ * Convert a layer point to container coordinates, accounting for terrain elevation and camera animation.
14
+ *
15
+ * @param {L.Map} map Map containing the point.
16
+ * @param {L.Point} point Layer point to project.
17
+ * @param {L.LatLng} [location] Geographic position used to sample elevation.
18
+ *
19
+ * @returns {L.Point} Display position relative to the map pane.
20
+ */
21
+ export function displayPoint(map, point, location) {
22
+ const shared = renderers.get(map), origin = shared && sceneOriginByLayer.get(shared);
23
+ if (!streamTerrainByMap.get(map) || !origin) {
24
+ return map.layerPointToContainerPoint(point).subtract(map._getMapPanePos());
25
+ }
26
+ const elevation = mapElevationOf(map, location || map.layerPointToLatLng(point)) ?? 0;
27
+ const center = mapElevationOf(map, map.getCenter()) ?? 0;
28
+ const zoom = cameraViewByMap.get(map)?.zoom ?? map.getZoom();
29
+ const height = (elevation - center) * map.options.crs.scale(zoom) / (earthCirc * Math.cos(origin.lat * radians));
30
+ const raw = animationPoint(map, mapMethods.value.layerPointToContainerPoint.call(map, point));
31
+ return project(map, raw, false, false, height).subtract(map._getMapPanePos());
32
+ }
@@ -1,17 +1,17 @@
1
- import { L } from '../globals/L.js';
2
-
3
- /**
4
- * Project a geographic bridge point and its elevation into local scene coordinates.
5
- *
6
- * @param {number[]} coordinates Longitude, latitude and elevation.
7
- * @param {Object} crs Coordinate reference system.
8
- * @param {L.Point} origin Projected scene origin.
9
- * @param {number} metres Projection scale to local metres.
10
- * @param {number} base Scene base elevation.
11
- *
12
- * @returns {number[]} Local coordinates as [x, y, z].
13
- */
14
- export function local([lng, lat, z], crs, origin, metres, base) {
15
- const p = crs.project(/* alloc */ new L.LatLng(lat, lng));
16
- return /* alloc */ [(p.x - origin.x) * metres, z - base, -(p.y - origin.y) * metres];
17
- }
1
+ import { L } from '../globals/L.js';
2
+
3
+ /**
4
+ * Project a geographic bridge point and its elevation into local scene coordinates.
5
+ *
6
+ * @param {number[]} coordinates Longitude, latitude and elevation.
7
+ * @param {Object} crs Coordinate reference system.
8
+ * @param {L.Point} origin Projected scene origin.
9
+ * @param {number} metres Projection scale to local metres.
10
+ * @param {number} base Scene base elevation.
11
+ *
12
+ * @returns {number[]} Local coordinates as [x, y, z].
13
+ */
14
+ export function local([lng, lat, z], crs, origin, metres, base) {
15
+ const p = crs.project(/* alloc */ new L.LatLng(lat, lng));
16
+ return /* alloc */ [(p.x - origin.x) * metres, z - base, -(p.y - origin.y) * metres];
17
+ }
@@ -1,13 +1,13 @@
1
- import { L } from '../globals/L.js';
2
-
3
- /**
4
- * Copy an array or point-like object into a Leaflet point.
5
- *
6
- * @param {number[]|Object} point Array or object with x and y coordinates.
7
- *
8
- * @returns {L.Point} New point.
9
- */
10
- export function pointOf(point) {
11
- return /* alloc */ new L.Point(
12
- Array.isArray(point) ? point[0] : point.x, Array.isArray(point) ? point[1] : point.y);
13
- }
1
+ import { L } from '../globals/L.js';
2
+
3
+ /**
4
+ * Copy an array or point-like object into a Leaflet point.
5
+ *
6
+ * @param {number[]|Object} point Array or object with x and y coordinates.
7
+ *
8
+ * @returns {L.Point} New point.
9
+ */
10
+ export function pointOf(point) {
11
+ return /* alloc */ new L.Point(
12
+ Array.isArray(point) ? point[0] : point.x, Array.isArray(point) ? point[1] : point.y);
13
+ }
@@ -1,5 +1,5 @@
1
- import { cameraViewByMap } from '../weakmaps/cameraViewByMap.js';
2
-
1
+ import { cameraViewByMap } from '../weakmaps/cameraViewByMap.js';
2
+
3
3
  /**
4
4
  * Apply or invert the current camera zoom-animation transform to a container point.
5
5
  *
@@ -10,10 +10,10 @@ import { cameraViewByMap } from '../weakmaps/cameraViewByMap.js';
10
10
  * @returns {L.Point} Transformed point, or the input when no animation view exists.
11
11
  */
12
12
  export function animationPoint(map, point, inverse = false) {
13
- const view = cameraViewByMap.get(map);
14
- if (!view) return point;
15
- const half = map.getSize().divideBy(2), scale = map.getZoomScale(view.zoom);
16
- const shift = map.project(map.getCenter(), view.zoom).subtract(map.project(view.center, view.zoom));
17
- return inverse ? point.subtract(half).subtract(shift).divideBy(scale).add(half) :
18
- point.subtract(half).multiplyBy(scale).add(shift).add(half);
13
+ const view = cameraViewByMap.get(map);
14
+ if (!view) return point;
15
+ const half = map.getSize().divideBy(2), scale = map.getZoomScale(view.zoom);
16
+ const shift = map.project(map.getCenter(), view.zoom).subtract(map.project(view.center, view.zoom));
17
+ return inverse ? point.subtract(half).subtract(shift).divideBy(scale).add(half) :
18
+ point.subtract(half).multiplyBy(scale).add(shift).add(half);
19
19
  }
@@ -1,15 +1,15 @@
1
- /**
2
- * Invert the vertical camera projection onto the ground, clamping at the far distance.
3
- *
4
- * @param {number} y Vertical camera coordinate.
5
- * @param {number} tilt Cosine of camera pitch.
6
- * @param {number} distance Camera distance.
7
- * @param {number} rise Sine of camera pitch.
8
- * @param {number} far Maximum ground distance.
9
- *
10
- * @returns {number} Clamped ground coordinate.
11
- */
12
- export function verticalGroundY(y, tilt, distance, rise, far) {
13
- return tilt * distance + rise * y > 0
14
- ? Math.max(-far, Math.min(far, y * distance / (tilt * distance + rise * y))) : -far;
1
+ /**
2
+ * Invert the vertical camera projection onto the ground, clamping at the far distance.
3
+ *
4
+ * @param {number} y Vertical camera coordinate.
5
+ * @param {number} tilt Cosine of camera pitch.
6
+ * @param {number} distance Camera distance.
7
+ * @param {number} rise Sine of camera pitch.
8
+ * @param {number} far Maximum ground distance.
9
+ *
10
+ * @returns {number} Clamped ground coordinate.
11
+ */
12
+ export function verticalGroundY(y, tilt, distance, rise, far) {
13
+ return tilt * distance + rise * y > 0
14
+ ? Math.max(-far, Math.min(far, y * distance / (tilt * distance + rise * y))) : -far;
15
15
  }
@@ -1,32 +1,32 @@
1
- import { TILE_SIZE } from '../globals/TILE_SIZE.js';
2
- import { TILE_RADIUS } from '../globals/TILE_RADIUS.js';
3
- import { archiveNorthWest } from '../globals/archiveNorthWest.js';
4
- import { archiveSouthEast } from '../globals/archiveSouthEast.js';
5
-
6
- /**
7
- * Compute the visible tile range, clipped to archive bounds and the center tile radius.
8
- *
9
- * @param {L.Map} map Map providing the view bounds and projection.
10
- * @param {Object} header Archive header with optional geographic bounds.
11
- * @param {number} zoom Tile zoom level.
12
- *
13
- * @returns {Object} Inclusive minimum and maximum tile coordinates.
14
- */
15
- export function rasterTileRange(map, header, zoom) {
16
- const bounds = map.getBounds();
17
- const northwest = map.project(bounds.getNorthWest(), zoom).divideBy(TILE_SIZE).floor();
18
- const southeast = map.project(bounds.getSouthEast(), zoom).divideBy(TILE_SIZE).floor();
19
- archiveNorthWest[0] = header.maxLat; archiveNorthWest[1] = header.minLon;
20
- archiveSouthEast[0] = header.minLat; archiveSouthEast[1] = header.maxLon;
21
- const archiveMin = header.maxLat === undefined || header.minLon === undefined
22
- ? null : map.project(archiveNorthWest, zoom).divideBy(TILE_SIZE).floor();
23
- const archiveMax = header.minLat === undefined || header.maxLon === undefined
24
- ? null : map.project(archiveSouthEast, zoom).divideBy(TILE_SIZE).floor();
25
- const center = map.project(map.getCenter(), zoom).divideBy(TILE_SIZE).floor();
26
- return /* alloc */ {
27
- minX: Math.max(0, northwest.x, archiveMin?.x ?? 0, center.x - TILE_RADIUS),
28
- maxX: Math.min(2 ** zoom - 1, southeast.x, archiveMax?.x ?? 2 ** zoom - 1, center.x + TILE_RADIUS),
29
- minY: Math.max(0, northwest.y, archiveMin?.y ?? 0, center.y - TILE_RADIUS),
30
- maxY: Math.min(2 ** zoom - 1, southeast.y, archiveMax?.y ?? 2 ** zoom - 1, center.y + TILE_RADIUS),
31
- };
32
- }
1
+ import { TILE_SIZE } from '../globals/TILE_SIZE.js';
2
+ import { TILE_RADIUS } from '../globals/TILE_RADIUS.js';
3
+ import { archiveNorthWest } from '../globals/archiveNorthWest.js';
4
+ import { archiveSouthEast } from '../globals/archiveSouthEast.js';
5
+
6
+ /**
7
+ * Compute the visible tile range, clipped to archive bounds and the center tile radius.
8
+ *
9
+ * @param {L.Map} map Map providing the view bounds and projection.
10
+ * @param {Object} header Archive header with optional geographic bounds.
11
+ * @param {number} zoom Tile zoom level.
12
+ *
13
+ * @returns {Object} Inclusive minimum and maximum tile coordinates.
14
+ */
15
+ export function rasterTileRange(map, header, zoom) {
16
+ const bounds = map.getBounds();
17
+ const northwest = map.project(bounds.getNorthWest(), zoom).divideBy(TILE_SIZE).floor();
18
+ const southeast = map.project(bounds.getSouthEast(), zoom).divideBy(TILE_SIZE).floor();
19
+ archiveNorthWest[0] = header.maxLat; archiveNorthWest[1] = header.minLon;
20
+ archiveSouthEast[0] = header.minLat; archiveSouthEast[1] = header.maxLon;
21
+ const archiveMin = header.maxLat === undefined || header.minLon === undefined
22
+ ? null : map.project(archiveNorthWest, zoom).divideBy(TILE_SIZE).floor();
23
+ const archiveMax = header.minLat === undefined || header.maxLon === undefined
24
+ ? null : map.project(archiveSouthEast, zoom).divideBy(TILE_SIZE).floor();
25
+ const center = map.project(map.getCenter(), zoom).divideBy(TILE_SIZE).floor();
26
+ return /* alloc */ {
27
+ minX: Math.max(0, northwest.x, archiveMin?.x ?? 0, center.x - TILE_RADIUS),
28
+ maxX: Math.min(2 ** zoom - 1, southeast.x, archiveMax?.x ?? 2 ** zoom - 1, center.x + TILE_RADIUS),
29
+ minY: Math.max(0, northwest.y, archiveMin?.y ?? 0, center.y - TILE_RADIUS),
30
+ maxY: Math.min(2 ** zoom - 1, southeast.y, archiveMax?.y ?? 2 ** zoom - 1, center.y + TILE_RADIUS),
31
+ };
32
+ }
@@ -1,21 +1,21 @@
1
- import { rasterTilesByLayer } from '../weakmaps/rasterTilesByLayer.js';
2
- import { releaseRasterTile } from './releaseRasterTile.js';
3
-
4
- /**
5
- * Cancel unneeded unfinished tiles and create state for missing required tiles.
6
- *
7
- * @param {L.Layer} layer Raster layer.
8
- * @param {Map<string, Object>} required Required tile coordinates by key.
9
- */
10
- export function retainRasterTiles(layer, required) {
11
- const tiles = rasterTilesByLayer.get(layer);
12
- let key, tile, coords;
13
- for ([key, tile] of tiles) {
14
- if (!required.has(key) && !tile.done) releaseRasterTile(layer, tile);
15
- }
16
- for ([key, coords] of required) {
17
- if (tiles.has(key)) continue;
18
- tile = /* alloc */ { coords, request: /* alloc */ new AbortController(), done: false };
19
- tiles.set(key, tile);
20
- }
21
- }
1
+ import { rasterTilesByLayer } from '../weakmaps/rasterTilesByLayer.js';
2
+ import { releaseRasterTile } from './releaseRasterTile.js';
3
+
4
+ /**
5
+ * Cancel unneeded unfinished tiles and create state for missing required tiles.
6
+ *
7
+ * @param {L.Layer} layer Raster layer.
8
+ * @param {Map<string, Object>} required Required tile coordinates by key.
9
+ */
10
+ export function retainRasterTiles(layer, required) {
11
+ const tiles = rasterTilesByLayer.get(layer);
12
+ let key, tile, coords;
13
+ for ([key, tile] of tiles) {
14
+ if (!required.has(key) && !tile.done) releaseRasterTile(layer, tile);
15
+ }
16
+ for ([key, coords] of required) {
17
+ if (tiles.has(key)) continue;
18
+ tile = /* alloc */ { coords, request: /* alloc */ new AbortController(), done: false };
19
+ tiles.set(key, tile);
20
+ }
21
+ }
@@ -1,48 +1,48 @@
1
- import { computeBounds } from '../geometry/computeBounds.js';
2
- import { nativeStrokeExpansion } from './nativeStrokeExpansion.js';
3
-
4
- /**
5
- * Cull a mesh against the camera frustum and append it when visible.
6
- *
7
- * @param {Object} mesh Mesh whose world-space bounding sphere is tested.
8
- * @param {ArrayLike<number>} projection Camera projection-view matrix.
9
- * @param {Array} frustum Camera frustum planes.
10
- * @param {ArrayLike<number>} frustumLengths Lengths of the plane normals.
11
- * @param {Array<Object>} candidates Destination for visible meshes.
12
- */
13
- export function collectVisibleMesh(mesh, projection, frustum, frustumLengths, candidates) {
14
- if (!mesh.geometry.bounds) computeBounds(mesh.geometry);
15
- const bounds = mesh.geometry.bounds;
16
- const world = mesh.worldMatrix;
17
- let sphere = mesh._cullingSphere;
18
- if (!sphere || sphere.bounds !== bounds || sphere.matrix !== world ||
19
- sphere.version !== mesh._worldMatrixVersion || mesh._worldMatrixVersion === undefined) {
20
- sphere ||= mesh._cullingSphere = /* alloc */ {};
21
- const center = bounds.center;
22
- sphere.x = world[0] * center[0] + world[4] * center[1] + world[8] * center[2] + world[12];
23
- sphere.y = world[1] * center[0] + world[5] * center[1] + world[9] * center[2] + world[13];
24
- sphere.z = world[2] * center[0] + world[6] * center[1] + world[10] * center[2] + world[14];
25
- sphere.scale = Math.max(
26
- Math.hypot(world[0], world[1], world[2]),
27
- Math.hypot(world[4], world[5], world[6]),
28
- Math.hypot(world[8], world[9], world[10])
29
- );
30
- sphere.radius = bounds.radius * sphere.scale;
31
- sphere.bounds = bounds;
32
- sphere.matrix = world;
33
- sphere.version = mesh._worldMatrixVersion;
34
- }
35
- const { x, y, z } = sphere;
36
- const radius = sphere.radius + nativeStrokeExpansion(mesh) * sphere.scale;
37
- const clipZ = projection[2] * x + projection[6] * y + projection[10] * z + projection[14];
38
- const clipW = projection[3] * x + projection[7] * y + projection[11] * z + projection[15];
39
- mesh._sortDepth = clipZ / clipW;
40
- mesh._visibleInFrame =
41
- frustum[0][0] * x + frustum[0][1] * y + frustum[0][2] * z + frustum[0][3] >= -radius * frustumLengths[0] &&
42
- frustum[1][0] * x + frustum[1][1] * y + frustum[1][2] * z + frustum[1][3] >= -radius * frustumLengths[1] &&
43
- frustum[2][0] * x + frustum[2][1] * y + frustum[2][2] * z + frustum[2][3] >= -radius * frustumLengths[2] &&
44
- frustum[3][0] * x + frustum[3][1] * y + frustum[3][2] * z + frustum[3][3] >= -radius * frustumLengths[3] &&
45
- frustum[4][0] * x + frustum[4][1] * y + frustum[4][2] * z + frustum[4][3] >= -radius * frustumLengths[4] &&
46
- frustum[5][0] * x + frustum[5][1] * y + frustum[5][2] * z + frustum[5][3] >= -radius * frustumLengths[5];
47
- if (mesh._visibleInFrame) candidates.push(mesh);
48
- }
1
+ import { computeBounds } from '../geometry/computeBounds.js';
2
+ import { nativeStrokeExpansion } from './nativeStrokeExpansion.js';
3
+
4
+ /**
5
+ * Cull a mesh against the camera frustum and append it when visible.
6
+ *
7
+ * @param {Object} mesh Mesh whose world-space bounding sphere is tested.
8
+ * @param {ArrayLike<number>} projection Camera projection-view matrix.
9
+ * @param {Array} frustum Camera frustum planes.
10
+ * @param {ArrayLike<number>} frustumLengths Lengths of the plane normals.
11
+ * @param {Array<Object>} candidates Destination for visible meshes.
12
+ */
13
+ export function collectVisibleMesh(mesh, projection, frustum, frustumLengths, candidates) {
14
+ if (!mesh.geometry.bounds) computeBounds(mesh.geometry);
15
+ const bounds = mesh.geometry.bounds;
16
+ const world = mesh.worldMatrix;
17
+ let sphere = mesh._cullingSphere;
18
+ if (!sphere || sphere.bounds !== bounds || sphere.matrix !== world ||
19
+ sphere.version !== mesh._worldMatrixVersion || mesh._worldMatrixVersion === undefined) {
20
+ sphere ||= mesh._cullingSphere = /* alloc */ {};
21
+ const center = bounds.center;
22
+ sphere.x = world[0] * center[0] + world[4] * center[1] + world[8] * center[2] + world[12];
23
+ sphere.y = world[1] * center[0] + world[5] * center[1] + world[9] * center[2] + world[13];
24
+ sphere.z = world[2] * center[0] + world[6] * center[1] + world[10] * center[2] + world[14];
25
+ sphere.scale = Math.max(
26
+ Math.hypot(world[0], world[1], world[2]),
27
+ Math.hypot(world[4], world[5], world[6]),
28
+ Math.hypot(world[8], world[9], world[10])
29
+ );
30
+ sphere.radius = bounds.radius * sphere.scale;
31
+ sphere.bounds = bounds;
32
+ sphere.matrix = world;
33
+ sphere.version = mesh._worldMatrixVersion;
34
+ }
35
+ const { x, y, z } = sphere;
36
+ const radius = sphere.radius + nativeStrokeExpansion(mesh) * sphere.scale;
37
+ const clipZ = projection[2] * x + projection[6] * y + projection[10] * z + projection[14];
38
+ const clipW = projection[3] * x + projection[7] * y + projection[11] * z + projection[15];
39
+ mesh._sortDepth = clipZ / clipW;
40
+ mesh._visibleInFrame =
41
+ frustum[0][0] * x + frustum[0][1] * y + frustum[0][2] * z + frustum[0][3] >= -radius * frustumLengths[0] &&
42
+ frustum[1][0] * x + frustum[1][1] * y + frustum[1][2] * z + frustum[1][3] >= -radius * frustumLengths[1] &&
43
+ frustum[2][0] * x + frustum[2][1] * y + frustum[2][2] * z + frustum[2][3] >= -radius * frustumLengths[2] &&
44
+ frustum[3][0] * x + frustum[3][1] * y + frustum[3][2] * z + frustum[3][3] >= -radius * frustumLengths[3] &&
45
+ frustum[4][0] * x + frustum[4][1] * y + frustum[4][2] * z + frustum[4][3] >= -radius * frustumLengths[4] &&
46
+ frustum[5][0] * x + frustum[5][1] * y + frustum[5][2] * z + frustum[5][3] >= -radius * frustumLengths[5];
47
+ if (mesh._visibleInFrame) candidates.push(mesh);
48
+ }
@@ -1,14 +1,14 @@
1
- /**
2
- * Order opaque meshes front-to-back and transparent meshes by render order and depth.
3
- *
4
- * @param {Object} a First mesh.
5
- * @param {Object} b Second mesh.
6
- *
7
- * @returns {number} Sort comparison, breaking ties by mesh ID.
8
- */
9
- export function compareMeshDepth(a, b) {
10
- return a.program.transparent
11
- ? (a.renderOrder || 0) - (b.renderOrder || 0) ||
12
- b._sortDepth - a._sortDepth || a.id - b.id
13
- : (a._sortDepth ?? 0) - (b._sortDepth ?? 0) || a.id - b.id;
14
- }
1
+ /**
2
+ * Order opaque meshes front-to-back and transparent meshes by render order and depth.
3
+ *
4
+ * @param {Object} a First mesh.
5
+ * @param {Object} b Second mesh.
6
+ *
7
+ * @returns {number} Sort comparison, breaking ties by mesh ID.
8
+ */
9
+ export function compareMeshDepth(a, b) {
10
+ return a.program.transparent
11
+ ? (a.renderOrder || 0) - (b.renderOrder || 0) ||
12
+ b._sortDepth - a._sortDepth || a.id - b.id
13
+ : (a._sortDepth ?? 0) - (b._sortDepth ?? 0) || a.id - b.id;
14
+ }