leaflet-city-mapper 0.0.2 → 0.0.3
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 +49 -3
- package/cucumber.mjs +1 -1
- package/dist/leaflet-city-mapper.js +3 -1
- package/dist/leaflet-city-mapper.js.map +4 -4
- package/package.json +2 -1
- package/src/archives/decodeDirectory.js +32 -0
- package/src/archives/decodeHeader.js +19 -0
- package/src/archives/getZxy.js +75 -0
- package/src/archives/loadDirectory.js +7 -0
- package/src/archives/tileId.js +19 -0
- package/src/archives/varint.js +15 -0
- package/src/camera/angles.js +6 -0
- package/src/camera/animationPoint.js +8 -0
- package/src/camera/cameraMapReady.js +8 -0
- package/src/camera/cancelCameraAnimation.js +11 -0
- package/src/camera/cleanupCameraMap.js +11 -0
- package/src/camera/constrainCameraToBounds.js +3 -0
- package/src/camera/displayPoint.js +3 -0
- package/src/camera/fitCameraBounds.js +48 -0
- package/src/camera/groundBounds.js +11 -0
- package/src/camera/initializeCameraMap.js +25 -0
- package/src/camera/mapAnimateCamera.js +17 -0
- package/src/camera/mapCamera.js +123 -0
- package/src/camera/mapContainerPointToLayerPoint.js +7 -0
- package/src/camera/mapGetBearing.js +1 -0
- package/src/camera/mapGetBounds.js +14 -0
- package/src/camera/mapGetBoundsCenterZoom.js +7 -0
- package/src/camera/mapGetBoundsZoom.js +14 -0
- package/src/camera/mapGetCenterLayerPoint.js +5 -0
- package/src/camera/mapGetPitch.js +1 -0
- package/src/camera/mapLayerPointToContainerPoint.js +7 -0
- package/src/camera/mapLimitCenter.js +12 -0
- package/src/camera/mapLimitOffset.js +10 -0
- package/src/camera/mapPanBy.js +9 -0
- package/src/camera/mapPanInside.js +14 -0
- package/src/camera/mapResetNorth.js +1 -0
- package/src/camera/mapResetNorthPitch.js +1 -0
- package/src/camera/mapSetBearing.js +1 -0
- package/src/camera/mapSetPitch.js +1 -0
- package/src/camera/mapSetPitchAndBearing.js +14 -0
- package/src/camera/mapSetZoomAround.js +11 -0
- package/src/camera/mapStopPitchBearingAnimation.js +6 -0
- package/src/camera/mapTryAnimatedPan.js +9 -0
- package/src/camera/mapUpdateCameraOverlays.js +7 -0
- package/src/camera/pointOf.js +3 -0
- package/src/camera/project.js +20 -0
- package/src/camera/runCameraAnimations.js +28 -0
- package/src/camera/scheduleCameraAnimation.js +8 -0
- package/src/camera/updateSky.js +16 -0
- package/src/camera/verticalGroundY.js +4 -0
- package/src/collision/collectMeshes.js +5 -0
- package/src/collision/collider.js +63 -0
- package/src/collision/intersectMeshes.js +133 -0
- package/src/collision/sortHits.js +23 -0
- package/src/constants/Compass.js +7 -0
- package/src/constants/ContainerResize.js +7 -0
- package/src/constants/HEIGHT.js +1 -0
- package/src/constants/PitchDrag.js +7 -0
- package/src/constants/ShiftRotate.js +7 -0
- package/src/constants/TILE_RADIUS.js +1 -0
- package/src/constants/TILE_SIZE.js +1 -0
- package/src/constants/TouchMode.js +6 -0
- package/src/constants/attachState.js +1 -0
- package/src/constants/cameraControlsState.js +1 -0
- package/src/constants/cityMapper.js +6 -0
- package/src/constants/dark.js +1 -0
- package/src/constants/elevationWGSL.js +27 -0
- package/src/constants/glass.js +1 -0
- package/src/constants/indexState.js +1 -0
- package/src/constants/mapCameraState.js +1 -0
- package/src/constants/nativeEventMaps.js +1 -0
- package/src/constants/nativeLayerState.js +1 -0
- package/src/constants/nativeMethodHandlers.js +31 -0
- package/src/constants/onMapChangeState.js +1 -0
- package/src/constants/onZoomAnimState.js +1 -0
- package/src/constants/parts.js +19 -0
- package/src/constants/pendingUpdates.js +1 -0
- package/src/constants/pumpState.js +1 -0
- package/src/constants/ringDirections.js +10 -0
- package/src/constants/roundProfile.js +1 -0
- package/src/constants/shirt.js +1 -0
- package/src/constants/skin.js +2 -0
- package/src/constants/trafficShader.js +49 -0
- package/src/constants/trousers.js +1 -0
- package/src/constants/tyre.js +1 -0
- package/src/constants/underEntryState.js +1 -0
- package/src/constants/vehicles.js +40 -0
- package/src/controls/acceptPitchDrag.js +4 -0
- package/src/controls/acceptRotateDrag.js +3 -0
- package/src/controls/adjustCameraDrag.js +10 -0
- package/src/controls/cameraControls.js +60 -0
- package/src/controls/cameraDragClick.js +9 -0
- package/src/controls/cameraDragContextMenu.js +8 -0
- package/src/controls/cameraDragDown.js +20 -0
- package/src/controls/cameraDragEnd.js +6 -0
- package/src/controls/cameraDragMove.js +23 -0
- package/src/controls/changeCameraTouch.js +14 -0
- package/src/controls/cleanupCameraTouch.js +24 -0
- package/src/controls/compassAddHooks.js +15 -0
- package/src/controls/compassOrientation.js +6 -0
- package/src/controls/compassRemoveHooks.js +5 -0
- package/src/controls/containerResizeAddHooks.js +8 -0
- package/src/controls/containerResizeRemoveHooks.js +5 -0
- package/src/controls/dragCamera.js +22 -0
- package/src/controls/editable.js +3 -0
- package/src/controls/endAllCameraDrags.js +7 -0
- package/src/controls/endAllCameraTouches.js +7 -0
- package/src/controls/endCameraTouch.js +11 -0
- package/src/controls/endCameraTouchEvent.js +5 -0
- package/src/controls/finishCameraDrag.js +9 -0
- package/src/controls/finishCompassPermission.js +16 -0
- package/src/controls/loadCameraControls.js +9 -0
- package/src/controls/moveCameraTouch.js +22 -0
- package/src/controls/notifyCameraTouchChange.js +1 -0
- package/src/controls/pitchDragAddHooks.js +6 -0
- package/src/controls/pitchDragRemoveHooks.js +5 -0
- package/src/controls/refreshRotateControl.js +7 -0
- package/src/controls/refreshRotateFocus.js +5 -0
- package/src/controls/removeCameraDrag.js +23 -0
- package/src/controls/resizeMap.js +3 -0
- package/src/controls/rotateButtonClick.js +7 -0
- package/src/controls/rotateButtonKeydown.js +11 -0
- package/src/controls/rotateControl.js +3 -0
- package/src/controls/rotateOnAdd.js +38 -0
- package/src/controls/rotateOnRemove.js +6 -0
- package/src/controls/shiftRotateAddHooks.js +8 -0
- package/src/controls/shiftRotateRemoveHooks.js +5 -0
- package/src/controls/shiftRotateWheel.js +9 -0
- package/src/controls/startCameraTouch.js +23 -0
- package/src/core/addImageState.js +7 -0
- package/src/core/addRasterImage.js +10 -0
- package/src/core/adjustCameraMarkerPan.js +22 -0
- package/src/core/beforeNativeRender.js +10 -0
- package/src/core/boundsQuad.js +11 -0
- package/src/core/bringNativeLayerToBack.js +3 -0
- package/src/core/bringNativeLayerToFront.js +3 -0
- package/src/core/cameraCircleBounds.js +6 -0
- package/src/core/cameraMarkerDrag.js +18 -0
- package/src/core/cameraMarkerOnDrag.js +8 -0
- package/src/core/cancelGridFade.js +10 -0
- package/src/core/closestCameraLayerPoint.js +7 -0
- package/src/core/compareNativeHits.js +3 -0
- package/src/core/current.js +3 -0
- package/src/core/disposeNativeLayer.js +35 -0
- package/src/core/fireRasterLoad.js +5 -0
- package/src/core/forwardNativeError.js +3 -0
- package/src/core/gridlayerGetEvents.js +7 -0
- package/src/core/gridlayerGetTiledPixelBounds.js +8 -0
- package/src/core/handleNativeMapEvent.js +47 -0
- package/src/core/hideTargets.js +16 -0
- package/src/core/initNativeGPU.js +21 -0
- package/src/core/initializeGridContainer.js +6 -0
- package/src/core/initializeNativeLayer.js +42 -0
- package/src/core/localPixel.js +5 -0
- package/src/core/localPixelForGeometry.js +6 -0
- package/src/core/localPosition.js +6 -0
- package/src/core/markerCameraIconPoint.js +9 -0
- package/src/core/markerGetEvents.js +5 -0
- package/src/core/markerInitInteraction.js +8 -0
- package/src/core/markerQuadCorners.js +31 -0
- package/src/core/markerSetIcon.js +9 -0
- package/src/core/markerSetPos.js +14 -0
- package/src/core/markerSetRotation.js +7 -0
- package/src/core/markerUpdateZIndex.js +8 -0
- package/src/core/nativeAddLatLng.js +3 -0
- package/src/core/nativeBringToBack.js +3 -0
- package/src/core/nativeBringToFront.js +3 -0
- package/src/core/nativeEvents.js +26 -0
- package/src/core/nativeImageError.js +8 -0
- package/src/core/nativeImageRefresh.js +7 -0
- package/src/core/nativeLayer.js +97 -0
- package/src/core/nativeLayerMethod.js +21 -0
- package/src/core/nativeRedraw.js +3 -0
- package/src/core/nativeSetBounds.js +3 -0
- package/src/core/nativeSetIcon.js +3 -0
- package/src/core/nativeSetLatLng.js +3 -0
- package/src/core/nativeSetLatLngs.js +3 -0
- package/src/core/nativeSetOpacity.js +3 -0
- package/src/core/nativeSetRadius.js +3 -0
- package/src/core/nativeSetStyle.js +3 -0
- package/src/core/nativeSetUrl.js +3 -0
- package/src/core/nativeSetZIndex.js +3 -0
- package/src/core/nativeSetZIndexOffset.js +3 -0
- package/src/core/popupAdjustPan.js +23 -0
- package/src/core/popupGetEvents.js +5 -0
- package/src/core/popupUpdatePosition.js +14 -0
- package/src/core/putNativeMesh.js +33 -0
- package/src/core/quadNativeMesh.js +15 -0
- package/src/core/readyNativeGPU.js +6 -0
- package/src/core/refreshNativeEvent.js +5 -0
- package/src/core/refreshNativeLayer.js +29 -0
- package/src/core/refreshNativeLayerContract.js +3 -0
- package/src/core/rejectNativeReady.js +3 -0
- package/src/core/removeImageState.js +8 -0
- package/src/core/removeNativeEvents.js +16 -0
- package/src/core/removeTargets.js +8 -0
- package/src/core/reorderNativeLayer.js +6 -0
- package/src/core/resolveNativeReady.js +3 -0
- package/src/core/restoreNativeEvents.js +6 -0
- package/src/core/runGridFades.js +14 -0
- package/src/core/runMarkerPanFrame.js +12 -0
- package/src/core/scheduleGridFade.js +9 -0
- package/src/core/scheduleMarkerPan.js +8 -0
- package/src/core/styleNativeMesh.js +10 -0
- package/src/core/syncGridLayer.js +22 -0
- package/src/core/syncImageOverlay.js +9 -0
- package/src/core/syncMarker.js +12 -0
- package/src/core/syncVectorLayer.js +26 -0
- package/src/core/synchronizeNativeLayer.js +35 -0
- package/src/core/textureFor.js +48 -0
- package/src/core/tooltipGetEvents.js +5 -0
- package/src/core/tooltipSetPosition.js +8 -0
- package/src/core/updateGridOpacity.js +23 -0
- package/src/core/updateNativeLayerView.js +6 -0
- package/src/core/uploadCanvasTexture.js +19 -0
- package/src/geometry/addBridges.js +88 -0
- package/src/geometry/below.js +3 -0
- package/src/geometry/box.js +3 -0
- package/src/geometry/bridgeElevation.js +19 -0
- package/src/geometry/bridgeLocal.js +4 -0
- package/src/geometry/build.js +19 -0
- package/src/geometry/circleAt.js +5 -0
- package/src/geometry/clipLine.js +23 -0
- package/src/geometry/clipSegment.js +19 -0
- package/src/geometry/computeBounds.js +33 -0
- package/src/geometry/conformModelToTerrain.js +67 -0
- package/src/geometry/cross.js +3 -0
- package/src/geometry/disk.js +11 -0
- package/src/geometry/diskAt.js +4 -0
- package/src/geometry/dot.js +6 -0
- package/src/geometry/emitter.js +8 -0
- package/src/geometry/lampPostGeometry.js +24 -0
- package/src/geometry/lampRing.js +11 -0
- package/src/geometry/lightGeometry.js +15 -0
- package/src/geometry/line.js +54 -0
- package/src/geometry/nativeGeometry.js +55 -0
- package/src/geometry/nativeTriangle.js +3 -0
- package/src/geometry/polygon.js +22 -0
- package/src/geometry/push.js +3 -0
- package/src/geometry/quad.js +4 -0
- package/src/geometry/roofCoverage.js +52 -0
- package/src/geometry/samePoint.js +3 -0
- package/src/geometry/segment.js +21 -0
- package/src/geometry/setVertexColor.js +15 -0
- package/src/geometry/sub.js +6 -0
- package/src/geometry/surface.js +17 -0
- package/src/geometry/treeGeometry.js +31 -0
- package/src/geometry/treeRing.js +14 -0
- package/src/geometry/triangle.js +12 -0
- package/src/geometry/vertexNormals.js +32 -0
- package/src/geometry/visit.js +9 -0
- package/src/index.js +41 -323
- package/src/lighting/cacheLightGrid.js +23 -0
- package/src/lighting/collectLightMeshes.js +6 -0
- package/src/lighting/lightGrid.js +42 -0
- package/src/lighting/updatePointLights.js +34 -0
- package/src/lighting/visitCells.js +15 -0
- package/src/lighting/worldLights.js +27 -0
- package/src/models/decodeModel.js +45 -0
- package/src/models/hasUnsupportedPrimitives.js +10 -0
- package/src/models/loadBuffer.js +6 -0
- package/src/models/loadImage.js +15 -0
- package/src/models/loadModel.js +69 -0
- package/src/models/materialFor.js +21 -0
- package/src/models/modelNode.js +93 -0
- package/src/models/readAccessor.js +53 -0
- package/src/models/readAccessorValues.js +16 -0
- package/src/models/textureFor.js +35 -0
- package/src/picking/collectVisibleMesh.js +4 -0
- package/src/picking/findFeature.js +49 -0
- package/src/picking/hit.js +23 -0
- package/src/picking/hitMesh.js +30 -0
- package/src/picking/pointerClick.js +5 -0
- package/src/picking/pointerLeave.js +5 -0
- package/src/picking/pointerMove.js +5 -0
- package/src/picking/raycast.js +59 -0
- package/src/picking/setHighlight.js +13 -0
- package/src/picking/shouldSkipOther.js +3 -0
- package/src/picking/showFeature.js +34 -0
- package/src/raster/addRasterTile.js +114 -0
- package/src/raster/comparePendingTiles.js +5 -0
- package/src/raster/createGeometry.js +22 -0
- package/src/raster/createRasterMesh.js +47 -0
- package/src/raster/finishAttachment.js +11 -0
- package/src/raster/finishRasterTile.js +47 -0
- package/src/raster/getRasterEvents.js +6 -0
- package/src/raster/getRasterTileSize.js +5 -0
- package/src/raster/initRaster.js +38 -0
- package/src/raster/isLoading.js +5 -0
- package/src/raster/loadRasterTile.js +10 -0
- package/src/raster/onPMTileAdd.js +10 -0
- package/src/raster/onPMTileRemove.js +8 -0
- package/src/raster/pruneRasterTiles.js +37 -0
- package/src/raster/pumpRasterTiles.js +22 -0
- package/src/raster/readyRaster.js +13 -0
- package/src/raster/registerTerrainTile.js +12 -0
- package/src/raster/releaseRasterTile.js +18 -0
- package/src/raster/releaseRasterTiles.js +15 -0
- package/src/raster/removeRasterTile.js +13 -0
- package/src/raster/reportError.js +6 -0
- package/src/raster/setPMTileOpacity.js +7 -0
- package/src/raster/setPMTileZIndex.js +7 -0
- package/src/raster/setRasterOpacity.js +11 -0
- package/src/raster/setRasterTerrain.js +21 -0
- package/src/raster/setRasterZIndex.js +11 -0
- package/src/raster/updateAttachedTiles.js +10 -0
- package/src/raster/updateRasterTiles.js +59 -0
- package/src/rendering/collectFrameMeshes.js +31 -0
- package/src/rendering/collectMeshes.js +36 -0
- package/src/rendering/compareMeshes.js +10 -0
- package/src/rendering/compareRoofTiles.js +4 -0
- package/src/rendering/composeRoofAtlas.js +52 -0
- package/src/rendering/createMesh.js +33 -0
- package/src/rendering/createProgram.js +92 -0
- package/src/rendering/destroyAfterSubmission.js +8 -0
- package/src/rendering/destroyTexture.js +6 -0
- package/src/rendering/disposeMesh.js +14 -0
- package/src/rendering/drawGeometry.js +129 -0
- package/src/rendering/drawSceneMeshes.js +51 -0
- package/src/rendering/ensureRoofBlit.js +40 -0
- package/src/rendering/prepareFrameMeshes.js +42 -0
- package/src/rendering/prepareFrameUniforms.js +49 -0
- package/src/rendering/rebuildRoofAtlas.js +67 -0
- package/src/rendering/render.js +57 -0
- package/src/rendering/reportCompilation.js +17 -0
- package/src/rendering/resizeRenderer.js +19 -0
- package/src/rendering/sortMeshes.js +6 -0
- package/src/rendering/synchronizeZoomView.js +34 -0
- package/src/rendering/textureBinding.js +7 -0
- package/src/rendering/updateMapCamera.js +32 -0
- package/src/rendering/updateRoofRaster.js +32 -0
- package/src/scene/attach.js +161 -0
- package/src/scene/attachLayer.js +10 -0
- package/src/scene/cancelUpdate.js +10 -0
- package/src/scene/emptyEvents.js +3 -0
- package/src/scene/emptyNode.js +11 -0
- package/src/scene/endZoom.js +16 -0
- package/src/scene/failAttachment.js +9 -0
- package/src/scene/get3DEvents.js +13 -0
- package/src/scene/init3D.js +30 -0
- package/src/scene/initializeLayer.js +16 -0
- package/src/scene/initializerFor.js +14 -0
- package/src/scene/layerInitialize.js +38 -0
- package/src/scene/layerLayerAdd.js +21 -0
- package/src/scene/onAdd3DLayer.js +35 -0
- package/src/scene/onMapChange.js +16 -0
- package/src/scene/onRemove3DLayer.js +69 -0
- package/src/scene/onZoomAnim.js +16 -0
- package/src/scene/placeEntry.js +11 -0
- package/src/scene/placeUnderEntry.js +8 -0
- package/src/scene/ready3D.js +25 -0
- package/src/scene/releaseRenderer.js +14 -0
- package/src/scene/removeEntry.js +6 -0
- package/src/scene/renderPendingMapChange.js +11 -0
- package/src/scene/renderPendingUpdates.js +19 -0
- package/src/scene/renderPendingZoomAnimation.js +7 -0
- package/src/scene/rendererDeviceError.js +10 -0
- package/src/scene/rendererDeviceLost.js +11 -0
- package/src/scene/replaceEntry.js +7 -0
- package/src/scene/reportError.js +3 -0
- package/src/scene/requestAdapter.js +12 -0
- package/src/scene/requestDevice.js +9 -0
- package/src/scene/resolveNextInitialization.js +12 -0
- package/src/scene/restoreObject.js +71 -0
- package/src/scene/runPlacements.js +7 -0
- package/src/scene/showWebGPUWarning.js +16 -0
- package/src/scene/traverse.js +7 -0
- package/src/scene/underEntry.js +17 -0
- package/src/scene/update.js +19 -0
- package/src/scene/updateCamera.js +34 -0
- package/src/scene/updateWorldMatrix.js +48 -0
- package/src/shaders/materialShaders.js +246 -0
- package/src/shadows/bindSunlight.js +12 -0
- package/src/shadows/drawShadowMeshes.js +48 -0
- package/src/shadows/ensureShadowPipeline.js +53 -0
- package/src/shadows/renderSunlight.js +46 -0
- package/src/shadows/resizeSunlight.js +15 -0
- package/src/shadows/shadowBounds.js +32 -0
- package/src/shadows/shadowCacheMatches.js +23 -0
- package/src/shadows/shadowMatrix.js +39 -0
- package/src/sources/addGeneratedTriangle.js +6 -0
- package/src/sources/addTriangle.js +17 -0
- package/src/sources/attachAreaMesh.js +58 -0
- package/src/sources/buildArea.js +42 -0
- package/src/sources/buildAreaFeature.js +41 -0
- package/src/sources/buildAreaPoint.js +25 -0
- package/src/sources/buildAreaPolygon.js +29 -0
- package/src/sources/compareAreaDistance.js +4 -0
- package/src/sources/generateTreeGeometry.js +11 -0
- package/src/sources/groundOffset.js +3 -0
- package/src/sources/initializeGeoJSON.js +8 -0
- package/src/sources/instanceAreaGeometry.js +29 -0
- package/src/sources/projectRing.js +20 -0
- package/src/sources/projectedTree.js +13 -0
- package/src/sources/pump.js +54 -0
- package/src/sources/releaseArea.js +22 -0
- package/src/sources/setGeoJSONData.js +12 -0
- package/src/sources/setGeoJSONLayerData.js +5 -0
- package/src/sources/sourceAreaContext.js +9 -0
- package/src/sources/updateArea.js +45 -0
- package/src/sources/updateStatus.js +12 -0
- package/src/sunlight/addTimeLayer.js +3 -0
- package/src/sunlight/addTo.js +10 -0
- package/src/sunlight/atmosphere.js +28 -0
- package/src/sunlight/initSunlight.js +14 -0
- package/src/sunlight/initialize.js +11 -0
- package/src/sunlight/mix.js +6 -0
- package/src/sunlight/onAdd.js +5 -0
- package/src/sunlight/onAddSun.js +66 -0
- package/src/sunlight/remove.js +7 -0
- package/src/sunlight/removeSun.js +15 -0
- package/src/sunlight/removeTimeLayer.js +3 -0
- package/src/sunlight/render.js +7 -0
- package/src/sunlight/rgb.js +6 -0
- package/src/sunlight/styleTimeControl.js +7 -0
- package/src/sunlight/tickSun.js +5 -0
- package/src/sunlight/updateSky.js +20 -0
- package/src/sunlight/updateSun.js +34 -0
- package/src/sunlight/useLiveTime.js +6 -0
- package/src/sunlight/useSelectedTime.js +20 -0
- package/src/terrain/clearLayerTerrain.js +5 -0
- package/src/terrain/getElevation.js +10 -0
- package/src/terrain/initTerrain.js +20 -0
- package/src/terrain/loadReadyTerrain.js +5 -0
- package/src/terrain/loadTerrain.js +63 -0
- package/src/terrain/loadTerrainTiles.js +13 -0
- package/src/terrain/onTerrainAdd.js +21 -0
- package/src/terrain/onTerrainChange.js +14 -0
- package/src/terrain/onTerrainRemove.js +41 -0
- package/src/terrain/readBridges.js +4 -0
- package/src/terrain/sample.js +7 -0
- package/src/terrain/setLayerTerrain.js +5 -0
- package/src/terrain/terrainAtlas.js +23 -0
- package/src/terrain/terrainElevation.js +20 -0
- package/src/terrain/terrainGrid.js +24 -0
- package/src/traffic/addTraffic.js +7 -0
- package/src/traffic/along.js +14 -0
- package/src/traffic/clockMinutes.js +6 -0
- package/src/traffic/compareDepartures.js +5 -0
- package/src/traffic/createTrafficMesh.js +7 -0
- package/src/traffic/destroyTrafficGpu.js +5 -0
- package/src/traffic/disposeTrafficObject.js +13 -0
- package/src/traffic/drawTrafficRoute.js +6 -0
- package/src/traffic/failTraffic.js +6 -0
- package/src/traffic/failedTrafficLoad.js +5 -0
- package/src/traffic/fetchTrafficLanes.js +10 -0
- package/src/traffic/groundTraffic.js +15 -0
- package/src/traffic/initTraffic.js +54 -0
- package/src/traffic/loadTraffic.js +15 -0
- package/src/traffic/loadedTrafficLanes.js +16 -0
- package/src/traffic/locateTraffic.js +9 -0
- package/src/traffic/moveTraffic.js +15 -0
- package/src/traffic/placeTraffic.js +21 -0
- package/src/traffic/prepareTraffic.js +25 -0
- package/src/traffic/readyTraffic.js +6 -0
- package/src/traffic/rebaseTraffic.js +58 -0
- package/src/traffic/rebuildTrafficMesh.js +28 -0
- package/src/traffic/removeTraffic.js +17 -0
- package/src/traffic/routeColor.js +6 -0
- package/src/traffic/routeGeometry.js +31 -0
- package/src/traffic/scheduledTrips.js +40 -0
- package/src/traffic/startTraffic.js +8 -0
- package/src/traffic/tickTraffic.js +57 -0
- package/src/traffic/toLanes.js +16 -0
- package/src/traffic/tooltip.js +11 -0
- package/src/traffic/trafficBounds.js +17 -0
- package/src/traffic/trafficNow.js +4 -0
- package/src/traffic/trafficStorage.js +5 -0
- package/src/traffic/tripsAt.js +27 -0
- package/src/traffic/updateTraffic.js +8 -0
- package/src/traffic/updateTrafficTerrain.js +12 -0
- package/src/traffic/vehicleOffsets.js +11 -0
- package/src/triangulation/area.js +9 -0
- package/src/triangulation/clean.js +18 -0
- package/src/triangulation/containsVertex.js +11 -0
- package/src/triangulation/cross.js +3 -0
- package/src/triangulation/crossesBoundary.js +8 -0
- package/src/triangulation/crossesRing.js +9 -0
- package/src/triangulation/equal.js +3 -0
- package/src/triangulation/inside.js +10 -0
- package/src/triangulation/insideHole.js +7 -0
- package/src/triangulation/intersects.js +11 -0
- package/src/triangulation/isClockWise.js +13 -0
- package/src/triangulation/minimumX.js +6 -0
- package/src/triangulation/on.js +4 -0
- package/src/triangulation/sortHoles.js +26 -0
- package/src/triangulation/triangulate.js +86 -0
- package/src/utils/channel.js +2 -2
- package/src/utils/compareDistance.js +3 -0
- package/src/utils/noOperation.js +1 -0
- package/src/utils/toSRGB.js +3 -1
- package/src/utils/wrap.js +3 -1
- package/src/vehicles/bicycleModel.js +23 -0
- package/src/vehicles/boatBenches.js +8 -0
- package/src/vehicles/boatModel.js +27 -0
- package/src/vehicles/busModel.js +6 -0
- package/src/vehicles/carModel.js +22 -0
- package/src/vehicles/carriage.js +19 -0
- package/src/vehicles/metroModel.js +9 -0
- package/src/vehicles/mirror.js +8 -0
- package/src/vehicles/pedestrianModel.js +17 -0
- package/src/vehicles/tramModel.js +9 -0
- package/src/walk/blocked.js +6 -0
- package/src/walk/createWalk.js +60 -0
- package/src/walk/initWalk.js +18 -0
- package/src/walk/initialize.js +6 -0
- package/src/walk/local.js +10 -0
- package/src/walk/onAdd.js +4 -0
- package/src/walk/onBlur.js +3 -0
- package/src/walk/onKey.js +12 -0
- package/src/walk/onPointer.js +13 -0
- package/src/walk/onRemove.js +4 -0
- package/src/walk/onTerrain.js +5 -0
- package/src/walk/place.js +18 -0
- package/src/walk/start.js +37 -0
- package/src/walk/step.js +53 -0
- package/src/walk/stop.js +27 -0
- package/src/walk/toggle.js +6 -0
- package/dist/utils/CELL.js +0 -2
- package/dist/utils/CELL.js.map +0 -7
- package/dist/utils/addBridges.js +0 -2
- package/dist/utils/addBridges.js.map +0 -7
- package/dist/utils/addRasterTile.js +0 -2
- package/dist/utils/addRasterTile.js.map +0 -7
- package/dist/utils/along.js +0 -2
- package/dist/utils/along.js.map +0 -7
- package/dist/utils/atmosphere.js +0 -2
- package/dist/utils/atmosphere.js.map +0 -7
- package/dist/utils/attach.js +0 -2
- package/dist/utils/attach.js.map +0 -7
- package/dist/utils/bindSunlight.js +0 -2
- package/dist/utils/bindSunlight.js.map +0 -7
- package/dist/utils/box.js +0 -2
- package/dist/utils/box.js.map +0 -7
- package/dist/utils/bridgeElevation.js +0 -2
- package/dist/utils/bridgeElevation.js.map +0 -7
- package/dist/utils/build.js +0 -2
- package/dist/utils/build.js.map +0 -7
- package/dist/utils/cameraControls.js +0 -2
- package/dist/utils/cameraControls.js.map +0 -7
- package/dist/utils/channel.js +0 -2
- package/dist/utils/channel.js.map +0 -7
- package/dist/utils/collider.js +0 -2
- package/dist/utils/collider.js.map +0 -7
- package/dist/utils/colliders.js +0 -2
- package/dist/utils/colliders.js.map +0 -7
- package/dist/utils/computeBounds.js +0 -2
- package/dist/utils/computeBounds.js.map +0 -7
- package/dist/utils/conformModelToTerrain.js +0 -2
- package/dist/utils/conformModelToTerrain.js.map +0 -7
- package/dist/utils/createMesh.js +0 -2
- package/dist/utils/createMesh.js.map +0 -7
- package/dist/utils/createProgram.js +0 -3
- package/dist/utils/createProgram.js.map +0 -7
- package/dist/utils/decodeDirectory.js +0 -2
- package/dist/utils/decodeDirectory.js.map +0 -7
- package/dist/utils/decodeHeader.js +0 -2
- package/dist/utils/decodeHeader.js.map +0 -7
- package/dist/utils/decodeModel.js +0 -2
- package/dist/utils/decodeModel.js.map +0 -7
- package/dist/utils/decompress.js +0 -2
- package/dist/utils/decompress.js.map +0 -7
- package/dist/utils/destroyTexture.js +0 -2
- package/dist/utils/destroyTexture.js.map +0 -7
- package/dist/utils/disposeMesh.js +0 -2
- package/dist/utils/disposeMesh.js.map +0 -7
- package/dist/utils/drawGeometry.js +0 -2
- package/dist/utils/drawGeometry.js.map +0 -7
- package/dist/utils/elevationWGSL.js +0 -24
- package/dist/utils/elevationWGSL.js.map +0 -7
- package/dist/utils/emptyNode.js +0 -2
- package/dist/utils/emptyNode.js.map +0 -7
- package/dist/utils/endZoom.js +0 -2
- package/dist/utils/endZoom.js.map +0 -7
- package/dist/utils/findFeature.js +0 -2
- package/dist/utils/findFeature.js.map +0 -7
- package/dist/utils/geometry.js +0 -1
- package/dist/utils/geometry.js.map +0 -7
- package/dist/utils/getElevation.js +0 -2
- package/dist/utils/getElevation.js.map +0 -7
- package/dist/utils/getHeader.js +0 -2
- package/dist/utils/getHeader.js.map +0 -7
- package/dist/utils/getZxy.js +0 -2
- package/dist/utils/getZxy.js.map +0 -7
- package/dist/utils/glass.js +0 -2
- package/dist/utils/glass.js.map +0 -7
- package/dist/utils/headlight.js +0 -2
- package/dist/utils/headlight.js.map +0 -7
- package/dist/utils/hit.js +0 -2
- package/dist/utils/hit.js.map +0 -7
- package/dist/utils/horizontalPosition.js +0 -2
- package/dist/utils/horizontalPosition.js.map +0 -7
- package/dist/utils/horizontalRay.js +0 -2
- package/dist/utils/horizontalRay.js.map +0 -7
- package/dist/utils/hull.js +0 -2
- package/dist/utils/hull.js.map +0 -7
- package/dist/utils/initSunlight.js +0 -2
- package/dist/utils/initSunlight.js.map +0 -7
- package/dist/utils/initTerrain.js +0 -2
- package/dist/utils/initTerrain.js.map +0 -7
- package/dist/utils/initTraffic.js +0 -40
- package/dist/utils/initTraffic.js.map +0 -7
- package/dist/utils/initWalk.js +0 -2
- package/dist/utils/initWalk.js.map +0 -7
- package/dist/utils/intersectMeshes.js +0 -2
- package/dist/utils/intersectMeshes.js.map +0 -7
- package/dist/utils/isClockWise.js +0 -2
- package/dist/utils/isClockWise.js.map +0 -7
- package/dist/utils/lampPostGeometry.js +0 -2
- package/dist/utils/lampPostGeometry.js.map +0 -7
- package/dist/utils/lightGeometry.js +0 -2
- package/dist/utils/lightGeometry.js.map +0 -7
- package/dist/utils/lightGrid.js +0 -2
- package/dist/utils/lightGrid.js.map +0 -7
- package/dist/utils/limbs.js +0 -2
- package/dist/utils/limbs.js.map +0 -7
- package/dist/utils/loadModel.js +0 -2
- package/dist/utils/loadModel.js.map +0 -7
- package/dist/utils/loadSource.js +0 -2
- package/dist/utils/loadSource.js.map +0 -7
- package/dist/utils/loadTerrain.js +0 -2
- package/dist/utils/loadTerrain.js.map +0 -7
- package/dist/utils/mapCamera.js +0 -2
- package/dist/utils/mapCamera.js.map +0 -7
- package/dist/utils/materialShaders.js +0 -211
- package/dist/utils/materialShaders.js.map +0 -7
- package/dist/utils/mirror.js +0 -2
- package/dist/utils/mirror.js.map +0 -7
- package/dist/utils/moonPosition.js +0 -2
- package/dist/utils/moonPosition.js.map +0 -7
- package/dist/utils/moves.js +0 -2
- package/dist/utils/moves.js.map +0 -7
- package/dist/utils/nativeEvents.js +0 -2
- package/dist/utils/nativeEvents.js.map +0 -7
- package/dist/utils/nativeGeometry.js +0 -2
- package/dist/utils/nativeGeometry.js.map +0 -7
- package/dist/utils/nativeLayer.js +0 -2
- package/dist/utils/nativeLayer.js.map +0 -7
- package/dist/utils/nodeMatrix.js +0 -2
- package/dist/utils/nodeMatrix.js.map +0 -7
- package/dist/utils/onAdd3DLayer.js +0 -2
- package/dist/utils/onAdd3DLayer.js.map +0 -7
- package/dist/utils/onAddSun.js +0 -2
- package/dist/utils/onAddSun.js.map +0 -7
- package/dist/utils/onClick.js +0 -2
- package/dist/utils/onClick.js.map +0 -7
- package/dist/utils/onMapChange.js +0 -2
- package/dist/utils/onMapChange.js.map +0 -7
- package/dist/utils/onPMTileAdd.js +0 -2
- package/dist/utils/onPMTileAdd.js.map +0 -7
- package/dist/utils/onPMTileRemove.js +0 -2
- package/dist/utils/onPMTileRemove.js.map +0 -7
- package/dist/utils/onPointerLeave.js +0 -2
- package/dist/utils/onPointerLeave.js.map +0 -7
- package/dist/utils/onPointerMove.js +0 -2
- package/dist/utils/onPointerMove.js.map +0 -7
- package/dist/utils/onRemove3DLayer.js +0 -2
- package/dist/utils/onRemove3DLayer.js.map +0 -7
- package/dist/utils/onRemoveSun.js +0 -2
- package/dist/utils/onRemoveSun.js.map +0 -7
- package/dist/utils/onTerrainAdd.js +0 -2
- package/dist/utils/onTerrainAdd.js.map +0 -7
- package/dist/utils/onTerrainChange.js +0 -2
- package/dist/utils/onTerrainChange.js.map +0 -7
- package/dist/utils/onTerrainRemove.js +0 -2
- package/dist/utils/onTerrainRemove.js.map +0 -7
- package/dist/utils/onZoomAnim.js +0 -2
- package/dist/utils/onZoomAnim.js.map +0 -7
- package/dist/utils/paints.js +0 -2
- package/dist/utils/paints.js.map +0 -7
- package/dist/utils/parseColor.js +0 -2
- package/dist/utils/parseColor.js.map +0 -7
- package/dist/utils/parts.js +0 -2
- package/dist/utils/parts.js.map +0 -7
- package/dist/utils/projectCelestialBody.js +0 -2
- package/dist/utils/projectCelestialBody.js.map +0 -7
- package/dist/utils/pump.js +0 -2
- package/dist/utils/pump.js.map +0 -7
- package/dist/utils/rasterTiles.js +0 -2
- package/dist/utils/rasterTiles.js.map +0 -7
- package/dist/utils/raycast.js +0 -2
- package/dist/utils/raycast.js.map +0 -7
- package/dist/utils/read.js +0 -2
- package/dist/utils/read.js.map +0 -7
- package/dist/utils/readAccessor.js +0 -2
- package/dist/utils/readAccessor.js.map +0 -7
- package/dist/utils/releaseArea.js +0 -2
- package/dist/utils/releaseArea.js.map +0 -7
- package/dist/utils/removeRasterTile.js +0 -2
- package/dist/utils/removeRasterTile.js.map +0 -7
- package/dist/utils/render.js +0 -15
- package/dist/utils/render.js.map +0 -7
- package/dist/utils/renderSunlight.js +0 -13
- package/dist/utils/renderSunlight.js.map +0 -7
- package/dist/utils/renderers.js +0 -2
- package/dist/utils/renderers.js.map +0 -7
- package/dist/utils/resizeSunlight.js +0 -2
- package/dist/utils/resizeSunlight.js.map +0 -7
- package/dist/utils/roofCoverage.js +0 -2
- package/dist/utils/roofCoverage.js.map +0 -7
- package/dist/utils/routeGeometry.js +0 -2
- package/dist/utils/routeGeometry.js.map +0 -7
- package/dist/utils/scheduledTrips.js +0 -2
- package/dist/utils/scheduledTrips.js.map +0 -7
- package/dist/utils/setGeoJSONData.js +0 -2
- package/dist/utils/setGeoJSONData.js.map +0 -7
- package/dist/utils/setHighlight.js +0 -2
- package/dist/utils/setHighlight.js.map +0 -7
- package/dist/utils/setPMTileOpacity.js +0 -2
- package/dist/utils/setPMTileOpacity.js.map +0 -7
- package/dist/utils/setPMTileZIndex.js +0 -2
- package/dist/utils/setPMTileZIndex.js.map +0 -7
- package/dist/utils/setParent.js +0 -2
- package/dist/utils/setParent.js.map +0 -7
- package/dist/utils/setTerrainHeight.js +0 -2
- package/dist/utils/setTerrainHeight.js.map +0 -7
- package/dist/utils/setVertexColor.js +0 -2
- package/dist/utils/setVertexColor.js.map +0 -7
- package/dist/utils/showFeature.js +0 -2
- package/dist/utils/showFeature.js.map +0 -7
- package/dist/utils/sizes.js +0 -2
- package/dist/utils/sizes.js.map +0 -7
- package/dist/utils/skin.js +0 -2
- package/dist/utils/skin.js.map +0 -7
- package/dist/utils/solarPosition.js +0 -2
- package/dist/utils/solarPosition.js.map +0 -7
- package/dist/utils/sortMeshes.js +0 -2
- package/dist/utils/sortMeshes.js.map +0 -7
- package/dist/utils/speed.js +0 -2
- package/dist/utils/speed.js.map +0 -7
- package/dist/utils/startZoom.js +0 -2
- package/dist/utils/startZoom.js.map +0 -7
- package/dist/utils/taillight.js +0 -2
- package/dist/utils/taillight.js.map +0 -7
- package/dist/utils/terrainAtlas.js +0 -2
- package/dist/utils/terrainAtlas.js.map +0 -7
- package/dist/utils/terrainElevation.js +0 -2
- package/dist/utils/terrainElevation.js.map +0 -7
- package/dist/utils/terrainGrid.js +0 -2
- package/dist/utils/terrainGrid.js.map +0 -7
- package/dist/utils/textureSampler.js +0 -2
- package/dist/utils/textureSampler.js.map +0 -7
- package/dist/utils/tileId.js +0 -2
- package/dist/utils/tileId.js.map +0 -7
- package/dist/utils/toLanes.js +0 -2
- package/dist/utils/toLanes.js.map +0 -7
- package/dist/utils/toSRGB.js +0 -2
- package/dist/utils/toSRGB.js.map +0 -7
- package/dist/utils/tooltip.js +0 -3
- package/dist/utils/tooltip.js.map +0 -7
- package/dist/utils/traffic.js +0 -2
- package/dist/utils/traffic.js.map +0 -7
- package/dist/utils/traverse.js +0 -2
- package/dist/utils/traverse.js.map +0 -7
- package/dist/utils/treeGeometry.js +0 -2
- package/dist/utils/treeGeometry.js.map +0 -7
- package/dist/utils/triangulate.js +0 -2
- package/dist/utils/triangulate.js.map +0 -7
- package/dist/utils/tripsAt.js +0 -2
- package/dist/utils/tripsAt.js.map +0 -7
- package/dist/utils/types.js +0 -2
- package/dist/utils/types.js.map +0 -7
- package/dist/utils/underEntry.js +0 -2
- package/dist/utils/underEntry.js.map +0 -7
- package/dist/utils/update.js +0 -2
- package/dist/utils/update.js.map +0 -7
- package/dist/utils/updateArea.js +0 -2
- package/dist/utils/updateArea.js.map +0 -7
- package/dist/utils/updateCamera.js +0 -2
- package/dist/utils/updateCamera.js.map +0 -7
- package/dist/utils/updatePointLights.js +0 -2
- package/dist/utils/updatePointLights.js.map +0 -7
- package/dist/utils/updateWorldMatrix.js +0 -2
- package/dist/utils/updateWorldMatrix.js.map +0 -7
- package/dist/utils/vehicleOffsets.js +0 -2
- package/dist/utils/vehicleOffsets.js.map +0 -7
- package/dist/utils/vehicles.js +0 -2
- package/dist/utils/vehicles.js.map +0 -7
- package/dist/utils/vertexNormals.js +0 -2
- package/dist/utils/vertexNormals.js.map +0 -7
- package/dist/utils/walk.js +0 -2
- package/dist/utils/walk.js.map +0 -7
- package/dist/utils/white.js +0 -2
- package/dist/utils/white.js.map +0 -7
- package/dist/utils/worldLights.js +0 -2
- package/dist/utils/worldLights.js.map +0 -7
- package/dist/utils/wrap.js +0 -2
- package/dist/utils/wrap.js.map +0 -7
- package/src/utils/addBridges.js +0 -66
- package/src/utils/addRasterTile.js +0 -112
- package/src/utils/along.js +0 -9
- package/src/utils/atmosphere.js +0 -20
- package/src/utils/attach.js +0 -255
- package/src/utils/bindSunlight.js +0 -12
- package/src/utils/box.js +0 -1
- package/src/utils/bridgeElevation.js +0 -18
- package/src/utils/build.js +0 -20
- package/src/utils/cameraControls.js +0 -287
- package/src/utils/collider.js +0 -62
- package/src/utils/computeBounds.js +0 -17
- package/src/utils/conformModelToTerrain.js +0 -69
- package/src/utils/createMesh.js +0 -31
- package/src/utils/createProgram.js +0 -92
- package/src/utils/decodeDirectory.js +0 -40
- package/src/utils/decodeHeader.js +0 -15
- package/src/utils/decodeModel.js +0 -43
- package/src/utils/destroyTexture.js +0 -7
- package/src/utils/disposeMesh.js +0 -13
- package/src/utils/drawGeometry.js +0 -122
- package/src/utils/elevationWGSL.js +0 -27
- package/src/utils/emptyNode.js +0 -9
- package/src/utils/endZoom.js +0 -15
- package/src/utils/findFeature.js +0 -49
- package/src/utils/geometry.js +0 -2
- package/src/utils/getElevation.js +0 -10
- package/src/utils/getZxy.js +0 -76
- package/src/utils/glass.js +0 -1
- package/src/utils/hit.js +0 -41
- package/src/utils/initSunlight.js +0 -9
- package/src/utils/initTerrain.js +0 -19
- package/src/utils/initTraffic.js +0 -93
- package/src/utils/initWalk.js +0 -72
- package/src/utils/intersectMeshes.js +0 -121
- package/src/utils/isClockWise.js +0 -12
- package/src/utils/lampPostGeometry.js +0 -26
- package/src/utils/lightGeometry.js +0 -22
- package/src/utils/lightGrid.js +0 -50
- package/src/utils/loadModel.js +0 -217
- package/src/utils/loadTerrain.js +0 -65
- package/src/utils/mapCamera.js +0 -432
- package/src/utils/materialShaders.js +0 -243
- package/src/utils/mirror.js +0 -6
- package/src/utils/nativeEvents.js +0 -77
- package/src/utils/nativeGeometry.js +0 -131
- package/src/utils/nativeLayer.js +0 -317
- package/src/utils/onAdd3DLayer.js +0 -31
- package/src/utils/onAddSun.js +0 -147
- package/src/utils/onMapChange.js +0 -16
- package/src/utils/onPMTileAdd.js +0 -15
- package/src/utils/onPMTileRemove.js +0 -8
- package/src/utils/onRemove3DLayer.js +0 -78
- package/src/utils/onRemoveSun.js +0 -3
- package/src/utils/onTerrainAdd.js +0 -18
- package/src/utils/onTerrainChange.js +0 -13
- package/src/utils/onTerrainRemove.js +0 -40
- package/src/utils/onZoomAnim.js +0 -14
- package/src/utils/parts.js +0 -16
- package/src/utils/pump.js +0 -226
- package/src/utils/rasterTiles.js +0 -285
- package/src/utils/raycast.js +0 -60
- package/src/utils/readAccessor.js +0 -68
- package/src/utils/releaseArea.js +0 -34
- package/src/utils/removeRasterTile.js +0 -13
- package/src/utils/render.js +0 -406
- package/src/utils/renderSunlight.js +0 -170
- package/src/utils/resizeSunlight.js +0 -15
- package/src/utils/roofCoverage.js +0 -47
- package/src/utils/routeGeometry.js +0 -22
- package/src/utils/scheduledTrips.js +0 -29
- package/src/utils/setGeoJSONData.js +0 -11
- package/src/utils/setHighlight.js +0 -13
- package/src/utils/setPMTileOpacity.js +0 -7
- package/src/utils/setPMTileZIndex.js +0 -7
- package/src/utils/setVertexColor.js +0 -14
- package/src/utils/showFeature.js +0 -27
- package/src/utils/skin.js +0 -2
- package/src/utils/sortMeshes.js +0 -12
- package/src/utils/terrainAtlas.js +0 -21
- package/src/utils/terrainElevation.js +0 -20
- package/src/utils/terrainGrid.js +0 -23
- package/src/utils/tileId.js +0 -18
- package/src/utils/toLanes.js +0 -7
- package/src/utils/tooltip.js +0 -6
- package/src/utils/traffic.js +0 -315
- package/src/utils/traverse.js +0 -6
- package/src/utils/treeGeometry.js +0 -45
- package/src/utils/triangulate.js +0 -100
- package/src/utils/tripsAt.js +0 -16
- package/src/utils/underEntry.js +0 -17
- package/src/utils/update.js +0 -18
- package/src/utils/updateArea.js +0 -40
- package/src/utils/updateCamera.js +0 -32
- package/src/utils/updatePointLights.js +0 -38
- package/src/utils/updateWorldMatrix.js +0 -47
- package/src/utils/vehicleOffsets.js +0 -8
- package/src/utils/vehicles.js +0 -65
- package/src/utils/vertexNormals.js +0 -30
- package/src/utils/walk.js +0 -187
- package/src/utils/worldLights.js +0 -25
- /package/src/{utils → archives}/decompress.js +0 -0
- /package/src/{utils → archives}/getHeader.js +0 -0
- /package/src/{utils → archives}/loadSource.js +0 -0
- /package/src/{utils → archives}/read.js +0 -0
- /package/src/{utils → collision}/horizontalRay.js +0 -0
- /package/src/{utils → constants}/CELL.js +0 -0
- /package/src/{utils/sizes.js → constants/accessorSizes.js} +0 -0
- /package/src/{utils/types.js → constants/accessorTypes.js} +0 -0
- /package/src/{utils → constants}/colliders.js +0 -0
- /package/src/{utils → constants}/headlight.js +0 -0
- /package/src/{utils → constants}/hull.js +0 -0
- /package/src/{utils → constants}/limbs.js +0 -0
- /package/src/{utils → constants}/moves.js +0 -0
- /package/src/{utils → constants}/paints.js +0 -0
- /package/src/{utils → constants}/renderers.js +0 -0
- /package/src/{utils → constants}/speed.js +0 -0
- /package/src/{utils → constants}/taillight.js +0 -0
- /package/src/{utils → constants}/white.js +0 -0
- /package/src/{utils → models}/nodeMatrix.js +0 -0
- /package/src/{utils → models}/textureSampler.js +0 -0
- /package/src/{utils → picking}/onClick.js +0 -0
- /package/src/{utils → picking}/onPointerLeave.js +0 -0
- /package/src/{utils → picking}/onPointerMove.js +0 -0
- /package/src/{utils → scene}/setParent.js +0 -0
- /package/src/{utils → scene}/startZoom.js +0 -0
- /package/src/{utils → sunlight}/horizontalPosition.js +0 -0
- /package/src/{utils → sunlight}/moonPosition.js +0 -0
- /package/src/{utils → sunlight}/projectCelestialBody.js +0 -0
- /package/src/{utils → sunlight}/solarPosition.js +0 -0
- /package/src/{utils → terrain}/setTerrainHeight.js +0 -0
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/nativeLayer.js"],
|
|
4
|
-
"sourcesContent": ["import { createMesh } from './createMesh.js';\r\nimport { destroyTexture } from './destroyTexture.js';\r\nimport { disposeMesh } from './disposeMesh.js';\r\nimport { nativeGeometry } from './nativeGeometry.js';\r\nimport { nativeEvents } from './nativeEvents.js';\r\nimport { parseColor } from './parseColor.js';\r\nimport { update } from './update.js';\r\n\r\n/** Render from coordinates and detached raster sources; only accessible marker controls remain DOM. */\r\nexport async function nativeLayer(state) {\r\n const { source, map } = state;\r\n const backend = state.backend = new L.Layer({ source: { type: '3d' } });\r\n const meshes = state.meshes = new Map(), textures = new Map(), methods = new Map();\r\n const images = new Set();\r\n map._nativeGPUOrder ||= 0;\r\n map._nativeGPUBack ||= 0;\r\n let dirty = true, viewDirty = true, failed = false, order = ++map._nativeGPUOrder, rasterProgram;\r\n const marker = source instanceof L.Marker;\r\n const paneOrder = Number(getComputedStyle(source.getPane()).zIndex) || 0;\r\n const current = () => source._nativeGPU === state && map.hasLayer(source);\r\n const refresh = () => {\r\n dirty = true;\r\n viewDirty = true;\r\n failed = false;\r\n state.hide();\r\n const activeImages = [source._icon, source._shadow, source._image];\r\n for (const image of images) {\r\n if (activeImages.includes(image)) continue;\r\n image.removeEventListener('load', refresh);\r\n image.removeEventListener('error', imageError);\r\n images.delete(image);\r\n }\r\n for (const image of activeImages) {\r\n if (!(image instanceof HTMLImageElement) || images.has(image)) continue;\r\n images.add(image);\r\n image.addEventListener('load', refresh);\r\n image.addEventListener('error', imageError);\r\n }\r\n if (backend._shared) update(backend);\r\n };\r\n const imageError = () => source.fire('error', { error: new Error('Unable to load native layer image') });\r\n state.refresh = refresh;\r\n state.reorder = front => {\r\n order = front ? ++map._nativeGPUOrder : --map._nativeGPUBack;\r\n refresh();\r\n };\r\n const view = () => {\r\n viewDirty = true;\r\n if (backend._shared) update(backend);\r\n };\r\n const events = 'load tileload tileunload move drag';\r\n source.on(events, refresh);\r\n // Panning and camera changes never retriangulate paths or re-upload tile geometry.\r\n map.on('zoomend', refresh);\r\n if (marker) map.on('move zoom rotate pitch resize viewreset', view);\r\n const removeEvents = nativeEvents(state);\r\n for (const name of ['setLatLng', 'setLatLngs', 'addLatLng', 'setRadius', 'setStyle', 'redraw',\r\n 'setIcon', 'setUrl', 'setBounds', 'setOpacity', 'setZIndex', 'setZIndexOffset', 'bringToFront', 'bringToBack']) {\r\n if (typeof source[name] !== 'function') continue;\r\n const own = Object.getOwnPropertyDescriptor(source, name), original = source[name];\r\n methods.set(name, own);\r\n source[name] = function (...args) {\r\n const result = original.apply(this, args);\r\n if ((name === 'bringToFront' || name === 'bringToBack') && this instanceof L.GridLayer) {\r\n const indices = Object.values(map._layers).filter(layer => layer !== this &&\r\n layer instanceof L.GridLayer && layer.getPane() === this.getPane()).map(layer => layer.options.zIndex || 0);\r\n const edge = name === 'bringToFront' ? Math.max(...indices) + 1 : Math.min(...indices) - 1;\r\n if (Number.isFinite(edge)) this.setZIndex(edge);\r\n }\r\n if (name === 'bringToFront') order = ++map._nativeGPUOrder;\r\n if (name === 'bringToBack') order = --map._nativeGPUBack;\r\n refresh();\r\n return result;\r\n };\r\n }\r\n state.dispose = () => {\r\n source.off(events, refresh);\r\n map.off('zoomend', refresh);\r\n if (marker) map.off('move zoom rotate pitch resize viewreset', view);\r\n removeEvents();\r\n state.refresh = state.reorder = null;\r\n for (const [name, descriptor] of methods) {\r\n if (descriptor) Object.defineProperty(source, name, descriptor);\r\n else delete source[name];\r\n }\r\n for (const mesh of meshes.values()) disposeMesh(backend, mesh);\r\n meshes.clear();\r\n for (const texture of textures.values()) destroyTexture(backend, texture.texture);\r\n textures.clear();\r\n for (const image of images) {\r\n image.removeEventListener('load', refresh);\r\n image.removeEventListener('error', imageError);\r\n }\r\n backend._beforeRender = null;\r\n backend.remove();\r\n };\r\n const ready = new Promise((resolve, reject) => {\r\n backend.once('ready', resolve);\r\n backend.once('error', ({ error }) => reject(error));\r\n });\r\n backend.on('error', ({ error }) => source.fire('error', { error }));\r\n refresh();\r\n backend.addTo(map);\r\n await ready.catch(error => {\r\n state.dispose();\r\n throw error;\r\n });\r\n if (!current()) return source;\r\n\r\n const local = latlng => {\r\n const crs = map.options.crs, origin = crs.project(backend.location), p = crs.project(latlng);\r\n const metres = Math.cos(backend.location.lat * Math.PI / 180);\r\n return [(p.x - origin.x) * metres, 0, -(p.y - origin.y) * metres];\r\n };\r\n const pixel = p => local(map.unproject(p));\r\n const styleMesh = (mesh, color, opacity) => {\r\n mesh.program.uniforms.baseColor.value = color;\r\n mesh.program.uniforms.opacity.value = opacity;\r\n if (source instanceof L.GridLayer) mesh.opacity = opacity;\r\n const zIndex = marker ? source._zIndex + (source._cameraZIndexOffset || 0) : source.options.zIndex;\r\n mesh.renderOrder = paneOrder * 1e6 + (zIndex || 0) * 1000 + order;\r\n mesh._nativeSource = source;\r\n mesh._nativeUsed = true;\r\n };\r\n const put = (key, position, color, opacity, texture, uv) => {\r\n if (!position.length) return;\r\n let mesh = meshes.get(key);\r\n const data = {\r\n position, normal: position.map((_, index) => index % 3 === 1 ? 1 : 0),\r\n ...(uv ? { uv } : {}),\r\n };\r\n if (!mesh || mesh.geometry.attributes.position.data.length !== position.length ||\r\n mesh.program.uniforms.baseTexture?.value !== texture) {\r\n if (mesh) disposeMesh(backend, mesh);\r\n mesh = createMesh(backend, data, {\r\n vertexColors: false, color, opacity, unlit: true, alphaMode: 'BLEND',\r\n ...(texture ? { baseTexture: texture } : {}),\r\n }, 0, source instanceof L.GridLayer ? rasterProgram : undefined);\r\n if (source instanceof L.GridLayer) {\r\n rasterProgram ||= mesh.program;\r\n mesh.texture = texture;\r\n }\r\n meshes.set(key, mesh);\r\n } else {\r\n const attribute = mesh.geometry.attributes.position;\r\n attribute.data.set(position);\r\n attribute.needsUpdate = true;\r\n mesh.geometry.bounds = null;\r\n }\r\n styleMesh(mesh, color, opacity);\r\n return mesh;\r\n };\r\n const textureFor = (key, image) => {\r\n if (!(image instanceof HTMLImageElement) && !(image instanceof HTMLCanvasElement)) {\r\n throw new Error('WebGPU native raster layers require image or canvas tiles');\r\n }\r\n let texture = textures.get(key);\r\n const url = image.currentSrc || image.src;\r\n if (!texture || texture.image !== image || texture.url !== url) {\r\n if (texture) {\r\n const mesh = meshes.get(key);\r\n if (mesh) disposeMesh(backend, mesh);\r\n meshes.delete(key);\r\n destroyTexture(backend, texture.texture);\r\n textures.delete(key);\r\n }\r\n const width = image.naturalWidth || image.width, height = image.naturalHeight || image.height;\r\n if (!width || !height) return;\r\n const { device } = backend.renderer;\r\n texture = {\r\n device, image, url, format: 'rgba8unorm', uploaded: null,\r\n texture: device.createTexture({\r\n size: [width, height], format: 'rgba8unorm',\r\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT,\r\n }),\r\n sampler: device.createSampler({ minFilter: 'linear', magFilter: 'linear' }),\r\n };\r\n textures.set(key, texture);\r\n if (image instanceof HTMLCanvasElement) {\r\n texture.pending = true;\r\n // Snapshot asynchronously: copying a GPU-backed 2D canvas directly forces a blocking readback in Chromium.\r\n createImageBitmap(image).then(bitmap => {\r\n try {\r\n if (!current() || textures.get(key) !== texture) return;\r\n device.queue.copyExternalImageToTexture({ source: bitmap }, { texture: texture.texture }, [width, height]);\r\n texture.uploaded = image;\r\n texture.pending = false;\r\n refresh();\r\n } finally {\r\n bitmap.close();\r\n }\r\n }).catch(error => {\r\n failed = true;\r\n source.fire('error', { error });\r\n });\r\n } else {\r\n // CORS/security failures reject ready or emit error on the owning native layer.\r\n try {\r\n device.queue.copyExternalImageToTexture({ source: image }, { texture: texture.texture }, [width, height]);\r\n } catch (error) {\r\n texture.texture.destroy();\r\n textures.delete(key);\r\n throw error;\r\n }\r\n texture.uploaded = image;\r\n }\r\n }\r\n texture.used = true;\r\n return texture.uploaded === image ? texture : undefined;\r\n };\r\n const quad = (key, image, corners, opacity) => {\r\n const texture = textureFor(key, image);\r\n if (!texture) return;\r\n const indices = [0, 2, 1, 1, 2, 3];\r\n return put(key, indices.flatMap(i => corners[i]), [1, 1, 1], opacity, texture,\r\n indices.flatMap(i => [[0, 0], [1, 0], [0, 1], [1, 1]][i]));\r\n };\r\n const boundsQuad = bounds => [\r\n bounds.getNorthWest(), bounds.getNorthEast(), bounds.getSouthWest(), bounds.getSouthEast(),\r\n ].map(local);\r\n const synchronize = () => {\r\n if (!current() || !backend.renderer || failed) return;\r\n if (!dirty && (!marker || !viewDirty)) return;\r\n dirty = false;\r\n viewDirty = false;\r\n for (const mesh of meshes.values()) mesh._nativeUsed = false;\r\n for (const texture of textures.values()) texture.used = false;\r\n if (source instanceof L.GridLayer) {\r\n for (const [key, tile] of Object.entries(source._tiles || {})) {\r\n if (!tile.loaded || tile.el instanceof HTMLImageElement && !tile.el.naturalWidth) continue;\r\n const opacity = (source.options.opacity ?? 1) * (tile._gpuOpacity ?? 1);\r\n const retained = textures.get(key);\r\n let mesh = meshes.get(key);\r\n if (mesh && retained?.image === tile.el && retained.url === (tile.el.currentSrc || tile.el.src)) {\r\n retained.used = true;\r\n styleMesh(mesh, [1, 1, 1], opacity);\r\n } else {\r\n const [nw, se] = source._tileCoordsToNwSe(tile.coords);\r\n mesh = quad(key, tile.el, boundsQuad(new L.LatLngBounds(nw, se)), opacity);\r\n }\r\n if (mesh) mesh.renderOrder += tile.coords.z / 100;\r\n }\r\n } else if (source instanceof L.ImageOverlay) {\r\n if (source._image?.complete && source._image.naturalWidth) {\r\n quad('image', source._image, boundsQuad(source.getBounds()), source.options.opacity ?? 1);\r\n }\r\n } else if (marker) {\r\n for (const [key, image] of [['shadow', source._shadow], ['icon', source._icon]]) {\r\n if (!(image instanceof HTMLImageElement) || !image.complete || !image.naturalWidth) continue;\r\n const world = new DOMPoint(...local(source.getLatLng()), 1)\r\n .matrixTransform(new DOMMatrix(backend.root.worldMatrix));\r\n const clip = world.matrixTransform(new DOMMatrix(backend.camera.projectionViewMatrix));\r\n const inverse = new DOMMatrix(backend.camera.projectionViewMatrix).inverse();\r\n const toLocal = new DOMMatrix(backend.root.worldMatrix).inverse();\r\n const options = source.options.icon.options, size = map.getSize();\r\n const dimensions = options[key === 'shadow' ? 'shadowSize' : 'iconSize'] ||\r\n [image.naturalWidth, image.naturalHeight];\r\n const width = dimensions.x ?? dimensions[0], height = dimensions.y ?? dimensions[1];\r\n const anchor = (key === 'shadow' && options.shadowAnchor) ||\r\n options.iconAnchor || [Math.floor(width / 2), Math.floor(height / 2)];\r\n const center = new L.Point((clip.x / clip.w + 1) * size.x / 2, (1 - clip.y / clip.w) * size.y / 2);\r\n const left = center.x - (anchor.x ?? anchor[0]), top = center.y - (anchor.y ?? anchor[1]);\r\n const corners = [[left, top], [left + width, top],\r\n [left, top + height], [left + width, top + height]].map(([x, y]) => {\r\n const offset = source._cameraIconPoint(x - center.x, y - center.y);\r\n x = center.x + offset.x; y = center.y + offset.y;\r\n const p = new DOMPoint(x / size.x * 2 - 1,\r\n 1 - y / size.y * 2, clip.z / clip.w, 1).matrixTransform(inverse);\r\n const result = new DOMPoint(p.x / p.w, p.y / p.w, p.z / p.w, 1).matrixTransform(toLocal);\r\n return [result.x, result.y, result.z];\r\n });\r\n const mesh = quad(key, image, corners, source.options.opacity ?? 1);\r\n if (key === 'shadow' && mesh) mesh.renderOrder -= 100 * 1e6;\r\n }\r\n } else {\r\n const { fill, stroke } = nativeGeometry(source, map, pixel);\r\n for (const [key, positions, color, opacity] of [\r\n ['fill', fill, source.options.fillColor || source.options.color, source.options.fillOpacity],\r\n ['stroke', stroke, source.options.color, source.options.opacity],\r\n ]) {\r\n if (!positions.length) continue;\r\n const { r, g, b } = parseColor(color);\r\n put(key, positions, [r, g, b], opacity ?? 1);\r\n }\r\n }\r\n for (const [key, mesh] of meshes) {\r\n if (mesh._nativeUsed) continue;\r\n disposeMesh(backend, mesh);\r\n meshes.delete(key);\r\n const texture = textures.get(key);\r\n if (texture) destroyTexture(backend, texture.texture);\r\n textures.delete(key);\r\n }\r\n for (const [key, texture] of textures) {\r\n if (texture.used) continue;\r\n destroyTexture(backend, texture.texture);\r\n textures.delete(key);\r\n }\r\n };\r\n backend._beforeRender = () => {\r\n try {\r\n synchronize();\r\n } catch (error) {\r\n failed = true;\r\n source.fire('error', { error });\r\n }\r\n };\r\n // ponytail: tessellate pixel-width strokes on zoomend; use shader extrusion for continuous zoom at scale.\r\n try {\r\n synchronize();\r\n } catch (error) {\r\n state.dispose();\r\n throw error;\r\n }\r\n update(backend);\r\n return source;\r\n}\r\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["createMesh", "destroyTexture", "disposeMesh", "nativeGeometry", "nativeEvents", "parseColor", "update", "nativeLayer", "state", "source", "map", "backend", "meshes", "textures", "methods", "images", "dirty", "viewDirty", "failed", "order", "rasterProgram", "marker", "paneOrder", "current", "refresh", "activeImages", "image", "imageError", "front", "view", "events", "removeEvents", "name", "own", "original", "args", "result", "indices", "layer", "edge", "descriptor", "mesh", "texture", "ready", "resolve", "reject", "error", "local", "latlng", "crs", "origin", "p", "metres", "pixel", "styleMesh", "color", "opacity", "zIndex", "put", "key", "position", "uv", "data", "_", "index", "attribute", "textureFor", "url", "width", "height", "device", "bitmap", "quad", "corners", "i", "boundsQuad", "bounds", "synchronize", "tile", "retained", "nw", "se", "clip", "inverse", "toLocal", "options", "size", "dimensions", "anchor", "center", "left", "top", "x", "y", "offset", "fill", "stroke", "positions", "r", "g", "b"]
|
|
7
|
-
}
|
package/dist/utils/nodeMatrix.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
function m(o){if(o.matrix)return Array.from(o.matrix);const[r,t,n,a]=o.rotation||[0,0,0,1],[i,x,f]=o.scale||[1,1,1];return[(1-2*(t*t+n*n))*i,2*(r*t+n*a)*i,2*(r*n-t*a)*i,0,2*(r*t-n*a)*x,(1-2*(r*r+n*n))*x,2*(t*n+r*a)*x,0,2*(r*n+t*a)*f,2*(t*n-r*a)*f,(1-2*(r*r+t*t))*f,0,...o.translation||[0,0,0],1]}export{m as nodeMatrix};
|
|
2
|
-
//# sourceMappingURL=nodeMatrix.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/nodeMatrix.js"],
|
|
4
|
-
"sourcesContent": ["/** glTF quaternion/translation/scale to a column-major matrix. */\n\nexport function nodeMatrix(spec) {\n if (spec.matrix) return Array.from(spec.matrix);\n // glTF stores quaternions [x,y,z,w]; convert directly to a scaled column-major matrix.\n const [x, y, z, w] = spec.rotation || [0, 0, 0, 1], [sx, sy, sz] = spec.scale || [1, 1, 1];\n return [\n (1 - 2 * (y * y + z * z)) * sx,\n 2 * (x * y + z * w) * sx,\n 2 * (x * z - y * w) * sx,\n 0,\n 2 * (x * y - z * w) * sy,\n (1 - 2 * (x * x + z * z)) * sy,\n 2 * (y * z + x * w) * sy, 0,\n 2 * (x * z + y * w) * sz,\n 2 * (y * z - x * w) * sz,\n (1 - 2 * (x * x + y * y)) * sz,\n 0,\n ...(spec.translation || [0, 0, 0]),\n 1,\n ];\n}\n"],
|
|
5
|
-
"mappings": "AAEO,SAASA,EAAWC,EAAM,CAC/B,GAAIA,EAAK,OAAQ,OAAO,MAAM,KAAKA,EAAK,MAAM,EAE9C,KAAM,CAACC,EAAGC,EAAGC,EAAGC,CAAC,EAAIJ,EAAK,UAAY,CAAC,EAAG,EAAG,EAAG,CAAC,EAAG,CAACK,EAAIC,EAAIC,CAAE,EAAIP,EAAK,OAAS,CAAC,EAAG,EAAG,CAAC,EACzF,MAAO,EACJ,EAAI,GAAKE,EAAIA,EAAIC,EAAIA,IAAME,EAC5B,GAAKJ,EAAIC,EAAIC,EAAIC,GAAKC,EACtB,GAAKJ,EAAIE,EAAID,EAAIE,GAAKC,EACtB,EACA,GAAKJ,EAAIC,EAAIC,EAAIC,GAAKE,GACrB,EAAI,GAAKL,EAAIA,EAAIE,EAAIA,IAAMG,EAC5B,GAAKJ,EAAIC,EAAIF,EAAIG,GAAKE,EAAI,EAC1B,GAAKL,EAAIE,EAAID,EAAIE,GAAKG,EACtB,GAAKL,EAAIC,EAAIF,EAAIG,GAAKG,GACrB,EAAI,GAAKN,EAAIA,EAAIC,EAAIA,IAAMK,EAC5B,EACA,GAAIP,EAAK,aAAe,CAAC,EAAG,EAAG,CAAC,EAChC,CACF,CACF",
|
|
6
|
-
"names": ["nodeMatrix", "spec", "x", "y", "z", "w", "sx", "sy", "sz"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import*as r from"./attach.js";import*as e from"./onClick.js";import*as l from"./onPointerLeave.js";import*as p from"./onPointerMove.js";function n(o,i){if(!o.location){const t=i.getCenter();o.location=new L.LatLng(t.lat,t.lng)}(o.url||o._geojson||o.options.tooltip||o.modelUrl)&&(o.container=i.getContainer(),o._pointerEvents||={mousemove:t=>p.onPointerMove(o,t),click:t=>e.onClick(o,t),mouseleave:()=>l.onPointerLeave(o)},o.options.tooltip&&(o._tooltip=L.DomUtil.create("div","leaflet-3d-tooltip",o.container),o._tooltip.hidden=!0,o._tooltip.setAttribute("role","tooltip"),o._tooltip.setAttribute("aria-live","polite"),o._tooltip.style.cssText="position:absolute;z-index:600;max-width:220px;padding:10px 12px;border:1px solid #6b5140;border-radius:6px;background:#fffaf0;box-shadow:0 3px 12px #0005;color:#30251d;font:13px/1.45 sans-serif;pointer-events:none"),L.DomEvent.on(o.container,o._pointerEvents)),o.root&&r.attach(o,i).then(()=>o._added.resolve(),t=>o.fire("error",{error:t}))}export{n as onAdd3DLayer};
|
|
2
|
-
//# sourceMappingURL=onAdd3DLayer.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/onAdd3DLayer.js"],
|
|
4
|
-
"sourcesContent": ["import * as attach from './attach.js';\nimport * as onClick from './onClick.js';\nimport * as onPointerLeave from './onPointerLeave.js';\nimport * as onPointerMove from './onPointerMove.js';\n\n/** Attach interaction immediately; initialization may finish before or after onAdd. */\nexport function onAdd3DLayer(backend, map) {\n if (!backend.location) {\n const center = map.getCenter();\n backend.location = new L.LatLng(center.lat, center.lng);\n }\n if (backend.url || backend._geojson || backend.options.tooltip || backend.modelUrl) {\n backend.container = map.getContainer();\n backend._pointerEvents ||= {\n mousemove: event => onPointerMove.onPointerMove(backend, event),\n click: event => onClick.onClick(backend, event),\n mouseleave: () => onPointerLeave.onPointerLeave(backend),\n };\n if (backend.options.tooltip) {\n backend._tooltip = L.DomUtil.create('div', 'leaflet-3d-tooltip', backend.container);\n backend._tooltip.hidden = true;\n backend._tooltip.setAttribute('role', 'tooltip');\n backend._tooltip.setAttribute('aria-live', 'polite');\n backend._tooltip.style.cssText = 'position:absolute;z-index:600;max-width:220px;padding:10px 12px;border:1px solid #6b5140;border-radius:6px;background:#fffaf0;box-shadow:0 3px 12px #0005;color:#30251d;font:13px/1.45 sans-serif;pointer-events:none';\n }\n L.DomEvent.on(backend.container, backend._pointerEvents);\n }\n if (backend.root) {\n attach.attach(backend, map).then(() => backend._added.resolve(), error => backend.fire('error', { error }));\n }\n}\n"],
|
|
5
|
-
"mappings": "AAAA,UAAYA,MAAY,cACxB,UAAYC,MAAa,eACzB,UAAYC,MAAoB,sBAChC,UAAYC,MAAmB,qBAGxB,SAASC,EAAaC,EAASC,EAAK,CACzC,GAAI,CAACD,EAAQ,SAAU,CACrB,MAAME,EAASD,EAAI,UAAU,EAC7BD,EAAQ,SAAW,IAAI,EAAE,OAAOE,EAAO,IAAKA,EAAO,GAAG,CACxD,EACIF,EAAQ,KAAOA,EAAQ,UAAYA,EAAQ,QAAQ,SAAWA,EAAQ,YACxEA,EAAQ,UAAYC,EAAI,aAAa,EACrCD,EAAQ,iBAAmB,CACzB,UAAWG,GAASL,EAAc,cAAcE,EAASG,CAAK,EAC9D,MAAOA,GAASP,EAAQ,QAAQI,EAASG,CAAK,EAC9C,WAAY,IAAMN,EAAe,eAAeG,CAAO,CACzD,EACIA,EAAQ,QAAQ,UAClBA,EAAQ,SAAW,EAAE,QAAQ,OAAO,MAAO,qBAAsBA,EAAQ,SAAS,EAClFA,EAAQ,SAAS,OAAS,GAC1BA,EAAQ,SAAS,aAAa,OAAQ,SAAS,EAC/CA,EAAQ,SAAS,aAAa,YAAa,QAAQ,EACnDA,EAAQ,SAAS,MAAM,QAAU,yNAEnC,EAAE,SAAS,GAAGA,EAAQ,UAAWA,EAAQ,cAAc,GAErDA,EAAQ,MACVL,EAAO,OAAOK,EAASC,CAAG,EAAE,KAAK,IAAMD,EAAQ,OAAO,QAAQ,EAAGI,GAASJ,EAAQ,KAAK,QAAS,CAAE,MAAAI,CAAM,CAAC,CAAC,CAE9G",
|
|
6
|
-
"names": ["attach", "onClick", "onPointerLeave", "onPointerMove", "onAdd3DLayer", "backend", "map", "center", "event", "error"]
|
|
7
|
-
}
|
package/dist/utils/onAddSun.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{underEntry as D}from"./underEntry.js";import{update as P}from"./update.js";import{atmosphere as A}from"./atmosphere.js";import{moonPosition as U}from"./moonPosition.js";import{projectCelestialBody as N}from"./projectCelestialBody.js";import{solarPosition as _}from"./solarPosition.js";function B(a,t){if(!a.control){const e=new L.Control({position:"bottomright"});e.live=!0;let r,s,g,l,w;const k=t.getContainer().style.getPropertyValue("--leaflet-sky-background"),T="position:absolute;width:18px;height:18px;border-radius:50%;transform:translate(-50%,-50%);pointer-events:none;",m=L.DomUtil.create("div","sunlight-sun"),f=L.DomUtil.create("div","sunlight-moon");m.style.cssText=T+"background:#fff3bd;box-shadow:0 0 18px 7px #ffd27699;",f.style.cssText=T+"background:#dce5f2;box-shadow:0 0 10px 2px #cbdcff55;",m.setAttribute("role","img"),m.setAttribute("aria-label","Sun"),f.setAttribute("role","img"),f.setAttribute("aria-label","Moon");const c=()=>{const o=t._sunlight,n=t._pitchSky;o?t.getContainer().style.setProperty("--leaflet-sky-background",o.background):k?t.getContainer().style.setProperty("--leaflet-sky-background",k):t.getContainer().style.removeProperty("--leaflet-sky-background");const i=t.getSize(),p=t.getPitch()*Math.PI/180,E=t.getBearing()*Math.PI/180;for(const[u,v]of[[m,o],[f,o?.moon]]){if(u.hidden=!0,!n||!v||v.altitude<=0||!o)continue;u.parentNode!==n&&n.append(u);const S=N(v.direction,i,p,E);if(!S)continue;const{left:y,top:C}=S;u.hidden=y<0||y>i.x||C<0||C>n.clientHeight||n.style.display==="none",u.style.left=`${y}px`,u.style.top=`${C}px`}},x=()=>{const o=L.Layer._renderers.get(t);o&&P(o)},d=()=>{try{e.live&&(e.time=new Date);const o=e.time.toISOString();r.value=o.slice(0,10),s.value=String(e.time.getUTCHours()*60+e.time.getUTCMinutes()),g.textContent=`${o.slice(11,16)} UTC${e.live?" \xB7 now":""}`;const n=t.getCenter(),i=t._sunlight=_(e.time,n.lat,n.lng);Object.assign(i,A(i.altitude)),i.moon=U(e.time,n.lat,n.lng),l.textContent=i.altitude<=0?"Night \xB7 no direct sunlight":i.altitude<3?"Low sun \xB7 shadows paused":`Sun altitude ${i.altitude.toFixed(1)}\xB0`,t.fire("simulationtimechange",{time:new Date(e.time),live:e.live}),c(),x()}catch(o){delete t._sunlight,c(),x(),l.textContent=`Error: ${o.message}`,console.error("Solar simulation",o)}};e.onAdd=()=>{const o=L.DomUtil.create("div","sunlight-control");o.style.cssText="color:#222;width:min(200px,calc(100vw - 60px));font:12px/1.4 sans-serif;",r=document.createElement("input"),r.type="date",r.style.cssText="width:100%;box-sizing:border-box;",r.setAttribute("aria-label","Solar date (UTC)"),s=document.createElement("input"),s.type="range",s.style.cssText="width:100%;box-sizing:border-box;margin:10px 0 4px;cursor:pointer;",s.min="0",s.max="1439",s.step="1",s.setAttribute("aria-label","Time of day (UTC)"),g=document.createElement("output"),g.style.cssText="font-weight:bold;font-variant-numeric:tabular-nums;",g.setAttribute("aria-live","off");const n=document.createElement("button");n.type="button",n.textContent="Now",n.onclick=()=>{e.live=!0,d()};const i=document.createElement("div");i.className="sunlight-time",i.style.cssText="display:flex;justify-content:space-between;align-items:center;",i.append(g,n),l=document.createElement("div"),l.className="sunlight-status",l.style.marginTop="5px",l.setAttribute("role","status");const p=document.createElement("small");return p.style.color="#555",p.textContent="Indicative \xB7 loaded geometry only. Streetlight illumination is estimated, not measured lux.",o.append(r,s,i,l,p),r.onchange=s.oninput=()=>{if(e.live=!1,!r.value||!r.validity.valid){e.time=new Date(NaN),t.fire("simulationtimechange",{time:null,live:!1}),delete t._sunlight,c(),x(),l.textContent="Error: choose a valid solar date";return}e.time=new Date(`${r.value}T00:00:00Z`),e.time.setUTCMinutes(Number(s.value)),d()},L.DomEvent.disableClickPropagation(o),L.DomEvent.disableScrollPropagation(o),d(),w=setInterval(()=>{e.live&&d()},6e4),t.on("moveend",d),t.on("move rotate pitch resize",c),o},e.onRemove=()=>{clearInterval(w),t.fire("simulationtimechange",{time:null,live:!1}),t.off("moveend",d),t.off("move rotate pitch resize",c),delete t._sunlight,c(),m.remove(),f.remove(),x()},a.control=e}a.control._map||a.control.addTo(t);const b=a.control.getContainer(),h=D(a,b);b.classList.toggle("leaflet-control",!h),b.classList.toggle("leaflet-bar",!h),Object.assign(b.style,h?{background:"",padding:"2px 0 6px 20px",margin:"0"}:{background:"#fff",padding:"8px",margin:""})}export{B as onAddSun};
|
|
2
|
-
//# sourceMappingURL=onAddSun.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/onAddSun.js"],
|
|
4
|
-
"sourcesContent": ["import { underEntry } from './underEntry.js';\nimport { update as updateScene } from \"./update.js\";\nimport { atmosphere } from './atmosphere.js';\nimport { moonPosition } from './moonPosition.js';\nimport { projectCelestialBody } from './projectCelestialBody.js';\nimport { solarPosition } from './solarPosition.js';\n\nexport function onAddSun(layer, map) {\n if (!layer.control) {\n const control = new L.Control({ position: 'bottomright' });\n control.live = true;\n let date, slider, output, status, timer;\n const originalSky = map.getContainer().style.getPropertyValue('--leaflet-sky-background');\n const disc = 'position:absolute;width:18px;height:18px;border-radius:50%;transform:translate(-50%,-50%);pointer-events:none;';\n const sunDisc = L.DomUtil.create('div', 'sunlight-sun');\n const moonDisc = L.DomUtil.create('div', 'sunlight-moon');\n sunDisc.style.cssText = disc + 'background:#fff3bd;box-shadow:0 0 18px 7px #ffd27699;';\n moonDisc.style.cssText = disc + 'background:#dce5f2;box-shadow:0 0 10px 2px #cbdcff55;';\n sunDisc.setAttribute('role', 'img'); sunDisc.setAttribute('aria-label', 'Sun');\n moonDisc.setAttribute('role', 'img'); moonDisc.setAttribute('aria-label', 'Moon');\n const updateSky = () => {\n const sun = map._sunlight, sky = map._pitchSky;\n if (sun) map.getContainer().style.setProperty('--leaflet-sky-background', sun.background);\n else if (originalSky) map.getContainer().style.setProperty('--leaflet-sky-background', originalSky);\n else map.getContainer().style.removeProperty('--leaflet-sky-background');\n const size = map.getSize(), pitch = map.getPitch() * Math.PI / 180, bearing = map.getBearing() * Math.PI / 180;\n for (const [disc, body] of [[sunDisc, sun], [moonDisc, sun?.moon]]) {\n disc.hidden = true;\n if (!sky || !body || body.altitude <= 0 || !sun) continue;\n if (disc.parentNode !== sky) sky.append(disc);\n const point = projectCelestialBody(body.direction, size, pitch, bearing);\n if (!point) continue;\n const { left, top } = point;\n disc.hidden = left < 0 || left > size.x || top < 0 || top > sky.clientHeight || sky.style.display === 'none';\n disc.style.left = `${left}px`; disc.style.top = `${top}px`;\n }\n };\n const render = () => {\n const renderer = L.Layer._renderers.get(map);\n if (renderer) updateScene(renderer);\n };\n const update = () => {\n try {\n if (control.live) control.time = new Date();\n const time = control.time.toISOString();\n date.value = time.slice(0, 10);\n slider.value = String(control.time.getUTCHours() * 60 + control.time.getUTCMinutes());\n output.textContent = `${time.slice(11, 16)} UTC${control.live ? ' \u00B7 now' : ''}`;\n const center = map.getCenter();\n const sun = map._sunlight = solarPosition(control.time, center.lat, center.lng);\n Object.assign(sun, atmosphere(sun.altitude));\n sun.moon = moonPosition(control.time, center.lat, center.lng);\n status.textContent = sun.altitude <= 0\n ? 'Night \u00B7 no direct sunlight'\n : sun.altitude < 3\n ? 'Low sun \u00B7 shadows paused'\n : `Sun altitude ${sun.altitude.toFixed(1)}\u00B0`;\n map.fire('simulationtimechange', { time: new Date(control.time), live: control.live });\n updateSky();\n render();\n } catch (error) {\n delete map._sunlight;\n updateSky();\n render();\n status.textContent = `Error: ${error.message}`;\n console.error('Solar simulation', error);\n }\n };\n control.onAdd = () => {\n const container = L.DomUtil.create('div', 'sunlight-control');\n container.style.cssText = 'color:#222;width:min(200px,calc(100vw - 60px));font:12px/1.4 sans-serif;';\n date = document.createElement('input');\n date.type = 'date';\n date.style.cssText = 'width:100%;box-sizing:border-box;';\n date.setAttribute('aria-label', 'Solar date (UTC)');\n slider = document.createElement('input');\n slider.type = 'range';\n slider.style.cssText = 'width:100%;box-sizing:border-box;margin:10px 0 4px;cursor:pointer;';\n slider.min = '0'; slider.max = '1439'; slider.step = '1';\n slider.setAttribute('aria-label', 'Time of day (UTC)');\n output = document.createElement('output');\n output.style.cssText = 'font-weight:bold;font-variant-numeric:tabular-nums;';\n output.setAttribute('aria-live', 'off');\n const now = document.createElement('button');\n now.type = 'button'; now.textContent = 'Now';\n now.onclick = () => { control.live = true; update(); };\n const timeRow = document.createElement('div');\n timeRow.className = 'sunlight-time';\n timeRow.style.cssText = 'display:flex;justify-content:space-between;align-items:center;';\n timeRow.append(output, now);\n status = document.createElement('div');\n status.className = 'sunlight-status';\n status.style.marginTop = '5px';\n status.setAttribute('role', 'status');\n const note = document.createElement('small');\n note.style.color = '#555';\n note.textContent = 'Indicative \u00B7 loaded geometry only. Streetlight illumination is estimated, not measured lux.';\n container.append(date, slider, timeRow, status, note);\n date.onchange = slider.oninput = () => {\n control.live = false;\n if (!date.value || !date.validity.valid) {\n control.time = new Date(NaN);\n map.fire('simulationtimechange', { time: null, live: false });\n delete map._sunlight;\n updateSky();\n render();\n status.textContent = 'Error: choose a valid solar date';\n return;\n }\n control.time = new Date(`${date.value}T00:00:00Z`);\n control.time.setUTCMinutes(Number(slider.value));\n update();\n };\n L.DomEvent.disableClickPropagation(container);\n L.DomEvent.disableScrollPropagation(container);\n update();\n timer = setInterval(() => { if (control.live) update(); }, 60000);\n map.on('moveend', update);\n map.on('move rotate pitch resize', updateSky);\n return container;\n };\n control.onRemove = () => {\n clearInterval(timer);\n map.fire('simulationtimechange', { time: null, live: false });\n map.off('moveend', update);\n map.off('move rotate pitch resize', updateSky);\n delete map._sunlight;\n updateSky();\n sunDisc.remove(); moonDisc.remove();\n render();\n };\n layer.control = control;\n }\n if (!layer.control._map) {\n layer.control.addTo(map);\n }\n // Shown under this layer's entry in the layers control; a standalone control without one.\n const container = layer.control.getContainer(), nested = underEntry(layer, container);\n container.classList.toggle('leaflet-control', !nested);\n container.classList.toggle('leaflet-bar', !nested);\n Object.assign(\n container.style,\n nested\n ? { background: '', padding: '2px 0 6px 20px', margin: '0' }\n : { background: '#fff', padding: '8px', margin: '' }\n );\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["underEntry", "updateScene", "atmosphere", "moonPosition", "projectCelestialBody", "solarPosition", "onAddSun", "layer", "map", "control", "date", "slider", "output", "status", "timer", "originalSky", "disc", "sunDisc", "moonDisc", "updateSky", "sun", "sky", "size", "pitch", "bearing", "body", "point", "left", "top", "render", "renderer", "update", "time", "center", "error", "container", "now", "timeRow", "note", "nested"]
|
|
7
|
-
}
|
package/dist/utils/onClick.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{findFeature as r}from"./findFeature.js";import{setHighlight as e}from"./setHighlight.js";import{showFeature as f}from"./showFeature.js";function n(o,t){const i=r(o,t);o.hoveredFeature=i,e(o,i),f(o,i,t),o.fire("featureclick",{feature:i,originalEvent:t})}export{n as onClick};
|
|
2
|
-
//# sourceMappingURL=onClick.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/onClick.js"],
|
|
4
|
-
"sourcesContent": ["import { findFeature } from './findFeature.js';\nimport { setHighlight } from './setHighlight.js';\nimport { showFeature } from './showFeature.js';\n\n/** Emit click without moving the map or pinning the tooltip. */\n\nexport function onClick(layer, event) {\n const feature = findFeature(layer, event);\n layer.hoveredFeature = feature;\n setHighlight(layer, feature);\n showFeature(layer, feature, event);\n layer.fire('featureclick', { feature, originalEvent: event });\n}\n"],
|
|
5
|
-
"mappings": "AAAA,OAAS,eAAAA,MAAmB,mBAC5B,OAAS,gBAAAC,MAAoB,oBAC7B,OAAS,eAAAC,MAAmB,mBAIrB,SAASC,EAAQC,EAAOC,EAAO,CACpC,MAAMC,EAAUN,EAAYI,EAAOC,CAAK,EACxCD,EAAM,eAAiBE,EACvBL,EAAaG,EAAOE,CAAO,EAC3BJ,EAAYE,EAAOE,EAASD,CAAK,EACjCD,EAAM,KAAK,eAAgB,CAAE,QAAAE,EAAS,cAAeD,CAAM,CAAC,CAC9D",
|
|
6
|
-
"names": ["findFeature", "setHighlight", "showFeature", "onClick", "layer", "event", "feature"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{update as r}from"./update.js";import{render as u}from"./render.js";function o(){const e=this;e._queued||(e._queued=!0,queueMicrotask(()=>{e._queued=!1,!(e._shared!==e||!e.renderer)&&(e._map._animatingZoom?r(e):u(e))}))}export{o as onMapChange};
|
|
2
|
-
//# sourceMappingURL=onMapChange.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/onMapChange.js"],
|
|
4
|
-
"sourcesContent": ["import { update } from \"./update.js\";\nimport { render } from \"./render.js\";\n\n/** Map movement: render within the frame of Leaflet's CSS transforms, coalescing same-tick events. */\n\nexport function onMapChange() {\n const layer = this;\n if (layer._queued) return;\n layer._queued = true;\n queueMicrotask(() => {\n layer._queued = false;\n if (layer._shared !== layer || !layer.renderer) return;\n if (layer._map._animatingZoom) update(layer);\n else render(layer);\n });\n}\n"],
|
|
5
|
-
"mappings": "AAAA,OAAS,UAAAA,MAAc,cACvB,OAAS,UAAAC,MAAc,cAIhB,SAASC,GAAc,CAC5B,MAAMC,EAAQ,KACVA,EAAM,UACVA,EAAM,QAAU,GAChB,eAAe,IAAM,CACnBA,EAAM,QAAU,GACZ,EAAAA,EAAM,UAAYA,GAAS,CAACA,EAAM,YAClCA,EAAM,KAAK,eAAgBH,EAAOG,CAAK,EACtCF,EAAOE,CAAK,EACnB,CAAC,EACH",
|
|
6
|
-
"names": ["update", "render", "onMapChange", "layer"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{attach as i}from"./attach.js";import{setRasterTerrain as s,updateRasterTiles as f}from"./rasterTiles.js";function a(r,t){r.location||(r.location=t.getCenter());const e=i(r,t);e.then(()=>{r._added.resolve(),s(r,t._terrain3D)}).catch(o=>r.fire("error",{error:o})),Promise.all([e,r.ready]).then(()=>{r._map===t&&t.hasLayer(r)&&f(r)}).catch(o=>r.fire("error",{error:o}))}export{a as onPMTileAdd};
|
|
2
|
-
//# sourceMappingURL=onPMTileAdd.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/onPMTileAdd.js"],
|
|
4
|
-
"sourcesContent": ["import { attach } from './attach.js';\nimport { setRasterTerrain, updateRasterTiles } from './rasterTiles.js';\n\nexport function onPMTileAdd(backend, map) {\n if (!backend.location) backend.location = map.getCenter();\n const attached = attach(backend, map);\n attached.then(() => {\n backend._added.resolve();\n setRasterTerrain(backend, map._terrain3D);\n })\n .catch(error => backend.fire('error', { error }));\n Promise.all([attached, backend.ready]).then(() => {\n if (backend._map === map && map.hasLayer(backend)) updateRasterTiles(backend);\n }).catch(error => backend.fire('error', { error }));\n}\n"],
|
|
5
|
-
"mappings": "AAAA,OAAS,UAAAA,MAAc,cACvB,OAAS,oBAAAC,EAAkB,qBAAAC,MAAyB,mBAE7C,SAASC,EAAYC,EAASC,EAAK,CACnCD,EAAQ,WAAUA,EAAQ,SAAWC,EAAI,UAAU,GACxD,MAAMC,EAAWN,EAAOI,EAASC,CAAG,EACpCC,EAAS,KAAK,IAAM,CAClBF,EAAQ,OAAO,QAAQ,EACvBH,EAAiBG,EAASC,EAAI,UAAU,CAC1C,CAAC,EACE,MAAME,GAASH,EAAQ,KAAK,QAAS,CAAE,MAAAG,CAAM,CAAC,CAAC,EAClD,QAAQ,IAAI,CAACD,EAAUF,EAAQ,KAAK,CAAC,EAAE,KAAK,IAAM,CAC5CA,EAAQ,OAASC,GAAOA,EAAI,SAASD,CAAO,GAAGF,EAAkBE,CAAO,CAC9E,CAAC,EAAE,MAAMG,GAASH,EAAQ,KAAK,QAAS,CAAE,MAAAG,CAAM,CAAC,CAAC,CACpD",
|
|
6
|
-
"names": ["attach", "setRasterTerrain", "updateRasterTiles", "onPMTileAdd", "backend", "map", "attached", "error"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/onPMTileRemove.js"],
|
|
4
|
-
"sourcesContent": ["import { releaseRasterTiles } from './rasterTiles.js';\nimport { onRemove3DLayer } from './onRemove3DLayer.js';\n\nexport function onPMTileRemove(backend, map) {\n releaseRasterTiles(backend);\n backend._terrain3D = null;\n onRemove3DLayer(backend, map);\n}\n"],
|
|
5
|
-
"mappings": "AAAA,OAAS,sBAAAA,MAA0B,mBACnC,OAAS,mBAAAC,MAAuB,uBAEzB,SAASC,EAAeC,EAASC,EAAK,CAC3CJ,EAAmBG,CAAO,EAC1BA,EAAQ,WAAa,KACrBF,EAAgBE,EAASC,CAAG,CAC9B",
|
|
6
|
-
"names": ["releaseRasterTiles", "onRemove3DLayer", "onPMTileRemove", "backend", "map"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/onPointerLeave.js"],
|
|
4
|
-
"sourcesContent": ["import { setHighlight } from './setHighlight.js';\nimport { showFeature } from './showFeature.js';\n\n/** Clear hover, highlight and tooltip without retaining a selected feature. */\n\nexport function onPointerLeave(layer) {\n layer.hoveredFeature = null;\n setHighlight(layer, null);\n showFeature(layer, null);\n layer.fire('featurehover', { feature: null });\n}\n"],
|
|
5
|
-
"mappings": "AAAA,OAAS,gBAAAA,MAAoB,oBAC7B,OAAS,eAAAC,MAAmB,mBAIrB,SAASC,EAAeC,EAAO,CACpCA,EAAM,eAAiB,KACvBH,EAAaG,EAAO,IAAI,EACxBF,EAAYE,EAAO,IAAI,EACvBA,EAAM,KAAK,eAAgB,CAAE,QAAS,IAAK,CAAC,CAC9C",
|
|
6
|
-
"names": ["setHighlight", "showFeature", "onPointerLeave", "layer"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{findFeature as r}from"./findFeature.js";import{setHighlight as t}from"./setHighlight.js";import{showFeature as i}from"./showFeature.js";function m(e,o){e.hoveredFeature=r(e,o),t(e,e.hoveredFeature),i(e,e.hoveredFeature,o),e.fire("featurehover",{feature:e.hoveredFeature,originalEvent:o})}export{m as onPointerMove};
|
|
2
|
-
//# sourceMappingURL=onPointerMove.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/onPointerMove.js"],
|
|
4
|
-
"sourcesContent": ["import { findFeature } from './findFeature.js';\nimport { setHighlight } from './setHighlight.js';\nimport { showFeature } from './showFeature.js';\n\n/** Hover is transient; featurehover also reports misses with feature:null. */\n\nexport function onPointerMove(layer, event) {\n layer.hoveredFeature = findFeature(layer, event);\n setHighlight(layer, layer.hoveredFeature);\n showFeature(layer, layer.hoveredFeature, event);\n layer.fire('featurehover', {\n feature: layer.hoveredFeature,\n originalEvent: event\n });\n}\n"],
|
|
5
|
-
"mappings": "AAAA,OAAS,eAAAA,MAAmB,mBAC5B,OAAS,gBAAAC,MAAoB,oBAC7B,OAAS,eAAAC,MAAmB,mBAIrB,SAASC,EAAcC,EAAOC,EAAO,CAC1CD,EAAM,eAAiBJ,EAAYI,EAAOC,CAAK,EAC/CJ,EAAaG,EAAOA,EAAM,cAAc,EACxCF,EAAYE,EAAOA,EAAM,eAAgBC,CAAK,EAC9CD,EAAM,KAAK,eAAgB,CACzB,QAASA,EAAM,eACf,cAAeC,CACjB,CAAC,CACH",
|
|
6
|
-
"names": ["findFeature", "setHighlight", "showFeature", "onPointerMove", "layer", "event"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import*as u from"./destroyTexture.js";import*as i from"./endZoom.js";import*as l from"./onMapChange.js";import*as _ from"./onPointerLeave.js";import*as m from"./onZoomAnim.js";import*as f from"./releaseArea.js";import{setParent as y}from"./setParent.js";import*as n from"./startZoom.js";import*as a from"./update.js";function z(e,r){e._added=Promise.withResolvers(),e.container&&(_.onPointerLeave(e),L.DomEvent.off(e.container,e._pointerEvents),e.container=null);for(const o of e._areas.values())f.releaseArea(e,o);e._areas.clear(),e._tooltip?.remove(),e._tooltip=null,(e.url||e._geojson)&&f.updateStatus(e,!1);const s=e._shared;if(s){if(y(e.root,null),s._layers.delete(e),s===e)if(r.off("move zoom rotate pitch resize viewreset layeradd layerremove",l.onMapChange,e),r.off("zoomstart",n.startZoom,e),r.off("zoomanim",m.onZoomAnim,e),r.off("zoomend",i.endZoom,e),cancelAnimationFrame(e._frame),e._frame=null,e._queued=!1,e._layers.size){const o=e._layers.values().next().value;for(const t of["_layers","_sceneOrigin","_size","_zoomLevel","_zoomTransitions","_zoomView","_cursor","_roofRaster"])o[t]=e[t],delete e[t];for(const t of o._layers)t._shared=o;L.Layer._renderers.set(r,o),r.on("move zoom rotate pitch resize viewreset layeradd layerremove",l.onMapChange,o),r.on("zoomstart",n.startZoom,o),r.on("zoomanim",m.onZoomAnim,o),r.on("zoomend",i.endZoom,o),a.update(o)}else{e._roofRaster&&u.destroyTexture(e,e._roofRaster.texture.texture),e._roofRaster=null;for(const t of e._zoomTransitions?.keys()||[])t.play();e._zoomTransitions=null,e._zoomView=null,delete r._cameraView,r.getContainer().classList.remove("leaflet-camera-zoom");const o=e.renderer;o.canvas.remove(),o.device.queue.onSubmittedWorkDone().then(()=>{o.depthTexture?.destroy(),o.roofFallbackTexture?.texture?.destroy(),o.uniformBuffer?.destroy(),o.sunlight?.texture?.destroy(),o.sunlight?.buffer?.destroy(),o.sunlight?.lights?.destroy(),o.device.destroy()},t=>{e.fire("error",{error:t}),o.device.destroy()}),L.Layer._renderers.delete(r);for(const t of["_layers","_sceneOrigin","_size","_zoomLevel","_cursor"])delete e[t]}else a.update(s);e._shared=e.renderer=e.scene=e.camera=null}}export{z as onRemove3DLayer};
|
|
2
|
-
//# sourceMappingURL=onRemove3DLayer.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/onRemove3DLayer.js"],
|
|
4
|
-
"sourcesContent": ["import * as destroyTexture from './destroyTexture.js';\nimport * as endZoom from './endZoom.js';\nimport * as onMapChange from './onMapChange.js';\nimport * as onPointerLeave from './onPointerLeave.js';\nimport * as onZoomAnim from './onZoomAnim.js';\nimport * as releaseArea from './releaseArea.js';\nimport { setParent } from './setParent.js';\nimport * as startZoom from './startZoom.js';\nimport * as update from './update.js';\n\n/** Release source meshes/UI; retain manually added objects and model CPU data. */\nexport function onRemove3DLayer(backend, map) {\n backend._added = Promise.withResolvers();\n if (backend.container) {\n onPointerLeave.onPointerLeave(backend);\n L.DomEvent.off(backend.container, backend._pointerEvents);\n backend.container = null;\n }\n for (const area of backend._areas.values()) releaseArea.releaseArea(backend, area);\n backend._areas.clear();\n backend._tooltip?.remove();\n backend._tooltip = null;\n if (backend.url || backend._geojson) releaseArea.updateStatus(backend, false);\n const shared = backend._shared;\n if (!shared) return;\n setParent(backend.root, null);\n shared._layers.delete(backend);\n if (shared === backend) {\n map.off('move zoom rotate pitch resize viewreset layeradd layerremove', onMapChange.onMapChange, backend);\n map.off('zoomstart', startZoom.startZoom, backend);\n map.off('zoomanim', onZoomAnim.onZoomAnim, backend);\n map.off('zoomend', endZoom.endZoom, backend);\n cancelAnimationFrame(backend._frame);\n backend._frame = null;\n backend._queued = false;\n if (backend._layers.size) {\n // Keep the original scene origin and GPU resources when ownership changes.\n const next = backend._layers.values().next().value;\n for (const key of ['_layers', '_sceneOrigin', '_size', '_zoomLevel', '_zoomTransitions', '_zoomView', '_cursor', '_roofRaster']) {\n next[key] = backend[key];\n delete backend[key];\n }\n for (const layer of next._layers) layer._shared = next;\n L.Layer._renderers.set(map, next);\n map.on('move zoom rotate pitch resize viewreset layeradd layerremove', onMapChange.onMapChange, next);\n map.on('zoomstart', startZoom.startZoom, next);\n map.on('zoomanim', onZoomAnim.onZoomAnim, next);\n map.on('zoomend', endZoom.endZoom, next);\n update.update(next);\n } else {\n if (backend._roofRaster) destroyTexture.destroyTexture(backend, backend._roofRaster.texture.texture);\n backend._roofRaster = null;\n for (const animation of backend._zoomTransitions?.keys() || []) animation.play();\n backend._zoomTransitions = null;\n backend._zoomView = null;\n delete map._cameraView;\n map.getContainer().classList.remove('leaflet-camera-zoom');\n const renderer = backend.renderer;\n renderer.canvas.remove();\n renderer.device.queue.onSubmittedWorkDone()\n .then(() => {\n renderer.depthTexture?.destroy();\n renderer.roofFallbackTexture?.texture?.destroy();\n renderer.uniformBuffer?.destroy();\n renderer.sunlight?.texture?.destroy();\n renderer.sunlight?.buffer?.destroy();\n renderer.sunlight?.lights?.destroy();\n renderer.device.destroy();\n }, error => {\n backend.fire('error', { error });\n renderer.device.destroy();\n });\n L.Layer._renderers.delete(map);\n for (const key of ['_layers', '_sceneOrigin', '_size', '_zoomLevel', '_cursor']) delete backend[key];\n }\n } else update.update(shared);\n backend._shared = backend.renderer = backend.scene = backend.camera = null;\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["destroyTexture", "endZoom", "onMapChange", "onPointerLeave", "onZoomAnim", "releaseArea", "setParent", "startZoom", "update", "onRemove3DLayer", "backend", "map", "area", "shared", "next", "key", "layer", "animation", "renderer", "error"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{loadTerrain as o}from"./loadTerrain.js";import{setRasterTerrain as t}from"./rasterTiles.js";import{onAdd3DLayer as n}from"./onAdd3DLayer.js";function s(r,e){if(e._terrain3D&&e._terrain3D!==r)throw new Error("Only one terrain layer can be active per map");e._terrain3D=r,n(r,e),r._terrainPromise=r.root?o(r):new Promise(i=>r.once("ready",()=>o(r).then(i),r)),e.eachLayer(i=>{i._type==="pmtiles"&&t(i,r)}),e.fire("terrainchange")}export{s as onTerrainAdd};
|
|
2
|
-
//# sourceMappingURL=onTerrainAdd.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/onTerrainAdd.js"],
|
|
4
|
-
"sourcesContent": ["import { loadTerrain } from \"./loadTerrain.js\";\nimport { setRasterTerrain } from \"./rasterTiles.js\";\nimport { onAdd3DLayer } from './onAdd3DLayer.js';\n\nexport function onTerrainAdd(backend, map) {\n if (map._terrain3D && map._terrain3D !== backend) {\n throw new Error('Only one terrain layer can be active per map');\n }\n map._terrain3D = backend;\n onAdd3DLayer(backend, map);\n backend._terrainPromise = backend.root\n ? loadTerrain(backend)\n : new Promise(resolve => backend.once('ready', () => loadTerrain(backend).then(resolve), backend));\n map.eachLayer(layer => {\n if (layer._type === 'pmtiles') setRasterTerrain(layer, backend);\n });\n map.fire('terrainchange');\n}\n"],
|
|
5
|
-
"mappings": "AAAA,OAAS,eAAAA,MAAmB,mBAC5B,OAAS,oBAAAC,MAAwB,mBACjC,OAAS,gBAAAC,MAAoB,oBAEtB,SAASC,EAAaC,EAASC,EAAK,CACzC,GAAIA,EAAI,YAAcA,EAAI,aAAeD,EACvC,MAAM,IAAI,MAAM,8CAA8C,EAEhEC,EAAI,WAAaD,EACjBF,EAAaE,EAASC,CAAG,EACzBD,EAAQ,gBAAkBA,EAAQ,KAC9BJ,EAAYI,CAAO,EACnB,IAAI,QAAQE,GAAWF,EAAQ,KAAK,QAAS,IAAMJ,EAAYI,CAAO,EAAE,KAAKE,CAAO,EAAGF,CAAO,CAAC,EACnGC,EAAI,UAAUE,GAAS,CACjBA,EAAM,QAAU,WAAWN,EAAiBM,EAAOH,CAAO,CAChE,CAAC,EACDC,EAAI,KAAK,eAAe,CAC1B",
|
|
6
|
-
"names": ["loadTerrain", "setRasterTerrain", "onAdd3DLayer", "onTerrainAdd", "backend", "map", "resolve", "layer"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/onTerrainChange.js"],
|
|
4
|
-
"sourcesContent": ["import { releaseArea } from \"./releaseArea.js\";\nimport { updateArea } from \"./updateArea.js\";\n\n/** GeoJSON source areas: loading, building and releasing. */\n\nexport function onTerrainChange(layer) {\n if (!layer._map) return;\n for (const area of layer._areas.values()) {\n releaseArea(layer, area);\n }\n layer._areas.clear();\n updateArea(layer);\n}\n"],
|
|
5
|
-
"mappings": "AAAA,OAAS,eAAAA,MAAmB,mBAC5B,OAAS,cAAAC,MAAkB,kBAIpB,SAASC,EAAgBC,EAAO,CACrC,GAAKA,EAAM,KACX,WAAWC,KAAQD,EAAM,OAAO,OAAO,EACrCH,EAAYG,EAAOC,CAAI,EAEzBD,EAAM,OAAO,MAAM,EACnBF,EAAWE,CAAK,EAClB",
|
|
6
|
-
"names": ["releaseArea", "updateArea", "onTerrainChange", "layer", "area"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{destroyTexture as t}from"./destroyTexture.js";import{conformModelToTerrain as n}from"./conformModelToTerrain.js";import{disposeMesh as s}from"./disposeMesh.js";import{setRasterTerrain as f}from"./rasterTiles.js";import{removeRasterTile as _}from"./removeRasterTile.js";import{setTerrainHeight as m}from"./setTerrainHeight.js";import{onRemove3DLayer as u}from"./onRemove3DLayer.js";function p(r,i){r._terrainController?.abort(),r._terrainLoading=!1,r._terrainReady=!1,i.eachLayer(e=>{e._type==="pmtiles"&&f(e,null)});for(const e of r._rasterTiles.keys())_(r,e);i._terrain3D===r&&delete i._terrain3D;for(const e of Object.values(i._layers))n(e,null),m(e);i.fire("terrainchange"),r._terrainTiles.clear(),r._terrainOriginElevation=0,r._terrainPromise=null,r._rasterProgram&&r._rasterProgram.pipelineCache.clear(),r._rasterProgram=null,r._dem&&t(r,r._dem.texture),r._dem=null;for(const e of r._terrainGrids?.values()||[])for(const o of Object.values(e))t(r,o.buffer);r._terrainGrids=null,r._bridges=null,s(r,r._bridgeMesh),r._bridgeMesh=null,u(r,i)}export{p as onTerrainRemove};
|
|
2
|
-
//# sourceMappingURL=onTerrainRemove.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/onTerrainRemove.js"],
|
|
4
|
-
"sourcesContent": ["import { destroyTexture } from './destroyTexture.js';\nimport { conformModelToTerrain } from './conformModelToTerrain.js';\nimport { disposeMesh } from './disposeMesh.js';\nimport { setRasterTerrain } from './rasterTiles.js';\nimport { removeRasterTile } from './removeRasterTile.js';\nimport { setTerrainHeight } from './setTerrainHeight.js';\nimport { onRemove3DLayer } from './onRemove3DLayer.js';\n\nexport function onTerrainRemove(layer, map) {\n layer._terrainController?.abort();\n layer._terrainLoading = false;\n layer._terrainReady = false;\n map.eachLayer(layer => {\n if (layer._type === 'pmtiles') setRasterTerrain(layer, null);\n });\n for (const tile of layer._rasterTiles.keys()) removeRasterTile(layer, tile);\n if (map._terrain3D === layer) delete map._terrain3D;\n for (const l of Object.values(map._layers)) {\n conformModelToTerrain(l, null);\n setTerrainHeight(l);\n }\n map.fire('terrainchange');\n layer._terrainTiles.clear();\n layer._terrainOriginElevation = 0;\n layer._terrainPromise = null;\n if (layer._rasterProgram) {\n layer._rasterProgram.pipelineCache.clear();\n }\n layer._rasterProgram = null;\n if (layer._dem) destroyTexture(layer, layer._dem.texture);\n layer._dem = null;\n for (const grid of layer._terrainGrids?.values() || []) {\n for (const attribute of Object.values(grid)) destroyTexture(layer, attribute.buffer);\n }\n layer._terrainGrids = null;\n layer._bridges = null;\n disposeMesh(layer, layer._bridgeMesh);\n layer._bridgeMesh = null;\n onRemove3DLayer(layer, map);\n}\n"],
|
|
5
|
-
"mappings": "AAAA,OAAS,kBAAAA,MAAsB,sBAC/B,OAAS,yBAAAC,MAA6B,6BACtC,OAAS,eAAAC,MAAmB,mBAC5B,OAAS,oBAAAC,MAAwB,mBACjC,OAAS,oBAAAC,MAAwB,wBACjC,OAAS,oBAAAC,MAAwB,wBACjC,OAAS,mBAAAC,MAAuB,uBAEzB,SAASC,EAAgBC,EAAOC,EAAK,CAC1CD,EAAM,oBAAoB,MAAM,EAChCA,EAAM,gBAAkB,GACxBA,EAAM,cAAgB,GACtBC,EAAI,UAAUD,GAAS,CACjBA,EAAM,QAAU,WAAWL,EAAiBK,EAAO,IAAI,CAC7D,CAAC,EACD,UAAWE,KAAQF,EAAM,aAAa,KAAK,EAAGJ,EAAiBI,EAAOE,CAAI,EACtED,EAAI,aAAeD,GAAO,OAAOC,EAAI,WACzC,UAAWE,KAAK,OAAO,OAAOF,EAAI,OAAO,EACvCR,EAAsBU,EAAG,IAAI,EAC7BN,EAAiBM,CAAC,EAEpBF,EAAI,KAAK,eAAe,EACxBD,EAAM,cAAc,MAAM,EAC1BA,EAAM,wBAA0B,EAChCA,EAAM,gBAAkB,KACpBA,EAAM,gBACRA,EAAM,eAAe,cAAc,MAAM,EAE3CA,EAAM,eAAiB,KACnBA,EAAM,MAAMR,EAAeQ,EAAOA,EAAM,KAAK,OAAO,EACxDA,EAAM,KAAO,KACb,UAAWI,KAAQJ,EAAM,eAAe,OAAO,GAAK,CAAC,EACnD,UAAWK,KAAa,OAAO,OAAOD,CAAI,EAAGZ,EAAeQ,EAAOK,EAAU,MAAM,EAErFL,EAAM,cAAgB,KACtBA,EAAM,SAAW,KACjBN,EAAYM,EAAOA,EAAM,WAAW,EACpCA,EAAM,YAAc,KACpBF,EAAgBE,EAAOC,CAAG,CAC5B",
|
|
6
|
-
"names": ["destroyTexture", "conformModelToTerrain", "disposeMesh", "setRasterTerrain", "removeRasterTile", "setTerrainHeight", "onRemove3DLayer", "onTerrainRemove", "layer", "map", "tile", "l", "grid", "attribute"]
|
|
7
|
-
}
|
package/dist/utils/onZoomAnim.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{render as e}from"./render.js";function i(o){const t=this._map;o&&!this._zoomView&&(this._zoomView={from:t.getCenter(),zoom:t.getZoom(),to:o.center,targetZoom:o.zoom,start:performance.now()},t.getContainer().classList.add("leaflet-camera-zoom")),queueMicrotask(()=>{this._shared===this&&this.renderer&&e(this)})}export{i as onZoomAnim};
|
|
2
|
-
//# sourceMappingURL=onZoomAnim.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/onZoomAnim.js"],
|
|
4
|
-
"sourcesContent": ["import { render } from \"./render.js\";\n\n\nexport function onZoomAnim(event) {\n const map = this._map;\n if (event && !this._zoomView) {\n this._zoomView = { from: map.getCenter(), zoom: map.getZoom(), to: event.center,\n targetZoom: event.zoom, start: performance.now() };\n map.getContainer().classList.add('leaflet-camera-zoom');\n }\n queueMicrotask(() => {\n if (this._shared === this && this.renderer) render(this);\n });\n}\n"],
|
|
5
|
-
"mappings": "AAAA,OAAS,UAAAA,MAAc,cAGhB,SAASC,EAAWC,EAAO,CAChC,MAAMC,EAAM,KAAK,KACbD,GAAS,CAAC,KAAK,YACjB,KAAK,UAAY,CAAE,KAAMC,EAAI,UAAU,EAAG,KAAMA,EAAI,QAAQ,EAAG,GAAID,EAAM,OACvE,WAAYA,EAAM,KAAM,MAAO,YAAY,IAAI,CAAE,EACnDC,EAAI,aAAa,EAAE,UAAU,IAAI,qBAAqB,GAExD,eAAe,IAAM,CACf,KAAK,UAAY,MAAQ,KAAK,UAAUH,EAAO,IAAI,CACzD,CAAC,CACH",
|
|
6
|
-
"names": ["render", "onZoomAnim", "event", "map"]
|
|
7
|
-
}
|
package/dist/utils/paints.js
DELETED
package/dist/utils/paints.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/paints.js"],
|
|
4
|
-
"sourcesContent": ["// Built-in vehicles for the 'traffic' type. Models are [ring of [x, z], bottom, top, rgb, topRing?] convex prisms in metres;\n// forward is -z, right is +x. `topRing` (same length as `ring`) tapers the prism; rgb components above 1 are self-lit lamps.\nexport const paints = [\n [0.86, 0.86, 0.88],\n [0.1, 0.1, 0.12],\n [0.5, 0.53, 0.57],\n [0.65, 0.1, 0.08],\n [0.12, 0.25, 0.55],\n [0.85, 0.7, 0.15]\n];\n"],
|
|
5
|
-
"mappings": "AAEO,MAAMA,EAAS,CACpB,CAAC,IAAM,IAAM,GAAI,EACjB,CAAC,GAAK,GAAK,GAAI,EACf,CAAC,GAAK,IAAM,GAAI,EAChB,CAAC,IAAM,GAAK,GAAI,EAChB,CAAC,IAAM,IAAM,GAAI,EACjB,CAAC,IAAM,GAAK,GAAI,CAClB",
|
|
6
|
-
"names": ["paints"]
|
|
7
|
-
}
|
package/dist/utils/parseColor.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{toSRGB as n}from"./toSRGB.js";import{channel as c}from"./channel.js";function g(t){if(t&&typeof t=="object"&&"h"in t){const o=t.s*Math.min(t.l,1-t.l);return{r:n(c(0,t.h,t.l,o)),g:n(c(8,t.h,t.l,o)),b:n(c(4,t.h,t.l,o))}}if(t&&typeof t=="object"&&"r"in t)return t;if(typeof t=="number")return{r:(t>>16&255)/255,g:(t>>8&255)/255,b:(t&255)/255};if(typeof t!="string"||!CSS.supports("color",t))throw new Error("Invalid 3D color");const r=document.createElement("canvas").getContext("2d");r.fillStyle=t,r.fillRect(0,0,1,1);const[i,f,p]=r.getImageData(0,0,1,1).data;return{r:i/255,g:f/255,b:p/255}}export{g as parseColor};
|
|
2
|
-
//# sourceMappingURL=parseColor.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/parseColor.js"],
|
|
4
|
-
"sourcesContent": ["import { toSRGB } from \"./toSRGB.js\";\nimport { channel } from \"./channel.js\";\n\n/**\n * HSL inputs are linear-space to preserve the original building styling.\n * Numeric/CSS/RGB inputs are already sRGB; CSS alpha is not used for extrusion.\n * @param {number|string|Object} value 0xRRGGBB, CSS color, {r,g,b}, or {h,s,l} in 0..1.\n * @returns {Object} sRGB {r,g,b} components in 0..1.\n */\n\nexport function parseColor(value) {\n if (value && typeof value === 'object' && 'h' in value) {\n const a = value.s * Math.min(value.l, 1 - value.l);\n return {\n r: toSRGB(channel(0, value.h, value.l, a)),\n g: toSRGB(channel(8, value.h, value.l, a)),\n b: toSRGB(channel(4, value.h, value.l, a))\n };\n }\n if (value && typeof value === 'object' && 'r' in value) {\n return value;\n }\n if (typeof value === 'number') {\n return {\n r: (value >> 16 & 255) / 255,\n g: (value >> 8 & 255) / 255,\n b: (value & 255) / 255,\n };\n }\n if (typeof value !== 'string' || !CSS.supports('color', value)) {\n throw new Error('Invalid 3D color');\n }\n const context = document.createElement('canvas').getContext('2d');\n context.fillStyle = value;\n context.fillRect(0, 0, 1, 1);\n const [r, g, b] = context.getImageData(0, 0, 1, 1).data;\n return {\n r: r / 255,\n g: g / 255,\n b: b / 255\n };\n}\n"],
|
|
5
|
-
"mappings": "AAAA,OAAS,UAAAA,MAAc,cACvB,OAAS,WAAAC,MAAe,eASjB,SAASC,EAAWC,EAAO,CAChC,GAAIA,GAAS,OAAOA,GAAU,UAAY,MAAOA,EAAO,CACtD,MAAMC,EAAID,EAAM,EAAI,KAAK,IAAIA,EAAM,EAAG,EAAIA,EAAM,CAAC,EACjD,MAAO,CACL,EAAGH,EAAOC,EAAQ,EAAGE,EAAM,EAAGA,EAAM,EAAGC,CAAC,CAAC,EACzC,EAAGJ,EAAOC,EAAQ,EAAGE,EAAM,EAAGA,EAAM,EAAGC,CAAC,CAAC,EACzC,EAAGJ,EAAOC,EAAQ,EAAGE,EAAM,EAAGA,EAAM,EAAGC,CAAC,CAAC,CAC3C,CACF,CACA,GAAID,GAAS,OAAOA,GAAU,UAAY,MAAOA,EAC/C,OAAOA,EAET,GAAI,OAAOA,GAAU,SACnB,MAAO,CACL,GAAIA,GAAS,GAAK,KAAO,IACzB,GAAIA,GAAS,EAAI,KAAO,IACxB,GAAIA,EAAQ,KAAO,GACrB,EAEF,GAAI,OAAOA,GAAU,UAAY,CAAC,IAAI,SAAS,QAASA,CAAK,EAC3D,MAAM,IAAI,MAAM,kBAAkB,EAEpC,MAAME,EAAU,SAAS,cAAc,QAAQ,EAAE,WAAW,IAAI,EAChEA,EAAQ,UAAYF,EACpBE,EAAQ,SAAS,EAAG,EAAG,EAAG,CAAC,EAC3B,KAAM,CAACC,EAAGC,EAAGC,CAAC,EAAIH,EAAQ,aAAa,EAAG,EAAG,EAAG,CAAC,EAAE,KACnD,MAAO,CACL,EAAGC,EAAI,IACP,EAAGC,EAAI,IACP,EAAGC,EAAI,GACT,CACF",
|
|
6
|
-
"names": ["toSRGB", "channel", "parseColor", "value", "a", "context", "r", "g", "b"]
|
|
7
|
-
}
|
package/dist/utils/parts.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{box as r}from"./box.js";import{trousers as s,shirt as m,skin as o,dark as t}from"./skin.js";const a={body:[[r(-.17,.17,-.1,.1),.82,.95,s],[r(-.19,.19,-.11,.11),.95,1.44,m],[r(-.05,.05,-.05,.05),1.44,1.5,o],[r(-.1,.1,-.11,.1),1.5,1.72,o],[r(-.105,.105,-.06,.115),1.58,1.77,t],[r(-.105,.105,-.115,-.06),1.7,1.77,t]],leg:[[r(-.07,.07,-.07,.07),-.82,0,s],[r(-.07,.07,-.17,.07),-.9,-.82,t]],arm:[[r(-.05,.05,-.05,.05),-.55,0,m],[r(-.045,.045,-.045,.045),-.66,-.55,o]]};export{a as parts};
|
|
2
|
-
//# sourceMappingURL=parts.js.map
|
package/dist/utils/parts.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/parts.js"],
|
|
4
|
-
"sourcesContent": ["import { box } from \"./box.js\";\nimport { trousers, shirt, skin, dark } from \"./skin.js\";\n\n\nexport const parts = {\n body: [\n [box(-0.17, 0.17, -0.1, 0.1), 0.82, 0.95, trousers],\n [box(-0.19, 0.19, -0.11, 0.11), 0.95, 1.44, shirt],\n [box(-0.05, 0.05, -0.05, 0.05), 1.44, 1.5, skin],\n [box(-0.1, 0.1, -0.11, 0.1), 1.5, 1.72, skin],\n [box(-0.105, 0.105, -0.06, 0.115), 1.58, 1.77, dark],\n [box(-0.105, 0.105, -0.115, -0.06), 1.7, 1.77, dark],\n ],\n leg: [[box(-0.07, 0.07, -0.07, 0.07), -0.82, 0, trousers], [box(-0.07, 0.07, -0.17, 0.07), -0.9, -0.82, dark]],\n arm: [[box(-0.05, 0.05, -0.05, 0.05), -0.55, 0, shirt], [box(-0.045, 0.045, -0.045, 0.045), -0.66, -0.55, skin]],\n};\n"],
|
|
5
|
-
"mappings": "AAAA,OAAS,OAAAA,MAAW,WACpB,OAAS,YAAAC,EAAU,SAAAC,EAAO,QAAAC,EAAM,QAAAC,MAAY,YAGrC,MAAMC,EAAQ,CACnB,KAAM,CACJ,CAACL,EAAI,KAAO,IAAM,IAAM,EAAG,EAAG,IAAM,IAAMC,CAAQ,EAClD,CAACD,EAAI,KAAO,IAAM,KAAO,GAAI,EAAG,IAAM,KAAME,CAAK,EACjD,CAACF,EAAI,KAAO,IAAM,KAAO,GAAI,EAAG,KAAM,IAAKG,CAAI,EAC/C,CAACH,EAAI,IAAM,GAAK,KAAO,EAAG,EAAG,IAAK,KAAMG,CAAI,EAC5C,CAACH,EAAI,MAAQ,KAAO,KAAO,IAAK,EAAG,KAAM,KAAMI,CAAI,EACnD,CAACJ,EAAI,MAAQ,KAAO,MAAQ,IAAK,EAAG,IAAK,KAAMI,CAAI,CACrD,EACA,IAAK,CAAC,CAACJ,EAAI,KAAO,IAAM,KAAO,GAAI,EAAG,KAAO,EAAGC,CAAQ,EAAG,CAACD,EAAI,KAAO,IAAM,KAAO,GAAI,EAAG,IAAM,KAAOI,CAAI,CAAC,EAC7G,IAAK,CAAC,CAACJ,EAAI,KAAO,IAAM,KAAO,GAAI,EAAG,KAAO,EAAGE,CAAK,EAAG,CAACF,EAAI,MAAQ,KAAO,MAAQ,IAAK,EAAG,KAAO,KAAOG,CAAI,CAAC,CACjH",
|
|
6
|
-
"names": ["box", "trousers", "shirt", "skin", "dark", "parts"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
function l(c,s,t,o){const[M,h,a]=c,n=-M*Math.sin(o)*Math.sin(t)-h*Math.cos(t)-a*Math.cos(o)*Math.sin(t);return n>0?{left:s.x/2+s.y*1.5*(M*Math.cos(o)-a*Math.sin(o))/n,top:s.y/2-s.y*1.5*(-M*Math.sin(o)*Math.cos(t)+h*Math.sin(t)-a*Math.cos(o)*Math.cos(t))/n}:null}export{l as projectCelestialBody};
|
|
2
|
-
//# sourceMappingURL=projectCelestialBody.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/projectCelestialBody.js"],
|
|
4
|
-
"sourcesContent": ["/** Perspective projection of a celestial direction; null when behind the camera. */\n\nexport function projectCelestialBody(dir, size, pitch, bearing) {\n const [x, y, z] = dir;\n const forward = -x * Math.sin(bearing) * Math.sin(pitch) - y * Math.cos(pitch) - z * Math.cos(bearing) * Math.sin(pitch);\n if (forward > 0) {\n return {\n left: size.x / 2 + size.y * 1.5 * (x * Math.cos(bearing) - z * Math.sin(bearing)) / forward,\n top: size.y / 2 - size.y * 1.5 * (-x * Math.sin(bearing) * Math.cos(pitch) + y * Math.sin(pitch) - z * Math.cos(bearing) * Math.cos(pitch)) / forward\n };\n }\n return null;\n}\n"],
|
|
5
|
-
"mappings": "AAEO,SAASA,EAAqBC,EAAKC,EAAMC,EAAOC,EAAS,CAC9D,KAAM,CAACC,EAAGC,EAAGC,CAAC,EAAIN,EACZO,EAAU,CAACH,EAAI,KAAK,IAAID,CAAO,EAAI,KAAK,IAAID,CAAK,EAAIG,EAAI,KAAK,IAAIH,CAAK,EAAII,EAAI,KAAK,IAAIH,CAAO,EAAI,KAAK,IAAID,CAAK,EACvH,OAAIK,EAAU,EACL,CACL,KAAMN,EAAK,EAAI,EAAIA,EAAK,EAAI,KAAOG,EAAI,KAAK,IAAID,CAAO,EAAIG,EAAI,KAAK,IAAIH,CAAO,GAAKI,EACpF,IAAMN,EAAK,EAAI,EAAIA,EAAK,EAAI,KAAO,CAACG,EAAI,KAAK,IAAID,CAAO,EAAI,KAAK,IAAID,CAAK,EAAIG,EAAI,KAAK,IAAIH,CAAK,EAAII,EAAI,KAAK,IAAIH,CAAO,EAAI,KAAK,IAAID,CAAK,GAAKK,CACjJ,EAEK,IACT",
|
|
6
|
-
"names": ["projectCelestialBody", "dir", "size", "pitch", "bearing", "x", "y", "z", "forward"]
|
|
7
|
-
}
|
package/dist/utils/pump.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{emptyNode as et}from"./emptyNode.js";import{isClockWise as ot}from"./isClockWise.js";import{lampPostGeometry as rt}from"./lampPostGeometry.js";import{lightGeometry as it}from"./lightGeometry.js";import{parseColor as nt}from"./parseColor.js";import{treeGeometry as st}from"./treeGeometry.js";import{triangulate as at}from"./triangulate.js";import{createProgram as ut}from"./createProgram.js";import{updateStatus as ft}from"./releaseArea.js";import{loadSource as ct}from"./loadSource.js";import{setParent as lt}from"./setParent.js";import{update as dt}from"./update.js";import{getElevation as H}from"./getElevation.js";function gt(K,m=K._map){const J=m&&L.Layer._renderers.get(m);if(!J)return;const q=[...J._layers].filter(t=>Number.isFinite(t._inflight)&&t._areas&&(t.url||t._geojson)),Q=q.flatMap(t=>[...t._areas.values()].filter(e=>!e.started&&!e.request.signal.aborted).map(e=>{const l=e.coords&&m.project(m.getCenter(),e.coords.z).divideBy(256);return{layer:t,area:e,distance:l?Math.hypot(e.coords.x+.5-l.x,e.coords.y+.5-l.y)/2**e.coords.z:0}})).sort((t,e)=>t.distance-e.distance);let T=q.reduce((t,e)=>t+e._inflight,0);for(const{layer:t,area:e}of Q){if(T>=4)break;t._inflight>=2||(e.started=!0,t._inflight++,T++,(async()=>{try{if(await new Promise(requestAnimationFrame),await m._terrain3D?._terrainPromise,e.request.signal.aborted)return;const l=e.coords,z=await ct(t,e);if(e.request.signal.aborted)return;if(z?.type!=="FeatureCollection"||!Array.isArray(z.features))throw new Error("Invalid GeoJSON response");if(t._geojson&&typeof t.options.style!="function")throw new Error("style must be a function");const Z=z.features,E=[],U=[],k=[],R=[],A=[],$=[],V=new Set;let D=0;const I=m.options.crs,j=I.project(t.location),O=Math.cos(t.location.lat*Math.PI/180),B=r=>r.ground||0,F=(r,o,c,v,f,h,i,a,u,d)=>{const g=c.x-r.x,P=v-o,S=r.y-c.y,p=f.x-r.x,y=h-o,n=r.y-f.y;if((P*n-S*y)*i+(S*p-g*n)*a+(g*y-P*p)*u<0){const s=c,w=v;c=f,v=h,f=s,h=w}E.push(r.x,o+B(r),-r.y,c.x,v+B(c),-c.y,f.x,h+B(f),-f.y),U.push(i,a,u,i,a,u,i,a,u),k.push(d.r,d.g,d.b,d.r,d.g,d.b,d.r,d.g,d.b),t.options.nightLight&&R.push(...r.uv,...c.uv,...f.uv)};let W=performance.now()+4;for(const r of Z){if(e.request.signal.aborted)return;if(performance.now()>=W){if(await new Promise(requestAnimationFrame),e.request.signal.aborted)return;W=performance.now()+4}const o=r?.geometry,c=o?.type==="Point";if(t.options.nightLight&&!c)throw new Error("Night lights require Point geometry");const v=o?.type==="Polygon"?[o.coordinates]:o?.type==="MultiPolygon"?o.coordinates:null;if(!v&&!c)throw new Error("Unsupported GeoJSON geometry");const[f,h]=(c?o.coordinates:v[0]?.[0]?.[0])??[];if(!Number.isFinite(f)||!Number.isFinite(h))throw new Error("Invalid GeoJSON coordinates");if(l){const p=m.project(new L.LatLng(h,f),l.z);if(Math.floor(p.x/256)!==l.x||Math.floor(p.y/256)!==l.y)continue}const i=t.options.style(r);if(i===null){D++;continue}if(!i||typeof i!="object")throw new Error("style must return an extrusion style or null");const{top:a,bottom:u=0,color:d=14267276}=i;if(!Number.isFinite(a)||!Number.isFinite(u)||u<0||a<=u)throw new Error("Invalid extrusion heights: expected top > bottom >= 0");const g=nt(d),P=E.length/3;if(c){const p=I.project(new L.LatLng(h,f)),y=m._terrain3D?H(m._terrain3D,[h,f]):void 0,n={x:(p.x-j.x)*O,y:(p.y-j.y)*O,ground:Number.isFinite(y)&&Number.isFinite(t.root.position[1])?y-t.root.position[1]:0};if(t.options.nightLight){if(!Number.isFinite(i.lightFlux)||i.lightFlux<=0)throw new Error("Invalid light flux");const s=r.properties?.cod_ouvrag||`${f},${h}`;i.poleRadius>0&&!V.has(s)&&(rt(n,i,F),V.add(s)),it(n,i,F),$.push({position:[n.x,n.ground+a,-n.y],radius:Math.hypot(a,i.lightRadius),color:[g.r,g.g,g.b],flux:i.lightFlux})}else st(n,i,F)}for(const p of v||[]){if(!p.length)throw new Error("Empty GeoJSON polygon");const y=p.map(s=>{if(s.length<4)throw new Error("Invalid GeoJSON polygon ring");return s.slice(0,-1).map(([w,b])=>{if(!Number.isFinite(w)||!Number.isFinite(b))throw new Error("Invalid GeoJSON coordinates");const _=I.project(new L.LatLng(b,w)),x=t._map._terrain3D?H(t._map._terrain3D,[b,w]):void 0;return{x:(_.x-j.x)*O,y:(_.y-j.y)*O,ground:Number.isFinite(x)&&Number.isFinite(t.root.position[1])?x-t.root.position[1]:0}})}),n=y.flat();for(const[s,w,b]of at(y[0],y.slice(1)))F(n[s],a,n[w],a,n[b],a,0,1,0,g),u>0&&F(n[s],u,n[w],u,n[b],u,0,-1,0,g);y.forEach((s,w)=>{const b=ot(s)===(w===0)?-1:1;for(let _=0;_<s.length;_++){const x=s[_],N=s[(_+1)%s.length],C=Math.hypot(N.x-x.x,N.y-x.y);if(!C)continue;const X=b*(N.y-x.y)/C,Y=b*(N.x-x.x)/C;F(x,u,N,u,N,a,X,0,Y,g),F(x,u,N,a,x,a,X,0,Y,g)}})}const S=E.length/3;A.push({id:r.id??r.properties?.objectid??JSON.stringify(o),properties:r.properties,baseColor:g,faceStart:P/3,faceEnd:S/3,vertexStart:P,vertexEnd:S})}if(!E.length){Object.assign(e,{mesh:null,buildings:0,skipped:D,done:!0});return}const G=t.renderer.device,M={position:{size:3,data:new Float32Array(E)},normal:{size:3,data:new Float32Array(U)},color:{size:3,data:new Float32Array(k)}};t.options.nightLight&&(M.uv={size:2,data:new Float32Array(R)});for(const[r,o]of Object.entries(M))o.count=o.data.length/o.size,o.buffer=G.createBuffer({size:Math.max(4,o.data.byteLength),usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST}),G.queue.writeBuffer(o.buffer,0,o.data);const tt={device:G,attributes:M,drawRange:{start:0,count:M.position.count}};Object.assign(e,{mesh:{...et(),device:G,geometry:tt,program:ut(t,{vertexColors:!0,roofTexture:!!t.options.roofTexture,...t.options.nightLight?{nightLight:!0,alphaMode:"BLEND",doubleSided:!0}:{}}),id:L.Layer._nextId++,renderOrder:0,fadeDuration:250,extras:{featureFaces:A,lights:$}},buildings:A.length,skipped:D,done:!0}),lt(e.mesh,t.root),dt(t)}catch(l){if(e.request.signal.aborted)return;e.error=l.message,t.fire("error",{error:l})}})().finally(()=>{t._inflight--,gt(t,m)}))}for(const t of q)ft(t)}export{gt as pump};
|
|
2
|
-
//# sourceMappingURL=pump.js.map
|
package/dist/utils/pump.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/pump.js"],
|
|
4
|
-
"sourcesContent": ["import { emptyNode } from \"./emptyNode.js\";\nimport { isClockWise } from \"./isClockWise.js\";\nimport { lampPostGeometry } from \"./lampPostGeometry.js\";\nimport { lightGeometry } from \"./lightGeometry.js\";\nimport { parseColor } from \"./parseColor.js\";\nimport { treeGeometry } from \"./treeGeometry.js\";\nimport { triangulate } from \"./triangulate.js\";\nimport { createProgram } from './createProgram.js';\nimport { updateStatus } from \"./releaseArea.js\";\nimport { loadSource } from './loadSource.js';\nimport { setParent } from './setParent.js';\nimport { update } from './update.js';\nimport { getElevation } from \"./getElevation.js\";\n\n/** Share four load/build slots across source layers, nearest ground blocks first. */\n\nexport function pump(backend, map = backend._map) {\n // Meshes need the shared renderer; _attach() re-runs _updateArea() once it exists.\n const shared = map && L.Layer._renderers.get(map);\n if (!shared) return;\n const layers = [...shared._layers].filter(layer =>\n Number.isFinite(layer._inflight) && layer._areas && (layer.url || layer._geojson));\n const pending = layers.flatMap(layer => [...layer._areas.values()]\n .filter(area => !area.started && !area.request.signal.aborted)\n .map(area => {\n const center = area.coords && map.project(map.getCenter(), area.coords.z).divideBy(256);\n return { layer, area, distance: center\n ? Math.hypot(area.coords.x + 0.5 - center.x, area.coords.y + 0.5 - center.y) / 2 ** area.coords.z : 0 };\n })).sort((a, b) => a.distance - b.distance);\n let inflight = layers.reduce((sum, layer) => sum + layer._inflight, 0);\n for (const { layer: backend, area } of pending) {\n if (inflight >= 4) break;\n if (backend._inflight >= 2) continue;\n area.started = true;\n backend._inflight++;\n inflight++;\n (async () => {\n try {\n // Let ground requests start first, and avoid rebuilding flat geometry when the DEM arrives.\n await new Promise(requestAnimationFrame);\n await map._terrain3D?._terrainPromise;\n if (area.request.signal.aborted) return;\n const coords = area.coords;\n const data = await loadSource(backend, area);\n if (area.request.signal.aborted) return;\n if (data?.type !== 'FeatureCollection' || !Array.isArray(data.features)) {\n throw new Error('Invalid GeoJSON response');\n }\n if (backend._geojson && typeof backend.options.style !== 'function') {\n throw new Error('style must be a function');\n }\n const features = data.features;\n const positions = [], normals = [], colors = [], uvs = [], featureFaces = [], lights = [];\n const supports = new Set();\n let skipped = 0;\n const crs = map.options.crs;\n const origin = crs.project(backend.location);\n const metres = Math.cos(backend.location.lat * Math.PI / 180);\n const groundOffset = point => point.ground || 0;\n const addTriangle = (a, ah, b, bh, c, ch, nx, ny, nz, color) => {\n const ux = b.x - a.x, uy = bh - ah, uz = a.y - b.y;\n const vx = c.x - a.x, vy = ch - ah, vz = a.y - c.y;\n // Orient the triangle to its intended outward normal after flipping north to -z.\n if ((uy * vz - uz * vy) * nx + (uz * vx - ux * vz) * ny + (ux * vy - uy * vx) * nz < 0) {\n const point = b, height = bh;\n b = c; bh = ch; c = point; ch = height;\n }\n positions.push(a.x, ah + groundOffset(a), -a.y,\n b.x, bh + groundOffset(b), -b.y,\n c.x, ch + groundOffset(c), -c.y);\n normals.push(nx, ny, nz, nx, ny, nz, nx, ny, nz);\n colors.push(color.r, color.g, color.b, color.r, color.g, color.b, color.r, color.g, color.b);\n if (backend.options.nightLight) uvs.push(...a.uv, ...b.uv, ...c.uv);\n };\n let deadline = performance.now() + 4;\n for (const feature of features) {\n if (area.request.signal.aborted) return;\n if (performance.now() >= deadline) {\n await new Promise(requestAnimationFrame);\n if (area.request.signal.aborted) return;\n deadline = performance.now() + 4;\n }\n const geometry = feature?.geometry;\n const isTree = geometry?.type === 'Point';\n if (backend.options.nightLight && !isTree) throw new Error('Night lights require Point geometry');\n const polygons = geometry?.type === 'Polygon' ? [geometry.coordinates] : geometry?.type === 'MultiPolygon' ? geometry.coordinates : null;\n if (!polygons && !isTree) throw new Error('Unsupported GeoJSON geometry');\n const [lon, lat] = (isTree ? geometry.coordinates : polygons[0]?.[0]?.[0]) ?? [];\n if (!Number.isFinite(lon) || !Number.isFinite(lat)) throw new Error('Invalid GeoJSON coordinates');\n if (coords) {\n const anchor = map.project(new L.LatLng(lat, lon), coords.z);\n // Overlapping archive blocks may contain the same polygon; its first vertex owns it.\n if (Math.floor(anchor.x / 256) !== coords.x || Math.floor(anchor.y / 256) !== coords.y) continue;\n }\n const style = backend.options.style(feature);\n if (style === null) {\n skipped++;\n continue;\n }\n if (!style || typeof style !== 'object') throw new Error('style must return an extrusion style or null');\n const { top, bottom = 0, color = 0xd9b38c } = style;\n if (!Number.isFinite(top) || !Number.isFinite(bottom) || bottom < 0 || top <= bottom) {\n throw new Error('Invalid extrusion heights: expected top > bottom >= 0');\n }\n const baseColor = parseColor(color);\n const vertexStart = positions.length / 3;\n if (isTree) {\n const point = crs.project(new L.LatLng(lat, lon));\n const elevation = map._terrain3D ? getElevation(map._terrain3D, [lat, lon]) : undefined;\n const projected = {\n x: (point.x - origin.x) * metres, y: (point.y - origin.y) * metres,\n ground: Number.isFinite(elevation) && Number.isFinite(backend.root.position[1])\n ? elevation - backend.root.position[1] : 0,\n };\n if (backend.options.nightLight) {\n if (!Number.isFinite(style.lightFlux) || style.lightFlux <= 0) throw new Error('Invalid light flux');\n const support = feature.properties?.cod_ouvrag || `${lon},${lat}`;\n if (style.poleRadius > 0 && !supports.has(support)) {\n lampPostGeometry(projected, style, addTriangle);\n supports.add(support);\n }\n lightGeometry(projected, style, addTriangle);\n lights.push({\n position: [projected.x, projected.ground + top, -projected.y],\n radius: Math.hypot(top, style.lightRadius), color: [baseColor.r, baseColor.g, baseColor.b],\n flux: style.lightFlux,\n });\n } else treeGeometry(projected, style, addTriangle);\n }\n for (const rings of polygons || []) {\n if (!rings.length) throw new Error('Empty GeoJSON polygon');\n const paths = rings.map(ring => {\n if (ring.length < 4) throw new Error('Invalid GeoJSON polygon ring');\n return ring.slice(0, -1).map(([lng, lat]) => {\n if (!Number.isFinite(lng) || !Number.isFinite(lat)) throw new Error('Invalid GeoJSON coordinates');\n const point = crs.project(new L.LatLng(lat, lng));\n const elevation = backend._map._terrain3D ? getElevation(backend._map._terrain3D, [lat, lng]) : undefined;\n return {\n x: (point.x - origin.x) * metres,\n y: (point.y - origin.y) * metres,\n ground: Number.isFinite(elevation) && Number.isFinite(backend.root.position[1])\n ? elevation - backend.root.position[1] : 0,\n };\n });\n });\n const points = paths.flat();\n for (const [a, b, c] of triangulate(paths[0], paths.slice(1))) {\n addTriangle(points[a], top, points[b], top, points[c], top, 0, 1, 0, baseColor);\n if (bottom > 0) addTriangle(points[a], bottom, points[b], bottom, points[c], bottom, 0, -1, 0, baseColor);\n }\n paths.forEach((path, index) => {\n // Interior walls face into the courtyard; exterior walls face away from the building.\n const sign = isClockWise(path) === (index === 0) ? -1 : 1;\n for (let i = 0; i < path.length; i++) {\n const a = path[i], b = path[(i + 1) % path.length];\n const length = Math.hypot(b.x - a.x, b.y - a.y);\n if (!length) continue;\n const nx = sign * (b.y - a.y) / length, nz = sign * (b.x - a.x) / length;\n addTriangle(a, bottom, b, bottom, b, top, nx, 0, nz, baseColor);\n addTriangle(a, bottom, b, top, a, top, nx, 0, nz, baseColor);\n }\n });\n }\n const vertexEnd = positions.length / 3;\n featureFaces.push({\n id: feature.id ?? feature.properties?.objectid ?? JSON.stringify(geometry),\n properties: feature.properties, baseColor,\n faceStart: vertexStart / 3, faceEnd: vertexEnd / 3, vertexStart, vertexEnd,\n });\n }\n if (!positions.length) {\n Object.assign(area, { mesh: null, buildings: 0, skipped, done: true });\n return;\n }\n const device = backend.renderer.device;\n const attributes = {\n position: { size: 3, data: new Float32Array(positions) },\n normal: { size: 3, data: new Float32Array(normals) },\n color: { size: 3, data: new Float32Array(colors) },\n };\n if (backend.options.nightLight) attributes.uv = { size: 2, data: new Float32Array(uvs) };\n for (const [name, attribute] of Object.entries(attributes)) {\n attribute.count = attribute.data.length / attribute.size;\n attribute.buffer = device.createBuffer({\n size: Math.max(4, attribute.data.byteLength),\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n });\n device.queue.writeBuffer(attribute.buffer, 0, attribute.data);\n }\n const meshGeometry = {\n device,\n attributes,\n drawRange: { start: 0, count: attributes.position.count },\n };\n Object.assign(area, {\n mesh: {\n ...emptyNode(),\n device,\n geometry: meshGeometry,\n program: createProgram(backend, {\n vertexColors: true, roofTexture: Boolean(backend.options.roofTexture),\n ...(backend.options.nightLight ? { nightLight: true, alphaMode: 'BLEND', doubleSided: true } : {})\n }),\n id: L.Layer._nextId++,\n renderOrder: 0,\n fadeDuration: 250,\n extras: { featureFaces, lights },\n },\n buildings: featureFaces.length,\n skipped,\n done: true\n });\n setParent(area.mesh, backend.root);\n update(backend);\n } catch (error) {\n if (area.request.signal.aborted) return;\n area.error = error.message;\n backend.fire('error', { error });\n }\n })().finally(() => {\n backend._inflight--;\n pump(backend, map);\n });\n }\n for (const layer of layers) updateStatus(layer);\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["emptyNode", "isClockWise", "lampPostGeometry", "lightGeometry", "parseColor", "treeGeometry", "triangulate", "createProgram", "updateStatus", "loadSource", "setParent", "update", "getElevation", "pump", "backend", "map", "shared", "layers", "layer", "pending", "area", "center", "a", "b", "inflight", "sum", "coords", "data", "features", "positions", "normals", "colors", "uvs", "featureFaces", "lights", "supports", "skipped", "crs", "origin", "metres", "groundOffset", "point", "addTriangle", "ah", "bh", "c", "ch", "nx", "ny", "nz", "color", "ux", "uy", "uz", "vx", "vy", "vz", "height", "deadline", "feature", "geometry", "isTree", "polygons", "lon", "lat", "anchor", "style", "top", "bottom", "baseColor", "vertexStart", "elevation", "projected", "support", "rings", "paths", "ring", "lng", "points", "path", "index", "sign", "i", "length", "vertexEnd", "device", "attributes", "name", "attribute", "meshGeometry", "error"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{addRasterTile as D}from"./addRasterTile.js";import{createProgram as U}from"./createProgram.js";import{destroyTexture as z}from"./destroyTexture.js";import{removeRasterTile as M}from"./removeRasterTile.js";import{setParent as c}from"./setParent.js";import{update as x}from"./update.js";const u=256,T=6;function q(r){const e=r._map;if(!e||!r._shared||!r.header)return;const t=Math.max(r.header.minZoom??0,Math.min(Math.round(e.getZoom()),r.options.maxZoom,r.options.maxNativeZoom));r._tileZoom=t;const o=e.getBounds(),i=e.project(o.getNorthWest(),t).divideBy(u).floor(),s=e.project(o.getSouthEast(),t).divideBy(u).floor(),m=r.header.maxLat===void 0||r.header.minLon===void 0?new L.Point(0,0):e.project([r.header.maxLat,r.header.minLon],t).divideBy(u).floor(),a=r.header.minLat===void 0||r.header.maxLon===void 0?new L.Point(2**t-1,2**t-1):e.project([r.header.minLat,r.header.maxLon],t).divideBy(u).floor(),n=e.project(e.getCenter(),t).divideBy(u).floor(),p=new Map;for(let l=Math.max(0,i.x,m.x,n.x-T);l<=Math.min(2**t-1,s.x,a.x,n.x+T);l++)for(let f=Math.max(0,i.y,m.y,n.y-T);f<=Math.min(2**t-1,s.y,a.y,n.y+T);f++)p.set(`${t}/${l}/${f}`,{z:t,x:l,y:f});r._wantedRasterTiles=new Set(p.keys());const h=new Map,g=Math.max(r.header.minZoom??0,t-2),y=2**(t-g);if(g<t)for(const[l,f]of p){if(r._rasterTiles.get(l)?.done)continue;const _={z:g,x:Math.floor(f.x/y),y:Math.floor(f.y/y)};h.set(`${_.z}/${_.x}/${_.y}`,_)}const w=new Map([...h,...p]);for(const[l,f]of r._rasterTiles)!w.has(l)&&!f.done&&d(r,f);for(const[l,f]of w){if(r._rasterTiles.has(l))continue;const _={coords:f,request:new AbortController,done:!1};r._rasterTiles.set(l,_)}v(r),R(r)}function v(r){const e=r._map;if(!e)return;const t=e.project(e.getCenter(),0).divideBy(u),o=[...r._rasterTiles.values()].filter(s=>!s.started&&!s.request.signal.aborted),i=({coords:s})=>Math.hypot((s.x+.5)/2**s.z-t.x,(s.y+.5)/2**s.z-t.y);o.sort((s,m)=>s.coords.z-m.coords.z||i(s)-i(m));for(const s of o){if(r._loadingTiles>=4)break;A(r,s)}}function S(r){for(const e of r._rasterTiles.values())d(r,e);if(r._rasterProgram?.pipelineCache.clear(),r._rasterProgram=null,r._rasterGeometry){for(const e of Object.values(r._rasterGeometry.attributes))z(r,e.buffer);r._rasterGeometry=null}}function j(r,e){if(r._terrain3D!==e){for(const t of r._rasterTiles.values())r._terrain3D&&M(r._terrain3D,t),t.mesh&&(t.mesh.visible=!0,c(t.mesh,r.root));if(r._terrain3D=e||null,e)for(const t of r._rasterTiles.values())t.done&&P(r,t.coords,t)}}function P(r,e,t){r._terrain3D&&t.done&&!t.request.signal.aborted&&r._rasterTiles.get(`${e.z}/${e.x}/${e.y}`)===t&&D(r._terrain3D,r,e,t).catch(o=>r.fire("tileerror",{tile:t,coords:e,error:o}))}function O(r,e){for(const t of r._rasterTiles.values()){t.mesh&&(t.mesh.opacity=e);const o=r._terrain3D?._rasterTiles.get(t);o&&(o.opacity=e)}x(r)}function C(r,e){for(const t of r._rasterTiles.values()){t.mesh&&(t.mesh.renderOrder=e);const o=r._terrain3D?._rasterTiles.get(t);o&&(o.renderOrder=e)}x(r)}function F(){return new L.Point(u,u)}function A(r,e){e.started=!0;const t=r._loadingTiles===0;return r._loadingTiles++,r.fire("tileloadstart",{tile:e,coords:e.coords}),t&&r.fire("loading"),Promise.resolve(r.ready).then(()=>r.options.archive.getZxy(e.coords.z,e.coords.x,e.coords.y,e.request.signal)).then(async o=>{if(!e.request.signal.aborted){if(!o)throw new Error(`Tile ${e.coords.z}/${e.coords.x}/${e.coords.y} is not in the offline archive`);try{e.image=await createImageBitmap(new Blob([o.data]))}catch{throw new Error(`Unable to decode tile ${e.coords.z}/${e.coords.x}/${e.coords.y}`)}if(e.request.signal.aborted){e.image.close(),e.image=null;return}$(r,e),e.loadedAt=performance.now(),e.done=!0,r._rasterVersion=(r._rasterVersion||0)+1,P(r,e.coords,e),r.fire("tileload",{tile:e,coords:e.coords}),x(r)}}).catch(o=>{e.request.signal.aborted||(e.error=o.message,r._rasterVersion=(r._rasterVersion||0)+1,r.fire("tileerror",{tile:e,coords:e.coords,error:o}),r.fire("error",{error:o,coords:e.coords}))}).finally(()=>{r._loadingTiles--,r._map&&(v(r),R(r),r._loadingTiles||r.fire("load"),x(r))})}function $(r,e){const t=r.renderer.device,o={device:t,texture:t.createTexture({size:[e.image.width,e.image.height],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT}),sampler:t.createSampler({addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge",magFilter:"linear",minFilter:"linear"}),image:e.image,format:"rgba8unorm",srgb:!1,uploaded:null};r._rasterProgram||(r._rasterProgram=U(r,{baseTexture:o,unlit:!0,alphaMode:"BLEND"})),r._rasterGeometry||(r._rasterGeometry=B(t));const{coords:i}=e,s=r._map.options.crs,m=s.project(r.location),a=Math.cos(r.location.lat*Math.PI/180),n=s.scale(i.z),p=s.transformation.untransform(new L.Point(i.x*u,i.y*u),n),h=s.transformation.untransform(new L.Point((i.x+1)*u,(i.y+1)*u),n),g=(h.x-p.x)*a,y=-(h.y-p.y)*a;e.texture=o,e.mesh={position:[(p.x-m.x)*a,0,-(p.y-m.y)*a],rotation:[0,0,0],scale:[g,1,y],worldMatrix:[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],children:[],visible:!0,device:t,geometry:r._rasterGeometry,program:r._rasterProgram,texture:o,opacity:r.options.opacity,id:L.Layer._nextId++,renderOrder:r.options.zIndex||0,tile:e,fadeDuration:250,ground:!0},c(e.mesh,r.root)}function B(r){const e={position:{size:3,data:new Float32Array([0,0,0,1,0,0,0,0,1,1,0,1])},normal:{size:3,data:new Float32Array([0,1,0,0,1,0,0,1,0,0,1,0])},uv:{size:2,data:new Float32Array([0,0,1,0,0,1,1,1])},index:{data:new Uint16Array([0,2,1,1,2,3])}};for(const[t,o]of Object.entries(e))o.count=o.data.length/(o.size||1),o.indexFormat="uint16",o.buffer=r.createBuffer({size:o.data.byteLength,usage:t==="index"?GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST}),r.queue.writeBuffer(o.buffer,0,o.data);return{device:r,attributes:e,drawRange:{start:0,count:e.index.count}}}function d(r,e){const t=`${e.coords.z}/${e.coords.x}/${e.coords.y}`;r._rasterTiles.get(t)===e&&(r._rasterTiles.delete(t),r._rasterVersion=(r._rasterVersion||0)+1,e.request.abort(),r._terrain3D&&M(r._terrain3D,e),e.mesh&&c(e.mesh,null),e.texture&&z(r,e.texture.texture),e.image?.close(),r.fire("tileunload",{tile:e,coords:e.coords}),x(r))}function R(r){const e=r._wantedRasterTiles,t=performance.now();if(r._pruneVersion===r._rasterVersion&&r._pruneWanted===e&&t<r._pruneAfter)return Number.isFinite(r._pruneAfter);r._pruneVersion=r._rasterVersion,r._pruneWanted=e,r._pruneAfter=1/0;const o=[...e].filter(i=>{const s=r._rasterTiles.get(i);return s?.done&&t-s.loadedAt<250&&(r._pruneAfter=Math.min(r._pruneAfter,s.loadedAt+250)),!s?.done||t-s.loadedAt<250}).map(i=>{const[s,m,a]=i.split("/").map(Number);return{z:s,x:m,y:a}});for(const[i,s]of r._rasterTiles){if(e.has(i))continue;o.some(a=>{const n=Math.min(a.z,s.coords.z);return Math.floor(a.x/2**(a.z-n))===Math.floor(s.coords.x/2**(s.coords.z-n))&&Math.floor(a.y/2**(a.z-n))===Math.floor(s.coords.y/2**(s.coords.z-n))})||d(r,s)}return Number.isFinite(r._pruneAfter)}export{F as getRasterTileSize,R as pruneRasterTiles,P as registerTerrainTile,S as releaseRasterTiles,O as setRasterOpacity,j as setRasterTerrain,C as setRasterZIndex,q as updateRasterTiles};
|
|
2
|
-
//# sourceMappingURL=rasterTiles.js.map
|