leaflet-city-mapper 0.0.8 → 0.1.0
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.
- package/README.md +6 -46
- package/dist/README.md +18 -0
- package/dist/leaflet-city-mapper-src.js +279 -110
- package/dist/leaflet-city-mapper-src.js.map +4 -4
- package/dist/leaflet-city-mapper-worker-src.js.map +2 -2
- package/dist/leaflet-city-mapper-worker.js.map +2 -2
- package/dist/leaflet-city-mapper.js +5 -5
- package/dist/leaflet-city-mapper.js.map +4 -4
- package/libs/README.md +18 -0
- package/libs/leaflet.js +1 -1
- package/package.json +5 -3
- package/src/README.md +148 -0
- package/src/animations/README.md +30 -0
- package/src/animations/cancelCameraAnimation.js +11 -9
- package/src/animations/cancelGridFade.js +5 -3
- package/src/animations/endZoom.js +0 -5
- package/src/animations/mapAnimateCamera.js +13 -3
- package/src/animations/mapStopPitchBearingAnimation.js +9 -2
- package/src/animations/onZoomAnim.js +5 -4
- package/src/animations/renderPendingZoomAnimation.js +1 -4
- package/src/animations/runCameraAnimations.js +7 -4
- package/src/animations/runGridFades.js +1 -4
- package/src/animations/runMarkerPanFrame.js +1 -1
- package/src/animations/scheduleCameraAnimation.js +11 -9
- package/src/animations/scheduleGridFade.js +5 -4
- package/src/animations/scheduleMarkerPan.js +10 -6
- package/src/animations/startZoom.js +0 -3
- package/src/animations/synchronizeZoomView.js +6 -1
- package/src/animations/updateZoomCamera.js +9 -5
- package/src/archives/README.md +28 -0
- package/src/archives/decodeDirectory.js +13 -2
- package/src/archives/decodeHeader.js +9 -2
- package/src/archives/decompress.js +10 -0
- package/src/archives/findDirectoryEntry.js +8 -0
- package/src/archives/findTile.js +14 -0
- package/src/archives/getDirectoryEntries.js +13 -2
- package/src/archives/getHeader.js +7 -2
- package/src/archives/getTileData.js +13 -0
- package/src/archives/getZxy.js +11 -3
- package/src/archives/loadDirectory.js +10 -0
- package/src/archives/loadSource.js +12 -3
- package/src/archives/readArchiveRange.js +18 -4
- package/src/archives/readVarint.js +11 -2
- package/src/archives/tileId.js +11 -2
- package/src/astronomy/README.md +25 -0
- package/src/astronomy/horizontalPosition.js +11 -0
- package/src/astronomy/moonPosition.js +9 -2
- package/src/astronomy/solarPosition.js +9 -2
- package/src/astronomy/solarTime.js +11 -1
- package/src/camera/README.md +30 -0
- package/src/camera/cameraMapReady.js +4 -6
- package/src/camera/cleanupCameraMap.js +6 -8
- package/src/camera/constrainCameraToBounds.js +1 -0
- package/src/camera/createSceneCamera.js +5 -1
- package/src/camera/fitCameraBounds.js +9 -1
- package/src/camera/getBearing.js +5 -0
- package/src/camera/getPitch.js +5 -0
- package/src/camera/initializeCameraMap.js +1 -3
- package/src/camera/mapCamera.js +0 -2
- package/src/camera/mapContainerPointToLayerPoint.js +7 -2
- package/src/camera/mapGetBearing.js +7 -2
- package/src/camera/mapGetBounds.js +5 -2
- package/src/camera/mapGetBoundsCenterZoom.js +13 -6
- package/src/camera/mapGetBoundsZoom.js +9 -2
- package/src/camera/mapGetCenterLayerPoint.js +5 -1
- package/src/camera/mapGetPitch.js +7 -2
- package/src/camera/mapLayerPointToContainerPoint.js +7 -1
- package/src/camera/mapLimitCenter.js +9 -2
- package/src/camera/mapLimitOffset.js +13 -7
- package/src/camera/mapPanBy.js +12 -5
- package/src/camera/mapPanInside.js +8 -2
- package/src/camera/mapResetNorth.js +8 -0
- package/src/camera/mapResetNorthPitch.js +8 -0
- package/src/camera/mapSetBearing.js +10 -0
- package/src/camera/mapSetPitch.js +10 -0
- package/src/camera/mapSetPitchAndBearing.js +12 -3
- package/src/camera/mapSetZoomAround.js +9 -1
- package/src/camera/mapTryAnimatedPan.js +8 -1
- package/src/camera/mapUpdateCameraOverlays.js +6 -0
- package/src/camera/setBearing.js +8 -0
- package/src/camera/setPitch.js +8 -0
- package/src/camera/updateMapCamera.js +6 -4
- package/src/camera/updateSceneCamera.js +7 -1
- package/src/camera/updateSky.js +1 -3
- package/src/cog/README.md +29 -0
- package/src/cog/decodeCogTile.js +13 -0
- package/src/cog/finiteCogValues.js +7 -0
- package/src/cog/getCogAssetEntry.js +11 -0
- package/src/cog/getCogBase.js +12 -0
- package/src/cog/getCogHeader.js +7 -0
- package/src/cog/getCogProfile.js +9 -0
- package/src/cog/getCogTile.js +13 -0
- package/src/cog/getColorTile.js +13 -0
- package/src/cog/getElevationTile.js +13 -0
- package/src/cog/hasCogProjection.js +7 -0
- package/src/cog/initCog.js +6 -0
- package/src/cog/invalidCogFullResponse.js +7 -0
- package/src/cog/openCog.js +11 -1
- package/src/cog/openCogAsset.js +8 -0
- package/src/cog/readCog.js +14 -0
- package/src/cog/readCogBlock.js +11 -0
- package/src/cog/readCogBody.js +10 -0
- package/src/cog/readCogDirectories.js +12 -0
- package/src/cog/readCogDirectory.js +13 -0
- package/src/cog/readCogLevel.js +9 -0
- package/src/cog/readCogTag.js +13 -0
- package/src/cog/validCogDimensions.js +9 -0
- package/src/cog/validCogEncoding.js +13 -0
- package/src/cog/validCogGeoArrays.js +9 -0
- package/src/cog/validCogGrid.js +13 -0
- package/src/cog/validCogTileCoordinates.js +9 -0
- package/src/cog/validateCogContainer.js +8 -0
- package/src/cog/validateCogContentRange.js +10 -0
- package/src/cog/validateCogOffsets.js +9 -0
- package/src/cog/validateCogRange.js +9 -0
- package/src/cog/validateCogResponse.js +11 -0
- package/src/collision/README.md +28 -0
- package/src/collision/advanceFeature.js +13 -0
- package/src/collision/boxNormal.js +29 -0
- package/src/collision/cachedCollider.js +18 -0
- package/src/collision/collectIntersections.js +28 -3
- package/src/collision/collectMeshes.js +6 -0
- package/src/collision/collideTrip.js +56 -0
- package/src/collision/collider.js +28 -18
- package/src/collision/countCrossings.js +35 -15
- package/src/collision/enclosesOrigin.js +13 -0
- package/src/collision/flipsNormal.js +15 -0
- package/src/collision/hiddenLightHit.js +11 -0
- package/src/collision/horizontalRay.js +13 -1
- package/src/collision/indexTriangle.js +7 -0
- package/src/collision/insideMesh.js +16 -2
- package/src/collision/insideWalker.js +7 -1
- package/src/collision/intersectMeshes.js +9 -1
- package/src/collision/localRay.js +10 -0
- package/src/collision/mergeHits.js +8 -0
- package/src/collision/missesBox.js +13 -0
- package/src/collision/rayBounds.js +9 -0
- package/src/collision/readTriangle.js +9 -0
- package/src/collision/slabDistance.js +14 -0
- package/src/collision/slabMiss.js +14 -0
- package/src/collision/sortCrossings.js +17 -0
- package/src/collision/sortHits.js +9 -1
- package/src/collision/trafficBounds.js +24 -0
- package/src/collision/trafficCollision.js +24 -49
- package/src/collision/trafficRay.js +21 -0
- package/src/collision/transformTriangle.js +9 -0
- package/src/collision/transformVertices.js +18 -0
- package/src/collision/triangleDistance.js +14 -1
- package/src/collision/vertexCount.js +8 -0
- package/src/collision/worldHit.js +12 -0
- package/src/colors/README.md +25 -0
- package/src/colors/formatRGB.js +7 -0
- package/src/colors/hslChannel.js +10 -0
- package/src/colors/mixColor.js +10 -0
- package/src/colors/parseColor.js +4 -1
- package/src/colors/toSRGB.js +7 -0
- package/src/controls/README.md +26 -0
- package/src/controls/acceptPitchDrag.js +7 -0
- package/src/controls/acceptRotateDrag.js +7 -0
- package/src/controls/addCameraHandler.js +7 -0
- package/src/controls/adjustCameraDrag.js +6 -8
- package/src/controls/cameraControls.js +5 -4
- package/src/controls/cameraDragClick.js +5 -1
- package/src/controls/cameraDragContextMenu.js +7 -3
- package/src/controls/cameraDragDown.js +5 -2
- package/src/controls/cameraDragEnd.js +8 -4
- package/src/controls/cameraDragMove.js +12 -8
- package/src/controls/changeCameraTouch.js +6 -8
- package/src/controls/cleanupCameraTouch.js +1 -4
- package/src/controls/compassAddHooks.js +1 -0
- package/src/controls/compassOrientation.js +7 -1
- package/src/controls/compassRemoveHooks.js +1 -0
- package/src/controls/containerResizeAddHooks.js +1 -0
- package/src/controls/containerResizeRemoveHooks.js +1 -0
- package/src/controls/dragCamera.js +11 -2
- package/src/controls/endAllCameraDrags.js +1 -2
- package/src/controls/endAllCameraTouches.js +1 -2
- package/src/controls/endCameraTouch.js +6 -0
- package/src/controls/endCameraTouchEvent.js +5 -2
- package/src/controls/failCompassPermission.js +6 -0
- package/src/controls/finishCameraDrag.js +6 -0
- package/src/controls/finishCompassPermission.js +7 -0
- package/src/controls/isEditableTarget.js +7 -0
- package/src/controls/loadCameraControls.js +9 -0
- package/src/controls/moveCameraTouch.js +9 -6
- package/src/controls/notifyCameraTouchChange.js +1 -0
- package/src/controls/pitchDragAddHooks.js +1 -1
- package/src/controls/pitchDragRemoveHooks.js +1 -0
- package/src/controls/refreshRotateControl.js +2 -0
- package/src/controls/refreshRotateFocus.js +3 -2
- package/src/controls/removeCameraDrag.js +15 -12
- package/src/controls/resizeMap.js +5 -0
- package/src/controls/rotateButtonClick.js +6 -1
- package/src/controls/rotateButtonKeydown.js +10 -4
- package/src/controls/rotateControl.js +9 -1
- package/src/controls/rotateOnAdd.js +7 -1
- package/src/controls/rotateOnRemove.js +5 -0
- package/src/controls/shiftRotateAddHooks.js +1 -1
- package/src/controls/shiftRotateRemoveHooks.js +1 -0
- package/src/controls/shiftRotateWheel.js +9 -4
- package/src/controls/startCameraTouch.js +5 -2
- package/src/core/README.md +28 -0
- package/src/core/adjustCameraMarkerPan.js +7 -2
- package/src/core/cameraCircleBounds.js +5 -1
- package/src/core/cameraMarkerDrag.js +1 -2
- package/src/core/cameraMarkerOnDrag.js +7 -4
- package/src/core/closestCameraLayerPoint.js +7 -1
- package/src/core/constructLayer.js +7 -0
- package/src/core/extendLeafletClass.js +7 -0
- package/src/core/extendTerrainPixelBounds.js +10 -0
- package/src/core/fireRasterLoad.js +1 -1
- package/src/core/gridlayerGetEvents.js +5 -2
- package/src/core/gridlayerGetTiledPixelBounds.js +7 -1
- package/src/core/initializeGridContainer.js +1 -1
- package/src/core/initializeNativeLayer.js +1 -4
- package/src/core/layerAddInitHook.js +5 -0
- package/src/core/layerCallInitHooks.js +1 -2
- package/src/core/layerMergeOptions.js +7 -0
- package/src/core/markerGetEvents.js +5 -2
- package/src/core/markerInitInteraction.js +8 -5
- package/src/core/markerSetIcon.js +11 -6
- package/src/core/markerSetPos.js +5 -2
- package/src/core/markerSetRotation.js +10 -0
- package/src/core/markerUpdateZIndex.js +6 -4
- package/src/core/popupAdjustPan.js +5 -2
- package/src/core/popupGetEvents.js +5 -1
- package/src/core/popupUpdatePosition.js +1 -2
- package/src/core/projectNativePath.js +7 -0
- package/src/core/redrawPath.js +5 -0
- package/src/core/removeLayer.js +10 -7
- package/src/core/setRotation.js +7 -0
- package/src/core/tooltipGetEvents.js +5 -1
- package/src/core/tooltipSetPosition.js +5 -2
- package/src/core/updateGridOpacity.js +2 -1
- package/src/core/whenReady.js +9 -6
- package/src/geometry/README.md +29 -0
- package/src/geometry/addBridges.js +8 -6
- package/src/geometry/addGeneratedTriangle.js +8 -4
- package/src/geometry/appendAreaTriangle.js +15 -0
- package/src/geometry/appendNativeTriangle.js +14 -0
- package/src/geometry/appendRouteDash.js +18 -0
- package/src/geometry/appendRouteSegment.js +13 -0
- package/src/geometry/assembleAreaGeometry.js +7 -0
- package/src/geometry/boundsQuad.js +8 -0
- package/src/geometry/box.js +10 -0
- package/src/geometry/bridgeEdge.js +7 -0
- package/src/geometry/bridgeElevation.js +8 -1
- package/src/geometry/bridgeFaces.js +7 -0
- package/src/geometry/bridgePaths.js +8 -0
- package/src/geometry/bridgePolygon.js +6 -0
- package/src/geometry/bridgeSides.js +7 -0
- package/src/geometry/buildGeometryParts.js +7 -0
- package/src/geometry/buildProjectedPoint.js +11 -0
- package/src/geometry/buildProjectedPolygon.js +9 -0
- package/src/geometry/circleAt.js +15 -2
- package/src/geometry/circleGeometry.js +6 -0
- package/src/geometry/clipLine.js +8 -1
- package/src/geometry/clipSegment.js +9 -0
- package/src/geometry/computeBounds.js +5 -2
- package/src/geometry/conformModelToTerrain.js +6 -3
- package/src/geometry/createLampRing.js +8 -0
- package/src/geometry/createModelGeometry.js +11 -1
- package/src/geometry/createRasterQuadGeometry.js +7 -1
- package/src/geometry/createTreeRing.js +8 -1
- package/src/geometry/crossVector.js +8 -0
- package/src/geometry/dashValues.js +9 -0
- package/src/geometry/dashedSegment.js +12 -0
- package/src/geometry/disk.js +9 -0
- package/src/geometry/diskAt.js +14 -2
- package/src/geometry/emitter.js +10 -0
- package/src/geometry/fillNativePolygon.js +8 -0
- package/src/geometry/generateTreeGeometry.js +11 -5
- package/src/geometry/indexBridge.js +8 -2
- package/src/geometry/instanceAreaGeometry.js +7 -1
- package/src/geometry/interpolateRoute.js +10 -2
- package/src/geometry/lampPostGeometry.js +9 -2
- package/src/geometry/lightGeometry.js +9 -2
- package/src/geometry/line.js +7 -0
- package/src/geometry/lineJoin.js +9 -0
- package/src/geometry/markerImageBounds.js +9 -0
- package/src/geometry/markerQuadCorners.js +9 -3
- package/src/geometry/meshShadowBounds.js +9 -0
- package/src/geometry/nativeGeometry.js +9 -1
- package/src/geometry/offsetBelowGround.js +7 -0
- package/src/geometry/polygon.js +7 -0
- package/src/geometry/quad.js +14 -0
- package/src/geometry/restoreGeometry.js +6 -0
- package/src/geometry/roofCoverage.js +12 -5
- package/src/geometry/roofFootprint.js +12 -4
- package/src/geometry/routeGeometry.js +7 -2
- package/src/geometry/samePoint.js +8 -0
- package/src/geometry/segment.js +9 -0
- package/src/geometry/setVertexColor.js +1 -1
- package/src/geometry/shadowBounds.js +8 -0
- package/src/geometry/subtractRoofTile.js +9 -0
- package/src/geometry/subtractVector.js +8 -0
- package/src/geometry/surface.js +11 -1
- package/src/geometry/terrainBuffers.js +10 -3
- package/src/geometry/terrainGrid.js +7 -2
- package/src/geometry/terrainTileGeometry.js +13 -4
- package/src/geometry/treeGeometry.js +7 -4
- package/src/geometry/triangle.js +11 -0
- package/src/geometry/validateTree.js +12 -0
- package/src/geometry/vertexNormals.js +8 -2
- package/src/geometry/visitNativeCoordinates.js +7 -0
- package/src/globals/CELL.js +6 -2
- package/src/globals/Compass.js +5 -0
- package/src/globals/ContainerResize.js +5 -0
- package/src/globals/HEIGHT.js +5 -0
- package/src/globals/L.js +5 -0
- package/src/globals/PitchDrag.js +5 -0
- package/src/globals/README.md +28 -0
- package/src/globals/ShiftRotate.js +5 -0
- package/src/globals/TILE_RADIUS.js +5 -0
- package/src/globals/TILE_SIZE.js +5 -0
- package/src/globals/TouchMode.js +5 -0
- package/src/globals/alphaBlend.js +5 -0
- package/src/globals/archiveDecoder.js +5 -0
- package/src/globals/archiveNorthWest.js +5 -0
- package/src/globals/archiveSouthEast.js +5 -0
- package/src/globals/atmosphereColor.js +5 -0
- package/src/globals/atmosphereStops.js +5 -0
- package/src/globals/blobParts.js +5 -0
- package/src/globals/cameraAngles.js +5 -0
- package/src/globals/cameraAnimatedOptions.js +5 -0
- package/src/globals/cameraAnimationFrame.js +5 -0
- package/src/globals/cameraAnimations.js +5 -0
- package/src/globals/cameraBearingSensitivity.js +5 -0
- package/src/globals/cameraDragSensitivity.js +5 -0
- package/src/globals/cameraDrags.js +5 -0
- package/src/globals/cameraEmptyOptions.js +5 -0
- package/src/globals/cameraFocusOptions.js +5 -0
- package/src/globals/cameraFov.js +5 -0
- package/src/globals/cameraListenerOptions.js +5 -0
- package/src/globals/cameraTouchStates.js +5 -0
- package/src/globals/cameraZeroPadding.js +5 -0
- package/src/globals/cogTags.js +5 -0
- package/src/globals/colorLayout.js +5 -0
- package/src/globals/colorTexture.js +5 -0
- package/src/globals/coreEventTypes.js +5 -0
- package/src/globals/coreMatrixKeys.js +5 -0
- package/src/globals/coreQuadIndices.js +5 -0
- package/src/globals/coreQuadUV.js +5 -0
- package/src/globals/coreSampler.js +5 -0
- package/src/globals/coreWhite.js +5 -0
- package/src/globals/cosObliquity.js +5 -0
- package/src/globals/coverageTiles.js +5 -0
- package/src/globals/dark.js +5 -0
- package/src/globals/defaultMaterial.js +5 -0
- package/src/globals/degrees.js +5 -0
- package/src/globals/demBuffer.js +5 -0
- package/src/globals/demLayout.js +5 -0
- package/src/globals/demSize.js +5 -0
- package/src/globals/demTarget.js +5 -0
- package/src/globals/demTexture.js +5 -0
- package/src/globals/depthBindGroup.js +5 -0
- package/src/globals/depthTexture.js +5 -0
- package/src/globals/directoryReader.js +5 -0
- package/src/globals/disabledShadow.js +5 -0
- package/src/globals/drawEntries.js +5 -0
- package/src/globals/drawFrameEntry.js +5 -0
- package/src/globals/drawMeshEntry.js +5 -0
- package/src/globals/drawSamplerEntries.js +5 -0
- package/src/globals/drawTerrainEntry.js +5 -0
- package/src/globals/drawTextureEntries.js +5 -0
- package/src/globals/earthCirc.js +5 -0
- package/src/globals/elevationWGSL.js +2 -0
- package/src/globals/fragmentShader.js +5 -0
- package/src/globals/frameBuffer.js +5 -0
- package/src/globals/frameCommands.js +5 -0
- package/src/globals/frameLayoutEntry.js +5 -0
- package/src/globals/geometryDecoder.js +5 -0
- package/src/globals/geometryEmpty.js +5 -0
- package/src/globals/geometryImageOptions.js +5 -0
- package/src/globals/geometryPixelStates.js +5 -0
- package/src/globals/geometryQuaternion.js +5 -0
- package/src/globals/geometryScale.js +5 -0
- package/src/globals/geometrySemantics.js +5 -0
- package/src/globals/geometryTranslation.js +5 -0
- package/src/globals/geometryWorkerUrl.js +5 -0
- package/src/globals/glass.js +5 -0
- package/src/globals/gridEvents.js +5 -0
- package/src/globals/gridFadeFrame.js +5 -0
- package/src/globals/halfRadians.js +5 -0
- package/src/globals/headerBounds.js +5 -0
- package/src/globals/headerFlags.js +5 -0
- package/src/globals/headerOffsets.js +5 -0
- package/src/globals/headlight.js +5 -0
- package/src/globals/hull.js +5 -0
- package/src/globals/instanceLayout.js +5 -0
- package/src/globals/lampDirections.js +5 -0
- package/src/globals/layerControlAddItem.js +5 -0
- package/src/globals/layerProto.js +5 -0
- package/src/globals/leafletLayer.js +5 -0
- package/src/globals/lightScale.js +5 -0
- package/src/globals/limbs.js +5 -1
- package/src/globals/loading.js +5 -0
- package/src/globals/mapMethods.js +5 -0
- package/src/globals/markerMethods.js +5 -0
- package/src/globals/markerPanFrame.js +5 -0
- package/src/globals/meshBindGroup.js +5 -0
- package/src/globals/meshBuffer.js +5 -0
- package/src/globals/meshCopySize.js +5 -0
- package/src/globals/meshImage.js +5 -0
- package/src/globals/meshLayoutEntry.js +5 -0
- package/src/globals/meshOffsets.js +5 -0
- package/src/globals/meshPipeline.js +5 -0
- package/src/globals/meshStack.js +5 -0
- package/src/globals/meshTarget.js +5 -0
- package/src/globals/moves.js +5 -1
- package/src/globals/mvtTextDecoder.js +5 -0
- package/src/globals/nativeMethodHandlers.js +5 -0
- package/src/globals/nativeScalableStyleKeys.js +5 -0
- package/src/globals/nextId.js +5 -0
- package/src/globals/normalLayout.js +5 -0
- package/src/globals/paints.js +5 -0
- package/src/globals/parts.js +5 -0
- package/src/globals/pendingGridFades.js +5 -0
- package/src/globals/pendingInitializations.js +5 -0
- package/src/globals/pendingMapChanges.js +5 -0
- package/src/globals/pendingMarkerPan.js +5 -0
- package/src/globals/pendingPlacements.js +5 -0
- package/src/globals/pendingRasterLoads.js +5 -0
- package/src/globals/pendingUpdates.js +5 -0
- package/src/globals/pendingZoomAnimations.js +5 -0
- package/src/globals/pipelineLayout.js +5 -0
- package/src/globals/popupEvents.js +5 -0
- package/src/globals/popupPan.js +5 -0
- package/src/globals/popupPosition.js +5 -0
- package/src/globals/positionLayout.js +5 -0
- package/src/globals/programEntries.js +5 -0
- package/src/globals/programLayout.js +5 -0
- package/src/globals/radians.js +5 -0
- package/src/globals/rasterBuffer.js +5 -0
- package/src/globals/rasterIndices.js +5 -0
- package/src/globals/rasterNormals.js +5 -0
- package/src/globals/rasterPoint.js +5 -0
- package/src/globals/rasterPositions.js +5 -0
- package/src/globals/rasterSampler.js +5 -0
- package/src/globals/rasterTexture.js +5 -0
- package/src/globals/rasterUVs.js +5 -0
- package/src/globals/removeLayer.js +5 -0
- package/src/globals/renderEmpty.js +5 -0
- package/src/globals/ringDirections.js +5 -0
- package/src/globals/roofBindGroup.js +5 -0
- package/src/globals/roofBlitSampler.js +5 -0
- package/src/globals/roofBuffer.js +5 -0
- package/src/globals/roofCommands.js +5 -0
- package/src/globals/roofCopySize.js +5 -0
- package/src/globals/roofImage.js +5 -0
- package/src/globals/roofMin.js +5 -0
- package/src/globals/roofOpacities.js +5 -0
- package/src/globals/roofPass.js +5 -0
- package/src/globals/roofPipeline.js +5 -0
- package/src/globals/roofSampler.js +5 -0
- package/src/globals/roofShader.js +5 -0
- package/src/globals/roofSignatures.js +5 -0
- package/src/globals/roofSize.js +5 -0
- package/src/globals/roofTarget.js +5 -0
- package/src/globals/roofTexture.js +5 -0
- package/src/globals/roofTiles.js +5 -0
- package/src/globals/roundProfile.js +5 -0
- package/src/globals/samplerLayoutEntries.js +5 -0
- package/src/globals/sceneCleanupFields.js +5 -0
- package/src/globals/sceneEmptyOptions.js +5 -0
- package/src/globals/scenePass.js +5 -0
- package/src/globals/sceneSunlightUniforms.js +5 -0
- package/src/globals/sceneTransferFields.js +5 -0
- package/src/globals/sceneWalkHandlers.js +5 -0
- package/src/globals/shadowBindGroup.js +5 -0
- package/src/globals/shadowBounds.js +5 -0
- package/src/globals/shadowCamera.js +5 -0
- package/src/globals/shadowDepthLayout.js +5 -0
- package/src/globals/shadowHigh.js +5 -0
- package/src/globals/shadowInstanceLayouts.js +5 -0
- package/src/globals/shadowLayouts.js +5 -0
- package/src/globals/shadowLow.js +5 -0
- package/src/globals/shadowMeshLayout.js +5 -0
- package/src/globals/shadowOffsets.js +5 -0
- package/src/globals/shadowPass.js +5 -0
- package/src/globals/shadowPipeline.js +5 -0
- package/src/globals/shadowPipelineLayout.js +5 -0
- package/src/globals/shadowShader.js +5 -0
- package/src/globals/shadowTexture.js +5 -0
- package/src/globals/shadowValues.js +5 -0
- package/src/globals/shirt.js +5 -0
- package/src/globals/sinObliquity.js +5 -0
- package/src/globals/sizes.js +5 -0
- package/src/globals/skin.js +5 -0
- package/src/globals/speed.js +5 -1
- package/src/globals/sunBindGroup.js +5 -0
- package/src/globals/taillight.js +5 -0
- package/src/globals/tau.js +5 -0
- package/src/globals/terrainLayoutEntry.js +5 -0
- package/src/globals/textureLayoutEntries.js +5 -0
- package/src/globals/tiledBounds.js +5 -0
- package/src/globals/tooltipEvents.js +5 -0
- package/src/globals/tooltipPosition.js +5 -0
- package/src/globals/trafficClocks.js +5 -0
- package/src/globals/trafficEmptyList.js +5 -0
- package/src/globals/trafficEmptyOptions.js +5 -0
- package/src/globals/trafficRouteMaterial.js +5 -0
- package/src/globals/trafficShader.js +5 -1
- package/src/globals/triangleContexts.js +5 -0
- package/src/globals/trousers.js +5 -0
- package/src/globals/types.js +5 -0
- package/src/globals/tyre.js +5 -0
- package/src/globals/uVLayout.js +5 -0
- package/src/globals/vectorStyleNamedColors.js +5 -0
- package/src/globals/vectorTileEvents.js +5 -0
- package/src/globals/vehicles.js +2 -0
- package/src/globals/vertexShader.js +5 -0
- package/src/globals/wantedTiles.js +5 -0
- package/src/globals/white.js +5 -0
- package/src/globals/workerCogSource.js +5 -0
- package/src/gpu/README.md +29 -0
- package/src/gpu/initializeRendererResources.js +6 -1
- package/src/gpu/initializeSharedRenderer.js +15 -8
- package/src/gpu/mountRenderer.js +7 -1
- package/src/gpu/releaseRenderer.js +8 -0
- package/src/gpu/rendererDeviceError.js +5 -3
- package/src/gpu/rendererDeviceLost.js +5 -3
- package/src/gpu/reportShaderCompilation.js +8 -0
- package/src/gpu/requestAdapter.js +8 -0
- package/src/gpu/requestDevice.js +9 -0
- package/src/gpu/showWebGPUWarning.js +5 -0
- package/src/index.js +0 -2
- package/src/layer-controls/README.md +25 -0
- package/src/layer-controls/layerControlInputId.js +7 -0
- package/src/layer-controls/layerCountTitle.js +10 -0
- package/src/layer-controls/placeEntry.js +9 -0
- package/src/layer-controls/placeEntryElement.js +7 -0
- package/src/layer-controls/placeUnderEntry.js +7 -0
- package/src/layer-controls/removeEntry.js +1 -0
- package/src/layer-controls/renderLayerCount.js +9 -1
- package/src/layer-controls/replaceEntry.js +1 -2
- package/src/layer-controls/runPlacements.js +1 -2
- package/src/layer-controls/underEntry.js +6 -2
- package/src/layer-controls/updateLayerCount.js +5 -1
- package/src/lighting/README.md +28 -0
- package/src/lighting/cacheLightGrid.js +9 -1
- package/src/lighting/collectLightMeshes.js +7 -1
- package/src/lighting/lightGrid.js +10 -1
- package/src/lighting/updatePointLights.js +7 -3
- package/src/lighting/visitLightCells.js +14 -1
- package/src/lighting/visitLightGridCells.js +11 -0
- package/src/lighting/worldLights.js +8 -1
- package/src/lighting/writeLightCell.js +9 -0
- package/src/materials/README.md +28 -0
- package/src/materials/createProgram.js +8 -4
- package/src/materials/createProgramLayout.js +8 -0
- package/src/materials/createProgramUniforms.js +7 -0
- package/src/materials/modelMaterialFor.js +8 -0
- package/src/materials/prepareMeshCutout.js +9 -0
- package/src/materials/terrainRasterProgram.js +15 -8
- package/src/materials/validateRoofMaterial.js +7 -0
- package/src/models/README.md +27 -0
- package/src/models/applyModelTransform.js +6 -2
- package/src/models/buildModelNodes.js +10 -0
- package/src/models/createModelContext.js +9 -0
- package/src/models/decodeModel.js +13 -2
- package/src/models/hasUnsupportedPrimitives.js +7 -0
- package/src/models/loadBuffer.js +10 -0
- package/src/models/loadModel.js +10 -7
- package/src/models/loadModelResources.js +8 -0
- package/src/models/modelNode.js +11 -1
- package/src/models/normalizeAccessor.js +10 -0
- package/src/models/prepareModel.js +10 -0
- package/src/models/prepareModelGeometry.js +10 -0
- package/src/models/prepareModelPrimitive.js +8 -0
- package/src/models/readAccessor.js +10 -4
- package/src/models/readAccessorValue.js +9 -0
- package/src/models/readAccessorValues.js +17 -0
- package/src/models/readModelAttributes.js +12 -0
- package/src/models/readModelIndices.js +12 -0
- package/src/models/readSparseAccessor.js +12 -0
- package/src/models/releaseModelResources.js +5 -0
- package/src/mvt/README.md +28 -0
- package/src/mvt/addMvtCrossings.js +6 -0
- package/src/mvt/appendMvtBandTriangles.js +11 -0
- package/src/mvt/appendMvtCoordinates.js +9 -0
- package/src/mvt/appendMvtPolygonTriangles.js +10 -0
- package/src/mvt/beginMvtPath.js +10 -0
- package/src/mvt/closeMvtPath.js +9 -0
- package/src/mvt/collectMvtEdges.js +10 -0
- package/src/mvt/createMvtReader.js +7 -0
- package/src/mvt/decodeVectorTile.js +7 -0
- package/src/mvt/expectMvtWire.js +8 -0
- package/src/mvt/finishMvtPath.js +9 -0
- package/src/mvt/finiteMvtCoordinate.js +7 -0
- package/src/mvt/groupMvtPolygons.js +10 -0
- package/src/mvt/isMvtFallbackError.js +7 -0
- package/src/mvt/mergeMvtActiveEdges.js +9 -0
- package/src/mvt/mvtEdgeX.js +8 -0
- package/src/mvt/mvtPathsVertices.js +7 -0
- package/src/mvt/mvtPolygonPaths.js +7 -0
- package/src/mvt/numericMvtValue.js +7 -0
- package/src/mvt/readMvtFeature.js +12 -0
- package/src/mvt/readMvtField.js +9 -0
- package/src/mvt/readMvtGeometry.js +13 -0
- package/src/mvt/readMvtInteger.js +10 -0
- package/src/mvt/readMvtKnownValue.js +9 -0
- package/src/mvt/readMvtLayer.js +9 -0
- package/src/mvt/readMvtMessage.js +8 -0
- package/src/mvt/readMvtNumber.js +9 -0
- package/src/mvt/readMvtNumbers.js +7 -0
- package/src/mvt/readMvtString.js +8 -0
- package/src/mvt/readMvtValue.js +10 -0
- package/src/mvt/skipMvtField.js +8 -0
- package/src/mvt/sortMvtActiveEdges.js +5 -0
- package/src/mvt/sortedMvtLevels.js +7 -0
- package/src/mvt/takeMvtBytes.js +10 -0
- package/src/mvt/tessellateVectorRings.js +7 -0
- package/src/mvt/triangulateVectorRings.js +4 -0
- package/src/native/README.md +27 -0
- package/src/native/beforeNativeRender.js +5 -0
- package/src/native/bypassNativeEvent.js +10 -0
- package/src/native/canScaleNativeStyle.js +9 -0
- package/src/native/compareNativeHits.js +8 -0
- package/src/native/createNativeMesh.js +15 -0
- package/src/native/disposeNativeLayer.js +3 -2
- package/src/native/forwardNativeError.js +5 -0
- package/src/native/getGridTerrainTile.js +13 -0
- package/src/native/gridTerrainElevation.js +8 -0
- package/src/native/handleNativeMapEvent.js +9 -4
- package/src/native/hideTargets.js +6 -0
- package/src/native/initNativeGPU.js +6 -3
- package/src/native/isCurrentNativeLayer.js +9 -4
- package/src/native/loadGridTerrain.js +10 -0
- package/src/native/nativeAddLatLng.js +7 -0
- package/src/native/nativeBringToBack.js +7 -0
- package/src/native/nativeBringToFront.js +7 -0
- package/src/native/nativeEventSource.js +9 -0
- package/src/native/nativeEvents.js +5 -4
- package/src/native/nativeLayer.js +10 -6
- package/src/native/nativeLayerMethod.js +9 -2
- package/src/native/nativeProgram.js +8 -0
- package/src/native/nativeRedraw.js +7 -0
- package/src/native/nativeSetBounds.js +7 -0
- package/src/native/nativeSetIcon.js +7 -0
- package/src/native/nativeSetLatLng.js +7 -0
- package/src/native/nativeSetLatLngs.js +7 -0
- package/src/native/nativeSetOpacity.js +7 -0
- package/src/native/nativeSetRadius.js +7 -0
- package/src/native/nativeSetStyle.js +7 -0
- package/src/native/nativeSetUrl.js +7 -0
- package/src/native/nativeSetZIndex.js +7 -0
- package/src/native/nativeSetZIndexOffset.js +7 -0
- package/src/native/nativeTerrainElevation.js +11 -0
- package/src/native/nativeVectorGeometry.js +7 -0
- package/src/native/orderNativeGridLayer.js +6 -0
- package/src/native/prepareGridTerrainRequests.js +7 -0
- package/src/native/pruneNativeResources.js +5 -0
- package/src/native/putNativeMesh.js +14 -0
- package/src/native/quadNativeMesh.js +11 -1
- package/src/native/readyNativeGPU.js +10 -6
- package/src/native/refreshNativeEvent.js +5 -0
- package/src/native/refreshNativeLayer.js +5 -3
- package/src/native/refreshNativeLayerContract.js +5 -2
- package/src/native/rejectNativeReady.js +5 -0
- package/src/native/removeNativeEvents.js +7 -3
- package/src/native/removeTargets.js +5 -2
- package/src/native/reorderNativeLayer.js +5 -3
- package/src/native/resolveNativeReady.js +3 -0
- package/src/native/restoreNativeEvents.js +3 -0
- package/src/native/retainGridTerrain.js +5 -0
- package/src/native/styleNativeMesh.js +11 -5
- package/src/native/syncGridLayer.js +5 -1
- package/src/native/syncGridTile.js +10 -0
- package/src/native/syncImageOverlay.js +8 -3
- package/src/native/syncMarker.js +5 -0
- package/src/native/syncNativeStrokeAnchors.js +6 -0
- package/src/native/syncNativeStrokeZoom.js +5 -0
- package/src/native/syncTerrainGridTile.js +10 -0
- package/src/native/syncVectorLayer.js +5 -0
- package/src/native/synchronizeNativeLayer.js +5 -3
- package/src/native/terrainGridMesh.js +13 -0
- package/src/native/updateNativeHover.js +8 -0
- package/src/native/updateNativeLayerView.js +3 -3
- package/src/native/updateNativeStrokeRadius.js +5 -0
- package/src/picking/README.md +29 -0
- package/src/picking/collectVisibleMesh.js +8 -0
- package/src/picking/findFeature.js +4 -4
- package/src/picking/hit.js +14 -7
- package/src/picking/hitColliderCell.js +10 -0
- package/src/picking/hitMesh.js +8 -2
- package/src/picking/onClick.js +6 -5
- package/src/picking/onPointerLeave.js +5 -5
- package/src/picking/onPointerMove.js +6 -5
- package/src/picking/pointerClick.js +5 -0
- package/src/picking/pointerLeave.js +1 -0
- package/src/picking/pointerMove.js +5 -0
- package/src/picking/raycast.js +2 -4
- package/src/picking/setHighlight.js +6 -5
- package/src/picking/shouldSkipOther.js +8 -2
- package/src/picking/showFeature.js +7 -4
- package/src/picking/validateCameraInverse.js +7 -0
- package/src/projections/README.md +28 -0
- package/src/projections/cameraAngles.js +8 -1
- package/src/projections/displayContainerPoint.js +9 -0
- package/src/projections/groundBounds.js +9 -1
- package/src/projections/localPixel.js +8 -0
- package/src/projections/localPixelForGeometry.js +8 -1
- package/src/projections/localPosition.js +8 -2
- package/src/projections/markerCameraIconPoint.js +9 -1
- package/src/projections/projectBridgePoint.js +13 -1
- package/src/projections/projectCameraPoint.js +11 -1
- package/src/projections/projectCelestialBody.js +11 -2
- package/src/projections/projectRing.js +11 -1
- package/src/projections/projectTreePoint.js +9 -1
- package/src/projections/toPoint.js +9 -1
- package/src/projections/transformZoomAnimationPoint.js +12 -5
- package/src/projections/verticalGroundY.js +11 -0
- package/src/projections/walkerLocalPosition.js +7 -0
- package/src/raster/README.md +28 -0
- package/src/raster/addRasterTile.js +10 -2
- package/src/raster/comparePendingTiles.js +8 -0
- package/src/raster/createRasterMesh.js +6 -5
- package/src/raster/finishRasterAttachment.js +9 -4
- package/src/raster/finishRasterTile.js +11 -2
- package/src/raster/getRasterEvents.js +7 -0
- package/src/raster/getRasterTileSize.js +5 -1
- package/src/raster/initRaster.js +6 -3
- package/src/raster/isRasterLoading.js +7 -3
- package/src/raster/loadRasterTile.js +8 -3
- package/src/raster/onPMTileAdd.js +6 -3
- package/src/raster/onPMTileRemove.js +6 -3
- package/src/raster/pruneRasterTiles.js +7 -3
- package/src/raster/pumpRasterTiles.js +5 -4
- package/src/raster/rasterTileRange.js +9 -0
- package/src/raster/readyRaster.js +8 -3
- package/src/raster/registerTerrainTile.js +9 -3
- package/src/raster/releaseRasterTile.js +6 -3
- package/src/raster/releaseRasterTiles.js +5 -3
- package/src/raster/removeRasterTile.js +6 -3
- package/src/raster/reportRasterError.js +8 -0
- package/src/raster/retainRasterTiles.js +7 -2
- package/src/raster/setPMTileOpacity.js +8 -0
- package/src/raster/setPMTileZIndex.js +8 -0
- package/src/raster/setRasterOpacity.js +6 -3
- package/src/raster/setRasterTerrain.js +6 -3
- package/src/raster/setRasterZIndex.js +6 -3
- package/src/raster/updateAttachedTiles.js +9 -3
- package/src/raster/updateRasterTiles.js +5 -5
- package/src/rendering/README.md +32 -0
- package/src/rendering/collectFrameMeshes.js +7 -3
- package/src/rendering/collectMeshes.js +11 -0
- package/src/rendering/collectVisibleMesh.js +9 -0
- package/src/rendering/compareMeshDepth.js +8 -0
- package/src/rendering/compareMeshes.js +10 -1
- package/src/rendering/createMesh.js +8 -5
- package/src/rendering/disposeMesh.js +6 -0
- package/src/rendering/drawGeometry.js +9 -2
- package/src/rendering/drawPipeline.js +10 -0
- package/src/rendering/drawSceneMeshes.js +9 -3
- package/src/rendering/nativeStrokeExpansion.js +7 -0
- package/src/rendering/prepareFrameBuffer.js +8 -2
- package/src/rendering/prepareFrameMeshes.js +10 -3
- package/src/rendering/prepareFrameUniforms.js +8 -3
- package/src/rendering/prepareMeshUniforms.js +10 -1
- package/src/rendering/render.js +2 -5
- package/src/rendering/resizeRenderer.js +6 -3
- package/src/rendering/revealRoofMesh.js +10 -1
- package/src/scene/README.md +36 -0
- package/src/scene/addRegisteredLayer.js +5 -4
- package/src/scene/addSceneLayer.js +9 -3
- package/src/scene/attachLayer.js +8 -3
- package/src/scene/attachSharedScene.js +6 -1
- package/src/scene/callLayer.js +11 -5
- package/src/scene/cancelUpdate.js +5 -3
- package/src/scene/createLayer.js +8 -2
- package/src/scene/createSceneNode.js +5 -1
- package/src/scene/emptyEvents.js +5 -0
- package/src/scene/failAttachment.js +9 -3
- package/src/scene/get3DEvents.js +7 -3
- package/src/scene/getLocation.js +8 -4
- package/src/scene/init3D.js +6 -3
- package/src/scene/initializeLayer.js +9 -2
- package/src/scene/initializerFor.js +8 -0
- package/src/scene/isNativeLayer.js +8 -2
- package/src/scene/layerInitialize.js +7 -4
- package/src/scene/onAdd3DLayer.js +6 -4
- package/src/scene/onMapChange.js +0 -5
- package/src/scene/onRemove3DLayer.js +6 -5
- package/src/scene/ready3D.js +9 -3
- package/src/scene/releaseSharedScene.js +6 -2
- package/src/scene/removeLayerEvents.js +1 -3
- package/src/scene/removeSceneLayer.js +9 -3
- package/src/scene/renderPendingMapChange.js +1 -4
- package/src/scene/renderPendingUpdates.js +5 -4
- package/src/scene/reportLayerError.js +6 -0
- package/src/scene/resolveNextInitialization.js +5 -2
- package/src/scene/restoreObject.js +6 -3
- package/src/scene/scheduleSceneUpdate.js +7 -6
- package/src/scene/setParent.js +6 -2
- package/src/scene/traverse.js +7 -2
- package/src/shaders/README.md +29 -0
- package/src/shaders/materialBaseShader.js +9 -0
- package/src/shaders/materialShaders.js +9 -1
- package/src/shaders/materialSurfaceShader.js +13 -0
- package/src/shaders/materialVertexShader.js +22 -10
- package/src/shaders/nativeStrokeShader.js +7 -0
- package/src/shaders/roofVertexShader.js +7 -0
- package/src/shadows/README.md +28 -0
- package/src/shadows/bindSunlight.js +5 -3
- package/src/shadows/drawShadowMeshes.js +7 -2
- package/src/shadows/ensureShadowPipeline.js +7 -0
- package/src/shadows/renderSunlight.js +8 -4
- package/src/shadows/resizeSunlight.js +6 -3
- package/src/shadows/shadowCacheMatches.js +11 -1
- package/src/shadows/shadowMatrix.js +8 -1
- package/src/shadows/shadowMeshMatches.js +8 -0
- package/src/sources/README.md +33 -0
- package/src/sources/attachAreaMesh.js +5 -4
- package/src/sources/buildArea.js +13 -2
- package/src/sources/buildAreaFeature.js +7 -1
- package/src/sources/buildAreaFeatures.js +9 -0
- package/src/sources/compareAreaDistance.js +8 -0
- package/src/sources/extrusionStyle.js +11 -0
- package/src/sources/featureAnchor.js +12 -0
- package/src/sources/groundOffset.js +7 -0
- package/src/sources/initVectorTiles.js +6 -0
- package/src/sources/initializeGeoJSON.js +6 -3
- package/src/sources/isVectorTileSource.js +7 -0
- package/src/sources/matchesAreaTile.js +10 -0
- package/src/sources/pendingSourceAreas.js +9 -2
- package/src/sources/prepareAreaGeometryJob.js +10 -0
- package/src/sources/projectAreaPolygons.js +10 -0
- package/src/sources/pumpSourceAreas.js +6 -6
- package/src/sources/readyVectorTiles.js +7 -0
- package/src/sources/releaseArea.js +6 -4
- package/src/sources/setGeoJSONData.js +8 -3
- package/src/sources/setGeoJSONLayerData.js +7 -0
- package/src/sources/sourceAreaContext.js +9 -2
- package/src/sources/updateArea.js +5 -5
- package/src/sources/updateSourceStatus.js +6 -3
- package/src/sunlight/README.md +28 -0
- package/src/sunlight/addTimeControlToMap.js +8 -1
- package/src/sunlight/addTimeLayer.js +9 -4
- package/src/sunlight/atmosphere.js +9 -2
- package/src/sunlight/createSun.js +7 -0
- package/src/sunlight/initSunlight.js +5 -0
- package/src/sunlight/initializeTimeControl.js +8 -6
- package/src/sunlight/onAddSun.js +11 -2
- package/src/sunlight/onAddTimeControl.js +7 -0
- package/src/sunlight/onRemoveSun.js +1 -1
- package/src/sunlight/removeSun.js +7 -5
- package/src/sunlight/removeTimeControl.js +7 -1
- package/src/sunlight/removeTimeLayer.js +8 -5
- package/src/sunlight/requestSunlightRender.js +6 -3
- package/src/sunlight/styleTimeControl.js +6 -0
- package/src/sunlight/tickSun.js +5 -0
- package/src/sunlight/updateCelestialDisc.js +11 -0
- package/src/sunlight/updateSky.js +5 -3
- package/src/sunlight/updateSun.js +6 -4
- package/src/sunlight/useLiveTime.js +5 -0
- package/src/sunlight/useSelectedTime.js +6 -4
- package/src/terrain/README.md +30 -0
- package/src/terrain/applyTerrain.js +10 -4
- package/src/terrain/clearLayerTerrain.js +5 -3
- package/src/terrain/copyTerrainTile.js +8 -0
- package/src/terrain/getElevation.js +8 -5
- package/src/terrain/initTerrain.js +5 -3
- package/src/terrain/loadReadyTerrain.js +1 -0
- package/src/terrain/loadTerrain.js +10 -2
- package/src/terrain/loadTerrainTiles.js +10 -3
- package/src/terrain/mapElevationOf.js +8 -0
- package/src/terrain/onTerrainAdd.js +8 -4
- package/src/terrain/onTerrainChange.js +5 -5
- package/src/terrain/onTerrainRemove.js +6 -3
- package/src/terrain/readBridges.js +9 -0
- package/src/terrain/readyTerrainOf.js +7 -0
- package/src/terrain/sampleTerrainTile.js +9 -0
- package/src/terrain/setLayerTerrain.js +5 -3
- package/src/terrain/setTerrainHeight.js +5 -4
- package/src/terrain/terrainAtlas.js +8 -2
- package/src/terrain/terrainElevation.js +8 -2
- package/src/terrain/terrainTileQueue.js +10 -3
- package/src/textures/README.md +29 -0
- package/src/textures/addImageState.js +7 -2
- package/src/textures/attachRasterImage.js +1 -2
- package/src/textures/bindMeshTextures.js +7 -0
- package/src/textures/collectRoofTiles.js +9 -2
- package/src/textures/compareRoofTiles.js +8 -0
- package/src/textures/composeRoofAtlas.js +11 -3
- package/src/textures/destroyTexture.js +6 -4
- package/src/textures/destroyTextureAfterSubmission.js +9 -0
- package/src/textures/ensureRoofBlit.js +5 -0
- package/src/textures/loadModelImage.js +12 -2
- package/src/textures/modelTextureFor.js +12 -4
- package/src/textures/modelTextureSampler.js +7 -2
- package/src/textures/nativeImageError.js +5 -1
- package/src/textures/nativeImageRefresh.js +5 -2
- package/src/textures/nativeTextureFor.js +11 -3
- package/src/textures/prepareMeshTextures.js +8 -0
- package/src/textures/rebuildRoofAtlas.js +8 -3
- package/src/textures/removeImageState.js +8 -3
- package/src/textures/resizeRoofTexture.js +9 -2
- package/src/textures/restoreMaterialTextures.js +6 -0
- package/src/textures/textureBinding.js +9 -0
- package/src/textures/updateRoofAtlas.js +10 -4
- package/src/textures/updateRoofRaster.js +8 -0
- package/src/textures/uploadCanvasTexture.js +15 -0
- package/src/textures/uploadMeshTexture.js +6 -0
- package/src/textures/uploadNativeImage.js +13 -0
- package/src/textures/uploadRoofTile.js +6 -0
- package/src/traffic/README.md +30 -0
- package/src/traffic/addTraffic.js +5 -2
- package/src/traffic/clockMinutes.js +7 -0
- package/src/traffic/compareDepartures.js +8 -0
- package/src/traffic/createTrafficMesh.js +13 -2
- package/src/traffic/destroyTrafficGpu.js +5 -0
- package/src/traffic/disposeTrafficObject.js +13 -10
- package/src/traffic/drawTrafficRoute.js +5 -1
- package/src/traffic/failTraffic.js +6 -0
- package/src/traffic/failedTrafficLoad.js +10 -3
- package/src/traffic/featuresToTrafficLanes.js +8 -0
- package/src/traffic/fetchTrafficLanes.js +11 -0
- package/src/traffic/groundTraffic.js +5 -1
- package/src/traffic/initTraffic.js +17 -15
- package/src/traffic/loadTraffic.js +5 -0
- package/src/traffic/loadedTrafficLanes.js +11 -4
- package/src/traffic/locateTraffic.js +9 -0
- package/src/traffic/moveTraffic.js +6 -0
- package/src/traffic/placeTraffic.js +5 -0
- package/src/traffic/prepareTraffic.js +5 -3
- package/src/traffic/readyTraffic.js +7 -2
- package/src/traffic/rebaseTraffic.js +5 -3
- package/src/traffic/rebuildTrafficMesh.js +5 -1
- package/src/traffic/refreshTrafficTrips.js +10 -0
- package/src/traffic/removeTraffic.js +5 -2
- package/src/traffic/routeColor.js +7 -0
- package/src/traffic/scheduledTrips.js +5 -2
- package/src/traffic/startTraffic.js +7 -2
- package/src/traffic/tickTraffic.js +5 -3
- package/src/traffic/trafficBounds.js +5 -0
- package/src/traffic/trafficNow.js +9 -4
- package/src/traffic/trafficStatusText.js +8 -0
- package/src/traffic/trafficStorage.js +8 -0
- package/src/traffic/trafficTooltip.js +7 -0
- package/src/traffic/tripsAt.js +9 -2
- package/src/traffic/updateTraffic.js +10 -7
- package/src/traffic/updateTrafficLights.js +5 -0
- package/src/traffic/updateTrafficPose.js +7 -0
- package/src/traffic/updateTrafficTerrain.js +10 -5
- package/src/traffic/uploadTrafficLanes.js +6 -0
- package/src/traffic/vehicleOffsets.js +9 -3
- package/src/transforms/README.md +27 -0
- package/src/transforms/composeLocalTransform.js +7 -0
- package/src/transforms/modelNodeMatrix.js +7 -2
- package/src/transforms/transformNativePoint.js +12 -0
- package/src/transforms/updateWorldMatrix.js +5 -2
- package/src/transforms/worldMatrixChanged.js +8 -0
- package/src/triangulation/README.md +26 -0
- package/src/triangulation/area.js +7 -0
- package/src/triangulation/clean.js +9 -0
- package/src/triangulation/clipEars.js +9 -0
- package/src/triangulation/connectHole.js +12 -0
- package/src/triangulation/containsVertex.js +10 -0
- package/src/triangulation/cross.js +9 -0
- package/src/triangulation/crossesBoundary.js +10 -0
- package/src/triangulation/crossesRing.js +9 -0
- package/src/triangulation/equal.js +8 -0
- package/src/triangulation/inside.js +8 -0
- package/src/triangulation/insideHole.js +8 -0
- package/src/triangulation/intersects.js +10 -0
- package/src/triangulation/isClockWise.js +4 -1
- package/src/triangulation/mergeHoles.js +8 -0
- package/src/triangulation/minimumX.js +7 -0
- package/src/triangulation/on.js +9 -0
- package/src/triangulation/polygonRings.js +8 -0
- package/src/triangulation/sortHoles.js +7 -0
- package/src/triangulation/triangulate.js +3 -2
- package/src/triangulation/validateArea.js +9 -0
- package/src/utils/README.md +16 -0
- package/src/utils/compareDistance.js +8 -0
- package/src/utils/noOperation.js +1 -0
- package/src/utils/wrap.js +7 -0
- package/src/utils/yieldTask.js +7 -0
- package/src/vector-style/README.md +27 -0
- package/src/vector-style/appendQuotedStyleCharacter.js +8 -0
- package/src/vector-style/arrayContainsRange.js +10 -0
- package/src/vector-style/evaluateBoolean.js +13 -0
- package/src/vector-style/evaluateCoalesceOrCase.js +13 -0
- package/src/vector-style/evaluateComparison.js +13 -0
- package/src/vector-style/evaluateIExpression.js +13 -0
- package/src/vector-style/evaluateInput.js +10 -0
- package/src/vector-style/evaluateInterpolate.js +9 -0
- package/src/vector-style/evaluateMatch.js +9 -0
- package/src/vector-style/evaluateMath.js +12 -0
- package/src/vector-style/evaluateMembership.js +11 -0
- package/src/vector-style/evaluateNegation.js +13 -0
- package/src/vector-style/evaluatePrimitive.js +12 -0
- package/src/vector-style/evaluateStep.js +9 -0
- package/src/vector-style/evaluateStyle.js +10 -0
- package/src/vector-style/evaluateToExpression.js +13 -0
- package/src/vector-style/fillVectorPaint.js +9 -0
- package/src/vector-style/lineVectorPaint.js +10 -0
- package/src/vector-style/parseFunctionalColor.js +9 -0
- package/src/vector-style/parseHexColor.js +7 -0
- package/src/vector-style/parseVectorStyle.js +7 -0
- package/src/vector-style/readPaintValue.js +11 -0
- package/src/vector-style/removeTrailingCommas.js +7 -0
- package/src/vector-style/scaleDashArray.js +12 -0
- package/src/vector-style/skipStyleComment.js +11 -0
- package/src/vector-style/stripStyleComments.js +7 -0
- package/src/vector-style/styleColor.js +7 -0
- package/src/vector-style/validateVectorLayers.js +8 -0
- package/src/vector-style/vectorPaint.js +9 -0
- package/src/vector-style/visibleStyle.js +9 -0
- package/src/vector-tiles/README.md +30 -0
- package/src/vector-tiles/appendVectorBatch.js +12 -0
- package/src/vector-tiles/attachVectorTileBatch.js +8 -0
- package/src/vector-tiles/attachVectorTileBatches.js +11 -0
- package/src/vector-tiles/compareVectorLabelPriority.js +8 -0
- package/src/vector-tiles/compareVectorTileDistance.js +8 -0
- package/src/vector-tiles/configureVectorTileLayer.js +8 -0
- package/src/vector-tiles/createVectorLabel.js +15 -0
- package/src/vector-tiles/forwardVectorTileError.js +5 -0
- package/src/vector-tiles/loadVectorSprite.js +9 -0
- package/src/vector-tiles/loadVectorTile.js +9 -0
- package/src/vector-tiles/onVectorTileAdd.js +5 -0
- package/src/vector-tiles/onVectorTileMessage.js +5 -0
- package/src/vector-tiles/onVectorTileRemove.js +5 -0
- package/src/vector-tiles/onVectorTileWorkerError.js +5 -0
- package/src/vector-tiles/paintVectorTileBatch.js +6 -0
- package/src/vector-tiles/prepareVectorLabel.js +9 -0
- package/src/vector-tiles/prepareVectorStyleLayer.js +8 -0
- package/src/vector-tiles/prepareVectorTile.js +13 -0
- package/src/vector-tiles/projectVectorPaths.js +10 -0
- package/src/vector-tiles/projectVectorPoint.js +9 -0
- package/src/vector-tiles/projectVectorTriangles.js +10 -0
- package/src/vector-tiles/pruneVectorTiles.js +3 -0
- package/src/vector-tiles/pumpVectorTiles.js +3 -0
- package/src/vector-tiles/readTileJSON.js +10 -0
- package/src/vector-tiles/readVectorStyle.js +11 -0
- package/src/vector-tiles/refreshVectorTiles.js +3 -0
- package/src/vector-tiles/reserveVectorLabelCells.js +8 -0
- package/src/vector-tiles/retireVectorTileGroup.js +7 -0
- package/src/vector-tiles/revokeVectorWorkerUrl.js +5 -0
- package/src/vector-tiles/rotateVectorLabel.js +7 -0
- package/src/vector-tiles/rotateVectorLabels.js +3 -0
- package/src/vector-tiles/simplifyVectorPath.js +8 -0
- package/src/vector-tiles/updateVectorLabelMarker.js +9 -0
- package/src/vector-tiles/updateVectorLabelStyle.js +6 -0
- package/src/vector-tiles/updateVectorTileLabels.js +5 -0
- package/src/vector-tiles/updateVectorTilePaint.js +5 -0
- package/src/vector-tiles/updateVectorTiles.js +3 -0
- package/src/vector-tiles/validateVectorTileZooms.js +9 -0
- package/src/vector-tiles/vectorFeaturePaint.js +10 -0
- package/src/vector-tiles/vectorFeaturePaths.js +10 -0
- package/src/vector-tiles/vectorFeatureZoom.js +10 -0
- package/src/vector-tiles/vectorLabelAnchors.js +8 -1
- package/src/vector-tiles/vectorLabelCandidates.js +7 -0
- package/src/vector-tiles/vectorLabelCells.js +9 -0
- package/src/vector-tiles/vectorLabelIcon.js +8 -0
- package/src/vector-tiles/vectorLabelProperty.js +9 -0
- package/src/vector-tiles/vectorLabelText.js +9 -0
- package/src/vector-tiles/vectorSpriteIcon.js +8 -0
- package/src/vector-tiles/vectorStraightRun.js +10 -1
- package/src/vector-tiles/vectorStyleDependencies.js +7 -0
- package/src/vector-tiles/vectorStyleValue.js +11 -0
- package/src/vector-tiles/vectorStyleZoom.js +7 -1
- package/src/vector-tiles/vectorTileAwaited.js +8 -0
- package/src/vector-tiles/vectorTileOverlaps.js +8 -0
- package/src/vector-tiles/vectorTilePaint.js +8 -0
- package/src/vector-tiles/vectorTileSettings.js +10 -0
- package/src/vector-tiles/vectorTilesIdle.js +8 -0
- package/src/vector-tiles/vectorTolerance.js +8 -1
- package/src/vector-tiles/wrapVectorLabel.js +7 -1
- package/src/vehicles/README.md +27 -0
- package/src/vehicles/bicycleModel.js +7 -1
- package/src/vehicles/boatBenches.js +5 -0
- package/src/vehicles/boatModel.js +8 -8
- package/src/vehicles/buildCarriage.js +9 -1
- package/src/vehicles/busModel.js +11 -3
- package/src/vehicles/carModel.js +12 -11
- package/src/vehicles/metroModel.js +8 -0
- package/src/vehicles/mirrorVehiclePart.js +11 -0
- package/src/vehicles/pedestrianModel.js +7 -1
- package/src/vehicles/tramModel.js +8 -0
- package/src/walk/README.md +30 -0
- package/src/walk/animateWalker.js +5 -4
- package/src/walk/createWalk.js +6 -3
- package/src/walk/initWalk.js +5 -0
- package/src/walk/initializeWalkControl.js +6 -1
- package/src/walk/isWalkBlocked.js +9 -0
- package/src/walk/landWalker.js +12 -8
- package/src/walk/moveWalker.js +17 -4
- package/src/walk/onAddWalkControl.js +9 -0
- package/src/walk/onRemoveWalkControl.js +5 -0
- package/src/walk/onWalkBlur.js +1 -0
- package/src/walk/onWalkKey.js +5 -2
- package/src/walk/onWalkPointer.js +6 -0
- package/src/walk/onWalkTerrain.js +4 -3
- package/src/walk/placeWalker.js +1 -2
- package/src/walk/resolveWalkerPosition.js +5 -0
- package/src/walk/startWalking.js +1 -1
- package/src/walk/stepWalkerHeight.js +7 -0
- package/src/walk/stopWalking.js +1 -0
- package/src/walk/toggleWalking.js +5 -4
- package/src/walk/updateWalkerFrame.js +10 -0
- package/src/walk/updateWalkerView.js +9 -0
- package/src/weakmaps/README.md +33 -0
- package/src/weakmaps/addedByLayer.js +5 -0
- package/src/weakmaps/archiveHeaderByLayer.js +5 -0
- package/src/weakmaps/areasByLayer.js +5 -0
- package/src/weakmaps/boundsMethods.js +5 -0
- package/src/weakmaps/bridgeMeshByLayer.js +5 -0
- package/src/weakmaps/bridgesByLayer.js +5 -0
- package/src/weakmaps/cameraAnimationByMap.js +5 -0
- package/src/weakmaps/cameraBearingByMap.js +5 -0
- package/src/weakmaps/cameraByLayer.js +5 -0
- package/src/weakmaps/cameraDraggableByMap.js +5 -0
- package/src/weakmaps/cameraFields.js +5 -0
- package/src/weakmaps/cameraFrameByMap.js +5 -0
- package/src/weakmaps/cameraHandlersByMap.js +5 -0
- package/src/weakmaps/cameraMaps.js +5 -0
- package/src/weakmaps/cameraPitchByMap.js +5 -0
- package/src/weakmaps/cameraReadyByMap.js +5 -0
- package/src/weakmaps/cameraTouchStateByMap.js +5 -0
- package/src/weakmaps/cameraViewByMap.js +5 -0
- package/src/weakmaps/cameraZIndexOffsetByLayer.js +5 -0
- package/src/weakmaps/closestMethods.js +5 -0
- package/src/weakmaps/colliders.js +5 -0
- package/src/weakmaps/containerByLayer.js +5 -0
- package/src/weakmaps/controlByLayer.js +5 -0
- package/src/weakmaps/countStatusByLayer.js +5 -0
- package/src/weakmaps/cursorByLayer.js +5 -0
- package/src/weakmaps/demByLayer.js +5 -0
- package/src/weakmaps/directoriesByLayer.js +5 -0
- package/src/weakmaps/dragByHandler.js +5 -0
- package/src/weakmaps/dragStates.js +5 -0
- package/src/weakmaps/etagByLayer.js +5 -0
- package/src/weakmaps/eventMapByLayer.js +5 -0
- package/src/weakmaps/eventsByLayer.js +5 -0
- package/src/weakmaps/fadeFrameByLayer.js +5 -0
- package/src/weakmaps/fadeVersionByLayer.js +5 -0
- package/src/weakmaps/frameByLayer.js +5 -0
- package/src/weakmaps/geojsonByLayer.js +5 -0
- package/src/weakmaps/geometryWorkersByMap.js +5 -0
- package/src/weakmaps/gridInitializers.js +5 -0
- package/src/weakmaps/groupByLayer.js +5 -0
- package/src/weakmaps/headerByLayer.js +5 -0
- package/src/weakmaps/highlightedFeatureByLayer.js +5 -0
- package/src/weakmaps/hoveredFeatureByLayer.js +5 -0
- package/src/weakmaps/imageStates.js +5 -0
- package/src/weakmaps/inflightByLayer.js +5 -0
- package/src/weakmaps/kindByLayer.js +5 -0
- package/src/weakmaps/layersByLayer.js +5 -0
- package/src/weakmaps/loadingTilesByLayer.js +5 -0
- package/src/weakmaps/locationByLayer.js +5 -0
- package/src/weakmaps/modelByLayer.js +5 -0
- package/src/weakmaps/modelUrlByLayer.js +5 -0
- package/src/weakmaps/nativeEventMaps.js +5 -0
- package/src/weakmaps/nativeGPUBackByMap.js +5 -0
- package/src/weakmaps/nativeGPUByLayer.js +5 -0
- package/src/weakmaps/nativeGPUOrderByMap.js +5 -0
- package/src/weakmaps/nativeProgramsByRenderer.js +5 -0
- package/src/weakmaps/nativeRenderByLayer.js +5 -0
- package/src/weakmaps/pathProjectionByMap.js +5 -0
- package/src/weakmaps/pitchSkyByMap.js +5 -0
- package/src/weakmaps/pointerEventsByLayer.js +5 -0
- package/src/weakmaps/pruneAfterByLayer.js +5 -0
- package/src/weakmaps/pruneVersionByLayer.js +5 -0
- package/src/weakmaps/pruneWantedByLayer.js +5 -0
- package/src/weakmaps/queuedByLayer.js +5 -0
- package/src/weakmaps/rasterGeometryByLayer.js +5 -0
- package/src/weakmaps/rasterProgramByLayer.js +5 -0
- package/src/weakmaps/rasterTilesByLayer.js +5 -0
- package/src/weakmaps/rasterVersionByLayer.js +5 -0
- package/src/weakmaps/raycasterByLayer.js +5 -0
- package/src/weakmaps/readyByLayer.js +5 -0
- package/src/weakmaps/rendererByLayer.js +5 -0
- package/src/weakmaps/rendererDevices.js +5 -0
- package/src/weakmaps/rendererReadyByLayer.js +5 -0
- package/src/weakmaps/renderers.js +5 -0
- package/src/weakmaps/roofRasterByLayer.js +5 -0
- package/src/weakmaps/roofRastersByLayer.js +5 -0
- package/src/weakmaps/rootByLayer.js +5 -0
- package/src/weakmaps/rotateControlByMap.js +5 -0
- package/src/weakmaps/sceneByLayer.js +5 -0
- package/src/weakmaps/sceneFields.js +5 -0
- package/src/weakmaps/sceneLayers.js +5 -0
- package/src/weakmaps/sceneOriginByLayer.js +5 -0
- package/src/weakmaps/shadowMeshesByLayer.js +5 -0
- package/src/weakmaps/sharedByLayer.js +5 -0
- package/src/weakmaps/sizeByLayer.js +5 -0
- package/src/weakmaps/state3dByLayer.js +5 -0
- package/src/weakmaps/streamTerrainByLayer.js +5 -0
- package/src/weakmaps/streamTerrainByMap.js +5 -0
- package/src/weakmaps/sunByMap.js +5 -0
- package/src/weakmaps/sunlightByControl.js +5 -0
- package/src/weakmaps/sunlightByMap.js +5 -0
- package/src/weakmaps/terrain3DByLayer.js +5 -0
- package/src/weakmaps/terrain3DByMap.js +5 -0
- package/src/weakmaps/terrainArchiveByLayer.js +5 -0
- package/src/weakmaps/terrainBaseYByLayer.js +5 -0
- package/src/weakmaps/terrainBoundsByLayer.js +5 -0
- package/src/weakmaps/terrainControllerByLayer.js +5 -0
- package/src/weakmaps/terrainGridsByLayer.js +5 -0
- package/src/weakmaps/terrainLoadingByLayer.js +5 -0
- package/src/weakmaps/terrainOriginElevationByLayer.js +5 -0
- package/src/weakmaps/terrainPromiseByLayer.js +5 -0
- package/src/weakmaps/terrainReadyByLayer.js +5 -0
- package/src/weakmaps/terrainRequestByLayer.js +5 -0
- package/src/weakmaps/terrainSourceByLayer.js +5 -0
- package/src/weakmaps/terrainTilesByLayer.js +5 -0
- package/src/weakmaps/terrainZoomByLayer.js +5 -0
- package/src/weakmaps/tileZoomByLayer.js +5 -0
- package/src/weakmaps/timeControlByMap.js +5 -0
- package/src/weakmaps/tooltipByLayer.js +5 -0
- package/src/weakmaps/touchByContainer.js +5 -0
- package/src/weakmaps/touchPitchByMap.js +5 -0
- package/src/weakmaps/touchRotateByMap.js +5 -0
- package/src/weakmaps/trafficByLayer.js +5 -0
- package/src/weakmaps/typeByLayer.js +5 -0
- package/src/weakmaps/urlByLayer.js +5 -0
- package/src/weakmaps/vectorTileOptionsByLayer.js +5 -0
- package/src/weakmaps/vectorWorkerByLayer.js +5 -0
- package/src/weakmaps/visibleMeshesByLayer.js +5 -0
- package/src/weakmaps/walkByMap.js +5 -0
- package/src/weakmaps/walkerByLayer.js +5 -0
- package/src/weakmaps/wantedRasterTilesByLayer.js +5 -0
- package/src/weakmaps/workerMapByLayer.js +5 -0
- package/src/weakmaps/zoomLevelByLayer.js +5 -0
- package/src/weakmaps/zoomTransitionsByLayer.js +5 -0
- package/src/weakmaps/zoomViewByLayer.js +5 -0
- package/src/workers/README.md +33 -0
- package/src/workers/acquireGeometryWorker.js +10 -0
- package/src/workers/buildAreaInWorker.js +8 -0
- package/src/workers/closeGeometryWorkers.js +5 -0
- package/src/workers/cogWorker.js +7 -0
- package/src/workers/createGeometryWorker.js +10 -0
- package/src/workers/geometryWorker.js +5 -0
- package/src/workers/getCogInWorker.js +11 -0
- package/src/workers/modelWorker.js +7 -0
- package/src/workers/openCogInWorker.js +8 -0
- package/src/workers/runSourceWorker.js +12 -0
- package/src/workers/settleGeometryWorker.js +6 -0
- package/src/workers/startGeometryWorker.js +7 -0
- package/src/workers/vectorTileWorker.js +5 -0
- package/src/collision/setTrafficNormal.js +0 -9
|
@@ -1,5 +1,10 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Translate glTF sampler constants into WebGPU sampler options.
|
|
3
|
+
*
|
|
4
|
+
* @param {Object} sampler glTF sampler, if present.
|
|
5
|
+
*
|
|
6
|
+
* @returns {Object} WebGPU addressing and filtering options.
|
|
7
|
+
*/
|
|
3
8
|
export function textureSampler(sampler) {
|
|
4
9
|
return /* alloc */ {
|
|
5
10
|
addressModeU: sampler?.wrapS === 33071 ? 'clamp-to-edge' : sampler?.wrapS === 33648 ? 'mirror-repeat' : 'repeat',
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { imageStates } from '../weakmaps/imageStates.js';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Report a native image load failure to every associated source layer.
|
|
5
|
+
*
|
|
6
|
+
* @param {Event} event Image error event.
|
|
7
|
+
*/
|
|
4
8
|
export function nativeImageError(event) {
|
|
5
9
|
const states = imageStates.get(event.currentTarget);
|
|
6
10
|
if (!states) return;
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { imageStates } from '../weakmaps/imageStates.js';
|
|
2
|
-
|
|
3
|
-
|
|
4
2
|
import { refreshNativeLayer } from '../native/refreshNativeLayer.js';
|
|
5
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Refresh all native layer states associated with an image event.
|
|
6
|
+
*
|
|
7
|
+
* @param {Event} event Image event.
|
|
8
|
+
*/
|
|
6
9
|
export function nativeImageRefresh(event) {
|
|
7
10
|
const states = imageStates.get(event.currentTarget);
|
|
8
11
|
if (!states) return;
|
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
import { rendererByLayer } from '../weakmaps/rendererByLayer.js';
|
|
2
|
-
|
|
3
2
|
import { coreSampler } from '../globals/coreSampler.js';
|
|
4
|
-
|
|
5
3
|
import { disposeMesh } from '../rendering/disposeMesh.js';
|
|
6
4
|
import { destroyTexture } from './destroyTexture.js';
|
|
7
5
|
import { uploadCanvasTexture } from './uploadCanvasTexture.js';
|
|
8
6
|
import { uploadNativeImage } from './uploadNativeImage.js';
|
|
9
7
|
|
|
10
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Get or create a native raster texture, returning it once its image is uploaded.
|
|
10
|
+
*
|
|
11
|
+
* @param {Object} state Native layer state with texture and mesh caches.
|
|
12
|
+
* @param {string} key Tile or image cache key.
|
|
13
|
+
* @param {HTMLImageElement|HTMLCanvasElement} image Raster source.
|
|
14
|
+
*
|
|
15
|
+
* @returns {Object|undefined} Uploaded texture state, if ready.
|
|
16
|
+
*
|
|
17
|
+
* @throws {Error} If the source is neither an image nor a canvas.
|
|
18
|
+
*/
|
|
11
19
|
export function textureFor(state, key, image) {
|
|
12
20
|
if (!(image instanceof HTMLImageElement) && !(image instanceof HTMLCanvasElement)) {
|
|
13
21
|
throw /* alloc */ new Error('WebGPU native raster layers require image or canvas tiles');
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import { uploadMeshTexture } from './uploadMeshTexture.js';
|
|
2
2
|
import { bindMeshTextures } from './bindMeshTextures.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Upload a mesh's program textures and rebuild its bind group when bindings change.
|
|
6
|
+
*
|
|
7
|
+
* @param {Object} renderer Renderer providing the GPU device and uniform buffer.
|
|
8
|
+
* @param {Object} mesh Mesh whose textures and bindings are prepared.
|
|
9
|
+
*
|
|
10
|
+
* @throws {Error} If a required program texture is missing.
|
|
11
|
+
*/
|
|
4
12
|
export function prepareMeshTextures(renderer, mesh) {
|
|
5
13
|
const { program } = mesh;
|
|
6
14
|
const { device } = renderer;
|
|
@@ -1,20 +1,25 @@
|
|
|
1
1
|
import { rendererByLayer } from '../weakmaps/rendererByLayer.js';
|
|
2
2
|
import { roofRasterByLayer } from '../weakmaps/roofRasterByLayer.js';
|
|
3
3
|
import { sceneOriginByLayer } from '../weakmaps/sceneOriginByLayer.js';
|
|
4
|
-
|
|
5
4
|
import { radians } from '../globals/radians.js';
|
|
6
5
|
import { earthCirc } from '../globals/earthCirc.js';
|
|
7
6
|
import { roofTiles } from '../globals/roofTiles.js';
|
|
8
7
|
import { TILE_SIZE } from '../globals/TILE_SIZE.js';
|
|
9
8
|
import { roofMin } from '../globals/roofMin.js';
|
|
10
9
|
import { roofSize } from '../globals/roofSize.js';
|
|
11
|
-
|
|
12
|
-
|
|
13
10
|
import { ensureRoofBlit } from './ensureRoofBlit.js';
|
|
14
11
|
import { composeRoofAtlas } from './composeRoofAtlas.js';
|
|
15
12
|
import { collectRoofTiles } from './collectRoofTiles.js';
|
|
16
13
|
import { resizeRoofTexture } from './resizeRoofTexture.js';
|
|
17
14
|
|
|
15
|
+
/**
|
|
16
|
+
* Rebuild the roof atlas from available raster tiles and update its scene-to-atlas matrix.
|
|
17
|
+
*
|
|
18
|
+
* @param {L.Layer} layer Rendering layer owning the atlas.
|
|
19
|
+
* @param {Array<L.Layer>} rasters Raster layers to composite.
|
|
20
|
+
* @param {string} signature Raster state signature.
|
|
21
|
+
* @param {number} now Current frame time in milliseconds.
|
|
22
|
+
*/
|
|
18
23
|
export function rebuildRoofAtlas(layer, rasters, signature, now) {
|
|
19
24
|
const map = layer._map, renderer = rendererByLayer.get(layer);
|
|
20
25
|
const tiles = roofTiles;
|
|
@@ -1,6 +1,11 @@
|
|
|
1
|
-
import { imageStates } from '../weakmaps/imageStates.js';
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { imageStates } from '../weakmaps/imageStates.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Remove a native layer state from an image's tracked associations.
|
|
5
|
+
*
|
|
6
|
+
* @param {HTMLImageElement} image Image to update.
|
|
7
|
+
* @param {Object} state Native layer state to remove.
|
|
8
|
+
*/
|
|
4
9
|
export function removeImageState(image, state) {
|
|
5
10
|
const states = imageStates.get(image);
|
|
6
11
|
if (!states) return;
|
|
@@ -1,9 +1,16 @@
|
|
|
1
|
-
import { rendererByLayer } from '../weakmaps/rendererByLayer.js';
|
|
2
|
-
|
|
1
|
+
import { rendererByLayer } from '../weakmaps/rendererByLayer.js';
|
|
3
2
|
import { roofTexture } from '../globals/roofTexture.js';
|
|
4
3
|
import { roofSampler } from '../globals/roofSampler.js';
|
|
5
4
|
import { destroyTexture } from './destroyTexture.js';
|
|
6
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Create or resize the GPU texture used for the roof atlas.
|
|
8
|
+
*
|
|
9
|
+
* @param {L.Layer} layer Rendering layer.
|
|
10
|
+
* @param {Object} roof Roof atlas state.
|
|
11
|
+
* @param {number} width Texture width in pixels.
|
|
12
|
+
* @param {number} height Texture height in pixels.
|
|
13
|
+
*/
|
|
7
14
|
export function resizeRoofTexture(layer, roof, width, height) {
|
|
8
15
|
const renderer = rendererByLayer.get(layer);
|
|
9
16
|
const descriptor = roofTexture;
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recreate material textures and samplers that belong to a different GPU device.
|
|
3
|
+
*
|
|
4
|
+
* @param {Object} material Material containing model texture states.
|
|
5
|
+
* @param {GPUDevice} device Device to own restored resources.
|
|
6
|
+
*/
|
|
1
7
|
export function restoreMaterialTextures(material, device) {
|
|
2
8
|
let name, texture;
|
|
3
9
|
for (name in material) {
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reserve texture and sampler bindings and produce their WGSL declarations when enabled.
|
|
3
|
+
*
|
|
4
|
+
* @param {Array<Object>} bindings Program binding descriptions to extend.
|
|
5
|
+
* @param {string} name Shader texture uniform name.
|
|
6
|
+
* @param {boolean} enabled Whether the texture is used.
|
|
7
|
+
*
|
|
8
|
+
* @returns {string} WGSL declarations, or an empty string when disabled.
|
|
9
|
+
*/
|
|
1
10
|
export function textureBinding(bindings, name, enabled) {
|
|
2
11
|
if (!enabled) return '';
|
|
3
12
|
const current = 3 + bindings.length * 2;
|
|
@@ -1,11 +1,17 @@
|
|
|
1
|
-
import { loadingTilesByLayer } from '../weakmaps/loadingTilesByLayer.js';
|
|
2
|
-
import { rasterVersionByLayer } from '../weakmaps/rasterVersionByLayer.js';
|
|
3
|
-
import { roofRasterByLayer } from '../weakmaps/roofRasterByLayer.js';
|
|
4
|
-
|
|
1
|
+
import { loadingTilesByLayer } from '../weakmaps/loadingTilesByLayer.js';
|
|
2
|
+
import { rasterVersionByLayer } from '../weakmaps/rasterVersionByLayer.js';
|
|
3
|
+
import { roofRasterByLayer } from '../weakmaps/roofRasterByLayer.js';
|
|
5
4
|
import { L } from '../globals/L.js';
|
|
6
5
|
import { roofSignatures } from '../globals/roofSignatures.js';
|
|
7
6
|
import { rebuildRoofAtlas } from './rebuildRoofAtlas.js';
|
|
8
7
|
|
|
8
|
+
/**
|
|
9
|
+
* Rebuild a changed roof atlas, throttling updates while raster tiles are loading.
|
|
10
|
+
*
|
|
11
|
+
* @param {L.Layer} layer Rendering layer owning the atlas.
|
|
12
|
+
* @param {Array<L.Layer>} rasters Raster layers included in the atlas.
|
|
13
|
+
* @param {number} now Current frame time in milliseconds.
|
|
14
|
+
*/
|
|
9
15
|
export function updateRoofAtlas(layer, rasters, now) {
|
|
10
16
|
const signatures = roofSignatures;
|
|
11
17
|
signatures.length = 0;
|
|
@@ -6,6 +6,14 @@ import { roofRastersByLayer } from '../weakmaps/roofRastersByLayer.js';
|
|
|
6
6
|
import { updateRoofAtlas } from './updateRoofAtlas.js';
|
|
7
7
|
import { destroyTexture } from './destroyTexture.js';
|
|
8
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Update or remove the roof atlas according to scene texture settings and active rasters.
|
|
11
|
+
*
|
|
12
|
+
* @param {L.Layer} layer Rendering layer.
|
|
13
|
+
* @param {number} now Current frame time in milliseconds.
|
|
14
|
+
*
|
|
15
|
+
* @returns {Array<L.Layer>} Raster layers contributing to the roof atlas.
|
|
16
|
+
*/
|
|
9
17
|
export function updateRoofRaster(layer, now) {
|
|
10
18
|
const map = layer._map;
|
|
11
19
|
let rasters = roofRastersByLayer.get(layer);
|
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
import { current } from '../native/isCurrentNativeLayer.js';
|
|
2
2
|
import { refreshNativeLayer } from '../native/refreshNativeLayer.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Rasterize a native canvas or image into a GPU texture and refresh its layer when ready.
|
|
6
|
+
*
|
|
7
|
+
* @param {Object} state Native layer state.
|
|
8
|
+
* @param {string} key Texture cache key.
|
|
9
|
+
* @param {Object} texture Destination texture state.
|
|
10
|
+
* @param {HTMLCanvasElement|HTMLImageElement} image Source image.
|
|
11
|
+
* @param {GPUDevice} device Device owning the destination.
|
|
12
|
+
* @param {number} width Image width in pixels.
|
|
13
|
+
* @param {number} height Image height in pixels.
|
|
14
|
+
*
|
|
15
|
+
* @returns {Promise<void>} Completion of the upload attempt.
|
|
16
|
+
*
|
|
17
|
+
* @throws {Error} Internally if SVG rasterization lacks a 2D context; reported to the source layer.
|
|
18
|
+
*/
|
|
4
19
|
export async function uploadCanvasTexture(state, key, texture, image, device, width, height) {
|
|
5
20
|
let bitmap, source = image;
|
|
6
21
|
try {
|
|
@@ -2,6 +2,12 @@ import { meshImage } from '../globals/meshImage.js';
|
|
|
2
2
|
import { meshTarget } from '../globals/meshTarget.js';
|
|
3
3
|
import { meshCopySize } from '../globals/meshCopySize.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Upload a mesh texture's image if it has changed since the previous upload.
|
|
7
|
+
*
|
|
8
|
+
* @param {GPUDevice} device Device owning the texture.
|
|
9
|
+
* @param {Object} texture Texture state containing its image and flip setting.
|
|
10
|
+
*/
|
|
5
11
|
export function uploadMeshTexture(device, texture) {
|
|
6
12
|
if (texture.uploaded === texture.image) return;
|
|
7
13
|
device.queue.copyExternalImageToTexture(
|
|
@@ -1,3 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Upload a native image, removing its cached GPU texture if the copy fails.
|
|
3
|
+
*
|
|
4
|
+
* @param {Object} state Native layer state containing the texture cache.
|
|
5
|
+
* @param {string} key Texture cache key.
|
|
6
|
+
* @param {Object} texture Destination texture state.
|
|
7
|
+
* @param {HTMLImageElement} image Source image.
|
|
8
|
+
* @param {GPUDevice} device Device owning the destination.
|
|
9
|
+
* @param {number} width Image width in pixels.
|
|
10
|
+
* @param {number} height Image height in pixels.
|
|
11
|
+
*
|
|
12
|
+
* @throws {Error} If the GPU image copy fails.
|
|
13
|
+
*/
|
|
1
14
|
export function uploadNativeImage(state, key, texture, image, device, width, height) {
|
|
2
15
|
try {
|
|
3
16
|
device.queue.copyExternalImageToTexture(
|
|
@@ -2,6 +2,12 @@ import { roofImage } from '../globals/roofImage.js';
|
|
|
2
2
|
import { roofTarget } from '../globals/roofTarget.js';
|
|
3
3
|
import { roofCopySize } from '../globals/roofCopySize.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Upload a roof tile image when its texture does not already contain it.
|
|
7
|
+
*
|
|
8
|
+
* @param {GPUDevice} device Device owning the destination texture.
|
|
9
|
+
* @param {Object} tile Raster tile with image and texture state.
|
|
10
|
+
*/
|
|
5
11
|
export function uploadRoofTile(device, tile) {
|
|
6
12
|
const source = tile.texture;
|
|
7
13
|
if (source.uploaded !== source.image) {
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Traffic
|
|
2
|
+
|
|
3
|
+
[Source guide](../README.md) | [Project README](../../README.md)
|
|
4
|
+
|
|
5
|
+
Loads traffic lanes and schedules trips for vehicles and pedestrians, updating
|
|
6
|
+
their poses in the shared GPU scene as simulation time advances.
|
|
7
|
+
|
|
8
|
+
## Lane data to moving objects
|
|
9
|
+
|
|
10
|
+
```mermaid
|
|
11
|
+
flowchart LR
|
|
12
|
+
GeoJSON["GeoJSON lines"] --> Lanes["Lanes + properties"]
|
|
13
|
+
Lanes --> Project["Project to local metres"]
|
|
14
|
+
Terrain["Terrain / explicit elevation"] --> Project
|
|
15
|
+
Project --> Trips["Flow / timetable trips"]
|
|
16
|
+
Clock["Simulation time"] --> Trips
|
|
17
|
+
Trips --> Pose["GPU poses"]
|
|
18
|
+
Shapes["Vehicle shapes"] --> Pose
|
|
19
|
+
Pose --> Frame["Scene update"]
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
New lane loads abort the previous request; live time schedules further frames.
|
|
23
|
+
Collision queries use current traffic bounds, but traffic does not steer around
|
|
24
|
+
the walker. Timetables use their configured time zone.
|
|
25
|
+
|
|
26
|
+
- [initTraffic.js](./initTraffic.js): configure a traffic layer.
|
|
27
|
+
- [loadTraffic.js](./loadTraffic.js): request lanes for the current time.
|
|
28
|
+
- [tickTraffic.js](./tickTraffic.js): refresh trips and poses.
|
|
29
|
+
|
|
30
|
+
Related: [vehicles](../vehicles/README.md), [sunlight](../sunlight/README.md), [terrain](../terrain/README.md).
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { trafficByLayer } from '../weakmaps/trafficByLayer.js';
|
|
2
|
-
|
|
3
|
-
|
|
4
2
|
import { placeTraffic } from './placeTraffic.js';
|
|
5
3
|
import { startTraffic } from './startTraffic.js';
|
|
6
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Register traffic state on layer addition and start loading if the layer is ready.
|
|
7
|
+
*
|
|
8
|
+
* @param {Object} state Traffic layer state.
|
|
9
|
+
*/
|
|
7
10
|
export function addTraffic(state) {
|
|
8
11
|
trafficByLayer.set(state.layer, state);
|
|
9
12
|
if (state.ready) startTraffic(state);
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Convert an HH:MM clock string to minutes after midnight.
|
|
5
|
+
*
|
|
6
|
+
* @param {string} clockTime Clock time in HH:MM form.
|
|
7
|
+
*
|
|
8
|
+
* @returns {number} Minutes after midnight.
|
|
9
|
+
*/
|
|
3
10
|
export function clockMinutes(clockTime) {
|
|
4
11
|
const parts = clockTime.split(':');
|
|
5
12
|
return Number(parts[0]) * 60 + Number(parts[1]);
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Order departure times numerically.
|
|
5
|
+
*
|
|
6
|
+
* @param {number} a First departure in minutes.
|
|
7
|
+
* @param {number} b Second departure in minutes.
|
|
8
|
+
*
|
|
9
|
+
* @returns {number} Signed difference between the departures.
|
|
10
|
+
*/
|
|
3
11
|
export function compareDepartures(a, b) {
|
|
4
12
|
return a - b;
|
|
5
13
|
}
|
|
@@ -1,5 +1,16 @@
|
|
|
1
|
-
import * as createMeshApi from '../rendering/createMesh.js';
|
|
2
|
-
|
|
1
|
+
import * as createMeshApi from '../rendering/createMesh.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Create a traffic mesh and attach its feature ranges for picking.
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} state Traffic layer state.
|
|
7
|
+
* @param {Object} data Mesh geometry data.
|
|
8
|
+
* @param {Array} featureFaces Face ranges for picking.
|
|
9
|
+
* @param {Object} material Mesh material options.
|
|
10
|
+
* @param {number} [usage=0] Additional GPU buffer usage flags.
|
|
11
|
+
*
|
|
12
|
+
* @returns {Object} The created mesh.
|
|
13
|
+
*/
|
|
3
14
|
export function createTrafficMesh(state, data, featureFaces, material, usage = 0) {
|
|
4
15
|
const result = createMeshApi.createMesh(state.layer, data, material, usage);
|
|
5
16
|
result.extras.featureFaces = featureFaces;
|
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
import { highlightedFeatureByLayer } from '../weakmaps/highlightedFeatureByLayer.js';
|
|
2
|
-
import { hoveredFeatureByLayer } from '../weakmaps/hoveredFeatureByLayer.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
import { highlightedFeatureByLayer } from '../weakmaps/highlightedFeatureByLayer.js';
|
|
2
|
+
import { hoveredFeatureByLayer } from '../weakmaps/hoveredFeatureByLayer.js';
|
|
3
|
+
import * as disposeMesh from '../rendering/disposeMesh.js';
|
|
4
|
+
import * as setHighlight from '../picking/setHighlight.js';
|
|
5
|
+
import * as showFeature from '../picking/showFeature.js';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Dispose a traffic mesh, clearing the layer's highlight and tooltip if they reference it.
|
|
9
|
+
*
|
|
10
|
+
* @param {Object} state Traffic layer state.
|
|
11
|
+
* @param {Object|null} object Mesh to dispose, if present.
|
|
12
|
+
*/
|
|
13
|
+
export function disposeTrafficObject(state, object) {
|
|
11
14
|
if (!object) return;
|
|
12
15
|
if (highlightedFeatureByLayer.get(state.layer)?.mesh === object) {
|
|
13
16
|
setHighlight.setHighlight(state.layer, null);
|
|
@@ -2,7 +2,11 @@ import { trafficRouteMaterial } from '../globals/trafficRouteMaterial.js';
|
|
|
2
2
|
import { routeGeometry } from '../geometry/routeGeometry.js';
|
|
3
3
|
import { createTrafficMesh } from './createTrafficMesh.js';
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Create the optional route outline mesh from the current traffic lanes.
|
|
7
|
+
*
|
|
8
|
+
* @param {Object} state Traffic layer state.
|
|
9
|
+
*/
|
|
6
10
|
export function drawTrafficRoute(state) {
|
|
7
11
|
state.route = createTrafficMesh(state, routeGeometry(state.lanes),
|
|
8
12
|
/* alloc */ [], trafficRouteMaterial);
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Record and log a traffic error and expose it in the layer status.
|
|
3
|
+
*
|
|
4
|
+
* @param {Object} state Traffic layer state.
|
|
5
|
+
* @param {Error} error Error to report.
|
|
6
|
+
*/
|
|
1
7
|
export function failTraffic(state, error) {
|
|
2
8
|
state.error = error;
|
|
3
9
|
state.status.textContent = `${state.vehicle}: Error: ${error.message}`;
|
|
@@ -1,5 +1,12 @@
|
|
|
1
|
-
import { failTraffic } from './failTraffic.js';
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { failTraffic } from './failTraffic.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Report traffic loading errors unless the request was cancelled.
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} state Traffic layer state.
|
|
7
|
+
* @param {AbortSignal} signal Signal for the lane request.
|
|
8
|
+
* @param {Error} error Loading failure.
|
|
9
|
+
*/
|
|
10
|
+
export function failedTrafficLoad(state, signal, error) {
|
|
4
11
|
if (!signal.aborted && error.name !== 'AbortError') failTraffic(state, error);
|
|
5
12
|
}
|
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
import { trafficEmptyList } from '../globals/trafficEmptyList.js';
|
|
2
|
+
|
|
2
3
|
// GeoJSON (Multi)LineStrings become lanes ({latlngs, properties, elevation?}); prepare() adds `points` ([x, z, ground]),
|
|
3
4
|
// `lengths` and `length` in layer-local metres.
|
|
4
5
|
|
|
5
6
|
|
|
6
7
|
|
|
8
|
+
/**
|
|
9
|
+
* Convert GeoJSON line and multiline features to lanes, preserving their properties and elevation.
|
|
10
|
+
*
|
|
11
|
+
* @param {Object} collection GeoJSON feature collection.
|
|
12
|
+
*
|
|
13
|
+
* @returns {Array} Lanes with latitude-longitude points and feature properties.
|
|
14
|
+
*/
|
|
7
15
|
export function toLanes({ features = trafficEmptyList }) {
|
|
8
16
|
const lanes = /* alloc */ [];
|
|
9
17
|
let geometry, properties, lines, line, latlngs, lng, lat, i;
|
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Load time-dependent lanes from a JS module or fetch and cache a static GeoJSON response.
|
|
3
|
+
*
|
|
4
|
+
* @param {Object} state Traffic layer state.
|
|
5
|
+
* @param {Date} time Current simulation time.
|
|
6
|
+
* @param {AbortSignal} signal Signal for cancelling the request.
|
|
7
|
+
*
|
|
8
|
+
* @returns {Promise<Object>} The loaded GeoJSON data.
|
|
9
|
+
*
|
|
10
|
+
* @throws {Error} If the static data request returns a non-success status.
|
|
11
|
+
*/
|
|
1
12
|
export async function fetchTrafficLanes(state, time, signal) {
|
|
2
13
|
const href = /* alloc */ new URL(state.url, document.baseURI).href;
|
|
3
14
|
if (/\.m?js(?:[?#]|$)/i.test(state.url)) return (await import(href)).default(time, state.layer, signal);
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { rootByLayer } from '../weakmaps/rootByLayer.js';
|
|
2
|
-
|
|
3
2
|
import { readyTerrainOf } from '../terrain/readyTerrainOf.js';
|
|
4
3
|
import { mapElevationOf } from '../terrain/mapElevationOf.js';
|
|
5
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Update lane point heights from ready terrain or explicit elevations and invalidate GPU lane data.
|
|
7
|
+
*
|
|
8
|
+
* @param {Object} state Traffic layer state.
|
|
9
|
+
*/
|
|
6
10
|
export function groundTraffic(state) {
|
|
7
11
|
const { layer, lanes } = state;
|
|
8
12
|
const terrain = readyTerrainOf(layer._map);
|
|
@@ -4,24 +4,9 @@ import { trafficEmptyOptions } from '../globals/trafficEmptyOptions.js';
|
|
|
4
4
|
import { vehicles } from '../globals/vehicles.js';
|
|
5
5
|
import { trafficShader } from '../globals/trafficShader.js';
|
|
6
6
|
import { trafficByLayer } from '../weakmaps/trafficByLayer.js';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Vehicles moving along GeoJSON lanes; a compute pass places them on the GPU every frame.
|
|
11
|
-
* Source options:
|
|
12
|
-
* - `url`: GeoJSON (Multi)LineStrings, or a JS module whose default export `(time, layer, signal)` returns them (time-dependent data);
|
|
13
|
-
* - `vehicle`: 'car' (default), 'boat', 'bus', 'tram', 'metro', 'bicycle' or 'pedestrian'; `side`: offset right of the lane centreline in metres (vehicle default);
|
|
14
|
-
* - `speed`: m/s of `flow` lanes; `outline`: draw the lanes.
|
|
15
|
-
* Lane properties: `flow` (vehicles/h) or `timetable` (see scheduledTrips.js), optional fixed `elevation`
|
|
16
|
-
* in metres, `name`/`description` for the default tooltip. The status line (count and vehicle type) sits under the layer's entry in the layers control.
|
|
17
|
-
* L.Control.Time on the same map drives the time; without one, vehicles run live.
|
|
18
|
-
*/
|
|
19
7
|
import { build } from '../geometry/buildGeometryParts.js';
|
|
20
8
|
import { init3D } from '../scene/init3D.js';
|
|
21
9
|
import { tooltip } from './trafficTooltip.js';
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
10
|
import { addTraffic } from './addTraffic.js';
|
|
26
11
|
import { placeTraffic } from './placeTraffic.js';
|
|
27
12
|
import { removeTraffic } from './removeTraffic.js';
|
|
@@ -30,6 +15,23 @@ import { tickTraffic } from './tickTraffic.js';
|
|
|
30
15
|
import { updateTraffic } from './updateTraffic.js';
|
|
31
16
|
import { updateTrafficTerrain } from './updateTrafficTerrain.js';
|
|
32
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Vehicles moving along GeoJSON lanes; a compute pass places them on the GPU every frame.
|
|
20
|
+
* Source options:
|
|
21
|
+
* - `url`: GeoJSON (Multi)LineStrings, or a JS module whose default export `(time, layer, signal)` returns them (time-dependent data);
|
|
22
|
+
* - `vehicle`: 'car' (default), 'boat', 'bus', 'tram', 'metro', 'bicycle' or 'pedestrian'; `side`: offset right of the lane centreline in metres (vehicle default);
|
|
23
|
+
* - `speed`: m/s of `flow` lanes; `outline`: draw the lanes.
|
|
24
|
+
* Lane properties: `flow` (vehicles/h) or `timetable` (see scheduledTrips.js), optional fixed `elevation`
|
|
25
|
+
* in metres, `name`/`description` for the default tooltip. The status line (count and vehicle type) sits under the layer's entry in the layers control.
|
|
26
|
+
* L.Control.Time on the same map drives the time; without one, vehicles run live.
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Initialize a traffic layer's model, GPU inputs, status and lifecycle handlers.
|
|
31
|
+
*
|
|
32
|
+
* @param {L.Layer} layer Traffic layer.
|
|
33
|
+
* @param {Object} [options] Source URL, vehicle, lane offset, outline and other layer options.
|
|
34
|
+
*/
|
|
33
35
|
export function initTraffic(layer, { url, vehicle = 'car', side, outline, speed: velocity = sharedSpeed, ...options } = trafficEmptyOptions) {
|
|
34
36
|
const { model, lights, side: defaultSide } = vehicles[vehicle];
|
|
35
37
|
side ??= defaultSide;
|
|
@@ -3,6 +3,11 @@ import { fetchTrafficLanes } from './fetchTrafficLanes.js';
|
|
|
3
3
|
import { loadedTrafficLanes } from './loadedTrafficLanes.js';
|
|
4
4
|
import { failedTrafficLoad } from './failedTrafficLoad.js';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Cancel the previous lane request and load lanes for the current valid simulation time.
|
|
8
|
+
*
|
|
9
|
+
* @param {Object} state Traffic layer state.
|
|
10
|
+
*/
|
|
6
11
|
export function loadTraffic(state) {
|
|
7
12
|
const { time } = trafficNow(state);
|
|
8
13
|
if (!Number.isFinite(time?.getTime())) return;
|
|
@@ -1,7 +1,14 @@
|
|
|
1
|
-
import { toLanes } from './featuresToTrafficLanes.js';
|
|
2
|
-
import { prepareTraffic } from './prepareTraffic.js';
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { toLanes } from './featuresToTrafficLanes.js';
|
|
2
|
+
import { prepareTraffic } from './prepareTraffic.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Apply loaded lanes unless cancelled or detached, preparing new data and restarting traffic updates.
|
|
6
|
+
*
|
|
7
|
+
* @param {Object} state Traffic layer state.
|
|
8
|
+
* @param {AbortSignal} signal Signal for the completed request.
|
|
9
|
+
* @param {Object} data Loaded GeoJSON data.
|
|
10
|
+
*/
|
|
11
|
+
export function loadedTrafficLanes(state, signal, data) {
|
|
5
12
|
if (signal.aborted || !state.layer._map) return;
|
|
6
13
|
state.error = null;
|
|
7
14
|
if (data === state.loaded) {
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import { along } from '../geometry/interpolateRoute.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Interpolate a trip's current position along its looping lane and apply the lateral offset.
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} state Traffic layer state.
|
|
7
|
+
* @param {Object} trip Trip with lane, distance and speed.
|
|
8
|
+
* @param {Object} target Reusable output position.
|
|
9
|
+
*
|
|
10
|
+
* @returns {Object} Position and direction along the lane.
|
|
11
|
+
*/
|
|
3
12
|
export function locateTraffic(state, trip, target) {
|
|
4
13
|
const { points, lengths, length } = trip.lane;
|
|
5
14
|
let distance = trip.distance + state.elapsed * trip.speed;
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dispatch the GPU traffic pose computation for the elapsed time and mark CPU geometry stale.
|
|
3
|
+
*
|
|
4
|
+
* @param {Object} state Traffic layer state.
|
|
5
|
+
* @param {number} seconds Seconds elapsed since the trip positions were rebased.
|
|
6
|
+
*/
|
|
1
7
|
export function moveTraffic(state, seconds) {
|
|
2
8
|
const { device } = state.gpu;
|
|
3
9
|
state.paramFloats[0] = state.elapsed = seconds;
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { locateTraffic } from './locateTraffic.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Refresh stale CPU traffic positions and normals from the current trip poses.
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} state Traffic layer state.
|
|
7
|
+
*/
|
|
3
8
|
export function placeTraffic(state) {
|
|
4
9
|
if (!state.mesh || !state.stale) return;
|
|
5
10
|
state.stale = false;
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { locationByLayer } from '../weakmaps/locationByLayer.js';
|
|
2
|
-
|
|
3
2
|
import { radians } from '../globals/radians.js';
|
|
4
3
|
import { L } from '../globals/L.js';
|
|
5
|
-
|
|
6
|
-
|
|
7
4
|
import { disposeTrafficObject } from './disposeTrafficObject.js';
|
|
8
5
|
import { groundTraffic } from './groundTraffic.js';
|
|
9
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Project lane coordinates to local metres, compute distances and heights, and invalidate old route geometry.
|
|
9
|
+
*
|
|
10
|
+
* @param {Object} state Traffic layer state.
|
|
11
|
+
*/
|
|
10
12
|
export function prepareTraffic(state) {
|
|
11
13
|
const { layer, lanes } = state;
|
|
12
14
|
const crs = layer._map.options.crs, origin = crs.project(locationByLayer.get(layer));
|