@cesium/engine 2.0.0 → 2.2.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/Build/Workers/{ArcType-ce2e50ab.js → ArcType-2d9abbbc.js} +4 -4
- package/Build/Workers/{AttributeCompression-b646d393.js → AttributeCompression-8a5a065e.js} +24 -24
- package/Build/Workers/{AxisAlignedBoundingBox-47525601.js → AxisAlignedBoundingBox-379015ef.js} +3 -3
- package/Build/Workers/{BoundingRectangle-93b263ac.js → BoundingRectangle-57f2b24f.js} +18 -18
- package/Build/Workers/{BoxGeometry-8c4b4125.js → BoxGeometry-ecabfc78.js} +9 -9
- package/Build/Workers/{Check-666ab1a0.js → Check-6ede7e26.js} +22 -22
- package/Build/Workers/{Color-52c60ed7.js → Color-14d1a36d.js} +59 -59
- package/Build/Workers/{ComponentDatatype-f7b11d02.js → ComponentDatatype-cf1fa08e.js} +16 -16
- package/Build/Workers/{CoplanarPolygonGeometryLibrary-33c4c1f8.js → CoplanarPolygonGeometryLibrary-048c3c14.js} +1 -1
- package/Build/Workers/{CorridorGeometryLibrary-5039cd8e.js → CorridorGeometryLibrary-520c8619.js} +1 -1
- package/Build/Workers/{CylinderGeometry-3ac44974.js → CylinderGeometry-119068b8.js} +12 -12
- package/Build/Workers/{CylinderGeometryLibrary-372c07d8.js → CylinderGeometryLibrary-135b0858.js} +1 -1
- package/Build/Workers/{EllipseGeometry-a9c9b3be.js → EllipseGeometry-2dfc3523.js} +20 -20
- package/Build/Workers/{EllipseGeometryLibrary-855d4681.js → EllipseGeometryLibrary-0a1e0170.js} +1 -1
- package/Build/Workers/{EllipseOutlineGeometry-017a5929.js → EllipseOutlineGeometry-c5251669.js} +15 -15
- package/Build/Workers/{EllipsoidGeodesic-98c62a56.js → EllipsoidGeodesic-dcff5cbd.js} +6 -6
- package/Build/Workers/{EllipsoidGeometry-826e7bce.js → EllipsoidGeometry-d10a5221.js} +14 -14
- package/Build/Workers/{EllipsoidOutlineGeometry-784dcdb5.js → EllipsoidOutlineGeometry-7039a0ae.js} +15 -15
- package/Build/Workers/{EllipsoidRhumbLine-19756602.js → EllipsoidRhumbLine-b672d507.js} +9 -9
- package/Build/Workers/{EllipsoidTangentPlane-ed9443a1.js → EllipsoidTangentPlane-857186be.js} +1 -1
- package/Build/Workers/{EncodedCartesian3-81f70735.js → EncodedCartesian3-e8bbca36.js} +6 -6
- package/Build/Workers/{FrustumGeometry-9f1ee4d8.js → FrustumGeometry-400fa1b7.js} +109 -109
- package/Build/Workers/{GeometryAttribute-334718f8.js → GeometryAttribute-7a2de5c6.js} +20 -20
- package/Build/Workers/{GeometryAttributes-f06a2792.js → GeometryAttributes-ad136444.js} +1 -1
- package/Build/Workers/{GeometryInstance-451dc1cd.js → GeometryInstance-3fb607b7.js} +6 -6
- package/Build/Workers/{GeometryPipeline-8fb0db69.js → GeometryPipeline-916636fa.js} +22 -22
- package/Build/Workers/{IndexDatatype-a55ceaa1.js → IndexDatatype-b8f3e09d.js} +13 -13
- package/Build/Workers/{IntersectionTests-27d49265.js → IntersectionTests-b4d02d4d.js} +37 -37
- package/Build/Workers/{Math-2dbd6b93.js → Math-dad82b4d.js} +137 -137
- package/Build/Workers/{Matrix2-13178034.js → Matrix2-1e403d0e.js} +256 -256
- package/Build/Workers/{Matrix3-315394f6.js → Matrix3-fa806b97.js} +150 -150
- package/Build/Workers/{OrientedBoundingBox-79ee7cbb.js → OrientedBoundingBox-96fe1752.js} +19 -17
- package/Build/Workers/{Plane-900aa728.js → Plane-c27e1ac6.js} +5 -5
- package/Build/Workers/{PolygonGeometryLibrary-6b5a29e9.js → PolygonGeometryLibrary-931f1ec6.js} +6 -6
- package/Build/Workers/{PolygonPipeline-21668b3f.js → PolygonPipeline-32fc92cc.js} +14 -14
- package/Build/Workers/{PolylinePipeline-5e2e1b21.js → PolylinePipeline-6d5c63e5.js} +16 -16
- package/Build/Workers/{PolylineVolumeGeometryLibrary-97f0b94e.js → PolylineVolumeGeometryLibrary-f068c1fb.js} +7 -7
- package/Build/Workers/{PrimitivePipeline-5640850a.js → PrimitivePipeline-879f996a.js} +6 -6
- package/Build/Workers/{RectangleGeometryLibrary-d5457f7b.js → RectangleGeometryLibrary-2d6f36f3.js} +1 -1
- package/Build/Workers/{RuntimeError-06c93819.js → RuntimeError-ef395448.js} +5 -5
- package/Build/Workers/{TerrainEncoding-bfdf2021.js → TerrainEncoding-82882059.js} +30 -30
- package/Build/Workers/{Transforms-a05e5e6e.js → Transforms-9052372a.js} +531 -530
- package/Build/Workers/{VertexFormat-6b480673.js → VertexFormat-030f11ff.js} +14 -14
- package/Build/Workers/{WallGeometryLibrary-6db0ebb6.js → WallGeometryLibrary-db7a64fb.js} +1 -1
- package/Build/Workers/{WebGLConstants-a8cc3e8c.js → WebGLConstants-0b1ce7ba.js} +1 -1
- package/Build/Workers/{WebMercatorProjection-13a90d41.js → WebMercatorProjection-76a3fcc0.js} +6 -6
- package/Build/Workers/{arrayRemoveDuplicates-c2038105.js → arrayRemoveDuplicates-fac118a8.js} +5 -5
- package/Build/Workers/cesiumWorkerBootstrapper.js +5 -5
- package/Build/Workers/{combine-ca22a614.js → combine-d9581036.js} +5 -5
- package/Build/Workers/combineGeometry.js +1 -1
- package/Build/Workers/createBoxGeometry.js +1 -1
- package/Build/Workers/createBoxOutlineGeometry.js +9 -9
- package/Build/Workers/createCircleGeometry.js +13 -13
- package/Build/Workers/createCircleOutlineGeometry.js +13 -13
- package/Build/Workers/createCoplanarPolygonGeometry.js +11 -11
- package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +9 -9
- package/Build/Workers/createCorridorGeometry.js +14 -14
- package/Build/Workers/createCorridorOutlineGeometry.js +12 -12
- package/Build/Workers/createCylinderGeometry.js +1 -1
- package/Build/Workers/createCylinderOutlineGeometry.js +13 -13
- package/Build/Workers/createEllipseGeometry.js +1 -1
- package/Build/Workers/createEllipseOutlineGeometry.js +1 -1
- package/Build/Workers/createEllipsoidGeometry.js +1 -1
- package/Build/Workers/createEllipsoidOutlineGeometry.js +1 -1
- package/Build/Workers/createFrustumGeometry.js +1 -1
- package/Build/Workers/createFrustumOutlineGeometry.js +8 -8
- package/Build/Workers/createGeometry.js +1 -1
- package/Build/Workers/createGroundPolylineGeometry.js +33 -33
- package/Build/Workers/createPlaneGeometry.js +8 -8
- package/Build/Workers/createPlaneOutlineGeometry.js +6 -6
- package/Build/Workers/createPolygonGeometry.js +25 -25
- package/Build/Workers/createPolygonOutlineGeometry.js +17 -17
- package/Build/Workers/createPolylineGeometry.js +11 -11
- package/Build/Workers/createPolylineVolumeGeometry.js +9 -9
- package/Build/Workers/createPolylineVolumeOutlineGeometry.js +9 -9
- package/Build/Workers/createRectangleGeometry.js +16 -16
- package/Build/Workers/createRectangleOutlineGeometry.js +12 -12
- package/Build/Workers/createSimplePolylineGeometry.js +10 -10
- package/Build/Workers/createSphereGeometry.js +11 -11
- package/Build/Workers/createSphereOutlineGeometry.js +12 -12
- package/Build/Workers/createTaskProcessorWorker.js +2 -2
- package/Build/Workers/createVectorTileClampedPolylines.js +1 -1
- package/Build/Workers/createVectorTileGeometries.js +8 -8
- package/Build/Workers/createVectorTilePoints.js +1 -1
- package/Build/Workers/createVectorTilePolygons.js +1 -1
- package/Build/Workers/createVectorTilePolylines.js +1 -1
- package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +1 -1
- package/Build/Workers/createVerticesFromHeightmap.js +23 -21
- package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +33 -38
- package/Build/Workers/createWallGeometry.js +14 -14
- package/Build/Workers/createWallOutlineGeometry.js +14 -14
- package/Build/Workers/decodeDraco.js +1 -1
- package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +15 -15
- package/Build/Workers/decodeI3S.js +1 -1
- package/Build/Workers/{defaultValue-0a909f67.js → defaultValue-fe22d8c0.js} +2 -2
- package/Build/Workers/package.js +1 -1
- package/Build/Workers/transcodeKTX2.js +26 -26
- package/Build/Workers/transferTypedArrayTest.js +1 -1
- package/Build/Workers/upsampleQuantizedTerrainMesh.js +24 -24
- package/Source/Core/ApproximateTerrainHeights.js +3 -3
- package/Source/Core/ArcGISTiledElevationTerrainProvider.js +308 -208
- package/Source/Core/ArcType.js +4 -4
- package/Source/Core/ArticulationStageType.js +1 -1
- package/Source/Core/AssociativeArray.js +7 -7
- package/Source/Core/AttributeCompression.js +12 -12
- package/Source/Core/AxisAlignedBoundingBox.js +2 -2
- package/Source/Core/BingMapsGeocoderService.js +6 -6
- package/Source/Core/BoundingRectangle.js +17 -17
- package/Source/Core/BoundingSphere.js +25 -25
- package/Source/Core/BoxGeometry.js +8 -8
- package/Source/Core/BoxOutlineGeometry.js +8 -8
- package/Source/Core/Cartesian2.js +38 -38
- package/Source/Core/Cartesian3.js +50 -50
- package/Source/Core/Cartesian4.js +44 -44
- package/Source/Core/Cartographic.js +19 -19
- package/Source/Core/CartographicGeocoderService.js +1 -1
- package/Source/Core/CatmullRomSpline.js +10 -10
- package/Source/Core/CesiumTerrainProvider.js +598 -461
- package/Source/Core/Check.js +17 -17
- package/Source/Core/CircleGeometry.js +12 -12
- package/Source/Core/CircleOutlineGeometry.js +12 -12
- package/Source/Core/Clock.js +7 -7
- package/Source/Core/ClockRange.js +4 -4
- package/Source/Core/ClockStep.js +4 -4
- package/Source/Core/Color.js +58 -58
- package/Source/Core/ColorGeometryInstanceAttribute.js +7 -7
- package/Source/Core/ComponentDatatype.js +15 -15
- package/Source/Core/CompressedTextureBuffer.js +7 -7
- package/Source/Core/ConstantSpline.js +9 -9
- package/Source/Core/CoplanarPolygonGeometry.js +10 -10
- package/Source/Core/CoplanarPolygonOutlineGeometry.js +8 -8
- package/Source/Core/CornerType.js +4 -4
- package/Source/Core/CorridorGeometry.js +13 -13
- package/Source/Core/CorridorOutlineGeometry.js +11 -11
- package/Source/Core/Credit.js +7 -7
- package/Source/Core/CubicRealPolynomial.js +10 -10
- package/Source/Core/CullingVolume.js +7 -7
- package/Source/Core/CustomHeightmapTerrainProvider.js +40 -28
- package/Source/Core/CylinderGeometry.js +11 -11
- package/Source/Core/CylinderOutlineGeometry.js +12 -12
- package/Source/Core/DefaultProxy.js +3 -3
- package/Source/Core/DeveloperError.js +4 -4
- package/Source/Core/DistanceDisplayCondition.js +12 -12
- package/Source/Core/DistanceDisplayConditionGeometryInstanceAttribute.js +5 -5
- package/Source/Core/DoubleEndedPriorityQueue.js +5 -5
- package/Source/Core/EarthOrientationParameters.js +6 -6
- package/Source/Core/EarthOrientationParametersSample.js +10 -10
- package/Source/Core/EasingFunction.js +2 -2
- package/Source/Core/EllipseGeometry.js +19 -19
- package/Source/Core/EllipseOutlineGeometry.js +14 -14
- package/Source/Core/Ellipsoid.js +20 -20
- package/Source/Core/EllipsoidGeodesic.js +5 -5
- package/Source/Core/EllipsoidGeometry.js +13 -13
- package/Source/Core/EllipsoidOutlineGeometry.js +14 -14
- package/Source/Core/EllipsoidRhumbLine.js +8 -8
- package/Source/Core/EllipsoidTerrainProvider.js +35 -28
- package/Source/Core/EllipsoidalOccluder.js +9 -9
- package/Source/Core/EncodedCartesian3.js +5 -5
- package/Source/Core/Event.js +4 -4
- package/Source/Core/EventHelper.js +1 -1
- package/Source/Core/ExtrapolationType.js +4 -4
- package/Source/Core/FeatureDetection.js +9 -9
- package/Source/Core/FrustumGeometry.js +8 -8
- package/Source/Core/FrustumOutlineGeometry.js +7 -7
- package/Source/Core/Fullscreen.js +8 -8
- package/Source/Core/GeocodeType.js +3 -3
- package/Source/Core/GeocoderService.js +3 -3
- package/Source/Core/GeographicTilingScheme.js +16 -16
- package/Source/Core/Geometry.js +5 -5
- package/Source/Core/GeometryAttribute.js +6 -6
- package/Source/Core/GeometryInstance.js +5 -5
- package/Source/Core/GeometryInstanceAttribute.js +7 -7
- package/Source/Core/GeometryPipeline.js +11 -11
- package/Source/Core/GoogleEarthEnterpriseMetadata.js +107 -55
- package/Source/Core/GoogleEarthEnterpriseTerrainData.js +29 -29
- package/Source/Core/GoogleEarthEnterpriseTerrainProvider.js +137 -100
- package/Source/Core/GoogleEarthEnterpriseTileInformation.js +14 -14
- package/Source/Core/GregorianDate.js +16 -16
- package/Source/Core/GroundPolylineGeometry.js +13 -13
- package/Source/Core/HeadingPitchRange.js +6 -6
- package/Source/Core/HeadingPitchRoll.js +18 -18
- package/Source/Core/Heap.js +7 -7
- package/Source/Core/HeightmapEncoding.js +3 -3
- package/Source/Core/HeightmapTerrainData.js +44 -44
- package/Source/Core/HeightmapTessellator.js +16 -16
- package/Source/Core/HermitePolynomialApproximation.js +17 -17
- package/Source/Core/HermiteSpline.js +17 -17
- package/Source/Core/HilbertOrder.js +7 -7
- package/Source/Core/Iau2006XysData.js +13 -13
- package/Source/Core/Iau2006XysSample.js +6 -6
- package/Source/Core/IauOrientationParameters.js +4 -4
- package/Source/Core/IndexDatatype.js +12 -12
- package/Source/Core/InterpolationAlgorithm.js +17 -17
- package/Source/Core/InterpolationType.js +1 -1
- package/Source/Core/Intersect.js +4 -4
- package/Source/Core/IntersectionTests.js +5 -5
- package/Source/Core/Intersections2D.js +23 -23
- package/Source/Core/Interval.js +4 -4
- package/Source/Core/Ion.js +3 -3
- package/Source/Core/IonGeocoderService.js +4 -4
- package/Source/Core/IonResource.js +20 -9
- package/Source/Core/JulianDate.js +27 -27
- package/Source/Core/KeyboardEventModifier.js +4 -4
- package/Source/Core/LagrangePolynomialApproximation.js +8 -8
- package/Source/Core/LeapSecond.js +2 -2
- package/Source/Core/LinearApproximation.js +8 -8
- package/Source/Core/LinearSpline.js +13 -13
- package/Source/Core/ManagedArray.js +8 -8
- package/Source/Core/Math.js +136 -136
- package/Source/Core/Matrix2.js +44 -44
- package/Source/Core/Matrix3.js +59 -59
- package/Source/Core/Matrix4.js +91 -91
- package/Source/Core/MorphWeightSpline.js +14 -14
- package/Source/Core/MortonOrder.js +21 -21
- package/Source/Core/NearFarScalar.js +16 -16
- package/Source/Core/Occluder.js +5 -5
- package/Source/Core/OffsetGeometryInstanceAttribute.js +5 -5
- package/Source/Core/OpenCageGeocoderService.js +18 -18
- package/Source/Core/OrientedBoundingBox.js +18 -16
- package/Source/Core/OrthographicFrustum.js +23 -23
- package/Source/Core/OrthographicOffCenterFrustum.js +21 -21
- package/Source/Core/Packable.js +7 -7
- package/Source/Core/PackableForInterpolation.js +11 -11
- package/Source/Core/PeliasGeocoderService.js +2 -2
- package/Source/Core/PerspectiveFrustum.js +28 -28
- package/Source/Core/PerspectiveOffCenterFrustum.js +21 -21
- package/Source/Core/PinBuilder.js +9 -9
- package/Source/Core/PixelFormat.js +23 -23
- package/Source/Core/Plane.js +4 -4
- package/Source/Core/PlaneGeometry.js +7 -7
- package/Source/Core/PlaneOutlineGeometry.js +5 -5
- package/Source/Core/PolygonGeometry.js +24 -24
- package/Source/Core/PolygonGeometryLibrary.js +4 -4
- package/Source/Core/PolygonOutlineGeometry.js +16 -16
- package/Source/Core/PolygonPipeline.js +10 -10
- package/Source/Core/PolylineGeometry.js +10 -10
- package/Source/Core/PolylinePipeline.js +15 -15
- package/Source/Core/PolylineVolumeGeometry.js +8 -8
- package/Source/Core/PolylineVolumeOutlineGeometry.js +8 -8
- package/Source/Core/PrimitiveType.js +8 -8
- package/Source/Core/Proxy.js +2 -2
- package/Source/Core/QuadraticRealPolynomial.js +8 -8
- package/Source/Core/QuantizedMeshTerrainData.js +37 -37
- package/Source/Core/QuarticRealPolynomial.js +12 -12
- package/Source/Core/Quaternion.js +42 -42
- package/Source/Core/QuaternionSpline.js +10 -10
- package/Source/Core/Queue.js +2 -2
- package/Source/Core/Ray.js +1 -1
- package/Source/Core/Rectangle.js +38 -38
- package/Source/Core/RectangleCollisionChecker.js +3 -3
- package/Source/Core/RectangleGeometry.js +15 -15
- package/Source/Core/RectangleOutlineGeometry.js +11 -11
- package/Source/Core/ReferenceFrame.js +3 -3
- package/Source/Core/Request.js +13 -13
- package/Source/Core/RequestErrorEvent.js +7 -7
- package/Source/Core/RequestScheduler.js +15 -15
- package/Source/Core/RequestState.js +7 -7
- package/Source/Core/RequestType.js +5 -5
- package/Source/Core/Resource.js +225 -225
- package/Source/Core/RuntimeError.js +4 -4
- package/Source/Core/S2Cell.js +15 -15
- package/Source/Core/ScreenSpaceEventHandler.js +7 -7
- package/Source/Core/ScreenSpaceEventType.js +16 -16
- package/Source/Core/ShowGeometryInstanceAttribute.js +4 -4
- package/Source/Core/SimplePolylineGeometry.js +9 -9
- package/Source/Core/SphereGeometry.js +10 -10
- package/Source/Core/SphereOutlineGeometry.js +11 -11
- package/Source/Core/Spherical.js +13 -13
- package/Source/Core/Spline.js +14 -14
- package/Source/Core/SteppedSpline.js +14 -14
- package/Source/Core/TaskProcessor.js +10 -10
- package/Source/Core/TerrainData.js +25 -25
- package/Source/Core/TerrainEncoding.js +14 -14
- package/Source/Core/TerrainExaggeration.js +3 -3
- package/Source/Core/TerrainMesh.js +18 -18
- package/Source/Core/TerrainProvider.js +32 -37
- package/Source/Core/TerrainQuantization.js +3 -3
- package/Source/Core/TileAvailability.js +16 -16
- package/Source/Core/TileProviderError.js +19 -19
- package/Source/Core/TilingScheme.js +13 -13
- package/Source/Core/TimeConstants.js +10 -10
- package/Source/Core/TimeInterval.js +23 -23
- package/Source/Core/TimeIntervalCollection.js +39 -39
- package/Source/Core/TimeStandard.js +3 -3
- package/Source/Core/Tipsify.js +10 -10
- package/Source/Core/Transforms.js +2 -2
- package/Source/Core/TranslationRotationScale.js +1 -1
- package/Source/Core/TridiagonalSystemSolver.js +3 -3
- package/Source/Core/TrustedServers.js +5 -5
- package/Source/Core/VRTheWorldTerrainProvider.js +210 -141
- package/Source/Core/VertexFormat.js +13 -13
- package/Source/Core/VideoSynchronizer.js +4 -4
- package/Source/Core/Visibility.js +4 -4
- package/Source/Core/VulkanConstants.js +1 -1
- package/Source/Core/WallGeometry.js +13 -13
- package/Source/Core/WallOutlineGeometry.js +13 -13
- package/Source/Core/WebGLConstants.js +1 -1
- package/Source/Core/WebMercatorProjection.js +5 -5
- package/Source/Core/WebMercatorTilingScheme.js +16 -16
- package/Source/Core/WindingOrder.js +3 -3
- package/Source/Core/WireframeIndexGenerator.js +3 -3
- package/Source/Core/arrayRemoveDuplicates.js +4 -4
- package/Source/Core/binarySearch.js +2 -2
- package/Source/Core/buildModuleUrl.js +8 -7
- package/Source/Core/clone.js +3 -3
- package/Source/Core/combine.js +4 -4
- package/Source/Core/createGuid.js +1 -1
- package/Source/Core/createWorldTerrain.js +23 -5
- package/Source/Core/createWorldTerrainAsync.js +48 -0
- package/Source/Core/defaultValue.js +1 -1
- package/Source/Core/defer.js +1 -1
- package/Source/Core/defined.js +1 -1
- package/Source/Core/deprecationWarning.js +2 -2
- package/Source/Core/destroyObject.js +2 -2
- package/Source/Core/formatError.js +1 -1
- package/Source/Core/getAbsoluteUri.js +3 -3
- package/Source/Core/getBaseUri.js +3 -3
- package/Source/Core/getExtensionFromUri.js +2 -2
- package/Source/Core/getFilenameFromUri.js +2 -2
- package/Source/Core/getImageFromTypedArray.js +2 -2
- package/Source/Core/getImagePixels.js +4 -3
- package/Source/Core/getJsonFromTypedArray.js +3 -3
- package/Source/Core/getStringFromTypedArray.js +3 -3
- package/Source/Core/getTimestamp.js +1 -1
- package/Source/Core/isBlobUri.js +2 -2
- package/Source/Core/isDataUri.js +2 -2
- package/Source/Core/isLeapYear.js +2 -2
- package/Source/Core/loadKTX2.js +8 -8
- package/Source/Core/mergeSort.js +1 -1
- package/Source/Core/objectToQuery.js +2 -2
- package/Source/Core/oneTimeWarning.js +2 -2
- package/Source/Core/parseResponseHeaders.js +2 -2
- package/Source/Core/pointInsideTriangle.js +1 -1
- package/Source/Core/queryToObject.js +2 -2
- package/Source/Core/sampleTerrain.js +16 -17
- package/Source/Core/sampleTerrainMostDetailed.js +67 -73
- package/Source/Core/scaleToGeodeticSurface.js +1 -1
- package/Source/Core/subdivideArray.js +1 -1
- package/Source/Core/writeTextToCanvas.js +10 -9
- package/Source/DataSources/BillboardGraphics.js +1 -1
- package/Source/DataSources/BillboardVisualizer.js +2 -2
- package/Source/DataSources/BoundingSphereState.js +1 -1
- package/Source/DataSources/BoxGraphics.js +1 -1
- package/Source/DataSources/CallbackProperty.js +8 -8
- package/Source/DataSources/Cesium3DTilesetGraphics.js +1 -1
- package/Source/DataSources/Cesium3DTilesetVisualizer.js +39 -28
- package/Source/DataSources/CheckerboardMaterialProperty.js +6 -6
- package/Source/DataSources/ColorMaterialProperty.js +5 -5
- package/Source/DataSources/CompositeEntityCollection.js +8 -8
- package/Source/DataSources/CompositeMaterialProperty.js +5 -5
- package/Source/DataSources/CompositePositionProperty.js +2 -2
- package/Source/DataSources/CompositeProperty.js +4 -4
- package/Source/DataSources/ConstantPositionProperty.js +4 -4
- package/Source/DataSources/ConstantProperty.js +5 -5
- package/Source/DataSources/CorridorGraphics.js +1 -1
- package/Source/DataSources/CustomDataSource.js +5 -5
- package/Source/DataSources/CylinderGraphics.js +1 -1
- package/Source/DataSources/CzmlDataSource.js +26 -26
- package/Source/DataSources/DataSource.js +4 -4
- package/Source/DataSources/DataSourceClock.js +2 -2
- package/Source/DataSources/DataSourceCollection.js +11 -11
- package/Source/DataSources/DataSourceDisplay.js +5 -5
- package/Source/DataSources/DynamicGeometryUpdater.js +1 -1
- package/Source/DataSources/EllipseGraphics.js +1 -1
- package/Source/DataSources/EllipsoidGeometryUpdater.js +2 -2
- package/Source/DataSources/EllipsoidGraphics.js +1 -1
- package/Source/DataSources/Entity.js +20 -15
- package/Source/DataSources/EntityCluster.js +16 -16
- package/Source/DataSources/EntityCollection.js +8 -8
- package/Source/DataSources/GeoJsonDataSource.js +27 -27
- package/Source/DataSources/GeometryUpdater.js +22 -22
- package/Source/DataSources/GeometryVisualizer.js +2 -2
- package/Source/DataSources/GpxDataSource.js +23 -23
- package/Source/DataSources/GridMaterialProperty.js +7 -7
- package/Source/DataSources/GroundGeometryUpdater.js +5 -5
- package/Source/DataSources/ImageMaterialProperty.js +8 -8
- package/Source/DataSources/KmlDataSource.js +32 -32
- package/Source/DataSources/KmlTour.js +7 -7
- package/Source/DataSources/KmlTourFlyTo.js +6 -6
- package/Source/DataSources/KmlTourWait.js +2 -2
- package/Source/DataSources/LabelGraphics.js +1 -1
- package/Source/DataSources/LabelVisualizer.js +2 -2
- package/Source/DataSources/MaterialProperty.js +5 -5
- package/Source/DataSources/ModelGraphics.js +3 -3
- package/Source/DataSources/ModelVisualizer.js +101 -33
- package/Source/DataSources/NodeTransformationProperty.js +3 -3
- package/Source/DataSources/PathGraphics.js +1 -1
- package/Source/DataSources/PathVisualizer.js +2 -2
- package/Source/DataSources/PlaneGraphics.js +1 -1
- package/Source/DataSources/PointGraphics.js +1 -1
- package/Source/DataSources/PointVisualizer.js +2 -2
- package/Source/DataSources/PolygonGraphics.js +4 -4
- package/Source/DataSources/PolylineArrowMaterialProperty.js +5 -5
- package/Source/DataSources/PolylineDashMaterialProperty.js +8 -8
- package/Source/DataSources/PolylineGeometryUpdater.js +13 -13
- package/Source/DataSources/PolylineGlowMaterialProperty.js +8 -8
- package/Source/DataSources/PolylineGraphics.js +2 -2
- package/Source/DataSources/PolylineOutlineMaterialProperty.js +7 -7
- package/Source/DataSources/PolylineVisualizer.js +2 -2
- package/Source/DataSources/PolylineVolumeGraphics.js +3 -3
- package/Source/DataSources/PositionProperty.js +2 -2
- package/Source/DataSources/PositionPropertyArray.js +2 -2
- package/Source/DataSources/Property.js +4 -4
- package/Source/DataSources/PropertyArray.js +2 -2
- package/Source/DataSources/PropertyBag.js +10 -10
- package/Source/DataSources/RectangleGraphics.js +1 -1
- package/Source/DataSources/ReferenceProperty.js +10 -10
- package/Source/DataSources/Rotation.js +14 -14
- package/Source/DataSources/SampledPositionProperty.js +11 -11
- package/Source/DataSources/SampledProperty.js +12 -12
- package/Source/DataSources/StripeMaterialProperty.js +8 -8
- package/Source/DataSources/StripeOrientation.js +3 -3
- package/Source/DataSources/TerrainOffsetProperty.js +1 -1
- package/Source/DataSources/TimeIntervalCollectionPositionProperty.js +3 -3
- package/Source/DataSources/TimeIntervalCollectionProperty.js +4 -4
- package/Source/DataSources/VelocityOrientationProperty.js +2 -2
- package/Source/DataSources/VelocityVectorProperty.js +4 -4
- package/Source/DataSources/Visualizer.js +2 -2
- package/Source/DataSources/WallGraphics.js +4 -4
- package/Source/DataSources/exportKml.js +9 -9
- package/Source/Renderer/Buffer.js +4 -4
- package/Source/Renderer/ClearCommand.js +3 -3
- package/Source/Renderer/ComputeCommand.js +3 -3
- package/Source/Renderer/Context.js +46 -46
- package/Source/Renderer/ContextLimits.js +22 -22
- package/Source/Renderer/CubeMapFace.js +11 -11
- package/Source/Renderer/DrawCommand.js +15 -15
- package/Source/Renderer/Framebuffer.js +4 -4
- package/Source/Renderer/FramebufferManager.js +9 -9
- package/Source/Renderer/MultisampleFramebuffer.js +1 -1
- package/Source/Renderer/PassState.js +2 -2
- package/Source/Renderer/PixelDatatype.js +1 -1
- package/Source/Renderer/RenderState.js +1 -1
- package/Source/Renderer/ShaderBuilder.js +24 -24
- package/Source/Renderer/ShaderCache.js +8 -8
- package/Source/Renderer/ShaderDestination.js +2 -2
- package/Source/Renderer/ShaderFunction.js +3 -3
- package/Source/Renderer/ShaderSource.js +8 -8
- package/Source/Renderer/ShaderStruct.js +4 -4
- package/Source/Renderer/Texture.js +18 -18
- package/Source/Renderer/TextureMagnificationFilter.js +4 -4
- package/Source/Renderer/TextureMinificationFilter.js +8 -8
- package/Source/Renderer/UniformState.js +14 -14
- package/Source/Renderer/VertexArray.js +2 -2
- package/Source/Renderer/createUniform.js +12 -12
- package/Source/Renderer/createUniformArray.js +12 -12
- package/Source/Renderer/freezeRenderState.js +2 -2
- package/Source/Renderer/loadCubeMap.js +3 -3
- package/Source/Scene/AlphaMode.js +4 -4
- package/Source/Scene/Appearance.js +14 -14
- package/Source/Scene/ArcGisMapServerImageryProvider.js +585 -409
- package/Source/Scene/AttributeType.js +11 -11
- package/Source/Scene/AutoExposure.js +6 -6
- package/Source/Scene/Axis.js +6 -6
- package/Source/Scene/B3dmParser.js +2 -2
- package/Source/Scene/BatchTable.js +13 -13
- package/Source/Scene/BatchTableHierarchy.js +22 -22
- package/Source/Scene/BatchTexture.js +14 -14
- package/Source/Scene/Billboard.js +17 -17
- package/Source/Scene/BillboardCollection.js +13 -13
- package/Source/Scene/BingMapsImageryProvider.js +541 -335
- package/Source/Scene/BingMapsStyle.js +11 -11
- package/Source/Scene/BlendEquation.js +6 -6
- package/Source/Scene/BlendFunction.js +16 -16
- package/Source/Scene/BlendOption.js +4 -4
- package/Source/Scene/BlendingState.js +4 -4
- package/Source/Scene/BufferLoader.js +33 -38
- package/Source/Scene/Camera.js +57 -57
- package/Source/Scene/CameraEventAggregator.js +26 -16
- package/Source/Scene/CameraEventType.js +6 -6
- package/Source/Scene/Cesium3DContentGroup.js +1 -1
- package/Source/Scene/Cesium3DTile.js +409 -272
- package/Source/Scene/Cesium3DTileBatchTable.js +3 -3
- package/Source/Scene/Cesium3DTileColorBlendMode.js +4 -4
- package/Source/Scene/Cesium3DTileContent.js +31 -15
- package/Source/Scene/Cesium3DTileContentFactory.js +4 -4
- package/Source/Scene/Cesium3DTileContentType.js +17 -17
- package/Source/Scene/Cesium3DTileFeature.js +16 -16
- package/Source/Scene/Cesium3DTileOptimizationHint.js +1 -1
- package/Source/Scene/Cesium3DTileOptimizations.js +1 -1
- package/Source/Scene/Cesium3DTilePass.js +8 -11
- package/Source/Scene/Cesium3DTilePassState.js +1 -1
- package/Source/Scene/Cesium3DTilePointFeature.js +23 -23
- package/Source/Scene/Cesium3DTileRefine.js +3 -3
- package/Source/Scene/Cesium3DTileStyle.js +17 -17
- package/Source/Scene/Cesium3DTileStyleEngine.js +1 -1
- package/Source/Scene/Cesium3DTilesVoxelProvider.js +226 -118
- package/Source/Scene/Cesium3DTileset.js +817 -543
- package/Source/Scene/Cesium3DTilesetBaseTraversal.js +301 -0
- package/Source/Scene/Cesium3DTilesetHeatmap.js +4 -4
- package/Source/Scene/Cesium3DTilesetMetadata.js +5 -5
- package/Source/Scene/Cesium3DTilesetMostDetailedTraversal.js +33 -46
- package/Source/Scene/Cesium3DTilesetSkipTraversal.js +421 -0
- package/Source/Scene/Cesium3DTilesetTraversal.js +219 -671
- package/Source/Scene/CircleEmitter.js +2 -2
- package/Source/Scene/ClassificationPrimitive.js +32 -25
- package/Source/Scene/ClassificationType.js +4 -4
- package/Source/Scene/ClippingPlane.js +2 -2
- package/Source/Scene/ClippingPlaneCollection.js +17 -17
- package/Source/Scene/CloudCollection.js +16 -16
- package/Source/Scene/CloudType.js +3 -3
- package/Source/Scene/ColorBlendMode.js +1 -1
- package/Source/Scene/Composite3DTileContent.js +69 -26
- package/Source/Scene/ConditionsExpression.js +11 -11
- package/Source/Scene/ConeEmitter.js +2 -2
- package/Source/Scene/ContentMetadata.js +16 -16
- package/Source/Scene/CreditDisplay.js +22 -6
- package/Source/Scene/CullFace.js +4 -4
- package/Source/Scene/CumulusCloud.js +3 -3
- package/Source/Scene/DebugAppearance.js +17 -17
- package/Source/Scene/DebugCameraPrimitive.js +7 -7
- package/Source/Scene/DebugModelMatrixPrimitive.js +9 -9
- package/Source/Scene/DepthFunction.js +9 -9
- package/Source/Scene/DepthPlane.js +1 -1
- package/Source/Scene/DeviceOrientationCameraController.js +1 -1
- package/Source/Scene/DirectionalLight.js +3 -3
- package/Source/Scene/DiscardEmptyTileImagePolicy.js +2 -2
- package/Source/Scene/DiscardMissingTileImagePolicy.js +5 -5
- package/Source/Scene/DracoLoader.js +4 -4
- package/Source/Scene/EllipsoidPrimitive.js +8 -8
- package/Source/Scene/EllipsoidSurfaceAppearance.js +19 -19
- package/Source/Scene/Empty3DTileContent.js +31 -1
- package/Source/Scene/Expression.js +14 -14
- package/Source/Scene/Fog.js +5 -5
- package/Source/Scene/FrameRateMonitor.js +14 -14
- package/Source/Scene/FrameState.js +36 -36
- package/Source/Scene/FrustumCommands.js +2 -2
- package/Source/Scene/Geometry3DTileContent.js +47 -7
- package/Source/Scene/GetFeatureInfoFormat.js +2 -2
- package/Source/Scene/Globe.js +39 -35
- package/Source/Scene/GlobeSurfaceTile.js +3 -2
- package/Source/Scene/GlobeSurfaceTileProvider.js +56 -33
- package/Source/Scene/GlobeTranslucency.js +3 -3
- package/Source/Scene/GltfBufferViewLoader.js +52 -96
- package/Source/Scene/GltfDracoLoader.js +117 -119
- package/Source/Scene/GltfImageLoader.js +77 -84
- package/Source/Scene/GltfIndexBufferLoader.js +118 -131
- package/Source/Scene/GltfJsonLoader.js +81 -80
- package/Source/Scene/GltfLoader.js +413 -301
- package/Source/Scene/GltfLoaderUtil.js +11 -11
- package/Source/Scene/GltfPipeline/addBuffer.js +2 -2
- package/Source/Scene/GltfPipeline/addDefaults.js +2 -2
- package/Source/Scene/GltfPipeline/addExtensionsRequired.js +2 -2
- package/Source/Scene/GltfPipeline/addExtensionsUsed.js +2 -2
- package/Source/Scene/GltfPipeline/addPipelineExtras.js +2 -2
- package/Source/Scene/GltfPipeline/addToArray.js +2 -2
- package/Source/Scene/GltfPipeline/findAccessorMinMax.js +2 -2
- package/Source/Scene/GltfPipeline/forEachTextureInMaterial.js +3 -3
- package/Source/Scene/GltfPipeline/getAccessorByteStride.js +3 -3
- package/Source/Scene/GltfPipeline/getComponentReader.js +5 -5
- package/Source/Scene/GltfPipeline/moveTechniqueRenderStates.js +2 -2
- package/Source/Scene/GltfPipeline/moveTechniquesToExtension.js +2 -2
- package/Source/Scene/GltfPipeline/numberOfComponentsForType.js +2 -2
- package/Source/Scene/GltfPipeline/parseGlb.js +1 -1
- package/Source/Scene/GltfPipeline/readAccessorPacked.js +2 -2
- package/Source/Scene/GltfPipeline/removeExtension.js +2 -2
- package/Source/Scene/GltfPipeline/removeExtensionsRequired.js +2 -2
- package/Source/Scene/GltfPipeline/removeExtensionsUsed.js +2 -2
- package/Source/Scene/GltfPipeline/removePipelineExtras.js +2 -2
- package/Source/Scene/GltfPipeline/removeUnusedElements.js +2 -2
- package/Source/Scene/GltfPipeline/updateAccessorComponentTypes.js +2 -2
- package/Source/Scene/GltfPipeline/updateVersion.js +4 -4
- package/Source/Scene/GltfPipeline/usesExtension.js +3 -3
- package/Source/Scene/GltfStructuralMetadataLoader.js +117 -118
- package/Source/Scene/GltfTextureLoader.js +104 -103
- package/Source/Scene/GltfVertexBufferLoader.js +140 -145
- package/Source/Scene/GoogleEarthEnterpriseImageryProvider.js +377 -249
- package/Source/Scene/GoogleEarthEnterpriseMapsProvider.js +520 -360
- package/Source/Scene/GridImageryProvider.js +292 -129
- package/Source/Scene/GroundPolylinePrimitive.js +32 -21
- package/Source/Scene/GroundPrimitive.js +34 -27
- package/Source/Scene/GroupMetadata.js +17 -17
- package/Source/Scene/HeightReference.js +4 -4
- package/Source/Scene/HorizontalOrigin.js +4 -4
- package/Source/Scene/I3SDataProvider.js +221 -120
- package/Source/Scene/I3SFeature.js +8 -7
- package/Source/Scene/I3SField.js +5 -5
- package/Source/Scene/I3SGeometry.js +8 -8
- package/Source/Scene/I3SLayer.js +33 -44
- package/Source/Scene/I3SNode.js +65 -72
- package/Source/Scene/I3dmParser.js +2 -2
- package/Source/Scene/ImageBasedLighting.js +21 -17
- package/Source/Scene/Imagery.js +6 -1
- package/Source/Scene/ImageryLayer.js +324 -73
- package/Source/Scene/ImageryLayerCollection.js +37 -11
- package/Source/Scene/ImageryLayerFeatureInfo.js +6 -6
- package/Source/Scene/ImageryProvider.js +151 -133
- package/Source/Scene/Implicit3DTileContent.js +128 -79
- package/Source/Scene/ImplicitAvailabilityBitstream.js +10 -10
- package/Source/Scene/ImplicitMetadataView.js +16 -16
- package/Source/Scene/ImplicitSubdivisionScheme.js +4 -4
- package/Source/Scene/ImplicitSubtree.js +113 -92
- package/Source/Scene/ImplicitSubtreeCache.js +6 -6
- package/Source/Scene/ImplicitSubtreeMetadata.js +16 -16
- package/Source/Scene/ImplicitTileCoordinates.js +27 -27
- package/Source/Scene/ImplicitTileset.js +10 -10
- package/Source/Scene/InstanceAttributeSemantic.js +5 -5
- package/Source/Scene/IonImageryProvider.js +493 -286
- package/Source/Scene/IonWorldImageryStyle.js +4 -4
- package/Source/Scene/JsonMetadataTable.js +11 -11
- package/Source/Scene/KeyframeNode.js +1 -1
- package/Source/Scene/Label.js +14 -14
- package/Source/Scene/LabelCollection.js +12 -11
- package/Source/Scene/LabelStyle.js +4 -4
- package/Source/Scene/Light.js +1 -1
- package/Source/Scene/MapMode2D.js +3 -3
- package/Source/Scene/MapboxImageryProvider.js +301 -141
- package/Source/Scene/MapboxStyleImageryProvider.js +301 -142
- package/Source/Scene/Material.js +47 -47
- package/Source/Scene/MaterialAppearance.js +21 -21
- package/Source/Scene/Megatexture.js +15 -15
- package/Source/Scene/MetadataClass.js +16 -16
- package/Source/Scene/MetadataClassProperty.js +41 -41
- package/Source/Scene/MetadataComponentType.js +21 -21
- package/Source/Scene/MetadataEntity.js +31 -31
- package/Source/Scene/MetadataEnum.js +14 -14
- package/Source/Scene/MetadataEnumValue.js +10 -10
- package/Source/Scene/MetadataSchema.js +16 -16
- package/Source/Scene/MetadataSchemaLoader.js +31 -41
- package/Source/Scene/MetadataSemantic.js +17 -17
- package/Source/Scene/MetadataTable.js +24 -24
- package/Source/Scene/MetadataTableProperty.js +9 -9
- package/Source/Scene/MetadataType.js +15 -15
- package/Source/Scene/Model/B3dmLoader.js +54 -58
- package/Source/Scene/Model/ClassificationModelDrawCommand.js +3 -3
- package/Source/Scene/Model/CustomShader.js +18 -18
- package/Source/Scene/Model/CustomShaderMode.js +4 -4
- package/Source/Scene/Model/CustomShaderTranslucencyMode.js +4 -4
- package/Source/Scene/Model/GeoJsonLoader.js +12 -36
- package/Source/Scene/Model/I3dmLoader.js +58 -84
- package/Source/Scene/Model/LightingModel.js +3 -3
- package/Source/Scene/Model/MaterialPipelineStage.js +6 -6
- package/Source/Scene/Model/MetadataPipelineStage.js +25 -26
- package/Source/Scene/Model/Model.js +531 -193
- package/Source/Scene/Model/Model3DTileContent.js +83 -31
- package/Source/Scene/Model/ModelAlphaOptions.js +1 -1
- package/Source/Scene/Model/ModelAnimation.js +11 -11
- package/Source/Scene/Model/ModelAnimationChannel.js +2 -2
- package/Source/Scene/Model/ModelAnimationCollection.js +21 -21
- package/Source/Scene/Model/ModelArticulation.js +4 -4
- package/Source/Scene/Model/ModelArticulationStage.js +5 -5
- package/Source/Scene/Model/ModelDrawCommand.js +18 -29
- package/Source/Scene/Model/ModelFeature.js +12 -12
- package/Source/Scene/Model/ModelFeatureTable.js +5 -5
- package/Source/Scene/Model/ModelLightingOptions.js +1 -1
- package/Source/Scene/Model/ModelNode.js +3 -3
- package/Source/Scene/Model/ModelRenderResources.js +4 -4
- package/Source/Scene/Model/ModelRuntimeNode.js +7 -7
- package/Source/Scene/Model/ModelRuntimePrimitive.js +3 -3
- package/Source/Scene/Model/ModelSceneGraph.js +11 -11
- package/Source/Scene/Model/ModelSilhouettePipelineStage.js +1 -1
- package/Source/Scene/Model/ModelSkin.js +1 -1
- package/Source/Scene/Model/ModelStatistics.js +7 -7
- package/Source/Scene/Model/ModelType.js +8 -8
- package/Source/Scene/Model/ModelUtility.js +26 -26
- package/Source/Scene/Model/NodeRenderResources.js +7 -7
- package/Source/Scene/Model/PntsLoader.js +32 -37
- package/Source/Scene/Model/PointCloudStylingPipelineStage.js +1 -1
- package/Source/Scene/Model/PrimitiveOutlineGenerator.js +28 -28
- package/Source/Scene/Model/PrimitiveRenderResources.js +10 -10
- package/Source/Scene/Model/StyleCommandsNeeded.js +1 -1
- package/Source/Scene/Model/TextureManager.js +3 -3
- package/Source/Scene/Model/TextureUniform.js +6 -6
- package/Source/Scene/Model/UniformType.js +17 -17
- package/Source/Scene/Model/VaryingType.js +8 -8
- package/Source/Scene/ModelAnimationLoop.js +4 -4
- package/Source/Scene/ModelComponents.js +61 -61
- package/Source/Scene/Moon.js +8 -8
- package/Source/Scene/Multiple3DTileContent.js +146 -127
- package/Source/Scene/NeverTileDiscardPolicy.js +2 -2
- package/Source/Scene/OIT.js +9 -9
- package/Source/Scene/OctahedralProjectedCubeMap.js +28 -39
- package/Source/Scene/OpenStreetMapImageryProvider.js +6 -6
- package/Source/Scene/OrderedGroundPrimitiveCollection.js +9 -9
- package/Source/Scene/Particle.js +13 -13
- package/Source/Scene/ParticleBurst.js +8 -8
- package/Source/Scene/ParticleSystem.js +41 -36
- package/Source/Scene/PerInstanceColorAppearance.js +18 -18
- package/Source/Scene/PerformanceDisplay.js +2 -2
- package/Source/Scene/PntsParser.js +1 -1
- package/Source/Scene/PointCloud.js +11 -19
- package/Source/Scene/PointCloudEyeDomeLighting.js +1 -1
- package/Source/Scene/PointCloudShading.js +20 -20
- package/Source/Scene/PointPrimitive.js +6 -6
- package/Source/Scene/PointPrimitiveCollection.js +11 -11
- package/Source/Scene/Polyline.js +9 -9
- package/Source/Scene/PolylineCollection.js +11 -11
- package/Source/Scene/PolylineColorAppearance.js +13 -13
- package/Source/Scene/PolylineMaterialAppearance.js +13 -13
- package/Source/Scene/PostProcessStage.js +15 -15
- package/Source/Scene/PostProcessStageCollection.js +10 -10
- package/Source/Scene/PostProcessStageComposite.js +13 -13
- package/Source/Scene/PostProcessStageLibrary.js +8 -8
- package/Source/Scene/PostProcessStageSampleMode.js +3 -3
- package/Source/Scene/PostProcessStageTextureCache.js +4 -4
- package/Source/Scene/Primitive.js +50 -30
- package/Source/Scene/PrimitiveCollection.js +20 -20
- package/Source/Scene/PrimitiveLoadPlan.js +6 -6
- package/Source/Scene/PropertyAttribute.js +9 -9
- package/Source/Scene/PropertyAttributeProperty.js +6 -6
- package/Source/Scene/PropertyTable.js +34 -34
- package/Source/Scene/PropertyTexture.js +9 -9
- package/Source/Scene/PropertyTextureProperty.js +8 -8
- package/Source/Scene/QuadtreePrimitive.js +11 -9
- package/Source/Scene/QuadtreeTile.js +11 -11
- package/Source/Scene/QuadtreeTileLoadState.js +1 -1
- package/Source/Scene/QuadtreeTileProvider.js +10 -14
- package/Source/Scene/ResourceCache.js +85 -143
- package/Source/Scene/ResourceCacheKey.js +42 -42
- package/Source/Scene/ResourceCacheStatistics.js +26 -60
- package/Source/Scene/ResourceLoader.js +9 -21
- package/Source/Scene/ResourceLoaderState.js +16 -8
- package/Source/Scene/SDFSettings.js +4 -4
- package/Source/Scene/Scene.js +153 -88
- package/Source/Scene/SceneMode.js +6 -6
- package/Source/Scene/SceneTransitioner.js +1 -1
- package/Source/Scene/ScreenSpaceCameraController.js +41 -23
- package/Source/Scene/ShadowMap.js +22 -22
- package/Source/Scene/ShadowMapShader.js +1 -1
- package/Source/Scene/ShadowMode.js +5 -5
- package/Source/Scene/ShadowVolumeAppearance.js +17 -17
- package/Source/Scene/SingleTileImageryProvider.js +403 -230
- package/Source/Scene/SkyAtmosphere.js +10 -10
- package/Source/Scene/SkyBox.js +6 -6
- package/Source/Scene/SpatialNode.js +103 -87
- package/Source/Scene/SphereEmitter.js +2 -2
- package/Source/Scene/SplitDirection.js +4 -4
- package/Source/Scene/Splitter.js +2 -2
- package/Source/Scene/StencilFunction.js +9 -9
- package/Source/Scene/StencilOperation.js +9 -9
- package/Source/Scene/StructuralMetadata.js +11 -11
- package/Source/Scene/StyleExpression.js +8 -8
- package/Source/Scene/Sun.js +3 -3
- package/Source/Scene/SunLight.js +3 -3
- package/Source/Scene/SupportedImageFormats.js +3 -3
- package/Source/Scene/Terrain.js +196 -0
- package/Source/Scene/TextureAtlas.js +16 -16
- package/Source/Scene/TileBoundingRegion.js +6 -6
- package/Source/Scene/TileBoundingS2Cell.js +6 -6
- package/Source/Scene/TileBoundingSphere.js +5 -5
- package/Source/Scene/TileBoundingVolume.js +2 -2
- package/Source/Scene/TileCoordinatesImageryProvider.js +289 -126
- package/Source/Scene/TileDiscardPolicy.js +2 -2
- package/Source/Scene/TileImagery.js +3 -3
- package/Source/Scene/TileMapServiceImageryProvider.js +185 -93
- package/Source/Scene/TileMetadata.js +16 -16
- package/Source/Scene/TileOrientedBoundingBox.js +2 -2
- package/Source/Scene/TileReplacementQueue.js +1 -1
- package/Source/Scene/TileSelectionResult.js +1 -1
- package/Source/Scene/Tileset3DTileContent.js +47 -5
- package/Source/Scene/TilesetMetadata.js +15 -15
- package/Source/Scene/TimeDynamicImagery.js +8 -8
- package/Source/Scene/TimeDynamicPointCloud.js +24 -11
- package/Source/Scene/Tonemapper.js +5 -5
- package/Source/Scene/TranslucentTileClassification.js +1 -1
- package/Source/Scene/TweenCollection.js +31 -31
- package/Source/Scene/UrlTemplateImageryProvider.js +380 -252
- package/Source/Scene/Vector3DTileBatch.js +7 -7
- package/Source/Scene/Vector3DTileClampedPolylines.js +105 -93
- package/Source/Scene/Vector3DTileContent.js +47 -22
- package/Source/Scene/Vector3DTileGeometry.js +65 -60
- package/Source/Scene/Vector3DTilePoints.js +79 -75
- package/Source/Scene/Vector3DTilePolygons.js +128 -127
- package/Source/Scene/Vector3DTilePolylines.js +95 -91
- package/Source/Scene/Vector3DTilePrimitive.js +8 -9
- package/Source/Scene/VertexAttributeSemantic.js +15 -15
- package/Source/Scene/VerticalOrigin.js +5 -5
- package/Source/Scene/ViewportQuad.js +2 -2
- package/Source/Scene/VoxelBoxShape.js +27 -118
- package/Source/Scene/VoxelContent.js +63 -65
- package/Source/Scene/VoxelCylinderShape.js +21 -21
- package/Source/Scene/VoxelEllipsoidShape.js +13 -13
- package/Source/Scene/VoxelPrimitive.js +83 -135
- package/Source/Scene/VoxelProvider.js +15 -15
- package/Source/Scene/VoxelRenderResources.js +6 -3
- package/Source/Scene/VoxelShape.js +9 -9
- package/Source/Scene/VoxelShapeType.js +4 -4
- package/Source/Scene/VoxelTraversal.js +86 -144
- package/Source/Scene/WebMapServiceImageryProvider.js +313 -152
- package/Source/Scene/WebMapTileServiceImageryProvider.js +305 -142
- package/Source/Scene/buildVoxelDrawCommands.js +1 -0
- package/Source/Scene/computeFlyToLocationForRectangle.js +33 -37
- package/Source/Scene/createBillboardPointCallback.js +5 -5
- package/Source/Scene/createElevationBandMaterial.js +5 -5
- package/Source/Scene/createOsmBuildings.js +9 -3
- package/Source/Scene/createOsmBuildingsAsync.js +82 -0
- package/Source/Scene/createTangentSpaceDebugPrimitive.js +2 -2
- package/Source/Scene/createWorldImagery.js +15 -6
- package/Source/Scene/createWorldImageryAsync.js +39 -0
- package/Source/Scene/findContentMetadata.js +1 -1
- package/Source/Scene/findGroupMetadata.js +1 -1
- package/Source/Scene/findTileMetadata.js +1 -1
- package/Source/Scene/getClipAndStyleCode.js +4 -4
- package/Source/Scene/getClippingFunction.js +1 -1
- package/Source/Scene/hasExtension.js +3 -3
- package/Source/Scene/parseBatchTable.js +14 -14
- package/Source/Scene/parseBoundingVolumeSemantics.js +7 -7
- package/Source/Scene/parseFeatureMetadataLegacy.js +4 -4
- package/Source/Scene/parseStructuralMetadata.js +4 -4
- package/Source/Scene/preprocess3DTileContent.js +2 -2
- package/Source/Scene/processVoxelProperties.js +8 -7
- package/Source/Shaders/Voxels/IntersectBox.glsl +52 -58
- package/Source/Shaders/Voxels/IntersectBox.js +52 -58
- package/Source/Shaders/Voxels/IntersectClippingPlanes.glsl +38 -30
- package/Source/Shaders/Voxels/IntersectClippingPlanes.js +38 -30
- package/Source/Shaders/Voxels/IntersectDepth.glsl +1 -1
- package/Source/Shaders/Voxels/IntersectDepth.js +1 -1
- package/Source/Shaders/Voxels/Intersection.glsl +10 -12
- package/Source/Shaders/Voxels/Intersection.js +10 -12
- package/Source/Shaders/Voxels/IntersectionUtils.glsl +52 -59
- package/Source/Shaders/Voxels/IntersectionUtils.js +52 -59
- package/Source/Shaders/Voxels/Octree.glsl +72 -73
- package/Source/Shaders/Voxels/Octree.js +72 -73
- package/Source/Shaders/Voxels/VoxelFS.glsl +42 -22
- package/Source/Shaders/Voxels/VoxelFS.js +42 -22
- package/Source/Shaders/Voxels/convertUvToBox.glsl +13 -5
- package/Source/Shaders/Voxels/convertUvToBox.js +13 -5
- package/Source/ThirdParty/Workers/draco_decoder_nodejs.js +91 -91
- package/Source/ThirdParty/draco_decoder.wasm +0 -0
- package/Source/Widget/CesiumWidget.js +78 -50
- package/Source/Workers/cesiumWorkerBootstrapper.js +18 -18
- package/Source/WorkersES6/createTaskProcessorWorker.js +3 -3
- package/index.d.ts +2172 -1432
- package/index.js +8 -3
- package/package.json +1 -1
- package/Source/Core/cancelAnimationFrame.js +0 -53
- package/Source/Core/requestAnimationFrame.js +0 -83
- /package/Build/Workers/{GeometryOffsetAttribute-04332ce7.js → GeometryOffsetAttribute-9ad0019c.js} +0 -0
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
import AttributeCompression from "./AttributeCompression.js";
|
|
2
2
|
import BoundingSphere from "./BoundingSphere.js";
|
|
3
3
|
import Cartesian3 from "./Cartesian3.js";
|
|
4
|
+
import Check from "./Check.js";
|
|
4
5
|
import Credit from "./Credit.js";
|
|
5
6
|
import defaultValue from "./defaultValue.js";
|
|
6
7
|
import defined from "./defined.js";
|
|
7
|
-
import
|
|
8
|
+
import deprecationWarning from "./deprecationWarning.js";
|
|
8
9
|
import Event from "./Event.js";
|
|
9
10
|
import GeographicTilingScheme from "./GeographicTilingScheme.js";
|
|
10
11
|
import WebMercatorTilingScheme from "./WebMercatorTilingScheme.js";
|
|
11
12
|
import getJsonFromTypedArray from "./getJsonFromTypedArray.js";
|
|
12
13
|
import HeightmapTerrainData from "./HeightmapTerrainData.js";
|
|
13
14
|
import IndexDatatype from "./IndexDatatype.js";
|
|
15
|
+
import IonResource from "./IonResource.js";
|
|
14
16
|
import OrientedBoundingBox from "./OrientedBoundingBox.js";
|
|
15
17
|
import QuantizedMeshTerrainData from "./QuantizedMeshTerrainData.js";
|
|
16
18
|
import Request from "./Request.js";
|
|
@@ -37,6 +39,415 @@ function LayerInformation(layer) {
|
|
|
37
39
|
}
|
|
38
40
|
|
|
39
41
|
/**
|
|
42
|
+
* @typedef {Object} CesiumTerrainProvider.ConstructorOptions
|
|
43
|
+
*
|
|
44
|
+
* Initialization options for the CesiumTerrainProvider constructor
|
|
45
|
+
*
|
|
46
|
+
* @property {boolean} [requestVertexNormals=false] Flag that indicates if the client should request additional lighting information from the server, in the form of per vertex normals if available.
|
|
47
|
+
* @property {boolean} [requestWaterMask=false] Flag that indicates if the client should request per tile water masks from the server, if available.
|
|
48
|
+
* @property {boolean} [requestMetadata=true] Flag that indicates if the client should request per tile metadata from the server, if available.
|
|
49
|
+
* @property {Ellipsoid} [ellipsoid] The ellipsoid. If not specified, the WGS84 ellipsoid is used.
|
|
50
|
+
* @property {Credit|string} [credit] A credit for the data source, which is displayed on the canvas.
|
|
51
|
+
* @property {Resource|string|Promise<Resource>|Promise<string>} [url] The URL of the Cesium terrain server. Deprecated.
|
|
52
|
+
*/
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Used to track creation details while fetching initial metadata
|
|
56
|
+
*
|
|
57
|
+
* @constructor
|
|
58
|
+
* @private
|
|
59
|
+
*
|
|
60
|
+
* @param {CesiumTerrainProvider.ConstructorOptions} options An object describing initialization options
|
|
61
|
+
*/
|
|
62
|
+
function TerrainProviderBuilder(options) {
|
|
63
|
+
this.requestVertexNormals = defaultValue(options.requestVertexNormals, false);
|
|
64
|
+
this.requestWaterMask = defaultValue(options.requestWaterMask, false);
|
|
65
|
+
this.requestMetadata = defaultValue(options.requestMetadata, true);
|
|
66
|
+
this.ellipsoid = options.ellipsoid;
|
|
67
|
+
|
|
68
|
+
this.heightmapWidth = 65;
|
|
69
|
+
this.heightmapStructure = undefined;
|
|
70
|
+
this.hasWaterMask = false;
|
|
71
|
+
this.hasMetadata = false;
|
|
72
|
+
this.hasVertexNormals = false;
|
|
73
|
+
this.scheme = undefined;
|
|
74
|
+
|
|
75
|
+
this.lastResource = undefined;
|
|
76
|
+
this.layerJsonResource = undefined;
|
|
77
|
+
this.previousError = undefined;
|
|
78
|
+
this.availability = undefined;
|
|
79
|
+
this.tilingScheme = undefined;
|
|
80
|
+
this.levelZeroMaximumGeometricError = undefined;
|
|
81
|
+
this.heightmapStructure = undefined;
|
|
82
|
+
this.layers = [];
|
|
83
|
+
this.attribution = "";
|
|
84
|
+
this.overallAvailability = [];
|
|
85
|
+
this.overallMaxZoom = 0;
|
|
86
|
+
this.tileCredits = [];
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Complete CesiumTerrainProvider creation based on builder values.
|
|
91
|
+
*
|
|
92
|
+
* @private
|
|
93
|
+
*
|
|
94
|
+
* @param {CesiumTerrainProvider} provider
|
|
95
|
+
*/
|
|
96
|
+
TerrainProviderBuilder.prototype.build = function (provider) {
|
|
97
|
+
provider._heightmapWidth = this.heightmapWidth;
|
|
98
|
+
provider._scheme = this.scheme;
|
|
99
|
+
|
|
100
|
+
// ion resources have a credits property we can use for additional attribution.
|
|
101
|
+
const credits = defined(this.lastResource.credits)
|
|
102
|
+
? this.lastResource.credits
|
|
103
|
+
: [];
|
|
104
|
+
provider._tileCredits = credits.concat(this.tileCredits);
|
|
105
|
+
provider._availability = this.availability;
|
|
106
|
+
provider._tilingScheme = this.tilingScheme;
|
|
107
|
+
provider._requestWaterMask = this.requestWaterMask;
|
|
108
|
+
provider._levelZeroMaximumGeometricError = this.levelZeroMaximumGeometricError;
|
|
109
|
+
provider._heightmapStructure = this.heightmapStructure;
|
|
110
|
+
provider._layers = this.layers;
|
|
111
|
+
|
|
112
|
+
provider._hasWaterMask = this.hasWaterMask;
|
|
113
|
+
provider._hasVertexNormals = this.hasVertexNormals;
|
|
114
|
+
provider._hasMetadata = this.hasMetadata;
|
|
115
|
+
|
|
116
|
+
provider._ready = true;
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
async function parseMetadataSuccess(terrainProviderBuilder, data, provider) {
|
|
120
|
+
if (!data.format) {
|
|
121
|
+
const message = "The tile format is not specified in the layer.json file.";
|
|
122
|
+
terrainProviderBuilder.previousError = TileProviderError.reportError(
|
|
123
|
+
terrainProviderBuilder.previousError,
|
|
124
|
+
provider,
|
|
125
|
+
defined(provider) ? provider._errorEvent : undefined,
|
|
126
|
+
message
|
|
127
|
+
);
|
|
128
|
+
|
|
129
|
+
throw new RuntimeError(message);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
if (!data.tiles || data.tiles.length === 0) {
|
|
133
|
+
const message =
|
|
134
|
+
"The layer.json file does not specify any tile URL templates.";
|
|
135
|
+
terrainProviderBuilder.previousError = TileProviderError.reportError(
|
|
136
|
+
terrainProviderBuilder.previousError,
|
|
137
|
+
provider,
|
|
138
|
+
defined(provider) ? provider._errorEvent : undefined,
|
|
139
|
+
message
|
|
140
|
+
);
|
|
141
|
+
|
|
142
|
+
throw new RuntimeError(message);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
let hasVertexNormals = false;
|
|
146
|
+
let hasWaterMask = false;
|
|
147
|
+
let hasMetadata = false;
|
|
148
|
+
let littleEndianExtensionSize = true;
|
|
149
|
+
let isHeightmap = false;
|
|
150
|
+
if (data.format === "heightmap-1.0") {
|
|
151
|
+
isHeightmap = true;
|
|
152
|
+
if (!defined(terrainProviderBuilder.heightmapStructure)) {
|
|
153
|
+
terrainProviderBuilder.heightmapStructure = {
|
|
154
|
+
heightScale: 1.0 / 5.0,
|
|
155
|
+
heightOffset: -1000.0,
|
|
156
|
+
elementsPerHeight: 1,
|
|
157
|
+
stride: 1,
|
|
158
|
+
elementMultiplier: 256.0,
|
|
159
|
+
isBigEndian: false,
|
|
160
|
+
lowestEncodedHeight: 0,
|
|
161
|
+
highestEncodedHeight: 256 * 256 - 1,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
hasWaterMask = true;
|
|
165
|
+
terrainProviderBuilder.requestWaterMask = true;
|
|
166
|
+
} else if (data.format.indexOf("quantized-mesh-1.") !== 0) {
|
|
167
|
+
const message = `The tile format "${data.format}" is invalid or not supported.`;
|
|
168
|
+
terrainProviderBuilder.previousError = TileProviderError.reportError(
|
|
169
|
+
terrainProviderBuilder.previousError,
|
|
170
|
+
provider,
|
|
171
|
+
defined(provider) ? provider._errorEvent : undefined,
|
|
172
|
+
message
|
|
173
|
+
);
|
|
174
|
+
|
|
175
|
+
throw new RuntimeError(message);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
const tileUrlTemplates = data.tiles;
|
|
179
|
+
|
|
180
|
+
const maxZoom = data.maxzoom;
|
|
181
|
+
terrainProviderBuilder.overallMaxZoom = Math.max(
|
|
182
|
+
terrainProviderBuilder.overallMaxZoom,
|
|
183
|
+
maxZoom
|
|
184
|
+
);
|
|
185
|
+
|
|
186
|
+
// Keeps track of which of the availability containing tiles have been loaded
|
|
187
|
+
if (!data.projection || data.projection === "EPSG:4326") {
|
|
188
|
+
terrainProviderBuilder.tilingScheme = new GeographicTilingScheme({
|
|
189
|
+
numberOfLevelZeroTilesX: 2,
|
|
190
|
+
numberOfLevelZeroTilesY: 1,
|
|
191
|
+
ellipsoid: terrainProviderBuilder.ellipsoid,
|
|
192
|
+
});
|
|
193
|
+
} else if (data.projection === "EPSG:3857") {
|
|
194
|
+
terrainProviderBuilder.tilingScheme = new WebMercatorTilingScheme({
|
|
195
|
+
numberOfLevelZeroTilesX: 1,
|
|
196
|
+
numberOfLevelZeroTilesY: 1,
|
|
197
|
+
ellipsoid: terrainProviderBuilder.ellipsoid,
|
|
198
|
+
});
|
|
199
|
+
} else {
|
|
200
|
+
const message = `The projection "${data.projection}" is invalid or not supported.`;
|
|
201
|
+
terrainProviderBuilder.previousError = TileProviderError.reportError(
|
|
202
|
+
terrainProviderBuilder.previousError,
|
|
203
|
+
provider,
|
|
204
|
+
defined(provider) ? provider._errorEvent : undefined,
|
|
205
|
+
message
|
|
206
|
+
);
|
|
207
|
+
|
|
208
|
+
throw new RuntimeError(message);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
terrainProviderBuilder.levelZeroMaximumGeometricError = TerrainProvider.getEstimatedLevelZeroGeometricErrorForAHeightmap(
|
|
212
|
+
terrainProviderBuilder.tilingScheme.ellipsoid,
|
|
213
|
+
terrainProviderBuilder.heightmapWidth,
|
|
214
|
+
terrainProviderBuilder.tilingScheme.getNumberOfXTilesAtLevel(0)
|
|
215
|
+
);
|
|
216
|
+
if (!data.scheme || data.scheme === "tms" || data.scheme === "slippyMap") {
|
|
217
|
+
terrainProviderBuilder.scheme = data.scheme;
|
|
218
|
+
} else {
|
|
219
|
+
const message = `The scheme "${data.scheme}" is invalid or not supported.`;
|
|
220
|
+
terrainProviderBuilder.previousError = TileProviderError.reportError(
|
|
221
|
+
terrainProviderBuilder.previousError,
|
|
222
|
+
provider,
|
|
223
|
+
defined(provider) ? provider._errorEvent : undefined,
|
|
224
|
+
message
|
|
225
|
+
);
|
|
226
|
+
|
|
227
|
+
throw new RuntimeError(message);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
let availabilityTilesLoaded;
|
|
231
|
+
|
|
232
|
+
// The vertex normals defined in the 'octvertexnormals' extension is identical to the original
|
|
233
|
+
// contents of the original 'vertexnormals' extension. 'vertexnormals' extension is now
|
|
234
|
+
// deprecated, as the extensionLength for this extension was incorrectly using big endian.
|
|
235
|
+
// We maintain backwards compatibility with the legacy 'vertexnormal' implementation
|
|
236
|
+
// by setting the _littleEndianExtensionSize to false. Always prefer 'octvertexnormals'
|
|
237
|
+
// over 'vertexnormals' if both extensions are supported by the server.
|
|
238
|
+
if (
|
|
239
|
+
defined(data.extensions) &&
|
|
240
|
+
data.extensions.indexOf("octvertexnormals") !== -1
|
|
241
|
+
) {
|
|
242
|
+
hasVertexNormals = true;
|
|
243
|
+
} else if (
|
|
244
|
+
defined(data.extensions) &&
|
|
245
|
+
data.extensions.indexOf("vertexnormals") !== -1
|
|
246
|
+
) {
|
|
247
|
+
hasVertexNormals = true;
|
|
248
|
+
littleEndianExtensionSize = false;
|
|
249
|
+
}
|
|
250
|
+
if (defined(data.extensions) && data.extensions.indexOf("watermask") !== -1) {
|
|
251
|
+
hasWaterMask = true;
|
|
252
|
+
}
|
|
253
|
+
if (defined(data.extensions) && data.extensions.indexOf("metadata") !== -1) {
|
|
254
|
+
hasMetadata = true;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
const availabilityLevels = data.metadataAvailability;
|
|
258
|
+
const availableTiles = data.available;
|
|
259
|
+
let availability;
|
|
260
|
+
if (defined(availableTiles) && !defined(availabilityLevels)) {
|
|
261
|
+
availability = new TileAvailability(
|
|
262
|
+
terrainProviderBuilder.tilingScheme,
|
|
263
|
+
availableTiles.length
|
|
264
|
+
);
|
|
265
|
+
for (let level = 0; level < availableTiles.length; ++level) {
|
|
266
|
+
const rangesAtLevel = availableTiles[level];
|
|
267
|
+
const yTiles = terrainProviderBuilder.tilingScheme.getNumberOfYTilesAtLevel(
|
|
268
|
+
level
|
|
269
|
+
);
|
|
270
|
+
if (!defined(terrainProviderBuilder.overallAvailability[level])) {
|
|
271
|
+
terrainProviderBuilder.overallAvailability[level] = [];
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
for (
|
|
275
|
+
let rangeIndex = 0;
|
|
276
|
+
rangeIndex < rangesAtLevel.length;
|
|
277
|
+
++rangeIndex
|
|
278
|
+
) {
|
|
279
|
+
const range = rangesAtLevel[rangeIndex];
|
|
280
|
+
const yStart = yTiles - range.endY - 1;
|
|
281
|
+
const yEnd = yTiles - range.startY - 1;
|
|
282
|
+
terrainProviderBuilder.overallAvailability[level].push([
|
|
283
|
+
range.startX,
|
|
284
|
+
yStart,
|
|
285
|
+
range.endX,
|
|
286
|
+
yEnd,
|
|
287
|
+
]);
|
|
288
|
+
availability.addAvailableTileRange(
|
|
289
|
+
level,
|
|
290
|
+
range.startX,
|
|
291
|
+
yStart,
|
|
292
|
+
range.endX,
|
|
293
|
+
yEnd
|
|
294
|
+
);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
} else if (defined(availabilityLevels)) {
|
|
298
|
+
availabilityTilesLoaded = new TileAvailability(
|
|
299
|
+
terrainProviderBuilder.tilingScheme,
|
|
300
|
+
maxZoom
|
|
301
|
+
);
|
|
302
|
+
availability = new TileAvailability(
|
|
303
|
+
terrainProviderBuilder.tilingScheme,
|
|
304
|
+
maxZoom
|
|
305
|
+
);
|
|
306
|
+
terrainProviderBuilder.overallAvailability[0] = [[0, 0, 1, 0]];
|
|
307
|
+
availability.addAvailableTileRange(0, 0, 0, 1, 0);
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
terrainProviderBuilder.hasWaterMask =
|
|
311
|
+
terrainProviderBuilder.hasWaterMask || hasWaterMask;
|
|
312
|
+
terrainProviderBuilder.hasVertexNormals =
|
|
313
|
+
terrainProviderBuilder.hasVertexNormals || hasVertexNormals;
|
|
314
|
+
terrainProviderBuilder.hasMetadata =
|
|
315
|
+
terrainProviderBuilder.hasMetadata || hasMetadata;
|
|
316
|
+
|
|
317
|
+
if (defined(data.attribution)) {
|
|
318
|
+
if (terrainProviderBuilder.attribution.length > 0) {
|
|
319
|
+
terrainProviderBuilder.attribution += " ";
|
|
320
|
+
}
|
|
321
|
+
terrainProviderBuilder.attribution += data.attribution;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
terrainProviderBuilder.layers.push(
|
|
325
|
+
new LayerInformation({
|
|
326
|
+
resource: terrainProviderBuilder.lastResource,
|
|
327
|
+
version: data.version,
|
|
328
|
+
isHeightmap: isHeightmap,
|
|
329
|
+
tileUrlTemplates: tileUrlTemplates,
|
|
330
|
+
availability: availability,
|
|
331
|
+
hasVertexNormals: hasVertexNormals,
|
|
332
|
+
hasWaterMask: hasWaterMask,
|
|
333
|
+
hasMetadata: hasMetadata,
|
|
334
|
+
availabilityLevels: availabilityLevels,
|
|
335
|
+
availabilityTilesLoaded: availabilityTilesLoaded,
|
|
336
|
+
littleEndianExtensionSize: littleEndianExtensionSize,
|
|
337
|
+
})
|
|
338
|
+
);
|
|
339
|
+
|
|
340
|
+
const parentUrl = data.parentUrl;
|
|
341
|
+
if (defined(parentUrl)) {
|
|
342
|
+
if (!defined(availability)) {
|
|
343
|
+
console.log(
|
|
344
|
+
"A layer.json can't have a parentUrl if it does't have an available array."
|
|
345
|
+
);
|
|
346
|
+
return true;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
terrainProviderBuilder.lastResource = terrainProviderBuilder.lastResource.getDerivedResource(
|
|
350
|
+
{
|
|
351
|
+
url: parentUrl,
|
|
352
|
+
}
|
|
353
|
+
);
|
|
354
|
+
terrainProviderBuilder.lastResource.appendForwardSlash(); // Terrain always expects a directory
|
|
355
|
+
terrainProviderBuilder.layerJsonResource = terrainProviderBuilder.lastResource.getDerivedResource(
|
|
356
|
+
{
|
|
357
|
+
url: "layer.json",
|
|
358
|
+
}
|
|
359
|
+
);
|
|
360
|
+
await requestLayerJson(terrainProviderBuilder);
|
|
361
|
+
return true;
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
return true;
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
function parseMetadataFailure(terrainProviderBuilder, error, provider) {
|
|
368
|
+
let message = `An error occurred while accessing ${terrainProviderBuilder.layerJsonResource.url}.`;
|
|
369
|
+
if (defined(error)) {
|
|
370
|
+
message += `\n${error.message}`;
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
terrainProviderBuilder.previousError = TileProviderError.reportError(
|
|
374
|
+
terrainProviderBuilder.previousError,
|
|
375
|
+
provider,
|
|
376
|
+
defined(provider) ? provider._errorEvent : undefined,
|
|
377
|
+
message
|
|
378
|
+
);
|
|
379
|
+
|
|
380
|
+
// If we can retry, do so. Otherwise throw the error.
|
|
381
|
+
if (terrainProviderBuilder.previousError.retry) {
|
|
382
|
+
return requestLayerJson(terrainProviderBuilder, provider);
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
throw new RuntimeError(message);
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
async function metadataSuccess(terrainProviderBuilder, data, provider) {
|
|
389
|
+
await parseMetadataSuccess(terrainProviderBuilder, data, provider);
|
|
390
|
+
|
|
391
|
+
const length = terrainProviderBuilder.overallAvailability.length;
|
|
392
|
+
if (length > 0) {
|
|
393
|
+
const availability = (terrainProviderBuilder.availability = new TileAvailability(
|
|
394
|
+
terrainProviderBuilder.tilingScheme,
|
|
395
|
+
terrainProviderBuilder.overallMaxZoom
|
|
396
|
+
));
|
|
397
|
+
for (let level = 0; level < length; ++level) {
|
|
398
|
+
const levelRanges = terrainProviderBuilder.overallAvailability[level];
|
|
399
|
+
for (let i = 0; i < levelRanges.length; ++i) {
|
|
400
|
+
const range = levelRanges[i];
|
|
401
|
+
availability.addAvailableTileRange(
|
|
402
|
+
level,
|
|
403
|
+
range[0],
|
|
404
|
+
range[1],
|
|
405
|
+
range[2],
|
|
406
|
+
range[3]
|
|
407
|
+
);
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
if (terrainProviderBuilder.attribution.length > 0) {
|
|
413
|
+
const layerJsonCredit = new Credit(terrainProviderBuilder.attribution);
|
|
414
|
+
terrainProviderBuilder.tileCredits.push(layerJsonCredit);
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
return true;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
async function requestLayerJson(terrainProviderBuilder, provider) {
|
|
421
|
+
try {
|
|
422
|
+
const data = await terrainProviderBuilder.layerJsonResource.fetchJson();
|
|
423
|
+
return metadataSuccess(terrainProviderBuilder, data, provider);
|
|
424
|
+
} catch (error) {
|
|
425
|
+
// If the metadata is not found, assume this is a pre-metadata heightmap tileset.
|
|
426
|
+
if (defined(error) && error.statusCode === 404) {
|
|
427
|
+
await parseMetadataSuccess(
|
|
428
|
+
terrainProviderBuilder,
|
|
429
|
+
{
|
|
430
|
+
tilejson: "2.1.0",
|
|
431
|
+
format: "heightmap-1.0",
|
|
432
|
+
version: "1.0.0",
|
|
433
|
+
scheme: "tms",
|
|
434
|
+
tiles: ["{z}/{x}/{y}.terrain?v={version}"],
|
|
435
|
+
},
|
|
436
|
+
provider
|
|
437
|
+
);
|
|
438
|
+
|
|
439
|
+
return true;
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
return parseMetadataFailure(terrainProviderBuilder, error, provider);
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
/**
|
|
447
|
+
* <div class="notice">
|
|
448
|
+
* To construct a CesiumTerrainProvider, call {@link CesiumTerrainProvider.fromIonAssetId} or {@link CesiumTerrainProvider.fromUrl}. Do not call the constructor directly.
|
|
449
|
+
* </div>
|
|
450
|
+
*
|
|
40
451
|
* A {@link TerrainProvider} that accesses terrain data in a Cesium terrain format.
|
|
41
452
|
* Terrain formats can be one of the following:
|
|
42
453
|
* <ul>
|
|
@@ -47,43 +458,39 @@ function LayerInformation(layer) {
|
|
|
47
458
|
* @alias CesiumTerrainProvider
|
|
48
459
|
* @constructor
|
|
49
460
|
*
|
|
50
|
-
* @param {
|
|
51
|
-
* @param {Resource|String|Promise<Resource>|Promise<String>} options.url The URL of the Cesium terrain server.
|
|
52
|
-
* @param {Boolean} [options.requestVertexNormals=false] Flag that indicates if the client should request additional lighting information from the server, in the form of per vertex normals if available.
|
|
53
|
-
* @param {Boolean} [options.requestWaterMask=false] Flag that indicates if the client should request per tile water masks from the server, if available.
|
|
54
|
-
* @param {Boolean} [options.requestMetadata=true] Flag that indicates if the client should request per tile metadata from the server, if available.
|
|
55
|
-
* @param {Ellipsoid} [options.ellipsoid] The ellipsoid. If not specified, the WGS84 ellipsoid is used.
|
|
56
|
-
* @param {Credit|String} [options.credit] A credit for the data source, which is displayed on the canvas.
|
|
57
|
-
*
|
|
461
|
+
* @param {CesiumTerrainProvider.ConstructorOptions} [options] An object describing initialization options
|
|
58
462
|
*
|
|
59
463
|
* @example
|
|
60
464
|
* // Create Arctic DEM terrain with normals.
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
465
|
+
* try {
|
|
466
|
+
* const viewer = new Cesium.Viewer("cesiumContainer", {
|
|
467
|
+
* terrainProvider: await Cesium.CesiumTerrainProvider.fromIonAssetId(3956, {
|
|
468
|
+
* requestVertexNormals: true
|
|
65
469
|
* })
|
|
66
|
-
*
|
|
470
|
+
* });
|
|
471
|
+
* } catch (error) {
|
|
472
|
+
* console.log(error);
|
|
473
|
+
* }
|
|
67
474
|
*
|
|
68
475
|
* @see createWorldTerrain
|
|
476
|
+
* @see CesiumTerrainProvider.fromUrl
|
|
477
|
+
* @see CesiumTerrainProvider.fromIonAssetId
|
|
69
478
|
* @see TerrainProvider
|
|
70
479
|
*/
|
|
71
480
|
function CesiumTerrainProvider(options) {
|
|
72
|
-
|
|
73
|
-
if (!defined(options) || !defined(options.url)) {
|
|
74
|
-
throw new DeveloperError("options.url is required.");
|
|
75
|
-
}
|
|
76
|
-
//>>includeEnd('debug');
|
|
481
|
+
options = defaultValue(options, defaultValue.EMPTY_OBJECT);
|
|
77
482
|
|
|
78
|
-
this._heightmapWidth =
|
|
483
|
+
this._heightmapWidth = undefined;
|
|
79
484
|
this._heightmapStructure = undefined;
|
|
80
485
|
this._hasWaterMask = false;
|
|
81
486
|
this._hasVertexNormals = false;
|
|
487
|
+
this._hasMetadata = false;
|
|
488
|
+
this._scheme = undefined;
|
|
82
489
|
this._ellipsoid = options.ellipsoid;
|
|
83
490
|
|
|
84
491
|
/**
|
|
85
492
|
* Boolean flag that indicates if the client should request vertex normals from the server.
|
|
86
|
-
* @type {
|
|
493
|
+
* @type {boolean}
|
|
87
494
|
* @default false
|
|
88
495
|
* @private
|
|
89
496
|
*/
|
|
@@ -94,7 +501,7 @@ function CesiumTerrainProvider(options) {
|
|
|
94
501
|
|
|
95
502
|
/**
|
|
96
503
|
* Boolean flag that indicates if the client should request tile watermasks from the server.
|
|
97
|
-
* @type {
|
|
504
|
+
* @type {boolean}
|
|
98
505
|
* @default false
|
|
99
506
|
* @private
|
|
100
507
|
*/
|
|
@@ -102,7 +509,7 @@ function CesiumTerrainProvider(options) {
|
|
|
102
509
|
|
|
103
510
|
/**
|
|
104
511
|
* Boolean flag that indicates if the client should request tile metadata from the server.
|
|
105
|
-
* @type {
|
|
512
|
+
* @type {boolean}
|
|
106
513
|
* @default true
|
|
107
514
|
* @private
|
|
108
515
|
*/
|
|
@@ -117,359 +524,48 @@ function CesiumTerrainProvider(options) {
|
|
|
117
524
|
this._credit = credit;
|
|
118
525
|
|
|
119
526
|
this._availability = undefined;
|
|
527
|
+
this._tilingScheme = undefined;
|
|
528
|
+
this._levelZeroMaximumGeometricError = undefined;
|
|
529
|
+
this._layers = undefined;
|
|
120
530
|
|
|
121
531
|
this._ready = false;
|
|
122
532
|
this._tileCredits = undefined;
|
|
123
533
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
const layers = (this._layers = []);
|
|
130
|
-
let attribution = "";
|
|
131
|
-
const overallAvailability = [];
|
|
132
|
-
let overallMaxZoom = 0;
|
|
133
|
-
this._readyPromise = Promise.resolve(options.url).then(function (url) {
|
|
134
|
-
const resource = Resource.createIfNeeded(url);
|
|
135
|
-
resource.appendForwardSlash();
|
|
136
|
-
lastResource = resource;
|
|
137
|
-
layerJsonResource = lastResource.getDerivedResource({
|
|
138
|
-
url: "layer.json",
|
|
139
|
-
});
|
|
140
|
-
|
|
141
|
-
// ion resources have a credits property we can use for additional attribution.
|
|
142
|
-
that._tileCredits = resource.credits;
|
|
143
|
-
|
|
144
|
-
return requestLayerJson();
|
|
145
|
-
});
|
|
146
|
-
|
|
147
|
-
function parseMetadataSuccess(data) {
|
|
148
|
-
let message;
|
|
149
|
-
|
|
150
|
-
if (!data.format) {
|
|
151
|
-
message = "The tile format is not specified in the layer.json file.";
|
|
152
|
-
metadataError = TileProviderError.reportError(
|
|
153
|
-
metadataError,
|
|
154
|
-
that,
|
|
155
|
-
that._errorEvent,
|
|
156
|
-
message
|
|
157
|
-
);
|
|
158
|
-
if (metadataError.retry) {
|
|
159
|
-
return requestLayerJson();
|
|
160
|
-
}
|
|
161
|
-
return Promise.reject(new RuntimeError(message));
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
if (!data.tiles || data.tiles.length === 0) {
|
|
165
|
-
message = "The layer.json file does not specify any tile URL templates.";
|
|
166
|
-
metadataError = TileProviderError.reportError(
|
|
167
|
-
metadataError,
|
|
168
|
-
that,
|
|
169
|
-
that._errorEvent,
|
|
170
|
-
message
|
|
171
|
-
);
|
|
172
|
-
if (metadataError.retry) {
|
|
173
|
-
return requestLayerJson();
|
|
174
|
-
}
|
|
175
|
-
return Promise.reject(new RuntimeError(message));
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
let hasVertexNormals = false;
|
|
179
|
-
let hasWaterMask = false;
|
|
180
|
-
let hasMetadata = false;
|
|
181
|
-
let littleEndianExtensionSize = true;
|
|
182
|
-
let isHeightmap = false;
|
|
183
|
-
if (data.format === "heightmap-1.0") {
|
|
184
|
-
isHeightmap = true;
|
|
185
|
-
if (!defined(that._heightmapStructure)) {
|
|
186
|
-
that._heightmapStructure = {
|
|
187
|
-
heightScale: 1.0 / 5.0,
|
|
188
|
-
heightOffset: -1000.0,
|
|
189
|
-
elementsPerHeight: 1,
|
|
190
|
-
stride: 1,
|
|
191
|
-
elementMultiplier: 256.0,
|
|
192
|
-
isBigEndian: false,
|
|
193
|
-
lowestEncodedHeight: 0,
|
|
194
|
-
highestEncodedHeight: 256 * 256 - 1,
|
|
195
|
-
};
|
|
196
|
-
}
|
|
197
|
-
hasWaterMask = true;
|
|
198
|
-
that._requestWaterMask = true;
|
|
199
|
-
} else if (data.format.indexOf("quantized-mesh-1.") !== 0) {
|
|
200
|
-
message = `The tile format "${data.format}" is invalid or not supported.`;
|
|
201
|
-
metadataError = TileProviderError.reportError(
|
|
202
|
-
metadataError,
|
|
203
|
-
that,
|
|
204
|
-
that._errorEvent,
|
|
205
|
-
message
|
|
206
|
-
);
|
|
207
|
-
if (metadataError.retry) {
|
|
208
|
-
return requestLayerJson();
|
|
209
|
-
}
|
|
210
|
-
return Promise.reject(new RuntimeError(message));
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
const tileUrlTemplates = data.tiles;
|
|
214
|
-
|
|
215
|
-
const maxZoom = data.maxzoom;
|
|
216
|
-
overallMaxZoom = Math.max(overallMaxZoom, maxZoom);
|
|
217
|
-
// Keeps track of which of the availablity containing tiles have been loaded
|
|
218
|
-
|
|
219
|
-
if (!data.projection || data.projection === "EPSG:4326") {
|
|
220
|
-
that._tilingScheme = new GeographicTilingScheme({
|
|
221
|
-
numberOfLevelZeroTilesX: 2,
|
|
222
|
-
numberOfLevelZeroTilesY: 1,
|
|
223
|
-
ellipsoid: that._ellipsoid,
|
|
224
|
-
});
|
|
225
|
-
} else if (data.projection === "EPSG:3857") {
|
|
226
|
-
that._tilingScheme = new WebMercatorTilingScheme({
|
|
227
|
-
numberOfLevelZeroTilesX: 1,
|
|
228
|
-
numberOfLevelZeroTilesY: 1,
|
|
229
|
-
ellipsoid: that._ellipsoid,
|
|
230
|
-
});
|
|
231
|
-
} else {
|
|
232
|
-
message = `The projection "${data.projection}" is invalid or not supported.`;
|
|
233
|
-
metadataError = TileProviderError.reportError(
|
|
234
|
-
metadataError,
|
|
235
|
-
that,
|
|
236
|
-
that._errorEvent,
|
|
237
|
-
message
|
|
238
|
-
);
|
|
239
|
-
if (metadataError.retry) {
|
|
240
|
-
return requestLayerJson();
|
|
241
|
-
}
|
|
242
|
-
return Promise.reject(new RuntimeError(message));
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
that._levelZeroMaximumGeometricError = TerrainProvider.getEstimatedLevelZeroGeometricErrorForAHeightmap(
|
|
246
|
-
that._tilingScheme.ellipsoid,
|
|
247
|
-
that._heightmapWidth,
|
|
248
|
-
that._tilingScheme.getNumberOfXTilesAtLevel(0)
|
|
534
|
+
this._readyPromise = Promise.resolve(true);
|
|
535
|
+
if (defined(options.url)) {
|
|
536
|
+
deprecationWarning(
|
|
537
|
+
"CesiumTerrainProvider options.url",
|
|
538
|
+
"options.url was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use CesiumTerrainProvider.fromIonAssetId or CesiumTerrainProvider.fromUrl instead."
|
|
249
539
|
);
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
message = `The scheme "${data.scheme}" is invalid or not supported.`;
|
|
254
|
-
metadataError = TileProviderError.reportError(
|
|
255
|
-
metadataError,
|
|
256
|
-
that,
|
|
257
|
-
that._errorEvent,
|
|
258
|
-
message
|
|
259
|
-
);
|
|
260
|
-
if (metadataError.retry) {
|
|
261
|
-
return requestLayerJson();
|
|
262
|
-
}
|
|
263
|
-
return Promise.reject(new RuntimeError(message));
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
let availabilityTilesLoaded;
|
|
267
|
-
|
|
268
|
-
// The vertex normals defined in the 'octvertexnormals' extension is identical to the original
|
|
269
|
-
// contents of the original 'vertexnormals' extension. 'vertexnormals' extension is now
|
|
270
|
-
// deprecated, as the extensionLength for this extension was incorrectly using big endian.
|
|
271
|
-
// We maintain backwards compatibility with the legacy 'vertexnormal' implementation
|
|
272
|
-
// by setting the _littleEndianExtensionSize to false. Always prefer 'octvertexnormals'
|
|
273
|
-
// over 'vertexnormals' if both extensions are supported by the server.
|
|
274
|
-
if (
|
|
275
|
-
defined(data.extensions) &&
|
|
276
|
-
data.extensions.indexOf("octvertexnormals") !== -1
|
|
277
|
-
) {
|
|
278
|
-
hasVertexNormals = true;
|
|
279
|
-
} else if (
|
|
280
|
-
defined(data.extensions) &&
|
|
281
|
-
data.extensions.indexOf("vertexnormals") !== -1
|
|
282
|
-
) {
|
|
283
|
-
hasVertexNormals = true;
|
|
284
|
-
littleEndianExtensionSize = false;
|
|
285
|
-
}
|
|
286
|
-
if (
|
|
287
|
-
defined(data.extensions) &&
|
|
288
|
-
data.extensions.indexOf("watermask") !== -1
|
|
289
|
-
) {
|
|
290
|
-
hasWaterMask = true;
|
|
291
|
-
}
|
|
292
|
-
if (
|
|
293
|
-
defined(data.extensions) &&
|
|
294
|
-
data.extensions.indexOf("metadata") !== -1
|
|
295
|
-
) {
|
|
296
|
-
hasMetadata = true;
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
const availabilityLevels = data.metadataAvailability;
|
|
300
|
-
const availableTiles = data.available;
|
|
301
|
-
let availability;
|
|
302
|
-
if (defined(availableTiles) && !defined(availabilityLevels)) {
|
|
303
|
-
availability = new TileAvailability(
|
|
304
|
-
that._tilingScheme,
|
|
305
|
-
availableTiles.length
|
|
306
|
-
);
|
|
307
|
-
for (let level = 0; level < availableTiles.length; ++level) {
|
|
308
|
-
const rangesAtLevel = availableTiles[level];
|
|
309
|
-
const yTiles = that._tilingScheme.getNumberOfYTilesAtLevel(level);
|
|
310
|
-
if (!defined(overallAvailability[level])) {
|
|
311
|
-
overallAvailability[level] = [];
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
for (
|
|
315
|
-
let rangeIndex = 0;
|
|
316
|
-
rangeIndex < rangesAtLevel.length;
|
|
317
|
-
++rangeIndex
|
|
318
|
-
) {
|
|
319
|
-
const range = rangesAtLevel[rangeIndex];
|
|
320
|
-
const yStart = yTiles - range.endY - 1;
|
|
321
|
-
const yEnd = yTiles - range.startY - 1;
|
|
322
|
-
overallAvailability[level].push([
|
|
323
|
-
range.startX,
|
|
324
|
-
yStart,
|
|
325
|
-
range.endX,
|
|
326
|
-
yEnd,
|
|
327
|
-
]);
|
|
328
|
-
availability.addAvailableTileRange(
|
|
329
|
-
level,
|
|
330
|
-
range.startX,
|
|
331
|
-
yStart,
|
|
332
|
-
range.endX,
|
|
333
|
-
yEnd
|
|
334
|
-
);
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
} else if (defined(availabilityLevels)) {
|
|
338
|
-
availabilityTilesLoaded = new TileAvailability(
|
|
339
|
-
that._tilingScheme,
|
|
340
|
-
maxZoom
|
|
341
|
-
);
|
|
342
|
-
availability = new TileAvailability(that._tilingScheme, maxZoom);
|
|
343
|
-
overallAvailability[0] = [[0, 0, 1, 0]];
|
|
344
|
-
availability.addAvailableTileRange(0, 0, 0, 1, 0);
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
that._hasWaterMask = that._hasWaterMask || hasWaterMask;
|
|
348
|
-
that._hasVertexNormals = that._hasVertexNormals || hasVertexNormals;
|
|
349
|
-
that._hasMetadata = that._hasMetadata || hasMetadata;
|
|
350
|
-
if (defined(data.attribution)) {
|
|
351
|
-
if (attribution.length > 0) {
|
|
352
|
-
attribution += " ";
|
|
353
|
-
}
|
|
354
|
-
attribution += data.attribution;
|
|
355
|
-
}
|
|
356
|
-
|
|
357
|
-
layers.push(
|
|
358
|
-
new LayerInformation({
|
|
359
|
-
resource: lastResource,
|
|
360
|
-
version: data.version,
|
|
361
|
-
isHeightmap: isHeightmap,
|
|
362
|
-
tileUrlTemplates: tileUrlTemplates,
|
|
363
|
-
availability: availability,
|
|
364
|
-
hasVertexNormals: hasVertexNormals,
|
|
365
|
-
hasWaterMask: hasWaterMask,
|
|
366
|
-
hasMetadata: hasMetadata,
|
|
367
|
-
availabilityLevels: availabilityLevels,
|
|
368
|
-
availabilityTilesLoaded: availabilityTilesLoaded,
|
|
369
|
-
littleEndianExtensionSize: littleEndianExtensionSize,
|
|
370
|
-
})
|
|
540
|
+
this._readyPromise = CesiumTerrainProvider._initializeReadyPromise(
|
|
541
|
+
options,
|
|
542
|
+
this
|
|
371
543
|
);
|
|
372
|
-
|
|
373
|
-
const parentUrl = data.parentUrl;
|
|
374
|
-
if (defined(parentUrl)) {
|
|
375
|
-
if (!defined(availability)) {
|
|
376
|
-
console.log(
|
|
377
|
-
"A layer.json can't have a parentUrl if it does't have an available array."
|
|
378
|
-
);
|
|
379
|
-
return Promise.resolve(true);
|
|
380
|
-
}
|
|
381
|
-
lastResource = lastResource.getDerivedResource({
|
|
382
|
-
url: parentUrl,
|
|
383
|
-
});
|
|
384
|
-
lastResource.appendForwardSlash(); // Terrain always expects a directory
|
|
385
|
-
layerJsonResource = lastResource.getDerivedResource({
|
|
386
|
-
url: "layer.json",
|
|
387
|
-
});
|
|
388
|
-
const parentMetadata = layerJsonResource.fetchJson();
|
|
389
|
-
return Promise.resolve(parentMetadata)
|
|
390
|
-
.then(parseMetadataSuccess)
|
|
391
|
-
.catch(parseMetadataFailure);
|
|
392
|
-
}
|
|
393
|
-
|
|
394
|
-
return Promise.resolve(true);
|
|
395
544
|
}
|
|
545
|
+
}
|
|
396
546
|
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
547
|
+
// Exposed for deprecation
|
|
548
|
+
CesiumTerrainProvider._initializeReadyPromise = async function (
|
|
549
|
+
options,
|
|
550
|
+
provider
|
|
551
|
+
) {
|
|
552
|
+
const url = await Promise.resolve(options.url);
|
|
553
|
+
|
|
554
|
+
const terrainProviderBuilder = new TerrainProviderBuilder(options);
|
|
555
|
+
const resource = Resource.createIfNeeded(url);
|
|
556
|
+
resource.appendForwardSlash();
|
|
557
|
+
terrainProviderBuilder.lastResource = resource;
|
|
558
|
+
terrainProviderBuilder.layerJsonResource = terrainProviderBuilder.lastResource.getDerivedResource(
|
|
559
|
+
{
|
|
560
|
+
url: "layer.json",
|
|
407
561
|
}
|
|
408
|
-
|
|
409
|
-
}
|
|
410
|
-
|
|
411
|
-
function metadataSuccess(data) {
|
|
412
|
-
return parseMetadataSuccess(data).then(function () {
|
|
413
|
-
if (defined(metadataError)) {
|
|
414
|
-
return;
|
|
415
|
-
}
|
|
416
|
-
|
|
417
|
-
const length = overallAvailability.length;
|
|
418
|
-
if (length > 0) {
|
|
419
|
-
const availability = (that._availability = new TileAvailability(
|
|
420
|
-
that._tilingScheme,
|
|
421
|
-
overallMaxZoom
|
|
422
|
-
));
|
|
423
|
-
for (let level = 0; level < length; ++level) {
|
|
424
|
-
const levelRanges = overallAvailability[level];
|
|
425
|
-
for (let i = 0; i < levelRanges.length; ++i) {
|
|
426
|
-
const range = levelRanges[i];
|
|
427
|
-
availability.addAvailableTileRange(
|
|
428
|
-
level,
|
|
429
|
-
range[0],
|
|
430
|
-
range[1],
|
|
431
|
-
range[2],
|
|
432
|
-
range[3]
|
|
433
|
-
);
|
|
434
|
-
}
|
|
435
|
-
}
|
|
436
|
-
}
|
|
437
|
-
|
|
438
|
-
if (attribution.length > 0) {
|
|
439
|
-
const layerJsonCredit = new Credit(attribution);
|
|
440
|
-
|
|
441
|
-
if (defined(that._tileCredits)) {
|
|
442
|
-
that._tileCredits.push(layerJsonCredit);
|
|
443
|
-
} else {
|
|
444
|
-
that._tileCredits = [layerJsonCredit];
|
|
445
|
-
}
|
|
446
|
-
}
|
|
562
|
+
);
|
|
447
563
|
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
});
|
|
451
|
-
}
|
|
564
|
+
await requestLayerJson(terrainProviderBuilder, provider);
|
|
565
|
+
terrainProviderBuilder.build(provider);
|
|
452
566
|
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
if (defined(data) && data.statusCode === 404) {
|
|
456
|
-
return metadataSuccess({
|
|
457
|
-
tilejson: "2.1.0",
|
|
458
|
-
format: "heightmap-1.0",
|
|
459
|
-
version: "1.0.0",
|
|
460
|
-
scheme: "tms",
|
|
461
|
-
tiles: ["{z}/{x}/{y}.terrain?v={version}"],
|
|
462
|
-
});
|
|
463
|
-
}
|
|
464
|
-
return parseMetadataFailure(data);
|
|
465
|
-
}
|
|
466
|
-
|
|
467
|
-
function requestLayerJson() {
|
|
468
|
-
return Promise.resolve(layerJsonResource.fetchJson())
|
|
469
|
-
.then(metadataSuccess)
|
|
470
|
-
.catch(metadataFailure);
|
|
471
|
-
}
|
|
472
|
-
}
|
|
567
|
+
return true;
|
|
568
|
+
};
|
|
473
569
|
|
|
474
570
|
/**
|
|
475
571
|
* When using the Quantized-Mesh format, a tile may be returned that includes additional extensions, such as PerVertexNormals, watermask, etc.
|
|
@@ -483,7 +579,7 @@ const QuantizedMeshExtensionIds = {
|
|
|
483
579
|
/**
|
|
484
580
|
* Oct-Encoded Per-Vertex Normals are included as an extension to the tile mesh
|
|
485
581
|
*
|
|
486
|
-
* @type {
|
|
582
|
+
* @type {number}
|
|
487
583
|
* @constant
|
|
488
584
|
* @default 1
|
|
489
585
|
*/
|
|
@@ -491,7 +587,7 @@ const QuantizedMeshExtensionIds = {
|
|
|
491
587
|
/**
|
|
492
588
|
* A watermask is included as an extension to the tile mesh
|
|
493
589
|
*
|
|
494
|
-
* @type {
|
|
590
|
+
* @type {number}
|
|
495
591
|
* @constant
|
|
496
592
|
* @default 2
|
|
497
593
|
*/
|
|
@@ -499,7 +595,7 @@ const QuantizedMeshExtensionIds = {
|
|
|
499
595
|
/**
|
|
500
596
|
* A json object contain metadata about the tile
|
|
501
597
|
*
|
|
502
|
-
* @type {
|
|
598
|
+
* @type {number}
|
|
503
599
|
* @constant
|
|
504
600
|
* @default 4
|
|
505
601
|
*/
|
|
@@ -783,21 +879,18 @@ function createQuantizedMeshTerrainData(provider, buffer, level, x, y, layer) {
|
|
|
783
879
|
}
|
|
784
880
|
|
|
785
881
|
/**
|
|
786
|
-
* Requests the geometry for a given tile.
|
|
787
|
-
* {@link CesiumTerrainProvider#ready} returns true. The result must include terrain data and
|
|
882
|
+
* Requests the geometry for a given tile. The result must include terrain data and
|
|
788
883
|
* may optionally include a water mask and an indication of which child tiles are available.
|
|
789
884
|
*
|
|
790
|
-
* @param {
|
|
791
|
-
* @param {
|
|
792
|
-
* @param {
|
|
885
|
+
* @param {number} x The X coordinate of the tile for which to request geometry.
|
|
886
|
+
* @param {number} y The Y coordinate of the tile for which to request geometry.
|
|
887
|
+
* @param {number} level The level of the tile for which to request geometry.
|
|
793
888
|
* @param {Request} [request] The request object. Intended for internal use only.
|
|
794
889
|
*
|
|
795
|
-
* @returns {Promise
|
|
890
|
+
* @returns {Promise<TerrainData>|undefined} A promise for the requested geometry. If this method
|
|
796
891
|
* returns undefined instead of a promise, it is an indication that too many requests are already
|
|
797
892
|
* pending and the request will be retried later.
|
|
798
893
|
*
|
|
799
|
-
* @exception {DeveloperError} This function must not be called before {@link CesiumTerrainProvider#ready}
|
|
800
|
-
* returns true.
|
|
801
894
|
*/
|
|
802
895
|
CesiumTerrainProvider.prototype.requestTileGeometry = function (
|
|
803
896
|
x,
|
|
@@ -805,14 +898,6 @@ CesiumTerrainProvider.prototype.requestTileGeometry = function (
|
|
|
805
898
|
level,
|
|
806
899
|
request
|
|
807
900
|
) {
|
|
808
|
-
//>>includeStart('debug', pragmas.debug)
|
|
809
|
-
if (!this._ready) {
|
|
810
|
-
throw new DeveloperError(
|
|
811
|
-
"requestTileGeometry must not be called before the terrain provider is ready."
|
|
812
|
-
);
|
|
813
|
-
}
|
|
814
|
-
//>>includeEnd('debug');
|
|
815
|
-
|
|
816
901
|
const layers = this._layers;
|
|
817
902
|
let layerToUse;
|
|
818
903
|
const layerCount = layers.length;
|
|
@@ -879,7 +964,7 @@ function requestTileGeometry(provider, x, y, level, layerToUse, request) {
|
|
|
879
964
|
defined(resource._ionEndpoint) &&
|
|
880
965
|
!defined(resource._ionEndpoint.externalType)
|
|
881
966
|
) {
|
|
882
|
-
// ion uses query
|
|
967
|
+
// ion uses query parameters to request extensions
|
|
883
968
|
if (extensionList.length !== 0) {
|
|
884
969
|
query = { extensions: extensionList.join("-") };
|
|
885
970
|
}
|
|
@@ -943,42 +1028,25 @@ Object.defineProperties(CesiumTerrainProvider.prototype, {
|
|
|
943
1028
|
|
|
944
1029
|
/**
|
|
945
1030
|
* Gets the credit to display when this terrain provider is active. Typically this is used to credit
|
|
946
|
-
* the source of the terrain.
|
|
1031
|
+
* the source of the terrain.
|
|
947
1032
|
* @memberof CesiumTerrainProvider.prototype
|
|
948
1033
|
* @type {Credit}
|
|
949
1034
|
* @readonly
|
|
950
1035
|
*/
|
|
951
1036
|
credit: {
|
|
952
1037
|
get: function () {
|
|
953
|
-
//>>includeStart('debug', pragmas.debug)
|
|
954
|
-
if (!this._ready) {
|
|
955
|
-
throw new DeveloperError(
|
|
956
|
-
"credit must not be called before the terrain provider is ready."
|
|
957
|
-
);
|
|
958
|
-
}
|
|
959
|
-
//>>includeEnd('debug');
|
|
960
|
-
|
|
961
1038
|
return this._credit;
|
|
962
1039
|
},
|
|
963
1040
|
},
|
|
964
1041
|
|
|
965
1042
|
/**
|
|
966
|
-
* Gets the tiling scheme used by this provider.
|
|
967
|
-
* not be called before {@link CesiumTerrainProvider#ready} returns true.
|
|
1043
|
+
* Gets the tiling scheme used by this provider.
|
|
968
1044
|
* @memberof CesiumTerrainProvider.prototype
|
|
969
1045
|
* @type {GeographicTilingScheme}
|
|
970
1046
|
* @readonly
|
|
971
1047
|
*/
|
|
972
1048
|
tilingScheme: {
|
|
973
1049
|
get: function () {
|
|
974
|
-
//>>includeStart('debug', pragmas.debug)
|
|
975
|
-
if (!this._ready) {
|
|
976
|
-
throw new DeveloperError(
|
|
977
|
-
"tilingScheme must not be called before the terrain provider is ready."
|
|
978
|
-
);
|
|
979
|
-
}
|
|
980
|
-
//>>includeEnd('debug');
|
|
981
|
-
|
|
982
1050
|
return this._tilingScheme;
|
|
983
1051
|
},
|
|
984
1052
|
},
|
|
@@ -986,11 +1054,16 @@ Object.defineProperties(CesiumTerrainProvider.prototype, {
|
|
|
986
1054
|
/**
|
|
987
1055
|
* Gets a value indicating whether or not the provider is ready for use.
|
|
988
1056
|
* @memberof CesiumTerrainProvider.prototype
|
|
989
|
-
* @type {
|
|
1057
|
+
* @type {boolean}
|
|
990
1058
|
* @readonly
|
|
1059
|
+
* @deprecated
|
|
991
1060
|
*/
|
|
992
1061
|
ready: {
|
|
993
1062
|
get: function () {
|
|
1063
|
+
deprecationWarning(
|
|
1064
|
+
"CesiumTerrainProvider.ready",
|
|
1065
|
+
"CesiumTerrainProvider.ready was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use CesiumTerrainProvider.fromIonAssetId or CesiumTerrainProvider.fromUrl instead."
|
|
1066
|
+
);
|
|
994
1067
|
return this._ready;
|
|
995
1068
|
},
|
|
996
1069
|
},
|
|
@@ -998,11 +1071,16 @@ Object.defineProperties(CesiumTerrainProvider.prototype, {
|
|
|
998
1071
|
/**
|
|
999
1072
|
* Gets a promise that resolves to true when the provider is ready for use.
|
|
1000
1073
|
* @memberof CesiumTerrainProvider.prototype
|
|
1001
|
-
* @type {Promise
|
|
1074
|
+
* @type {Promise<boolean>}
|
|
1002
1075
|
* @readonly
|
|
1076
|
+
* @deprecated
|
|
1003
1077
|
*/
|
|
1004
1078
|
readyPromise: {
|
|
1005
1079
|
get: function () {
|
|
1080
|
+
deprecationWarning(
|
|
1081
|
+
"CesiumTerrainProvider.readyPromise",
|
|
1082
|
+
"CesiumTerrainProvider.readyPromise was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use CesiumTerrainProvider.fromIonAssetId or CesiumTerrainProvider.fromUrl instead."
|
|
1083
|
+
);
|
|
1006
1084
|
return this._readyPromise;
|
|
1007
1085
|
},
|
|
1008
1086
|
},
|
|
@@ -1010,45 +1088,25 @@ Object.defineProperties(CesiumTerrainProvider.prototype, {
|
|
|
1010
1088
|
/**
|
|
1011
1089
|
* Gets a value indicating whether or not the provider includes a water mask. The water mask
|
|
1012
1090
|
* indicates which areas of the globe are water rather than land, so they can be rendered
|
|
1013
|
-
* as a reflective surface with animated waves.
|
|
1014
|
-
* called before {@link CesiumTerrainProvider#ready} returns true.
|
|
1091
|
+
* as a reflective surface with animated waves.
|
|
1015
1092
|
* @memberof CesiumTerrainProvider.prototype
|
|
1016
|
-
* @type {
|
|
1093
|
+
* @type {boolean}
|
|
1017
1094
|
* @readonly
|
|
1018
|
-
* @exception {DeveloperError} This property must not be called before {@link CesiumTerrainProvider#ready}
|
|
1019
1095
|
*/
|
|
1020
1096
|
hasWaterMask: {
|
|
1021
1097
|
get: function () {
|
|
1022
|
-
//>>includeStart('debug', pragmas.debug)
|
|
1023
|
-
if (!this._ready) {
|
|
1024
|
-
throw new DeveloperError(
|
|
1025
|
-
"hasWaterMask must not be called before the terrain provider is ready."
|
|
1026
|
-
);
|
|
1027
|
-
}
|
|
1028
|
-
//>>includeEnd('debug');
|
|
1029
|
-
|
|
1030
1098
|
return this._hasWaterMask && this._requestWaterMask;
|
|
1031
1099
|
},
|
|
1032
1100
|
},
|
|
1033
1101
|
|
|
1034
1102
|
/**
|
|
1035
1103
|
* Gets a value indicating whether or not the requested tiles include vertex normals.
|
|
1036
|
-
* This function should not be called before {@link CesiumTerrainProvider#ready} returns true.
|
|
1037
1104
|
* @memberof CesiumTerrainProvider.prototype
|
|
1038
|
-
* @type {
|
|
1105
|
+
* @type {boolean}
|
|
1039
1106
|
* @readonly
|
|
1040
|
-
* @exception {DeveloperError} This property must not be called before {@link CesiumTerrainProvider#ready}
|
|
1041
1107
|
*/
|
|
1042
1108
|
hasVertexNormals: {
|
|
1043
1109
|
get: function () {
|
|
1044
|
-
//>>includeStart('debug', pragmas.debug)
|
|
1045
|
-
if (!this._ready) {
|
|
1046
|
-
throw new DeveloperError(
|
|
1047
|
-
"hasVertexNormals must not be called before the terrain provider is ready."
|
|
1048
|
-
);
|
|
1049
|
-
}
|
|
1050
|
-
//>>includeEnd('debug');
|
|
1051
|
-
|
|
1052
1110
|
// returns true if we can request vertex normals from the server
|
|
1053
1111
|
return this._hasVertexNormals && this._requestVertexNormals;
|
|
1054
1112
|
},
|
|
@@ -1056,22 +1114,12 @@ Object.defineProperties(CesiumTerrainProvider.prototype, {
|
|
|
1056
1114
|
|
|
1057
1115
|
/**
|
|
1058
1116
|
* Gets a value indicating whether or not the requested tiles include metadata.
|
|
1059
|
-
* This function should not be called before {@link CesiumTerrainProvider#ready} returns true.
|
|
1060
1117
|
* @memberof CesiumTerrainProvider.prototype
|
|
1061
|
-
* @type {
|
|
1118
|
+
* @type {boolean}
|
|
1062
1119
|
* @readonly
|
|
1063
|
-
* @exception {DeveloperError} This property must not be called before {@link CesiumTerrainProvider#ready}
|
|
1064
1120
|
*/
|
|
1065
1121
|
hasMetadata: {
|
|
1066
1122
|
get: function () {
|
|
1067
|
-
//>>includeStart('debug', pragmas.debug)
|
|
1068
|
-
if (!this._ready) {
|
|
1069
|
-
throw new DeveloperError(
|
|
1070
|
-
"hasMetadata must not be called before the terrain provider is ready."
|
|
1071
|
-
);
|
|
1072
|
-
}
|
|
1073
|
-
//>>includeEnd('debug');
|
|
1074
|
-
|
|
1075
1123
|
// returns true if we can request metadata from the server
|
|
1076
1124
|
return this._hasMetadata && this._requestMetadata;
|
|
1077
1125
|
},
|
|
@@ -1082,7 +1130,7 @@ Object.defineProperties(CesiumTerrainProvider.prototype, {
|
|
|
1082
1130
|
* Vertex normals data is appended to the standard tile mesh data only if the client requests the vertex normals and
|
|
1083
1131
|
* if the server provides vertex normals.
|
|
1084
1132
|
* @memberof CesiumTerrainProvider.prototype
|
|
1085
|
-
* @type {
|
|
1133
|
+
* @type {boolean}
|
|
1086
1134
|
* @readonly
|
|
1087
1135
|
*/
|
|
1088
1136
|
requestVertexNormals: {
|
|
@@ -1096,7 +1144,7 @@ Object.defineProperties(CesiumTerrainProvider.prototype, {
|
|
|
1096
1144
|
* Watermask data is appended to the standard tile mesh data only if the client requests the watermask and
|
|
1097
1145
|
* if the server provides a watermask.
|
|
1098
1146
|
* @memberof CesiumTerrainProvider.prototype
|
|
1099
|
-
* @type {
|
|
1147
|
+
* @type {boolean}
|
|
1100
1148
|
* @readonly
|
|
1101
1149
|
*/
|
|
1102
1150
|
requestWaterMask: {
|
|
@@ -1110,7 +1158,7 @@ Object.defineProperties(CesiumTerrainProvider.prototype, {
|
|
|
1110
1158
|
* Metadata is appended to the standard tile mesh data only if the client requests the metadata and
|
|
1111
1159
|
* if the server provides a metadata.
|
|
1112
1160
|
* @memberof CesiumTerrainProvider.prototype
|
|
1113
|
-
* @type {
|
|
1161
|
+
* @type {boolean}
|
|
1114
1162
|
* @readonly
|
|
1115
1163
|
*/
|
|
1116
1164
|
requestMetadata: {
|
|
@@ -1121,8 +1169,7 @@ Object.defineProperties(CesiumTerrainProvider.prototype, {
|
|
|
1121
1169
|
|
|
1122
1170
|
/**
|
|
1123
1171
|
* Gets an object that can be used to determine availability of terrain from this provider, such as
|
|
1124
|
-
* at points and in rectangles.
|
|
1125
|
-
* {@link CesiumTerrainProvider#ready} returns true. This property may be undefined if availability
|
|
1172
|
+
* at points and in rectangles. This property may be undefined if availability
|
|
1126
1173
|
* information is not available. Note that this reflects tiles that are known to be available currently.
|
|
1127
1174
|
* Additional tiles may be discovered to be available in the future, e.g. if availability information
|
|
1128
1175
|
* exists deeper in the tree rather than it all being discoverable at the root. However, a tile that
|
|
@@ -1133,13 +1180,6 @@ Object.defineProperties(CesiumTerrainProvider.prototype, {
|
|
|
1133
1180
|
*/
|
|
1134
1181
|
availability: {
|
|
1135
1182
|
get: function () {
|
|
1136
|
-
//>>includeStart('debug', pragmas.debug)
|
|
1137
|
-
if (!this._ready) {
|
|
1138
|
-
throw new DeveloperError(
|
|
1139
|
-
"availability must not be called before the terrain provider is ready."
|
|
1140
|
-
);
|
|
1141
|
-
}
|
|
1142
|
-
//>>includeEnd('debug');
|
|
1143
1183
|
return this._availability;
|
|
1144
1184
|
},
|
|
1145
1185
|
},
|
|
@@ -1148,8 +1188,8 @@ Object.defineProperties(CesiumTerrainProvider.prototype, {
|
|
|
1148
1188
|
/**
|
|
1149
1189
|
* Gets the maximum geometric error allowed in a tile at a given level.
|
|
1150
1190
|
*
|
|
1151
|
-
* @param {
|
|
1152
|
-
* @returns {
|
|
1191
|
+
* @param {number} level The tile level for which to get the maximum geometric error.
|
|
1192
|
+
* @returns {number} The maximum geometric error.
|
|
1153
1193
|
*/
|
|
1154
1194
|
CesiumTerrainProvider.prototype.getLevelMaximumGeometricError = function (
|
|
1155
1195
|
level
|
|
@@ -1157,13 +1197,110 @@ CesiumTerrainProvider.prototype.getLevelMaximumGeometricError = function (
|
|
|
1157
1197
|
return this._levelZeroMaximumGeometricError / (1 << level);
|
|
1158
1198
|
};
|
|
1159
1199
|
|
|
1200
|
+
/**
|
|
1201
|
+
* Creates a {@link TerrainProvider} from a Cesium ion asset ID that accesses terrain data in a Cesium terrain format
|
|
1202
|
+
* Terrain formats can be one of the following:
|
|
1203
|
+
* <ul>
|
|
1204
|
+
* <li> {@link https://github.com/AnalyticalGraphicsInc/quantized-mesh Quantized Mesh} </li>
|
|
1205
|
+
* <li> {@link https://github.com/AnalyticalGraphicsInc/cesium/wiki/heightmap-1.0 Height Map} </li>
|
|
1206
|
+
* </ul>
|
|
1207
|
+
*
|
|
1208
|
+
* @param {number} assetId The Cesium ion asset id.
|
|
1209
|
+
* @param {CesiumTerrainProvider.ConstructorOptions} [options] An object describing initialization options.
|
|
1210
|
+
* @returns {Promise<CesiumTerrainProvider>}
|
|
1211
|
+
*
|
|
1212
|
+
* @example
|
|
1213
|
+
* // Create Arctic DEM terrain with normals.
|
|
1214
|
+
* try {
|
|
1215
|
+
* const viewer = new Cesium.Viewer("cesiumContainer", {
|
|
1216
|
+
* terrainProvider: await Cesium.CesiumTerrainProvider.fromIonAssetId(3956, {
|
|
1217
|
+
* requestVertexNormals: true
|
|
1218
|
+
* })
|
|
1219
|
+
* });
|
|
1220
|
+
* } catch (error) {
|
|
1221
|
+
* console.log(error);
|
|
1222
|
+
* }
|
|
1223
|
+
*
|
|
1224
|
+
* @exception {RuntimeError} layer.json does not specify a format
|
|
1225
|
+
* @exception {RuntimeError} layer.json specifies an unknown format
|
|
1226
|
+
* @exception {RuntimeError} layer.json specifies an unsupported quantized-mesh version
|
|
1227
|
+
* @exception {RuntimeError} layer.json does not specify a tiles property, or specifies an empty array
|
|
1228
|
+
* @exception {RuntimeError} layer.json does not specify any tile URL templates
|
|
1229
|
+
*/
|
|
1230
|
+
CesiumTerrainProvider.fromIonAssetId = async function (assetId, options) {
|
|
1231
|
+
//>>includeStart('debug', pragmas.debug);
|
|
1232
|
+
Check.defined("assetId", assetId);
|
|
1233
|
+
//>>includeEnd('debug');
|
|
1234
|
+
|
|
1235
|
+
const resource = await IonResource.fromAssetId(assetId);
|
|
1236
|
+
return CesiumTerrainProvider.fromUrl(resource, options);
|
|
1237
|
+
};
|
|
1238
|
+
|
|
1239
|
+
/**
|
|
1240
|
+
* Creates a {@link TerrainProvider} that accesses terrain data in a Cesium terrain format.
|
|
1241
|
+
* Terrain formats can be one of the following:
|
|
1242
|
+
* <ul>
|
|
1243
|
+
* <li> {@link https://github.com/AnalyticalGraphicsInc/quantized-mesh Quantized Mesh} </li>
|
|
1244
|
+
* <li> {@link https://github.com/AnalyticalGraphicsInc/cesium/wiki/heightmap-1.0 Height Map} </li>
|
|
1245
|
+
* </ul>
|
|
1246
|
+
*
|
|
1247
|
+
* @param {Resource|String|Promise<Resource>|Promise<String>} url The URL of the Cesium terrain server.
|
|
1248
|
+
* @param {CesiumTerrainProvider.ConstructorOptions} [options] An object describing initialization options.
|
|
1249
|
+
* @returns {Promise<CesiumTerrainProvider>}
|
|
1250
|
+
*
|
|
1251
|
+
* @example
|
|
1252
|
+
* // Create Arctic DEM terrain with normals.
|
|
1253
|
+
* try {
|
|
1254
|
+
* const viewer = new Cesium.Viewer("cesiumContainer", {
|
|
1255
|
+
* terrainProvider: await Cesium.CesiumTerrainProvider.fromUrl(
|
|
1256
|
+
* Cesium.IonResource.fromAssetId(3956), {
|
|
1257
|
+
* requestVertexNormals: true
|
|
1258
|
+
* })
|
|
1259
|
+
* });
|
|
1260
|
+
* } catch (error) {
|
|
1261
|
+
* console.log(error);
|
|
1262
|
+
* }
|
|
1263
|
+
*
|
|
1264
|
+
* @exception {RuntimeError} layer.json does not specify a format
|
|
1265
|
+
* @exception {RuntimeError} layer.json specifies an unknown format
|
|
1266
|
+
* @exception {RuntimeError} layer.json specifies an unsupported quantized-mesh version
|
|
1267
|
+
* @exception {RuntimeError} layer.json does not specify a tiles property, or specifies an empty array
|
|
1268
|
+
* @exception {RuntimeError} layer.json does not specify any tile URL templates
|
|
1269
|
+
*/
|
|
1270
|
+
CesiumTerrainProvider.fromUrl = async function (url, options) {
|
|
1271
|
+
//>>includeStart('debug', pragmas.debug);
|
|
1272
|
+
Check.defined("url", url);
|
|
1273
|
+
//>>includeEnd('debug');
|
|
1274
|
+
|
|
1275
|
+
options = defaultValue(options, defaultValue.EMPTY_OBJECT);
|
|
1276
|
+
|
|
1277
|
+
url = await Promise.resolve(url);
|
|
1278
|
+
const resource = Resource.createIfNeeded(url);
|
|
1279
|
+
resource.appendForwardSlash();
|
|
1280
|
+
|
|
1281
|
+
const terrainProviderBuilder = new TerrainProviderBuilder(options);
|
|
1282
|
+
terrainProviderBuilder.lastResource = resource;
|
|
1283
|
+
terrainProviderBuilder.layerJsonResource = terrainProviderBuilder.lastResource.getDerivedResource(
|
|
1284
|
+
{
|
|
1285
|
+
url: "layer.json",
|
|
1286
|
+
}
|
|
1287
|
+
);
|
|
1288
|
+
|
|
1289
|
+
await requestLayerJson(terrainProviderBuilder);
|
|
1290
|
+
|
|
1291
|
+
const provider = new CesiumTerrainProvider(options);
|
|
1292
|
+
terrainProviderBuilder.build(provider);
|
|
1293
|
+
|
|
1294
|
+
return provider;
|
|
1295
|
+
};
|
|
1296
|
+
|
|
1160
1297
|
/**
|
|
1161
1298
|
* Determines whether data for a tile is available to be loaded.
|
|
1162
1299
|
*
|
|
1163
|
-
* @param {
|
|
1164
|
-
* @param {
|
|
1165
|
-
* @param {
|
|
1166
|
-
* @returns {
|
|
1300
|
+
* @param {number} x The X coordinate of the tile for which to request geometry.
|
|
1301
|
+
* @param {number} y The Y coordinate of the tile for which to request geometry.
|
|
1302
|
+
* @param {number} level The level of the tile for which to request geometry.
|
|
1303
|
+
* @returns {boolean|undefined} Undefined if not supported or availability is unknown, otherwise true or false.
|
|
1167
1304
|
*/
|
|
1168
1305
|
CesiumTerrainProvider.prototype.getTileDataAvailable = function (x, y, level) {
|
|
1169
1306
|
if (!defined(this._availability)) {
|
|
@@ -1198,9 +1335,9 @@ CesiumTerrainProvider.prototype.getTileDataAvailable = function (x, y, level) {
|
|
|
1198
1335
|
/**
|
|
1199
1336
|
* Makes sure we load availability data for a tile
|
|
1200
1337
|
*
|
|
1201
|
-
* @param {
|
|
1202
|
-
* @param {
|
|
1203
|
-
* @param {
|
|
1338
|
+
* @param {number} x The X coordinate of the tile for which to request geometry.
|
|
1339
|
+
* @param {number} y The Y coordinate of the tile for which to request geometry.
|
|
1340
|
+
* @param {number} level The level of the tile for which to request geometry.
|
|
1204
1341
|
* @returns {undefined|Promise<void>} Undefined if nothing need to be loaded or a Promise that resolves when all required tiles are loaded
|
|
1205
1342
|
*/
|
|
1206
1343
|
CesiumTerrainProvider.prototype.loadTileDataAvailability = function (
|