leaflet-city-mapper 0.0.9 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -46
- package/dist/README.md +18 -0
- package/dist/leaflet-city-mapper-src.js +279 -110
- package/dist/leaflet-city-mapper-src.js.map +4 -4
- package/dist/leaflet-city-mapper-worker-src.js.map +2 -2
- package/dist/leaflet-city-mapper-worker.js.map +2 -2
- package/dist/leaflet-city-mapper.js +5 -5
- package/dist/leaflet-city-mapper.js.map +4 -4
- package/libs/README.md +18 -0
- package/libs/leaflet.js +1 -1
- package/package.json +1 -1
- package/src/README.md +148 -0
- package/src/animations/README.md +30 -0
- package/src/animations/cancelCameraAnimation.js +11 -9
- package/src/animations/cancelGridFade.js +5 -3
- package/src/animations/endZoom.js +0 -5
- package/src/animations/mapAnimateCamera.js +13 -3
- package/src/animations/mapStopPitchBearingAnimation.js +9 -2
- package/src/animations/onZoomAnim.js +5 -4
- package/src/animations/renderPendingZoomAnimation.js +1 -4
- package/src/animations/runCameraAnimations.js +7 -4
- package/src/animations/runGridFades.js +1 -4
- package/src/animations/runMarkerPanFrame.js +1 -1
- package/src/animations/scheduleCameraAnimation.js +11 -9
- package/src/animations/scheduleGridFade.js +5 -4
- package/src/animations/scheduleMarkerPan.js +10 -6
- package/src/animations/startZoom.js +0 -3
- package/src/animations/synchronizeZoomView.js +6 -1
- package/src/animations/updateZoomCamera.js +9 -5
- package/src/archives/README.md +28 -0
- package/src/archives/decodeDirectory.js +13 -2
- package/src/archives/decodeHeader.js +9 -2
- package/src/archives/decompress.js +10 -0
- package/src/archives/findDirectoryEntry.js +8 -0
- package/src/archives/findTile.js +14 -0
- package/src/archives/getDirectoryEntries.js +13 -2
- package/src/archives/getHeader.js +7 -2
- package/src/archives/getTileData.js +13 -0
- package/src/archives/getZxy.js +11 -3
- package/src/archives/loadDirectory.js +10 -0
- package/src/archives/loadSource.js +12 -3
- package/src/archives/readArchiveRange.js +18 -4
- package/src/archives/readVarint.js +11 -2
- package/src/archives/tileId.js +11 -2
- package/src/astronomy/README.md +25 -0
- package/src/astronomy/horizontalPosition.js +11 -0
- package/src/astronomy/moonPosition.js +9 -2
- package/src/astronomy/solarPosition.js +9 -2
- package/src/astronomy/solarTime.js +11 -1
- package/src/camera/README.md +30 -0
- package/src/camera/cameraMapReady.js +4 -6
- package/src/camera/cleanupCameraMap.js +6 -8
- package/src/camera/constrainCameraToBounds.js +1 -0
- package/src/camera/createSceneCamera.js +5 -1
- package/src/camera/fitCameraBounds.js +9 -1
- package/src/camera/getBearing.js +5 -0
- package/src/camera/getPitch.js +5 -0
- package/src/camera/initializeCameraMap.js +1 -3
- package/src/camera/mapCamera.js +0 -2
- package/src/camera/mapContainerPointToLayerPoint.js +7 -2
- package/src/camera/mapGetBearing.js +7 -2
- package/src/camera/mapGetBounds.js +5 -2
- package/src/camera/mapGetBoundsCenterZoom.js +13 -6
- package/src/camera/mapGetBoundsZoom.js +9 -2
- package/src/camera/mapGetCenterLayerPoint.js +5 -1
- package/src/camera/mapGetPitch.js +7 -2
- package/src/camera/mapLayerPointToContainerPoint.js +7 -1
- package/src/camera/mapLimitCenter.js +9 -2
- package/src/camera/mapLimitOffset.js +13 -7
- package/src/camera/mapPanBy.js +12 -5
- package/src/camera/mapPanInside.js +8 -2
- package/src/camera/mapResetNorth.js +8 -0
- package/src/camera/mapResetNorthPitch.js +8 -0
- package/src/camera/mapSetBearing.js +10 -0
- package/src/camera/mapSetPitch.js +10 -0
- package/src/camera/mapSetPitchAndBearing.js +12 -3
- package/src/camera/mapSetZoomAround.js +9 -1
- package/src/camera/mapTryAnimatedPan.js +8 -1
- package/src/camera/mapUpdateCameraOverlays.js +6 -0
- package/src/camera/setBearing.js +8 -0
- package/src/camera/setPitch.js +8 -0
- package/src/camera/updateMapCamera.js +6 -4
- package/src/camera/updateSceneCamera.js +7 -1
- package/src/camera/updateSky.js +1 -3
- package/src/cog/README.md +29 -0
- package/src/cog/decodeCogTile.js +13 -0
- package/src/cog/finiteCogValues.js +7 -0
- package/src/cog/getCogAssetEntry.js +11 -0
- package/src/cog/getCogBase.js +12 -0
- package/src/cog/getCogHeader.js +7 -0
- package/src/cog/getCogProfile.js +9 -0
- package/src/cog/getCogTile.js +13 -0
- package/src/cog/getColorTile.js +13 -0
- package/src/cog/getElevationTile.js +13 -0
- package/src/cog/hasCogProjection.js +7 -0
- package/src/cog/initCog.js +6 -0
- package/src/cog/invalidCogFullResponse.js +7 -0
- package/src/cog/openCog.js +11 -1
- package/src/cog/openCogAsset.js +8 -0
- package/src/cog/readCog.js +14 -0
- package/src/cog/readCogBlock.js +11 -0
- package/src/cog/readCogBody.js +10 -0
- package/src/cog/readCogDirectories.js +12 -0
- package/src/cog/readCogDirectory.js +13 -0
- package/src/cog/readCogLevel.js +9 -0
- package/src/cog/readCogTag.js +13 -0
- package/src/cog/validCogDimensions.js +9 -0
- package/src/cog/validCogEncoding.js +13 -0
- package/src/cog/validCogGeoArrays.js +9 -0
- package/src/cog/validCogGrid.js +13 -0
- package/src/cog/validCogTileCoordinates.js +9 -0
- package/src/cog/validateCogContainer.js +8 -0
- package/src/cog/validateCogContentRange.js +10 -0
- package/src/cog/validateCogOffsets.js +9 -0
- package/src/cog/validateCogRange.js +9 -0
- package/src/cog/validateCogResponse.js +11 -0
- package/src/collision/README.md +28 -0
- package/src/collision/advanceFeature.js +13 -0
- package/src/collision/boxNormal.js +29 -0
- package/src/collision/cachedCollider.js +18 -0
- package/src/collision/collectIntersections.js +28 -3
- package/src/collision/collectMeshes.js +6 -0
- package/src/collision/collideTrip.js +56 -0
- package/src/collision/collider.js +28 -18
- package/src/collision/countCrossings.js +35 -15
- package/src/collision/enclosesOrigin.js +13 -0
- package/src/collision/flipsNormal.js +15 -0
- package/src/collision/hiddenLightHit.js +11 -0
- package/src/collision/horizontalRay.js +13 -1
- package/src/collision/indexTriangle.js +7 -0
- package/src/collision/insideMesh.js +16 -2
- package/src/collision/insideWalker.js +7 -1
- package/src/collision/intersectMeshes.js +9 -1
- package/src/collision/localRay.js +10 -0
- package/src/collision/mergeHits.js +8 -0
- package/src/collision/missesBox.js +13 -0
- package/src/collision/rayBounds.js +9 -0
- package/src/collision/readTriangle.js +9 -0
- package/src/collision/slabDistance.js +14 -0
- package/src/collision/slabMiss.js +14 -0
- package/src/collision/sortCrossings.js +17 -0
- package/src/collision/sortHits.js +9 -1
- package/src/collision/trafficBounds.js +24 -0
- package/src/collision/trafficCollision.js +24 -49
- package/src/collision/trafficRay.js +21 -0
- package/src/collision/transformTriangle.js +9 -0
- package/src/collision/transformVertices.js +18 -0
- package/src/collision/triangleDistance.js +14 -1
- package/src/collision/vertexCount.js +8 -0
- package/src/collision/worldHit.js +12 -0
- package/src/colors/README.md +25 -0
- package/src/colors/formatRGB.js +7 -0
- package/src/colors/hslChannel.js +10 -0
- package/src/colors/mixColor.js +10 -0
- package/src/colors/parseColor.js +4 -1
- package/src/colors/toSRGB.js +7 -0
- package/src/controls/README.md +26 -0
- package/src/controls/acceptPitchDrag.js +7 -0
- package/src/controls/acceptRotateDrag.js +7 -0
- package/src/controls/addCameraHandler.js +7 -0
- package/src/controls/adjustCameraDrag.js +6 -8
- package/src/controls/cameraControls.js +5 -4
- package/src/controls/cameraDragClick.js +5 -1
- package/src/controls/cameraDragContextMenu.js +7 -3
- package/src/controls/cameraDragDown.js +5 -2
- package/src/controls/cameraDragEnd.js +8 -4
- package/src/controls/cameraDragMove.js +12 -8
- package/src/controls/changeCameraTouch.js +6 -8
- package/src/controls/cleanupCameraTouch.js +1 -4
- package/src/controls/compassAddHooks.js +1 -0
- package/src/controls/compassOrientation.js +7 -1
- package/src/controls/compassRemoveHooks.js +1 -0
- package/src/controls/containerResizeAddHooks.js +1 -0
- package/src/controls/containerResizeRemoveHooks.js +1 -0
- package/src/controls/dragCamera.js +11 -2
- package/src/controls/endAllCameraDrags.js +1 -2
- package/src/controls/endAllCameraTouches.js +1 -2
- package/src/controls/endCameraTouch.js +6 -0
- package/src/controls/endCameraTouchEvent.js +5 -2
- package/src/controls/failCompassPermission.js +6 -0
- package/src/controls/finishCameraDrag.js +6 -0
- package/src/controls/finishCompassPermission.js +7 -0
- package/src/controls/isEditableTarget.js +7 -0
- package/src/controls/loadCameraControls.js +9 -0
- package/src/controls/moveCameraTouch.js +9 -6
- package/src/controls/notifyCameraTouchChange.js +1 -0
- package/src/controls/pitchDragAddHooks.js +1 -1
- package/src/controls/pitchDragRemoveHooks.js +1 -0
- package/src/controls/refreshRotateControl.js +2 -0
- package/src/controls/refreshRotateFocus.js +3 -2
- package/src/controls/removeCameraDrag.js +15 -12
- package/src/controls/resizeMap.js +5 -0
- package/src/controls/rotateButtonClick.js +6 -1
- package/src/controls/rotateButtonKeydown.js +10 -4
- package/src/controls/rotateControl.js +9 -1
- package/src/controls/rotateOnAdd.js +7 -1
- package/src/controls/rotateOnRemove.js +5 -0
- package/src/controls/shiftRotateAddHooks.js +1 -1
- package/src/controls/shiftRotateRemoveHooks.js +1 -0
- package/src/controls/shiftRotateWheel.js +9 -4
- package/src/controls/startCameraTouch.js +5 -2
- package/src/core/README.md +28 -0
- package/src/core/adjustCameraMarkerPan.js +7 -2
- package/src/core/cameraCircleBounds.js +5 -1
- package/src/core/cameraMarkerDrag.js +1 -2
- package/src/core/cameraMarkerOnDrag.js +7 -4
- package/src/core/closestCameraLayerPoint.js +7 -1
- package/src/core/constructLayer.js +7 -0
- package/src/core/extendLeafletClass.js +7 -0
- package/src/core/extendTerrainPixelBounds.js +10 -0
- package/src/core/fireRasterLoad.js +1 -1
- package/src/core/gridlayerGetEvents.js +5 -2
- package/src/core/gridlayerGetTiledPixelBounds.js +7 -1
- package/src/core/initializeGridContainer.js +1 -1
- package/src/core/initializeNativeLayer.js +1 -4
- package/src/core/layerAddInitHook.js +5 -0
- package/src/core/layerCallInitHooks.js +1 -2
- package/src/core/layerMergeOptions.js +7 -0
- package/src/core/markerGetEvents.js +5 -2
- package/src/core/markerInitInteraction.js +8 -5
- package/src/core/markerSetIcon.js +11 -6
- package/src/core/markerSetPos.js +5 -2
- package/src/core/markerSetRotation.js +10 -0
- package/src/core/markerUpdateZIndex.js +6 -4
- package/src/core/popupAdjustPan.js +5 -2
- package/src/core/popupGetEvents.js +5 -1
- package/src/core/popupUpdatePosition.js +1 -2
- package/src/core/projectNativePath.js +7 -0
- package/src/core/redrawPath.js +5 -0
- package/src/core/removeLayer.js +10 -7
- package/src/core/setRotation.js +7 -0
- package/src/core/tooltipGetEvents.js +5 -1
- package/src/core/tooltipSetPosition.js +5 -2
- package/src/core/updateGridOpacity.js +2 -1
- package/src/core/whenReady.js +9 -6
- package/src/geometry/README.md +29 -0
- package/src/geometry/addBridges.js +8 -6
- package/src/geometry/addGeneratedTriangle.js +8 -4
- package/src/geometry/appendAreaTriangle.js +15 -0
- package/src/geometry/appendNativeTriangle.js +14 -0
- package/src/geometry/appendRouteDash.js +18 -0
- package/src/geometry/appendRouteSegment.js +13 -0
- package/src/geometry/assembleAreaGeometry.js +7 -0
- package/src/geometry/boundsQuad.js +8 -0
- package/src/geometry/box.js +10 -0
- package/src/geometry/bridgeEdge.js +7 -0
- package/src/geometry/bridgeElevation.js +8 -1
- package/src/geometry/bridgeFaces.js +7 -0
- package/src/geometry/bridgePaths.js +8 -0
- package/src/geometry/bridgePolygon.js +6 -0
- package/src/geometry/bridgeSides.js +7 -0
- package/src/geometry/buildGeometryParts.js +7 -0
- package/src/geometry/buildProjectedPoint.js +11 -0
- package/src/geometry/buildProjectedPolygon.js +9 -0
- package/src/geometry/circleAt.js +15 -2
- package/src/geometry/circleGeometry.js +6 -0
- package/src/geometry/clipLine.js +8 -1
- package/src/geometry/clipSegment.js +9 -0
- package/src/geometry/computeBounds.js +5 -2
- package/src/geometry/conformModelToTerrain.js +6 -3
- package/src/geometry/createLampRing.js +8 -0
- package/src/geometry/createModelGeometry.js +11 -1
- package/src/geometry/createRasterQuadGeometry.js +7 -1
- package/src/geometry/createTreeRing.js +8 -1
- package/src/geometry/crossVector.js +8 -0
- package/src/geometry/dashValues.js +9 -0
- package/src/geometry/dashedSegment.js +12 -0
- package/src/geometry/disk.js +9 -0
- package/src/geometry/diskAt.js +14 -2
- package/src/geometry/emitter.js +10 -0
- package/src/geometry/fillNativePolygon.js +8 -0
- package/src/geometry/generateTreeGeometry.js +11 -5
- package/src/geometry/indexBridge.js +8 -2
- package/src/geometry/instanceAreaGeometry.js +7 -1
- package/src/geometry/interpolateRoute.js +10 -2
- package/src/geometry/lampPostGeometry.js +9 -2
- package/src/geometry/lightGeometry.js +9 -2
- package/src/geometry/line.js +7 -0
- package/src/geometry/lineJoin.js +9 -0
- package/src/geometry/markerImageBounds.js +9 -0
- package/src/geometry/markerQuadCorners.js +9 -3
- package/src/geometry/meshShadowBounds.js +9 -0
- package/src/geometry/nativeGeometry.js +9 -1
- package/src/geometry/offsetBelowGround.js +7 -0
- package/src/geometry/polygon.js +7 -0
- package/src/geometry/quad.js +14 -0
- package/src/geometry/restoreGeometry.js +6 -0
- package/src/geometry/roofCoverage.js +12 -5
- package/src/geometry/roofFootprint.js +12 -4
- package/src/geometry/routeGeometry.js +7 -2
- package/src/geometry/samePoint.js +8 -0
- package/src/geometry/segment.js +9 -0
- package/src/geometry/setVertexColor.js +1 -1
- package/src/geometry/shadowBounds.js +8 -0
- package/src/geometry/subtractRoofTile.js +9 -0
- package/src/geometry/subtractVector.js +8 -0
- package/src/geometry/surface.js +11 -1
- package/src/geometry/terrainBuffers.js +10 -3
- package/src/geometry/terrainGrid.js +7 -2
- package/src/geometry/terrainTileGeometry.js +13 -4
- package/src/geometry/treeGeometry.js +7 -4
- package/src/geometry/triangle.js +11 -0
- package/src/geometry/validateTree.js +12 -0
- package/src/geometry/vertexNormals.js +8 -2
- package/src/geometry/visitNativeCoordinates.js +7 -0
- package/src/globals/CELL.js +6 -2
- package/src/globals/Compass.js +5 -0
- package/src/globals/ContainerResize.js +5 -0
- package/src/globals/HEIGHT.js +5 -0
- package/src/globals/L.js +5 -0
- package/src/globals/PitchDrag.js +5 -0
- package/src/globals/README.md +28 -0
- package/src/globals/ShiftRotate.js +5 -0
- package/src/globals/TILE_RADIUS.js +5 -0
- package/src/globals/TILE_SIZE.js +5 -0
- package/src/globals/TouchMode.js +5 -0
- package/src/globals/alphaBlend.js +5 -0
- package/src/globals/archiveDecoder.js +5 -0
- package/src/globals/archiveNorthWest.js +5 -0
- package/src/globals/archiveSouthEast.js +5 -0
- package/src/globals/atmosphereColor.js +5 -0
- package/src/globals/atmosphereStops.js +5 -0
- package/src/globals/blobParts.js +5 -0
- package/src/globals/cameraAngles.js +5 -0
- package/src/globals/cameraAnimatedOptions.js +5 -0
- package/src/globals/cameraAnimationFrame.js +5 -0
- package/src/globals/cameraAnimations.js +5 -0
- package/src/globals/cameraBearingSensitivity.js +5 -0
- package/src/globals/cameraDragSensitivity.js +5 -0
- package/src/globals/cameraDrags.js +5 -0
- package/src/globals/cameraEmptyOptions.js +5 -0
- package/src/globals/cameraFocusOptions.js +5 -0
- package/src/globals/cameraFov.js +5 -0
- package/src/globals/cameraListenerOptions.js +5 -0
- package/src/globals/cameraTouchStates.js +5 -0
- package/src/globals/cameraZeroPadding.js +5 -0
- package/src/globals/cogTags.js +5 -0
- package/src/globals/colorLayout.js +5 -0
- package/src/globals/colorTexture.js +5 -0
- package/src/globals/coreEventTypes.js +5 -0
- package/src/globals/coreMatrixKeys.js +5 -0
- package/src/globals/coreQuadIndices.js +5 -0
- package/src/globals/coreQuadUV.js +5 -0
- package/src/globals/coreSampler.js +5 -0
- package/src/globals/coreWhite.js +5 -0
- package/src/globals/cosObliquity.js +5 -0
- package/src/globals/coverageTiles.js +5 -0
- package/src/globals/dark.js +5 -0
- package/src/globals/defaultMaterial.js +5 -0
- package/src/globals/degrees.js +5 -0
- package/src/globals/demBuffer.js +5 -0
- package/src/globals/demLayout.js +5 -0
- package/src/globals/demSize.js +5 -0
- package/src/globals/demTarget.js +5 -0
- package/src/globals/demTexture.js +5 -0
- package/src/globals/depthBindGroup.js +5 -0
- package/src/globals/depthTexture.js +5 -0
- package/src/globals/directoryReader.js +5 -0
- package/src/globals/disabledShadow.js +5 -0
- package/src/globals/drawEntries.js +5 -0
- package/src/globals/drawFrameEntry.js +5 -0
- package/src/globals/drawMeshEntry.js +5 -0
- package/src/globals/drawSamplerEntries.js +5 -0
- package/src/globals/drawTerrainEntry.js +5 -0
- package/src/globals/drawTextureEntries.js +5 -0
- package/src/globals/earthCirc.js +5 -0
- package/src/globals/elevationWGSL.js +2 -0
- package/src/globals/fragmentShader.js +5 -0
- package/src/globals/frameBuffer.js +5 -0
- package/src/globals/frameCommands.js +5 -0
- package/src/globals/frameLayoutEntry.js +5 -0
- package/src/globals/geometryDecoder.js +5 -0
- package/src/globals/geometryEmpty.js +5 -0
- package/src/globals/geometryImageOptions.js +5 -0
- package/src/globals/geometryPixelStates.js +5 -0
- package/src/globals/geometryQuaternion.js +5 -0
- package/src/globals/geometryScale.js +5 -0
- package/src/globals/geometrySemantics.js +5 -0
- package/src/globals/geometryTranslation.js +5 -0
- package/src/globals/geometryWorkerUrl.js +5 -0
- package/src/globals/glass.js +5 -0
- package/src/globals/gridEvents.js +5 -0
- package/src/globals/gridFadeFrame.js +5 -0
- package/src/globals/halfRadians.js +5 -0
- package/src/globals/headerBounds.js +5 -0
- package/src/globals/headerFlags.js +5 -0
- package/src/globals/headerOffsets.js +5 -0
- package/src/globals/headlight.js +5 -0
- package/src/globals/hull.js +5 -0
- package/src/globals/instanceLayout.js +5 -0
- package/src/globals/lampDirections.js +5 -0
- package/src/globals/layerControlAddItem.js +5 -0
- package/src/globals/layerProto.js +5 -0
- package/src/globals/leafletLayer.js +5 -0
- package/src/globals/lightScale.js +5 -0
- package/src/globals/limbs.js +5 -1
- package/src/globals/loading.js +5 -0
- package/src/globals/mapMethods.js +5 -0
- package/src/globals/markerMethods.js +5 -0
- package/src/globals/markerPanFrame.js +5 -0
- package/src/globals/meshBindGroup.js +5 -0
- package/src/globals/meshBuffer.js +5 -0
- package/src/globals/meshCopySize.js +5 -0
- package/src/globals/meshImage.js +5 -0
- package/src/globals/meshLayoutEntry.js +5 -0
- package/src/globals/meshOffsets.js +5 -0
- package/src/globals/meshPipeline.js +5 -0
- package/src/globals/meshStack.js +5 -0
- package/src/globals/meshTarget.js +5 -0
- package/src/globals/moves.js +5 -1
- package/src/globals/mvtTextDecoder.js +5 -0
- package/src/globals/nativeMethodHandlers.js +5 -0
- package/src/globals/nativeScalableStyleKeys.js +5 -0
- package/src/globals/nextId.js +5 -0
- package/src/globals/normalLayout.js +5 -0
- package/src/globals/paints.js +5 -0
- package/src/globals/parts.js +5 -0
- package/src/globals/pendingGridFades.js +5 -0
- package/src/globals/pendingInitializations.js +5 -0
- package/src/globals/pendingMapChanges.js +5 -0
- package/src/globals/pendingMarkerPan.js +5 -0
- package/src/globals/pendingPlacements.js +5 -0
- package/src/globals/pendingRasterLoads.js +5 -0
- package/src/globals/pendingUpdates.js +5 -0
- package/src/globals/pendingZoomAnimations.js +5 -0
- package/src/globals/pipelineLayout.js +5 -0
- package/src/globals/popupEvents.js +5 -0
- package/src/globals/popupPan.js +5 -0
- package/src/globals/popupPosition.js +5 -0
- package/src/globals/positionLayout.js +5 -0
- package/src/globals/programEntries.js +5 -0
- package/src/globals/programLayout.js +5 -0
- package/src/globals/radians.js +5 -0
- package/src/globals/rasterBuffer.js +5 -0
- package/src/globals/rasterIndices.js +5 -0
- package/src/globals/rasterNormals.js +5 -0
- package/src/globals/rasterPoint.js +5 -0
- package/src/globals/rasterPositions.js +5 -0
- package/src/globals/rasterSampler.js +5 -0
- package/src/globals/rasterTexture.js +5 -0
- package/src/globals/rasterUVs.js +5 -0
- package/src/globals/removeLayer.js +5 -0
- package/src/globals/renderEmpty.js +5 -0
- package/src/globals/ringDirections.js +5 -0
- package/src/globals/roofBindGroup.js +5 -0
- package/src/globals/roofBlitSampler.js +5 -0
- package/src/globals/roofBuffer.js +5 -0
- package/src/globals/roofCommands.js +5 -0
- package/src/globals/roofCopySize.js +5 -0
- package/src/globals/roofImage.js +5 -0
- package/src/globals/roofMin.js +5 -0
- package/src/globals/roofOpacities.js +5 -0
- package/src/globals/roofPass.js +5 -0
- package/src/globals/roofPipeline.js +5 -0
- package/src/globals/roofSampler.js +5 -0
- package/src/globals/roofShader.js +5 -0
- package/src/globals/roofSignatures.js +5 -0
- package/src/globals/roofSize.js +5 -0
- package/src/globals/roofTarget.js +5 -0
- package/src/globals/roofTexture.js +5 -0
- package/src/globals/roofTiles.js +5 -0
- package/src/globals/roundProfile.js +5 -0
- package/src/globals/samplerLayoutEntries.js +5 -0
- package/src/globals/sceneCleanupFields.js +5 -0
- package/src/globals/sceneEmptyOptions.js +5 -0
- package/src/globals/scenePass.js +5 -0
- package/src/globals/sceneSunlightUniforms.js +5 -0
- package/src/globals/sceneTransferFields.js +5 -0
- package/src/globals/sceneWalkHandlers.js +5 -0
- package/src/globals/shadowBindGroup.js +5 -0
- package/src/globals/shadowBounds.js +5 -0
- package/src/globals/shadowCamera.js +5 -0
- package/src/globals/shadowDepthLayout.js +5 -0
- package/src/globals/shadowHigh.js +5 -0
- package/src/globals/shadowInstanceLayouts.js +5 -0
- package/src/globals/shadowLayouts.js +5 -0
- package/src/globals/shadowLow.js +5 -0
- package/src/globals/shadowMeshLayout.js +5 -0
- package/src/globals/shadowOffsets.js +5 -0
- package/src/globals/shadowPass.js +5 -0
- package/src/globals/shadowPipeline.js +5 -0
- package/src/globals/shadowPipelineLayout.js +5 -0
- package/src/globals/shadowShader.js +5 -0
- package/src/globals/shadowTexture.js +5 -0
- package/src/globals/shadowValues.js +5 -0
- package/src/globals/shirt.js +5 -0
- package/src/globals/sinObliquity.js +5 -0
- package/src/globals/sizes.js +5 -0
- package/src/globals/skin.js +5 -0
- package/src/globals/speed.js +5 -1
- package/src/globals/sunBindGroup.js +5 -0
- package/src/globals/taillight.js +5 -0
- package/src/globals/tau.js +5 -0
- package/src/globals/terrainLayoutEntry.js +5 -0
- package/src/globals/textureLayoutEntries.js +5 -0
- package/src/globals/tiledBounds.js +5 -0
- package/src/globals/tooltipEvents.js +5 -0
- package/src/globals/tooltipPosition.js +5 -0
- package/src/globals/trafficClocks.js +5 -0
- package/src/globals/trafficEmptyList.js +5 -0
- package/src/globals/trafficEmptyOptions.js +5 -0
- package/src/globals/trafficRouteMaterial.js +5 -0
- package/src/globals/trafficShader.js +5 -1
- package/src/globals/triangleContexts.js +5 -0
- package/src/globals/trousers.js +5 -0
- package/src/globals/types.js +5 -0
- package/src/globals/tyre.js +5 -0
- package/src/globals/uVLayout.js +5 -0
- package/src/globals/vectorStyleNamedColors.js +5 -0
- package/src/globals/vectorTileEvents.js +5 -0
- package/src/globals/vehicles.js +2 -0
- package/src/globals/vertexShader.js +5 -0
- package/src/globals/wantedTiles.js +5 -0
- package/src/globals/white.js +5 -0
- package/src/globals/workerCogSource.js +5 -0
- package/src/gpu/README.md +29 -0
- package/src/gpu/initializeRendererResources.js +6 -1
- package/src/gpu/initializeSharedRenderer.js +15 -8
- package/src/gpu/mountRenderer.js +7 -1
- package/src/gpu/releaseRenderer.js +8 -0
- package/src/gpu/rendererDeviceError.js +5 -3
- package/src/gpu/rendererDeviceLost.js +5 -3
- package/src/gpu/reportShaderCompilation.js +8 -0
- package/src/gpu/requestAdapter.js +8 -0
- package/src/gpu/requestDevice.js +9 -0
- package/src/gpu/showWebGPUWarning.js +5 -0
- package/src/index.js +0 -2
- package/src/layer-controls/README.md +25 -0
- package/src/layer-controls/layerControlInputId.js +7 -0
- package/src/layer-controls/layerCountTitle.js +10 -0
- package/src/layer-controls/placeEntry.js +9 -0
- package/src/layer-controls/placeEntryElement.js +7 -0
- package/src/layer-controls/placeUnderEntry.js +7 -0
- package/src/layer-controls/removeEntry.js +1 -0
- package/src/layer-controls/renderLayerCount.js +9 -1
- package/src/layer-controls/replaceEntry.js +1 -2
- package/src/layer-controls/runPlacements.js +1 -2
- package/src/layer-controls/underEntry.js +6 -2
- package/src/layer-controls/updateLayerCount.js +5 -1
- package/src/lighting/README.md +28 -0
- package/src/lighting/cacheLightGrid.js +9 -1
- package/src/lighting/collectLightMeshes.js +7 -1
- package/src/lighting/lightGrid.js +10 -1
- package/src/lighting/updatePointLights.js +7 -3
- package/src/lighting/visitLightCells.js +14 -1
- package/src/lighting/visitLightGridCells.js +11 -0
- package/src/lighting/worldLights.js +8 -1
- package/src/lighting/writeLightCell.js +9 -0
- package/src/materials/README.md +28 -0
- package/src/materials/createProgram.js +8 -4
- package/src/materials/createProgramLayout.js +8 -0
- package/src/materials/createProgramUniforms.js +7 -0
- package/src/materials/modelMaterialFor.js +8 -0
- package/src/materials/prepareMeshCutout.js +9 -0
- package/src/materials/terrainRasterProgram.js +15 -8
- package/src/materials/validateRoofMaterial.js +7 -0
- package/src/models/README.md +27 -0
- package/src/models/applyModelTransform.js +6 -2
- package/src/models/buildModelNodes.js +10 -0
- package/src/models/createModelContext.js +9 -0
- package/src/models/decodeModel.js +13 -2
- package/src/models/hasUnsupportedPrimitives.js +7 -0
- package/src/models/loadBuffer.js +10 -0
- package/src/models/loadModel.js +10 -7
- package/src/models/loadModelResources.js +8 -0
- package/src/models/modelNode.js +11 -1
- package/src/models/normalizeAccessor.js +10 -0
- package/src/models/prepareModel.js +10 -0
- package/src/models/prepareModelGeometry.js +10 -0
- package/src/models/prepareModelPrimitive.js +8 -0
- package/src/models/readAccessor.js +10 -4
- package/src/models/readAccessorValue.js +9 -0
- package/src/models/readAccessorValues.js +17 -0
- package/src/models/readModelAttributes.js +12 -0
- package/src/models/readModelIndices.js +12 -0
- package/src/models/readSparseAccessor.js +12 -0
- package/src/models/releaseModelResources.js +5 -0
- package/src/mvt/README.md +28 -0
- package/src/mvt/addMvtCrossings.js +6 -0
- package/src/mvt/appendMvtBandTriangles.js +11 -0
- package/src/mvt/appendMvtCoordinates.js +9 -0
- package/src/mvt/appendMvtPolygonTriangles.js +10 -0
- package/src/mvt/beginMvtPath.js +10 -0
- package/src/mvt/closeMvtPath.js +9 -0
- package/src/mvt/collectMvtEdges.js +10 -0
- package/src/mvt/createMvtReader.js +7 -0
- package/src/mvt/decodeVectorTile.js +7 -0
- package/src/mvt/expectMvtWire.js +8 -0
- package/src/mvt/finishMvtPath.js +9 -0
- package/src/mvt/finiteMvtCoordinate.js +7 -0
- package/src/mvt/groupMvtPolygons.js +10 -0
- package/src/mvt/isMvtFallbackError.js +7 -0
- package/src/mvt/mergeMvtActiveEdges.js +9 -0
- package/src/mvt/mvtEdgeX.js +8 -0
- package/src/mvt/mvtPathsVertices.js +7 -0
- package/src/mvt/mvtPolygonPaths.js +7 -0
- package/src/mvt/numericMvtValue.js +7 -0
- package/src/mvt/readMvtFeature.js +12 -0
- package/src/mvt/readMvtField.js +9 -0
- package/src/mvt/readMvtGeometry.js +13 -0
- package/src/mvt/readMvtInteger.js +10 -0
- package/src/mvt/readMvtKnownValue.js +9 -0
- package/src/mvt/readMvtLayer.js +9 -0
- package/src/mvt/readMvtMessage.js +8 -0
- package/src/mvt/readMvtNumber.js +9 -0
- package/src/mvt/readMvtNumbers.js +7 -0
- package/src/mvt/readMvtString.js +8 -0
- package/src/mvt/readMvtValue.js +10 -0
- package/src/mvt/skipMvtField.js +8 -0
- package/src/mvt/sortMvtActiveEdges.js +5 -0
- package/src/mvt/sortedMvtLevels.js +7 -0
- package/src/mvt/takeMvtBytes.js +10 -0
- package/src/mvt/tessellateVectorRings.js +7 -0
- package/src/mvt/triangulateVectorRings.js +4 -0
- package/src/native/README.md +27 -0
- package/src/native/beforeNativeRender.js +5 -0
- package/src/native/bypassNativeEvent.js +10 -0
- package/src/native/canScaleNativeStyle.js +9 -0
- package/src/native/compareNativeHits.js +8 -0
- package/src/native/createNativeMesh.js +15 -0
- package/src/native/disposeNativeLayer.js +3 -2
- package/src/native/forwardNativeError.js +5 -0
- package/src/native/getGridTerrainTile.js +13 -0
- package/src/native/gridTerrainElevation.js +8 -0
- package/src/native/handleNativeMapEvent.js +9 -4
- package/src/native/hideTargets.js +6 -0
- package/src/native/initNativeGPU.js +6 -3
- package/src/native/isCurrentNativeLayer.js +9 -4
- package/src/native/loadGridTerrain.js +10 -0
- package/src/native/nativeAddLatLng.js +7 -0
- package/src/native/nativeBringToBack.js +7 -0
- package/src/native/nativeBringToFront.js +7 -0
- package/src/native/nativeEventSource.js +9 -0
- package/src/native/nativeEvents.js +5 -4
- package/src/native/nativeLayer.js +10 -6
- package/src/native/nativeLayerMethod.js +9 -2
- package/src/native/nativeProgram.js +8 -0
- package/src/native/nativeRedraw.js +7 -0
- package/src/native/nativeSetBounds.js +7 -0
- package/src/native/nativeSetIcon.js +7 -0
- package/src/native/nativeSetLatLng.js +7 -0
- package/src/native/nativeSetLatLngs.js +7 -0
- package/src/native/nativeSetOpacity.js +7 -0
- package/src/native/nativeSetRadius.js +7 -0
- package/src/native/nativeSetStyle.js +7 -0
- package/src/native/nativeSetUrl.js +7 -0
- package/src/native/nativeSetZIndex.js +7 -0
- package/src/native/nativeSetZIndexOffset.js +7 -0
- package/src/native/nativeTerrainElevation.js +11 -0
- package/src/native/nativeVectorGeometry.js +7 -0
- package/src/native/orderNativeGridLayer.js +6 -0
- package/src/native/prepareGridTerrainRequests.js +7 -0
- package/src/native/pruneNativeResources.js +5 -0
- package/src/native/putNativeMesh.js +14 -0
- package/src/native/quadNativeMesh.js +11 -1
- package/src/native/readyNativeGPU.js +10 -6
- package/src/native/refreshNativeEvent.js +5 -0
- package/src/native/refreshNativeLayer.js +5 -3
- package/src/native/refreshNativeLayerContract.js +5 -2
- package/src/native/rejectNativeReady.js +5 -0
- package/src/native/removeNativeEvents.js +7 -3
- package/src/native/removeTargets.js +5 -2
- package/src/native/reorderNativeLayer.js +5 -3
- package/src/native/resolveNativeReady.js +3 -0
- package/src/native/restoreNativeEvents.js +3 -0
- package/src/native/retainGridTerrain.js +5 -0
- package/src/native/styleNativeMesh.js +11 -5
- package/src/native/syncGridLayer.js +5 -1
- package/src/native/syncGridTile.js +10 -0
- package/src/native/syncImageOverlay.js +8 -3
- package/src/native/syncMarker.js +5 -0
- package/src/native/syncNativeStrokeAnchors.js +6 -0
- package/src/native/syncNativeStrokeZoom.js +5 -0
- package/src/native/syncTerrainGridTile.js +10 -0
- package/src/native/syncVectorLayer.js +5 -0
- package/src/native/synchronizeNativeLayer.js +5 -3
- package/src/native/terrainGridMesh.js +13 -0
- package/src/native/updateNativeHover.js +8 -0
- package/src/native/updateNativeLayerView.js +3 -3
- package/src/native/updateNativeStrokeRadius.js +5 -0
- package/src/picking/README.md +29 -0
- package/src/picking/collectVisibleMesh.js +8 -0
- package/src/picking/findFeature.js +4 -4
- package/src/picking/hit.js +14 -7
- package/src/picking/hitColliderCell.js +10 -0
- package/src/picking/hitMesh.js +8 -2
- package/src/picking/onClick.js +6 -5
- package/src/picking/onPointerLeave.js +5 -5
- package/src/picking/onPointerMove.js +6 -5
- package/src/picking/pointerClick.js +5 -0
- package/src/picking/pointerLeave.js +1 -0
- package/src/picking/pointerMove.js +5 -0
- package/src/picking/raycast.js +2 -4
- package/src/picking/setHighlight.js +6 -5
- package/src/picking/shouldSkipOther.js +8 -2
- package/src/picking/showFeature.js +7 -4
- package/src/picking/validateCameraInverse.js +7 -0
- package/src/projections/README.md +28 -0
- package/src/projections/cameraAngles.js +8 -1
- package/src/projections/displayContainerPoint.js +9 -0
- package/src/projections/groundBounds.js +9 -1
- package/src/projections/localPixel.js +8 -0
- package/src/projections/localPixelForGeometry.js +8 -1
- package/src/projections/localPosition.js +8 -2
- package/src/projections/markerCameraIconPoint.js +9 -1
- package/src/projections/projectBridgePoint.js +13 -1
- package/src/projections/projectCameraPoint.js +11 -1
- package/src/projections/projectCelestialBody.js +11 -2
- package/src/projections/projectRing.js +11 -1
- package/src/projections/projectTreePoint.js +9 -1
- package/src/projections/toPoint.js +9 -1
- package/src/projections/transformZoomAnimationPoint.js +12 -5
- package/src/projections/verticalGroundY.js +11 -0
- package/src/projections/walkerLocalPosition.js +7 -0
- package/src/raster/README.md +28 -0
- package/src/raster/addRasterTile.js +10 -2
- package/src/raster/comparePendingTiles.js +8 -0
- package/src/raster/createRasterMesh.js +6 -5
- package/src/raster/finishRasterAttachment.js +9 -4
- package/src/raster/finishRasterTile.js +11 -2
- package/src/raster/getRasterEvents.js +7 -0
- package/src/raster/getRasterTileSize.js +5 -1
- package/src/raster/initRaster.js +6 -3
- package/src/raster/isRasterLoading.js +7 -3
- package/src/raster/loadRasterTile.js +8 -3
- package/src/raster/onPMTileAdd.js +6 -3
- package/src/raster/onPMTileRemove.js +6 -3
- package/src/raster/pruneRasterTiles.js +7 -3
- package/src/raster/pumpRasterTiles.js +5 -4
- package/src/raster/rasterTileRange.js +9 -0
- package/src/raster/readyRaster.js +8 -3
- package/src/raster/registerTerrainTile.js +9 -3
- package/src/raster/releaseRasterTile.js +6 -3
- package/src/raster/releaseRasterTiles.js +5 -3
- package/src/raster/removeRasterTile.js +6 -3
- package/src/raster/reportRasterError.js +8 -0
- package/src/raster/retainRasterTiles.js +7 -2
- package/src/raster/setPMTileOpacity.js +8 -0
- package/src/raster/setPMTileZIndex.js +8 -0
- package/src/raster/setRasterOpacity.js +6 -3
- package/src/raster/setRasterTerrain.js +6 -3
- package/src/raster/setRasterZIndex.js +6 -3
- package/src/raster/updateAttachedTiles.js +9 -3
- package/src/raster/updateRasterTiles.js +5 -5
- package/src/rendering/README.md +32 -0
- package/src/rendering/collectFrameMeshes.js +7 -3
- package/src/rendering/collectMeshes.js +11 -0
- package/src/rendering/collectVisibleMesh.js +9 -0
- package/src/rendering/compareMeshDepth.js +8 -0
- package/src/rendering/compareMeshes.js +10 -1
- package/src/rendering/createMesh.js +8 -5
- package/src/rendering/disposeMesh.js +6 -0
- package/src/rendering/drawGeometry.js +9 -2
- package/src/rendering/drawPipeline.js +10 -0
- package/src/rendering/drawSceneMeshes.js +9 -3
- package/src/rendering/nativeStrokeExpansion.js +7 -0
- package/src/rendering/prepareFrameBuffer.js +8 -2
- package/src/rendering/prepareFrameMeshes.js +10 -3
- package/src/rendering/prepareFrameUniforms.js +8 -3
- package/src/rendering/prepareMeshUniforms.js +10 -1
- package/src/rendering/render.js +2 -5
- package/src/rendering/resizeRenderer.js +6 -3
- package/src/rendering/revealRoofMesh.js +10 -1
- package/src/scene/README.md +36 -0
- package/src/scene/addRegisteredLayer.js +5 -4
- package/src/scene/addSceneLayer.js +9 -3
- package/src/scene/attachLayer.js +8 -3
- package/src/scene/attachSharedScene.js +6 -1
- package/src/scene/callLayer.js +11 -5
- package/src/scene/cancelUpdate.js +5 -3
- package/src/scene/createLayer.js +8 -2
- package/src/scene/createSceneNode.js +5 -1
- package/src/scene/emptyEvents.js +5 -0
- package/src/scene/failAttachment.js +9 -3
- package/src/scene/get3DEvents.js +7 -3
- package/src/scene/getLocation.js +8 -4
- package/src/scene/init3D.js +6 -3
- package/src/scene/initializeLayer.js +9 -2
- package/src/scene/initializerFor.js +8 -0
- package/src/scene/isNativeLayer.js +8 -2
- package/src/scene/layerInitialize.js +7 -4
- package/src/scene/onAdd3DLayer.js +6 -4
- package/src/scene/onMapChange.js +0 -5
- package/src/scene/onRemove3DLayer.js +6 -5
- package/src/scene/ready3D.js +9 -3
- package/src/scene/releaseSharedScene.js +6 -2
- package/src/scene/removeLayerEvents.js +1 -3
- package/src/scene/removeSceneLayer.js +9 -3
- package/src/scene/renderPendingMapChange.js +1 -4
- package/src/scene/renderPendingUpdates.js +5 -4
- package/src/scene/reportLayerError.js +6 -0
- package/src/scene/resolveNextInitialization.js +5 -2
- package/src/scene/restoreObject.js +6 -3
- package/src/scene/scheduleSceneUpdate.js +7 -6
- package/src/scene/setParent.js +6 -2
- package/src/scene/traverse.js +7 -2
- package/src/shaders/README.md +29 -0
- package/src/shaders/materialBaseShader.js +9 -0
- package/src/shaders/materialShaders.js +9 -1
- package/src/shaders/materialSurfaceShader.js +13 -0
- package/src/shaders/materialVertexShader.js +22 -10
- package/src/shaders/nativeStrokeShader.js +7 -0
- package/src/shaders/roofVertexShader.js +7 -0
- package/src/shadows/README.md +28 -0
- package/src/shadows/bindSunlight.js +5 -3
- package/src/shadows/drawShadowMeshes.js +7 -2
- package/src/shadows/ensureShadowPipeline.js +7 -0
- package/src/shadows/renderSunlight.js +8 -4
- package/src/shadows/resizeSunlight.js +6 -3
- package/src/shadows/shadowCacheMatches.js +11 -1
- package/src/shadows/shadowMatrix.js +8 -1
- package/src/shadows/shadowMeshMatches.js +8 -0
- package/src/sources/README.md +33 -0
- package/src/sources/attachAreaMesh.js +5 -4
- package/src/sources/buildArea.js +13 -2
- package/src/sources/buildAreaFeature.js +7 -1
- package/src/sources/buildAreaFeatures.js +9 -0
- package/src/sources/compareAreaDistance.js +8 -0
- package/src/sources/extrusionStyle.js +11 -0
- package/src/sources/featureAnchor.js +12 -0
- package/src/sources/groundOffset.js +7 -0
- package/src/sources/initVectorTiles.js +6 -0
- package/src/sources/initializeGeoJSON.js +6 -3
- package/src/sources/isVectorTileSource.js +7 -0
- package/src/sources/matchesAreaTile.js +10 -0
- package/src/sources/pendingSourceAreas.js +9 -2
- package/src/sources/prepareAreaGeometryJob.js +10 -0
- package/src/sources/projectAreaPolygons.js +10 -0
- package/src/sources/pumpSourceAreas.js +6 -6
- package/src/sources/readyVectorTiles.js +7 -0
- package/src/sources/releaseArea.js +6 -4
- package/src/sources/setGeoJSONData.js +8 -3
- package/src/sources/setGeoJSONLayerData.js +7 -0
- package/src/sources/sourceAreaContext.js +9 -2
- package/src/sources/updateArea.js +5 -5
- package/src/sources/updateSourceStatus.js +6 -3
- package/src/sunlight/README.md +28 -0
- package/src/sunlight/addTimeControlToMap.js +8 -1
- package/src/sunlight/addTimeLayer.js +9 -4
- package/src/sunlight/atmosphere.js +9 -2
- package/src/sunlight/createSun.js +7 -0
- package/src/sunlight/initSunlight.js +5 -0
- package/src/sunlight/initializeTimeControl.js +8 -6
- package/src/sunlight/onAddSun.js +11 -2
- package/src/sunlight/onAddTimeControl.js +7 -0
- package/src/sunlight/onRemoveSun.js +1 -1
- package/src/sunlight/removeSun.js +7 -5
- package/src/sunlight/removeTimeControl.js +7 -1
- package/src/sunlight/removeTimeLayer.js +8 -5
- package/src/sunlight/requestSunlightRender.js +6 -3
- package/src/sunlight/styleTimeControl.js +6 -0
- package/src/sunlight/tickSun.js +5 -0
- package/src/sunlight/updateCelestialDisc.js +11 -0
- package/src/sunlight/updateSky.js +5 -3
- package/src/sunlight/updateSun.js +6 -4
- package/src/sunlight/useLiveTime.js +5 -0
- package/src/sunlight/useSelectedTime.js +6 -4
- package/src/terrain/README.md +30 -0
- package/src/terrain/applyTerrain.js +10 -4
- package/src/terrain/clearLayerTerrain.js +5 -3
- package/src/terrain/copyTerrainTile.js +8 -0
- package/src/terrain/getElevation.js +8 -5
- package/src/terrain/initTerrain.js +5 -3
- package/src/terrain/loadReadyTerrain.js +1 -0
- package/src/terrain/loadTerrain.js +10 -2
- package/src/terrain/loadTerrainTiles.js +10 -3
- package/src/terrain/mapElevationOf.js +8 -0
- package/src/terrain/onTerrainAdd.js +8 -4
- package/src/terrain/onTerrainChange.js +5 -5
- package/src/terrain/onTerrainRemove.js +6 -3
- package/src/terrain/readBridges.js +9 -0
- package/src/terrain/readyTerrainOf.js +7 -0
- package/src/terrain/sampleTerrainTile.js +9 -0
- package/src/terrain/setLayerTerrain.js +5 -3
- package/src/terrain/setTerrainHeight.js +5 -4
- package/src/terrain/terrainAtlas.js +8 -2
- package/src/terrain/terrainElevation.js +8 -2
- package/src/terrain/terrainTileQueue.js +10 -3
- package/src/textures/README.md +29 -0
- package/src/textures/addImageState.js +7 -2
- package/src/textures/attachRasterImage.js +1 -2
- package/src/textures/bindMeshTextures.js +7 -0
- package/src/textures/collectRoofTiles.js +9 -2
- package/src/textures/compareRoofTiles.js +8 -0
- package/src/textures/composeRoofAtlas.js +11 -3
- package/src/textures/destroyTexture.js +6 -4
- package/src/textures/destroyTextureAfterSubmission.js +9 -0
- package/src/textures/ensureRoofBlit.js +5 -0
- package/src/textures/loadModelImage.js +12 -2
- package/src/textures/modelTextureFor.js +12 -4
- package/src/textures/modelTextureSampler.js +7 -2
- package/src/textures/nativeImageError.js +5 -1
- package/src/textures/nativeImageRefresh.js +5 -2
- package/src/textures/nativeTextureFor.js +11 -3
- package/src/textures/prepareMeshTextures.js +8 -0
- package/src/textures/rebuildRoofAtlas.js +8 -3
- package/src/textures/removeImageState.js +8 -3
- package/src/textures/resizeRoofTexture.js +9 -2
- package/src/textures/restoreMaterialTextures.js +6 -0
- package/src/textures/textureBinding.js +9 -0
- package/src/textures/updateRoofAtlas.js +10 -4
- package/src/textures/updateRoofRaster.js +8 -0
- package/src/textures/uploadCanvasTexture.js +15 -0
- package/src/textures/uploadMeshTexture.js +6 -0
- package/src/textures/uploadNativeImage.js +13 -0
- package/src/textures/uploadRoofTile.js +6 -0
- package/src/traffic/README.md +30 -0
- package/src/traffic/addTraffic.js +5 -2
- package/src/traffic/clockMinutes.js +7 -0
- package/src/traffic/compareDepartures.js +8 -0
- package/src/traffic/createTrafficMesh.js +13 -2
- package/src/traffic/destroyTrafficGpu.js +5 -0
- package/src/traffic/disposeTrafficObject.js +13 -10
- package/src/traffic/drawTrafficRoute.js +5 -1
- package/src/traffic/failTraffic.js +6 -0
- package/src/traffic/failedTrafficLoad.js +10 -3
- package/src/traffic/featuresToTrafficLanes.js +8 -0
- package/src/traffic/fetchTrafficLanes.js +11 -0
- package/src/traffic/groundTraffic.js +5 -1
- package/src/traffic/initTraffic.js +17 -15
- package/src/traffic/loadTraffic.js +5 -0
- package/src/traffic/loadedTrafficLanes.js +11 -4
- package/src/traffic/locateTraffic.js +9 -0
- package/src/traffic/moveTraffic.js +6 -0
- package/src/traffic/placeTraffic.js +5 -0
- package/src/traffic/prepareTraffic.js +5 -3
- package/src/traffic/readyTraffic.js +7 -2
- package/src/traffic/rebaseTraffic.js +5 -3
- package/src/traffic/rebuildTrafficMesh.js +5 -1
- package/src/traffic/refreshTrafficTrips.js +10 -0
- package/src/traffic/removeTraffic.js +5 -2
- package/src/traffic/routeColor.js +7 -0
- package/src/traffic/scheduledTrips.js +5 -2
- package/src/traffic/startTraffic.js +7 -2
- package/src/traffic/tickTraffic.js +5 -3
- package/src/traffic/trafficBounds.js +5 -0
- package/src/traffic/trafficNow.js +9 -4
- package/src/traffic/trafficStatusText.js +8 -0
- package/src/traffic/trafficStorage.js +8 -0
- package/src/traffic/trafficTooltip.js +7 -0
- package/src/traffic/tripsAt.js +9 -2
- package/src/traffic/updateTraffic.js +10 -7
- package/src/traffic/updateTrafficLights.js +5 -0
- package/src/traffic/updateTrafficPose.js +7 -0
- package/src/traffic/updateTrafficTerrain.js +10 -5
- package/src/traffic/uploadTrafficLanes.js +6 -0
- package/src/traffic/vehicleOffsets.js +9 -3
- package/src/transforms/README.md +27 -0
- package/src/transforms/composeLocalTransform.js +7 -0
- package/src/transforms/modelNodeMatrix.js +7 -2
- package/src/transforms/transformNativePoint.js +12 -0
- package/src/transforms/updateWorldMatrix.js +5 -2
- package/src/transforms/worldMatrixChanged.js +8 -0
- package/src/triangulation/README.md +26 -0
- package/src/triangulation/area.js +7 -0
- package/src/triangulation/clean.js +9 -0
- package/src/triangulation/clipEars.js +9 -0
- package/src/triangulation/connectHole.js +12 -0
- package/src/triangulation/containsVertex.js +10 -0
- package/src/triangulation/cross.js +9 -0
- package/src/triangulation/crossesBoundary.js +10 -0
- package/src/triangulation/crossesRing.js +9 -0
- package/src/triangulation/equal.js +8 -0
- package/src/triangulation/inside.js +8 -0
- package/src/triangulation/insideHole.js +8 -0
- package/src/triangulation/intersects.js +10 -0
- package/src/triangulation/isClockWise.js +4 -1
- package/src/triangulation/mergeHoles.js +8 -0
- package/src/triangulation/minimumX.js +7 -0
- package/src/triangulation/on.js +9 -0
- package/src/triangulation/polygonRings.js +8 -0
- package/src/triangulation/sortHoles.js +7 -0
- package/src/triangulation/triangulate.js +3 -2
- package/src/triangulation/validateArea.js +9 -0
- package/src/utils/README.md +16 -0
- package/src/utils/compareDistance.js +8 -0
- package/src/utils/noOperation.js +1 -0
- package/src/utils/wrap.js +7 -0
- package/src/utils/yieldTask.js +7 -0
- package/src/vector-style/README.md +27 -0
- package/src/vector-style/appendQuotedStyleCharacter.js +8 -0
- package/src/vector-style/arrayContainsRange.js +10 -0
- package/src/vector-style/evaluateBoolean.js +13 -0
- package/src/vector-style/evaluateCoalesceOrCase.js +13 -0
- package/src/vector-style/evaluateComparison.js +13 -0
- package/src/vector-style/evaluateIExpression.js +13 -0
- package/src/vector-style/evaluateInput.js +10 -0
- package/src/vector-style/evaluateInterpolate.js +9 -0
- package/src/vector-style/evaluateMatch.js +9 -0
- package/src/vector-style/evaluateMath.js +12 -0
- package/src/vector-style/evaluateMembership.js +11 -0
- package/src/vector-style/evaluateNegation.js +13 -0
- package/src/vector-style/evaluatePrimitive.js +12 -0
- package/src/vector-style/evaluateStep.js +9 -0
- package/src/vector-style/evaluateStyle.js +10 -0
- package/src/vector-style/evaluateToExpression.js +13 -0
- package/src/vector-style/fillVectorPaint.js +9 -0
- package/src/vector-style/lineVectorPaint.js +10 -0
- package/src/vector-style/parseFunctionalColor.js +9 -0
- package/src/vector-style/parseHexColor.js +7 -0
- package/src/vector-style/parseVectorStyle.js +7 -0
- package/src/vector-style/readPaintValue.js +11 -0
- package/src/vector-style/removeTrailingCommas.js +7 -0
- package/src/vector-style/scaleDashArray.js +12 -0
- package/src/vector-style/skipStyleComment.js +11 -0
- package/src/vector-style/stripStyleComments.js +7 -0
- package/src/vector-style/styleColor.js +7 -0
- package/src/vector-style/validateVectorLayers.js +8 -0
- package/src/vector-style/vectorPaint.js +9 -0
- package/src/vector-style/visibleStyle.js +9 -0
- package/src/vector-tiles/README.md +30 -0
- package/src/vector-tiles/appendVectorBatch.js +12 -0
- package/src/vector-tiles/attachVectorTileBatch.js +8 -0
- package/src/vector-tiles/attachVectorTileBatches.js +11 -0
- package/src/vector-tiles/compareVectorLabelPriority.js +8 -0
- package/src/vector-tiles/compareVectorTileDistance.js +8 -0
- package/src/vector-tiles/configureVectorTileLayer.js +8 -0
- package/src/vector-tiles/createVectorLabel.js +15 -0
- package/src/vector-tiles/forwardVectorTileError.js +5 -0
- package/src/vector-tiles/loadVectorSprite.js +9 -0
- package/src/vector-tiles/loadVectorTile.js +9 -0
- package/src/vector-tiles/onVectorTileAdd.js +5 -0
- package/src/vector-tiles/onVectorTileMessage.js +5 -0
- package/src/vector-tiles/onVectorTileRemove.js +5 -0
- package/src/vector-tiles/onVectorTileWorkerError.js +5 -0
- package/src/vector-tiles/paintVectorTileBatch.js +6 -0
- package/src/vector-tiles/prepareVectorLabel.js +9 -0
- package/src/vector-tiles/prepareVectorStyleLayer.js +8 -0
- package/src/vector-tiles/prepareVectorTile.js +13 -0
- package/src/vector-tiles/projectVectorPaths.js +10 -0
- package/src/vector-tiles/projectVectorPoint.js +9 -0
- package/src/vector-tiles/projectVectorTriangles.js +10 -0
- package/src/vector-tiles/pruneVectorTiles.js +3 -0
- package/src/vector-tiles/pumpVectorTiles.js +3 -0
- package/src/vector-tiles/readTileJSON.js +10 -0
- package/src/vector-tiles/readVectorStyle.js +11 -0
- package/src/vector-tiles/refreshVectorTiles.js +3 -0
- package/src/vector-tiles/reserveVectorLabelCells.js +8 -0
- package/src/vector-tiles/retireVectorTileGroup.js +7 -0
- package/src/vector-tiles/revokeVectorWorkerUrl.js +5 -0
- package/src/vector-tiles/rotateVectorLabel.js +7 -0
- package/src/vector-tiles/rotateVectorLabels.js +3 -0
- package/src/vector-tiles/simplifyVectorPath.js +8 -0
- package/src/vector-tiles/updateVectorLabelMarker.js +9 -0
- package/src/vector-tiles/updateVectorLabelStyle.js +6 -0
- package/src/vector-tiles/updateVectorTileLabels.js +5 -0
- package/src/vector-tiles/updateVectorTilePaint.js +5 -0
- package/src/vector-tiles/updateVectorTiles.js +3 -0
- package/src/vector-tiles/validateVectorTileZooms.js +9 -0
- package/src/vector-tiles/vectorFeaturePaint.js +10 -0
- package/src/vector-tiles/vectorFeaturePaths.js +10 -0
- package/src/vector-tiles/vectorFeatureZoom.js +10 -0
- package/src/vector-tiles/vectorLabelAnchors.js +8 -1
- package/src/vector-tiles/vectorLabelCandidates.js +7 -0
- package/src/vector-tiles/vectorLabelCells.js +9 -0
- package/src/vector-tiles/vectorLabelIcon.js +8 -0
- package/src/vector-tiles/vectorLabelProperty.js +9 -0
- package/src/vector-tiles/vectorLabelText.js +9 -0
- package/src/vector-tiles/vectorSpriteIcon.js +8 -0
- package/src/vector-tiles/vectorStraightRun.js +10 -1
- package/src/vector-tiles/vectorStyleDependencies.js +7 -0
- package/src/vector-tiles/vectorStyleValue.js +11 -0
- package/src/vector-tiles/vectorStyleZoom.js +7 -1
- package/src/vector-tiles/vectorTileAwaited.js +8 -0
- package/src/vector-tiles/vectorTileOverlaps.js +8 -0
- package/src/vector-tiles/vectorTilePaint.js +8 -0
- package/src/vector-tiles/vectorTileSettings.js +10 -0
- package/src/vector-tiles/vectorTilesIdle.js +8 -0
- package/src/vector-tiles/vectorTolerance.js +8 -1
- package/src/vector-tiles/wrapVectorLabel.js +7 -1
- package/src/vehicles/README.md +27 -0
- package/src/vehicles/bicycleModel.js +7 -1
- package/src/vehicles/boatBenches.js +5 -0
- package/src/vehicles/boatModel.js +8 -8
- package/src/vehicles/buildCarriage.js +9 -1
- package/src/vehicles/busModel.js +11 -3
- package/src/vehicles/carModel.js +12 -11
- package/src/vehicles/metroModel.js +8 -0
- package/src/vehicles/mirrorVehiclePart.js +11 -0
- package/src/vehicles/pedestrianModel.js +7 -1
- package/src/vehicles/tramModel.js +8 -0
- package/src/walk/README.md +30 -0
- package/src/walk/animateWalker.js +5 -4
- package/src/walk/createWalk.js +6 -3
- package/src/walk/initWalk.js +5 -0
- package/src/walk/initializeWalkControl.js +6 -1
- package/src/walk/isWalkBlocked.js +9 -0
- package/src/walk/landWalker.js +12 -8
- package/src/walk/moveWalker.js +17 -4
- package/src/walk/onAddWalkControl.js +9 -0
- package/src/walk/onRemoveWalkControl.js +5 -0
- package/src/walk/onWalkBlur.js +1 -0
- package/src/walk/onWalkKey.js +5 -2
- package/src/walk/onWalkPointer.js +6 -0
- package/src/walk/onWalkTerrain.js +4 -3
- package/src/walk/placeWalker.js +1 -2
- package/src/walk/resolveWalkerPosition.js +5 -0
- package/src/walk/startWalking.js +1 -1
- package/src/walk/stepWalkerHeight.js +7 -0
- package/src/walk/stopWalking.js +1 -0
- package/src/walk/toggleWalking.js +5 -4
- package/src/walk/updateWalkerFrame.js +10 -0
- package/src/walk/updateWalkerView.js +9 -0
- package/src/weakmaps/README.md +33 -0
- package/src/weakmaps/addedByLayer.js +5 -0
- package/src/weakmaps/archiveHeaderByLayer.js +5 -0
- package/src/weakmaps/areasByLayer.js +5 -0
- package/src/weakmaps/boundsMethods.js +5 -0
- package/src/weakmaps/bridgeMeshByLayer.js +5 -0
- package/src/weakmaps/bridgesByLayer.js +5 -0
- package/src/weakmaps/cameraAnimationByMap.js +5 -0
- package/src/weakmaps/cameraBearingByMap.js +5 -0
- package/src/weakmaps/cameraByLayer.js +5 -0
- package/src/weakmaps/cameraDraggableByMap.js +5 -0
- package/src/weakmaps/cameraFields.js +5 -0
- package/src/weakmaps/cameraFrameByMap.js +5 -0
- package/src/weakmaps/cameraHandlersByMap.js +5 -0
- package/src/weakmaps/cameraMaps.js +5 -0
- package/src/weakmaps/cameraPitchByMap.js +5 -0
- package/src/weakmaps/cameraReadyByMap.js +5 -0
- package/src/weakmaps/cameraTouchStateByMap.js +5 -0
- package/src/weakmaps/cameraViewByMap.js +5 -0
- package/src/weakmaps/cameraZIndexOffsetByLayer.js +5 -0
- package/src/weakmaps/closestMethods.js +5 -0
- package/src/weakmaps/colliders.js +5 -0
- package/src/weakmaps/containerByLayer.js +5 -0
- package/src/weakmaps/controlByLayer.js +5 -0
- package/src/weakmaps/countStatusByLayer.js +5 -0
- package/src/weakmaps/cursorByLayer.js +5 -0
- package/src/weakmaps/demByLayer.js +5 -0
- package/src/weakmaps/directoriesByLayer.js +5 -0
- package/src/weakmaps/dragByHandler.js +5 -0
- package/src/weakmaps/dragStates.js +5 -0
- package/src/weakmaps/etagByLayer.js +5 -0
- package/src/weakmaps/eventMapByLayer.js +5 -0
- package/src/weakmaps/eventsByLayer.js +5 -0
- package/src/weakmaps/fadeFrameByLayer.js +5 -0
- package/src/weakmaps/fadeVersionByLayer.js +5 -0
- package/src/weakmaps/frameByLayer.js +5 -0
- package/src/weakmaps/geojsonByLayer.js +5 -0
- package/src/weakmaps/geometryWorkersByMap.js +5 -0
- package/src/weakmaps/gridInitializers.js +5 -0
- package/src/weakmaps/groupByLayer.js +5 -0
- package/src/weakmaps/headerByLayer.js +5 -0
- package/src/weakmaps/highlightedFeatureByLayer.js +5 -0
- package/src/weakmaps/hoveredFeatureByLayer.js +5 -0
- package/src/weakmaps/imageStates.js +5 -0
- package/src/weakmaps/inflightByLayer.js +5 -0
- package/src/weakmaps/kindByLayer.js +5 -0
- package/src/weakmaps/layersByLayer.js +5 -0
- package/src/weakmaps/loadingTilesByLayer.js +5 -0
- package/src/weakmaps/locationByLayer.js +5 -0
- package/src/weakmaps/modelByLayer.js +5 -0
- package/src/weakmaps/modelUrlByLayer.js +5 -0
- package/src/weakmaps/nativeEventMaps.js +5 -0
- package/src/weakmaps/nativeGPUBackByMap.js +5 -0
- package/src/weakmaps/nativeGPUByLayer.js +5 -0
- package/src/weakmaps/nativeGPUOrderByMap.js +5 -0
- package/src/weakmaps/nativeProgramsByRenderer.js +5 -0
- package/src/weakmaps/nativeRenderByLayer.js +5 -0
- package/src/weakmaps/pathProjectionByMap.js +5 -0
- package/src/weakmaps/pitchSkyByMap.js +5 -0
- package/src/weakmaps/pointerEventsByLayer.js +5 -0
- package/src/weakmaps/pruneAfterByLayer.js +5 -0
- package/src/weakmaps/pruneVersionByLayer.js +5 -0
- package/src/weakmaps/pruneWantedByLayer.js +5 -0
- package/src/weakmaps/queuedByLayer.js +5 -0
- package/src/weakmaps/rasterGeometryByLayer.js +5 -0
- package/src/weakmaps/rasterProgramByLayer.js +5 -0
- package/src/weakmaps/rasterTilesByLayer.js +5 -0
- package/src/weakmaps/rasterVersionByLayer.js +5 -0
- package/src/weakmaps/raycasterByLayer.js +5 -0
- package/src/weakmaps/readyByLayer.js +5 -0
- package/src/weakmaps/rendererByLayer.js +5 -0
- package/src/weakmaps/rendererDevices.js +5 -0
- package/src/weakmaps/rendererReadyByLayer.js +5 -0
- package/src/weakmaps/renderers.js +5 -0
- package/src/weakmaps/roofRasterByLayer.js +5 -0
- package/src/weakmaps/roofRastersByLayer.js +5 -0
- package/src/weakmaps/rootByLayer.js +5 -0
- package/src/weakmaps/rotateControlByMap.js +5 -0
- package/src/weakmaps/sceneByLayer.js +5 -0
- package/src/weakmaps/sceneFields.js +5 -0
- package/src/weakmaps/sceneLayers.js +5 -0
- package/src/weakmaps/sceneOriginByLayer.js +5 -0
- package/src/weakmaps/shadowMeshesByLayer.js +5 -0
- package/src/weakmaps/sharedByLayer.js +5 -0
- package/src/weakmaps/sizeByLayer.js +5 -0
- package/src/weakmaps/state3dByLayer.js +5 -0
- package/src/weakmaps/streamTerrainByLayer.js +5 -0
- package/src/weakmaps/streamTerrainByMap.js +5 -0
- package/src/weakmaps/sunByMap.js +5 -0
- package/src/weakmaps/sunlightByControl.js +5 -0
- package/src/weakmaps/sunlightByMap.js +5 -0
- package/src/weakmaps/terrain3DByLayer.js +5 -0
- package/src/weakmaps/terrain3DByMap.js +5 -0
- package/src/weakmaps/terrainArchiveByLayer.js +5 -0
- package/src/weakmaps/terrainBaseYByLayer.js +5 -0
- package/src/weakmaps/terrainBoundsByLayer.js +5 -0
- package/src/weakmaps/terrainControllerByLayer.js +5 -0
- package/src/weakmaps/terrainGridsByLayer.js +5 -0
- package/src/weakmaps/terrainLoadingByLayer.js +5 -0
- package/src/weakmaps/terrainOriginElevationByLayer.js +5 -0
- package/src/weakmaps/terrainPromiseByLayer.js +5 -0
- package/src/weakmaps/terrainReadyByLayer.js +5 -0
- package/src/weakmaps/terrainRequestByLayer.js +5 -0
- package/src/weakmaps/terrainSourceByLayer.js +5 -0
- package/src/weakmaps/terrainTilesByLayer.js +5 -0
- package/src/weakmaps/terrainZoomByLayer.js +5 -0
- package/src/weakmaps/tileZoomByLayer.js +5 -0
- package/src/weakmaps/timeControlByMap.js +5 -0
- package/src/weakmaps/tooltipByLayer.js +5 -0
- package/src/weakmaps/touchByContainer.js +5 -0
- package/src/weakmaps/touchPitchByMap.js +5 -0
- package/src/weakmaps/touchRotateByMap.js +5 -0
- package/src/weakmaps/trafficByLayer.js +5 -0
- package/src/weakmaps/typeByLayer.js +5 -0
- package/src/weakmaps/urlByLayer.js +5 -0
- package/src/weakmaps/vectorTileOptionsByLayer.js +5 -0
- package/src/weakmaps/vectorWorkerByLayer.js +5 -0
- package/src/weakmaps/visibleMeshesByLayer.js +5 -0
- package/src/weakmaps/walkByMap.js +5 -0
- package/src/weakmaps/walkerByLayer.js +5 -0
- package/src/weakmaps/wantedRasterTilesByLayer.js +5 -0
- package/src/weakmaps/workerMapByLayer.js +5 -0
- package/src/weakmaps/zoomLevelByLayer.js +5 -0
- package/src/weakmaps/zoomTransitionsByLayer.js +5 -0
- package/src/weakmaps/zoomViewByLayer.js +5 -0
- package/src/workers/README.md +33 -0
- package/src/workers/acquireGeometryWorker.js +10 -0
- package/src/workers/buildAreaInWorker.js +8 -0
- package/src/workers/closeGeometryWorkers.js +5 -0
- package/src/workers/cogWorker.js +7 -0
- package/src/workers/createGeometryWorker.js +10 -0
- package/src/workers/geometryWorker.js +5 -0
- package/src/workers/getCogInWorker.js +11 -0
- package/src/workers/modelWorker.js +7 -0
- package/src/workers/openCogInWorker.js +8 -0
- package/src/workers/runSourceWorker.js +12 -0
- package/src/workers/settleGeometryWorker.js +6 -0
- package/src/workers/startGeometryWorker.js +7 -0
- package/src/workers/vectorTileWorker.js +5 -0
- package/src/collision/setTrafficNormal.js +0 -9
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { pendingPlacements } from '../globals/pendingPlacements.js';
|
|
2
|
-
|
|
3
|
-
|
|
4
2
|
import { placeUnderEntry } from './placeUnderEntry.js';
|
|
5
3
|
|
|
4
|
+
/** Place the next queued element if its layer is still on the map. */
|
|
6
5
|
export function runPlacements() {
|
|
7
6
|
const state = pendingPlacements.shift();
|
|
8
7
|
if (state?.map.hasLayer(state.layer)) placeUnderEntry(state);
|
|
@@ -5,9 +5,13 @@ import { removeEntry } from './removeEntry.js';
|
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Keeps `element` right under `layer`'s entry in the map's layers control while the layer is on the map.
|
|
8
|
-
*
|
|
8
|
+
*
|
|
9
|
+
* @param {L.Layer} layer Layer whose entry should contain the element.
|
|
10
|
+
* @param {HTMLElement} element Element to place.
|
|
11
|
+
* @param {Function} [onPlace] Callback receiving whether placement succeeded.
|
|
12
|
+
*
|
|
13
|
+
* @returns {boolean} False when no layers control lists the layer.
|
|
9
14
|
*/
|
|
10
|
-
|
|
11
15
|
export function underEntry(layer, element, onPlace) {
|
|
12
16
|
const state = /* alloc */ { map: layer._map, layer, element, onPlace };
|
|
13
17
|
state.map.on('layeradd layerremove', replaceEntry, state);
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import { areasByLayer } from '../weakmaps/areasByLayer.js';
|
|
2
2
|
import { countStatusByLayer } from '../weakmaps/countStatusByLayer.js';
|
|
3
|
-
|
|
4
3
|
import { underEntry } from './underEntry.js';
|
|
5
4
|
import { renderLayerCount } from './renderLayerCount.js';
|
|
6
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Collect loaded and pending counts from an event or layer areas and refresh the status.
|
|
8
|
+
*
|
|
9
|
+
* @param {Object} event Layer event containing the target and optional loading counts.
|
|
10
|
+
*/
|
|
7
11
|
export function updateLayerCount(event) {
|
|
8
12
|
const layer = event.target, status = countStatusByLayer.get(layer)
|
|
9
13
|
if (!layer._map) return;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Lighting
|
|
2
|
+
|
|
3
|
+
[Source guide](../README.md) | [Project README](../../README.md)
|
|
4
|
+
|
|
5
|
+
Collects point lights from visible scene layers and maintains spatial grids for
|
|
6
|
+
fixed and moving lights. Grid data is uploaded for the shared renderer.
|
|
7
|
+
|
|
8
|
+
## Point-light grids
|
|
9
|
+
|
|
10
|
+
```mermaid
|
|
11
|
+
flowchart LR
|
|
12
|
+
Layers["Visible nightLight layers"] --> Collect["Collect world-space lights"]
|
|
13
|
+
Collect --> Fixed["Fixed grid"]
|
|
14
|
+
Collect --> Moving["Moving grid"]
|
|
15
|
+
Fixed --> Buffer["Shared GPU storage buffer"]
|
|
16
|
+
Moving --> Buffer
|
|
17
|
+
Buffer --> Shader["Nearby-light lookup"]
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Grids use 32-metre cells. If their data exceeds the GPU storage limit, the
|
|
21
|
+
update throws; buffer growth also refreshes bindings. Directional sunlight uses
|
|
22
|
+
separate [shadows](../shadows/README.md).
|
|
23
|
+
|
|
24
|
+
- [updatePointLights.js](./updatePointLights.js): collect, cache and upload light grids.
|
|
25
|
+
- [lightGrid.js](./lightGrid.js): build a spatial light grid.
|
|
26
|
+
- [worldLights.js](./worldLights.js): transform lights into world coordinates.
|
|
27
|
+
|
|
28
|
+
Related: [shadows](../shadows/README.md), [sunlight](../sunlight/README.md), [rendering](../rendering/README.md).
|
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
import { lightGrid } from './lightGrid.js';
|
|
2
2
|
import { worldLights } from './worldLights.js';
|
|
3
3
|
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* Reuse a light grid when its meshes and world-space light snapshots are unchanged.
|
|
6
|
+
*
|
|
7
|
+
* @param {Object[]} meshes Meshes containing point lights.
|
|
8
|
+
* @param {Object} [previous] Previous grid and mesh snapshots, if any.
|
|
9
|
+
* @param {number} maxBytes Maximum GPU storage size in bytes.
|
|
10
|
+
*
|
|
11
|
+
* @returns {Object} Reused or rebuilt light grid and snapshots.
|
|
12
|
+
*/
|
|
5
13
|
export function cacheLightGrid(meshes, previous, maxBytes) {
|
|
6
14
|
let unchanged = previous?.meshes.length === meshes.length;
|
|
7
15
|
let i, mesh, matrix, lights, cache, sameMatrix, j;
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import { geometryEmpty } from '../globals/geometryEmpty.js';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Collect visible nodes with lights into fixed and moving mesh lists.
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} node Scene node to visit.
|
|
7
|
+
* @param {Object[]} fixed Output list for fixed lights.
|
|
8
|
+
* @param {Object[]} moving Output list for dynamic lights.
|
|
9
|
+
*/
|
|
4
10
|
export function collectLightMeshes(node, fixed, moving) {
|
|
5
11
|
if (!node.visible) return;
|
|
6
12
|
if (node.extras?.lights) (node.extras.dynamicLights ? moving : fixed).push(node);
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import { visitCells } from './visitLightGridCells.js';
|
|
2
2
|
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Pack world-space point lights into the shader's spatial grid.
|
|
5
|
+
*
|
|
6
|
+
* @param {Float32Array[]} packed Arrays of world-space light records.
|
|
7
|
+
* @param {number} maxBytes Maximum GPU storage size in bytes.
|
|
8
|
+
*
|
|
9
|
+
* @returns {Object} Packed grid data and light count.
|
|
10
|
+
*
|
|
11
|
+
* @throws {Error} If the grid exceeds the GPU storage limit.
|
|
12
|
+
*/
|
|
4
13
|
export function lightGrid(packed, maxBytes) {
|
|
5
14
|
let count = 0;
|
|
6
15
|
let values, i, value, key;
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import { layersByLayer } from '../weakmaps/layersByLayer.js';
|
|
2
2
|
import { rendererByLayer } from '../weakmaps/rendererByLayer.js';
|
|
3
3
|
import { rootByLayer } from '../weakmaps/rootByLayer.js';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
4
|
import { destroyTexture } from '../textures/destroyTexture.js';
|
|
8
5
|
import { bindSunlight } from '../shadows/bindSunlight.js';
|
|
9
6
|
import { cacheLightGrid } from './cacheLightGrid.js';
|
|
10
7
|
import { collectLightMeshes } from './collectLightMeshes.js';
|
|
11
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Cache and upload fixed and moving point-light grids for the shared renderer.
|
|
11
|
+
*
|
|
12
|
+
* @param {L.Layer} layer Layer owning the shared renderer.
|
|
13
|
+
*
|
|
14
|
+
* @throws {Error} If the combined grids exceed the GPU storage limit.
|
|
15
|
+
*/
|
|
12
16
|
export function updatePointLights(layer) {
|
|
13
17
|
const { device, sunlight: sun } = rendererByLayer.get(layer);
|
|
14
18
|
const fixed = /* alloc */ [];
|
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
import { writeLightCell } from './writeLightCell.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Count or write a light into each spatial grid cell covered by its radius.
|
|
5
|
+
*
|
|
6
|
+
* @param {Float32Array} values Packed light records.
|
|
7
|
+
* @param {number} i Starting index of the light record.
|
|
8
|
+
* @param {number} minX Grid origin on the x axis.
|
|
9
|
+
* @param {number} minZ Grid origin on the z axis.
|
|
10
|
+
* @param {number} cellSize Grid cell width.
|
|
11
|
+
* @param {number} columns Number of grid columns.
|
|
12
|
+
* @param {Uint32Array} offsets Per-cell counts or write offsets.
|
|
13
|
+
* @param {Float32Array} [data] Output grid data; omitted during counting.
|
|
14
|
+
*/
|
|
1
15
|
export function visitLightCells(values, i, minX, minZ, cellSize, columns, offsets, data) {
|
|
2
16
|
const radius = values[i + 3], x = values[i] - minX, z = values[i + 2] - minZ;
|
|
3
17
|
let y, c, key;
|
|
@@ -10,4 +24,3 @@ export function visitLightCells(values, i, minX, minZ, cellSize, columns, offset
|
|
|
10
24
|
}
|
|
11
25
|
}
|
|
12
26
|
}
|
|
13
|
-
import { writeLightCell } from './writeLightCell.js';
|
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
import { visitLightCells } from './visitLightCells.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Visit covered grid cells for every packed light.
|
|
5
|
+
*
|
|
6
|
+
* @param {Float32Array[]} packed Arrays of packed light records.
|
|
7
|
+
* @param {number} minX Grid origin on the x axis.
|
|
8
|
+
* @param {number} minZ Grid origin on the z axis.
|
|
9
|
+
* @param {number} cellSize Grid cell width.
|
|
10
|
+
* @param {number} columns Number of grid columns.
|
|
11
|
+
* @param {Uint32Array} offsets Per-cell counts or write offsets.
|
|
12
|
+
* @param {Float32Array} [data] Output grid data; omitted during counting.
|
|
13
|
+
*/
|
|
3
14
|
export function visitCells(packed, minX, minZ, cellSize, columns, offsets, data) {
|
|
4
15
|
let values, i;
|
|
5
16
|
for (values of packed) for (i = 0; i < values.length; i += 8) {
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import { lightScale } from '../globals/lightScale.js';
|
|
2
2
|
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Transform a mesh's point lights to world-space packed records.
|
|
5
|
+
*
|
|
6
|
+
* @param {Object[]} lights Local point lights.
|
|
7
|
+
* @param {number[]|Float32Array} m Column-major world matrix.
|
|
8
|
+
*
|
|
9
|
+
* @returns {Float32Array} Records of [x, y, z, radius, r, g, b, intensity].
|
|
10
|
+
*/
|
|
4
11
|
export function worldLights(lights, m) {
|
|
5
12
|
const values = /* alloc */ new Float32Array(lights.length * 8);
|
|
6
13
|
let i, x, y, z, radius, color, flux, w;
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copy a packed light record into a cell and advance that cell's write offset.
|
|
3
|
+
*
|
|
4
|
+
* @param {Float32Array} values Packed light records.
|
|
5
|
+
* @param {number} i Starting index of the light record.
|
|
6
|
+
* @param {number} key Grid cell index.
|
|
7
|
+
* @param {Uint32Array} offsets Per-cell write offsets in vec4 units.
|
|
8
|
+
* @param {Float32Array} data Output grid data.
|
|
9
|
+
*/
|
|
1
10
|
export function writeLightCell(values, i, key, offsets, data) {
|
|
2
11
|
let j, o;
|
|
3
12
|
for (j = 0, o = offsets[key] * 4; j < 8; j++) data[o + j] = values[i + j];
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Materials
|
|
2
|
+
|
|
3
|
+
[Source guide](../README.md) | [Project README](../../README.md)
|
|
4
|
+
|
|
5
|
+
Builds GPU material programs, layouts and uniforms, converts model materials,
|
|
6
|
+
and handles terrain and roof material requirements.
|
|
7
|
+
|
|
8
|
+
## Material to GPU program
|
|
9
|
+
|
|
10
|
+
```mermaid
|
|
11
|
+
flowchart LR
|
|
12
|
+
Model["glTF material"] --> Convert["Convert material"]
|
|
13
|
+
Convert --> Features["Material features"]
|
|
14
|
+
Features --> WGSL["Generate WGSL + bindings"]
|
|
15
|
+
Features --> Layout["Program layout + uniforms"]
|
|
16
|
+
WGSL --> Program["GPU program / pipeline cache"]
|
|
17
|
+
Layout --> Program
|
|
18
|
+
Textures["Texture uploads"] --> Program
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Shader declarations, binding order, uniforms and mesh attributes must agree.
|
|
22
|
+
Compilation diagnostics are reported through [gpu](../gpu/README.md).
|
|
23
|
+
|
|
24
|
+
- [createProgram.js](./createProgram.js): create a material program.
|
|
25
|
+
- [createProgramLayout.js](./createProgramLayout.js): configure GPU bindings.
|
|
26
|
+
- [modelMaterialFor.js](./modelMaterialFor.js): derive materials from model data.
|
|
27
|
+
|
|
28
|
+
Related: [shaders](../shaders/README.md), [textures](../textures/README.md), [rendering](../rendering/README.md).
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { rendererByLayer } from '../weakmaps/rendererByLayer.js';
|
|
2
|
-
|
|
3
2
|
import { defaultMaterial } from '../globals/defaultMaterial.js';
|
|
4
3
|
import { vertexShader } from '../globals/vertexShader.js';
|
|
5
4
|
import { fragmentShader } from '../globals/fragmentShader.js';
|
|
@@ -12,12 +11,17 @@ import { uVLayout } from '../globals/uVLayout.js';
|
|
|
12
11
|
import { instanceLayout } from '../globals/instanceLayout.js';
|
|
13
12
|
import { createProgramLayout } from './createProgramLayout.js';
|
|
14
13
|
import { createProgramUniforms } from './createProgramUniforms.js';
|
|
15
|
-
|
|
16
|
-
|
|
17
14
|
import { materialShaders } from '../shaders/materialShaders.js';
|
|
18
|
-
|
|
19
15
|
import { reportCompilation } from '../gpu/reportShaderCompilation.js';
|
|
20
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Create shader modules, layouts and uniforms for a layer material.
|
|
19
|
+
*
|
|
20
|
+
* @param {L.Layer} layer Layer providing the renderer and shader options.
|
|
21
|
+
* @param {Object} [material] Material options.
|
|
22
|
+
*
|
|
23
|
+
* @returns {Object} Program state and pipeline cache.
|
|
24
|
+
*/
|
|
21
25
|
export function createProgram(layer, material = defaultMaterial) {
|
|
22
26
|
const renderer = rendererByLayer.get(layer), { device } = renderer;
|
|
23
27
|
const shaders = materialShaders(
|
|
@@ -6,6 +6,14 @@ import { terrainLayoutEntry } from '../globals/terrainLayoutEntry.js';
|
|
|
6
6
|
import { textureLayoutEntries } from '../globals/textureLayoutEntries.js';
|
|
7
7
|
import { samplerLayoutEntries } from '../globals/samplerLayoutEntries.js';
|
|
8
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Create a bind group layout for mesh, frame, terrain and shader texture bindings.
|
|
11
|
+
*
|
|
12
|
+
* @param {GPUDevice} device Device creating the layout.
|
|
13
|
+
* @param {Object} shaders Shader bindings and terrain requirements.
|
|
14
|
+
*
|
|
15
|
+
* @returns {GPUBindGroupLayout} The created layout.
|
|
16
|
+
*/
|
|
9
17
|
export function createProgramLayout(device, shaders) {
|
|
10
18
|
const bindGroupEntries = programEntries;
|
|
11
19
|
bindGroupEntries.length = 0;
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create material uniform values and add bindings for configured textures.
|
|
3
|
+
*
|
|
4
|
+
* @param {Object} material Material properties.
|
|
5
|
+
*
|
|
6
|
+
* @returns {Object} Uniform values keyed by shader property.
|
|
7
|
+
*/
|
|
1
8
|
export function createProgramUniforms(material) {
|
|
2
9
|
const uniforms = /* alloc */ {
|
|
3
10
|
baseColor: /* alloc */ { value: material.color || /* alloc */ [1, 1, 1] },
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import { textureFor } from '../textures/modelTextureFor.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Translate a glTF material into renderer material properties and texture bindings.
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} context Model loading context and backend layer.
|
|
7
|
+
* @param {Object} material glTF material definition.
|
|
8
|
+
*
|
|
9
|
+
* @returns {Object} Renderer material properties.
|
|
10
|
+
*/
|
|
3
11
|
export function materialFor(context, material) {
|
|
4
12
|
const { backend: layer } = context;
|
|
5
13
|
const pbr = material.pbrMetallicRoughness;
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validate and write native or raster cutout settings into the mesh uniform buffer.
|
|
3
|
+
*
|
|
4
|
+
* @param {Object} renderer Renderer containing uniform data and pixel ratio.
|
|
5
|
+
* @param {Object} mesh Mesh with optional native or raster source.
|
|
6
|
+
* @param {number} base Starting index in the uniform array.
|
|
7
|
+
*
|
|
8
|
+
* @throws {Error} If cutout coordinates or radius are invalid.
|
|
9
|
+
*/
|
|
1
10
|
export function prepareMeshCutout(renderer, mesh, base) {
|
|
2
11
|
const data = renderer.uniformData;
|
|
3
12
|
const cutout = (mesh._nativeSource || mesh._rasterSource)?.options.cutout;
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { demByLayer } from '../weakmaps/demByLayer.js';
|
|
2
|
-
import { rasterProgramByLayer } from '../weakmaps/rasterProgramByLayer.js';
|
|
3
|
-
import { rendererByLayer } from '../weakmaps/rendererByLayer.js';
|
|
4
|
-
import { terrainBoundsByLayer } from '../weakmaps/terrainBoundsByLayer.js';
|
|
5
|
-
import { terrainGridsByLayer } from '../weakmaps/terrainGridsByLayer.js';
|
|
6
|
-
import { terrainOriginElevationByLayer } from '../weakmaps/terrainOriginElevationByLayer.js';
|
|
7
|
-
import { terrainTilesByLayer } from '../weakmaps/terrainTilesByLayer.js';
|
|
8
|
-
|
|
1
|
+
import { demByLayer } from '../weakmaps/demByLayer.js';
|
|
2
|
+
import { rasterProgramByLayer } from '../weakmaps/rasterProgramByLayer.js';
|
|
3
|
+
import { rendererByLayer } from '../weakmaps/rendererByLayer.js';
|
|
4
|
+
import { terrainBoundsByLayer } from '../weakmaps/terrainBoundsByLayer.js';
|
|
5
|
+
import { terrainGridsByLayer } from '../weakmaps/terrainGridsByLayer.js';
|
|
6
|
+
import { terrainOriginElevationByLayer } from '../weakmaps/terrainOriginElevationByLayer.js';
|
|
7
|
+
import { terrainTilesByLayer } from '../weakmaps/terrainTilesByLayer.js';
|
|
9
8
|
import { demTexture } from '../globals/demTexture.js';
|
|
10
9
|
import { demTarget } from '../globals/demTarget.js';
|
|
11
10
|
import { demLayout } from '../globals/demLayout.js';
|
|
@@ -14,6 +13,14 @@ import { createProgram } from './createProgram.js';
|
|
|
14
13
|
import { destroyTexture } from '../textures/destroyTexture.js';
|
|
15
14
|
import { terrainAtlas } from '../terrain/terrainAtlas.js';
|
|
16
15
|
|
|
16
|
+
/**
|
|
17
|
+
* Reuse the current terrain raster program or create it with an uploaded elevation atlas.
|
|
18
|
+
*
|
|
19
|
+
* @param {L.Layer} layer Layer providing terrain and renderer state.
|
|
20
|
+
* @param {Object} texture Raster texture used by the program.
|
|
21
|
+
*
|
|
22
|
+
* @returns {Object} Terrain raster program.
|
|
23
|
+
*/
|
|
17
24
|
export function rasterProgram(layer, texture) {
|
|
18
25
|
const device = rendererByLayer.get(layer).device
|
|
19
26
|
if (rasterProgramByLayer.get(layer)?.device === device) return rasterProgramByLayer.get(layer);
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validate the optional roof and wall texture material settings.
|
|
3
|
+
*
|
|
4
|
+
* @param {Object} material Material containing texture settings.
|
|
5
|
+
*
|
|
6
|
+
* @throws {Error} If a texture setting is not a boolean or a finite number from 0 to 1.
|
|
7
|
+
*/
|
|
1
8
|
export function validateRoofMaterial(material) {
|
|
2
9
|
let name, value;
|
|
3
10
|
for (name of /* alloc */ ['roofTexture', 'wallTexture']) {
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Models
|
|
2
|
+
|
|
3
|
+
[Source guide](../README.md) | [Project README](../../README.md)
|
|
4
|
+
|
|
5
|
+
Loads static GLB/glTF resources, decodes model attributes and builds scene nodes.
|
|
6
|
+
Model loading uses a source worker before attaching nodes to the layer.
|
|
7
|
+
|
|
8
|
+
## Loading and attachment
|
|
9
|
+
|
|
10
|
+
```mermaid
|
|
11
|
+
flowchart LR
|
|
12
|
+
Added["Layer added"] --> Worker["Worker: decode glTF / GLB + resources"]
|
|
13
|
+
Worker --> View["Wait for camera view"]
|
|
14
|
+
View --> Nodes["Build nodes, geometry and materials"]
|
|
15
|
+
Nodes --> Transform["Apply layer transform"]
|
|
16
|
+
Transform --> Attach["Attach to layer root"]
|
|
17
|
+
Attach --> Terrain["Optional terrain conformance"]
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Missing scenes and empty root lists are errors. For misplaced models, inspect
|
|
21
|
+
node and layer [transforms](../transforms/README.md) before projection.
|
|
22
|
+
|
|
23
|
+
- [loadModel.js](./loadModel.js): load, attach and optionally conform a model to terrain.
|
|
24
|
+
- [decodeModel.js](./decodeModel.js): decode model content.
|
|
25
|
+
- [buildModelNodes.js](./buildModelNodes.js): assemble model scene nodes.
|
|
26
|
+
|
|
27
|
+
Related: [workers](../workers/README.md), [materials](../materials/README.md), [transforms](../transforms/README.md).
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
import { modelByLayer } from '../weakmaps/modelByLayer.js';
|
|
2
|
-
|
|
1
|
+
import { modelByLayer } from '../weakmaps/modelByLayer.js';
|
|
3
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Apply the layer's optional rotation and scale to its model.
|
|
5
|
+
*
|
|
6
|
+
* @param {L.Layer} layer Layer containing the transform options.
|
|
7
|
+
*/
|
|
4
8
|
export function applyModelTransform(layer) {
|
|
5
9
|
const model = modelByLayer.get(layer);
|
|
6
10
|
if (layer.options.rotation) {
|
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import { modelNode } from './modelNode.js';
|
|
2
2
|
import { releaseModelResources } from './releaseModelResources.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Build scene roots, releasing allocated resources if node construction fails.
|
|
6
|
+
*
|
|
7
|
+
* @param {Object} context Model construction context.
|
|
8
|
+
* @param {Object} scene glTF scene containing root node indices.
|
|
9
|
+
*
|
|
10
|
+
* @returns {Array<Object>} Built root nodes.
|
|
11
|
+
*
|
|
12
|
+
* @throws {Error} If building a node fails.
|
|
13
|
+
*/
|
|
4
14
|
export function buildModelNodes(context, scene) {
|
|
5
15
|
const nodes = /* alloc */ [];
|
|
6
16
|
let index;
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import { geometryEmpty } from '../globals/geometryEmpty.js';
|
|
2
2
|
import { materialFor } from '../materials/modelMaterialFor.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Create the model construction context and prepare its materials.
|
|
6
|
+
*
|
|
7
|
+
* @param {L.Layer} layer Rendering backend for the model.
|
|
8
|
+
* @param {Object} description Decoded glTF document.
|
|
9
|
+
* @param {Array} images Loaded model images.
|
|
10
|
+
*
|
|
11
|
+
* @returns {Object} Context containing materials, textures and tracked resources.
|
|
12
|
+
*/
|
|
4
13
|
export function createModelContext(layer, description, images) {
|
|
5
14
|
const context = /* alloc */ {
|
|
6
15
|
backend: layer, description, images,
|
|
@@ -1,8 +1,19 @@
|
|
|
1
1
|
import { geometryDecoder } from '../globals/geometryDecoder.js';
|
|
2
|
-
/** Decode a static glTF JSON document or GLB v2 container. */
|
|
3
2
|
import { hasUnsupportedPrimitives } from './hasUnsupportedPrimitives.js';
|
|
4
3
|
|
|
5
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Decode a static glTF JSON document or GLB v2 container.
|
|
6
|
+
*
|
|
7
|
+
* @param {ArrayBuffer} data Encoded glTF or GLB data.
|
|
8
|
+
*
|
|
9
|
+
* @returns {Object} Decoded glTF document.
|
|
10
|
+
*
|
|
11
|
+
* @throws {Error} If the GLB header is invalid.
|
|
12
|
+
* @throws {Error} If a GLB chunk header is truncated.
|
|
13
|
+
* @throws {Error} If GLB chunk data is truncated.
|
|
14
|
+
* @throws {Error} If the GLB JSON chunk is missing.
|
|
15
|
+
* @throws {Error} If the model uses unsupported glTF features.
|
|
16
|
+
*/
|
|
6
17
|
export function decodeModel(data) {
|
|
7
18
|
const view = /* alloc */ new DataView(data);
|
|
8
19
|
const decoder = geometryDecoder;
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check whether any mesh uses morph targets or a non-triangle primitive mode.
|
|
3
|
+
*
|
|
4
|
+
* @param {Array<Object>} meshes glTF meshes, if present.
|
|
5
|
+
*
|
|
6
|
+
* @returns {boolean} Whether unsupported primitives were found.
|
|
7
|
+
*/
|
|
1
8
|
export function hasUnsupportedPrimitives(meshes) {
|
|
2
9
|
if (!meshes) return false;
|
|
3
10
|
let mesh, primitive;
|
package/src/models/loadBuffer.js
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fetch a glTF buffer into its binary property unless already loaded.
|
|
3
|
+
*
|
|
4
|
+
* @param {Object} buffer Buffer description and URI.
|
|
5
|
+
* @param {string} directory Base URL for the buffer URI.
|
|
6
|
+
*
|
|
7
|
+
* @returns {Promise<void>} Completion of the buffer load.
|
|
8
|
+
*
|
|
9
|
+
* @throws {Error} If the buffer response is not successful.
|
|
10
|
+
*/
|
|
1
11
|
export async function loadBuffer(buffer, directory) {
|
|
2
12
|
if (buffer.binary) return;
|
|
3
13
|
const response = await fetch(/* alloc */ new URL(buffer.uri, directory).href);
|
package/src/models/loadModel.js
CHANGED
|
@@ -4,9 +4,6 @@ import { modelUrlByLayer } from '../weakmaps/modelUrlByLayer.js';
|
|
|
4
4
|
import { rootByLayer } from '../weakmaps/rootByLayer.js';
|
|
5
5
|
import { terrain3DByMap } from '../weakmaps/terrain3DByMap.js';
|
|
6
6
|
import { cameraViewByMap } from '../weakmaps/cameraViewByMap.js';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
7
|
import { runSourceWorker } from '../workers/runSourceWorker.js';
|
|
11
8
|
import { setParent } from '../scene/setParent.js';
|
|
12
9
|
import { emptyNode } from '../scene/createSceneNode.js';
|
|
@@ -15,10 +12,16 @@ import { createModelContext } from './createModelContext.js';
|
|
|
15
12
|
import { buildModelNodes } from './buildModelNodes.js';
|
|
16
13
|
import { applyModelTransform } from './applyModelTransform.js';
|
|
17
14
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
15
|
+
/**
|
|
16
|
+
* Load the configured static GLB/glTF model, attach it to the layer and conform it to terrain.
|
|
17
|
+
*
|
|
18
|
+
* @param {L.Layer} layer Layer that owns the model and its scene root.
|
|
19
|
+
*
|
|
20
|
+
* @returns {Promise<void>} Completion of the model load.
|
|
21
|
+
*
|
|
22
|
+
* @throws {Error} If the glTF scene is missing.
|
|
23
|
+
* @throws {Error} If the glTF scene has no root nodes.
|
|
24
|
+
*/
|
|
22
25
|
export async function loadModel(layer) {
|
|
23
26
|
await addedByLayer.get(layer).promise;
|
|
24
27
|
const url = /* alloc */ new URL(modelUrlByLayer.get(layer), document.baseURI).href;
|
|
@@ -2,6 +2,14 @@ import { geometryEmpty } from '../globals/geometryEmpty.js';
|
|
|
2
2
|
import { loadBuffer } from './loadBuffer.js';
|
|
3
3
|
import { loadImage } from '../textures/loadModelImage.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Load the buffers and images referenced by a decoded glTF document.
|
|
7
|
+
*
|
|
8
|
+
* @param {Object} description Decoded glTF document.
|
|
9
|
+
* @param {string} directory Base URL for resource URIs.
|
|
10
|
+
*
|
|
11
|
+
* @returns {Promise<Array>} Loaded images.
|
|
12
|
+
*/
|
|
5
13
|
export async function loadModelResources(description, directory) {
|
|
6
14
|
const bufferRequests = /* alloc */ [];
|
|
7
15
|
let buffer;
|
package/src/models/modelNode.js
CHANGED
|
@@ -1,11 +1,21 @@
|
|
|
1
1
|
import { nextId } from '../globals/nextId.js';
|
|
2
2
|
import { geometryEmpty } from '../globals/geometryEmpty.js';
|
|
3
|
-
|
|
4
3
|
import { emptyNode } from '../scene/createSceneNode.js';
|
|
5
4
|
import { nodeMatrix } from '../transforms/modelNodeMatrix.js';
|
|
6
5
|
import { setParent } from '../scene/setParent.js';
|
|
7
6
|
import { createModelGeometry } from '../geometry/createModelGeometry.js';
|
|
8
7
|
|
|
8
|
+
/**
|
|
9
|
+
* Recursively construct a scene node and its mesh primitives and children.
|
|
10
|
+
*
|
|
11
|
+
* @param {Object} context Model construction context.
|
|
12
|
+
* @param {number} index Index into the glTF nodes array.
|
|
13
|
+
*
|
|
14
|
+
* @returns {Object} Constructed scene node.
|
|
15
|
+
*
|
|
16
|
+
* @throws {Error} If the node forms a cycle.
|
|
17
|
+
* @throws {Error} If the node index is invalid.
|
|
18
|
+
*/
|
|
9
19
|
export function modelNode(context, index) {
|
|
10
20
|
const { backend: layer, description, active } = context;
|
|
11
21
|
// Track only the recursion path: shared mesh references are valid, cycles are not.
|
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert integer accessor data to floats, applying glTF normalization when requested.
|
|
3
|
+
*
|
|
4
|
+
* @param {Object} spec glTF accessor specification.
|
|
5
|
+
* @param {TypedArrayConstructor} Type Integer component array constructor.
|
|
6
|
+
* @param {TypedArray} data Raw accessor components.
|
|
7
|
+
* @param {number} size Components per element.
|
|
8
|
+
*
|
|
9
|
+
* @returns {Object} Float data, element size and original integer data.
|
|
10
|
+
*/
|
|
1
11
|
export function normalizeAccessor(spec, Type, data, size) {
|
|
2
12
|
const normalized = /* alloc */ new Float32Array(data.length);
|
|
3
13
|
let i;
|
|
@@ -2,6 +2,16 @@ import { decodeModel } from './decodeModel.js';
|
|
|
2
2
|
import { loadModelResources } from './loadModelResources.js';
|
|
3
3
|
import { prepareModelGeometry } from './prepareModelGeometry.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Fetch a static model and prepare its images and geometry for transfer from a worker.
|
|
7
|
+
*
|
|
8
|
+
* @param {string} url Model URL.
|
|
9
|
+
*
|
|
10
|
+
* @returns {Promise<Object>} Prepared description, images and transferables.
|
|
11
|
+
*
|
|
12
|
+
* @throws {Error} If the model response is not successful.
|
|
13
|
+
* @throws {Error} If the glTF scene is missing.
|
|
14
|
+
*/
|
|
5
15
|
export async function prepareModel(url) {
|
|
6
16
|
const response = await fetch(url);
|
|
7
17
|
if (!response.ok) throw /* alloc */ new Error(`Unable to load model: HTTP ${response.status}`);
|
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import { geometryEmpty } from '../globals/geometryEmpty.js';
|
|
2
2
|
import { prepareModelPrimitive } from './prepareModelPrimitive.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Prepare geometry for meshes reachable from the scene and collect their buffers.
|
|
6
|
+
*
|
|
7
|
+
* @param {Object} description Decoded glTF document with loaded buffers.
|
|
8
|
+
* @param {Object} scene glTF scene containing root node indices.
|
|
9
|
+
*
|
|
10
|
+
* @returns {Array<ArrayBuffer>} Unique geometry buffers to transfer.
|
|
11
|
+
*
|
|
12
|
+
* @throws {Error} If a referenced node is invalid.
|
|
13
|
+
*/
|
|
4
14
|
export function prepareModelGeometry(description, scene) {
|
|
5
15
|
const pending = scene.nodes.slice(), visited = /* alloc */ new Set();
|
|
6
16
|
const meshes = /* alloc */ new Set(), transfers = /* alloc */ new Set();
|
|
@@ -2,6 +2,14 @@ import { readModelAttributes } from './readModelAttributes.js';
|
|
|
2
2
|
import { readModelIndices } from './readModelIndices.js';
|
|
3
3
|
import { vertexNormals } from '../geometry/vertexNormals.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Decode primitive attributes and indices, generating normals when absent.
|
|
7
|
+
*
|
|
8
|
+
* @param {Object} description Decoded glTF document with loaded buffers.
|
|
9
|
+
* @param {Object} primitive glTF mesh primitive to prepare.
|
|
10
|
+
*
|
|
11
|
+
* @returns {Object} Prepared attributes, also stored on the primitive.
|
|
12
|
+
*/
|
|
5
13
|
export function prepareModelPrimitive(description, primitive) {
|
|
6
14
|
const { attributes, vertexCount } = readModelAttributes(description, primitive);
|
|
7
15
|
readModelIndices(description, primitive, attributes, vertexCount);
|