leaflet-city-mapper 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/leaflet-city-mapper-src.js.map +1 -1
- package/dist/leaflet-city-mapper-worker-src.js.map +1 -1
- package/dist/leaflet-city-mapper-worker.js.map +1 -1
- package/dist/leaflet-city-mapper.js.map +1 -1
- package/libs/leaflet-lens.js +151 -151
- package/libs/leaflet.js +3 -3
- package/libs/openlayers-bindings.js +1129 -1129
- package/libs/openlayers-bindings.min.js.map +1 -1
- package/package.json +2 -4
- package/src/animations/cancelCameraAnimation.js +19 -19
- package/src/animations/mapStopPitchBearingAnimation.js +10 -10
- package/src/animations/scheduleCameraAnimation.js +15 -15
- package/src/animations/scheduleMarkerPan.js +14 -14
- package/src/animations/updateZoomCamera.js +25 -25
- package/src/archives/findDirectoryEntry.js +17 -17
- package/src/archives/findTile.js +45 -45
- package/src/archives/getDirectoryEntries.js +30 -30
- package/src/archives/getTileData.js +26 -26
- package/src/archives/readArchiveRange.js +48 -48
- package/src/astronomy/solarTime.js +21 -21
- package/src/camera/cameraMapReady.js +9 -9
- package/src/camera/cleanupCameraMap.js +13 -13
- package/src/camera/constrainCameraToBounds.js +3 -3
- package/src/camera/createSceneCamera.js +25 -25
- package/src/camera/getBearing.js +10 -10
- package/src/camera/getPitch.js +10 -10
- package/src/camera/mapGetBoundsCenterZoom.js +14 -14
- package/src/camera/mapLimitOffset.js +17 -17
- package/src/camera/mapPanBy.js +14 -14
- package/src/camera/setBearing.js +13 -13
- package/src/camera/setPitch.js +13 -13
- package/src/cog/decodeCogTile.js +37 -37
- package/src/cog/finiteCogValues.js +12 -12
- package/src/cog/getCogAssetEntry.js +26 -26
- package/src/cog/getCogBase.js +22 -22
- package/src/cog/getCogHeader.js +10 -10
- package/src/cog/getCogProfile.js +25 -25
- package/src/cog/getCogTile.js +25 -25
- package/src/cog/getColorTile.js +38 -38
- package/src/cog/getElevationTile.js +29 -29
- package/src/cog/hasCogProjection.js +16 -16
- package/src/cog/initCog.js +13 -13
- package/src/cog/invalidCogFullResponse.js +10 -10
- package/src/cog/openCog.js +40 -40
- package/src/cog/openCogAsset.js +22 -22
- package/src/cog/readCog.js +39 -39
- package/src/cog/readCogBlock.js +19 -19
- package/src/cog/readCogBody.js +30 -30
- package/src/cog/readCogDirectories.js +32 -32
- package/src/cog/readCogDirectory.js +34 -34
- package/src/cog/readCogLevel.js +36 -36
- package/src/cog/readCogTag.js +28 -28
- package/src/cog/validCogDimensions.js +15 -15
- package/src/cog/validCogEncoding.js +18 -18
- package/src/cog/validCogGeoArrays.js +17 -17
- package/src/cog/validCogGrid.js +22 -22
- package/src/cog/validCogTileCoordinates.js +13 -13
- package/src/cog/validateCogContainer.js +17 -17
- package/src/cog/validateCogContentRange.js +18 -18
- package/src/cog/validateCogOffsets.js +19 -19
- package/src/cog/validateCogRange.js +16 -16
- package/src/cog/validateCogResponse.js +26 -26
- package/src/collision/collectIntersections.js +41 -41
- package/src/collision/hiddenLightHit.js +19 -19
- package/src/collision/indexTriangle.js +18 -18
- package/src/collision/insideMesh.js +47 -47
- package/src/collision/insideWalker.js +52 -52
- package/src/collision/intersectMeshes.js +40 -40
- package/src/collision/localRay.js +31 -31
- package/src/collision/mergeHits.js +19 -19
- package/src/collision/rayBounds.js +28 -28
- package/src/collision/readTriangle.js +32 -32
- package/src/collision/trafficCollision.js +23 -23
- package/src/collision/transformTriangle.js +18 -18
- package/src/collision/triangleDistance.js +34 -34
- package/src/collision/vertexCount.js +11 -11
- package/src/collision/worldHit.js +30 -30
- package/src/controls/acceptPitchDrag.js +10 -10
- package/src/controls/acceptRotateDrag.js +9 -9
- package/src/controls/addCameraHandler.js +18 -18
- package/src/controls/adjustCameraDrag.js +13 -13
- package/src/controls/cameraDragContextMenu.js +12 -12
- package/src/controls/cameraDragEnd.js +10 -10
- package/src/controls/cameraDragMove.js +31 -31
- package/src/controls/changeCameraTouch.js +17 -17
- package/src/controls/compassOrientation.js +12 -12
- package/src/controls/compassRemoveHooks.js +2 -2
- package/src/controls/containerResizeRemoveHooks.js +2 -2
- package/src/controls/endCameraTouch.js +18 -18
- package/src/controls/failCompassPermission.js +10 -10
- package/src/controls/finishCameraDrag.js +14 -14
- package/src/controls/finishCompassPermission.js +24 -24
- package/src/controls/isEditableTarget.js +9 -9
- package/src/controls/loadCameraControls.js +18 -18
- package/src/controls/moveCameraTouch.js +34 -34
- package/src/controls/refreshRotateFocus.js +5 -5
- package/src/controls/removeCameraDrag.js +28 -28
- package/src/controls/resizeMap.js +7 -7
- package/src/controls/rotateButtonClick.js +16 -16
- package/src/controls/rotateButtonKeydown.js +20 -20
- package/src/controls/rotateControl.js +12 -12
- package/src/controls/shiftRotateRemoveHooks.js +2 -2
- package/src/controls/shiftRotateWheel.js +15 -15
- package/src/core/cameraMarkerOnDrag.js +16 -16
- package/src/core/constructLayer.js +16 -16
- package/src/core/extendLeafletClass.js +12 -12
- package/src/core/extendTerrainPixelBounds.js +41 -41
- package/src/core/layerAddInitHook.js +12 -12
- package/src/core/layerMergeOptions.js +14 -14
- package/src/core/markerInitInteraction.js +10 -10
- package/src/core/markerSetIcon.js +14 -14
- package/src/core/markerSetRotation.js +19 -19
- package/src/core/projectNativePath.js +30 -30
- package/src/core/redrawPath.js +11 -11
- package/src/core/removeLayer.js +26 -26
- package/src/core/setRotation.js +12 -12
- package/src/core/whenReady.js +14 -14
- package/src/geometry/addBridges.js +36 -36
- package/src/geometry/addGeneratedTriangle.js +10 -10
- package/src/geometry/appendAreaTriangle.js +32 -32
- package/src/geometry/appendNativeTriangle.js +17 -17
- package/src/geometry/appendRouteDash.js +33 -33
- package/src/geometry/appendRouteSegment.js +28 -28
- package/src/geometry/assembleAreaGeometry.js +48 -48
- package/src/geometry/bridgeEdge.js +18 -18
- package/src/geometry/bridgeFaces.js +22 -22
- package/src/geometry/bridgePaths.js +19 -19
- package/src/geometry/bridgePolygon.js +37 -37
- package/src/geometry/bridgeSides.js +18 -18
- package/src/geometry/buildProjectedPoint.js +32 -32
- package/src/geometry/buildProjectedPolygon.js +34 -34
- package/src/geometry/circleAt.js +20 -20
- package/src/geometry/circleGeometry.js +41 -41
- package/src/geometry/createModelGeometry.js +44 -44
- package/src/geometry/crossVector.js +15 -15
- package/src/geometry/dashValues.js +23 -23
- package/src/geometry/dashedSegment.js +33 -33
- package/src/geometry/diskAt.js +18 -18
- package/src/geometry/emitter.js +18 -18
- package/src/geometry/fillNativePolygon.js +28 -28
- package/src/geometry/generateTreeGeometry.js +18 -18
- package/src/geometry/indexBridge.js +36 -36
- package/src/geometry/instanceAreaGeometry.js +37 -37
- package/src/geometry/line.js +28 -28
- package/src/geometry/lineJoin.js +35 -35
- package/src/geometry/markerImageBounds.js +20 -20
- package/src/geometry/meshShadowBounds.js +33 -33
- package/src/geometry/offsetBelowGround.js +10 -10
- package/src/geometry/quad.js +23 -23
- package/src/geometry/restoreGeometry.js +29 -29
- package/src/geometry/roofCoverage.js +33 -33
- package/src/geometry/roofFootprint.js +40 -40
- package/src/geometry/samePoint.js +11 -11
- package/src/geometry/segment.js +32 -32
- package/src/geometry/subtractRoofTile.js +28 -28
- package/src/geometry/terrainBuffers.js +36 -36
- package/src/geometry/terrainTileGeometry.js +28 -28
- package/src/geometry/validateTree.js +19 -19
- package/src/globals/L.js +6 -6
- package/src/globals/cameraFov.js +8 -8
- package/src/globals/cogTags.js +6 -6
- package/src/globals/colorTexture.js +11 -11
- package/src/globals/cosObliquity.js +8 -8
- package/src/globals/degrees.js +6 -6
- package/src/globals/earthCirc.js +6 -6
- package/src/globals/geometryWorkerUrl.js +8 -8
- package/src/globals/halfRadians.js +6 -6
- package/src/globals/lampDirections.js +13 -13
- package/src/globals/layerControlAddItem.js +8 -8
- package/src/globals/leafletLayer.js +8 -8
- package/src/globals/lightScale.js +6 -6
- package/src/globals/mvtTextDecoder.js +6 -6
- package/src/globals/nativeScalableStyleKeys.js +6 -6
- package/src/globals/sinObliquity.js +8 -8
- package/src/globals/tau.js +6 -6
- package/src/globals/vectorStyleNamedColors.js +13 -13
- package/src/globals/vectorTileEvents.js +6 -6
- package/src/globals/workerCogSource.js +6 -6
- package/src/gpu/initializeRendererResources.js +39 -39
- package/src/gpu/initializeSharedRenderer.js +59 -59
- package/src/gpu/mountRenderer.js +25 -25
- package/src/layer-controls/layerControlInputId.js +18 -18
- package/src/layer-controls/layerCountTitle.js +16 -16
- package/src/layer-controls/placeEntryElement.js +29 -29
- package/src/layer-controls/renderLayerCount.js +28 -28
- package/src/lighting/visitLightCells.js +26 -26
- package/src/lighting/writeLightCell.js +14 -14
- package/src/materials/createProgramLayout.js +44 -44
- package/src/materials/createProgramUniforms.js +25 -25
- package/src/materials/modelMaterialFor.js +29 -29
- package/src/materials/prepareMeshCutout.js +21 -21
- package/src/materials/terrainRasterProgram.js +65 -65
- package/src/materials/validateRoofMaterial.js +17 -17
- package/src/models/applyModelTransform.js +18 -18
- package/src/models/buildModelNodes.js +24 -24
- package/src/models/createModelContext.js +24 -24
- package/src/models/loadBuffer.js +16 -16
- package/src/models/loadModelResources.js +22 -22
- package/src/models/normalizeAccessor.js +21 -21
- package/src/models/prepareModel.js +29 -29
- package/src/models/prepareModelGeometry.js +35 -35
- package/src/models/prepareModelPrimitive.js +25 -25
- package/src/models/readAccessorValue.js +16 -16
- package/src/models/readModelAttributes.js +32 -32
- package/src/models/readModelIndices.js +28 -28
- package/src/models/readSparseAccessor.js +31 -31
- package/src/models/releaseModelResources.js +15 -15
- package/src/mvt/addMvtCrossings.js +23 -23
- package/src/mvt/appendMvtBandTriangles.js +42 -42
- package/src/mvt/appendMvtCoordinates.js +20 -20
- package/src/mvt/appendMvtPolygonTriangles.js +29 -29
- package/src/mvt/beginMvtPath.js +19 -19
- package/src/mvt/closeMvtPath.js +16 -16
- package/src/mvt/collectMvtEdges.js +29 -29
- package/src/mvt/createMvtReader.js +14 -14
- package/src/mvt/decodeVectorTile.js +39 -39
- package/src/mvt/expectMvtWire.js +11 -11
- package/src/mvt/finishMvtPath.js +14 -14
- package/src/mvt/finiteMvtCoordinate.js +14 -14
- package/src/mvt/groupMvtPolygons.js +35 -35
- package/src/mvt/isMvtFallbackError.js +13 -13
- package/src/mvt/mergeMvtActiveEdges.js +18 -18
- package/src/mvt/mvtEdgeX.js +12 -12
- package/src/mvt/mvtPathsVertices.js +15 -15
- package/src/mvt/mvtPolygonPaths.js +19 -19
- package/src/mvt/numericMvtValue.js +11 -11
- package/src/mvt/readMvtFeature.js +46 -46
- package/src/mvt/readMvtField.js +17 -17
- package/src/mvt/readMvtGeometry.js +42 -42
- package/src/mvt/readMvtInteger.js +22 -22
- package/src/mvt/readMvtKnownValue.js +30 -30
- package/src/mvt/readMvtLayer.js +40 -40
- package/src/mvt/readMvtMessage.js +18 -18
- package/src/mvt/readMvtNumber.js +18 -18
- package/src/mvt/readMvtNumbers.js +18 -18
- package/src/mvt/readMvtString.js +14 -14
- package/src/mvt/readMvtValue.js +29 -29
- package/src/mvt/skipMvtField.js +22 -22
- package/src/mvt/sortMvtActiveEdges.js +20 -20
- package/src/mvt/sortedMvtLevels.js +29 -29
- package/src/mvt/takeMvtBytes.js +18 -18
- package/src/mvt/tessellateVectorRings.js +26 -26
- package/src/mvt/triangulateVectorRings.js +23 -23
- package/src/native/beforeNativeRender.js +21 -21
- package/src/native/bypassNativeEvent.js +21 -21
- package/src/native/canScaleNativeStyle.js +26 -26
- package/src/native/compareNativeHits.js +10 -10
- package/src/native/createNativeMesh.js +46 -46
- package/src/native/forwardNativeError.js +8 -8
- package/src/native/getGridTerrainTile.js +47 -47
- package/src/native/gridTerrainElevation.js +34 -34
- package/src/native/isCurrentNativeLayer.js +11 -11
- package/src/native/loadGridTerrain.js +36 -36
- package/src/native/nativeEventSource.js +27 -27
- package/src/native/nativeProgram.js +28 -28
- package/src/native/nativeTerrainElevation.js +27 -27
- package/src/native/nativeVectorGeometry.js +30 -30
- package/src/native/orderNativeGridLayer.js +20 -20
- package/src/native/prepareGridTerrainRequests.js +23 -23
- package/src/native/pruneNativeResources.js +25 -25
- package/src/native/readyNativeGPU.js +13 -13
- package/src/native/rejectNativeReady.js +2 -2
- package/src/native/removeNativeEvents.js +20 -20
- package/src/native/resolveNativeReady.js +2 -2
- package/src/native/restoreNativeEvents.js +8 -8
- package/src/native/retainGridTerrain.js +15 -15
- package/src/native/styleNativeMesh.js +20 -20
- package/src/native/syncGridTile.js +28 -28
- package/src/native/syncImageOverlay.js +13 -13
- package/src/native/syncNativeStrokeAnchors.js +18 -18
- package/src/native/syncNativeStrokeZoom.js +34 -34
- package/src/native/syncTerrainGridTile.js +38 -38
- package/src/native/terrainGridMesh.js +47 -47
- package/src/native/updateNativeHover.js +15 -15
- package/src/native/updateNativeStrokeRadius.js +14 -14
- package/src/picking/hitColliderCell.js +29 -29
- package/src/picking/validateCameraInverse.js +15 -15
- package/src/projections/displayContainerPoint.js +32 -32
- package/src/projections/projectBridgePoint.js +17 -17
- package/src/projections/toPoint.js +13 -13
- package/src/projections/transformZoomAnimationPoint.js +8 -8
- package/src/projections/verticalGroundY.js +14 -14
- package/src/raster/rasterTileRange.js +32 -32
- package/src/raster/retainRasterTiles.js +21 -21
- package/src/rendering/collectVisibleMesh.js +48 -48
- package/src/rendering/compareMeshDepth.js +14 -14
- package/src/rendering/drawPipeline.js +44 -44
- package/src/rendering/nativeStrokeExpansion.js +11 -11
- package/src/rendering/prepareFrameBuffer.js +24 -24
- package/src/rendering/prepareMeshUniforms.js +36 -36
- package/src/rendering/revealRoofMesh.js +43 -43
- package/src/scene/addSceneLayer.js +24 -24
- package/src/scene/callLayer.js +34 -34
- package/src/scene/createLayer.js +13 -13
- package/src/scene/getLocation.js +12 -12
- package/src/scene/isNativeLayer.js +19 -19
- package/src/scene/removeSceneLayer.js +22 -22
- package/src/scene/reportLayerError.js +9 -9
- package/src/shaders/materialBaseShader.js +26 -26
- package/src/shaders/materialSurfaceShader.js +60 -60
- package/src/shaders/materialVertexShader.js +89 -89
- package/src/shaders/nativeStrokeShader.js +13 -13
- package/src/shaders/roofVertexShader.js +16 -16
- package/src/shadows/shadowMeshMatches.js +19 -19
- package/src/sources/buildAreaFeatures.js +23 -23
- package/src/sources/extrusionStyle.js +21 -21
- package/src/sources/featureAnchor.js +21 -21
- package/src/sources/groundOffset.js +9 -9
- package/src/sources/initVectorTiles.js +21 -21
- package/src/sources/isVectorTileSource.js +11 -11
- package/src/sources/matchesAreaTile.js +17 -17
- package/src/sources/pendingSourceAreas.js +28 -28
- package/src/sources/prepareAreaGeometryJob.js +34 -34
- package/src/sources/projectAreaPolygons.js +25 -25
- package/src/sources/readyVectorTiles.js +17 -17
- package/src/sunlight/addTimeControlToMap.js +18 -18
- package/src/sunlight/addTimeLayer.js +12 -12
- package/src/sunlight/initializeTimeControl.js +18 -18
- package/src/sunlight/onAddSun.js +37 -37
- package/src/sunlight/onAddTimeControl.js +12 -12
- package/src/sunlight/onRemoveSun.js +10 -10
- package/src/sunlight/removeSun.js +25 -25
- package/src/sunlight/removeTimeControl.js +14 -14
- package/src/sunlight/removeTimeLayer.js +11 -11
- package/src/sunlight/requestSunlightRender.js +12 -12
- package/src/sunlight/styleTimeControl.js +13 -13
- package/src/sunlight/tickSun.js +10 -10
- package/src/sunlight/updateCelestialDisc.js +23 -23
- package/src/sunlight/updateSun.js +44 -44
- package/src/sunlight/useLiveTime.js +11 -11
- package/src/sunlight/useSelectedTime.js +26 -26
- package/src/terrain/applyTerrain.js +30 -30
- package/src/terrain/copyTerrainTile.js +20 -20
- package/src/terrain/loadReadyTerrain.js +6 -6
- package/src/terrain/mapElevationOf.js +19 -19
- package/src/terrain/readBridges.js +13 -13
- package/src/terrain/readyTerrainOf.js +14 -14
- package/src/terrain/sampleTerrainTile.js +16 -16
- package/src/terrain/terrainTileQueue.js +34 -34
- package/src/textures/addImageState.js +13 -13
- package/src/textures/bindMeshTextures.js +57 -57
- package/src/textures/collectRoofTiles.js +23 -23
- package/src/textures/loadModelImage.js +29 -29
- package/src/textures/modelTextureFor.js +47 -47
- package/src/textures/prepareMeshTextures.js +31 -31
- package/src/textures/removeImageState.js +13 -13
- package/src/textures/resizeRoofTexture.js +32 -32
- package/src/textures/restoreMaterialTextures.js +22 -22
- package/src/textures/updateRoofAtlas.js +29 -29
- package/src/textures/uploadMeshTexture.js +32 -32
- package/src/textures/uploadNativeImage.js +26 -26
- package/src/textures/uploadRoofTile.js +29 -29
- package/src/traffic/createTrafficMesh.js +17 -17
- package/src/traffic/disposeTrafficObject.js +19 -19
- package/src/traffic/failTraffic.js +12 -12
- package/src/traffic/failedTrafficLoad.js +10 -10
- package/src/traffic/fetchTrafficLanes.js +21 -21
- package/src/traffic/loadedTrafficLanes.js +21 -21
- package/src/traffic/locateTraffic.js +20 -20
- package/src/traffic/moveTraffic.js +21 -21
- package/src/traffic/readyTraffic.js +10 -10
- package/src/traffic/refreshTrafficTrips.js +42 -42
- package/src/traffic/routeColor.js +13 -13
- package/src/traffic/startTraffic.js +12 -12
- package/src/traffic/trafficNow.js +15 -15
- package/src/traffic/trafficStatusText.js +13 -13
- package/src/traffic/trafficStorage.js +13 -13
- package/src/traffic/updateTraffic.js +13 -13
- package/src/traffic/updateTrafficLights.js +23 -23
- package/src/traffic/updateTrafficPose.js +15 -15
- package/src/traffic/updateTrafficTerrain.js +15 -15
- package/src/traffic/uploadTrafficLanes.js +27 -27
- package/src/transforms/composeLocalTransform.js +23 -23
- package/src/transforms/transformNativePoint.js +19 -19
- package/src/transforms/worldMatrixChanged.js +26 -26
- package/src/triangulation/clipEars.js +32 -32
- package/src/triangulation/connectHole.js +30 -30
- package/src/triangulation/cross.js +12 -12
- package/src/triangulation/equal.js +11 -11
- package/src/triangulation/intersects.js +21 -21
- package/src/triangulation/mergeHoles.js +19 -19
- package/src/triangulation/on.js +13 -13
- package/src/triangulation/polygonRings.js +22 -22
- package/src/triangulation/validateArea.js +19 -19
- package/src/utils/compareDistance.js +11 -11
- package/src/utils/yieldTask.js +12 -12
- package/src/vector-style/appendQuotedStyleCharacter.js +30 -30
- package/src/vector-style/arrayContainsRange.js +18 -18
- package/src/vector-style/evaluateBoolean.js +31 -31
- package/src/vector-style/evaluateCoalesceOrCase.js +34 -34
- package/src/vector-style/evaluateComparison.js +29 -29
- package/src/vector-style/evaluateIExpression.js +21 -21
- package/src/vector-style/evaluateInput.js +16 -16
- package/src/vector-style/evaluateInterpolate.js +36 -36
- package/src/vector-style/evaluateMatch.js +21 -21
- package/src/vector-style/evaluateMath.js +26 -26
- package/src/vector-style/evaluateMembership.js +29 -29
- package/src/vector-style/evaluateNegation.js +26 -26
- package/src/vector-style/evaluatePrimitive.js +21 -21
- package/src/vector-style/evaluateStep.js +20 -20
- package/src/vector-style/evaluateStyle.js +43 -43
- package/src/vector-style/evaluateToExpression.js +27 -27
- package/src/vector-style/fillVectorPaint.js +26 -26
- package/src/vector-style/lineVectorPaint.js +31 -31
- package/src/vector-style/parseFunctionalColor.js +23 -23
- package/src/vector-style/parseHexColor.js +20 -20
- package/src/vector-style/parseVectorStyle.js +20 -20
- package/src/vector-style/readPaintValue.js +17 -17
- package/src/vector-style/removeTrailingCommas.js +19 -19
- package/src/vector-style/scaleDashArray.js +25 -25
- package/src/vector-style/skipStyleComment.js +20 -20
- package/src/vector-style/stripStyleComments.js +28 -28
- package/src/vector-style/styleColor.js +18 -18
- package/src/vector-style/validateVectorLayers.js +18 -18
- package/src/vector-style/vectorPaint.js +17 -17
- package/src/vector-style/visibleStyle.js +16 -16
- package/src/vector-tiles/appendVectorBatch.js +34 -34
- package/src/vector-tiles/attachVectorTileBatch.js +25 -25
- package/src/vector-tiles/attachVectorTileBatches.js +26 -26
- package/src/vector-tiles/compareVectorLabelPriority.js +11 -11
- package/src/vector-tiles/compareVectorTileDistance.js +11 -11
- package/src/vector-tiles/createVectorLabel.js +37 -37
- package/src/vector-tiles/forwardVectorTileError.js +10 -10
- package/src/vector-tiles/loadVectorSprite.js +14 -14
- package/src/vector-tiles/loadVectorTile.js +45 -45
- package/src/vector-tiles/onVectorTileAdd.js +44 -44
- package/src/vector-tiles/onVectorTileMessage.js +15 -15
- package/src/vector-tiles/onVectorTileRemove.js +25 -25
- package/src/vector-tiles/onVectorTileWorkerError.js +16 -16
- package/src/vector-tiles/paintVectorTileBatch.js +18 -18
- package/src/vector-tiles/prepareVectorLabel.js +34 -34
- package/src/vector-tiles/prepareVectorStyleLayer.js +38 -38
- package/src/vector-tiles/prepareVectorTile.js +29 -29
- package/src/vector-tiles/projectVectorPaths.js +25 -25
- package/src/vector-tiles/projectVectorPoint.js +15 -15
- package/src/vector-tiles/projectVectorTriangles.js +28 -28
- package/src/vector-tiles/pruneVectorTiles.js +14 -14
- package/src/vector-tiles/pumpVectorTiles.js +21 -21
- package/src/vector-tiles/readTileJSON.js +27 -27
- package/src/vector-tiles/readVectorStyle.js +28 -28
- package/src/vector-tiles/refreshVectorTiles.js +8 -8
- package/src/vector-tiles/reserveVectorLabelCells.js +14 -14
- package/src/vector-tiles/retireVectorTileGroup.js +20 -20
- package/src/vector-tiles/revokeVectorWorkerUrl.js +14 -14
- package/src/vector-tiles/rotateVectorLabel.js +19 -19
- package/src/vector-tiles/rotateVectorLabels.js +9 -9
- package/src/vector-tiles/simplifyVectorPath.js +29 -29
- package/src/vector-tiles/updateVectorLabelMarker.js +36 -36
- package/src/vector-tiles/updateVectorLabelStyle.js +14 -14
- package/src/vector-tiles/updateVectorTileLabels.js +33 -33
- package/src/vector-tiles/updateVectorTilePaint.js +25 -25
- package/src/vector-tiles/updateVectorTiles.js +32 -32
- package/src/vector-tiles/validateVectorTileZooms.js +15 -15
- package/src/vector-tiles/vectorFeaturePaint.js +25 -25
- package/src/vector-tiles/vectorFeaturePaths.js +26 -26
- package/src/vector-tiles/vectorFeatureZoom.js +18 -18
- package/src/vector-tiles/vectorLabelAnchors.js +31 -31
- package/src/vector-tiles/vectorLabelCandidates.js +18 -18
- package/src/vector-tiles/vectorLabelCells.js +32 -32
- package/src/vector-tiles/vectorLabelIcon.js +38 -38
- package/src/vector-tiles/vectorLabelProperty.js +12 -12
- package/src/vector-tiles/vectorLabelText.js +19 -19
- package/src/vector-tiles/vectorSpriteIcon.js +19 -19
- package/src/vector-tiles/vectorStraightRun.js +23 -23
- package/src/vector-tiles/vectorStyleDependencies.js +22 -22
- package/src/vector-tiles/vectorStyleValue.js +16 -16
- package/src/vector-tiles/vectorStyleZoom.js +12 -12
- package/src/vector-tiles/vectorTileAwaited.js +17 -17
- package/src/vector-tiles/vectorTileOverlaps.js +12 -12
- package/src/vector-tiles/vectorTilePaint.js +18 -18
- package/src/vector-tiles/vectorTileSettings.js +27 -27
- package/src/vector-tiles/vectorTilesIdle.js +11 -11
- package/src/vector-tiles/vectorTolerance.js +11 -11
- package/src/vector-tiles/wrapVectorLabel.js +17 -17
- package/src/vehicles/boatModel.js +35 -35
- package/src/vehicles/busModel.js +13 -13
- package/src/vehicles/carModel.js +39 -39
- package/src/walk/initializeWalkControl.js +12 -12
- package/src/walk/isWalkBlocked.js +15 -15
- package/src/walk/landWalker.js +41 -41
- package/src/walk/moveWalker.js +37 -37
- package/src/walk/onAddWalkControl.js +40 -40
- package/src/walk/onRemoveWalkControl.js +17 -17
- package/src/walk/onWalkBlur.js +3 -3
- package/src/walk/onWalkTerrain.js +3 -3
- package/src/walk/resolveWalkerPosition.js +33 -33
- package/src/walk/stepWalkerHeight.js +18 -18
- package/src/walk/toggleWalking.js +4 -4
- package/src/walk/updateWalkerFrame.js +29 -29
- package/src/walk/updateWalkerView.js +31 -31
- package/src/weakmaps/cameraHandlersByMap.js +6 -6
- package/src/weakmaps/geometryWorkersByMap.js +6 -6
- package/src/weakmaps/nativeProgramsByRenderer.js +6 -6
- package/src/weakmaps/pathProjectionByMap.js +6 -6
- package/src/weakmaps/streamTerrainByLayer.js +6 -6
- package/src/weakmaps/streamTerrainByMap.js +6 -6
- package/src/weakmaps/sunByMap.js +6 -6
- package/src/weakmaps/vectorTileOptionsByLayer.js +6 -6
- package/src/weakmaps/vectorWorkerByLayer.js +6 -6
- package/src/weakmaps/walkByMap.js +6 -6
- package/src/weakmaps/workerMapByLayer.js +6 -6
- package/src/workers/acquireGeometryWorker.js +39 -39
- package/src/workers/buildAreaInWorker.js +24 -24
- package/src/workers/closeGeometryWorkers.js +16 -16
- package/src/workers/cogWorker.js +27 -27
- package/src/workers/createGeometryWorker.js +30 -30
- package/src/workers/geometryWorker.js +34 -34
- package/src/workers/getCogInWorker.js +18 -18
- package/src/workers/modelWorker.js +17 -17
- package/src/workers/openCogInWorker.js +22 -22
- package/src/workers/runSourceWorker.js +44 -44
- package/src/workers/settleGeometryWorker.js +16 -16
- package/src/workers/startGeometryWorker.js +23 -23
- package/src/workers/vectorTileWorker.js +15 -15
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import { geometryEmpty } from '../globals/geometryEmpty.js';
|
|
2
|
-
import { materialFor } from '../materials/modelMaterialFor.js';
|
|
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
|
-
*/
|
|
13
|
-
export function createModelContext(layer, description, images) {
|
|
14
|
-
const context = /* alloc */ {
|
|
15
|
-
backend: layer, description, images,
|
|
16
|
-
textures: /* alloc */ new Map(),
|
|
17
|
-
materials: /* alloc */ [],
|
|
18
|
-
active: /* alloc */ new Set(),
|
|
19
|
-
resources: /* alloc */ [],
|
|
20
|
-
};
|
|
21
|
-
let material;
|
|
22
|
-
for (material of description.materials || geometryEmpty) context.materials.push(materialFor(context, material));
|
|
23
|
-
return context;
|
|
24
|
-
}
|
|
1
|
+
import { geometryEmpty } from '../globals/geometryEmpty.js';
|
|
2
|
+
import { materialFor } from '../materials/modelMaterialFor.js';
|
|
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
|
+
*/
|
|
13
|
+
export function createModelContext(layer, description, images) {
|
|
14
|
+
const context = /* alloc */ {
|
|
15
|
+
backend: layer, description, images,
|
|
16
|
+
textures: /* alloc */ new Map(),
|
|
17
|
+
materials: /* alloc */ [],
|
|
18
|
+
active: /* alloc */ new Set(),
|
|
19
|
+
resources: /* alloc */ [],
|
|
20
|
+
};
|
|
21
|
+
let material;
|
|
22
|
+
for (material of description.materials || geometryEmpty) context.materials.push(materialFor(context, material));
|
|
23
|
+
return context;
|
|
24
|
+
}
|
package/src/models/loadBuffer.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
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
|
-
*/
|
|
11
|
-
export async function loadBuffer(buffer, directory) {
|
|
12
|
-
if (buffer.binary) return;
|
|
13
|
-
const response = await fetch(/* alloc */ new URL(buffer.uri, directory).href);
|
|
14
|
-
if (!response.ok) throw /* alloc */ new Error(`Unable to load model buffer: HTTP ${response.status}`);
|
|
15
|
-
buffer.binary = await response.arrayBuffer();
|
|
16
|
-
}
|
|
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
|
+
*/
|
|
11
|
+
export async function loadBuffer(buffer, directory) {
|
|
12
|
+
if (buffer.binary) return;
|
|
13
|
+
const response = await fetch(/* alloc */ new URL(buffer.uri, directory).href);
|
|
14
|
+
if (!response.ok) throw /* alloc */ new Error(`Unable to load model buffer: HTTP ${response.status}`);
|
|
15
|
+
buffer.binary = await response.arrayBuffer();
|
|
16
|
+
}
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import { geometryEmpty } from '../globals/geometryEmpty.js';
|
|
2
|
-
import { loadBuffer } from './loadBuffer.js';
|
|
3
|
-
import { loadImage } from '../textures/loadModelImage.js';
|
|
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
|
-
*/
|
|
13
|
-
export async function loadModelResources(description, directory) {
|
|
14
|
-
const bufferRequests = /* alloc */ [];
|
|
15
|
-
let buffer;
|
|
16
|
-
for (buffer of description.buffers || geometryEmpty) bufferRequests.push(loadBuffer(buffer, directory));
|
|
17
|
-
await Promise.all(bufferRequests);
|
|
18
|
-
const imageRequests = /* alloc */ [];
|
|
19
|
-
let image;
|
|
20
|
-
for (image of description.images || geometryEmpty) imageRequests.push(loadImage(description, directory, image));
|
|
21
|
-
return Promise.all(imageRequests);
|
|
22
|
-
}
|
|
1
|
+
import { geometryEmpty } from '../globals/geometryEmpty.js';
|
|
2
|
+
import { loadBuffer } from './loadBuffer.js';
|
|
3
|
+
import { loadImage } from '../textures/loadModelImage.js';
|
|
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
|
+
*/
|
|
13
|
+
export async function loadModelResources(description, directory) {
|
|
14
|
+
const bufferRequests = /* alloc */ [];
|
|
15
|
+
let buffer;
|
|
16
|
+
for (buffer of description.buffers || geometryEmpty) bufferRequests.push(loadBuffer(buffer, directory));
|
|
17
|
+
await Promise.all(bufferRequests);
|
|
18
|
+
const imageRequests = /* alloc */ [];
|
|
19
|
+
let image;
|
|
20
|
+
for (image of description.images || geometryEmpty) imageRequests.push(loadImage(description, directory, image));
|
|
21
|
+
return Promise.all(imageRequests);
|
|
22
|
+
}
|
|
@@ -1,21 +1,21 @@
|
|
|
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
|
-
*/
|
|
11
|
-
export function normalizeAccessor(spec, Type, data, size) {
|
|
12
|
-
const normalized = /* alloc */ new Float32Array(data.length);
|
|
13
|
-
let i;
|
|
14
|
-
for (i = 0; i < data.length; i++) {
|
|
15
|
-
normalized[i] = spec.normalized
|
|
16
|
-
? Math.max(-1, data[i] / (Type === Int8Array ? 127 : Type === Int16Array ? 32767 :
|
|
17
|
-
Type === Uint8Array ? 255 : Type === Uint32Array ? 4294967295 : 65535))
|
|
18
|
-
: data[i];
|
|
19
|
-
}
|
|
20
|
-
return /* alloc */ { data: normalized, size, indices: data };
|
|
21
|
-
}
|
|
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
|
+
*/
|
|
11
|
+
export function normalizeAccessor(spec, Type, data, size) {
|
|
12
|
+
const normalized = /* alloc */ new Float32Array(data.length);
|
|
13
|
+
let i;
|
|
14
|
+
for (i = 0; i < data.length; i++) {
|
|
15
|
+
normalized[i] = spec.normalized
|
|
16
|
+
? Math.max(-1, data[i] / (Type === Int8Array ? 127 : Type === Int16Array ? 32767 :
|
|
17
|
+
Type === Uint8Array ? 255 : Type === Uint32Array ? 4294967295 : 65535))
|
|
18
|
+
: data[i];
|
|
19
|
+
}
|
|
20
|
+
return /* alloc */ { data: normalized, size, indices: data };
|
|
21
|
+
}
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
import { decodeModel } from './decodeModel.js';
|
|
2
|
-
import { loadModelResources } from './loadModelResources.js';
|
|
3
|
-
import { prepareModelGeometry } from './prepareModelGeometry.js';
|
|
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
|
-
*/
|
|
15
|
-
export async function prepareModel(url) {
|
|
16
|
-
const response = await fetch(url);
|
|
17
|
-
if (!response.ok) throw /* alloc */ new Error(`Unable to load model: HTTP ${response.status}`);
|
|
18
|
-
const description = decodeModel(await response.arrayBuffer());
|
|
19
|
-
const scene = description.scenes?.[description.scene || 0];
|
|
20
|
-
if (!scene) throw /* alloc */ new Error('Missing glTF scene');
|
|
21
|
-
const images = await loadModelResources(description, /* alloc */ new URL('.', url).href);
|
|
22
|
-
const transfers = prepareModelGeometry(description, scene);
|
|
23
|
-
let image;
|
|
24
|
-
for (image of images) transfers.push(image);
|
|
25
|
-
delete description.buffers;
|
|
26
|
-
delete description.bufferViews;
|
|
27
|
-
delete description.accessors;
|
|
28
|
-
return /* alloc */ { description, images, transfers };
|
|
29
|
-
}
|
|
1
|
+
import { decodeModel } from './decodeModel.js';
|
|
2
|
+
import { loadModelResources } from './loadModelResources.js';
|
|
3
|
+
import { prepareModelGeometry } from './prepareModelGeometry.js';
|
|
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
|
+
*/
|
|
15
|
+
export async function prepareModel(url) {
|
|
16
|
+
const response = await fetch(url);
|
|
17
|
+
if (!response.ok) throw /* alloc */ new Error(`Unable to load model: HTTP ${response.status}`);
|
|
18
|
+
const description = decodeModel(await response.arrayBuffer());
|
|
19
|
+
const scene = description.scenes?.[description.scene || 0];
|
|
20
|
+
if (!scene) throw /* alloc */ new Error('Missing glTF scene');
|
|
21
|
+
const images = await loadModelResources(description, /* alloc */ new URL('.', url).href);
|
|
22
|
+
const transfers = prepareModelGeometry(description, scene);
|
|
23
|
+
let image;
|
|
24
|
+
for (image of images) transfers.push(image);
|
|
25
|
+
delete description.buffers;
|
|
26
|
+
delete description.bufferViews;
|
|
27
|
+
delete description.accessors;
|
|
28
|
+
return /* alloc */ { description, images, transfers };
|
|
29
|
+
}
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
import { geometryEmpty } from '../globals/geometryEmpty.js';
|
|
2
|
-
import { prepareModelPrimitive } from './prepareModelPrimitive.js';
|
|
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
|
-
*/
|
|
14
|
-
export function prepareModelGeometry(description, scene) {
|
|
15
|
-
const pending = scene.nodes.slice(), visited = /* alloc */ new Set();
|
|
16
|
-
const meshes = /* alloc */ new Set(), transfers = /* alloc */ new Set();
|
|
17
|
-
let index, spec, primitive, attribute, child;
|
|
18
|
-
while (pending.length) {
|
|
19
|
-
index = pending.pop();
|
|
20
|
-
if (visited.has(index)) continue;
|
|
21
|
-
visited.add(index);
|
|
22
|
-
spec = description.nodes[index];
|
|
23
|
-
if (!spec) throw /* alloc */ new Error('Invalid glTF node');
|
|
24
|
-
if (spec.mesh !== undefined) meshes.add(spec.mesh);
|
|
25
|
-
for (child of spec.children || geometryEmpty) pending.push(child);
|
|
26
|
-
}
|
|
27
|
-
for (index of meshes) {
|
|
28
|
-
for (primitive of description.meshes[index].primitives) {
|
|
29
|
-
for (attribute of Object.values(prepareModelPrimitive(description, primitive))) {
|
|
30
|
-
transfers.add(attribute.data.buffer);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
return /* alloc */ [...transfers];
|
|
35
|
-
}
|
|
1
|
+
import { geometryEmpty } from '../globals/geometryEmpty.js';
|
|
2
|
+
import { prepareModelPrimitive } from './prepareModelPrimitive.js';
|
|
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
|
+
*/
|
|
14
|
+
export function prepareModelGeometry(description, scene) {
|
|
15
|
+
const pending = scene.nodes.slice(), visited = /* alloc */ new Set();
|
|
16
|
+
const meshes = /* alloc */ new Set(), transfers = /* alloc */ new Set();
|
|
17
|
+
let index, spec, primitive, attribute, child;
|
|
18
|
+
while (pending.length) {
|
|
19
|
+
index = pending.pop();
|
|
20
|
+
if (visited.has(index)) continue;
|
|
21
|
+
visited.add(index);
|
|
22
|
+
spec = description.nodes[index];
|
|
23
|
+
if (!spec) throw /* alloc */ new Error('Invalid glTF node');
|
|
24
|
+
if (spec.mesh !== undefined) meshes.add(spec.mesh);
|
|
25
|
+
for (child of spec.children || geometryEmpty) pending.push(child);
|
|
26
|
+
}
|
|
27
|
+
for (index of meshes) {
|
|
28
|
+
for (primitive of description.meshes[index].primitives) {
|
|
29
|
+
for (attribute of Object.values(prepareModelPrimitive(description, primitive))) {
|
|
30
|
+
transfers.add(attribute.data.buffer);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return /* alloc */ [...transfers];
|
|
35
|
+
}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
import { readModelAttributes } from './readModelAttributes.js';
|
|
2
|
-
import { readModelIndices } from './readModelIndices.js';
|
|
3
|
-
import { vertexNormals } from '../geometry/vertexNormals.js';
|
|
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
|
-
*/
|
|
13
|
-
export function prepareModelPrimitive(description, primitive) {
|
|
14
|
-
const { attributes, vertexCount } = readModelAttributes(description, primitive);
|
|
15
|
-
readModelIndices(description, primitive, attributes, vertexCount);
|
|
16
|
-
if (!attributes.normal) {
|
|
17
|
-
attributes.normal = /* alloc */ { size: 3,
|
|
18
|
-
data: vertexNormals(attributes.position.data, attributes.index?.data) };
|
|
19
|
-
}
|
|
20
|
-
if (attributes.index?.data instanceof Uint8Array) {
|
|
21
|
-
attributes.index.data = Uint16Array.from(attributes.index.data);
|
|
22
|
-
}
|
|
23
|
-
primitive.preparedAttributes = attributes;
|
|
24
|
-
return attributes;
|
|
25
|
-
}
|
|
1
|
+
import { readModelAttributes } from './readModelAttributes.js';
|
|
2
|
+
import { readModelIndices } from './readModelIndices.js';
|
|
3
|
+
import { vertexNormals } from '../geometry/vertexNormals.js';
|
|
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
|
+
*/
|
|
13
|
+
export function prepareModelPrimitive(description, primitive) {
|
|
14
|
+
const { attributes, vertexCount } = readModelAttributes(description, primitive);
|
|
15
|
+
readModelIndices(description, primitive, attributes, vertexCount);
|
|
16
|
+
if (!attributes.normal) {
|
|
17
|
+
attributes.normal = /* alloc */ { size: 3,
|
|
18
|
+
data: vertexNormals(attributes.position.data, attributes.index?.data) };
|
|
19
|
+
}
|
|
20
|
+
if (attributes.index?.data instanceof Uint8Array) {
|
|
21
|
+
attributes.index.data = Uint16Array.from(attributes.index.data);
|
|
22
|
+
}
|
|
23
|
+
primitive.preparedAttributes = attributes;
|
|
24
|
+
return attributes;
|
|
25
|
+
}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Read one glTF accessor component from a data view using little-endian byte order.
|
|
3
|
-
*
|
|
4
|
-
* @param {DataView} input View containing the component.
|
|
5
|
-
* @param {TypedArrayConstructor} Type Component array constructor.
|
|
6
|
-
* @param {number} at Byte offset in the view.
|
|
7
|
-
*
|
|
8
|
-
* @returns {number} Decoded component.
|
|
9
|
-
*/
|
|
10
|
-
export function readAccessorValue(input, Type, at) {
|
|
11
|
-
return Type === Int8Array ? input.getInt8(at) :
|
|
12
|
-
Type === Uint8Array ? input.getUint8(at) :
|
|
13
|
-
Type === Int16Array ? input.getInt16(at, true) :
|
|
14
|
-
Type === Uint16Array ? input.getUint16(at, true) :
|
|
15
|
-
Type === Uint32Array ? input.getUint32(at, true) : input.getFloat32(at, true);
|
|
16
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Read one glTF accessor component from a data view using little-endian byte order.
|
|
3
|
+
*
|
|
4
|
+
* @param {DataView} input View containing the component.
|
|
5
|
+
* @param {TypedArrayConstructor} Type Component array constructor.
|
|
6
|
+
* @param {number} at Byte offset in the view.
|
|
7
|
+
*
|
|
8
|
+
* @returns {number} Decoded component.
|
|
9
|
+
*/
|
|
10
|
+
export function readAccessorValue(input, Type, at) {
|
|
11
|
+
return Type === Int8Array ? input.getInt8(at) :
|
|
12
|
+
Type === Uint8Array ? input.getUint8(at) :
|
|
13
|
+
Type === Int16Array ? input.getInt16(at, true) :
|
|
14
|
+
Type === Uint16Array ? input.getUint16(at, true) :
|
|
15
|
+
Type === Uint32Array ? input.getUint32(at, true) : input.getFloat32(at, true);
|
|
16
|
+
}
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
import { geometrySemantics } from '../globals/geometrySemantics.js';
|
|
2
|
-
import { readAccessor } from './readAccessor.js';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Read supported primitive attributes and validate their vertex counts.
|
|
6
|
-
*
|
|
7
|
-
* @param {Object} description Decoded glTF document.
|
|
8
|
-
* @param {Object} primitive glTF mesh primitive.
|
|
9
|
-
*
|
|
10
|
-
* @returns {Object} Attribute map and vertex count.
|
|
11
|
-
*
|
|
12
|
-
* @throws {Error} If positions are missing.
|
|
13
|
-
* @throws {Error} If the position size or vertex count is invalid.
|
|
14
|
-
* @throws {Error} If attribute vertex counts differ.
|
|
15
|
-
*/
|
|
16
|
-
export function readModelAttributes(description, primitive) {
|
|
17
|
-
const attributes = /* alloc */ {};
|
|
18
|
-
let semantic, name;
|
|
19
|
-
for ([semantic, name] of geometrySemantics) {
|
|
20
|
-
if (primitive.attributes[semantic] !== undefined) {
|
|
21
|
-
attributes[name] = readAccessor(description, primitive.attributes[semantic]);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
if (!attributes.position) throw /* alloc */ new Error('glTF mesh has no positions');
|
|
25
|
-
const vertexCount = attributes.position.data.length / 3;
|
|
26
|
-
if (attributes.position.size !== 3 || vertexCount < 3) throw /* alloc */ new Error('Invalid glTF vertex attributes');
|
|
27
|
-
let attribute;
|
|
28
|
-
for (attribute of Object.values(attributes)) {
|
|
29
|
-
if (attribute.data.length / attribute.size !== vertexCount) throw /* alloc */ new Error('Invalid glTF vertex attributes');
|
|
30
|
-
}
|
|
31
|
-
return /* alloc */ { attributes, vertexCount };
|
|
32
|
-
}
|
|
1
|
+
import { geometrySemantics } from '../globals/geometrySemantics.js';
|
|
2
|
+
import { readAccessor } from './readAccessor.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Read supported primitive attributes and validate their vertex counts.
|
|
6
|
+
*
|
|
7
|
+
* @param {Object} description Decoded glTF document.
|
|
8
|
+
* @param {Object} primitive glTF mesh primitive.
|
|
9
|
+
*
|
|
10
|
+
* @returns {Object} Attribute map and vertex count.
|
|
11
|
+
*
|
|
12
|
+
* @throws {Error} If positions are missing.
|
|
13
|
+
* @throws {Error} If the position size or vertex count is invalid.
|
|
14
|
+
* @throws {Error} If attribute vertex counts differ.
|
|
15
|
+
*/
|
|
16
|
+
export function readModelAttributes(description, primitive) {
|
|
17
|
+
const attributes = /* alloc */ {};
|
|
18
|
+
let semantic, name;
|
|
19
|
+
for ([semantic, name] of geometrySemantics) {
|
|
20
|
+
if (primitive.attributes[semantic] !== undefined) {
|
|
21
|
+
attributes[name] = readAccessor(description, primitive.attributes[semantic]);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
if (!attributes.position) throw /* alloc */ new Error('glTF mesh has no positions');
|
|
25
|
+
const vertexCount = attributes.position.data.length / 3;
|
|
26
|
+
if (attributes.position.size !== 3 || vertexCount < 3) throw /* alloc */ new Error('Invalid glTF vertex attributes');
|
|
27
|
+
let attribute;
|
|
28
|
+
for (attribute of Object.values(attributes)) {
|
|
29
|
+
if (attribute.data.length / attribute.size !== vertexCount) throw /* alloc */ new Error('Invalid glTF vertex attributes');
|
|
30
|
+
}
|
|
31
|
+
return /* alloc */ { attributes, vertexCount };
|
|
32
|
+
}
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import { readAccessor } from './readAccessor.js';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Read and validate triangle indices, or validate an unindexed triangle list.
|
|
5
|
-
*
|
|
6
|
-
* @param {Object} description Decoded glTF document.
|
|
7
|
-
* @param {Object} primitive glTF mesh primitive.
|
|
8
|
-
* @param {Object} attributes Destination attribute map.
|
|
9
|
-
* @param {number} vertexCount Number of vertices.
|
|
10
|
-
*
|
|
11
|
-
* @throws {Error} If the index type, size or count is invalid.
|
|
12
|
-
* @throws {Error} If an index is outside the vertex range.
|
|
13
|
-
* @throws {Error} If the unindexed triangle list is incomplete.
|
|
14
|
-
*/
|
|
15
|
-
export function readModelIndices(description, primitive, attributes, vertexCount) {
|
|
16
|
-
if (primitive.indices !== undefined) {
|
|
17
|
-
const index = readAccessor(description, primitive.indices);
|
|
18
|
-
attributes.index = /* alloc */ { size: 1, data: index.indices };
|
|
19
|
-
if (!(index.indices instanceof Uint8Array || index.indices instanceof Uint16Array ||
|
|
20
|
-
index.indices instanceof Uint32Array) || index.size !== 1 || index.indices.length % 3) {
|
|
21
|
-
throw /* alloc */ new Error('Invalid glTF triangle indices');
|
|
22
|
-
}
|
|
23
|
-
let value;
|
|
24
|
-
for (value of index.indices) if (value >= vertexCount) throw /* alloc */ new Error('Invalid glTF triangle indices');
|
|
25
|
-
} else if (vertexCount % 3) {
|
|
26
|
-
throw /* alloc */ new Error('Incomplete glTF triangle');
|
|
27
|
-
}
|
|
28
|
-
}
|
|
1
|
+
import { readAccessor } from './readAccessor.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Read and validate triangle indices, or validate an unindexed triangle list.
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} description Decoded glTF document.
|
|
7
|
+
* @param {Object} primitive glTF mesh primitive.
|
|
8
|
+
* @param {Object} attributes Destination attribute map.
|
|
9
|
+
* @param {number} vertexCount Number of vertices.
|
|
10
|
+
*
|
|
11
|
+
* @throws {Error} If the index type, size or count is invalid.
|
|
12
|
+
* @throws {Error} If an index is outside the vertex range.
|
|
13
|
+
* @throws {Error} If the unindexed triangle list is incomplete.
|
|
14
|
+
*/
|
|
15
|
+
export function readModelIndices(description, primitive, attributes, vertexCount) {
|
|
16
|
+
if (primitive.indices !== undefined) {
|
|
17
|
+
const index = readAccessor(description, primitive.indices);
|
|
18
|
+
attributes.index = /* alloc */ { size: 1, data: index.indices };
|
|
19
|
+
if (!(index.indices instanceof Uint8Array || index.indices instanceof Uint16Array ||
|
|
20
|
+
index.indices instanceof Uint32Array) || index.size !== 1 || index.indices.length % 3) {
|
|
21
|
+
throw /* alloc */ new Error('Invalid glTF triangle indices');
|
|
22
|
+
}
|
|
23
|
+
let value;
|
|
24
|
+
for (value of index.indices) if (value >= vertexCount) throw /* alloc */ new Error('Invalid glTF triangle indices');
|
|
25
|
+
} else if (vertexCount % 3) {
|
|
26
|
+
throw /* alloc */ new Error('Incomplete glTF triangle');
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
import { types } from '../globals/types.js';
|
|
2
|
-
import { readAccessorValues } from './readAccessorValues.js';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Apply sparse glTF accessor values to an existing component array.
|
|
6
|
-
*
|
|
7
|
-
* @param {Object} description Decoded glTF document with loaded buffers.
|
|
8
|
-
* @param {Object} spec glTF accessor specification.
|
|
9
|
-
* @param {TypedArrayConstructor} Type Component array constructor.
|
|
10
|
-
* @param {number} size Components per element.
|
|
11
|
-
* @param {TypedArray} data Destination array to update.
|
|
12
|
-
*
|
|
13
|
-
* @throws {Error} If the sparse index type is invalid.
|
|
14
|
-
* @throws {Error} If the sparse index count or range is invalid.
|
|
15
|
-
*/
|
|
16
|
-
export function readSparseAccessor(description, spec, Type, size, data) {
|
|
17
|
-
const sparse = spec.sparse, Index = types[sparse.indices.componentType];
|
|
18
|
-
if (Index !== Uint8Array && Index !== Uint16Array && Index !== Uint32Array) {
|
|
19
|
-
throw /* alloc */ new Error('Invalid sparse glTF indices');
|
|
20
|
-
}
|
|
21
|
-
const view = description.bufferViews[sparse.indices.bufferView];
|
|
22
|
-
const offset = (view.byteOffset || 0) + (sparse.indices.byteOffset || 0);
|
|
23
|
-
if (sparse.count > spec.count ||
|
|
24
|
-
(sparse.indices.byteOffset || 0) + sparse.count * Index.BYTES_PER_ELEMENT > view.byteLength) {
|
|
25
|
-
throw /* alloc */ new Error('Invalid sparse glTF indices');
|
|
26
|
-
}
|
|
27
|
-
const indices = /* alloc */ new Index(description.buffers[view.buffer].binary.slice(
|
|
28
|
-
offset, offset + sparse.count * Index.BYTES_PER_ELEMENT));
|
|
29
|
-
readAccessorValues(description, Type, size, data, spec.count, indices, sparse.values.bufferView,
|
|
30
|
-
sparse.values.byteOffset || 0, sparse.count, 0);
|
|
31
|
-
}
|
|
1
|
+
import { types } from '../globals/types.js';
|
|
2
|
+
import { readAccessorValues } from './readAccessorValues.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Apply sparse glTF accessor values to an existing component array.
|
|
6
|
+
*
|
|
7
|
+
* @param {Object} description Decoded glTF document with loaded buffers.
|
|
8
|
+
* @param {Object} spec glTF accessor specification.
|
|
9
|
+
* @param {TypedArrayConstructor} Type Component array constructor.
|
|
10
|
+
* @param {number} size Components per element.
|
|
11
|
+
* @param {TypedArray} data Destination array to update.
|
|
12
|
+
*
|
|
13
|
+
* @throws {Error} If the sparse index type is invalid.
|
|
14
|
+
* @throws {Error} If the sparse index count or range is invalid.
|
|
15
|
+
*/
|
|
16
|
+
export function readSparseAccessor(description, spec, Type, size, data) {
|
|
17
|
+
const sparse = spec.sparse, Index = types[sparse.indices.componentType];
|
|
18
|
+
if (Index !== Uint8Array && Index !== Uint16Array && Index !== Uint32Array) {
|
|
19
|
+
throw /* alloc */ new Error('Invalid sparse glTF indices');
|
|
20
|
+
}
|
|
21
|
+
const view = description.bufferViews[sparse.indices.bufferView];
|
|
22
|
+
const offset = (view.byteOffset || 0) + (sparse.indices.byteOffset || 0);
|
|
23
|
+
if (sparse.count > spec.count ||
|
|
24
|
+
(sparse.indices.byteOffset || 0) + sparse.count * Index.BYTES_PER_ELEMENT > view.byteLength) {
|
|
25
|
+
throw /* alloc */ new Error('Invalid sparse glTF indices');
|
|
26
|
+
}
|
|
27
|
+
const indices = /* alloc */ new Index(description.buffers[view.buffer].binary.slice(
|
|
28
|
+
offset, offset + sparse.count * Index.BYTES_PER_ELEMENT));
|
|
29
|
+
readAccessorValues(description, Type, size, data, spec.count, indices, sparse.values.bufferView,
|
|
30
|
+
sparse.values.byteOffset || 0, sparse.count, 0);
|
|
31
|
+
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Destroy geometry buffers and clear pipeline caches tracked by a model context.
|
|
3
|
-
*
|
|
4
|
-
* @param {Object} context Model context containing allocated resources.
|
|
5
|
-
*/
|
|
6
|
-
export function releaseModelResources(context) {
|
|
7
|
-
let resource, attribute;
|
|
8
|
-
for (resource of context.resources) {
|
|
9
|
-
if (resource.attributes) {
|
|
10
|
-
for (attribute of Object.values(resource.attributes)) attribute.buffer.destroy();
|
|
11
|
-
} else {
|
|
12
|
-
resource.pipelineCache.clear();
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Destroy geometry buffers and clear pipeline caches tracked by a model context.
|
|
3
|
+
*
|
|
4
|
+
* @param {Object} context Model context containing allocated resources.
|
|
5
|
+
*/
|
|
6
|
+
export function releaseModelResources(context) {
|
|
7
|
+
let resource, attribute;
|
|
8
|
+
for (resource of context.resources) {
|
|
9
|
+
if (resource.attributes) {
|
|
10
|
+
for (attribute of Object.values(resource.attributes)) attribute.buffer.destroy();
|
|
11
|
+
} else {
|
|
12
|
+
resource.pipelineCache.clear();
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|