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,44 +1,44 @@
1
- import { meshPipeline } from '../globals/meshPipeline.js';
2
- import { alphaBlend } from '../globals/alphaBlend.js';
3
-
4
- /**
5
- * Get or create a cached render pipeline for a mesh and its face/depth settings.
6
- *
7
- * @param {Object} renderer Renderer providing the device and color format.
8
- * @param {Object} mesh Mesh providing the program and ground flag.
9
- * @param {GPUCullMode} cullMode Face-culling mode.
10
- * @param {GPUFrontFace} frontFace Front-face winding.
11
- *
12
- * @returns {GPURenderPipeline} Cached or newly created pipeline.
13
- */
14
- export function drawPipeline(renderer, mesh, cullMode, frontFace) {
15
- const { program } = mesh;
16
- // Mixed-LOD imagery composites coarse-to-fine; its depth still occludes later 3D objects.
17
- // ponytail: self-occlusion during LOD blending needs separate per-LOD depth passes.
18
- const depthCompare = program.depthTest === false || (mesh.ground && renderer.groundOverlap)
19
- ? 'always' : 'less-equal';
20
- const pipelineKey = `${cullMode}:${frontFace}:${depthCompare}`;
21
- let pipeline = program.pipelineCache.get(pipelineKey);
22
- if (!pipeline) {
23
- pipeline = renderer.device.createRenderPipeline((
24
- meshPipeline.layout = program.pipelineLayout,
25
- meshPipeline.vertex.module = program.vertex,
26
- meshPipeline.vertex.buffers = program.vertexBuffers,
27
- meshPipeline.fragment.module = program.fragment,
28
- meshPipeline.fragment.targets[0].format = renderer.format,
29
- meshPipeline.fragment.targets[0].blend = program.transparent ? alphaBlend : undefined,
30
- meshPipeline.fragment.targets[0].writeMask = GPUColorWrite.ALL,
31
- meshPipeline.primitive.cullMode = cullMode,
32
- meshPipeline.primitive.frontFace = frontFace,
33
- meshPipeline.depthStencil.depthWriteEnabled = program.depthWrite,
34
- meshPipeline.depthStencil.depthCompare = depthCompare,
35
- meshPipeline
36
- ));
37
- meshPipeline.layout = null;
38
- meshPipeline.vertex.module = null;
39
- meshPipeline.vertex.buffers = null;
40
- meshPipeline.fragment.module = null;
41
- program.pipelineCache.set(pipelineKey, pipeline);
42
- }
43
- return pipeline;
44
- }
1
+ import { meshPipeline } from '../globals/meshPipeline.js';
2
+ import { alphaBlend } from '../globals/alphaBlend.js';
3
+
4
+ /**
5
+ * Get or create a cached render pipeline for a mesh and its face/depth settings.
6
+ *
7
+ * @param {Object} renderer Renderer providing the device and color format.
8
+ * @param {Object} mesh Mesh providing the program and ground flag.
9
+ * @param {GPUCullMode} cullMode Face-culling mode.
10
+ * @param {GPUFrontFace} frontFace Front-face winding.
11
+ *
12
+ * @returns {GPURenderPipeline} Cached or newly created pipeline.
13
+ */
14
+ export function drawPipeline(renderer, mesh, cullMode, frontFace) {
15
+ const { program } = mesh;
16
+ // Mixed-LOD imagery composites coarse-to-fine; its depth still occludes later 3D objects.
17
+ // ponytail: self-occlusion during LOD blending needs separate per-LOD depth passes.
18
+ const depthCompare = program.depthTest === false || (mesh.ground && renderer.groundOverlap)
19
+ ? 'always' : 'less-equal';
20
+ const pipelineKey = `${cullMode}:${frontFace}:${depthCompare}`;
21
+ let pipeline = program.pipelineCache.get(pipelineKey);
22
+ if (!pipeline) {
23
+ pipeline = renderer.device.createRenderPipeline((
24
+ meshPipeline.layout = program.pipelineLayout,
25
+ meshPipeline.vertex.module = program.vertex,
26
+ meshPipeline.vertex.buffers = program.vertexBuffers,
27
+ meshPipeline.fragment.module = program.fragment,
28
+ meshPipeline.fragment.targets[0].format = renderer.format,
29
+ meshPipeline.fragment.targets[0].blend = program.transparent ? alphaBlend : undefined,
30
+ meshPipeline.fragment.targets[0].writeMask = GPUColorWrite.ALL,
31
+ meshPipeline.primitive.cullMode = cullMode,
32
+ meshPipeline.primitive.frontFace = frontFace,
33
+ meshPipeline.depthStencil.depthWriteEnabled = program.depthWrite,
34
+ meshPipeline.depthStencil.depthCompare = depthCompare,
35
+ meshPipeline
36
+ ));
37
+ meshPipeline.layout = null;
38
+ meshPipeline.vertex.module = null;
39
+ meshPipeline.vertex.buffers = null;
40
+ meshPipeline.fragment.module = null;
41
+ program.pipelineCache.set(pipelineKey, pipeline);
42
+ }
43
+ return pipeline;
44
+ }
@@ -1,11 +1,11 @@
1
- /**
2
- * Calculate the extra local-space culling radius needed for a scaled native stroke.
3
- *
4
- * @param {Object} mesh Mesh containing stroke uniforms and geometry.
5
- *
6
- * @returns {number} Additional bounding radius.
7
- */
8
- export function nativeStrokeExpansion(mesh) {
9
- const strokeScale = mesh.program?.uniforms?.strokeScale?.value ?? 1;
10
- return Math.max(0, strokeScale - 1) * (mesh.geometry.nativeStrokeRadius || 0);
11
- }
1
+ /**
2
+ * Calculate the extra local-space culling radius needed for a scaled native stroke.
3
+ *
4
+ * @param {Object} mesh Mesh containing stroke uniforms and geometry.
5
+ *
6
+ * @returns {number} Additional bounding radius.
7
+ */
8
+ export function nativeStrokeExpansion(mesh) {
9
+ const strokeScale = mesh.program?.uniforms?.strokeScale?.value ?? 1;
10
+ return Math.max(0, strokeScale - 1) * (mesh.geometry.nativeStrokeRadius || 0);
11
+ }
@@ -1,24 +1,24 @@
1
- import { rendererByLayer } from '../weakmaps/rendererByLayer.js';
2
- import { frameBuffer } from '../globals/frameBuffer.js';
3
- import { destroyTexture } from '../textures/destroyTexture.js';
4
-
5
- /**
6
- * Ensure the renderer has uniform-buffer capacity for this frame's meshes and shadows.
7
- *
8
- * @param {L.Layer} layer Rendering layer.
9
- * @param {Array<Object>} meshes Meshes to render.
10
- * @param {Array<Object>} shadowMeshes Shadow-casting meshes.
11
- */
12
- export function prepareFrameBuffer(layer, meshes, shadowMeshes) {
13
- const renderer = rendererByLayer.get(layer);
14
- // Slot 0 holds the camera; 256-byte mesh slots follow (double-sided meshes use two).
15
- if (!renderer.uniformBuffer || renderer.uniformBuffer.size < (meshes.length * 2 + shadowMeshes.length + 1) * 256) {
16
- if (renderer.uniformBuffer) destroyTexture(layer, renderer.uniformBuffer);
17
- renderer.uniformBuffer = renderer.device.createBuffer((
18
- frameBuffer.size = Math.max(64, meshes.length * 4 + shadowMeshes.length * 2) * 256,
19
- frameBuffer.usage = GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,
20
- frameBuffer
21
- ));
22
- renderer.uniformData = /* alloc */ new Float32Array(renderer.uniformBuffer.size / 4);
23
- }
24
- }
1
+ import { rendererByLayer } from '../weakmaps/rendererByLayer.js';
2
+ import { frameBuffer } from '../globals/frameBuffer.js';
3
+ import { destroyTexture } from '../textures/destroyTexture.js';
4
+
5
+ /**
6
+ * Ensure the renderer has uniform-buffer capacity for this frame's meshes and shadows.
7
+ *
8
+ * @param {L.Layer} layer Rendering layer.
9
+ * @param {Array<Object>} meshes Meshes to render.
10
+ * @param {Array<Object>} shadowMeshes Shadow-casting meshes.
11
+ */
12
+ export function prepareFrameBuffer(layer, meshes, shadowMeshes) {
13
+ const renderer = rendererByLayer.get(layer);
14
+ // Slot 0 holds the camera; 256-byte mesh slots follow (double-sided meshes use two).
15
+ if (!renderer.uniformBuffer || renderer.uniformBuffer.size < (meshes.length * 2 + shadowMeshes.length + 1) * 256) {
16
+ if (renderer.uniformBuffer) destroyTexture(layer, renderer.uniformBuffer);
17
+ renderer.uniformBuffer = renderer.device.createBuffer((
18
+ frameBuffer.size = Math.max(64, meshes.length * 4 + shadowMeshes.length * 2) * 256,
19
+ frameBuffer.usage = GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,
20
+ frameBuffer
21
+ ));
22
+ renderer.uniformData = /* alloc */ new Float32Array(renderer.uniformBuffer.size / 4);
23
+ }
24
+ }
@@ -1,36 +1,36 @@
1
- import { prepareMeshCutout } from '../materials/prepareMeshCutout.js';
2
-
3
- /**
4
- * Write a mesh's transforms and material values into the next frame uniform slot.
5
- *
6
- * @param {Object} renderer Renderer containing uniform data and slot state.
7
- * @param {Object} mesh Mesh to prepare.
8
- *
9
- * @returns {number} Dynamic uniform buffer offset in bytes.
10
- */
11
- export function prepareMeshUniforms(renderer, mesh) {
12
- const uniforms = mesh.program.uniforms;
13
- const offset = renderer.uniformSlot++ * 256;
14
- const data = renderer.uniformData, base = offset / 4;
15
- data.set(mesh.worldMatrix, base);
16
- data.set(uniforms.baseColor.value, base + 16);
17
- data[base + 19] = 1;
18
- data[base + 20] = uniforms.metallic.value;
19
- data[base + 21] = uniforms.roughness.value;
20
- data[base + 22] = uniforms.opacity.value * (mesh.ground ? mesh._appearance ?? 1 : 1);
21
- data[base + 23] = uniforms.alphaCutoff.value;
22
- data.set(uniforms.emissive.value, base + 24);
23
- data[base + 27] = uniforms.occlusionStrength.value;
24
- data[base + 28] = mesh.terrain?.[0] ?? 0;
25
- data[base + 29] = mesh.terrain?.[1] ?? 0;
26
- data[base + 30] = mesh.terrain?.[2] ?? 0;
27
- data[base + 31] = mesh.terrain?.[3] ?? 0;
28
- data[base + 32] = mesh.highlight?.[0] ?? 0;
29
- data[base + 33] = mesh.highlight?.[1] ?? 0;
30
- data[base + 34] = mesh.program.nightSparkle ? data[55] : 0;
31
- data[base + 35] = mesh.ground ? 1 : mesh._appearance ?? 1;
32
- prepareMeshCutout(renderer, mesh, base);
33
- data[base + 40] = uniforms.strokeScale?.value ?? 1;
34
- data[base + 41] = data[base + 42] = data[base + 43] = 0;
35
- return offset;
36
- }
1
+ import { prepareMeshCutout } from '../materials/prepareMeshCutout.js';
2
+
3
+ /**
4
+ * Write a mesh's transforms and material values into the next frame uniform slot.
5
+ *
6
+ * @param {Object} renderer Renderer containing uniform data and slot state.
7
+ * @param {Object} mesh Mesh to prepare.
8
+ *
9
+ * @returns {number} Dynamic uniform buffer offset in bytes.
10
+ */
11
+ export function prepareMeshUniforms(renderer, mesh) {
12
+ const uniforms = mesh.program.uniforms;
13
+ const offset = renderer.uniformSlot++ * 256;
14
+ const data = renderer.uniformData, base = offset / 4;
15
+ data.set(mesh.worldMatrix, base);
16
+ data.set(uniforms.baseColor.value, base + 16);
17
+ data[base + 19] = 1;
18
+ data[base + 20] = uniforms.metallic.value;
19
+ data[base + 21] = uniforms.roughness.value;
20
+ data[base + 22] = uniforms.opacity.value * (mesh.ground ? mesh._appearance ?? 1 : 1);
21
+ data[base + 23] = uniforms.alphaCutoff.value;
22
+ data.set(uniforms.emissive.value, base + 24);
23
+ data[base + 27] = uniforms.occlusionStrength.value;
24
+ data[base + 28] = mesh.terrain?.[0] ?? 0;
25
+ data[base + 29] = mesh.terrain?.[1] ?? 0;
26
+ data[base + 30] = mesh.terrain?.[2] ?? 0;
27
+ data[base + 31] = mesh.terrain?.[3] ?? 0;
28
+ data[base + 32] = mesh.highlight?.[0] ?? 0;
29
+ data[base + 33] = mesh.highlight?.[1] ?? 0;
30
+ data[base + 34] = mesh.program.nightSparkle ? data[55] : 0;
31
+ data[base + 35] = mesh.ground ? 1 : mesh._appearance ?? 1;
32
+ prepareMeshCutout(renderer, mesh, base);
33
+ data[base + 40] = uniforms.strokeScale?.value ?? 1;
34
+ data[base + 41] = data[base + 42] = data[base + 43] = 0;
35
+ return offset;
36
+ }
@@ -1,43 +1,43 @@
1
- import { headerByLayer } from '../weakmaps/headerByLayer.js';
2
- import { loadingTilesByLayer } from '../weakmaps/loadingTilesByLayer.js';
3
- import { roofRasterByLayer } from '../weakmaps/roofRasterByLayer.js';
4
- import { walkByMap } from '../weakmaps/walkByMap.js';
5
- import { roofCoverage } from '../geometry/roofCoverage.js';
6
-
7
- /**
8
- * Delay revealing a roof mesh while its uncovered raster imagery is still loading.
9
- *
10
- * @param {L.Layer} layer Rendering layer.
11
- * @param {Object} mesh Roof or other mesh being considered.
12
- * @param {Array<L.Layer>} rasters Raster layers used for roof coverage.
13
- * @param {number} now Current frame time in milliseconds.
14
- *
15
- * @returns {boolean} Whether the mesh may be drawn.
16
- */
17
- export function revealRoofMesh(layer, mesh, rasters, now) {
18
- let raster, loading;
19
- if (mesh.program.uniforms.roofTexture && !rasters.length) mesh._roofRevealed = true;
20
- if (mesh.program.uniforms.roofTexture && !mesh._roofRevealed && rasters.length) {
21
- if (walkByMap.get(layer._map)?.control?._walk?.saved) {
22
- mesh._roofRevealed = true;
23
- mesh.fadeStart = now - (mesh.fadeDuration || 0);
24
- }
25
- if (mesh._roofCoverageSignature !== roofRasterByLayer.get(layer)?.signature) {
26
- mesh._roofCoverageSignature = roofRasterByLayer.get(layer)?.signature;
27
- mesh._roofCovered = roofCoverage(mesh, layer, rasters);
28
- }
29
- loading = false;
30
- for (raster of rasters) {
31
- if (!headerByLayer.get(raster) || loadingTilesByLayer.get(raster) > 0) {
32
- loading = true;
33
- break;
34
- }
35
- }
36
- if (!mesh._roofRevealed && !mesh._roofCovered && loading) {
37
- mesh._appearance = 0;
38
- return false;
39
- }
40
- mesh._roofRevealed = true;
41
- }
42
- return true;
43
- }
1
+ import { headerByLayer } from '../weakmaps/headerByLayer.js';
2
+ import { loadingTilesByLayer } from '../weakmaps/loadingTilesByLayer.js';
3
+ import { roofRasterByLayer } from '../weakmaps/roofRasterByLayer.js';
4
+ import { walkByMap } from '../weakmaps/walkByMap.js';
5
+ import { roofCoverage } from '../geometry/roofCoverage.js';
6
+
7
+ /**
8
+ * Delay revealing a roof mesh while its uncovered raster imagery is still loading.
9
+ *
10
+ * @param {L.Layer} layer Rendering layer.
11
+ * @param {Object} mesh Roof or other mesh being considered.
12
+ * @param {Array<L.Layer>} rasters Raster layers used for roof coverage.
13
+ * @param {number} now Current frame time in milliseconds.
14
+ *
15
+ * @returns {boolean} Whether the mesh may be drawn.
16
+ */
17
+ export function revealRoofMesh(layer, mesh, rasters, now) {
18
+ let raster, loading;
19
+ if (mesh.program.uniforms.roofTexture && !rasters.length) mesh._roofRevealed = true;
20
+ if (mesh.program.uniforms.roofTexture && !mesh._roofRevealed && rasters.length) {
21
+ if (walkByMap.get(layer._map)?.control?._walk?.saved) {
22
+ mesh._roofRevealed = true;
23
+ mesh.fadeStart = now - (mesh.fadeDuration || 0);
24
+ }
25
+ if (mesh._roofCoverageSignature !== roofRasterByLayer.get(layer)?.signature) {
26
+ mesh._roofCoverageSignature = roofRasterByLayer.get(layer)?.signature;
27
+ mesh._roofCovered = roofCoverage(mesh, layer, rasters);
28
+ }
29
+ loading = false;
30
+ for (raster of rasters) {
31
+ if (!headerByLayer.get(raster) || loadingTilesByLayer.get(raster) > 0) {
32
+ loading = true;
33
+ break;
34
+ }
35
+ }
36
+ if (!mesh._roofRevealed && !mesh._roofCovered && loading) {
37
+ mesh._appearance = 0;
38
+ return false;
39
+ }
40
+ mesh._roofRevealed = true;
41
+ }
42
+ return true;
43
+ }
@@ -1,24 +1,24 @@
1
- import { kindByLayer } from '../weakmaps/kindByLayer.js';
2
- import { onAdd3DLayer } from './onAdd3DLayer.js';
3
- import { onPMTileAdd } from '../raster/onPMTileAdd.js';
4
- import { onTerrainAdd } from '../terrain/onTerrainAdd.js';
5
- import { addRasterImage } from '../textures/attachRasterImage.js';
6
- import { addTimeLayer } from '../sunlight/addTimeLayer.js';
7
-
8
- /**
9
- * Dispatch layer attachment according to its registered scene kind.
10
- *
11
- * @param {L.Layer} layer Layer being added.
12
- * @param {L.Map} map Map receiving the layer.
13
- *
14
- * @returns {*} Result of the selected add handler, if any.
15
- */
16
- export function addSceneLayer(layer, map) {
17
- switch (kindByLayer.get(layer)) {
18
- case '3d': return onAdd3DLayer(layer, map);
19
- case 'raster': return onPMTileAdd(layer, map);
20
- case 'terrain': return onTerrainAdd(layer, map);
21
- case 'image': return addRasterImage.call(layer, map);
22
- case 'time': return addTimeLayer.call(layer, map);
23
- }
24
- }
1
+ import { kindByLayer } from '../weakmaps/kindByLayer.js';
2
+ import { onAdd3DLayer } from './onAdd3DLayer.js';
3
+ import { onPMTileAdd } from '../raster/onPMTileAdd.js';
4
+ import { onTerrainAdd } from '../terrain/onTerrainAdd.js';
5
+ import { addRasterImage } from '../textures/attachRasterImage.js';
6
+ import { addTimeLayer } from '../sunlight/addTimeLayer.js';
7
+
8
+ /**
9
+ * Dispatch layer attachment according to its registered scene kind.
10
+ *
11
+ * @param {L.Layer} layer Layer being added.
12
+ * @param {L.Map} map Map receiving the layer.
13
+ *
14
+ * @returns {*} Result of the selected add handler, if any.
15
+ */
16
+ export function addSceneLayer(layer, map) {
17
+ switch (kindByLayer.get(layer)) {
18
+ case '3d': return onAdd3DLayer(layer, map);
19
+ case 'raster': return onPMTileAdd(layer, map);
20
+ case 'terrain': return onTerrainAdd(layer, map);
21
+ case 'image': return addRasterImage.call(layer, map);
22
+ case 'time': return addTimeLayer.call(layer, map);
23
+ }
24
+ }
@@ -1,34 +1,34 @@
1
- import { geojsonByLayer } from '../weakmaps/geojsonByLayer.js';
2
- import { kindByLayer } from '../weakmaps/kindByLayer.js';
3
- import { setGeoJSONData } from '../sources/setGeoJSONData.js';
4
- import { getHeader } from '../archives/getHeader.js';
5
- import { getZxy } from '../archives/getZxy.js';
6
- import { getRasterTileSize } from '../raster/getRasterTileSize.js';
7
- import { isLoading } from '../raster/isRasterLoading.js';
8
- import { setPMTileOpacity } from '../raster/setPMTileOpacity.js';
9
- import { setPMTileZIndex } from '../raster/setPMTileZIndex.js';
10
-
11
- /**
12
- * Dispatch supported source methods or invoke the layer's own method.
13
- *
14
- * @param {string} method Method name.
15
- * @param {L.Layer} layer Target layer.
16
- * @param {...*} args Arguments forwarded to the method.
17
- *
18
- * @returns {*} Result of the selected method.
19
- */
20
- export function callLayer(method, layer, ...args) {
21
-
22
- if (method === 'setData' && geojsonByLayer.get(layer)) return setGeoJSONData(layer, ...args);
23
- if (kindByLayer.get(layer) === 'raster') {
24
- switch (method) {
25
- case 'getHeader': return getHeader(layer);
26
- case 'getZxy': return getZxy(layer, ...args);
27
- case 'getTileSize': return getRasterTileSize();
28
- case 'isLoading': return isLoading(layer);
29
- case 'setOpacity': return setPMTileOpacity(layer, ...args);
30
- case 'setZIndex': return setPMTileZIndex(layer, ...args);
31
- }
32
- }
33
- return layer[method](...args);
34
- }
1
+ import { geojsonByLayer } from '../weakmaps/geojsonByLayer.js';
2
+ import { kindByLayer } from '../weakmaps/kindByLayer.js';
3
+ import { setGeoJSONData } from '../sources/setGeoJSONData.js';
4
+ import { getHeader } from '../archives/getHeader.js';
5
+ import { getZxy } from '../archives/getZxy.js';
6
+ import { getRasterTileSize } from '../raster/getRasterTileSize.js';
7
+ import { isLoading } from '../raster/isRasterLoading.js';
8
+ import { setPMTileOpacity } from '../raster/setPMTileOpacity.js';
9
+ import { setPMTileZIndex } from '../raster/setPMTileZIndex.js';
10
+
11
+ /**
12
+ * Dispatch supported source methods or invoke the layer's own method.
13
+ *
14
+ * @param {string} method Method name.
15
+ * @param {L.Layer} layer Target layer.
16
+ * @param {...*} args Arguments forwarded to the method.
17
+ *
18
+ * @returns {*} Result of the selected method.
19
+ */
20
+ export function callLayer(method, layer, ...args) {
21
+
22
+ if (method === 'setData' && geojsonByLayer.get(layer)) return setGeoJSONData(layer, ...args);
23
+ if (kindByLayer.get(layer) === 'raster') {
24
+ switch (method) {
25
+ case 'getHeader': return getHeader(layer);
26
+ case 'getZxy': return getZxy(layer, ...args);
27
+ case 'getTileSize': return getRasterTileSize();
28
+ case 'isLoading': return isLoading(layer);
29
+ case 'setOpacity': return setPMTileOpacity(layer, ...args);
30
+ case 'setZIndex': return setPMTileZIndex(layer, ...args);
31
+ }
32
+ }
33
+ return layer[method](...args);
34
+ }
@@ -1,13 +1,13 @@
1
- import { L } from '../globals/L.js';
2
- import { sceneEmptyOptions } from '../globals/sceneEmptyOptions.js';
3
-
4
- /**
5
- * Create a Leaflet layer with the given options.
6
- *
7
- * @param {Object} [options] Layer options.
8
- *
9
- * @returns {L.Layer} New layer.
10
- */
11
- export function createLayer(options = sceneEmptyOptions) {
12
- return /* alloc */ new L.Layer(options);
13
- }
1
+ import { L } from '../globals/L.js';
2
+ import { sceneEmptyOptions } from '../globals/sceneEmptyOptions.js';
3
+
4
+ /**
5
+ * Create a Leaflet layer with the given options.
6
+ *
7
+ * @param {Object} [options] Layer options.
8
+ *
9
+ * @returns {L.Layer} New layer.
10
+ */
11
+ export function createLayer(options = sceneEmptyOptions) {
12
+ return /* alloc */ new L.Layer(options);
13
+ }
@@ -1,12 +1,12 @@
1
- import { locationByLayer } from '../weakmaps/locationByLayer.js';
2
-
3
- /**
4
- * Read the geographic origin stored for a layer.
5
- *
6
- * @param {L.Layer} layer Layer to inspect.
7
- *
8
- * @returns {L.LatLng|undefined} Stored origin, if initialized.
9
- */
10
- export function getLocation(layer) {
11
- return locationByLayer.get(layer);
12
- }
1
+ import { locationByLayer } from '../weakmaps/locationByLayer.js';
2
+
3
+ /**
4
+ * Read the geographic origin stored for a layer.
5
+ *
6
+ * @param {L.Layer} layer Layer to inspect.
7
+ *
8
+ * @returns {L.LatLng|undefined} Stored origin, if initialized.
9
+ */
10
+ export function getLocation(layer) {
11
+ return locationByLayer.get(layer);
12
+ }
@@ -1,19 +1,19 @@
1
- import { state3dByLayer } from '../weakmaps/state3dByLayer.js';
2
- import { L } from '../globals/L.js';
3
-
4
- /**
5
- * Identify supported native Leaflet layers that are not already 3D layers.
6
- *
7
- * @param {L.Layer} layer Layer to inspect.
8
- *
9
- * @returns {boolean} Whether the layer is supported as native content.
10
- */
11
- export function isNativeLayer(layer) {
12
- return !state3dByLayer.get(layer) && (
13
- layer instanceof L.GridLayer ||
14
- layer instanceof L.Polyline ||
15
- layer instanceof L.CircleMarker ||
16
- layer instanceof L.Marker && !(layer.options.icon instanceof L.DivIcon) ||
17
- layer instanceof L.ImageOverlay && !(layer instanceof L.VideoOverlay) && !(layer instanceof L.SVGOverlay)
18
- );
19
- }
1
+ import { state3dByLayer } from '../weakmaps/state3dByLayer.js';
2
+ import { L } from '../globals/L.js';
3
+
4
+ /**
5
+ * Identify supported native Leaflet layers that are not already 3D layers.
6
+ *
7
+ * @param {L.Layer} layer Layer to inspect.
8
+ *
9
+ * @returns {boolean} Whether the layer is supported as native content.
10
+ */
11
+ export function isNativeLayer(layer) {
12
+ return !state3dByLayer.get(layer) && (
13
+ layer instanceof L.GridLayer ||
14
+ layer instanceof L.Polyline ||
15
+ layer instanceof L.CircleMarker ||
16
+ layer instanceof L.Marker && !(layer.options.icon instanceof L.DivIcon) ||
17
+ layer instanceof L.ImageOverlay && !(layer instanceof L.VideoOverlay) && !(layer instanceof L.SVGOverlay)
18
+ );
19
+ }
@@ -1,22 +1,22 @@
1
- import { kindByLayer } from '../weakmaps/kindByLayer.js';
2
- import { onRemove3DLayer } from './onRemove3DLayer.js';
3
- import { onPMTileRemove } from '../raster/onPMTileRemove.js';
4
- import { onTerrainRemove } from '../terrain/onTerrainRemove.js';
5
- import { removeTimeLayer } from '../sunlight/removeTimeLayer.js';
6
-
7
- /**
8
- * Dispatch layer removal according to its registered scene kind.
9
- *
10
- * @param {L.Layer} layer Layer being removed.
11
- * @param {L.Map} map Map containing the layer.
12
- *
13
- * @returns {*} Result of the selected remove handler, if any.
14
- */
15
- export function removeSceneLayer(layer, map) {
16
- switch (kindByLayer.get(layer)) {
17
- case '3d': return onRemove3DLayer(layer, map);
18
- case 'raster': return onPMTileRemove(layer, map);
19
- case 'terrain': return onTerrainRemove(layer, map);
20
- case 'time': return removeTimeLayer.call(layer, map);
21
- }
22
- }
1
+ import { kindByLayer } from '../weakmaps/kindByLayer.js';
2
+ import { onRemove3DLayer } from './onRemove3DLayer.js';
3
+ import { onPMTileRemove } from '../raster/onPMTileRemove.js';
4
+ import { onTerrainRemove } from '../terrain/onTerrainRemove.js';
5
+ import { removeTimeLayer } from '../sunlight/removeTimeLayer.js';
6
+
7
+ /**
8
+ * Dispatch layer removal according to its registered scene kind.
9
+ *
10
+ * @param {L.Layer} layer Layer being removed.
11
+ * @param {L.Map} map Map containing the layer.
12
+ *
13
+ * @returns {*} Result of the selected remove handler, if any.
14
+ */
15
+ export function removeSceneLayer(layer, map) {
16
+ switch (kindByLayer.get(layer)) {
17
+ case '3d': return onRemove3DLayer(layer, map);
18
+ case 'raster': return onPMTileRemove(layer, map);
19
+ case 'terrain': return onTerrainRemove(layer, map);
20
+ case 'time': return removeTimeLayer.call(layer, map);
21
+ }
22
+ }
@@ -1,9 +1,9 @@
1
- /**
2
- * Emit an error event on a source layer.
3
- *
4
- * @param {L.Layer} source Layer receiving the event.
5
- * @param {Error} error Error to report.
6
- */
7
- export function reportError(source, error) {
8
- source.fire('error', /* alloc */ { error });
9
- }
1
+ /**
2
+ * Emit an error event on a source layer.
3
+ *
4
+ * @param {L.Layer} source Layer receiving the event.
5
+ * @param {Error} error Error to report.
6
+ */
7
+ export function reportError(source, error) {
8
+ source.fire('error', /* alloc */ { error });
9
+ }