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,26 +1,26 @@
1
- import { kindByLayer } from '../weakmaps/kindByLayer.js';
2
- import { L } from '../globals/L.js';
3
- import { removeLayer as sharedRemoveLayer } from '../globals/removeLayer.js';
4
- import { removeSceneLayer } from '../scene/removeSceneLayer.js';
5
-
6
- /**
7
- * Remove a scene layer from this map, delegating ordinary layers to Leaflet.
8
- *
9
- * @param {L.Layer} layer Layer to remove.
10
- *
11
- * @returns {L.Map} This map.
12
- */
13
- export function removeLayer(layer) {
14
- const id = L.Util.stamp(layer);
15
- if (!this._layers[id]) return this;
16
-
17
- if (!kindByLayer.get(layer)) return sharedRemoveLayer.value.call(this, layer);
18
- if (this._loaded) removeSceneLayer(layer, this);
19
- delete this._layers[id];
20
- if (this._loaded) {
21
- this.fire('layerremove', /* alloc */ { layer });
22
- layer.fire('remove');
23
- }
24
- layer._map = layer._mapToAdd = null;
25
- return this;
26
- }
1
+ import { kindByLayer } from '../weakmaps/kindByLayer.js';
2
+ import { L } from '../globals/L.js';
3
+ import { removeLayer as sharedRemoveLayer } from '../globals/removeLayer.js';
4
+ import { removeSceneLayer } from '../scene/removeSceneLayer.js';
5
+
6
+ /**
7
+ * Remove a scene layer from this map, delegating ordinary layers to Leaflet.
8
+ *
9
+ * @param {L.Layer} layer Layer to remove.
10
+ *
11
+ * @returns {L.Map} This map.
12
+ */
13
+ export function removeLayer(layer) {
14
+ const id = L.Util.stamp(layer);
15
+ if (!this._layers[id]) return this;
16
+
17
+ if (!kindByLayer.get(layer)) return sharedRemoveLayer.value.call(this, layer);
18
+ if (this._loaded) removeSceneLayer(layer, this);
19
+ delete this._layers[id];
20
+ if (this._loaded) {
21
+ this.fire('layerremove', /* alloc */ { layer });
22
+ layer.fire('remove');
23
+ }
24
+ layer._map = layer._mapToAdd = null;
25
+ return this;
26
+ }
@@ -1,12 +1,12 @@
1
- import { markerSetRotation } from './markerSetRotation.js';
2
-
3
- /**
4
- * Set this marker's rotation.
5
- *
6
- * @param {number} rotation Rotation value.
7
- *
8
- * @returns {L.Marker} This marker.
9
- */
10
- export function setRotation(rotation) {
11
- return markerSetRotation(this, rotation);
12
- }
1
+ import { markerSetRotation } from './markerSetRotation.js';
2
+
3
+ /**
4
+ * Set this marker's rotation.
5
+ *
6
+ * @param {number} rotation Rotation value.
7
+ *
8
+ * @returns {L.Marker} This marker.
9
+ */
10
+ export function setRotation(rotation) {
11
+ return markerSetRotation(this, rotation);
12
+ }
@@ -1,14 +1,14 @@
1
- import { readyByLayer } from '../weakmaps/readyByLayer.js';
2
- import { cameraReadyByMap } from '../weakmaps/cameraReadyByMap.js';
3
-
4
- /**
5
- * Get a layer or map's readiness promise, or resolve immediately if none is registered.
6
- *
7
- * @param {L.Layer|L.Map} instance Layer or map to inspect.
8
- *
9
- * @returns {Promise} Readiness promise.
10
- */
11
- export function ready(instance) {
12
- return readyByLayer.get(instance) ||
13
- cameraReadyByMap.get(instance) || Promise.resolve(instance);
14
- }
1
+ import { readyByLayer } from '../weakmaps/readyByLayer.js';
2
+ import { cameraReadyByMap } from '../weakmaps/cameraReadyByMap.js';
3
+
4
+ /**
5
+ * Get a layer or map's readiness promise, or resolve immediately if none is registered.
6
+ *
7
+ * @param {L.Layer|L.Map} instance Layer or map to inspect.
8
+ *
9
+ * @returns {Promise} Readiness promise.
10
+ */
11
+ export function ready(instance) {
12
+ return readyByLayer.get(instance) ||
13
+ cameraReadyByMap.get(instance) || Promise.resolve(instance);
14
+ }
@@ -1,36 +1,36 @@
1
- import { bridgeMeshByLayer } from '../weakmaps/bridgeMeshByLayer.js';
2
- import { bridgesByLayer } from '../weakmaps/bridgesByLayer.js';
3
- import { locationByLayer } from '../weakmaps/locationByLayer.js';
4
- import { rootByLayer } from '../weakmaps/rootByLayer.js';
5
- import { terrainZoomByLayer } from '../weakmaps/terrainZoomByLayer.js';
6
- import { radians } from '../globals/radians.js';
7
- import { createMesh } from '../rendering/createMesh.js';
8
- import { bridgePolygon } from './bridgePolygon.js';
9
-
10
- /**
11
- * Bare-earth DEMs drop bridges: `getElevation` returns the deck height inside these polygons (GeoJSON
12
- * Polygon/MultiPolygon with Z, e.g. IGN BD TOPO), and one mesh draws the 1.2 m thick decks.
13
- * ponytail: anything under a deck (quays, boats asking `getElevation`) also gets the deck height.
14
- *
15
- * @param {L.Layer} layer Terrain layer owning bridge geometry.
16
- * @param {Object} geojson Feature collection of bridge polygons.
17
- */
18
- export function addBridges(layer, geojson) {
19
- const map = layer._map, crs = map.options.crs, zoom = terrainZoomByLayer.get(layer);
20
- const origin = crs.project(locationByLayer.get(layer)), metres = Math.cos(locationByLayer.get(layer).lat * radians);
21
- const base = rootByLayer.get(layer).position[1];
22
- const position = /* alloc */ [], normal = /* alloc */ [], color = /* alloc */ [];
23
- bridgesByLayer.set(layer, /* alloc */ new Map());
24
- const context = /* alloc */ { backend: layer, map, crs, zoom, origin, metres, base, position, normal, color };
25
- let geometry, polygons, polygonIndex;
26
- for ({ geometry } of geojson.features) {
27
- if (geometry.type !== 'Polygon' && geometry.type !== 'MultiPolygon') continue;
28
- polygons = geometry.coordinates;
29
- for (polygonIndex = 0; polygonIndex < (geometry.type === 'Polygon' ? 1 : polygons.length); polygonIndex++) {
30
- bridgePolygon(context, geometry.type === 'Polygon' ? polygons : polygons[polygonIndex]);
31
- }
32
- }
33
- if (position.length) {
34
- bridgeMeshByLayer.set(layer, createMesh(layer, /* alloc */ { position, normal, color }));
35
- }
36
- }
1
+ import { bridgeMeshByLayer } from '../weakmaps/bridgeMeshByLayer.js';
2
+ import { bridgesByLayer } from '../weakmaps/bridgesByLayer.js';
3
+ import { locationByLayer } from '../weakmaps/locationByLayer.js';
4
+ import { rootByLayer } from '../weakmaps/rootByLayer.js';
5
+ import { terrainZoomByLayer } from '../weakmaps/terrainZoomByLayer.js';
6
+ import { radians } from '../globals/radians.js';
7
+ import { createMesh } from '../rendering/createMesh.js';
8
+ import { bridgePolygon } from './bridgePolygon.js';
9
+
10
+ /**
11
+ * Bare-earth DEMs drop bridges: `getElevation` returns the deck height inside these polygons (GeoJSON
12
+ * Polygon/MultiPolygon with Z, e.g. IGN BD TOPO), and one mesh draws the 1.2 m thick decks.
13
+ * ponytail: anything under a deck (quays, boats asking `getElevation`) also gets the deck height.
14
+ *
15
+ * @param {L.Layer} layer Terrain layer owning bridge geometry.
16
+ * @param {Object} geojson Feature collection of bridge polygons.
17
+ */
18
+ export function addBridges(layer, geojson) {
19
+ const map = layer._map, crs = map.options.crs, zoom = terrainZoomByLayer.get(layer);
20
+ const origin = crs.project(locationByLayer.get(layer)), metres = Math.cos(locationByLayer.get(layer).lat * radians);
21
+ const base = rootByLayer.get(layer).position[1];
22
+ const position = /* alloc */ [], normal = /* alloc */ [], color = /* alloc */ [];
23
+ bridgesByLayer.set(layer, /* alloc */ new Map());
24
+ const context = /* alloc */ { backend: layer, map, crs, zoom, origin, metres, base, position, normal, color };
25
+ let geometry, polygons, polygonIndex;
26
+ for ({ geometry } of geojson.features) {
27
+ if (geometry.type !== 'Polygon' && geometry.type !== 'MultiPolygon') continue;
28
+ polygons = geometry.coordinates;
29
+ for (polygonIndex = 0; polygonIndex < (geometry.type === 'Polygon' ? 1 : polygons.length); polygonIndex++) {
30
+ bridgePolygon(context, geometry.type === 'Polygon' ? polygons : polygons[polygonIndex]);
31
+ }
32
+ }
33
+ if (position.length) {
34
+ bridgeMeshByLayer.set(layer, createMesh(layer, /* alloc */ { position, normal, color }));
35
+ }
36
+ }
@@ -1,11 +1,11 @@
1
- import { triangleContexts } from '../globals/triangleContexts.js';
2
- import { addTriangle } from './appendAreaTriangle.js';
3
-
4
- /**
5
- * Append a generated triangle to the current geometry context.
6
- *
7
- * @param {...*} args Triangle vertices, heights, normal and color.
8
- */
9
- export function addGeneratedTriangle(...args) {
10
- addTriangle(triangleContexts[triangleContexts.length - 1], ...args);
1
+ import { triangleContexts } from '../globals/triangleContexts.js';
2
+ import { addTriangle } from './appendAreaTriangle.js';
3
+
4
+ /**
5
+ * Append a generated triangle to the current geometry context.
6
+ *
7
+ * @param {...*} args Triangle vertices, heights, normal and color.
8
+ */
9
+ export function addGeneratedTriangle(...args) {
10
+ addTriangle(triangleContexts[triangleContexts.length - 1], ...args);
11
11
  }
@@ -1,32 +1,32 @@
1
- import { groundOffset } from '../sources/groundOffset.js';
2
-
3
- /**
4
- * Append an oriented triangle and its normals, colors and optional UVs to an area.
5
- *
6
- * @param {Object} context Area geometry buffers and options.
7
- * @param {Object} a First projected vertex.
8
- * @param {number} ah First vertex height.
9
- * @param {Object} b Second projected vertex.
10
- * @param {number} bh Second vertex height.
11
- * @param {Object} c Third projected vertex.
12
- * @param {number} ch Third vertex height.
13
- * @param {number} nx Normal x component.
14
- * @param {number} ny Normal y component.
15
- * @param {number} nz Normal z component.
16
- * @param {Object} color RGB color.
17
- */
18
- export function addTriangle(context, a, ah, b, bh, c, ch, nx, ny, nz, color) {
19
- const { backend: layer, positions, normals, colors, uvs } = context;
20
- const ux = b.x - a.x, uy = bh - ah, uz = a.y - b.y;
21
- const vx = c.x - a.x, vy = ch - ah, vz = a.y - c.y;
22
- if ((uy * vz - uz * vy) * nx + (uz * vx - ux * vz) * ny + (ux * vy - uy * vx) * nz < 0) {
23
- const point = b, height = bh;
24
- b = c; bh = ch; c = point; ch = height;
25
- }
26
- positions.push(a.x, ah + groundOffset(a), -a.y,
27
- b.x, bh + groundOffset(b), -b.y,
28
- c.x, ch + groundOffset(c), -c.y);
29
- normals.push(nx, ny, nz, nx, ny, nz, nx, ny, nz);
30
- colors.push(color.r, color.g, color.b, color.r, color.g, color.b, color.r, color.g, color.b);
31
- if (layer.options.nightLight) uvs.push(...a.uv, ...b.uv, ...c.uv);
32
- }
1
+ import { groundOffset } from '../sources/groundOffset.js';
2
+
3
+ /**
4
+ * Append an oriented triangle and its normals, colors and optional UVs to an area.
5
+ *
6
+ * @param {Object} context Area geometry buffers and options.
7
+ * @param {Object} a First projected vertex.
8
+ * @param {number} ah First vertex height.
9
+ * @param {Object} b Second projected vertex.
10
+ * @param {number} bh Second vertex height.
11
+ * @param {Object} c Third projected vertex.
12
+ * @param {number} ch Third vertex height.
13
+ * @param {number} nx Normal x component.
14
+ * @param {number} ny Normal y component.
15
+ * @param {number} nz Normal z component.
16
+ * @param {Object} color RGB color.
17
+ */
18
+ export function addTriangle(context, a, ah, b, bh, c, ch, nx, ny, nz, color) {
19
+ const { backend: layer, positions, normals, colors, uvs } = context;
20
+ const ux = b.x - a.x, uy = bh - ah, uz = a.y - b.y;
21
+ const vx = c.x - a.x, vy = ch - ah, vz = a.y - c.y;
22
+ if ((uy * vz - uz * vy) * nx + (uz * vx - ux * vz) * ny + (ux * vy - uy * vx) * nz < 0) {
23
+ const point = b, height = bh;
24
+ b = c; bh = ch; c = point; ch = height;
25
+ }
26
+ positions.push(a.x, ah + groundOffset(a), -a.y,
27
+ b.x, bh + groundOffset(b), -b.y,
28
+ c.x, ch + groundOffset(c), -c.y);
29
+ normals.push(nx, ny, nz, nx, ny, nz, nx, ny, nz);
30
+ colors.push(color.r, color.g, color.b, color.r, color.g, color.b, color.r, color.g, color.b);
31
+ if (layer.options.nightLight) uvs.push(...a.uv, ...b.uv, ...c.uv);
32
+ }
@@ -1,17 +1,17 @@
1
- /**
2
- * Project three native vertices and append them to a destination array.
3
- *
4
- * @param {Function} point Vertex projection function.
5
- * @param {Array<number>} target Destination array.
6
- * @param {L.Point} a First vertex.
7
- * @param {L.Point} b Second vertex.
8
- * @param {L.Point} c Third vertex.
9
- * @param {L.Point} [anchorA] First vertex anchor.
10
- * @param {L.Point} [anchorB] Second vertex anchor.
11
- * @param {L.Point} [anchorC] Third vertex anchor.
12
- *
13
- * @returns {number} New destination length.
14
- */
15
- export function triangle(point, target, a, b, c, anchorA, anchorB, anchorC) {
16
- return target.push(...point(a, anchorA), ...point(b, anchorB), ...point(c, anchorC));
17
- }
1
+ /**
2
+ * Project three native vertices and append them to a destination array.
3
+ *
4
+ * @param {Function} point Vertex projection function.
5
+ * @param {Array<number>} target Destination array.
6
+ * @param {L.Point} a First vertex.
7
+ * @param {L.Point} b Second vertex.
8
+ * @param {L.Point} c Third vertex.
9
+ * @param {L.Point} [anchorA] First vertex anchor.
10
+ * @param {L.Point} [anchorB] Second vertex anchor.
11
+ * @param {L.Point} [anchorC] Third vertex anchor.
12
+ *
13
+ * @returns {number} New destination length.
14
+ */
15
+ export function triangle(point, target, a, b, c, anchorA, anchorB, anchorC) {
16
+ return target.push(...point(a, anchorA), ...point(b, anchorB), ...point(c, anchorC));
17
+ }
@@ -1,33 +1,33 @@
1
- /**
2
- * Append a raised route dash as two colored triangles.
3
- *
4
- * @param {Array<number>} position Destination positions.
5
- * @param {Array<number>} normal Destination normals.
6
- * @param {Array<number>} color Destination colors.
7
- * @param {Array<number>} a Segment start.
8
- * @param {Array<number>} b Segment end.
9
- * @param {number} dx Segment x displacement.
10
- * @param {number} dz Segment z displacement.
11
- * @param {number} x Dash half-width x offset.
12
- * @param {number} z Dash half-width z offset.
13
- * @param {number} start Start fraction along the segment.
14
- * @param {number} end End fraction along the segment.
15
- * @param {number} r Red component.
16
- * @param {number} g Green component.
17
- * @param {number} blue Blue component.
18
- */
19
- export function appendRouteDash(position, normal, color, a, b, dx, dz, x, z, start, end, r, g, blue) {
20
- const px = a[0] + dx * start, pz = a[1] + dz * start;
21
- const py = a[2] + (b[2] - a[2]) * start + 0.4;
22
- const qx = a[0] + dx * end, qz = a[1] + dz * end;
23
- const qy = a[2] + (b[2] - a[2]) * end + 0.4;
24
- let vertex;
25
- for (vertex = 0; vertex < 6; vertex++) {
26
- if (vertex === 0 || vertex === 3) position.push(px - x, py, pz - z);
27
- else if (vertex === 1) position.push(px + x, py, pz + z);
28
- else if (vertex === 5) position.push(qx - x, qy, qz - z);
29
- else position.push(qx + x, qy, qz + z);
30
- normal.push(0, 1, 0);
31
- color.push(r, g, blue);
32
- }
33
- }
1
+ /**
2
+ * Append a raised route dash as two colored triangles.
3
+ *
4
+ * @param {Array<number>} position Destination positions.
5
+ * @param {Array<number>} normal Destination normals.
6
+ * @param {Array<number>} color Destination colors.
7
+ * @param {Array<number>} a Segment start.
8
+ * @param {Array<number>} b Segment end.
9
+ * @param {number} dx Segment x displacement.
10
+ * @param {number} dz Segment z displacement.
11
+ * @param {number} x Dash half-width x offset.
12
+ * @param {number} z Dash half-width z offset.
13
+ * @param {number} start Start fraction along the segment.
14
+ * @param {number} end End fraction along the segment.
15
+ * @param {number} r Red component.
16
+ * @param {number} g Green component.
17
+ * @param {number} blue Blue component.
18
+ */
19
+ export function appendRouteDash(position, normal, color, a, b, dx, dz, x, z, start, end, r, g, blue) {
20
+ const px = a[0] + dx * start, pz = a[1] + dz * start;
21
+ const py = a[2] + (b[2] - a[2]) * start + 0.4;
22
+ const qx = a[0] + dx * end, qz = a[1] + dz * end;
23
+ const qy = a[2] + (b[2] - a[2]) * end + 0.4;
24
+ let vertex;
25
+ for (vertex = 0; vertex < 6; vertex++) {
26
+ if (vertex === 0 || vertex === 3) position.push(px - x, py, pz - z);
27
+ else if (vertex === 1) position.push(px + x, py, pz + z);
28
+ else if (vertex === 5) position.push(qx - x, qy, qz - z);
29
+ else position.push(qx + x, qy, qz + z);
30
+ normal.push(0, 1, 0);
31
+ color.push(r, g, blue);
32
+ }
33
+ }
@@ -1,28 +1,28 @@
1
- import { appendRouteDash } from './appendRouteDash.js';
2
-
3
- /**
4
- * Append route dashes for a segment using cumulative distances to preserve dash phase.
5
- *
6
- * @param {Array<number>} position Destination positions.
7
- * @param {Array<number>} normal Destination normals.
8
- * @param {Array<number>} color Destination colors.
9
- * @param {Array<Array<number>>} points Route points.
10
- * @param {Array<number>} lengths Cumulative route distances.
11
- * @param {number} i Segment end index.
12
- * @param {number} r Red component.
13
- * @param {number} g Green component.
14
- * @param {number} blue Blue component.
15
- */
16
- export function appendRouteSegment(position, normal, color, points, lengths, i, r, g, blue) {
17
- const a = points[i - 1], b = points[i];
18
- const dx = b[0] - a[0], dz = b[1] - a[1], length = lengths[i] - lengths[i - 1];
19
- if (!length) return;
20
- const x = -dz / length * 2.5, z = dx / length * 2.5;
21
- let distance, start, end;
22
- for (distance = Math.floor(lengths[i - 1] / 30) * 30; distance < lengths[i]; distance += 30) {
23
- start = Math.max(0, (distance - lengths[i - 1]) / length);
24
- end = Math.min(1, (distance + 18 - lengths[i - 1]) / length);
25
- if (end <= start) continue;
26
- appendRouteDash(position, normal, color, a, b, dx, dz, x, z, start, end, r, g, blue);
27
- }
28
- }
1
+ import { appendRouteDash } from './appendRouteDash.js';
2
+
3
+ /**
4
+ * Append route dashes for a segment using cumulative distances to preserve dash phase.
5
+ *
6
+ * @param {Array<number>} position Destination positions.
7
+ * @param {Array<number>} normal Destination normals.
8
+ * @param {Array<number>} color Destination colors.
9
+ * @param {Array<Array<number>>} points Route points.
10
+ * @param {Array<number>} lengths Cumulative route distances.
11
+ * @param {number} i Segment end index.
12
+ * @param {number} r Red component.
13
+ * @param {number} g Green component.
14
+ * @param {number} blue Blue component.
15
+ */
16
+ export function appendRouteSegment(position, normal, color, points, lengths, i, r, g, blue) {
17
+ const a = points[i - 1], b = points[i];
18
+ const dx = b[0] - a[0], dz = b[1] - a[1], length = lengths[i] - lengths[i - 1];
19
+ if (!length) return;
20
+ const x = -dz / length * 2.5, z = dx / length * 2.5;
21
+ let distance, start, end;
22
+ for (distance = Math.floor(lengths[i - 1] / 30) * 30; distance < lengths[i]; distance += 30) {
23
+ start = Math.max(0, (distance - lengths[i - 1]) / length);
24
+ end = Math.min(1, (distance + 18 - lengths[i - 1]) / length);
25
+ if (end <= start) continue;
26
+ appendRouteDash(position, normal, color, a, b, dx, dz, x, z, start, end, r, g, blue);
27
+ }
28
+ }
@@ -1,48 +1,48 @@
1
- import { buildProjectedPolygon } from './buildProjectedPolygon.js';
2
- import { buildProjectedPoint } from './buildProjectedPoint.js';
3
- import { instanceAreaGeometry } from './instanceAreaGeometry.js';
4
- import { computeBounds } from './computeBounds.js';
5
-
6
- /**
7
- * Build area jobs into typed geometry buffers, feature ranges and light metadata.
8
- *
9
- * @param {Object} options Geometry jobs and night-light setting.
10
- *
11
- * @returns {Object} Prepared area geometry and metadata.
12
- */
13
- export function assembleAreaGeometry({ jobs, nightLight }) {
14
- const context = /* alloc */ {
15
- backend: /* alloc */ { options: /* alloc */ { nightLight } },
16
- positions: /* alloc */ [], normals: /* alloc */ [], colors: /* alloc */ [], uvs: /* alloc */ [],
17
- featureFaces: /* alloc */ [], lights: /* alloc */ [], supports: /* alloc */ new Set(),
18
- };
19
- let job, polygon, start, end;
20
- for (job of jobs) {
21
- start = context.positions.length / 3;
22
- if (job.point) buildProjectedPoint(context, job.point, job.style, job.baseColor, job.support);
23
- for (polygon of job.polygons) {
24
- buildProjectedPolygon(context, polygon, job.style.top, job.style.bottom, job.baseColor);
25
- }
26
- end = context.positions.length / 3;
27
- context.featureFaces.push(/* alloc */ { vertexStart: start, vertexEnd: end, faceStart: start / 3, faceEnd: end / 3 });
28
- }
29
- const data = instanceAreaGeometry(context);
30
- const result = /* alloc */ {
31
- positions: /* alloc */ new Float32Array(data.positions),
32
- normals: /* alloc */ new Float32Array(data.normals),
33
- colors: /* alloc */ new Float32Array(data.colors),
34
- uvs: /* alloc */ new Float32Array(context.uvs),
35
- instanceOffsets: data.instanceOffsets,
36
- ranges: context.featureFaces,
37
- lights: context.lights,
38
- };
39
- if (result.positions.length) {
40
- const geometry = /* alloc */ { attributes: /* alloc */ {
41
- position: /* alloc */ { data: result.positions },
42
- instanceOffset: result.instanceOffsets ? /* alloc */ { data: result.instanceOffsets, size: 4 } : undefined,
43
- } };
44
- computeBounds(geometry);
45
- result.bounds = geometry.bounds;
46
- }
47
- return result;
48
- }
1
+ import { buildProjectedPolygon } from './buildProjectedPolygon.js';
2
+ import { buildProjectedPoint } from './buildProjectedPoint.js';
3
+ import { instanceAreaGeometry } from './instanceAreaGeometry.js';
4
+ import { computeBounds } from './computeBounds.js';
5
+
6
+ /**
7
+ * Build area jobs into typed geometry buffers, feature ranges and light metadata.
8
+ *
9
+ * @param {Object} options Geometry jobs and night-light setting.
10
+ *
11
+ * @returns {Object} Prepared area geometry and metadata.
12
+ */
13
+ export function assembleAreaGeometry({ jobs, nightLight }) {
14
+ const context = /* alloc */ {
15
+ backend: /* alloc */ { options: /* alloc */ { nightLight } },
16
+ positions: /* alloc */ [], normals: /* alloc */ [], colors: /* alloc */ [], uvs: /* alloc */ [],
17
+ featureFaces: /* alloc */ [], lights: /* alloc */ [], supports: /* alloc */ new Set(),
18
+ };
19
+ let job, polygon, start, end;
20
+ for (job of jobs) {
21
+ start = context.positions.length / 3;
22
+ if (job.point) buildProjectedPoint(context, job.point, job.style, job.baseColor, job.support);
23
+ for (polygon of job.polygons) {
24
+ buildProjectedPolygon(context, polygon, job.style.top, job.style.bottom, job.baseColor);
25
+ }
26
+ end = context.positions.length / 3;
27
+ context.featureFaces.push(/* alloc */ { vertexStart: start, vertexEnd: end, faceStart: start / 3, faceEnd: end / 3 });
28
+ }
29
+ const data = instanceAreaGeometry(context);
30
+ const result = /* alloc */ {
31
+ positions: /* alloc */ new Float32Array(data.positions),
32
+ normals: /* alloc */ new Float32Array(data.normals),
33
+ colors: /* alloc */ new Float32Array(data.colors),
34
+ uvs: /* alloc */ new Float32Array(context.uvs),
35
+ instanceOffsets: data.instanceOffsets,
36
+ ranges: context.featureFaces,
37
+ lights: context.lights,
38
+ };
39
+ if (result.positions.length) {
40
+ const geometry = /* alloc */ { attributes: /* alloc */ {
41
+ position: /* alloc */ { data: result.positions },
42
+ instanceOffset: result.instanceOffsets ? /* alloc */ { data: result.instanceOffsets, size: 4 } : undefined,
43
+ } };
44
+ computeBounds(geometry);
45
+ result.bounds = geometry.bounds;
46
+ }
47
+ return result;
48
+ }
@@ -1,18 +1,18 @@
1
- /**
2
- * Append a bridge deck edge as two triangles with outward normals.
3
- *
4
- * @param {Object} context Destination position, normal and color arrays.
5
- * @param {Array<number>} p First edge point.
6
- * @param {Array<number>} q Second edge point.
7
- */
8
- export function bridgeEdge(context, p, q) {
9
- const { position, normal, color } = context;
10
- const length = Math.hypot(q[0] - p[0], q[2] - p[2]) || 1;
11
- const nx = (q[2] - p[2]) / length, nz = -(q[0] - p[0]) / length;
12
- let k, corner;
13
- for (k = 0; k < 6; k++) {
14
- corner = k === 0 || k === 3 || k === 5 ? p : q;
15
- position.push(corner[0], corner[1] - (k === 2 || k >= 4 ? 1.2 : 0), corner[2]);
16
- normal.push(nx, 0, nz); color.push(0.6, 0.58, 0.54);
17
- }
18
- }
1
+ /**
2
+ * Append a bridge deck edge as two triangles with outward normals.
3
+ *
4
+ * @param {Object} context Destination position, normal and color arrays.
5
+ * @param {Array<number>} p First edge point.
6
+ * @param {Array<number>} q Second edge point.
7
+ */
8
+ export function bridgeEdge(context, p, q) {
9
+ const { position, normal, color } = context;
10
+ const length = Math.hypot(q[0] - p[0], q[2] - p[2]) || 1;
11
+ const nx = (q[2] - p[2]) / length, nz = -(q[0] - p[0]) / length;
12
+ let k, corner;
13
+ for (k = 0; k < 6; k++) {
14
+ corner = k === 0 || k === 3 || k === 5 ? p : q;
15
+ position.push(corner[0], corner[1] - (k === 2 || k >= 4 ? 1.2 : 0), corner[2]);
16
+ normal.push(nx, 0, nz); color.push(0.6, 0.58, 0.54);
17
+ }
18
+ }
@@ -1,22 +1,22 @@
1
- /**
2
- * Append top and bottom bridge deck triangles with their normals and colors.
3
- *
4
- * @param {Object} context Destination position, normal and color arrays.
5
- * @param {Array<Array<number>>} points Local bridge vertices.
6
- * @param {Array<Array<number>>} triangles Triangle vertex indices.
7
- */
8
- export function bridgeFaces(context, points, triangles) {
9
- const { position, normal, color } = context;
10
- let a, b, c, pa, pb, pc, i, k, p;
11
- for ([a, b, c] of triangles) {
12
- // Counter-clockwise seen from above, so double-sided shading keeps the top lit.
13
- pa = points[a]; pb = points[b]; pc = points[c];
14
- if ((pb[2] - pa[2]) * (pc[0] - pa[0]) - (pb[0] - pa[0]) * (pc[2] - pa[2]) < 0) { i = b; b = c; c = i; }
15
- for (k = 0; k < 6; k++) {
16
- i = k === 0 || k === 3 ? a : k === 1 || k === 5 ? b : c;
17
- p = points[i];
18
- position.push(p[0], p[1] - (k >= 3 ? 1.2 : 0), p[2]);
19
- normal.push(0, k >= 3 ? -1 : 1, 0); color.push(0.6, 0.58, 0.54);
20
- }
21
- }
22
- }
1
+ /**
2
+ * Append top and bottom bridge deck triangles with their normals and colors.
3
+ *
4
+ * @param {Object} context Destination position, normal and color arrays.
5
+ * @param {Array<Array<number>>} points Local bridge vertices.
6
+ * @param {Array<Array<number>>} triangles Triangle vertex indices.
7
+ */
8
+ export function bridgeFaces(context, points, triangles) {
9
+ const { position, normal, color } = context;
10
+ let a, b, c, pa, pb, pc, i, k, p;
11
+ for ([a, b, c] of triangles) {
12
+ // Counter-clockwise seen from above, so double-sided shading keeps the top lit.
13
+ pa = points[a]; pb = points[b]; pc = points[c];
14
+ if ((pb[2] - pa[2]) * (pc[0] - pa[0]) - (pb[0] - pa[0]) * (pc[2] - pa[2]) < 0) { i = b; b = c; c = i; }
15
+ for (k = 0; k < 6; k++) {
16
+ i = k === 0 || k === 3 ? a : k === 1 || k === 5 ? b : c;
17
+ p = points[i];
18
+ position.push(p[0], p[1] - (k >= 3 ? 1.2 : 0), p[2]);
19
+ normal.push(0, k >= 3 ? -1 : 1, 0); color.push(0.6, 0.58, 0.54);
20
+ }
21
+ }
22
+ }