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,14 +1,14 @@
1
- import { routeColor } from '../traffic/routeColor.js';
2
- import { carriage } from './buildCarriage.js';
3
-
4
- /**
5
- * Build a single bus carriage colored from its route properties.
6
- *
7
- * @param {number} index Vehicle index, unused by this model.
8
- * @param {Object} properties Route properties used to choose the color.
9
- *
10
- * @returns {Array} Bus extrusion parts.
11
- */
12
- export function busModel(index, properties) {
13
- return carriage(0, 12, routeColor(properties));
1
+ import { routeColor } from '../traffic/routeColor.js';
2
+ import { carriage } from './buildCarriage.js';
3
+
4
+ /**
5
+ * Build a single bus carriage colored from its route properties.
6
+ *
7
+ * @param {number} index Vehicle index, unused by this model.
8
+ * @param {Object} properties Route properties used to choose the color.
9
+ *
10
+ * @returns {Array} Bus extrusion parts.
11
+ */
12
+ export function busModel(index, properties) {
13
+ return carriage(0, 12, routeColor(properties));
14
14
  }
@@ -1,39 +1,39 @@
1
- import { paints } from '../globals/paints.js';
2
- import { tyre } from '../globals/tyre.js';
3
- import { glass } from '../globals/glass.js';
4
- import { headlight } from '../globals/headlight.js';
5
- import { taillight } from '../globals/taillight.js';
6
- import { box } from '../geometry/box.js';
7
- import { mirror } from './mirrorVehiclePart.js';
8
-
9
- /**
10
- * Build the geometry parts for a car.
11
- *
12
- * @param {number} i Index selecting a paint color.
13
- *
14
- * @returns {Array} Car body, wheels, windows and light parts.
15
- */
16
- export function carModel(i) {
17
- const paint = paints[i % paints.length];
18
- return /* alloc */ [
19
- ...mirror(0.7, 0.92, -1.68, -1.02, 0, 0.64, tyre),
20
- ...mirror(0.7, 0.92, 1.02, 1.68, 0, 0.64, tyre),
21
- /* alloc */ [
22
- /* alloc */ [
23
- /* alloc */ [-0.9, -1.95],
24
- /* alloc */ [-0.72, -2.25],
25
- /* alloc */ [0.72, -2.25],
26
- /* alloc */ [0.9, -1.95],
27
- /* alloc */ [0.9, 2.05],
28
- /* alloc */ [0.76, 2.25],
29
- /* alloc */ [-0.76, 2.25],
30
- /* alloc */ [-0.9, 2.05],
31
- ],
32
- 0.28, 0.82, paint],
33
- // Greenhouse: the windscreen leans back, the rear window less.
34
- /* alloc */ [box(-0.84, 0.84, -0.75, 1.6), 0.82, 1.38, glass, box(-0.7, 0.7, -0.05, 1.3)],
35
- /* alloc */ [box(-0.71, 0.71, -0.06, 1.31), 1.38, 1.46, paint],
36
- ...mirror(0.38, 0.8, -2.3, -2.16, 0.56, 0.76, headlight),
37
- /* alloc */ [box(-0.78, 0.78, 2.16, 2.3), 0.6, 0.76, taillight],
38
- ];
39
- }
1
+ import { paints } from '../globals/paints.js';
2
+ import { tyre } from '../globals/tyre.js';
3
+ import { glass } from '../globals/glass.js';
4
+ import { headlight } from '../globals/headlight.js';
5
+ import { taillight } from '../globals/taillight.js';
6
+ import { box } from '../geometry/box.js';
7
+ import { mirror } from './mirrorVehiclePart.js';
8
+
9
+ /**
10
+ * Build the geometry parts for a car.
11
+ *
12
+ * @param {number} i Index selecting a paint color.
13
+ *
14
+ * @returns {Array} Car body, wheels, windows and light parts.
15
+ */
16
+ export function carModel(i) {
17
+ const paint = paints[i % paints.length];
18
+ return /* alloc */ [
19
+ ...mirror(0.7, 0.92, -1.68, -1.02, 0, 0.64, tyre),
20
+ ...mirror(0.7, 0.92, 1.02, 1.68, 0, 0.64, tyre),
21
+ /* alloc */ [
22
+ /* alloc */ [
23
+ /* alloc */ [-0.9, -1.95],
24
+ /* alloc */ [-0.72, -2.25],
25
+ /* alloc */ [0.72, -2.25],
26
+ /* alloc */ [0.9, -1.95],
27
+ /* alloc */ [0.9, 2.05],
28
+ /* alloc */ [0.76, 2.25],
29
+ /* alloc */ [-0.76, 2.25],
30
+ /* alloc */ [-0.9, 2.05],
31
+ ],
32
+ 0.28, 0.82, paint],
33
+ // Greenhouse: the windscreen leans back, the rear window less.
34
+ /* alloc */ [box(-0.84, 0.84, -0.75, 1.6), 0.82, 1.38, glass, box(-0.7, 0.7, -0.05, 1.3)],
35
+ /* alloc */ [box(-0.71, 0.71, -0.06, 1.31), 1.38, 1.46, paint],
36
+ ...mirror(0.38, 0.8, -2.3, -2.16, 0.56, 0.76, headlight),
37
+ /* alloc */ [box(-0.78, 0.78, 2.16, 2.3), 0.6, 0.76, taillight],
38
+ ];
39
+ }
@@ -1,12 +1,12 @@
1
- import { L } from '../globals/L.js';
2
- import { createWalk } from './createWalk.js';
3
-
4
- /**
5
- * Apply Leaflet control options and create the walk control's state and UI.
6
- *
7
- * @param {Object} options Walk control options.
8
- */
9
- export function initialize(options) {
10
- L.Util.setOptions(this, options);
11
- createWalk(this, this.options);
12
- }
1
+ import { L } from '../globals/L.js';
2
+ import { createWalk } from './createWalk.js';
3
+
4
+ /**
5
+ * Apply Leaflet control options and create the walk control's state and UI.
6
+ *
7
+ * @param {Object} options Walk control options.
8
+ */
9
+ export function initialize(options) {
10
+ L.Util.setOptions(this, options);
11
+ createWalk(this, this.options);
12
+ }
@@ -1,15 +1,15 @@
1
- import { hit } from '../picking/hit.js';
2
-
3
- /**
4
- * Cast a horizontal movement ray with walker clearance and return the nearest obstacle normal.
5
- *
6
- * @param {number} east Eastward movement in metres.
7
- * @param {number} north Northward movement in metres.
8
- * @param {number[]} feet Walker's world-space feet position.
9
- *
10
- * @returns {number[]|null|false} Horizontal obstacle normal, or a falsy value when clear.
11
- */
12
- export function blocked(east, north, feet) {
13
- const length = Math.hypot(east, north);
14
- return length > 1e-6 && hit(this.layer, feet[0], feet[1], feet[2], east / length, -north / length, length + 0.3, this.hitData);
15
- }
1
+ import { hit } from '../picking/hit.js';
2
+
3
+ /**
4
+ * Cast a horizontal movement ray with walker clearance and return the nearest obstacle normal.
5
+ *
6
+ * @param {number} east Eastward movement in metres.
7
+ * @param {number} north Northward movement in metres.
8
+ * @param {number[]} feet Walker's world-space feet position.
9
+ *
10
+ * @returns {number[]|null|false} Horizontal obstacle normal, or a falsy value when clear.
11
+ */
12
+ export function blocked(east, north, feet) {
13
+ const length = Math.hypot(east, north);
14
+ return length > 1e-6 && hit(this.layer, feet[0], feet[1], feet[2], east / length, -north / length, length + 0.3, this.hitData);
15
+ }
@@ -1,42 +1,42 @@
1
- import { kindByLayer } from '../weakmaps/kindByLayer.js';
2
- import { layersByLayer } from '../weakmaps/layersByLayer.js';
3
- import { raycasterByLayer } from '../weakmaps/raycasterByLayer.js';
4
- import { rootByLayer } from '../weakmaps/rootByLayer.js';
5
- import { sceneByLayer } from '../weakmaps/sceneByLayer.js';
6
- import { sharedByLayer } from '../weakmaps/sharedByLayer.js';
7
- import { intersectMeshes } from '../collision/intersectMeshes.js';
8
- import { traverse } from '../scene/traverse.js';
9
- import { updateWorldMatrix } from '../transforms/updateWorldMatrix.js';
10
- import { collectVisibleMesh } from '../picking/collectVisibleMesh.js';
11
- import { shouldSkipOther } from '../picking/shouldSkipOther.js';
12
- import { local } from '../projections/walkerLocalPosition.js';
13
-
14
- /**
15
- * Land a descending walker on the first visible surface crossed since its previous height.
16
- *
17
- * @param {number} previousY Previous world-space feet height.
18
- */
1
+ import { kindByLayer } from '../weakmaps/kindByLayer.js';
2
+ import { layersByLayer } from '../weakmaps/layersByLayer.js';
3
+ import { raycasterByLayer } from '../weakmaps/raycasterByLayer.js';
4
+ import { rootByLayer } from '../weakmaps/rootByLayer.js';
5
+ import { sceneByLayer } from '../weakmaps/sceneByLayer.js';
6
+ import { sharedByLayer } from '../weakmaps/sharedByLayer.js';
7
+ import { intersectMeshes } from '../collision/intersectMeshes.js';
8
+ import { traverse } from '../scene/traverse.js';
9
+ import { updateWorldMatrix } from '../transforms/updateWorldMatrix.js';
10
+ import { collectVisibleMesh } from '../picking/collectVisibleMesh.js';
11
+ import { shouldSkipOther } from '../picking/shouldSkipOther.js';
12
+ import { local } from '../projections/walkerLocalPosition.js';
13
+
14
+ /**
15
+ * Land a descending walker on the first visible surface crossed since its previous height.
16
+ *
17
+ * @param {number} previousY Previous world-space feet height.
18
+ */
19
19
  export function land(previousY) {
20
- const ray = raycasterByLayer.get(this.layer)
21
- const feet = local.call(this, this.local), root = rootByLayer.get(this.layer);
22
- const x = root.position[0] + feet[0] * root.scale[0];
23
- const y = root.position[1] + feet[1] * root.scale[1];
24
- const z = root.position[2] + feet[2] * root.scale[2];
25
- if (y > previousY || this.verticalSpeed > 0) return;
26
- updateWorldMatrix(sceneByLayer.get(this.layer));
27
- ray.origin[0] = x; ray.origin[1] = previousY + 0.01; ray.origin[2] = z;
28
- ray.direction[0] = 0; ray.direction[1] = -1; ray.direction[2] = 0;
29
- ray.meshes.length = 0;
30
- let layer, hit;
31
- for (layer of layersByLayer.get(sharedByLayer.get(this.layer))) {
32
- if (shouldSkipOther(layer, this.layer) || kindByLayer.get(layer) === 'raster' || layer.options.nightLight) continue;
33
- traverse(rootByLayer.get(layer), collectVisibleMesh, ray.meshes);
34
- }
35
- for (hit of intersectMeshes(ray, ray.meshes)) {
36
- if (hit.point[1] < y - 0.001) break;
37
- this.state.height += (hit.point[1] - y) / root.scale[1];
38
- this.verticalSpeed = 0;
39
- break;
40
- }
41
- ray.meshes.length = 0;
42
- }
20
+ const ray = raycasterByLayer.get(this.layer)
21
+ const feet = local.call(this, this.local), root = rootByLayer.get(this.layer);
22
+ const x = root.position[0] + feet[0] * root.scale[0];
23
+ const y = root.position[1] + feet[1] * root.scale[1];
24
+ const z = root.position[2] + feet[2] * root.scale[2];
25
+ if (y > previousY || this.verticalSpeed > 0) return;
26
+ updateWorldMatrix(sceneByLayer.get(this.layer));
27
+ ray.origin[0] = x; ray.origin[1] = previousY + 0.01; ray.origin[2] = z;
28
+ ray.direction[0] = 0; ray.direction[1] = -1; ray.direction[2] = 0;
29
+ ray.meshes.length = 0;
30
+ let layer, hit;
31
+ for (layer of layersByLayer.get(sharedByLayer.get(this.layer))) {
32
+ if (shouldSkipOther(layer, this.layer) || kindByLayer.get(layer) === 'raster' || layer.options.nightLight) continue;
33
+ traverse(rootByLayer.get(layer), collectVisibleMesh, ray.meshes);
34
+ }
35
+ for (hit of intersectMeshes(ray, ray.meshes)) {
36
+ if (hit.point[1] < y - 0.001) break;
37
+ this.state.height += (hit.point[1] - y) / root.scale[1];
38
+ this.verticalSpeed = 0;
39
+ break;
40
+ }
41
+ ray.meshes.length = 0;
42
+ }
@@ -1,37 +1,37 @@
1
- import { rootByLayer } from '../weakmaps/rootByLayer.js';
2
- import { L } from '../globals/L.js';
3
- import { radians } from '../globals/radians.js';
4
- import { local } from '../projections/walkerLocalPosition.js';
5
- import { blocked } from './isWalkBlocked.js';
6
-
7
- /**
8
- * Move along the walker's heading, maintaining wall clearance and sliding along obstacles.
9
- *
10
- * @param {number} forward Signed movement direction.
11
- * @param {number} dt Frame duration in seconds.
12
- */
13
- export function moveWalker(forward, dt) {
14
- const metres = forward * this.speed * dt, { lat, lng } = this.state.latlng;
15
- const { position, scale } = rootByLayer.get(this.layer);
16
- let east = Math.sin(this.state.heading) * metres, north = Math.cos(this.state.heading) * metres;
17
- const feet = local.call(this, this.local);
18
- let i;
19
- for (i = 0; i < feet.length; i++) feet[i] = position[i] + scale[i] * feet[i];
20
- // World x is east, z south; keep 0.3 m from walls and slide along them.
21
- const wall = blocked.call(this, east, north, feet);
22
- if (wall) {
23
- const fraction = Math.max(0, Math.min(1, (this.hitData.best - 0.3) / Math.hypot(east, north)));
24
- const movedEast = east * fraction, movedNorth = north * fraction;
25
- feet[0] += movedEast; feet[2] -= movedNorth;
26
- east -= movedEast; north -= movedNorth;
27
- const into = Math.min(0, east * wall[0] - north * wall[1]);
28
- east -= into * wall[0]; north += into * wall[1];
29
- if (blocked.call(this, east, north, feet)) {
30
- const slide = Math.max(0, Math.min(1, (this.hitData.best - 0.3) / Math.hypot(east, north)));
31
- east *= slide; north *= slide;
32
- }
33
- east += movedEast; north += movedNorth;
34
- }
35
- this.state.latlng = /* alloc */ new L.LatLng(lat + north / 111320, lng + east / (111320 * Math.cos(lat * radians)));
36
- this.state.phase += Math.hypot(east, north) / 1.6 * Math.PI;
37
- }
1
+ import { rootByLayer } from '../weakmaps/rootByLayer.js';
2
+ import { L } from '../globals/L.js';
3
+ import { radians } from '../globals/radians.js';
4
+ import { local } from '../projections/walkerLocalPosition.js';
5
+ import { blocked } from './isWalkBlocked.js';
6
+
7
+ /**
8
+ * Move along the walker's heading, maintaining wall clearance and sliding along obstacles.
9
+ *
10
+ * @param {number} forward Signed movement direction.
11
+ * @param {number} dt Frame duration in seconds.
12
+ */
13
+ export function moveWalker(forward, dt) {
14
+ const metres = forward * this.speed * dt, { lat, lng } = this.state.latlng;
15
+ const { position, scale } = rootByLayer.get(this.layer);
16
+ let east = Math.sin(this.state.heading) * metres, north = Math.cos(this.state.heading) * metres;
17
+ const feet = local.call(this, this.local);
18
+ let i;
19
+ for (i = 0; i < feet.length; i++) feet[i] = position[i] + scale[i] * feet[i];
20
+ // World x is east, z south; keep 0.3 m from walls and slide along them.
21
+ const wall = blocked.call(this, east, north, feet);
22
+ if (wall) {
23
+ const fraction = Math.max(0, Math.min(1, (this.hitData.best - 0.3) / Math.hypot(east, north)));
24
+ const movedEast = east * fraction, movedNorth = north * fraction;
25
+ feet[0] += movedEast; feet[2] -= movedNorth;
26
+ east -= movedEast; north -= movedNorth;
27
+ const into = Math.min(0, east * wall[0] - north * wall[1]);
28
+ east -= into * wall[0]; north += into * wall[1];
29
+ if (blocked.call(this, east, north, feet)) {
30
+ const slide = Math.max(0, Math.min(1, (this.hitData.best - 0.3) / Math.hypot(east, north)));
31
+ east *= slide; north *= slide;
32
+ }
33
+ east += movedEast; north += movedNorth;
34
+ }
35
+ this.state.latlng = /* alloc */ new L.LatLng(lat + north / 111320, lng + east / (111320 * Math.cos(lat * radians)));
36
+ this.state.phase += Math.hypot(east, north) / 1.6 * Math.PI;
37
+ }
@@ -1,40 +1,40 @@
1
- import { walkByMap } from '../weakmaps/walkByMap.js';
2
-
3
- /**
4
- * Attach the walk layer and reuse map-owned collision scratch, rejecting duplicate controls.
5
- *
6
- * @param {L.Map} map Map receiving the control.
7
- *
8
- * @returns {HTMLElement} Walk control container.
9
- *
10
- * @throws {Error} If another walk control is already attached to the map.
11
- */
12
- export function onAdd(map) {
13
- let state = walkByMap.get(map);
14
- if (state?.control && state.control !== this) {
15
- this._map = null;
16
- throw /* alloc */ new Error('Only one Walk control can be active per map');
17
- }
18
- if (!state) {
19
- state = /* alloc */ {
20
- control: null,
21
- hitData: /* alloc */ {
22
- x: 0, y: 0, z: 0, dx: 0, dz: 0, reach: 0, best: 0, found: false,
23
- seen: /* alloc */ new Set(),
24
- intersections: /* alloc */ [],
25
- nodes: /* alloc */ [],
26
- normal: /* alloc */ [0, 0],
27
- },
28
- local: /* alloc */ [0, 0, 0],
29
- };
30
- walkByMap.set(map, state);
31
- }
32
- state.control = this;
33
- state.local.fill(0);
34
- state.hitData.seen.clear();
35
- state.hitData.normal.fill(0);
36
- this._walk.hitData = state.hitData;
37
- this._walk.local = state.local;
38
- this._walk.layer.addTo(map);
39
- return this._walk.container;
40
- }
1
+ import { walkByMap } from '../weakmaps/walkByMap.js';
2
+
3
+ /**
4
+ * Attach the walk layer and reuse map-owned collision scratch, rejecting duplicate controls.
5
+ *
6
+ * @param {L.Map} map Map receiving the control.
7
+ *
8
+ * @returns {HTMLElement} Walk control container.
9
+ *
10
+ * @throws {Error} If another walk control is already attached to the map.
11
+ */
12
+ export function onAdd(map) {
13
+ let state = walkByMap.get(map);
14
+ if (state?.control && state.control !== this) {
15
+ this._map = null;
16
+ throw /* alloc */ new Error('Only one Walk control can be active per map');
17
+ }
18
+ if (!state) {
19
+ state = /* alloc */ {
20
+ control: null,
21
+ hitData: /* alloc */ {
22
+ x: 0, y: 0, z: 0, dx: 0, dz: 0, reach: 0, best: 0, found: false,
23
+ seen: /* alloc */ new Set(),
24
+ intersections: /* alloc */ [],
25
+ nodes: /* alloc */ [],
26
+ normal: /* alloc */ [0, 0],
27
+ },
28
+ local: /* alloc */ [0, 0, 0],
29
+ };
30
+ walkByMap.set(map, state);
31
+ }
32
+ state.control = this;
33
+ state.local.fill(0);
34
+ state.hitData.seen.clear();
35
+ state.hitData.normal.fill(0);
36
+ this._walk.hitData = state.hitData;
37
+ this._walk.local = state.local;
38
+ this._walk.layer.addTo(map);
39
+ return this._walk.container;
40
+ }
@@ -1,17 +1,17 @@
1
- import { walkByMap } from '../weakmaps/walkByMap.js';
2
-
3
- /**
4
- * Stop and detach the current walk control while retaining reusable map-owned scratch.
5
- *
6
- * @param {L.Map} map Map from which the control is removed.
7
- */
8
- export function onRemove(map) {
9
- const state = walkByMap.get(map);
10
- if (state?.control !== this) return;
11
- this._walk.stop();
12
- this._walk.layer.remove();
13
- state.control = null;
14
- state.hitData.seen.clear();
15
- this._walk.hitData = null;
16
- this._walk.local = null;
17
- }
1
+ import { walkByMap } from '../weakmaps/walkByMap.js';
2
+
3
+ /**
4
+ * Stop and detach the current walk control while retaining reusable map-owned scratch.
5
+ *
6
+ * @param {L.Map} map Map from which the control is removed.
7
+ */
8
+ export function onRemove(map) {
9
+ const state = walkByMap.get(map);
10
+ if (state?.control !== this) return;
11
+ this._walk.stop();
12
+ this._walk.layer.remove();
13
+ state.control = null;
14
+ state.hitData.seen.clear();
15
+ this._walk.hitData = null;
16
+ this._walk.local = null;
17
+ }
@@ -1,4 +1,4 @@
1
- /** Release held movement keys when the window loses focus. */
2
- export function onBlur() {
3
- this.keys.clear();
1
+ /** Release held movement keys when the window loses focus. */
2
+ export function onBlur() {
3
+ this.keys.clear();
4
4
  }
@@ -1,6 +1,6 @@
1
- import { place } from './placeWalker.js';
2
-
1
+ import { place } from './placeWalker.js';
2
+
3
3
  /** Reposition existing walker meshes after terrain elevation changes. */
4
4
  export function onTerrain() {
5
- if (this.meshes) place.call(this);
5
+ if (this.meshes) place.call(this);
6
6
  }
@@ -1,33 +1,33 @@
1
- import { L } from '../globals/L.js';
2
- import { insideWalker } from '../collision/insideWalker.js';
3
-
4
- /**
5
- * Search nearby positions when the active walker is enclosed, restoring the original position if none is clear.
6
- *
7
- * @returns {boolean} Whether the walker was moved to a clear position.
8
- */
9
- export function resolveWalkerPosition() {
10
- if (!this.saved || !insideWalker(this)) return false;
11
- const map = this.layer._map;
12
- const origin = this.state.latlng;
13
- const height = this.state.height;
14
- let distance, angle, candidate;
15
- for (distance = 0.5; distance <= 20; distance += 0.5) {
16
- for (angle = 0; angle < Math.PI * 2; angle += Math.PI / 4) {
17
- candidate = /* alloc */ new L.LatLng(
18
- origin.lat + Math.cos(angle) * distance / 111320,
19
- origin.lng + Math.sin(angle) * distance / (111320 * Math.cos(origin.lat * Math.PI / 180))
20
- );
21
- this.state.latlng = candidate;
22
- this.state.height = 0;
23
- if (!insideWalker(this)) {
24
- this.verticalSpeed = 0;
25
- map.setView(candidate, map.getZoom(), /* alloc */ { animate: false });
26
- return true;
27
- }
28
- }
29
- }
30
- this.state.latlng = origin;
31
- this.state.height = height;
32
- return false;
33
- }
1
+ import { L } from '../globals/L.js';
2
+ import { insideWalker } from '../collision/insideWalker.js';
3
+
4
+ /**
5
+ * Search nearby positions when the active walker is enclosed, restoring the original position if none is clear.
6
+ *
7
+ * @returns {boolean} Whether the walker was moved to a clear position.
8
+ */
9
+ export function resolveWalkerPosition() {
10
+ if (!this.saved || !insideWalker(this)) return false;
11
+ const map = this.layer._map;
12
+ const origin = this.state.latlng;
13
+ const height = this.state.height;
14
+ let distance, angle, candidate;
15
+ for (distance = 0.5; distance <= 20; distance += 0.5) {
16
+ for (angle = 0; angle < Math.PI * 2; angle += Math.PI / 4) {
17
+ candidate = /* alloc */ new L.LatLng(
18
+ origin.lat + Math.cos(angle) * distance / 111320,
19
+ origin.lng + Math.sin(angle) * distance / (111320 * Math.cos(origin.lat * Math.PI / 180))
20
+ );
21
+ this.state.latlng = candidate;
22
+ this.state.height = 0;
23
+ if (!insideWalker(this)) {
24
+ this.verticalSpeed = 0;
25
+ map.setView(candidate, map.getZoom(), /* alloc */ { animate: false });
26
+ return true;
27
+ }
28
+ }
29
+ }
30
+ this.state.latlng = origin;
31
+ this.state.height = height;
32
+ return false;
33
+ }
@@ -1,18 +1,18 @@
1
- /**
2
- * Advance ascent or gravity-driven descent and report whether the walker's height changed.
3
- *
4
- * @param {number} dt Frame duration in seconds.
5
- *
6
- * @returns {boolean} Whether a vertical update was applied.
7
- */
8
- export function stepWalkerHeight(dt) {
9
- if (this.keys.has('Space')) {
10
- this.verticalSpeed = 6;
11
- this.state.height += this.verticalSpeed * dt;
12
- return true;
13
- }
14
- if (!this.verticalSpeed && !this.state.height) return false;
15
- this.state.height = Math.max(0, this.state.height + this.verticalSpeed * dt - 9.81 * dt * dt / 2);
16
- this.verticalSpeed = this.state.height > 0 ? this.verticalSpeed - 9.81 * dt : 0;
17
- return true;
18
- }
1
+ /**
2
+ * Advance ascent or gravity-driven descent and report whether the walker's height changed.
3
+ *
4
+ * @param {number} dt Frame duration in seconds.
5
+ *
6
+ * @returns {boolean} Whether a vertical update was applied.
7
+ */
8
+ export function stepWalkerHeight(dt) {
9
+ if (this.keys.has('Space')) {
10
+ this.verticalSpeed = 6;
11
+ this.state.height += this.verticalSpeed * dt;
12
+ return true;
13
+ }
14
+ if (!this.verticalSpeed && !this.state.height) return false;
15
+ this.state.height = Math.max(0, this.state.height + this.verticalSpeed * dt - 9.81 * dt * dt / 2);
16
+ this.verticalSpeed = this.state.height > 0 ? this.verticalSpeed - 9.81 * dt : 0;
17
+ return true;
18
+ }
@@ -1,7 +1,7 @@
1
- import { start } from './startWalking.js';
2
- import { stop } from './stopWalking.js';
3
-
1
+ import { start } from './startWalking.js';
2
+ import { stop } from './stopWalking.js';
3
+
4
4
  /** Toggle the control between walk mode and the normal map view. */
5
5
  export function toggle() {
6
- if (this.saved) stop.call(this); else start.call(this);
6
+ if (this.saved) stop.call(this); else start.call(this);
7
7
  }
@@ -1,29 +1,29 @@
1
- import { wrap } from '../utils/wrap.js';
2
- import { place } from './placeWalker.js';
3
- import { land } from './landWalker.js';
4
- import { moveWalker } from './moveWalker.js';
5
- import { updateWalkerView } from './updateWalkerView.js';
6
-
7
- /**
8
- * Apply heading, motion, landing and camera changes, repositioning meshes when the frame changes.
9
- *
10
- * @param {Object} walker Walk context.
11
- * @param {number} previousY Previous world-space feet height.
12
- * @param {number} forward Signed movement direction.
13
- * @param {number} turn Signed turning direction.
14
- * @param {number} dt Frame duration in seconds.
15
- * @param {boolean} changed Whether the walker already changed this frame.
16
- */
17
- export function updateWalkerFrame(walker, previousY, forward, turn, dt, changed) {
18
- if (turn) {
19
- walker.state.heading = wrap(walker.state.heading + turn * 2.5 * dt);
20
- changed = true;
21
- }
22
- if (forward) {
23
- moveWalker.call(walker, forward, dt);
24
- changed = true;
25
- }
26
- if (changed) land.call(walker, previousY);
27
- if (updateWalkerView.call(walker, forward, turn, dt)) changed = true;
28
- if (changed) place.call(walker);
29
- }
1
+ import { wrap } from '../utils/wrap.js';
2
+ import { place } from './placeWalker.js';
3
+ import { land } from './landWalker.js';
4
+ import { moveWalker } from './moveWalker.js';
5
+ import { updateWalkerView } from './updateWalkerView.js';
6
+
7
+ /**
8
+ * Apply heading, motion, landing and camera changes, repositioning meshes when the frame changes.
9
+ *
10
+ * @param {Object} walker Walk context.
11
+ * @param {number} previousY Previous world-space feet height.
12
+ * @param {number} forward Signed movement direction.
13
+ * @param {number} turn Signed turning direction.
14
+ * @param {number} dt Frame duration in seconds.
15
+ * @param {boolean} changed Whether the walker already changed this frame.
16
+ */
17
+ export function updateWalkerFrame(walker, previousY, forward, turn, dt, changed) {
18
+ if (turn) {
19
+ walker.state.heading = wrap(walker.state.heading + turn * 2.5 * dt);
20
+ changed = true;
21
+ }
22
+ if (forward) {
23
+ moveWalker.call(walker, forward, dt);
24
+ changed = true;
25
+ }
26
+ if (changed) land.call(walker, previousY);
27
+ if (updateWalkerView.call(walker, forward, turn, dt)) changed = true;
28
+ if (changed) place.call(walker);
29
+ }