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
|
@@ -2,6 +2,16 @@ import { decodeModel } from './decodeModel.js';
|
|
|
2
2
|
import { loadModelResources } from './loadModelResources.js';
|
|
3
3
|
import { prepareModelGeometry } from './prepareModelGeometry.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Fetch a static model and prepare its images and geometry for transfer from a worker.
|
|
7
|
+
*
|
|
8
|
+
* @param {string} url Model URL.
|
|
9
|
+
*
|
|
10
|
+
* @returns {Promise<Object>} Prepared description, images and transferables.
|
|
11
|
+
*
|
|
12
|
+
* @throws {Error} If the model response is not successful.
|
|
13
|
+
* @throws {Error} If the glTF scene is missing.
|
|
14
|
+
*/
|
|
5
15
|
export async function prepareModel(url) {
|
|
6
16
|
const response = await fetch(url);
|
|
7
17
|
if (!response.ok) throw /* alloc */ new Error(`Unable to load model: HTTP ${response.status}`);
|
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import { geometryEmpty } from '../globals/geometryEmpty.js';
|
|
2
2
|
import { prepareModelPrimitive } from './prepareModelPrimitive.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Prepare geometry for meshes reachable from the scene and collect their buffers.
|
|
6
|
+
*
|
|
7
|
+
* @param {Object} description Decoded glTF document with loaded buffers.
|
|
8
|
+
* @param {Object} scene glTF scene containing root node indices.
|
|
9
|
+
*
|
|
10
|
+
* @returns {Array<ArrayBuffer>} Unique geometry buffers to transfer.
|
|
11
|
+
*
|
|
12
|
+
* @throws {Error} If a referenced node is invalid.
|
|
13
|
+
*/
|
|
4
14
|
export function prepareModelGeometry(description, scene) {
|
|
5
15
|
const pending = scene.nodes.slice(), visited = /* alloc */ new Set();
|
|
6
16
|
const meshes = /* alloc */ new Set(), transfers = /* alloc */ new Set();
|
|
@@ -2,6 +2,14 @@ import { readModelAttributes } from './readModelAttributes.js';
|
|
|
2
2
|
import { readModelIndices } from './readModelIndices.js';
|
|
3
3
|
import { vertexNormals } from '../geometry/vertexNormals.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Decode primitive attributes and indices, generating normals when absent.
|
|
7
|
+
*
|
|
8
|
+
* @param {Object} description Decoded glTF document with loaded buffers.
|
|
9
|
+
* @param {Object} primitive glTF mesh primitive to prepare.
|
|
10
|
+
*
|
|
11
|
+
* @returns {Object} Prepared attributes, also stored on the primitive.
|
|
12
|
+
*/
|
|
5
13
|
export function prepareModelPrimitive(description, primitive) {
|
|
6
14
|
const { attributes, vertexCount } = readModelAttributes(description, primitive);
|
|
7
15
|
readModelIndices(description, primitive, attributes, vertexCount);
|
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
import { types } from '../globals/types.js';
|
|
2
2
|
import { sizes } from '../globals/sizes.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
3
|
import { readAccessorValues } from './readAccessorValues.js';
|
|
6
4
|
import { readSparseAccessor } from './readSparseAccessor.js';
|
|
7
5
|
import { normalizeAccessor } from './normalizeAccessor.js';
|
|
8
6
|
|
|
9
|
-
/**
|
|
10
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Decode packed, interleaved, normalized or sparse glTF accessor data.
|
|
9
|
+
*
|
|
10
|
+
* @param {Object} description Decoded glTF document with loaded buffers.
|
|
11
|
+
* @param {number} index Accessor index.
|
|
12
|
+
*
|
|
13
|
+
* @returns {Object} Component data and size, plus original integer data when applicable.
|
|
14
|
+
*
|
|
15
|
+
* @throws {Error} If the accessor component type, shape or count is invalid.
|
|
16
|
+
*/
|
|
11
17
|
export function readAccessor(description, index) {
|
|
12
18
|
const spec = description.accessors[index], Type = types[spec.componentType], size = sizes[spec.type];
|
|
13
19
|
if (!Type || !size || !Number.isInteger(spec.count) || spec.count < 0) {
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read one glTF accessor component from a data view using little-endian byte order.
|
|
3
|
+
*
|
|
4
|
+
* @param {DataView} input View containing the component.
|
|
5
|
+
* @param {TypedArrayConstructor} Type Component array constructor.
|
|
6
|
+
* @param {number} at Byte offset in the view.
|
|
7
|
+
*
|
|
8
|
+
* @returns {number} Decoded component.
|
|
9
|
+
*/
|
|
1
10
|
export function readAccessorValue(input, Type, at) {
|
|
2
11
|
return Type === Int8Array ? input.getInt8(at) :
|
|
3
12
|
Type === Uint8Array ? input.getUint8(at) :
|
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
import { readAccessorValue } from './readAccessorValue.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Copy packed or strided accessor components into an output array, optionally at sparse indices.
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} description Decoded glTF document with loaded buffers.
|
|
7
|
+
* @param {TypedArrayConstructor} Type Component array constructor.
|
|
8
|
+
* @param {number} size Components per element.
|
|
9
|
+
* @param {TypedArray} data Destination array.
|
|
10
|
+
* @param {number} accessorCount Number of elements in the destination accessor.
|
|
11
|
+
* @param {TypedArray|null} indices Sparse destination indices, or null for sequential output.
|
|
12
|
+
* @param {number} viewIndex Index of the source buffer view.
|
|
13
|
+
* @param {number} offset Byte offset within the buffer view.
|
|
14
|
+
* @param {number} count Number of source elements.
|
|
15
|
+
* @param {number} stride Byte stride between source elements, or zero for packed data.
|
|
16
|
+
*
|
|
17
|
+
* @throws {Error} If data falls outside the buffer view.
|
|
18
|
+
* @throws {Error} If a sparse index is invalid.
|
|
19
|
+
*/
|
|
3
20
|
export function readAccessorValues(description, Type, size, data, accessorCount, indices, viewIndex, offset, count, stride) {
|
|
4
21
|
const view = description.bufferViews[viewIndex], bytes = Type.BYTES_PER_ELEMENT;
|
|
5
22
|
const buffer = description.buffers[view.buffer].binary;
|
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
import { geometrySemantics } from '../globals/geometrySemantics.js';
|
|
2
2
|
import { readAccessor } from './readAccessor.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Read supported primitive attributes and validate their vertex counts.
|
|
6
|
+
*
|
|
7
|
+
* @param {Object} description Decoded glTF document.
|
|
8
|
+
* @param {Object} primitive glTF mesh primitive.
|
|
9
|
+
*
|
|
10
|
+
* @returns {Object} Attribute map and vertex count.
|
|
11
|
+
*
|
|
12
|
+
* @throws {Error} If positions are missing.
|
|
13
|
+
* @throws {Error} If the position size or vertex count is invalid.
|
|
14
|
+
* @throws {Error} If attribute vertex counts differ.
|
|
15
|
+
*/
|
|
4
16
|
export function readModelAttributes(description, primitive) {
|
|
5
17
|
const attributes = /* alloc */ {};
|
|
6
18
|
let semantic, name;
|
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
import { readAccessor } from './readAccessor.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Read and validate triangle indices, or validate an unindexed triangle list.
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} description Decoded glTF document.
|
|
7
|
+
* @param {Object} primitive glTF mesh primitive.
|
|
8
|
+
* @param {Object} attributes Destination attribute map.
|
|
9
|
+
* @param {number} vertexCount Number of vertices.
|
|
10
|
+
*
|
|
11
|
+
* @throws {Error} If the index type, size or count is invalid.
|
|
12
|
+
* @throws {Error} If an index is outside the vertex range.
|
|
13
|
+
* @throws {Error} If the unindexed triangle list is incomplete.
|
|
14
|
+
*/
|
|
3
15
|
export function readModelIndices(description, primitive, attributes, vertexCount) {
|
|
4
16
|
if (primitive.indices !== undefined) {
|
|
5
17
|
const index = readAccessor(description, primitive.indices);
|
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
import { types } from '../globals/types.js';
|
|
2
2
|
import { readAccessorValues } from './readAccessorValues.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Apply sparse glTF accessor values to an existing component array.
|
|
6
|
+
*
|
|
7
|
+
* @param {Object} description Decoded glTF document with loaded buffers.
|
|
8
|
+
* @param {Object} spec glTF accessor specification.
|
|
9
|
+
* @param {TypedArrayConstructor} Type Component array constructor.
|
|
10
|
+
* @param {number} size Components per element.
|
|
11
|
+
* @param {TypedArray} data Destination array to update.
|
|
12
|
+
*
|
|
13
|
+
* @throws {Error} If the sparse index type is invalid.
|
|
14
|
+
* @throws {Error} If the sparse index count or range is invalid.
|
|
15
|
+
*/
|
|
4
16
|
export function readSparseAccessor(description, spec, Type, size, data) {
|
|
5
17
|
const sparse = spec.sparse, Index = types[sparse.indices.componentType];
|
|
6
18
|
if (Index !== Uint8Array && Index !== Uint16Array && Index !== Uint32Array) {
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Destroy geometry buffers and clear pipeline caches tracked by a model context.
|
|
3
|
+
*
|
|
4
|
+
* @param {Object} context Model context containing allocated resources.
|
|
5
|
+
*/
|
|
1
6
|
export function releaseModelResources(context) {
|
|
2
7
|
let resource, attribute;
|
|
3
8
|
for (resource of context.resources) {
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Mapbox Vector Tiles
|
|
2
|
+
|
|
3
|
+
[Source guide](../README.md) | [Project README](../../README.md)
|
|
4
|
+
|
|
5
|
+
Decodes uncompressed MVT/PBF data into tile-local layers and provides polygon
|
|
6
|
+
ring triangulation. Large integer values are preserved as decimal strings.
|
|
7
|
+
|
|
8
|
+
## Tile-space decoding
|
|
9
|
+
|
|
10
|
+
```mermaid
|
|
11
|
+
flowchart LR
|
|
12
|
+
Bytes["Uncompressed MVT bytes"] --> PBF["Read PBF fields / layers"]
|
|
13
|
+
PBF --> Features["Tile-local features"]
|
|
14
|
+
Features --> Rings["Group polygon rings"]
|
|
15
|
+
Rings --> Triangulate["Shared triangulator"]
|
|
16
|
+
Triangulate -->|"recognized failure"| Fallback["Even-odd tessellation"]
|
|
17
|
+
Features --> Presentation["Style + project + display"]
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Duplicate layer names are rejected. Integers outside JavaScript's safe range
|
|
21
|
+
are decimal strings, including possible IDs and properties. Presentation
|
|
22
|
+
belongs to [vector-tiles](../vector-tiles/README.md).
|
|
23
|
+
|
|
24
|
+
- [decodeVectorTile.js](./decodeVectorTile.js): decode a tile.
|
|
25
|
+
- [readMvtLayer.js](./readMvtLayer.js): read a layer from the PBF stream.
|
|
26
|
+
- [triangulateVectorRings.js](./triangulateVectorRings.js): tessellate polygon rings.
|
|
27
|
+
|
|
28
|
+
Related: [vector-tiles](../vector-tiles/README.md), [vector-style](../vector-style/README.md).
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { mvtEdgeX } from './mvtEdgeX.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Add vertical levels where non-horizontal polygon edges cross.
|
|
5
|
+
*
|
|
6
|
+
* @param {Array} edges Ordered edge endpoints.
|
|
7
|
+
* @param {Set<number>} levels Destination set of vertical levels.
|
|
8
|
+
*/
|
|
3
9
|
export function addMvtCrossings(edges, levels) {
|
|
4
10
|
let i = 0, j, a, b, top, bottom, start, end;
|
|
5
11
|
for (; i < edges.length; i++) {
|
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
import { mvtEdgeX } from './mvtEdgeX.js';
|
|
2
2
|
import { sortMvtActiveEdges } from './sortMvtActiveEdges.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Tessellate one vertical band using even-odd pairs of polygon edges.
|
|
6
|
+
*
|
|
7
|
+
* @param {Array} edges Polygon edges ordered by endpoint y.
|
|
8
|
+
* @param {number} top Band's upper y.
|
|
9
|
+
* @param {number} bottom Band's lower y.
|
|
10
|
+
* @param {Array} triangles Destination triangles.
|
|
11
|
+
*
|
|
12
|
+
* @throws {Error} If the band has an odd number of active edges.
|
|
13
|
+
* @throws {Error} If paired edges cross inside the band.
|
|
14
|
+
*/
|
|
4
15
|
export function appendMvtBandTriangles(edges, top, bottom, triangles) {
|
|
5
16
|
const mid = (top + bottom) / 2, active = /* alloc */ [];
|
|
6
17
|
let edge, i = 0, leftTop, leftBottom, rightTop, rightBottom;
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Decode delta-encoded MVT coordinates into the current path.
|
|
3
|
+
*
|
|
4
|
+
* @param {Array<number>} commands Geometry command integers.
|
|
5
|
+
* @param {Object} state Mutable cursor, coordinate and path state.
|
|
6
|
+
* @param {number} count Number of coordinate pairs.
|
|
7
|
+
*
|
|
8
|
+
* @throws {Error} If a coordinate integer exceeds the MVT 32-bit range.
|
|
9
|
+
*/
|
|
1
10
|
export function appendMvtCoordinates(commands, state, count) {
|
|
2
11
|
let i = 0, dx, dy;
|
|
3
12
|
for (; i < count; i++) {
|
|
@@ -2,6 +2,16 @@ import { tessellateVectorRings } from './tessellateVectorRings.js';
|
|
|
2
2
|
import { triangulate } from '../triangulation/triangulate.js';
|
|
3
3
|
import { isMvtFallbackError } from './isMvtFallbackError.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Triangulate a polygon, falling back to even-odd tessellation for recognized errors.
|
|
7
|
+
*
|
|
8
|
+
* @param {Array} rings Closed tile-coordinate rings.
|
|
9
|
+
* @param {Array} paths Rings converted to point objects.
|
|
10
|
+
* @param {Array} vertices Flattened path vertices.
|
|
11
|
+
* @param {Array} triangles Destination triangle coordinates.
|
|
12
|
+
*
|
|
13
|
+
* @throws {Error} If triangulation fails with an error not eligible for fallback.
|
|
14
|
+
*/
|
|
5
15
|
export function appendMvtPolygonTriangles(rings, paths, vertices, triangles) {
|
|
6
16
|
let indices, index, triangle, points, i = 0;
|
|
7
17
|
try {
|
package/src/mvt/beginMvtPath.js
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
import { finishMvtPath } from './finishMvtPath.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Finish the previous geometry path and begin a new MoveTo path.
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} state Mutable geometry decoding state.
|
|
7
|
+
* @param {Array} paths Destination paths.
|
|
8
|
+
* @param {number} type MVT geometry type.
|
|
9
|
+
* @param {number} count MoveTo coordinate count.
|
|
10
|
+
*
|
|
11
|
+
* @throws {Error} If a non-point MoveTo count is not one.
|
|
12
|
+
*/
|
|
3
13
|
export function beginMvtPath(state, paths, type, count) {
|
|
4
14
|
finishMvtPath(state.path, type, state.closed);
|
|
5
15
|
if (type !== 1 && count !== 1) throw /* alloc */ new Error('Invalid MVT MoveTo');
|
package/src/mvt/closeMvtPath.js
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Close a valid polygon path by repeating its first point.
|
|
3
|
+
*
|
|
4
|
+
* @param {Object} state Mutable geometry decoding state.
|
|
5
|
+
* @param {number} type MVT geometry type.
|
|
6
|
+
* @param {number} count ClosePath command count.
|
|
7
|
+
*
|
|
8
|
+
* @throws {Error} If the close command or path is invalid.
|
|
9
|
+
*/
|
|
1
10
|
export function closeMvtPath(state, type, count) {
|
|
2
11
|
if (type !== 3 || count !== 1 || !state.path || state.closed || state.path.length < 3) {
|
|
3
12
|
throw /* alloc */ new Error('Invalid MVT ClosePath');
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
import { finiteMvtCoordinate } from './finiteMvtCoordinate.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Collect non-horizontal edges and vertical levels from closed MVT rings.
|
|
5
|
+
*
|
|
6
|
+
* @param {Array} rings Closed polygon rings.
|
|
7
|
+
* @param {Array} edges Destination edges.
|
|
8
|
+
* @param {Set<number>} levels Destination vertical levels.
|
|
9
|
+
*
|
|
10
|
+
* @throws {Error} If a ring is not closed or is too short.
|
|
11
|
+
* @throws {Error} If a ring coordinate is non-finite.
|
|
12
|
+
*/
|
|
3
13
|
export function collectMvtEdges(rings, edges, levels) {
|
|
4
14
|
let ring, i, a, b;
|
|
5
15
|
for (ring of rings) {
|
|
@@ -8,6 +8,13 @@ import { skipMvtField } from './skipMvtField.js';
|
|
|
8
8
|
* Decode an uncompressed MVT ArrayBuffer/Uint8Array into tile-local layers.
|
|
9
9
|
* Feature types: 0 unknown, 1 points, 2 lines, 3 polygon rings (including holes).
|
|
10
10
|
* Integers outside JavaScript's safe range are returned as decimal strings.
|
|
11
|
+
*
|
|
12
|
+
* @param {ArrayBuffer|Uint8Array} buffer Uncompressed tile data.
|
|
13
|
+
*
|
|
14
|
+
* @returns {Array<Object>} Decoded tile layers.
|
|
15
|
+
*
|
|
16
|
+
* @throws {TypeError} If the input is not a supported byte buffer.
|
|
17
|
+
* @throws {Error} If layer names are duplicated.
|
|
11
18
|
*/
|
|
12
19
|
export function decodeVectorTile(buffer) {
|
|
13
20
|
if (!(buffer instanceof ArrayBuffer) && !(buffer instanceof Uint8Array)) {
|
package/src/mvt/expectMvtWire.js
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validate the protobuf wire type for an MVT field.
|
|
3
|
+
*
|
|
4
|
+
* @param {number} wire Actual wire type.
|
|
5
|
+
* @param {number} expected Expected wire type.
|
|
6
|
+
*
|
|
7
|
+
* @throws {Error} If the types differ.
|
|
8
|
+
*/
|
|
1
9
|
export function expectMvtWire(wire, expected) {
|
|
2
10
|
if (wire !== expected) throw /* alloc */ new Error('Invalid MVT wire type');
|
|
3
11
|
}
|
package/src/mvt/finishMvtPath.js
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validate a completed MVT line or polygon path.
|
|
3
|
+
*
|
|
4
|
+
* @param {Array|null} path Current path, if any.
|
|
5
|
+
* @param {number} type MVT geometry type.
|
|
6
|
+
* @param {boolean} closed Whether the polygon path is closed.
|
|
7
|
+
*
|
|
8
|
+
* @throws {Error} If a line is too short or a polygon path is open.
|
|
9
|
+
*/
|
|
1
10
|
export function finishMvtPath(path, type, closed) {
|
|
2
11
|
if (path && (type === 2 && path.length < 2 || type === 3 && !closed)) {
|
|
3
12
|
throw /* alloc */ new Error('Incomplete MVT geometry');
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check every component of a tile coordinate for finiteness.
|
|
3
|
+
*
|
|
4
|
+
* @param {Array<number>} point Tile coordinate.
|
|
5
|
+
*
|
|
6
|
+
* @returns {boolean} Whether all components are finite.
|
|
7
|
+
*/
|
|
1
8
|
export function finiteMvtCoordinate(point) {
|
|
2
9
|
let i = 0;
|
|
3
10
|
for (; i < point.length; i++) {
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
import { finiteMvtCoordinate } from './finiteMvtCoordinate.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Group closed MVT rings into polygons according to exterior winding.
|
|
5
|
+
*
|
|
6
|
+
* @param {Array} rings Closed tile-coordinate rings.
|
|
7
|
+
*
|
|
8
|
+
* @returns {Array} Polygons containing exterior and following hole rings.
|
|
9
|
+
*
|
|
10
|
+
* @throws {Error} If a ring is not closed or is too short.
|
|
11
|
+
* @throws {Error} If a ring coordinate is non-finite.
|
|
12
|
+
*/
|
|
3
13
|
export function groupMvtPolygons(rings) {
|
|
4
14
|
const polygons = /* alloc */ [];
|
|
5
15
|
let polygon, exteriorSign, ring, area, i;
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Identify triangulation failures eligible for MVT tessellation fallback.
|
|
3
|
+
*
|
|
4
|
+
* @param {Error} error Triangulation error.
|
|
5
|
+
*
|
|
6
|
+
* @returns {boolean} Whether fallback is allowed.
|
|
7
|
+
*/
|
|
1
8
|
export function isMvtFallbackError(error) {
|
|
2
9
|
return error.message === 'Polygon triangulation area mismatch' ||
|
|
3
10
|
error.message === 'Degenerate polygon ring' ||
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stably merge two sorted active-edge ranges into a destination array.
|
|
3
|
+
*
|
|
4
|
+
* @param {Array<Object>} active Source active edges.
|
|
5
|
+
* @param {Array<Object>} sorted Destination array.
|
|
6
|
+
* @param {number} left Start of the first range.
|
|
7
|
+
* @param {number} mid Boundary between ranges.
|
|
8
|
+
* @param {number} right Exclusive end of the second range.
|
|
9
|
+
*/
|
|
1
10
|
export function mergeMvtActiveEdges(active, sorted, left, mid, right) {
|
|
2
11
|
let i = left, j = mid, k = left;
|
|
3
12
|
while (i < mid && j < right) {
|
package/src/mvt/mvtEdgeX.js
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interpolate an edge's x coordinate at a given y.
|
|
3
|
+
*
|
|
4
|
+
* @param {Array<Array<number>>} edge Non-horizontal edge endpoints.
|
|
5
|
+
* @param {number} y Vertical coordinate.
|
|
6
|
+
*
|
|
7
|
+
* @returns {number} Interpolated x coordinate.
|
|
8
|
+
*/
|
|
1
9
|
export function mvtEdgeX(edge, y) {
|
|
2
10
|
return edge[0][0] + (y - edge[0][1]) *
|
|
3
11
|
(edge[1][0] - edge[0][0]) / (edge[1][1] - edge[0][1]);
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Flatten polygon paths into a vertex array.
|
|
3
|
+
*
|
|
4
|
+
* @param {Array<Array<Object>>} paths Polygon paths.
|
|
5
|
+
*
|
|
6
|
+
* @returns {Array<Object>} Flattened vertices.
|
|
7
|
+
*/
|
|
1
8
|
export function mvtPathsVertices(paths) {
|
|
2
9
|
const vertices = /* alloc */ [];
|
|
3
10
|
let path, point;
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert closed coordinate rings to point-object paths without duplicate closing vertices.
|
|
3
|
+
*
|
|
4
|
+
* @param {Array} rings Closed tile-coordinate rings.
|
|
5
|
+
*
|
|
6
|
+
* @returns {Array<Array<Object>>} Polygon point paths.
|
|
7
|
+
*/
|
|
1
8
|
export function mvtPolygonPaths(rings) {
|
|
2
9
|
const paths = /* alloc */ [];
|
|
3
10
|
let ring, i, path;
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert an MVT integer to a number when safe, otherwise to a decimal string.
|
|
3
|
+
*
|
|
4
|
+
* @param {bigint} value Integer value.
|
|
5
|
+
*
|
|
6
|
+
* @returns {number|string} Safely represented integer.
|
|
7
|
+
*/
|
|
1
8
|
export function numericMvtValue(value) {
|
|
2
9
|
return value >= BigInt(Number.MIN_SAFE_INTEGER) && value <= BigInt(Number.MAX_SAFE_INTEGER)
|
|
3
10
|
? Number(value) : value.toString();
|
|
@@ -7,6 +7,18 @@ import { readMvtNumber } from './readMvtNumber.js';
|
|
|
7
7
|
import { readMvtNumbers } from './readMvtNumbers.js';
|
|
8
8
|
import { skipMvtField } from './skipMvtField.js';
|
|
9
9
|
|
|
10
|
+
/**
|
|
11
|
+
* Decode an MVT feature's ID, property tags and geometry.
|
|
12
|
+
*
|
|
13
|
+
* @param {Object} reader Feature message reader.
|
|
14
|
+
* @param {Array<string>} keys Layer property keys.
|
|
15
|
+
* @param {Array} values Layer property values.
|
|
16
|
+
*
|
|
17
|
+
* @returns {Object} Decoded feature.
|
|
18
|
+
*
|
|
19
|
+
* @throws {Error} If feature tags or geometry type are invalid.
|
|
20
|
+
* @throws {Error} If a property index is outside the layer tables.
|
|
21
|
+
*/
|
|
10
22
|
export function readMvtFeature(reader, keys, values) {
|
|
11
23
|
let id, type = 0, field, wire, i = 0;
|
|
12
24
|
const tags = /* alloc */ [], commands = /* alloc */ [];
|
package/src/mvt/readMvtField.js
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import { readMvtNumber } from './readMvtNumber.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Read a protobuf field tag and split its field number and wire type.
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} reader MVT byte reader.
|
|
7
|
+
*
|
|
8
|
+
* @returns {Array<number>} Field number and wire type.
|
|
9
|
+
*
|
|
10
|
+
* @throws {Error} If the field number is invalid.
|
|
11
|
+
*/
|
|
3
12
|
export function readMvtField(reader) {
|
|
4
13
|
const tag = readMvtNumber(reader);
|
|
5
14
|
const field = Math.floor(tag / 8), wire = tag % 8;
|
|
@@ -3,6 +3,19 @@ import { appendMvtCoordinates } from './appendMvtCoordinates.js';
|
|
|
3
3
|
import { beginMvtPath } from './beginMvtPath.js';
|
|
4
4
|
import { closeMvtPath } from './closeMvtPath.js';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Decode MVT geometry commands into tile-coordinate paths.
|
|
8
|
+
*
|
|
9
|
+
* @param {Array<number>} commands Geometry command integers.
|
|
10
|
+
* @param {number} type MVT geometry type.
|
|
11
|
+
*
|
|
12
|
+
* @returns {Array} Decoded paths.
|
|
13
|
+
*
|
|
14
|
+
* @throws {Error} If a command or count is invalid.
|
|
15
|
+
* @throws {Error} If geometry command parameters are invalid or truncated.
|
|
16
|
+
* @throws {Error} If a LineTo is invalid for the current path.
|
|
17
|
+
* @throws {Error} If no geometry path was decoded.
|
|
18
|
+
*/
|
|
6
19
|
export function readMvtGeometry(commands, type) {
|
|
7
20
|
const paths = /* alloc */ [];
|
|
8
21
|
const state = /* alloc */ { x: 0, y: 0, path: null, closed: false, index: 0 };
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
import { takeMvtBytes } from './takeMvtBytes.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Read an unsigned protobuf varint as a bigint.
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} reader MVT byte reader.
|
|
7
|
+
*
|
|
8
|
+
* @returns {bigint} Decoded integer.
|
|
9
|
+
*
|
|
10
|
+
* @throws {Error} If the tenth byte exceeds the 64-bit range.
|
|
11
|
+
* @throws {Error} If the varint does not terminate within ten bytes.
|
|
12
|
+
*/
|
|
3
13
|
export function readMvtInteger(reader) {
|
|
4
14
|
let value = 0n, i = 0, byte;
|
|
5
15
|
for (; i < 10; i++) {
|
|
@@ -4,6 +4,15 @@ import { readMvtInteger } from './readMvtInteger.js';
|
|
|
4
4
|
import { readMvtString } from './readMvtString.js';
|
|
5
5
|
import { takeMvtBytes } from './takeMvtBytes.js';
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Decode a known MVT value field according to its protobuf type.
|
|
9
|
+
*
|
|
10
|
+
* @param {Object} reader MVT byte reader.
|
|
11
|
+
* @param {number} field Value field number.
|
|
12
|
+
* @param {number} wire Protobuf wire type.
|
|
13
|
+
*
|
|
14
|
+
* @returns {string|number|boolean} Decoded value.
|
|
15
|
+
*/
|
|
7
16
|
export function readMvtKnownValue(reader, field, wire) {
|
|
8
17
|
let offset, integer;
|
|
9
18
|
if (field === 1) return readMvtString(reader, wire);
|
package/src/mvt/readMvtLayer.js
CHANGED
|
@@ -7,6 +7,15 @@ import { readMvtString } from './readMvtString.js';
|
|
|
7
7
|
import { readMvtValue } from './readMvtValue.js';
|
|
8
8
|
import { skipMvtField } from './skipMvtField.js';
|
|
9
9
|
|
|
10
|
+
/**
|
|
11
|
+
* Decode an MVT layer and resolve its features against property tables.
|
|
12
|
+
*
|
|
13
|
+
* @param {Object} reader Layer message reader.
|
|
14
|
+
*
|
|
15
|
+
* @returns {Object} Layer name, extent and features.
|
|
16
|
+
*
|
|
17
|
+
* @throws {Error} If layer name, version or extent is invalid.
|
|
18
|
+
*/
|
|
10
19
|
export function readMvtLayer(reader) {
|
|
11
20
|
let name, version, extent = 4096, field, wire, value, i = 0;
|
|
12
21
|
const keys = /* alloc */ [], values = /* alloc */ [], features = /* alloc */ [];
|
|
@@ -3,6 +3,14 @@ import { expectMvtWire } from './expectMvtWire.js';
|
|
|
3
3
|
import { readMvtNumber } from './readMvtNumber.js';
|
|
4
4
|
import { takeMvtBytes } from './takeMvtBytes.js';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Read a length-delimited protobuf message into a bounded reader.
|
|
8
|
+
*
|
|
9
|
+
* @param {Object} reader Parent MVT byte reader.
|
|
10
|
+
* @param {number} wire Protobuf wire type.
|
|
11
|
+
*
|
|
12
|
+
* @returns {Object} Reader for the message bytes.
|
|
13
|
+
*/
|
|
6
14
|
export function readMvtMessage(reader, wire) {
|
|
7
15
|
expectMvtWire(wire, 2);
|
|
8
16
|
const size = readMvtNumber(reader), start = takeMvtBytes(reader, size);
|
package/src/mvt/readMvtNumber.js
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import { readMvtInteger } from './readMvtInteger.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Read a protobuf varint as a safe JavaScript number.
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} reader MVT byte reader.
|
|
7
|
+
*
|
|
8
|
+
* @returns {number} Decoded integer.
|
|
9
|
+
*
|
|
10
|
+
* @throws {Error} If the integer exceeds the safe numeric range.
|
|
11
|
+
*/
|
|
3
12
|
export function readMvtNumber(reader) {
|
|
4
13
|
const value = readMvtInteger(reader);
|
|
5
14
|
if (value > BigInt(Number.MAX_SAFE_INTEGER)) {
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import { readMvtMessage } from './readMvtMessage.js';
|
|
2
2
|
import { readMvtNumber } from './readMvtNumber.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Append packed or unpacked protobuf integers to a destination array.
|
|
6
|
+
*
|
|
7
|
+
* @param {Object} reader MVT byte reader.
|
|
8
|
+
* @param {number} wire Protobuf wire type.
|
|
9
|
+
* @param {Array<number>} target Destination array.
|
|
10
|
+
*/
|
|
4
11
|
export function readMvtNumbers(reader, wire, target) {
|
|
5
12
|
let packed;
|
|
6
13
|
if (wire === 0) target.push(readMvtNumber(reader));
|
package/src/mvt/readMvtString.js
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import { mvtTextDecoder } from '../globals/mvtTextDecoder.js';
|
|
2
2
|
import { readMvtMessage } from './readMvtMessage.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Decode a length-delimited UTF-8 string.
|
|
6
|
+
*
|
|
7
|
+
* @param {Object} reader MVT byte reader.
|
|
8
|
+
* @param {number} wire Protobuf wire type.
|
|
9
|
+
*
|
|
10
|
+
* @returns {string} Decoded string.
|
|
11
|
+
*/
|
|
4
12
|
export function readMvtString(reader, wire) {
|
|
5
13
|
return mvtTextDecoder.decode(readMvtMessage(reader, wire).bytes);
|
|
6
14
|
}
|