@arcgis/core 6.0.0-next.36 → 6.0.0-next.38
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/analysis/DimensionAnalysis.js +1 -1
- package/analysis/DimensionSimpleStyle.js +1 -1
- package/analysis/LengthDimension.js +1 -1
- package/analysis/LineOfSightAnalysis.js +1 -1
- package/analysis/LineOfSightAnalysisTarget.js +1 -1
- package/analysis/Viewshed.js +1 -1
- package/analysis/ViewshedAnalysis.js +1 -1
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/{0202eb8c2b2865f99981.js → 00311d1b18d5952a014b.js} +1 -1
- package/assets/esri/core/workers/chunks/{9503eedfdda55fc5adab.js → 091ec4fe83038f3558f4.js} +1 -1
- package/assets/esri/core/workers/chunks/0b21d0e2e5a91c34a108.js +1 -0
- package/assets/esri/core/workers/chunks/{322b22a5d54e404bebd5.js → 0c893837f67829757df7.js} +1 -1
- package/assets/esri/core/workers/chunks/123541f79be7adff0818.js +1 -0
- package/assets/esri/core/workers/chunks/{155861fbd0e5fc2db80c.js → 1a91443970d64a59521d.js} +1 -1
- package/assets/esri/core/workers/chunks/1e37337f47f45d6d8005.js +1 -0
- package/assets/esri/core/workers/chunks/{4e5405134d079bdf9b7a.js → 1f76f6dcdae9f55389cb.js} +1 -1
- package/assets/esri/core/workers/chunks/{f717005e14a7e9141df7.js → 2050c844b5a29b1df28a.js} +1 -1
- package/assets/esri/core/workers/chunks/2c3612379111457c3221.js +1 -0
- package/assets/esri/core/workers/chunks/2d16b5a44f840147e882.js +1 -0
- package/assets/esri/core/workers/chunks/{d9a240a3c6bf85124474.js → 342a97974a78007b25e0.js} +1 -1
- package/assets/esri/core/workers/chunks/34467f7d84baffd772a3.js +1 -0
- package/assets/esri/core/workers/chunks/396299c22994c502e41c.js +1 -0
- package/assets/esri/core/workers/chunks/{03daf6f235c6edef6268.js → 398ec098fffe6abceedd.js} +1 -1
- package/assets/esri/core/workers/chunks/3b32a24488b3068f0cb7.js +1 -0
- package/assets/esri/core/workers/chunks/3b5e9e0b180dc10491ec.js +1 -0
- package/assets/esri/core/workers/chunks/{4d18b48d4a282a0f341c.js → 427d929dc7f89b0a1ea9.js} +1 -1
- package/assets/esri/core/workers/chunks/432728c557be5dfa26b5.js +1 -0
- package/assets/esri/core/workers/chunks/46969f379623810b2eca.js +1 -0
- package/assets/esri/core/workers/chunks/46edd6c9ed6701e6b975.js +1 -0
- package/assets/esri/core/workers/chunks/{8b0d5551978ab0aac0d1.js → 520f499d79fa71f262c7.js} +1 -1
- package/assets/esri/core/workers/chunks/5473409fee59db80f87d.js +1 -0
- package/assets/esri/core/workers/chunks/553a8bf5bc5c56d1bcaf.js +1 -0
- package/assets/esri/core/workers/chunks/{2211ff0a1f1ae8100231.js → 585ae43c7bcb86a26762.js} +1 -1
- package/assets/esri/core/workers/chunks/58716a3a6106a1b0fb9d.js +1 -0
- package/assets/esri/core/workers/chunks/{aa6ee2aa4ff6e6d41efb.js → 5882f349f3771868e67f.js} +1 -1
- package/assets/esri/core/workers/chunks/592b5db1459c02cf6a0c.js +1 -0
- package/assets/esri/core/workers/chunks/{1b17f5f720f6cf3f6d73.js → 5be386b3af867b19ff39.js} +1 -1
- package/assets/esri/core/workers/chunks/{ea81f9d71b0842a4be26.js → 5e48898cebb6dbaf09b5.js} +1 -1
- package/assets/esri/core/workers/chunks/6a21dc13a465757ba007.js +1 -0
- package/assets/esri/core/workers/chunks/{139e753d95cfc9470e74.js → 6a65fc1a2931230fe994.js} +1 -1
- package/assets/esri/core/workers/chunks/{3e406043a374ee17475b.js → 6f2e7e663229b223b4df.js} +1 -1
- package/assets/esri/core/workers/chunks/{379db67f78161ebd5468.js → 7023651ed6398dcf8efb.js} +1 -1
- package/assets/esri/core/workers/chunks/{90360c0bd053d3e3fd77.js → 7027a0e7bfabb3bb7fc2.js} +1 -1
- package/assets/esri/core/workers/chunks/76e80381fa6d1e084796.js +1 -0
- package/assets/esri/core/workers/chunks/78818c2a898444f7e890.js +1 -0
- package/assets/esri/core/workers/chunks/{40c2674dae73f0942751.js → 7d497df6e13162156342.js} +1 -1
- package/assets/esri/core/workers/chunks/{3b380e64566a6cce59e2.js → 7e0ed6e8f7b77e43f628.js} +1 -1
- package/assets/esri/core/workers/chunks/8c3779de09291170497f.js +1 -0
- package/assets/esri/core/workers/chunks/8e391b5b82429f39791e.js +1 -0
- package/assets/esri/core/workers/chunks/947f3a1cad976bba9738.js +1 -0
- package/assets/esri/core/workers/chunks/{59a1b637d2c107504a04.js → 966204d6dedc8149c3e9.js} +1 -1
- package/assets/esri/core/workers/chunks/9826baa3c15ea2062669.js +1 -0
- package/assets/esri/core/workers/chunks/{d3369ffed19f4c264dcd.js → 9ab0735e86cf8932bf9d.js} +1 -1
- package/assets/esri/core/workers/chunks/ab0ea4042f4e13874aed.js +1 -0
- package/assets/esri/core/workers/chunks/ab98ade3257360015d6c.js +1 -0
- package/assets/esri/core/workers/chunks/ac107079342251a984dd.js +1 -0
- package/assets/esri/core/workers/chunks/{572aec57593a08b8045b.js → b15a8d4322f3b7819d2f.js} +1 -1
- package/assets/esri/core/workers/chunks/{552c36b40e5a5ec117fb.js → b472c0a21ae29e653f7d.js} +1 -1
- package/assets/esri/core/workers/chunks/b90271ce38522bcf813b.js +1 -0
- package/assets/esri/core/workers/chunks/ba91df9835cdea7698a9.js +1 -0
- package/assets/esri/core/workers/chunks/bdd76a0b6c14e7fb6984.js +1 -0
- package/assets/esri/core/workers/chunks/bfe13ac9fa1aafb190a1.js +1 -0
- package/assets/esri/core/workers/chunks/{f372f4eb5527238c46f5.js → c31830ee897d5a7f2582.js} +1 -1
- package/assets/esri/core/workers/chunks/c48d97c38e821be17dc5.js +1 -0
- package/assets/esri/core/workers/chunks/{0a508e25ec05363e1f04.js → c7ad62f54d2abe1d17a0.js} +1 -1
- package/assets/esri/core/workers/chunks/cb1642ea8b66231cbfb5.js +1 -0
- package/assets/esri/core/workers/chunks/ce0274847ccce6a1ac53.js +1 -0
- package/assets/esri/core/workers/chunks/cf21b217b13770757cb8.js +1 -0
- package/assets/esri/core/workers/chunks/cf2e5f827cea7d7319ce.js +1 -0
- package/assets/esri/core/workers/chunks/d42a4f47843e075c56a8.js +1 -0
- package/assets/esri/core/workers/chunks/dae2036faa28dade2119.js +1 -0
- package/assets/esri/core/workers/chunks/e2430bc3a1edeb5c3266.js +1 -0
- package/assets/esri/core/workers/chunks/e9457a67befc61e11095.js +1 -0
- package/assets/esri/core/workers/chunks/f06ef153e106b26a6748.js +1 -0
- package/assets/esri/core/workers/chunks/faae3c43048b42341536.js +1 -0
- package/assets/esri/core/workers/chunks/fc77eb7683e708774168.js +1 -0
- package/assets/esri/core/workers/chunks/fd967a9f3cf0e2890dbb.js +1 -0
- package/chunks/Clouds.glsl.js +7 -11
- package/chunks/h.js +2 -0
- package/chunks/projector.js +2 -0
- package/config.js +1 -1
- package/core/libs/gl-matrix-2/math/vec3.js +1 -1
- package/core/sanitizerUtils.js +1 -1
- package/form/FormTemplate.js +1 -1
- package/form/elements/Element.js +1 -1
- package/form/elements/FieldElement.js +1 -1
- package/geometry/ellipsoidUtils.js +4 -4
- package/geometry/support/frustumPlanes.js +1 -1
- package/geometry/support/plane.js +1 -1
- package/geometry/support/triangle.js +1 -1
- package/kernel.js +1 -1
- package/layers/BaseElevationLayer.js +1 -1
- package/layers/ElevationLayer.js +1 -1
- package/layers/GraphicsLayer.js +1 -1
- package/layers/IntegratedMesh3DTilesLayer.js +1 -1
- package/layers/IntegratedMeshLayer.d.ts +2 -0
- package/layers/IntegratedMeshLayer.js +1 -1
- package/layers/Lyr3DWasmPerSceneView.js +1 -1
- package/layers/geospatialPDF/geospatialPDFParserUtils.js +1 -1
- package/layers/geospatialPDF/support/datumUtils.js +2 -0
- package/layers/geospatialPDF/support/ellipsoidUtils.js +2 -0
- package/layers/geospatialPDF/support/geographicProjectionUtils.js +2 -0
- package/layers/geospatialPDF/support/parameterUtils.js +2 -0
- package/layers/geospatialPDF/support/projectedProjectionUtils.js +3 -0
- package/layers/geospatialPDF/support/projectionToSpatialReference.js +2 -0
- package/layers/geospatialPDF/support/statePlaneUtils.js +2 -0
- package/layers/geospatialPDF/support/unitUtils.js +2 -0
- package/layers/geospatialPDF/support/validateProjectionUtils.js +2 -0
- package/layers/graphics/sources/support/clientSideDefaults.js +2 -2
- package/layers/knowledgeGraph/KnowledgeGraphLayerDataManager.js +1 -1
- package/layers/knowledgeGraph/KnowledgeGraphSublayer.js +1 -1
- package/layers/ogc/ogcFeatureUtils.js +1 -1
- package/layers/save/imageryUtils.js +1 -1
- package/layers/save/mediaLayerUtils.js +1 -1
- package/layers/save/streamLayerUtils.js +1 -1
- package/layers/support/ControlPoint.js +1 -1
- package/layers/support/ControlPointsGeoreference.js +1 -1
- package/layers/support/DimensionalDefinition.js +1 -1
- package/layers/support/ElevationQuery.js +1 -1
- package/layers/support/LabelClass.js +1 -1
- package/layers/support/LabelExpressionInfo.js +1 -1
- package/layers/support/MediaElementBase.js +1 -1
- package/layers/support/MosaicRule.js +1 -1
- package/layers/support/MultidimensionalSubset.js +1 -1
- package/layers/support/RasterBandInfo.js +1 -1
- package/layers/support/RasterFunction.js +1 -1
- package/layers/support/RasterFunctionTemplate.js +1 -1
- package/layers/support/RasterInfo.js +1 -1
- package/layers/support/RasterSensorInfo.js +1 -1
- package/layers/support/RasterStorageInfo.js +1 -1
- package/layers/support/VideoElement.js +1 -1
- package/layers/support/layersLoader.js +1 -1
- package/layers/video/VideoController.js +3 -3
- package/layers/video/types.d.ts +12 -0
- package/legend/ActiveLayerInfo.d.ts +5 -1
- package/legend/ActiveLayerInfo.js +1 -1
- package/libs/maquette-advanced-projector/projector.js +1 -1
- package/linkChart/LayoutSettings.js +1 -1
- package/linkChart/RootedLayoutSettings.js +1 -1
- package/package.json +3 -3
- package/renderers/FlowRenderer.js +1 -1
- package/renderers/RasterColormapRenderer.js +1 -1
- package/renderers/RasterShadedReliefRenderer.js +1 -1
- package/renderers/RasterStretchRenderer.js +1 -1
- package/renderers/VectorFieldRenderer.js +1 -1
- package/renderers/support/ColormapInfo.js +1 -1
- package/renderers/support/RasterPresetRenderer.js +1 -1
- package/renderers/support/rasterRendererHelper.js +1 -1
- package/rest/knowledgeGraph/GraphApplyEdits.js +1 -1
- package/rest/support/BaseImageMeasureParameters.js +1 -1
- package/rest/support/BaseImageMeasureResult.js +1 -1
- package/rest/support/FindImagesParameters.js +1 -1
- package/rest/support/FindImagesResult.js +1 -1
- package/rest/support/ImageAngleParameters.js +1 -1
- package/rest/support/ImageAngleResult.js +1 -1
- package/rest/support/ImageAreaParameters.js +1 -1
- package/rest/support/ImageAreaResult.js +1 -1
- package/rest/support/ImageBoundaryParameters.js +1 -1
- package/rest/support/ImageBoundaryResult.js +1 -1
- package/rest/support/ImageDistanceParameters.js +1 -1
- package/rest/support/ImageDistanceResult.js +1 -1
- package/rest/support/ImageGPSInfoParameters.js +1 -1
- package/rest/support/ImageGPSInfoResult.js +1 -1
- package/rest/support/ImageHeightParameters.js +1 -1
- package/rest/support/ImageHeightResult.js +1 -1
- package/rest/support/ImageHistogramParameters.js +1 -1
- package/rest/support/ImageIdentifyParameters.js +1 -1
- package/rest/support/ImageIdentifyResult.js +1 -1
- package/rest/support/ImagePixelLocationParameters.js +1 -1
- package/rest/support/ImagePixelLocationResult.js +1 -1
- package/rest/support/ImagePointParameters.js +1 -1
- package/rest/support/ImagePointResult.js +1 -1
- package/rest/support/ImageSample.js +1 -1
- package/rest/support/ImageSampleParameters.js +1 -1
- package/rest/support/ImageSampleResult.js +1 -1
- package/rest/support/ImageToMapMultirayParameters.js +1 -1
- package/rest/support/ImageToMapParameters.js +1 -1
- package/rest/support/ImageUrlParameters.js +1 -1
- package/rest/support/ImageUrlResult.js +1 -1
- package/rest/support/ImageVolumeParameters.js +1 -1
- package/rest/support/ImageVolumeResult.js +1 -1
- package/rest/support/MapToImageParameters.js +1 -1
- package/rest/support/MeasureAreaFromImageResult.js +1 -1
- package/rest/support/MeasureFromImageParameters.js +1 -1
- package/rest/support/MeasureLengthFromImageResult.js +1 -1
- package/symbols/support/cimSymbolUtils.js +1 -1
- package/symbols/support/renderUtils.js +1 -1
- package/views/2d/ViewState.d.ts +3 -3
- package/views/2d/ViewState.js +1 -1
- package/views/2d/ViewStateManager.js +1 -1
- package/views/2d/engine/Bitmap.js +1 -1
- package/views/2d/engine/flow/styles/Imagery.js +1 -1
- package/views/2d/engine/vectorTiles/SpriteMosaic.js +1 -1
- package/views/2d/engine/vectorTiles/VTLPainter3D.js +1 -1
- package/views/2d/engine/vectorTiles/decluttering/CollisionJob.js +1 -1
- package/views/2d/engine/vectorTiles/style/geoJSONVectorTileUtils.js +1 -1
- package/views/2d/engine/webgl/AttributeStoreView.js +1 -1
- package/views/2d/engine/webgl/GlyphMosaic.js +1 -1
- package/views/2d/engine/webgl/Overlay.js +1 -1
- package/views/2d/engine/webgl/OverlayMultipoint.js +1 -1
- package/views/2d/engine/webgl/SpriteMosaic.js +1 -1
- package/views/2d/engine/webgl/VideoScreenRenderer.js +1 -1
- package/views/2d/engine/webgl/animations/store/AnimationStore.js +1 -1
- package/views/2d/engine/webgl/collisions/LabelMetric.js +1 -1
- package/views/2d/engine/webgl/collisions/LabelStore.js +1 -1
- package/views/2d/engine/webgl/effects/highlight/HighlightGradient.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/TextureStatisticsTechnique.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/animated/AAnimatedShader.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/animated/AnimatedMarkerShader.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/blend/BlendTechnique.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/colorize/ColorizeTechnique.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/dotDensity/DotDensityResources.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/drop-shadow/DropShadowTechnique.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/heatmap/HeatmapResources.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/labels/LabelMeshWriter.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/magnifier/MagnifierTechnique.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/markers/MarkerShader.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/opacity/OpacityTechnique.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/raster/RasterColorizerTechnique.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/raster/RasterHighlightTechnique.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/raster/processor/textureUtils.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/shaders/AFeatureShader.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/shaders/FillShader.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/shaders/LineShader.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/shaders/OutlineFillShader.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/text/TextShader.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/tile/TileDebugInfoTexture.js +1 -1
- package/views/2d/engine/webgl/textureUtils.js +1 -1
- package/views/2d/engine/webgl/util/IntervalMatcher.js +1 -1
- package/views/2d/layers/LayerView2D.js +1 -1
- package/views/2d/webglDeps.js +1 -1
- package/views/3d/FocusAreasView.js +1 -1
- package/views/3d/GroundView3D.js +1 -1
- package/views/3d/input/SceneInputManager.js +1 -1
- package/views/3d/layers/GaussianSplatLayerView3D.js +1 -1
- package/views/3d/layers/graphics/ElevationAligners.js +1 -1
- package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DSymbol.js +1 -1
- package/views/3d/layers/i3s/I3SBinaryReader.js +1 -1
- package/views/3d/layers/i3s/LayerElevationProvider.js +1 -1
- package/views/3d/state/ConstraintsManager.js +1 -1
- package/views/3d/state/ViewState.js +1 -1
- package/views/3d/state/ViewStateManager.js +1 -1
- package/views/3d/support/engineContent/line.js +1 -1
- package/views/3d/support/engineContent/marker.js +1 -1
- package/views/3d/support/flow/StreamlineResources3D.js +1 -1
- package/views/3d/support/flow/StreamlineResources3DOverlay.js +1 -1
- package/views/3d/support/flow/StreamlineResources3DShape.js +1 -1
- package/views/3d/support/flow/geometryUtils.js +1 -1
- package/views/3d/support/gaussianSplatting/GaussianSplatFadeHelper.js +1 -1
- package/views/3d/support/gaussianSplatting/GaussianSplatIntersectionHandler.js +1 -1
- package/views/3d/support/gaussianSplatting/GaussianSplatOrderTexture.js +1 -1
- package/views/3d/support/gaussianSplatting/GaussianSplatTextureAtlas.js +1 -1
- package/views/3d/support/gaussianSplatting/GaussianTileBuilder.js +2 -0
- package/views/3d/support/gaussianSplatting/GaussianTileLifecycle.js +2 -0
- package/views/3d/support/gaussianSplatting/formatConstants.js +2 -0
- package/views/3d/support/pointsOfInterest/CameraOnSurface.js +1 -1
- package/views/3d/support/pointsOfInterest/StableSurfaceCenter.js +1 -1
- package/views/3d/terrain/OverlayManager.js +1 -1
- package/views/3d/terrain/OverlayRenderer.js +1 -1
- package/views/3d/terrain/TerrainRenderer.js +1 -1
- package/views/3d/terrain/TerrainSurface.js +1 -1
- package/views/3d/terrain/Tile.js +1 -1
- package/views/3d/terrain/TileCompositor.js +1 -1
- package/views/3d/terrain/TileRenderer.js +1 -1
- package/views/3d/terrain/tileUtils.js +1 -1
- package/views/3d/webgl/RenderNode.d.ts +1 -1
- package/views/3d/webgl-engine/core/FBOCache.js +1 -1
- package/views/3d/webgl-engine/core/renderPasses/RenderPassManager.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/hud/HUD.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/shading/readShadow.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/util/GaussianSplatUnpacking.glsl.js +15 -11
- package/views/3d/webgl-engine/effects/WeatherFader.js +1 -1
- package/views/3d/webgl-engine/effects/atmosphere/LocalAtmosphere.js +1 -1
- package/views/3d/webgl-engine/effects/atmosphere/MarsAtmosphere.js +1 -1
- package/views/3d/webgl-engine/effects/clouds/CloudsRenderer.js +1 -1
- package/views/3d/webgl-engine/effects/debug/RenderNodeVisualizerNode.js +19 -9
- package/views/3d/webgl-engine/effects/highlight/Highlight.js +1 -1
- package/views/3d/webgl-engine/effects/magnifier/Magnifier.js +1 -1
- package/views/3d/webgl-engine/effects/smaa/SMAA.js +1 -1
- package/views/3d/webgl-engine/effects/ssao/SSAO.js +1 -1
- package/views/3d/webgl-engine/effects/stars/Stars.js +1 -1
- package/views/3d/webgl-engine/lib/AttributeView.js +1 -1
- package/views/3d/webgl-engine/lib/BasisUtil.js +1 -1
- package/views/3d/webgl-engine/lib/BindParameters.js +1 -1
- package/views/3d/webgl-engine/lib/DDSUtil.js +1 -1
- package/views/3d/webgl-engine/lib/DrapedHeatmapRenderer.js +1 -1
- package/views/3d/webgl-engine/lib/GPUPointOcclusionQuery.js +1 -1
- package/views/3d/webgl-engine/lib/GaussianSplatRenderUtils.js +1 -1
- package/views/3d/webgl-engine/lib/GeometryUtil.js +1 -1
- package/views/3d/webgl-engine/lib/ManagedTexture.js +1 -1
- package/views/3d/webgl-engine/lib/Renderer.js +1 -1
- package/views/3d/webgl-engine/lib/TextTextureAtlas.js +1 -1
- package/views/3d/webgl-engine/lib/TextureBackedBuffer/TextureBuffer.js +1 -1
- package/views/3d/webgl-engine/lib/TextureBackedBuffer/TextureBufferView.js +1 -1
- package/views/3d/webgl-engine/lib/VerticesView.js +2 -0
- package/views/3d/webgl-engine/lib/attributeViewUtils.js +1 -1
- package/views/3d/webgl-engine/lib/edgeRendering/strokes.js +1 -1
- package/views/3d/webgl-engine/lib/geometryDataUtils.js +1 -1
- package/views/3d/webgl-engine/lib/glUtil3D.js +1 -1
- package/views/3d/webgl-engine/lib/screenPolygonOverlapUtils.js +1 -1
- package/views/3d/webgl-engine/lib/screenPolygonTriangleIntersections.js +1 -1
- package/views/3d/webgl-engine/materials/HUDMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/HUDMaterialBaseInstance.js +1 -1
- package/views/3d/webgl-engine/materials/LineMarkerMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/internal/WaterTextureRepository.js +1 -1
- package/views/3d/webgl-engine/materials/internal/bufferWriterUtils.js +1 -1
- package/views/3d/webgl-engine/materials/internal/lineMarkerBufferUtils.js +2 -0
- package/views/3d/webgl-engine/materials/internal/ribbonLineBufferUtils.js +2 -0
- package/views/3d/webgl-engine/materials/renderers/VaoRenderer.js +1 -1
- package/views/3d/webgl-engine/materials/stippleTextureRepository.js +1 -1
- package/views/3d/webgl-engine/shaders/DefaultMaterialTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/HUDMaterialTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/LineMarkerTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/hudMaterialLayouts.js +2 -0
- package/views/3d/webgl-engine/shaders/lineMarkerLayouts.js +2 -0
- package/views/draw/support/ManagedTooltipField.js +1 -1
- package/views/overlay/LineOverlayItem.js +1 -1
- package/views/overlay/TextOverlayItem.js +1 -1
- package/views/overlay/ViewOverlay.js +1 -1
- package/views/support/GroundElevationSampler.js +1 -1
- package/views/support/HighlightOptions.d.ts +2 -2
- package/views/support/HighlightOptions.js +1 -1
- package/views/support/TextureCompressionHelper.js +1 -1
- package/views/support/imageReprojection.js +1 -1
- package/views/webgl/FramebufferObject.js +1 -1
- package/views/webgl/RenderingContext.js +1 -1
- package/views/webgl/Texture.js +1 -1
- package/views/webgl/Util.js +1 -1
- package/views/webgl/rasterUtils.js +1 -1
- package/views/webgl/testSVGPremultipliedAlpha.js +1 -1
- package/widgets/FeatureTable/Grid/Grid.js +1 -1
- package/widgets/Legend/styles/support/univariateUtils.js +1 -1
- package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
- package/widgets/OrientedImageryViewer.js +1 -1
- package/widgets/ScaleRangeSlider/types.d.ts +3 -3
- package/assets/esri/core/workers/chunks/01f55004d64309f8538b.js +0 -1
- package/assets/esri/core/workers/chunks/039d9bc5b5015012f811.js +0 -1
- package/assets/esri/core/workers/chunks/08140725277de5d2e41a.js +0 -1
- package/assets/esri/core/workers/chunks/0d99bfb75dcb9fa29080.js +0 -1
- package/assets/esri/core/workers/chunks/144bad0c2415c345736a.js +0 -1
- package/assets/esri/core/workers/chunks/165ca7a97b611c8f26c4.js +0 -1
- package/assets/esri/core/workers/chunks/16cda273927ab0a39544.js +0 -1
- package/assets/esri/core/workers/chunks/1989410a618865f02dec.js +0 -1
- package/assets/esri/core/workers/chunks/29c610ce1c81ebb84a6b.js +0 -1
- package/assets/esri/core/workers/chunks/3223f9fbc76ba9ef8d13.js +0 -1
- package/assets/esri/core/workers/chunks/338d800d4efcc91cead1.js +0 -1
- package/assets/esri/core/workers/chunks/3415531224f8494d79ca.js +0 -1
- package/assets/esri/core/workers/chunks/3fdcc383bbd9cf0d274c.js +0 -1
- package/assets/esri/core/workers/chunks/46c290108a90518ef695.js +0 -1
- package/assets/esri/core/workers/chunks/48b8b57f559a53c6c513.js +0 -1
- package/assets/esri/core/workers/chunks/4a979fce1c971b614a18.js +0 -1
- package/assets/esri/core/workers/chunks/59a88dd53f8806bbec06.js +0 -1
- package/assets/esri/core/workers/chunks/5aeb5e18514644fe2cf9.js +0 -1
- package/assets/esri/core/workers/chunks/5bd1414220e42cb8ebcf.js +0 -1
- package/assets/esri/core/workers/chunks/5d781c2c6204cffffd0d.js +0 -1
- package/assets/esri/core/workers/chunks/6edc13a426e00bb93a9b.js +0 -1
- package/assets/esri/core/workers/chunks/723df53cfa0189837d01.js +0 -1
- package/assets/esri/core/workers/chunks/7400b8c454b47ee4fb3c.js +0 -1
- package/assets/esri/core/workers/chunks/7862abd24fb5c3b12e6b.js +0 -1
- package/assets/esri/core/workers/chunks/796c6195b6bf59dcc9bd.js +0 -1
- package/assets/esri/core/workers/chunks/7af4edc6e87d27b9d467.js +0 -1
- package/assets/esri/core/workers/chunks/81bcc495e6eaf2cf7474.js +0 -1
- package/assets/esri/core/workers/chunks/934e1f2153e6fad6ed23.js +0 -1
- package/assets/esri/core/workers/chunks/990e96139b5a1dccb061.js +0 -1
- package/assets/esri/core/workers/chunks/a607541959169741a943.js +0 -1
- package/assets/esri/core/workers/chunks/aa779896fd9e5c341349.js +0 -1
- package/assets/esri/core/workers/chunks/c131e0dd180a4c10e12e.js +0 -1
- package/assets/esri/core/workers/chunks/c7adb7b77721c75891f4.js +0 -1
- package/assets/esri/core/workers/chunks/cd55cad81accf51d2989.js +0 -1
- package/assets/esri/core/workers/chunks/ce324dde6d7daea33638.js +0 -1
- package/assets/esri/core/workers/chunks/d3412518a7b518860fbb.js +0 -1
- package/assets/esri/core/workers/chunks/dac69c0047488fdf986d.js +0 -1
- package/assets/esri/core/workers/chunks/dba5f44c4e4a3f075df2.js +0 -1
- package/assets/esri/core/workers/chunks/e67ea2f1714e5abeae44.js +0 -1
- package/assets/esri/core/workers/chunks/e8fb2ba7b7a4f0916325.js +0 -1
- package/assets/esri/core/workers/chunks/f10c883eb26330e3421c.js +0 -1
- package/assets/esri/core/workers/chunks/f3b4159c0722df8ffe13.js +0 -1
- package/assets/esri/core/workers/chunks/f75eec2cbc541eec9712.js +0 -1
- package/layers/geospatialPDF/projectionToWKTUtils.js +0 -3
- package/libs/maquette/cache.js +0 -2
- package/libs/maquette/dom.js +0 -2
- package/libs/maquette/h.js +0 -2
- package/libs/maquette/index.js +0 -2
- package/libs/maquette/mapping.js +0 -2
- package/libs/maquette/projection.js +0 -2
- package/libs/maquette/projector.js +0 -2
- package/libs/maquette/utilities/window-performance-projector-logger.js +0 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import t from"../../../core/Accessor.js";import"../../../core/has.js";import{destroyMaybe as n}from"../../../core/maybe.js";import{watch as r,initial as i,syncAndInitial as a}from"../../../core/reactiveUtils.js";import{property as o,subclass as s}from"../../../core/accessorSupport/decorators.js";import{DoubleClickZoom as c}from"./handlers/DoubleClickZoom.js";import{DragRotate as l}from"./handlers/DragRotate.js";import{DragZoom as u}from"./handlers/DragZoom.js";import{DragZoomBox as d}from"./handlers/DragZoomBox.js";import{GamepadNavigation as f}from"./handlers/GamepadNavigation.js";import{KeyboardNavigation as p}from"./handlers/KeyboardNavigation.js";import{MouseWheelFov as m}from"./handlers/MouseWheelFov.js";import{MouseWheelZoom as h}from"./handlers/MouseWheelZoom.js";import{PinchAndPanNavigation as g}from"./handlers/PinchAndPanNavigation.js";import{PointerDownCancelAnimation as _}from"./handlers/PointerDownCancelAnimation.js";import{TwoFingerTilt as v}from"./handlers/TwoFingerTilt.js";import{GroundDoubleClickMove as y}from"./handlers/ground/GroundDoubleClickMove.js";import{GroundMouseWheelMove as b}from"./handlers/ground/GroundMouseWheelMove.js";import{GroundNavigation as x}from"./handlers/ground/GroundNavigation.js";import{BrowserEventSource as S}from"../../input/BrowserEventSource.js";import{InputManager as C,ViewEventPriorities as w}from"../../input/InputManager.js";import{PreventContextMenu as T}from"../../input/handlers/PreventContextMenu.js";import{PreventTouchSelection as E}from"../../input/handlers/PreventTouchSelection.js";import{getPointerActions as D}from"../../input/handlers/support.js";import{Drag as O}from"../../input/recognizers/Drag.js";import{ImmediateDoubleClick as k}from"../../input/recognizers/ImmediateDoubleClick.js";import{PointerClickHoldAndDrag as A}from"../../input/recognizers/PointerClickHoldAndDrag.js";import{SingleAndDoubleClick as j}from"../../input/recognizers/SingleAndDoubleClick.js";import{VerticalTwoFingerDrag as M}from"../../input/recognizers/VerticalTwoFingerDrag.js";const N=`modeDependentNavigation`;let P=class extends t{constructor(){super(...arguments),this.mode=`default`,this._keys={fov:`Shift`,pan:{left:`ArrowLeft`,right:`ArrowRight`,forward:`ArrowUp`,backward:`ArrowDown`,up:[`u`,`U`],down:[`j`,`J`]},lookAround:{headingLeft:[`a`,`A`],headingRight:[`d`,`D`],tiltUp:[`w`,`W`],tiltDown:[`s`,`S`]},modifier:[`b`,`B`],zoom:{zoomIn:[`+`,`=`],zoomOut:[`-`,`_`]},reset:{heading:[`n`,`N`],tilt:[`p`,`P`]},precisionPanModifier:`Alt`,coarsePanModifier:`Shift`},this._updateMode=({mode:e,dragPrimary:t,dragSecondary:n,dragTertiary:r})=>{e===`pro`&&(n=`zoom`,r=t===`pan`?`rotate`:`pan`);let i={dragPrimary:t,dragSecondary:n,dragTertiary:r};this._modeDragPan&&(this._modeDragPan.pointerActions=D(`pan`,i)),this._modeGroundNavigation&&(this._modeGroundNavigation.pointerActions=D(`pan`,i)),this._modeDragRotate&&(this._modeDragRotate.pointerActions=D(`rotate`,i)),this._modeGroundNavigationDragRotate&&(this._modeGroundNavigationDragRotate.pointerActions=D(`rotate`,i)),this._modeDragZoom&&(this._modeDragZoom.pointerActions=D(`zoom`,i))}}destroy(){this.disconnect()}get
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../../core/Accessor.js";import"../../../core/has.js";import{destroyMaybe as n}from"../../../core/maybe.js";import{watch as r,initial as i,syncAndInitial as a}from"../../../core/reactiveUtils.js";import{property as o,subclass as s}from"../../../core/accessorSupport/decorators.js";import{DoubleClickZoom as c}from"./handlers/DoubleClickZoom.js";import{DragRotate as l}from"./handlers/DragRotate.js";import{DragZoom as u}from"./handlers/DragZoom.js";import{DragZoomBox as d}from"./handlers/DragZoomBox.js";import{GamepadNavigation as f}from"./handlers/GamepadNavigation.js";import{KeyboardNavigation as p}from"./handlers/KeyboardNavigation.js";import{MouseWheelFov as m}from"./handlers/MouseWheelFov.js";import{MouseWheelZoom as h}from"./handlers/MouseWheelZoom.js";import{PinchAndPanNavigation as g}from"./handlers/PinchAndPanNavigation.js";import{PointerDownCancelAnimation as _}from"./handlers/PointerDownCancelAnimation.js";import{TwoFingerTilt as v}from"./handlers/TwoFingerTilt.js";import{GroundDoubleClickMove as y}from"./handlers/ground/GroundDoubleClickMove.js";import{GroundMouseWheelMove as b}from"./handlers/ground/GroundMouseWheelMove.js";import{GroundNavigation as x}from"./handlers/ground/GroundNavigation.js";import{BrowserEventSource as S}from"../../input/BrowserEventSource.js";import{InputManager as C,ViewEventPriorities as w}from"../../input/InputManager.js";import{PreventContextMenu as T}from"../../input/handlers/PreventContextMenu.js";import{PreventTouchSelection as E}from"../../input/handlers/PreventTouchSelection.js";import{getPointerActions as D}from"../../input/handlers/support.js";import{Drag as O}from"../../input/recognizers/Drag.js";import{ImmediateDoubleClick as k}from"../../input/recognizers/ImmediateDoubleClick.js";import{PointerClickHoldAndDrag as A}from"../../input/recognizers/PointerClickHoldAndDrag.js";import{SingleAndDoubleClick as j}from"../../input/recognizers/SingleAndDoubleClick.js";import{VerticalTwoFingerDrag as M}from"../../input/recognizers/VerticalTwoFingerDrag.js";const N=`modeDependentNavigation`;let P=class extends t{constructor(){super(...arguments),this.mode=`default`,this._keys={fov:`Shift`,pan:{left:`ArrowLeft`,right:`ArrowRight`,forward:`ArrowUp`,backward:`ArrowDown`,up:[`u`,`U`],down:[`j`,`J`]},lookAround:{headingLeft:[`a`,`A`],headingRight:[`d`,`D`],tiltUp:[`w`,`W`],tiltDown:[`s`,`S`]},modifier:[`b`,`B`],zoom:{zoomIn:[`+`,`=`],zoomOut:[`-`,`_`]},reset:{heading:[`n`,`N`],tilt:[`p`,`P`]},precisionPanModifier:`Alt`,coarsePanModifier:`Shift`},this._updateMode=({mode:e,dragPrimary:t,dragSecondary:n,dragTertiary:r})=>{e===`pro`&&(n=`zoom`,r=t===`pan`?`rotate`:`pan`);let i={dragPrimary:t,dragSecondary:n,dragTertiary:r};this._modeDragPan&&(this._modeDragPan.pointerActions=D(`pan`,i)),this._modeGroundNavigation&&(this._modeGroundNavigation.pointerActions=D(`pan`,i)),this._modeDragRotate&&(this._modeDragRotate.pointerActions=D(`rotate`,i)),this._modeGroundNavigationDragRotate&&(this._modeGroundNavigationDragRotate.pointerActions=D(`rotate`,i)),this._modeDragZoom&&(this._modeDragZoom.pointerActions=D(`zoom`,i))}}destroy(){this.disconnect()}get updating(){return!!this._inputManager?.updating}get latestPointerInfo(){return this._inputManager?.latestPointerInfo}get latestPenInfo(){return this._inputManager?.latestPenInfo}get multiTouchActive(){return this._inputManager?.multiTouchActive??!1}disconnect(){this.removeAllHandles(),this.view.viewEvents.disconnect(),this._modeDragPan=null,this._modeGroundNavigation=null,this._modeDragRotate=null,this._modeGroundNavigationDragRotate=null,this._modeDragZoom=null,this._modeKeyboardNavigation=null,this._inputManager=n(this._inputManager),this._source=n(this._source)}connect(){let e=this.view;this._source=new S(this.view.surface,e.input);let t=[new k,new A,new j,new O(this.view.navigation),new M],n=new C({eventSource:this._source,recognizers:t});this._inputManager=n,n.installHandlers(`prevent-context-menu`,[new T],w.INTERNAL),n.installHandlers(`prevent-touch-text-selection-gesture`,[new E(this.view)],w.INTERNAL),this._modeDragPan=new g(e,[`primary`]),this._modeDragRotate=new l(e,[`secondary`],0),this._modeDragZoom=new u(e,[`tertiary`],this._keys.fov),this._modeKeyboardNavigation=new p(e,this._keys);let o=[new _(e),new c(e),new f(e),new m(e,this._keys.fov,!0),new h(e),new d(e),new l(e,[`primary`],1,this._keys.modifier),new x(e,[`secondary`],this._keys.modifier),this._modeDragRotate,this._modeDragZoom,this._modeDragPan,this._modeKeyboardNavigation,new v(e)];this._modeGroundNavigation=new x(e,[`primary`]),this._modeGroundNavigationDragRotate=new l(e,[`secondary`],1);let s=[this._modeGroundNavigation,new m(e,this._keys.fov,!1),new x(e,[`tertiary`]),this._modeGroundNavigationDragRotate,this._modeKeyboardNavigation,new y(e),new b(e)];this.view.viewEvents.connect(n),this.addHandles([r(()=>this.view.navigation.mode,e=>{switch(n.hasHandlers(N)&&n.uninstallHandlers(N),e.type){case`default`:n.installHandlers(N,o,w.INTERNAL);break;case`ground`:n.installHandlers(N,s,w.INTERNAL)}},{initial:!0}),r(()=>this.view.navigation?.browserTouchPanEnabled,e=>{this._source.browserTouchPanningEnabled=!e},i),r(()=>{let{actionMap:e}=this.view.navigation,{dragPrimary:t,dragSecondary:n,dragTertiary:r}=e;return{mode:this.mode,dragPrimary:t,dragSecondary:n,dragTertiary:r}},this._updateMode,a)])}isModifierKeyDown(e){return this._inputManager?.isModifierKeyDown(e)??!1}get test(){}};e([o()],P.prototype,`view`,void 0),e([o({type:[`default`,`pro`]})],P.prototype,`mode`,void 0),e([o({readOnly:!0})],P.prototype,`updating`,null),e([o()],P.prototype,`latestPointerInfo`,null),e([o()],P.prototype,`latestPenInfo`,null),e([o()],P.prototype,`multiTouchActive`,null),e([o()],P.prototype,`_inputManager`,void 0),P=e([s(`esri.views.3d.input.SceneInputManager`)],P);const F=P;export{F as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import"../../../core/has.js";import t from"../../../core/Logger.js";import{abortMaybe as n,removeMaybe as r,destroyMaybe as i}from"../../../core/maybe.js";import{throwIfAborted as a}from"../../../core/promiseUtils.js";import{watch as o,whenOnce as s,initial as c}from"../../../core/reactiveUtils.js";import{Milliseconds as l}from"../../../core/time.js";import{isUint32Array as u}from"../../../core/typedArrayUtil.js";import{unitFromRESTJSON as d,convertUnit as f}from"../../../core/units.js";import{property as p,subclass as m}from"../../../core/accessorSupport/decorators.js";import{fromValues as h}from"../../../core/libs/gl-matrix-2/factories/quatf64.js";import{getReferenceEllipsoid as g}from"../../../geometry/ellipsoidUtils.js";import _ from"../../../geometry/HeightModelInfo.js";import{create as v}from"../../../geometry/support/aaBoundingBox.js";import{isCompatible as y}from"../../../geometry/support/heightModelInfoUtils.js";import{isInEffectiveScaleRange as b}from"../../../geometry/support/scaleUtils.js";import{isPlateCarree as x,isWebMercator as S,equals as C,isGeographic as w}from"../../../geometry/support/spatialReferenceUtils.js";import T from"../../../geometry/support/WKIDUnitConversion.js";import{validateEntity3D as E,makeCacheKey as D,getHeightModelInfoFromVCS as O}from"../../../layers/support/tiles3DUtils.js";import{getElevationOffsetInMeters as k}from"../../../support/elevationInfoUtils.js";import{getMetersPerUnit as A}from"../../../symbols/support/unitConversionUtils.js";import{GaussianSplatLayerViewPerformanceInfo as j}from"./GaussianSplatLayerViewPerformanceInfo.js";import{LayerView3D as M}from"./LayerView3D.js";import{addLayerViewToWasm as N,getLyr3DWasm as P,removeLayerViewFromWasm as F}from"./Lyr3DWasm.js";import{LayerElevationProvider as I}from"./i3s/LayerElevationProvider.js";import{ElevationRange as L}from"../support/ElevationRange.js";import{projectToBoundingBox as R}from"../support/extentUtils.js";import{Obb as z}from"../support/orientedBoundingBox.js";import{splatPageSizeInU32 as B,gaussiansPerPage as V,packedGaussianSizeInU32 as H,splatAtlasTextureWidth as U}from"../support/gaussianSplatting/GaussianSplatAtlasPages.js";import{GaussianSplatDataStore as W}from"../support/gaussianSplatting/GaussianSplatDataStore.js";import{GaussianSplatFadeHelper as G}from"../support/gaussianSplatting/GaussianSplatFadeHelper.js";import{GaussianSplatIntersectionHandler as K}from"../support/gaussianSplatting/GaussianSplatIntersectionHandler.js";import{GaussianTile as q}from"../support/gaussianSplatting/GaussianTile.js";import{GaussianSplatDepthRenderer as J}from"../webgl-engine/lib/GaussianSplatDepthRenderer.js";import{GaussianSplatRenderer as Y}from"../webgl-engine/lib/GaussianSplatRenderer.js";import{GaussianSplatShadows as X}from"../webgl-engine/lib/GaussianSplatShadows.js";import Z from"../../layers/LayerView.js";import{spatialReferenceIncompatibleError as ee}from"../../support/layerViewUtils.js";import{TaskPriority as te}from"../../support/Scheduler.js";var Q;const ne=()=>t.getLogger(`esri.views.3d.layers.GaussianSplatLayerView3D`),re=(()=>{let e=new Int16Array(256);e[0]=-255;for(let t=1;t<e.length;t++)e[t]=Math.round(16*Math.log(t/255));return e})();let $=class extends M(Z){static{Q=this}static{this.createRenderableBatchSize=64}static{this.uploadBatchPageCount=16}constructor(e){super(e),this.type=`gaussian-splat-3d`,this.ignoresMemoryFactor=!1,this._tileHandles=new Map,this._pageBuffer=new Uint32Array(B*Q.uploadBatchPageCount),this._tmpTilesWithChangedVisibility=[],this._renderablesBeingCreated=new Set,this._currentLyr3dVisibilityChange=0,this._tileFadeInsAwaitingInitialSort=new Set,this._pendingTileFadeOuts=new Map,this._pendingFadeDuration=l(0),this._createRenderableAbortController=new AbortController,this.skipHeightModelInfoValidation=!0,this._initializationController=null,this._wasmLayerId=-1,this._metersPerVCSUnit=1,this._usedTileMemory=0,this._cacheTileMemory=0,this._useEsriCrs=!1,this.fullExtentInLocalViewSpatialReference=null,this._suspendedHandle=null,this._conversionBuffer=new ArrayBuffer(4),this._u32View=new Uint32Array(this._conversionBuffer),this._f32View=new Float32Array(this._conversionBuffer);let t=e.view.resourceController;this._memCache=t.memoryController.newCache(`GaussianSplat-${this.uid}`,e=>this._deleteTile(e)),this._frameTask=t.scheduler.registerTask(te.GAUSSIAN_SPLAT_TEXTURE_ATLAS)}get _clippingBox(){if(!this.view?.clippingArea)return null;let e=v();return R(this.view.clippingArea,e,this.view.renderSpatialReference)?e:null}get clippingBox(){return this._renderer?.clippingBox??null}initialize(){let{view:e}=this;this.addHandles([o(()=>e.qualitySettings.fadeDuration,e=>{this.data&&(this.fadeHelper.onFadeDurationChanged(e),this.updateFadingTexture())})]),this.addResolvingPromise(this._initializeAsync(e))}async _initializeAsync(e){this._initializationController=new AbortController;let{signal:t}=this._initializationController;if(await s(()=>e?.defaultsFromMap.heightModelInfoReady,t),a(t),!this._canProjectWithoutEngine())throw ee(`layer`,this.layer.spatialReference.wkid,e.renderSpatialReference?.wkid);this._wasmLayerId=await N(this,t),a(t),this._renderer=new Y({view:e,layerView:this}),this.data=new W(this._renderer,(e,t)=>this._onSortComplete(e,t),()=>this._freeInvisibleTiles()),this._shadows=new X({view:e,layerView:this}),this.fadeHelper=new G(this),this._prepassDepthRenderer=new J({view:e,layerView:this});let n=new K(this);this._intersectionHandler=n,e.sceneIntersectionHelper.addIntersectionHandler(n),this._elevationProvider=new I({view:e,layerElevationSource:this,intersectionHandler:n}),e.elevationProvider.register(2,this._elevationProvider),this.addHandles([o(()=>this.layer.elevationInfo,e=>this._elevationInfoChanged(e)),o(()=>this.slicePlaneEnabled,e=>this._slicePlaneEnabledChanged(e),c)]),this._suspendedHandle=o(()=>this.suspended,e=>this._wasm?.setEnabled(this,!e),c),this.addHandles([o(()=>this._clippingBox,e=>{this._renderer&&(this._renderer.clippingBox=e)},c),o(()=>this.maximumGaussianCount,e=>this._wasm?.setMaximumGaussianSplatCount(Math.min(e,this.data.textureAtlas.maximumSupportedVisibleGaussians)),c)]),this._initializationController=null}get wasmLayerId(){return this._wasmLayerId}get metersPerVCSUnit(){return this._metersPerVCSUnit}get tileHandles(){return this._tileHandles}updateFadingTexture(){this.data.fadingTexture.updateTexture(this.data.textureAtlas.pageAllocator.pageCount)}get _wasm(){return P(this.view)}get usedMemory(){return this._usedTileMemory+(this.data?.usedMemory??0)}get cachedMemory(){return this._cacheTileMemory}get unloadedMemory(){return 0}get useEsriCrs(){return this._useEsriCrs}get elevationProvider(){return this._elevationProvider}get elevationOffset(){return k(this.layer.elevationInfo)}get elevationRange(){return this._intersectionHandler?.elevationRange}getElevationRange(e){return this._intersectionHandler.getElevationRange(e)}get fullExtent(){return this.layer.fullExtent}get visibleAtCurrentScale(){return b(this.layer.effectiveScaleRange,this.view.scale)}isUpdating(){let e=this._wasm;return this._wasmLayerId<0||e==null?!1:e.isUpdating(this._wasmLayerId)||this.data.updating||this.fadeHelper.updating}updatingFlagChanged(){this.notifyChange(`updating`)}async createRenderable(e){if(this.destroyed||this.destroying)throw Error(`IntegratedMesh3DTilesLayerView3D: createRenderable called after destroy`);let{entity3d:t}=e;if(!E(t))throw Error(`entity3D not valid`);let n=t.desc.geometry.prims[t.validPrimitiveIndices[0]];if(n.atrbs.length<1||n.atrbs[0].sem!==`GSplatPacked`)throw Error(`entity3D not valid`);let r=n.atrbs[0],i=t.assets[r.assetId];if(!i)throw Error(`entity3D not valid`);let a=i.count;if(a===0)return ne().warnOnce(`encountered tile with zero Gaussians`),()=>({memUsageBytes:0,numGaussians:0});let o=null;if(i.dataType===`U32`&&u(i.data))o=i.data;else throw Error(`unexpected GaussianSplat Entity3D asset.data format`);let s=this.extractHeader(o),c=2.048,l=s.tileOrigin.x*c,d=s.tileOrigin.y*c,f=s.tileOrigin.z*c,p=t.desc,m=p.obb.quaternion,_=new z(p.obb.center,p.obb.halfSize,h(...m)),v=this.view.state.isGlobal,y=v?g(this.view.spatialReference).radius:0,b={handle:e.handle,bufferView:o,totalGaussians:a,packedHeader:s.packedHeader,tileOrigin:{x:l,y:d,z:f},invPosScale:s.invPosScale,obb:_,origin:{x:_.centerX,y:_.centerY,z:_.centerZ},isGlobal:v,ellipsoidRadius:y};this._renderablesBeingCreated.add(e.handle);let x;try{x=await this._frameTask.scheduleGenerator(e=>this._createRenderableTask(b,e),this._createRenderableAbortController.signal)}finally{this._renderablesBeingCreated.delete(e.handle)}return()=>x}*_createRenderableTask(e,t){let{handle:n,bufferView:r,totalGaussians:i,packedHeader:a,tileOrigin:o,invPosScale:s,obb:c,origin:l,isGlobal:u,ellipsoidRadius:d}=e,f=o.x,p=o.y,m=o.z,h=l.x,g=l.y,_=l.z,v=new Float32Array(i*3),y=new Uint32Array(i),b=new Uint32Array(i),x=[],S=Math.ceil(i/V),C=1/0,w=-1/0,T=1/0,E=-1/0,D=0,O=-1,k=0,A=0;for(let e=0;e<i;e++){let n=e*H,i=r[n],a=r[n+1],o=r[n+2],c=r[n+3],l=a&16383,d=a>>>14&16383,x=a>>>28&15|(o&1023)<<4,S=c>>>24,j=re[S],M=(o>>>10&255)+j,N=(o>>>18&255)+j,P=(o>>>26&63|(c&3)<<6)+j,F=M>0?M:0,I=N>0?N:0,L=P>0?P:0,R=F|I<<8|L<<16,z=Math.max(F,I,L),B=l*s+f,V=d*s+p,U=x*s+m;if(v[D]=B-h,v[D+1]=V-g,v[D+2]=U-_,u){let e=B*B+V*V+U*U;T=Math.min(T,e),E=Math.max(E,e)}else C=Math.min(C,U),w=Math.max(w,U);y[e]=i,b[e]=R,z>O&&(O=z),S>k&&(k=S),D+=3,A++,A===Q.createRenderableBatchSize&&(A=0,t.madeProgress()&&(t=yield))}A>0&&t.madeProgress()&&(t=yield),u&&(C=Math.sqrt(T)-d,w=Math.sqrt(E)-d);let j=this._extractGaussianSplatMbsRadiusSquared(O),M=new L(C,w),N=this.data.textureAtlas,P=this.data.headerTexture;try{for(let e=0;e<S;e+=Q.uploadBatchPageCount){let n=Math.min(S,e+Q.uploadBatchPageCount);for(let t=e;t<n;t++){let e=N.allocatePage();if(e===null&&(this._freeInvisibleTiles(),e=N.allocatePage()),e===null)throw Error(`ran out of gaussian splat memory`);x.push(e)}for(let t=e;t<n;){let e=x[t],o=t+1;for(;o<n&&x[o]===x[o-1]+1;)o++;let s=o-t,c=i-t*V,l=Math.min(c,s*V),u=t*B,d=l*H;this._pageBuffer.set(r.subarray(u,u+d));let f=e*V,p=f%U,m=Math.floor(f/U);N.update(p,m,this._pageBuffer,s),P.update(e,a,s),t=o}t.madeProgress()&&(t=yield)}}catch(e){throw N.freePages(x),e}let F=new q({handle:n,obb:c,pageIds:x,relativePositions:v,packedRotations:y,packedOpacityScaledScales:b,gaussianCount:i,maxSplatMbsRadiusSquared:j,maxGaussianOpacity:k/255,elevationRange:M});return this._tileHandles.set(n,F),this._cacheTileMemory+=F.usedMemory,this._memCache.put(`${F.handle}`,F),{memUsageBytes:F.usedMemory,numGaussians:i}}_extractGaussianSplatMbsRadiusSquared(e){return Math.exp(e/8-20)*9}freeRenderable(e){this._tileFadeInsAwaitingInitialSort.delete(e),this._pendingTileFadeOuts.delete(e);let t=this.data?.textureAtlas,n=!1,r=this._tileHandles.get(e);if(r){let i=!1;for(let t of this._pendingTileFadeOuts.values())t.incomingTileHandles.has(e)&&(t.visibilityChange=this._currentLyr3dVisibilityChange+1,i=!0);i&&(this._currentLyr3dVisibilityChange++,n=!0),r.lifecycleState===0?this._cacheTileMemory-=r.usedMemory:(n=!0,this.fadeHelper.onTileDiscarded(r),this._usedTileMemory-=r.usedMemory,this._intersectionHandler.removeTile(r)),t&&r.pageIds.forEach(e=>t.freePage(e)),this._removeTileCacheEntry(r),this._tileHandles.delete(e)}n&&this.updateActiveTileVisibility()}_removeTileCacheEntry(e){this._memCache.pop(`${e.handle}`)}notifyTileObbsChanged(e){this._elevationProvider&&this._elevationProvider.notifyObjectsChangedFunctional(e.length,t=>{for(let{obb:n}of e)if(!t(n))break})}setRenderableVisibility(e,t,n){let r=this.fadeHelper.updateFadeDuration(),i=new ie(this._currentLyr3dVisibilityChange+1),a=new Set,o=!1;for(let s=0;s<n;s++){let n=this._tileHandles.get(e[s]);if(!n)continue;let c=t[s]?this._prepareTileFadeIn(n,r):this._prepareTileFadeOut(n,i);t[s]&&i.incomingTileHandles.add(n.handle),c&&a.add(n.handle),o||=c}if(o){if(this._currentLyr3dVisibilityChange++,this._pendingFadeDuration=r,this._updatePendingTileHandoffs(a,i),i.incomingTileHandles.size===0)for(let e of this._tileFadeInsAwaitingInitialSort)i.incomingTileHandles.add(e);this.updateActiveTileVisibility()}}_updatePendingTileHandoffs(e,t){for(let n of new Set(this._pendingTileFadeOuts.values())){if(n===t)continue;let r=!1;for(let i of e)n.incomingTileHandles.has(i)&&(r=!0,t.incomingTileHandles.size>0&&n.incomingTileHandles.delete(i));if(r){n.visibilityChange=t.visibilityChange;for(let e of t.incomingTileHandles)n.incomingTileHandles.add(e)}}}_prepareTileFadeIn(e,t){let n=this._pendingTileFadeOuts.delete(e.handle);return e.lifecycleState===2?(this.fadeHelper.fadeTile(e,0,t),!1):this._tileFadeInsAwaitingInitialSort.has(e.handle)?n:(e.lifecycleState===0&&this._popTileFromCache(e),e.lifecycleState=1,this._tileFadeInsAwaitingInitialSort.add(e.handle),!0)}_prepareTileFadeOut(e,t){let n=this._tileFadeInsAwaitingInitialSort.delete(e.handle);return n&&e.lifecycleState===1&&(this.moveTileToCache(e),e.lifecycleState=0),e.lifecycleState===2?this._pendingTileFadeOuts.has(e.handle)?n:(this._pendingTileFadeOuts.set(e.handle,t),!0):n}_onSortComplete(e,t){let n=this._tmpTilesWithChangedVisibility;n.length=0,this._triggerFadeIns(e,n);let r=this._triggerFadeOuts(t,n);n.length>0&&this.notifyTileObbsChanged(n),r&&this.updateActiveTileVisibility()}_triggerFadeIns(e,t){for(let n of e)this._tileHandles.get(n.handle)===n&&this._tileFadeInsAwaitingInitialSort.delete(n.handle)&&(n.lifecycleState=2,t.push(n),this.fadeHelper.fadeTile(n,0,this._pendingFadeDuration))}_triggerFadeOuts(e,t){let n=!1;for(let t of this._pendingTileFadeOuts.values())if(e>=t.visibilityChange){n=!0;break}if(!n)return!1;let r=this._pendingFadeDuration,i=this._pendingFadeDuration;for(let e of this._tileHandles.values()){let{fadeDirection:t,fadeDuration:n,fadeProgress:a}=e;if(t!==0||n==null||a==null)continue;let o=n*(1-a);r=l(Math.max(r,o)),i=l(Math.max(i,n))}let a=!1;for(let[n,o]of this._pendingTileFadeOuts){if(e<o.visibilityChange)continue;this._pendingTileFadeOuts.delete(n);let s=this._tileHandles.get(n);if(s){let e=s.lifecycleState===2,n=s.opacityModifier===1?r:i;this.fadeHelper.fadeTile(s,1,n),e&&s.lifecycleState===0&&(t.push(s),a=!0)}}return a}_popTileFromCache(e){this._usedTileMemory+=e.usedMemory,this._cacheTileMemory-=e.usedMemory,this._intersectionHandler.addTile(e),this._memCache.pop(D(e.handle))}moveTileToCache(e){this._usedTileMemory-=e.usedMemory,this._cacheTileMemory+=e.usedMemory,this._intersectionHandler.removeTile(e),this._memCache.put(D(e.handle),e)}destroy(){this._initializationController=n(this._initializationController),this._createRenderableAbortController.abort(),F(this),this._suspendedHandle&&=r(this._suspendedHandle),this._intersectionHandler&&=(this.view.sceneIntersectionHelper.removeIntersectionHandler(this._intersectionHandler),null),this._elevationProvider&&this.view.elevationProvider&&(this._elevationProvider.notifyObjectsChangedFunctional(this._tileHandles.size,e=>{for(let{obb:t}of this._tileHandles.values())if(!e(t))break}),this.view.elevationProvider.unregister(this._elevationProvider),this._elevationProvider=null),this._frameTask.remove(),this._shadows=i(this._shadows),this._prepassDepthRenderer=i(this._prepassDepthRenderer),this._renderer=i(this._renderer),this._memCache.destroy(),this.data=i(this.data)}_canProjectWithoutEngine(){if(this.view.state.viewingMode===1||x(this.view.renderSpatialReference)||S(this.view.renderSpatialReference))return!0;if(this.layer.esriCrsSpatialReference&&C(this.layer.esriCrsSpatialReference,this.view.renderSpatialReference)){if(this.layer.esriCrsSpatialReference.vcsWkid===115700)return!1;let e=O(this.layer.esriCrsSpatialReference);if(!e){let t=this.layer.esriCrsSpatialReference,n=w(t),r=`meters`;!n&&t.wkid&&t.wkid!==-1&&(r=d(T.units[T[t.wkid]])),r&&(e=new _({heightModel:`gravity-related-height`,heightUnit:r}))}let t=this.view.heightModelInfo;return this._useEsriCrs=y(e,t,!1)===0,this._useEsriCrs&&(e&&(this._metersPerVCSUnit=f(1,e.heightUnit,`meters`)),this.fullExtentInLocalViewSpatialReference=this.layer.esriCrsFullExtent),this._useEsriCrs}return!1}_elevationInfoChanged(e){if(!e?.offset)this._wasm?.setLayerOffset(this,0);else if(!this._useEsriCrs)this._wasm?.setLayerOffset(this,k(e));else{let t=A(e?.unit)/this._metersPerVCSUnit,n=e?.offset??0;this._wasm?.setLayerOffset(this,n*t)}}_slicePlaneEnabledChanged(e){this._renderer&&(this._renderer.slicePlaneEnabled=e),this._intersectionHandler&&(this._intersectionHandler.slicePlaneEnabled=e)}updateActiveTileVisibility(){let e=[];for(let t of this._tileHandles.values())t.lifecycleState!==0&&e.push(t);this.data.updateGaussianVisibility(e,this._currentLyr3dVisibilityChange),this.notifyChange(`updating`)}get maximumGaussianCount(){return this.view.qualitySettings.gaussianSplat.maximumNumberOfGaussians*this.view.quality}set maximumGaussianCount(e){this._set(`maximumGaussianCount`,e)}_freeInvisibleTiles(){for(let e of this._tileHandles.values())e.lifecycleState===0&&!this._renderablesBeingCreated.has(e.handle)&&this._deleteTile(e)}extractHeader(e){let t=e.length-4,n=this.reinterpretU32AsFloat(e[t]),r=this.reinterpretU32AsFloat(e[t+1]),i=this.reinterpretU32AsFloat(e[t+2]),a=1/(1<<(e[t+3]&255));return{packedHeader:e.subarray(t,t+4),tileOrigin:{x:n,y:r,z:i},invPosScale:a}}_deleteTile(e){this._renderablesBeingCreated.has(e.handle)||this._wasm?.onRenderableEvicted(this,e.handle,e.usedMemory),this.freeRenderable(e.handle)}reinterpretU32AsFloat(e){return this._u32View[0]=e,this._f32View[0]}get performanceInfo(){let e=0,t=0;this._tileHandles.forEach(n=>{n.lifecycleState===0?t++:e++});let n=this.data?.textureAtlasMemory??0,r=this.data?.headerTextureMemory??0,i=this.data?.orderTextureMemory??0,a=this.data?.fadingTextureMemory??0,o=this.data?.sortBufferMemory??0;return new j(this.usedMemory,e,this._usedTileMemory,t,this._cacheTileMemory,n,r,i,a,o)}get test(){}};e([p()],$.prototype,`layer`,void 0),e([p({readOnly:!0})],$.prototype,`_clippingBox`,null),e([p()],$.prototype,`elevationOffset`,null),e([p({readOnly:!0})],$.prototype,`visibleAtCurrentScale`,null),e([p()],$.prototype,`fullExtentInLocalViewSpatialReference`,void 0),e([p()],$.prototype,`maximumGaussianCount`,null),$=Q=e([m(`esri.views.3d.layers.GaussianSplatLayerView3D`)],$);class ie{constructor(e){this.visibilityChange=e,this.incomingTileHandles=new Set}}const ae=$;export{ae as default};
|
|
2
|
+
import{__decorate as e}from"tslib";import"../../../core/has.js";import t from"../../../core/Logger.js";import{abortMaybe as n,removeMaybe as r,destroyMaybe as i}from"../../../core/maybe.js";import{throwIfAborted as a}from"../../../core/promiseUtils.js";import{watch as o,whenOnce as s,initial as c}from"../../../core/reactiveUtils.js";import{unitFromRESTJSON as l,convertUnit as u}from"../../../core/units.js";import{property as d,subclass as f}from"../../../core/accessorSupport/decorators.js";import{getReferenceEllipsoid as p}from"../../../geometry/ellipsoidUtils.js";import m from"../../../geometry/HeightModelInfo.js";import{create as h}from"../../../geometry/support/aaBoundingBox.js";import{isCompatible as g}from"../../../geometry/support/heightModelInfoUtils.js";import{isInEffectiveScaleRange as _}from"../../../geometry/support/scaleUtils.js";import{isPlateCarree as v,isWebMercator as y,equals as b,isGeographic as x}from"../../../geometry/support/spatialReferenceUtils.js";import S from"../../../geometry/support/WKIDUnitConversion.js";import{makeCacheKey as C,getHeightModelInfoFromVCS as w}from"../../../layers/support/tiles3DUtils.js";import{getElevationOffsetInMeters as T}from"../../../support/elevationInfoUtils.js";import{getMetersPerUnit as E}from"../../../symbols/support/unitConversionUtils.js";import{GaussianSplatLayerViewPerformanceInfo as D}from"./GaussianSplatLayerViewPerformanceInfo.js";import{LayerView3D as O}from"./LayerView3D.js";import{addLayerViewToWasm as k,getLyr3DWasm as A,removeLayerViewFromWasm as j}from"./Lyr3DWasm.js";import{LayerElevationProvider as M}from"./i3s/LayerElevationProvider.js";import{projectToBoundingBox as N}from"../support/extentUtils.js";import{GaussianSplatDataStore as P}from"../support/gaussianSplatting/GaussianSplatDataStore.js";import{GaussianSplatFadeHelper as F}from"../support/gaussianSplatting/GaussianSplatFadeHelper.js";import{GaussianSplatIntersectionHandler as I}from"../support/gaussianSplatting/GaussianSplatIntersectionHandler.js";import{GaussianTileBuilder as L}from"../support/gaussianSplatting/GaussianTileBuilder.js";import{GaussianTileLifecycle as R}from"../support/gaussianSplatting/GaussianTileLifecycle.js";import{GaussianSplatDepthRenderer as z}from"../webgl-engine/lib/GaussianSplatDepthRenderer.js";import{GaussianSplatRenderer as B}from"../webgl-engine/lib/GaussianSplatRenderer.js";import{GaussianSplatShadows as V}from"../webgl-engine/lib/GaussianSplatShadows.js";import H from"../../layers/LayerView.js";import{spatialReferenceIncompatibleError as U}from"../../support/layerViewUtils.js";import{TaskPriority as W}from"../../support/Scheduler.js";const G=()=>t.getLogger(`esri.views.3d.layers.GaussianSplatLayerView3D`);let K=class extends O(H){constructor(e){super(e),this.type=`gaussian-splat-3d`,this.ignoresMemoryFactor=!1,this._tileHandles=new Map,this._renderablesBeingCreated=new Set,this._tileLifecycle=new R(this),this._createRenderableAbortController=new AbortController,this.skipHeightModelInfoValidation=!0,this._initializationController=null,this._wasmLayerId=-1,this._metersPerVCSUnit=1,this._usedTileMemory=0,this._cacheTileMemory=0,this._useEsriCrs=!1,this.fullExtentInLocalViewSpatialReference=null,this._suspendedHandle=null;let t=e.view.resourceController;this._memCache=t.memoryController.newCache(`GaussianSplat-${this.uid}`,e=>this._deleteTile(e)),this._frameTask=t.scheduler.registerTask(W.GAUSSIAN_SPLAT_TEXTURE_ATLAS)}get _clippingBox(){if(!this.view?.clippingArea)return null;let e=h();return N(this.view.clippingArea,e,this.view.renderSpatialReference)?e:null}get clippingBox(){return this._renderer?.clippingBox??null}initialize(){let{view:e}=this;this.addHandles([o(()=>e.qualitySettings.fadeDuration,e=>{this.data&&(this.fadeHelper.onFadeDurationChanged(e),this.updateFadingTexture())})]),this.addResolvingPromise(this._initializeAsync(e))}async _initializeAsync(e){this._initializationController=new AbortController;let{signal:t}=this._initializationController;if(await s(()=>e?.defaultsFromMap.heightModelInfoReady,t),a(t),!this._canProjectWithoutEngine())throw U(`layer`,this.layer.spatialReference.wkid,e.renderSpatialReference?.wkid);this._wasmLayerId=await k(this,t),a(t),this._renderer=new B({view:e,layerView:this}),this.data=new P(this._renderer,(e,t)=>this._tileLifecycle.onSortComplete(e,t),()=>this._freeInvisibleTiles()),this._tileBuilder=new L(this.data.textureAtlas,this.data.headerTexture,()=>this._freeInvisibleTiles()),this._shadows=new V({view:e,layerView:this}),this.fadeHelper=new F(this,e=>this._tileLifecycle.onTileFullyFadedOut(e)),this._prepassDepthRenderer=new z({view:e,layerView:this});let n=new I(this);this._intersectionHandler=n,e.sceneIntersectionHelper.addIntersectionHandler(n),this._elevationProvider=new M({view:e,layerElevationSource:this,intersectionHandler:n}),e.elevationProvider.register(2,this._elevationProvider),this.addHandles([o(()=>this.layer.elevationInfo,e=>this._elevationInfoChanged(e)),o(()=>this.slicePlaneEnabled,e=>this._slicePlaneEnabledChanged(e),c)]),this._suspendedHandle=o(()=>this.suspended,e=>this._wasm?.setEnabled(this,!e),c),this.addHandles([o(()=>this._clippingBox,e=>{this._renderer&&(this._renderer.clippingBox=e)},c),o(()=>this.maximumGaussianCount,e=>this._wasm?.setMaximumGaussianSplatCount(Math.min(e,this.data.textureAtlas.maximumSupportedVisibleGaussians)),c)]),this._initializationController=null}get wasmLayerId(){return this._wasmLayerId}get metersPerVCSUnit(){return this._metersPerVCSUnit}get tileHandles(){return this._tileHandles}updateFadingTexture(){this.data.fadingTexture.updateTexture(this.data.textureAtlas.pageAllocator.pageCount)}get _wasm(){return A(this.view)}get usedMemory(){return this._usedTileMemory+(this.data?.usedMemory??0)}get cachedMemory(){return this._cacheTileMemory}get unloadedMemory(){return 0}get useEsriCrs(){return this._useEsriCrs}get elevationProvider(){return this._elevationProvider}get elevationOffset(){return T(this.layer.elevationInfo)}get elevationRange(){return this._intersectionHandler?.elevationRange}getElevationRange(e){return this._intersectionHandler.getElevationRange(e)}get fullExtent(){return this.layer.fullExtent}get visibleAtCurrentScale(){return _(this.layer.effectiveScaleRange,this.view.scale)}isUpdating(){let e=this._wasm;return this._wasmLayerId<0||e==null?!1:e.isUpdating(this._wasmLayerId)||this.data.updating||this.fadeHelper.updating}updatingFlagChanged(){this.notifyChange(`updating`)}async createRenderable(e){if(this.destroyed||this.destroying)throw Error(`IntegratedMesh3DTilesLayerView3D: createRenderable called after destroy`);let t=this._tileBuilder.prepare(e);if(!t)return G().warnOnce(`encountered tile with zero Gaussians`),()=>({memUsageBytes:0,numGaussians:0});let n=this.view.state.isGlobal,r=n?p(this.view.spatialReference).radius:0,i={...t,isGlobal:n,ellipsoidRadius:r};this._renderablesBeingCreated.add(e.handle);let a;try{a=await this._frameTask.scheduleGenerator(e=>this._createRenderableTask(i,e),this._createRenderableAbortController.signal)}finally{this._renderablesBeingCreated.delete(e.handle)}return()=>a}*_createRenderableTask(e,t){let n=yield*this._tileBuilder.build(e,t);return this._tileHandles.set(n.handle,n),this._cacheTileMemory+=n.usedMemory,this._memCache.put(`${n.handle}`,n),{memUsageBytes:n.usedMemory,numGaussians:n.gaussianCount}}freeRenderable(e){this._tileLifecycle.freeTile(e)}releaseTile(e,t){let n=this.data?.textureAtlas;t?(this._usedTileMemory-=e.usedMemory,this._intersectionHandler.removeTile(e)):this._cacheTileMemory-=e.usedMemory,n&&e.pageIds.forEach(e=>n.freePage(e)),this._removeTileCacheEntry(e),this._tileHandles.delete(e.handle)}_removeTileCacheEntry(e){this._memCache.pop(`${e.handle}`)}notifyTileObbsChanged(e){this._elevationProvider&&this._elevationProvider.notifyObjectsChangedFunctional(e.length,t=>{for(let{obb:n}of e)if(!t(n))break})}setRenderableVisibility(e,t,n){this._tileLifecycle.setVisibility(e,t,n)}activateTile(e){this._usedTileMemory+=e.usedMemory,this._cacheTileMemory-=e.usedMemory,this._intersectionHandler.addTile(e),this._memCache.pop(C(e.handle))}cacheTile(e){this._usedTileMemory-=e.usedMemory,this._cacheTileMemory+=e.usedMemory,this._intersectionHandler.removeTile(e),this._memCache.put(C(e.handle),e)}destroy(){this._initializationController=n(this._initializationController),this._createRenderableAbortController.abort(),j(this),this._suspendedHandle&&=r(this._suspendedHandle),this._intersectionHandler&&=(this.view.sceneIntersectionHelper.removeIntersectionHandler(this._intersectionHandler),null),this._elevationProvider&&this.view.elevationProvider&&(this._elevationProvider.notifyObjectsChangedFunctional(this._tileHandles.size,e=>{for(let{obb:t}of this._tileHandles.values())if(!e(t))break}),this.view.elevationProvider.unregister(this._elevationProvider),this._elevationProvider=null),this._frameTask.remove(),this._tileBuilder=null,this._shadows=i(this._shadows),this._prepassDepthRenderer=i(this._prepassDepthRenderer),this._renderer=i(this._renderer),this._memCache.destroy(),this.data=i(this.data)}_canProjectWithoutEngine(){if(this.view.state.viewingMode===1||v(this.view.renderSpatialReference)||y(this.view.renderSpatialReference))return!0;if(this.layer.esriCrsSpatialReference&&b(this.layer.esriCrsSpatialReference,this.view.renderSpatialReference)){if(this.layer.esriCrsSpatialReference.vcsWkid===115700)return!1;let e=w(this.layer.esriCrsSpatialReference);if(!e){let t=this.layer.esriCrsSpatialReference,n=x(t),r=`meters`;!n&&t.wkid&&t.wkid!==-1&&(r=l(S.units[S[t.wkid]])),r&&(e=new m({heightModel:`gravity-related-height`,heightUnit:r}))}let t=this.view.heightModelInfo;return this._useEsriCrs=g(e,t,!1)===0,this._useEsriCrs&&(e&&(this._metersPerVCSUnit=u(1,e.heightUnit,`meters`)),this.fullExtentInLocalViewSpatialReference=this.layer.esriCrsFullExtent),this._useEsriCrs}return!1}_elevationInfoChanged(e){if(!e?.offset)this._wasm?.setLayerOffset(this,0);else if(!this._useEsriCrs)this._wasm?.setLayerOffset(this,T(e));else{let t=E(e?.unit)/this._metersPerVCSUnit,n=e?.offset??0;this._wasm?.setLayerOffset(this,n*t)}}_slicePlaneEnabledChanged(e){this._renderer&&(this._renderer.slicePlaneEnabled=e),this._intersectionHandler&&(this._intersectionHandler.slicePlaneEnabled=e)}updateActiveTileVisibility(){let e=[];for(let t of this._tileHandles.values())t.lifecycleState!==0&&e.push(t);this.data.updateGaussianVisibility(e,this._tileLifecycle.visibilityChange),this.notifyChange(`updating`)}get maximumGaussianCount(){return this.view.qualitySettings.gaussianSplat.maximumNumberOfGaussians*this.view.quality}set maximumGaussianCount(e){this._set(`maximumGaussianCount`,e)}_freeInvisibleTiles(){for(let e of this._tileHandles.values())e.lifecycleState===0&&!this._renderablesBeingCreated.has(e.handle)&&this._deleteTile(e)}_deleteTile(e){this._renderablesBeingCreated.has(e.handle)||this._wasm?.onRenderableEvicted(this,e.handle,e.usedMemory),this.freeRenderable(e.handle)}get performanceInfo(){let e=0,t=0;this._tileHandles.forEach(n=>{n.lifecycleState===0?t++:e++});let n=this.data?.textureAtlasMemory??0,r=this.data?.headerTextureMemory??0,i=this.data?.orderTextureMemory??0,a=this.data?.fadingTextureMemory??0,o=this.data?.sortBufferMemory??0;return new D(this.usedMemory,e,this._usedTileMemory,t,this._cacheTileMemory,n,r,i,a,o)}get test(){}};e([d()],K.prototype,`layer`,void 0),e([d({readOnly:!0})],K.prototype,`_clippingBox`,null),e([d()],K.prototype,`elevationOffset`,null),e([d({readOnly:!0})],K.prototype,`visibleAtCurrentScale`,null),e([d()],K.prototype,`fullExtentInLocalViewSpatialReference`,void 0),e([d()],K.prototype,`maximumGaussianCount`,null),K=e([f(`esri.views.3d.layers.GaussianSplatLayerView3D`)],K);const q=K;export{q as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{copy as e}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as t}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{set as n,add as r,subtract as i}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as a,ZEROS as o}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{computeTranslationToOriginAndRotation as s}from"../../../../geometry/projection/computeTranslationToOriginAndRotation.js";import{projectBuffer as c}from"../../../../geometry/projection/projectBuffer.js";import{BufferViewVec3f as l}from"../../../../geometry/support/buffer/BufferView.js";import{SampleElevationInfo as
|
|
2
|
+
import{copy as e}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as t}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{set as n,add as r,subtract as i}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as a,ZEROS as o}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{computeTranslationToOriginAndRotation as s}from"../../../../geometry/projection/computeTranslationToOriginAndRotation.js";import{projectBuffer as c}from"../../../../geometry/projection/projectBuffer.js";import{BufferViewVec3f as l,BufferViewVec4f16 as u}from"../../../../geometry/support/buffer/BufferView.js";import{SampleElevationInfo as d,updateBufferPointGroundDistance as f,computePointTransformation as p,applyBufferPointTransformation as m}from"./elevationAlignmentUtils.js";import{debugFlags as h}from"../../support/debugFlags.js";import{SamplePosition as g}from"../../support/ElevationProvider.js";import{updateVertexFieldVec3f as _,updateObjectVertexField as v}from"../../webgl-engine/lib/bufferGeometryUtils.js";import{isGeometryWithMapPositions as y}from"../../webgl-engine/lib/GeometryWithMapPositions.js";import{assert as b}from"../../webgl-engine/lib/Util.js";import{writeLineMarkerPositions as x}from"../../webgl-engine/materials/internal/lineMarkerBufferUtils.js";import{getRibbonLineBufferPositions as S,fillRibbonLinePadding as C,updateRibbonLineDistances as w}from"../../webgl-engine/materials/internal/ribbonLineBufferUtils.js";function T(e,t,a,o,s,d){let f=N/s.unitInMeters,p=0,m=0;for(let{line:_,marker:v,wireframe:y}of d){let{mapPositions:d,material:T,localOrigin:E}=_,D=T.parameters,O=_.getMutableStorageField(`position`,l),k=S(O,!!D.isClosed);if(d==null||k.count===0)continue;let A=new g(d,a),j=0,M=!h.ENABLE_OPTIMIZATIONS;for(let e=0;e<k.count;e++,A.offset+=3)o(A,z),t.requiresSampledElevationInfo&&(j+=z.sampledElevation),k.getVec(e,I),h.ENABLE_OPTIMIZATIONS?(r(P,I,E.vec3),s.setAltitude(P,z.z)):(n(P,A.array[A.offset],A.array[A.offset+1],z.z),c(P,a,0,P,s.spatialReference,0,1)),i(P,P,E.vec3),M||=V(I,P[0],P[1],P[2],f),k.setVec(e,P);j/=k.count,C(_.buffers.storage,k.count,!!D.isClosed&&k.count>2),w(_,!!D.isClosed),M&&e.geometryVertexAttributeUpdated(_,`position`),p+=j,m++,y!=null&&(b(y.localOrigin===E,`Line outputs must use the same local origin`),y.getMutableStorageField(`position`,l),y.buffers.storage.copyFrom(_.buffers.storage),M&&e.geometryVertexAttributeUpdated(y,`position`),p+=j,m++),v!=null&&(b(v.localOrigin===E,`Line outputs must use the same local origin`),x(k,v.material.parameters,{position:v.getMutableVertexField(`position`,l),previousDelta:v.getMutableVertexField(`previousDelta`,u),offset:0}),M&&e.geometryVertexAttributeUpdated(v,`position`),p+=j,m++)}return m===0?0:p/m}function E(e,t,n,r,i){let a=e.stageObject,o=a.geometries,s=0;for(let e of o){if(!y(e))continue;let{update:o,averageGeometrySampledElevation:c}=B(e,t,n,r,i);s+=c,o&&a.geometryVertexAttributeUpdated(e,`position`)}return s/o.length}function D(e,t,a,o,s){let u=t.requiresSampledElevationInfo,{geometries:d}=e,f=N/s.unitInMeters,p=0;if(d.length===0)return 0;for(let t of d){let d=t.buffers.vertex.getField(`position`,l);if(t.mapPositions==null||d.count===0)continue;let m=t.localOrigin.vec3,v=new g(t.mapPositions,a),y=0,b=!1;for(let e=0;e<d.count;e++,v.offset+=3)o(v,z),u&&(y+=z.sampledElevation),d.getVec(e,I),h.ENABLE_OPTIMIZATIONS?(r(P,I,m),s.setAltitude(P,z.z)):(n(P,v.array[v.offset],v.array[v.offset+1],z.z),c(P,a,0,P,s.spatialReference,0,1)),i(P,P,m),(!h.ENABLE_OPTIMIZATIONS||V(I,P[0],P[1],P[2],f))&&(b=_(t,`position`,e,P)||b);b&&e.geometryVertexAttributeUpdated(t,`position`),p+=y/d.count}return p/d.length}function O(t,r,i,a,o,c){let l=t.stageObject,u=r.centerInElevationSR;a(u,z);let d=r.requiresSampledElevationInfo?z.sampledElevation:0,f=e(j,c??l.transformation),p=n(R,f[12],f[13],f[14]);h.ENABLE_OPTIMIZATIONS?o.setAltitudeOfTransformation(z.z,f):(P[0]=u[0],P[1]=u[1],P[2]=z.z,s(i,P,f,o.spatialReference)&&(c?e(c,f):l.transformation=f));let m=N/o.unitInMeters;return V(p,f[12],f[13],f[14],m)&&(c?e(c,f):l.transformation=f),d}function k(e,t,n,r,i){return A(e,t,n,r,i,o)}function A(e,t,a,o,s,c){let u=t.centerInElevationSR;if(o(u,z),f(e,z.verticalDistanceToGround),h.ENABLE_OPTIMIZATIONS){let t=N/s.unitInMeters;for(let n of e.geometries){let a=n.buffers.vertex.getField(`position`,l),o=n.localOrigin.vec3;a.getVec(0,I),r(P,I,o),i(P,P,c),s.setAltitude(P,z.z),r(P,P,c),i(P,P,o),V(I,P[0],P[1],P[2],t)&&v(e,_,n,`position`,0,P)}}else n(P,u[0],u[1],z.z),p(P,a,s,j)&&(j[12]+=c[0],j[13]+=c[1],j[14]+=c[2],m(e,j));return z.sampledElevation}const j=t();function M(e,t,r,i,a){let o=e.graphics3DSymbolLayer.lodRenderer;if(o==null)return 0;let c=t.centerInElevationSR;i(c,z);let l=t.mode===`absolute-height`?0:z.sampledElevation,u=o.instanceData,d=e.instanceIndex,f=L;u.getGlobalTransform(d,f);let p=n(R,f[12],f[13],f[14]);h.ENABLE_OPTIMIZATIONS?a.setAltitudeOfTransformation(z.z,f):(P[0]=c[0],P[1]=c[1],P[2]=z.z,s(r,P,f,a.spatialReference)&&u.setGlobalTransform(d,f));let m=N/a.unitInMeters;return(!h.ENABLE_OPTIMIZATIONS||V(p,f[12],f[13],f[14],m))&&u.setGlobalTransform(d,f),l}const N=.01,P=a(),F=a(),I=a(),L=t(),R=a(),z=new d;function B(e,t,n,r,i){let a=!1,o=e.transformation,s=t.requiresSampledElevationInfo;F[0]=o[12],F[1]=o[13],F[2]=o[14],e.invalidateBoundingInfo();let l=e.getMutableAttribute(`position`),u=l.data,d=l.size,f=u.length/d,p=new g(e.mapPositions,n),m=0,_=0;for(let e=0;e<f;e++){if(I[0]=u[m],I[1]=u[m+1],I[2]=u[m+2],r(p,z),s&&(_+=z.sampledElevation),h.ENABLE_OPTIMIZATIONS){P[0]=u[m]+F[0],P[1]=u[m+1]+F[1],P[2]=u[m+2]+F[2],i.setAltitude(P,z.z),u[m]=P[0]-F[0],u[m+1]=P[1]-F[1],u[m+2]=P[2]-F[2];let e=N/i.unitInMeters;V(I,u[m],u[m+1],u[m+2],e)&&(a=!0)}else u[m]=p.array[p.offset],u[m+1]=p.array[p.offset+1],u[m+2]=z.z,c(u,n,m,u,i.spatialReference,m,1),u[m]-=F[0],u[m+1]-=F[1],u[m+2]-=F[2],a=!0;m+=d,p.offset+=3}return _/=f,{update:a,averageGeometrySampledElevation:_}}function V(e,t,n,r,i){return Math.abs(e[0]-t)>=i||Math.abs(e[1]-n)>=i||Math.abs(e[2]-r)>=i}export{T as perBufferLineElevationAligner,k as perBufferPointElevationAligner,D as perBufferVertexElevationAligner,M as perLodInstanceElevationAligner,O as perObjectElevationAligner,A as perTranslatedBufferPointElevationAligner,E as perVertexElevationAligner};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import e from"../../../../core/Error.js";import has from"../../../../core/has.js";import{onePixelInPoints as t,pt2px as n,onePointInPixels as r}from"../../../../core/screenUtils.js";import{fromValues as i}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{copy as a}from"../../../../core/libs/gl-matrix-2/math/vec4.js";import{ZEROS as o,clone as s,ones as c}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{create as l,fromBuffer as u,intersectsClippingArea as d,empty as f,expandWithAABB as p,expandWithBuffer as m}from"../../../../geometry/support/aaBoundingBox.js";import{getDriverAxisSizeValueAny as h}from"../../../../renderers/support/renderingInfoUtils.js";import{getTransformationType as g}from"../../../../renderers/visualVariables/support/sizeVariableUtils.js";import{sharedGeometryElevationAligner as _}from"./ElevationAligners.js";import{elevationModeChangeUpdateType as v,needsElevationUpdates2D as y}from"./elevationAlignmentUtils.js";import{Graphics3DDrapedGraphicLayer as b}from"./Graphics3DDrapedGraphicLayer.js";import{Graphics3DObject3DGraphicLayer as x}from"./Graphics3DObject3DGraphicLayer.js";import{Graphics3DSymbolLayer as S,nanFallbackColor as C}from"./Graphics3DSymbolLayer.js";import{parseCapType as w,computeSymbolLayerIndex as T,parseLineMarkerStyle as E}from"./lineUtils.js";import{initFastSymbolUpdatesState as D,updateFastSymbolUpdatesState as O,getAttributeValue as k,getSizeAttributeValue as A,ConvertOptions as j}from"../support/FastSymbolUpdates.js";import{debugFlags as M}from"../../support/debugFlags.js";import{createGeometry as N}from"../../support/engineContent/line.js";import{geometryToRenderInfo as P,geometryToRenderInfoDraped as F}from"../../support/renderInfoUtils/line.js";import{Object3D as I}from"../../webgl-engine/lib/Object3D.js";import{RenderGeometry as L}from"../../webgl-engine/lib/RenderGeometry.js";import{LineMarkerMaterial as R}from"../../webgl-engine/materials/LineMarkerMaterial.js";import{getStipplePatternForLinePattern as z,patternHidesLine as B}from"../../webgl-engine/materials/lineStippleUtils.js";import{RibbonLineMaterial as V}from"../../webgl-engine/materials/RibbonLineMaterial.js";const H=[`polyline`];class U extends S{static{this.elevationModeChangeTypes={definedChanged:2,staysOnTheGround:0,onTheGroundChanged:2}}constructor(e,t,n,r){super(e,t,n,r,K(t))}async doLoad(){if(this._fastUpdates=D(this._context.renderer,this._fastVisualVariableConvertOptions()),this._fastMarkerUpdates=D(this._context.renderer,this._fastVisualVariableConvertOptions(!0)),!this._drivenProperties.size&&(this.symbolLayer.size==null?t:this.symbolLayer.size)<0)throw new e(`graphics3dlinesymbollayer:invalid-size`,`Symbol sizes may not be negative values`)}_getMaterialParameters(e,t){let n=this._screenSizePerspective,r=!!has(`enable-feature:emissive-on-non-volumetric`)&&!this.draped,{symbolLayer:i}=this,{worldSized:a}=this.symbol,o={...this._getMaterialColorParameters(t),shadingEnabled:r,width:this._computeMaterialWidth(i.size,a),worldSized:a,polygonOffset:3,polygonOffsetIndex:T(this._renderPriority,this._renderPriorityStep),join:i.join||`miter`,cap:w(i.cap||`butt`),hasSlicePlane:this._context.slicePlaneEnabled,isClosed:e,stipplePattern:z(i.pattern??i.imagePattern),emissiveStrength:this._emissiveStrength,screenSizePerspective:n};if(t===2){if(this._fastMarkerUpdates?.visualVariables)return{...o,...this._fastMarkerUpdates.materialParameters}}else if(o.hasVertexColor=this._hasDrivenColorOrOpacity,o.hasVertexSize=this._drivenProperties.size,o.hasLineDistance=o.stipplePattern!=null,this._fastUpdates?.visualVariables)return{...o,...this._fastUpdates.materialParameters};return o}_getMaterialColorParameters(e){let t=e===2,n=this._getCombinedOpacityAndColor(t&&this._markerColor||this._materialColor);return this._patternHidesLine&&!t&&(n[3]=0),{color:n}}get _materialColor(){return this.symbolLayer.material?.color}get _emissiveStrength(){let e=this.symbolLayer.material?.emissive;return(e?.source===`color`?e?.strength:void 0)??0}get _markerColor(){return this.symbolLayer.marker?.color}get _lineMaterial(){return this._materials[0]??=new V(this._getMaterialParameters(!1,0),this.view),this._materials[0]}get _wireframeLineMaterial(){return this._materials[1]??=new V({...this._getMaterialParameters(!1,1),wireframe:!0},this.view),this._materials[1]}get _markerMaterial(){return this._materials[2]==null&&this.symbolLayer.marker!=null&&(this._materials[2]=new R({...this._getMaterialParameters(!1,2),placement:this.symbolLayer.marker.placement,markerPrimitive:E(this.symbolLayer.marker.style)},this.view.state.isGlobal)),this._materials[2]}_getDrivenSize(e){if(this._drivenProperties.size){let t=e.size;if(t==null)return this._getFallbackSize();let n=h(t.output);return this._getWorldOrScreenSize(n)}return 1}_getDrivenColor({color:e,opacity:t}){let n=c();return this._drivenProperties.color&&(a(n,e?.output??this._getFallbackOpacityAndColor(o)),t==null)||this._drivenProperties.opacity&&(e||this._materialColor)&&(n[3]=t?.output??this._getFallbackOpacity()),n}_getDrivenMarkerColor({color:e,opacity:t}){let n=c();return this._drivenProperties.color&&(a(n,e?.output??this._getFallbackMarkerOpacityAndColor(o)),t==null)||this._drivenProperties.opacity&&(e||this._markerColor||this._materialColor)&&(n[3]=t?.output??this._getFallbackMarkerOpacity()),n}createGraphics3DGraphic(e){let t=e.graphic;if(!this._validatePolylineContext(e))return null;this._warnIfVVRequiresWorldSized(e.renderingInfo);let n=this.createElevationContextForGraphic(t),r=n.mode===`on-the-ground`;return this.ensureDrapedStatus(r),this.draped?this._createAsOverlay(e):this._createAs3DShape(e,n,t.uid)}_validatePolylineContext(e){let t=e.graphic.geometry;return this._validateGeometry(t,H,this.symbolLayer.type)&&t.type===`polyline`}applyRendererDiff(e,t){for(let n in e.diff)switch(n){case`visualVariables`:{let e=this._fastUpdates;if(O(e,t,this._fastVisualVariableConvertOptions()))for(let t of this._materials)t instanceof V&&t.setParameters(e.materialParameters);else return 0;let n=this._fastMarkerUpdates;if(O(n,t,this._fastVisualVariableConvertOptions(!0)))for(let e of this._materials)e instanceof R&&e.setParameters(n.materialParameters);else return 0}break;default:return 0}return`visualVariables`in e.diff&&this._warnIfVVRequiresWorldSized(),2}_warnIfVVRequiresWorldSized(e){if(this.symbol.worldSized||this.ignoreDrivers)return;let t=this._getSizeVariable(e);t==null||t.useSymbolValue||t.target===`outline`||g(t)===`real-world-size`&&this.logger.warnOnce(`SizeVariable uses real-world units, but LineSymbol3D.worldSized is false. Set LineSymbol3D.worldSized to true to render real-world line widths.`)}_getSizeVariable(e){let t=this._fastUpdates?.visualVariables.size;if(t)return t.variables[0];let n=e?.size,r=n?.output.findIndex(e=>typeof e==`number`);return r==null?null:n?.variables[r]}prepareSymbolLayerPatch(e){if(e.diff.type!==`partial`)return;let t=e.diff.diff,n={};t.size?.type===`complete`&&(n.width=this._computeMaterialWidth(t.size.newValue,this.symbol.worldSized),delete t.size),t.cap?.type===`complete`&&(n.cap=w(t.cap.newValue??`butt`),delete t.cap);let r=this._prepareMarkerPatch(e,t);this._prepareMaterialPatch(e,t,r),e.symbolLayerStatePatches.push(()=>{for(let e of this._materials)e?.setParameters(n)})}layerOpacityChanged(){for(let e=0;e<3;e++)this._materials[e]?.setParameters(this._getMaterialColorParameters(e))}get _screenSizePerspective(){return!this.draped&&this._context.screenSizePerspectiveEnabled?this.view.screenSizePerspective.parameters:null}layerScreenSizePerspectiveChanged(){let e=this._screenSizePerspective;for(let t of this._materials)t?.setParameters({screenSizePerspective:e})}layerElevationInfoChanged(e,t,n){let r=this._elevationContext.mode,i=v(U.elevationModeChangeTypes,n,r);if(i!==1)return i;let a=y(r);return this.updateGraphics3DGraphicElevationInfo(e,t,()=>a)}slicePlaneEnabledChanged(){let e={hasSlicePlane:this._context.slicePlaneEnabled};for(let t of this._materials)t?.setParameters(e);return!0}physicalBasedRenderingChanged(){return!0}_createAs3DShape(e,t,n){let r=e.graphic,i=W(r.geometry);if(i==null)return null;let a=[],o=l(),s=P(i,this._context.elevationProvider,this._context.renderCoordsHelper,t);this._logGeometryCreationWarnings(s,i.paths,`paths`,`LineSymbol3DLayer`);for(let t=0;t<s.lines.length;t++){let r=s.lines[t],c=r.position,l=r.mapPositions;if(this._context.clippingExtent!=null&&(u(l,o),!d(o,this._context.clippingExtent)))continue;let f=this._createGeometry(this._lineMaterial,e,c,l,i.type,1,n);if(a.push(f),M.LINE_WIREFRAMES&&a.push(f.instantiate({material:this._wireframeLineMaterial})),this._markerMaterial!=null){let t=f.instantiate({material:this._markerMaterial});t.attributes.has(`color`)&&t.setAttributeData(`color`,this._getDrivenMarkerColor(e.renderingInfo)),a.push(t)}}if(a.length===0)return null;let c=this._context.layerViewUid,f=new I({geometries:a,castShadow:!1,layerViewUid:c,graphicUid:n}),p=new x(this,f,null,_,t);return p.alignedSampledElevation=s.sampledElevation,p.needsElevationUpdates=y(t.mode),p}_createGeometry(e,t,n,r,i,a,o){let s=a===0?{spatialReference:this._context.overlaySR,renderCoordsHelper:this._context.renderCoordsHelper}:null,c=i===`polygon`,l=this._fastUpdates?.visualVariables.color,u=this._fastUpdates?.visualVariables.size,d=this._fastUpdates?.visualVariables.opacity,f=this._context.layerViewUid,p=this._context.stage.renderView.getObjectAndLayerIdColor({graphicUid:o,layerViewUid:f}),{renderingInfo:m}=t,h={position:n,size:u?null:this._getDrivenSize(m),color:l?null:this._getDrivenColor(m),sizeFeature:u?A(u,m.size):null,colorFeature:l?k(l,m.color):null,opacityFeature:d?k(d,m.opacity):null};return N(e,{overlayInfo:s,removeDuplicateStartEnd:c,mapPositions:r,attributeData:h},p)}_createAsOverlay(e){let t=e.graphic,{geometry:n}=t;this._lineMaterial.renderPriority=this._renderPriority;let r=M.LINE_WIREFRAMES?this._wireframeLineMaterial:null,i=this._markerMaterial;r!=null&&(r.renderPriority=this._renderPriority-.001),i!=null&&(i.renderPriority=this._renderPriority-.002);let a=[],o=l(),s=f(),c=F(n,this._context.overlaySR);this._logGeometryCreationWarnings(c,n.paths,`paths`,`LineSymbol3DLayer`);for(let l of c.lines){if(u(l.position,o),!d(o,this._context.clippingExtent))continue;p(s,o);let c=this._createGeometry(this._lineMaterial,e,l.position,void 0,n.type,0,t.uid),f=e=>{let n=this._context.layerViewUid,r=new L(e,{layerViewUid:n,graphicUid:t.uid});a.push(r)};if(i!=null){let t=c.instantiate({material:i});t.attributes.has(`color`)&&t.setAttributeData(`color`,this._getDrivenMarkerColor(e.renderingInfo)),f(t);let n=this.symbolLayer.marker.placement;(n===`begin`||n===`begin-end`)&&m(o,l.position,0,1),(n===`end`||n===`begin-end`)&&m(o,l.position,l.position.length-3,1)}f(c),M.LINE_WIREFRAMES&&f(c.instantiate({material:r}))}return new b(this,a,s,this._context.drapeSourceRenderer)}get _patternHidesLine(){return B(this.symbolLayer.pattern)}_computeMaterialWidth(e,i){return i?this._drivenProperties.size?1:e??1:(e??=t,this._drivenProperties.size?this._fastUpdates?.visualVariables.size?r:1:n(e))}_prepareMaterialPatch(e,t,n){let r=t.material;if(r==null){n.changed&&n.useMaterialColor&&G(this._getCombinedOpacityAndColor(this._materialColor),this._materials[2],e);return}if(r.type===`collection`)return;let i=r.type===`complete`?r.newValue?.color:r.diff.color?.type===`complete`?r.diff.color.newValue:null,a=this._getCombinedOpacityAndColor(i);n.useMaterialColor&&G(s(a),this._materials[2],e),this._patternHidesLine&&(a[3]=0),G(a,this._materials[0],e),delete t.material}_prepareMarkerPatch(e,t){let n=t.marker,r=this._markerMaterial;if(n==null||n.type!==`partial`||n.diff==null||n.diff.placement!=null||n.diff.style!=null&&n.diff.style.type!==`complete`||n.diff.color!=null&&n.diff.color.type!==`complete`||r==null)return{changed:!1,useMaterialColor:this._markerColor==null};let i=n.diff.color,a=i!=null,o=a?i.newValue:null,s=o==null&&this._markerColor==null;o&&G(this._getCombinedOpacityAndColor(o),r,e);let c=n.diff.style?.newValue;return c&&e.symbolLayerStatePatches.push(()=>r.setParameters({markerPrimitive:E(c)})),delete t.marker,{changed:a,useMaterialColor:s}}_fastVisualVariableConvertOptions(e=!1){let t=this._getFallbackSize(),{size:n}=this.symbolLayer;return new j({supports:{size:!0,color:!0,rotation:!1,opacity:!0},symbolSize:i(n,n,n),fallbackColor:e?this._getFallbackMarkerOpacityAndColor(C):this._getFallbackOpacityAndColor(C),fallbackSize:i(t,t,t)})}_getFallbackOpacityAndColor(e){return this._materialColor?.toUnitRGBA()??e}_getFallbackOpacity(){return this._materialColor?.a??0}_getFallbackMarkerOpacityAndColor(e){return this.symbolLayer.marker?.color?.toUnitRGBA()??this._getFallbackOpacityAndColor(e)}_getFallbackMarkerOpacity(){return this.symbolLayer.marker?.color?.a??this._getFallbackOpacity()}_getWorldOrScreenSize(e){return this.symbol.worldSized?e:n(e)}_getFallbackSize(){return this._getWorldOrScreenSize(this.symbolLayer.size)}}function W(e){return e.type===`polyline`?e:null}function G(e,t,n){t!=null&&n.symbolLayerStatePatches.push(()=>t.setParameters({color:e}))}function K(e){return(e.material?.color?.a??1)===1&&(e.marker?.color?.a??1)===1}export{U as Graphics3DLineSymbolLayer};
|
|
2
|
+
import e from"../../../../core/Error.js";import has from"../../../../core/has.js";import{onePixelInPoints as t,pt2px as n,onePointInPixels as r}from"../../../../core/screenUtils.js";import{fromValues as i}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{copy as a}from"../../../../core/libs/gl-matrix-2/math/vec4.js";import{ZEROS as o,clone as s,ones as c}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{create as l,fromBuffer as u,intersectsClippingArea as d,empty as f,expandWithAABB as p}from"../../../../geometry/support/aaBoundingBox.js";import{getDriverAxisSizeValueAny as m}from"../../../../renderers/support/renderingInfoUtils.js";import{getTransformationType as h}from"../../../../renderers/visualVariables/support/sizeVariableUtils.js";import{perBufferLineElevationAligner as g}from"./ElevationAligners.js";import{elevationModeChangeUpdateType as _,needsElevationUpdates2D as v}from"./elevationAlignmentUtils.js";import{Graphics3DBufferGraphicLayer as y}from"./Graphics3DBufferGraphicLayer.js";import{Graphics3DDrapedBufferGraphicLayer as b}from"./Graphics3DDrapedBufferGraphicLayer.js";import{Graphics3DSymbolLayer as x,nanFallbackColor as S}from"./Graphics3DSymbolLayer.js";import{parseCapType as C,computeSymbolLayerIndex as w,parseLineMarkerStyle as T}from"./lineUtils.js";import{initFastSymbolUpdatesState as E,updateFastSymbolUpdatesState as D,getAttributeValue as O,getSizeAttributeValue as k,ConvertOptions as A}from"../support/FastSymbolUpdates.js";import{debugFlags as j}from"../../support/debugFlags.js";import{selectLocalOrigin as M,createBufferGeometry as N}from"../../support/engineContent/line.js";import{geometryToRenderInfo as P,geometryToRenderInfoDraped as F}from"../../support/renderInfoUtils/line.js";import{BufferObject3D as I}from"../../webgl-engine/lib/BufferObject3D.js";import{LineMarkerMaterial as L}from"../../webgl-engine/materials/LineMarkerMaterial.js";import{getStipplePatternForLinePattern as R,patternHidesLine as z}from"../../webgl-engine/materials/lineStippleUtils.js";import{RibbonLineMaterial as B}from"../../webgl-engine/materials/RibbonLineMaterial.js";import{createLineMarkerBufferGeometry as V}from"../../webgl-engine/materials/internal/lineMarkerBufferUtils.js";const H=[`polyline`];class U extends x{static{this.elevationModeChangeTypes={definedChanged:2,staysOnTheGround:0,onTheGroundChanged:2}}constructor(e,t,n,r){super(e,t,n,r,K(t))}async doLoad(){if(this._fastUpdates=E(this._context.renderer,this._fastVisualVariableConvertOptions()),this._fastMarkerUpdates=E(this._context.renderer,this._fastVisualVariableConvertOptions(!0)),!this._drivenProperties.size&&(this.symbolLayer.size==null?t:this.symbolLayer.size)<0)throw new e(`graphics3dlinesymbollayer:invalid-size`,`Symbol sizes may not be negative values`)}_getMaterialParameters(e,t){let n=this._screenSizePerspective,r=!!has(`enable-feature:emissive-on-non-volumetric`)&&!this.draped,{symbolLayer:i}=this,{worldSized:a}=this.symbol,o={...this._getMaterialColorParameters(t),shadingEnabled:r,width:this._computeMaterialWidth(i.size,a),worldSized:a,polygonOffset:3,polygonOffsetIndex:w(this._renderPriority,this._renderPriorityStep),join:i.join||`miter`,cap:C(i.cap||`butt`),hasSlicePlane:this._context.slicePlaneEnabled,isClosed:e,stipplePattern:R(i.pattern??i.imagePattern),emissiveStrength:this._emissiveStrength,screenSizePerspective:n};if(t===2){if(this._fastMarkerUpdates?.visualVariables)return{...o,...this._fastMarkerUpdates.materialParameters}}else if(o.hasVertexColor=this._hasDrivenColorOrOpacity,o.hasVertexSize=this._drivenProperties.size,o.hasLineDistance=o.stipplePattern!=null,this._fastUpdates?.visualVariables)return{...o,...this._fastUpdates.materialParameters};return o}_getMaterialColorParameters(e){let t=e===2,n=this._getCombinedOpacityAndColor(t&&this._markerColor||this._materialColor);return this._patternHidesLine&&!t&&(n[3]=0),{color:n}}get _materialColor(){return this.symbolLayer.material?.color}get _emissiveStrength(){let e=this.symbolLayer.material?.emissive;return(e?.source===`color`?e?.strength:void 0)??0}get _markerColor(){return this.symbolLayer.marker?.color}get _lineMaterial(){return this._materials[0]??=new B(this._getMaterialParameters(!1,0),this.view),this._materials[0]}get _wireframeLineMaterial(){return this._materials[1]??=new B({...this._getMaterialParameters(!1,1),wireframe:!0},this.view),this._materials[1]}get _markerMaterial(){return this._materials[2]==null&&this.symbolLayer.marker!=null&&(this._materials[2]=new L({...this._getMaterialParameters(!1,2),placement:this.symbolLayer.marker.placement,markerPrimitive:T(this.symbolLayer.marker.style)},this.view.state.isGlobal)),this._materials[2]}_getDrivenSize(e){if(this._drivenProperties.size){let t=e.size;if(t==null)return this._getFallbackSize();let n=m(t.output);return this._getWorldOrScreenSize(n)}return 1}_getDrivenColor({color:e,opacity:t}){let n=c();return this._drivenProperties.color&&(a(n,e?.output??this._getFallbackOpacityAndColor(o)),t==null)||this._drivenProperties.opacity&&(e||this._materialColor)&&(n[3]=t?.output??this._getFallbackOpacity()),n}_getDrivenMarkerColor({color:e,opacity:t}){let n=c();return this._drivenProperties.color&&(a(n,e?.output??this._getFallbackMarkerOpacityAndColor(o)),t==null)||this._drivenProperties.opacity&&(e||this._markerColor||this._materialColor)&&(n[3]=t?.output??this._getFallbackMarkerOpacity()),n}createGraphics3DGraphic(e){let t=e.graphic;if(!this._validatePolylineContext(e))return null;this._warnIfVVRequiresWorldSized(e.renderingInfo);let n=this.createElevationContextForGraphic(t),r=n.mode===`on-the-ground`;return this.ensureDrapedStatus(r),this.draped?this._createAsOverlay(e):this._createAs3DShape(e,n,t.uid)}_validatePolylineContext(e){let t=e.graphic.geometry;return this._validateGeometry(t,H,this.symbolLayer.type)&&t.type===`polyline`}applyRendererDiff(e,t){for(let n in e.diff)switch(n){case`visualVariables`:{let e=this._fastUpdates;if(D(e,t,this._fastVisualVariableConvertOptions()))for(let t of this._materials)t instanceof B&&t.setParameters(e.materialParameters);else return 0;let n=this._fastMarkerUpdates;if(D(n,t,this._fastVisualVariableConvertOptions(!0)))for(let e of this._materials)e instanceof L&&e.setParameters(n.materialParameters);else return 0}break;default:return 0}return`visualVariables`in e.diff&&this._warnIfVVRequiresWorldSized(),2}_warnIfVVRequiresWorldSized(e){if(this.symbol.worldSized||this.ignoreDrivers)return;let t=this._getSizeVariable(e);t==null||t.useSymbolValue||t.target===`outline`||h(t)===`real-world-size`&&this.logger.warnOnce(`SizeVariable uses real-world units, but LineSymbol3D.worldSized is false. Set LineSymbol3D.worldSized to true to render real-world line widths.`)}_getSizeVariable(e){let t=this._fastUpdates?.visualVariables.size;if(t)return t.variables[0];let n=e?.size,r=n?.output.findIndex(e=>typeof e==`number`);return r==null?null:n?.variables[r]}prepareSymbolLayerPatch(e){if(e.diff.type!==`partial`)return;let t=e.diff.diff,n={};t.size?.type===`complete`&&(n.width=this._computeMaterialWidth(t.size.newValue,this.symbol.worldSized),delete t.size),t.cap?.type===`complete`&&(n.cap=C(t.cap.newValue??`butt`),delete t.cap);let r=this._prepareMarkerPatch(e,t);this._prepareMaterialPatch(e,t,r),e.symbolLayerStatePatches.push(()=>{for(let e of this._materials)e?.setParameters(n)})}layerOpacityChanged(){for(let e=0;e<3;e++)this._materials[e]?.setParameters(this._getMaterialColorParameters(e))}get _screenSizePerspective(){return!this.draped&&this._context.screenSizePerspectiveEnabled?this.view.screenSizePerspective.parameters:null}layerScreenSizePerspectiveChanged(){let e=this._screenSizePerspective;for(let t of this._materials)t?.setParameters({screenSizePerspective:e})}layerElevationInfoChanged(e,t,n){let r=this._elevationContext.mode,i=_(U.elevationModeChangeTypes,n,r);if(i!==1)return i;let a=v(r);return this.updateGraphics3DGraphicElevationInfo(e,t,()=>a)}slicePlaneEnabledChanged(){let e={hasSlicePlane:this._context.slicePlaneEnabled};for(let t of this._materials)t?.setParameters(e);return!0}physicalBasedRenderingChanged(){return!0}_createAs3DShape(e,t,n){let r=e.graphic,i=W(r.geometry);if(i==null)return null;let a=[],o=[],s=l(),c=P(i,this._context.elevationProvider,this._context.renderCoordsHelper,t);this._logGeometryCreationWarnings(c,i.paths,`paths`,`LineSymbol3DLayer`);for(let t=0;t<c.lines.length;t++){let r=c.lines[t],i=r.position,l=r.mapPositions;if(this._context.clippingExtent!=null&&(u(l,s),!d(s,this._context.clippingExtent)))continue;let f=this._createGeometryParts(e,i,l,1,n);o.push(f),a.push(f.line),f.wireframe!=null&&a.push(f.wireframe),f.marker!=null&&a.push(f.marker)}if(a.length===0)return null;let f=this._context.layerViewUid,p=new I({geometries:a,castShadow:!1,layerViewUid:f,graphicUid:n}),m=new y(this,p,null,(e,t,n,r,i)=>g(e,t,n,r,i,o),t);return m.alignedSampledElevation=c.sampledElevation,m.needsElevationUpdates=v(t.mode),m}_createGeometryParts(e,t,n,r,i){let a=r===0?{spatialReference:this._context.overlaySR,renderCoordsHelper:this._context.renderCoordsHelper}:null,o=this._fastUpdates?.visualVariables.color,s=this._fastUpdates?.visualVariables.size,c=this._fastUpdates?.visualVariables.opacity,l=this._context.layerViewUid,u=this._context.stage.renderView.getObjectAndLayerIdColor({graphicUid:i,layerViewUid:l}),{renderingInfo:d}=e,f={position:t,size:s?null:this._getDrivenSize(d),color:o?null:this._getDrivenColor(d),sizeFeature:s?k(s,d.size):null,colorFeature:o?O(o,d.color):null,opacityFeature:c?O(c,d.opacity):null},p=r===0?this._context.drapeSourceRenderer.rendererContext.localOriginFactory:this._context.localOriginFactory,m=M(t,p),h={overlayInfo:a,mapPositions:n,attributeData:f},g=N(this._lineMaterial,h,m,u),_=j.LINE_WIREFRAMES?N(this._wireframeLineMaterial,h,m,u):null,v=this._markerMaterial,y=null;v!=null&&(h.attributeData={...f,color:o?null:this._getDrivenMarkerColor(d)},y=V(v,h,m));for(let e of[g,y,_])e!=null&&(e.layerViewUid=l,e.graphicUid=i);return{line:g,marker:y,wireframe:_}}_createAsOverlay(e){let t=e.graphic,{geometry:n}=t;this._lineMaterial.renderPriority=this._renderPriority;let r=j.LINE_WIREFRAMES?this._wireframeLineMaterial:null,i=this._markerMaterial;r!=null&&(r.renderPriority=this._renderPriority-.001),i!=null&&(i.renderPriority=this._renderPriority-.002);let a=[],o=l(),s=f(),c=F(n,this._context.overlaySR);this._logGeometryCreationWarnings(c,n.paths,`paths`,`LineSymbol3DLayer`);for(let n of c.lines){if(u(n.position,o),!d(o,this._context.clippingExtent))continue;p(s,o);let r=this._createGeometryParts(e,n.position,void 0,0,t.uid);r.marker!=null&&a.push(r.marker),a.push(r.line),r.wireframe!=null&&a.push(r.wireframe)}return new b(this,a,s,this._context.drapeSourceRenderer)}get _patternHidesLine(){return z(this.symbolLayer.pattern)}_computeMaterialWidth(e,i){return i?this._drivenProperties.size?1:e??1:(e??=t,this._drivenProperties.size?this._fastUpdates?.visualVariables.size?r:1:n(e))}_prepareMaterialPatch(e,t,n){let r=t.material;if(r==null){n.changed&&n.useMaterialColor&&G(this._getCombinedOpacityAndColor(this._materialColor),this._materials[2],e);return}if(r.type===`collection`)return;let i=r.type===`complete`?r.newValue?.color:r.diff.color?.type===`complete`?r.diff.color.newValue:null,a=this._getCombinedOpacityAndColor(i);n.useMaterialColor&&G(s(a),this._materials[2],e),this._patternHidesLine&&(a[3]=0),G(a,this._materials[0],e),delete t.material}_prepareMarkerPatch(e,t){let n=t.marker,r=this._markerMaterial;if(n==null||n.type!==`partial`||n.diff==null||n.diff.placement!=null||n.diff.style!=null&&n.diff.style.type!==`complete`||n.diff.color!=null&&n.diff.color.type!==`complete`||r==null)return{changed:!1,useMaterialColor:this._markerColor==null};let i=n.diff.color,a=i!=null,o=a?i.newValue:null,s=o==null&&this._markerColor==null;o&&G(this._getCombinedOpacityAndColor(o),r,e);let c=n.diff.style?.newValue;return c&&e.symbolLayerStatePatches.push(()=>r.setParameters({markerPrimitive:T(c)})),delete t.marker,{changed:a,useMaterialColor:s}}_fastVisualVariableConvertOptions(e=!1){let t=this._getFallbackSize(),{size:n}=this.symbolLayer;return new A({supports:{size:!0,color:!0,rotation:!1,opacity:!0},symbolSize:i(n,n,n),fallbackColor:e?this._getFallbackMarkerOpacityAndColor(S):this._getFallbackOpacityAndColor(S),fallbackSize:i(t,t,t)})}_getFallbackOpacityAndColor(e){return this._materialColor?.toUnitRGBA()??e}_getFallbackOpacity(){return this._materialColor?.a??0}_getFallbackMarkerOpacityAndColor(e){return this.symbolLayer.marker?.color?.toUnitRGBA()??this._getFallbackOpacityAndColor(e)}_getFallbackMarkerOpacity(){return this.symbolLayer.marker?.color?.a??this._getFallbackOpacity()}_getWorldOrScreenSize(e){return this.symbol.worldSized?e:n(e)}_getFallbackSize(){return this._getWorldOrScreenSize(this.symbolLayer.size)}}function W(e){return e.type===`polyline`?e:null}function G(e,t,n){t!=null&&n.symbolLayerStatePatches.push(()=>t.setParameters({color:e}))}function K(e){return(e.material?.color?.a??1)===1&&(e.marker?.color?.a??1)===1}export{U as Graphics3DLineSymbolLayer};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{isSome as e}from"../../../../core/arrayUtils.js";import{forEach as t}from"../../../../core/asyncUtils.js";import"../../../../core/has.js";import{onAbortOrThrow as n,throwIfAborted as r}from"../../../../core/promiseUtils.js";import{aggregateSymbolComplexity as i}from"./defaultSymbolComplexity.js";import{Graphics3DGraphic as a}from"./Graphics3DGraphic.js";import{Graphics3DSymbolLayerCreationContext as o}from"./Graphics3DSymbolCreationContext.js";import{Loadable as s}from"./Loadable.js";import{AggregateSymbolComplexity as c}from"./SymbolComplexity.js";import{getSymbolMemorySize as l}from"./symbolMemory.js";class u extends s{set symbol(e){this._symbol=e,e.symbolLayers.forEach((t,n)=>{let r=this.symbolLayers[n];r!=null&&(r.symbol=e,r.symbolLayer=t)})}get symbol(){return this._symbol}constructor(e,t,n){super(t.schedule),this._symbol=e,this._context=t,this._backgroundLayers=n,this._destroyed=!1,this.symbolLayers=[],this.referenced=0,this._extentPadding=0}async doLoad(e){let i=this._symbol.symbolLayers;this._extentPadding=0,this._backgroundLayers&&(i=this._backgroundLayers.concat(i));let a=i.length;for(;this.symbolLayers.length<i.length;)this.symbolLayers.push(null);this.symbolLayers.length=i.length;let o=[];if(!d){let{make:e}=await
|
|
2
|
+
import{isSome as e}from"../../../../core/arrayUtils.js";import{forEach as t}from"../../../../core/asyncUtils.js";import"../../../../core/has.js";import{onAbortOrThrow as n,throwIfAborted as r}from"../../../../core/promiseUtils.js";import{aggregateSymbolComplexity as i}from"./defaultSymbolComplexity.js";import{Graphics3DGraphic as a}from"./Graphics3DGraphic.js";import{Graphics3DSymbolLayerCreationContext as o}from"./Graphics3DSymbolCreationContext.js";import{Loadable as s}from"./Loadable.js";import{AggregateSymbolComplexity as c}from"./SymbolComplexity.js";import{getSymbolMemorySize as l}from"./symbolMemory.js";class u extends s{set symbol(e){this._symbol=e,e.symbolLayers.forEach((t,n)=>{let r=this.symbolLayers[n];r!=null&&(r.symbol=e,r.symbolLayer=t)})}get symbol(){return this._symbol}constructor(e,t,n){super(t.schedule),this._symbol=e,this._context=t,this._backgroundLayers=n,this._destroyed=!1,this.symbolLayers=[],this.referenced=0,this._extentPadding=0}async doLoad(e){let i=this._symbol.symbolLayers;this._extentPadding=0,this._backgroundLayers&&(i=this._backgroundLayers.concat(i));let a=i.length;for(;this.symbolLayers.length<i.length;)this.symbolLayers.push(null);this.symbolLayers.length=i.length;let o=[];if(!d){let{make:e}=await(f??=import(`./Graphics3DSymbolLayerFactory.js`).catch(e=>{throw f=null,e}));d=e}for(let t=0;t<a;t++){let r=i.at(t);if(r.enabled===!1)continue;p.renderPriority=1-(1+t)/a,p.renderPriorityStep=1/a,p.ignoreDrivers=r.ignoreDrivers;let s=d(this.symbol,r,this._context,p),c=n(e,()=>{this.symbolLayers[t]=null,s.destroy()});c&&o.push(c),this.symbolLayers[t]=s}if(await t(this.symbolLayers,async(e,t)=>{if(e!=null)try{await e.load(),this._extentPadding+=Math.max(this._extentPadding,e.extentPadding)}catch{this.symbolLayers[t]=null}}),o.forEach(e=>e.remove()),r(e),this.symbolLayers.length&&!this.symbolLayers.some(e=>!!e))throw Error()}getSymbolLayerSize(e){let t=this.symbolLayers[e];return t==null?null:t.getCachedSize()}get extentPadding(){return this._extentPadding}get symbologySnappingSupported(){return this.symbolLayers.some(e=>e?.queryForSnapping)}get needsUpdateFocus(){return this.symbolLayers.some(e=>e?.needsUpdateFocus===!0)}createGraphics3DGraphic(e,t){let{graphic:n}=e,r=this.symbolLayers.map(t=>t?.createGraphics3DGraphic(e)??null);return new a(n,t||this,r,e.reportGraphicSourceMemory)}get complexity(){let e=new c;return this.symbolLayers.forEach(t=>i(t?.complexity,e)),e}globalPropertyChanged(e,t){let n=this.symbolLayers.length;for(let r=0;r<n;r++){let n=this.symbolLayers[r];if(n!=null&&!n.globalPropertyChanged(e,t,e=>{let t=e.layers[r];return t?.type===`object3d`||t?.type===`buffer`?t:null}))return!1}return!0}applyRendererDiff(e,t){return this.loadStatus===1?this.symbolLayers.reduce((n,r)=>n!==0&&r!=null?Math.min(n,r.applyRendererDiff(e,t)):n,2):0}prepareSymbolPatch(e){if(this.loadStatus===2||e.diff.type!==`partial`)return;let t=e.diff.diff;if(!t.symbolLayers||t.symbolLayers.type!==`partial`)return;let n=t.symbolLayers.diff;this.symbolLayers.forEach((t,r)=>{if(t==null)return;let i=n[r];if(i){let n={diff:i,graphics3DGraphicPatches:[],symbolLayerStatePatches:[]};t.prepareSymbolLayerPatch(n),e.symbolStatePatches.push(...n.symbolLayerStatePatches),n.graphics3DGraphicPatches.length&&e.graphics3DGraphicPatches.push((e,t)=>{let i=e.layers[r];i!=null&&n.graphics3DGraphicPatches.forEach(e=>e(i,t))})}})}updateGeometry(e){return this._updateGeometryOrTransform(e,(t,n)=>t.updateGeometry?t.updateGeometry(e.graphic,n):!1)}updateMeshTransform(e,t,n,r,i){return this._updateGeometryOrTransform(e,(e,a)=>e.updateMeshTransform?e.updateMeshTransform(a,t,n,r,i):!1)}_updateGeometryOrTransform(e,t){for(let n=0;n<this.symbolLayers.length;n++){let r=this.symbolLayers[n];if(r==null)continue;let i=e.layers[n];if(!i||!t(r,i))return!1}return!0}onRemoveGraphic(e){for(let t=0;t<this.symbolLayers.length;t++){let n=this.symbolLayers[t];if(n==null)continue;let r=e.layers[t];r!=null&&n.onRemoveGraphic(r)}}getFastUpdateStatus(){let e=!1,t=!1;for(let n of this.symbolLayers)if(n!=null){if(n.loadStatus===0)return 3;n.isFastUpdatesEnabled()?t=!0:e=!0}return t?e?2:1:e?0:4}async queryForSnapping(t,n,i,a){let o=this.symbolLayers.filter(e).filter(e=>e.queryForSnapping!=null).map(e=>e.queryForSnapping(t,n,i,a)),s=await Promise.all(o);return r(a),s.flat()}destroy(){if(!this.destroyed){super.destroy();for(let e of this.symbolLayers)e?.destroy();this.symbolLayers.length=0,this._destroyed=!0}}get destroyed(){return this._destroyed}get usedMemory(){return l(this)}}let d=null,f=null;const p=new o;export{u as Graphics3DSymbol};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import e from"../../../../core/Error.js";import{clone as t}from"../../../../core/lang.js";import n from"../../../../core/Logger.js";import{
|
|
2
|
+
import e from"../../../../core/Error.js";import{clone as t}from"../../../../core/lang.js";import n from"../../../../core/Logger.js";import{nativeArrayMaxSize as r,isInt16Array as i,minInt16 as a,isInt32Array as o,minInt32 as s}from"../../../../core/typedArrayUtil.js";import{compactUCharArray as c}from"../../../../geometry/support/UCharArray.js";import{compactUShortArray as l}from"../../../../geometry/support/UShortArray.js";import{decodeRGB as u,decodeIntensity as d}from"./LEPCC.js";const f=()=>n.getLogger(`esri.views.3d.layers.i3s.I3SBinaryReader`);function p(t,n,r){let i=``,a=0;for(;a<r;){let o=t[n+a];if(o<128)i+=String.fromCharCode(o),a++;else if(o>=192&&o<224){if(a+1>=r)throw new e(`utf8-decode-error`,`UTF-8 Decode failed. Two byte character was truncated.`);let s=t[n+a+1],c=(o&31)<<6|s&63;i+=String.fromCharCode(c),a+=2}else if(o>=224&&o<240){if(a+2>=r)throw new e(`utf8-decode-error`,`UTF-8 Decode failed. Multi byte character was truncated.`);let s=t[n+a+1],c=t[n+a+2],l=(o&15)<<12|(s&63)<<6|c&63;i+=String.fromCharCode(l),a+=3}else if(o>=240&&o<248){if(a+3>=r)throw new e(`utf8-decode-error`,`UTF-8 Decode failed. Multi byte character was truncated.`);let s=t[n+a+1],c=t[n+a+2],l=t[n+a+3],u=(o&7)<<18|(s&63)<<12|(c&63)<<6|l&63;if(u>=65536){let e=(u-65536>>10)+55296,t=(u&1023)+56320;i+=String.fromCharCode(e,t)}else i+=String.fromCharCode(u);a+=4}else throw new e(`utf8-decode-error`,`UTF-8 Decode failed. Invalid multi byte sequence.`)}return i}function m(e,t){let n={byteOffset:0,byteCount:0,fields:Object.create(null)},r=0;for(let i=0;i<t.length;i++){let a=t[i],o=a.valueType||a.type,s=j[o];n.fields[a.property]=s(e,r),r+=A[o].BYTES_PER_ELEMENT}return n.byteCount=r,n}function h(e,t,n){return g(e,t,n).map(e=>{let t=e?Date.parse(e):null;return t!=null&&!Number.isNaN(t)?t:null})}function g(t,n,r){let i=[],a,o=0,s=0;for(;s<t;s+=1){if(a=n[s],a>0){if(i.push(p(r,o,a-1)),r[o+a-1]!==0)throw new e(`string-array-error`,`Invalid string array: missing null termination.`)}else i.push(null);o+=a}return i}function _(e,t){let n=A[t.valueType];return new n(e,t.byteOffset,t.count*t.valuesPerElement)}function v(e,t){let n=_(e,t);if(n.length>=r)return n;let i=[];return n.forEach((e,t)=>i.push(y(n,t))),i}function y(e,t){if(!e)return null;let n=e[t];return i(e)?n===a?null:n:o(e)?n===s?null:n:n===n?n:null}function b(e,t){return new Uint8Array(e,t.byteOffset,t.byteCount)}function x(n,r,i){let a=r.header==null?{byteOffset:0,byteCount:0,fields:{count:i}}:m(n,r.header),o={header:a,byteOffset:a.byteCount,byteCount:0,entries:Object.create(null)},s=a.byteCount;for(let n=0;n<r.ordering.length;n++){let i=r.ordering[n],c=t(r[i]);if(c.count=a.fields.count??0,c.valueType===`String`){if(c.byteOffset=s,c.byteCount=a.fields[i+`ByteCount`],c.encoding!==`UTF-8`)throw new e(`unsupported-encoding`,`Unsupported String encoding.`,{encoding:c.encoding});if(c.timeEncoding&&c.timeEncoding!==`ECMA_ISO8601`)throw new e(`unsupported-time-encoding`,`Unsupported time encoding.`,{timeEncoding:c.timeEncoding})}else if(M(c.valueType)){let e=N(c.valueType);s+=s%e===0?0:e-s%e,c.byteOffset=s,c.byteCount=e*c.valuesPerElement*c.count}else throw new e(`unsupported-value-type`,`Unsupported binary valueType`,{valueType:c.valueType});s+=c.byteCount??0,o.entries[i]=c}return o.byteCount=s-o.byteOffset,o}function S(t,n,r){if(n!==t&&f().error(`Invalid ${r} buffer size\n expected: ${t}, actual: ${n})`),n<t)throw new e(`buffer-too-small`,`Binary buffer is too small`,{expectedSize:t,actualSize:n})}function C(e){return{isDraco:!1,isLegacy:!1,color:e.color!=null,normal:e.normal!=null,uv0:e.uv0!=null,uvRegion:e.uvRegion!=null,featureIndex:e.faceRange!=null&&e.featureId!=null}}function w(e,t){let n=m(e,t&&t.header),r=n.byteCount,i={isDraco:!1,header:n,byteOffset:n.byteCount,byteCount:0,vertexAttributes:{}},a=n.fields,o=a.vertexCount==null?a.count:a.vertexCount;for(let e of t.ordering){if(!t.vertexAttributes[e])continue;let n={...t.vertexAttributes[e],byteOffset:r,count:o},a=O[e]||`_`+e;i.vertexAttributes[a]=n,r+=N(n.valueType)*n.valuesPerElement*o}let s=a.faceCount;if(t.faces&&s){i.faces={};for(let e of t.ordering){if(!t.faces[e])continue;let n={...t.faces[e],byteOffset:r,count:s};i.faces[e]=n,r+=N(n.valueType)*n.valuesPerElement*s}}let c=a.featureCount;if(t.featureAttributes&&t.featureAttributeOrder&&c){i.featureAttributes={};for(let e of t.featureAttributeOrder){if(!t.featureAttributes[e])continue;let n={...t.featureAttributes[e],byteOffset:r,count:c};i.featureAttributes[e]=n;let a=n.valueType===`UInt64`?8:N(n.valueType);r+=a*n.valuesPerElement*c}}return S(r,e.byteLength,`geometry`),i.byteCount=r-i.byteOffset,i}function T(e,t){return e&&e.compressedAttributes&&e.compressedAttributes.encoding===`draco`?D(e.compressedAttributes.attributes):e?C(e):E(t)}function E(e){let t={isDraco:!1,isLegacy:!0,color:!1,normal:!1,uv0:!1,uvRegion:!1,featureIndex:!1};for(let n of e.ordering)if(e.vertexAttributes[n])switch(n){case`position`:break;case`normal`:t.normal=!0;break;case`color`:t.color=!0;break;case`uv0`:t.uv0=!0;break;case`region`:t.uvRegion=!0}return e.featureAttributes&&e.featureAttributeOrder&&(t.featureIndex=!0),t}function D(e){let t={isDraco:!0,isLegacy:!1,color:!1,normal:!1,uv0:!1,uvRegion:!1,featureIndex:!1};for(let n of e)switch(n){case`position`:break;case`normal`:t.normal=!0;break;case`uv0`:t.uv0=!0;break;case`color`:t.color=!0;break;case`uv-region`:t.uvRegion=!0;break;case`feature-index`:t.featureIndex=!0}return t}const O={position:`position`,normal:`normal`,color:`color`,uv0:`uv0`,region:`uvRegion`};function k(t,n,r,i=!1){if(t.encoding===`lepcc-rgb`)return i?u(n):c(u(n));if(t.encoding===`lepcc-intensity`)return i?d(n):l(d(n));if(t.encoding!=null&&t.encoding!==``)throw new e(`unknown-attribute-storage-info-encoding`,`Unknown Attribute Storage Info Encoding`);t[`attributeByteCounts `]&&!t.attributeByteCounts&&(f().warn(`Warning: Trailing space in 'attributeByteCounts '.`),t.attributeByteCounts=t[`attributeByteCounts `]),t.ordering[0]===`ObjectIds`&&t.hasOwnProperty(`objectIds`)&&(f().warn(`Warning: Case error in objectIds`),t.ordering[0]=`objectIds`);let a=x(n,t,r);S(a.byteOffset+a.byteCount,n.byteLength,`attribute`);let o=a.entries.attributeValues||a.entries.objectIds;if(o){if(o.valueType===`String`){let e=a.entries.attributeByteCounts,t=_(n,e),r=b(n,o);return o.timeEncoding?h(e.count,t,r):g(e.count,t,r)}return i?_(n,o):v(n,o)}throw new e(`bad-attribute-storage-info`,`Bad attributeStorageInfo specification.`)}const A={Float32:Float32Array,Float64:Float64Array,UInt8:Uint8Array,Int8:Int8Array,UInt16:Uint16Array,Int16:Int16Array,UInt32:Uint32Array,Int32:Int32Array},j={Float32:(e,t)=>new DataView(e,0).getFloat32(t,!0),Float64:(e,t)=>new DataView(e,0).getFloat64(t,!0),UInt8:(e,t)=>new DataView(e,0).getUint8(t),Int8:(e,t)=>new DataView(e,0).getInt8(t),UInt16:(e,t)=>new DataView(e,0).getUint16(t,!0),Int16:(e,t)=>new DataView(e,0).getInt16(t,!0),UInt32:(e,t)=>new DataView(e,0).getUint32(t,!0),Int32:(e,t)=>new DataView(e,0).getInt32(t,!0)};function M(e){return A.hasOwnProperty(e)}function N(e){return M(e)?A[e].BYTES_PER_ELEMENT:0}export{x as createAttributeDataIndex,T as createGeometryDescriptor,D as createGeometryDescriptorForDraco,C as createGeometryDescriptorFromDefinition,E as createGeometryDescriptorFromSchema,w as createGeometryIndexFromSchema,b as createRawView,_ as createTypedView,N as getBytesPerValue,y as getCachedAttributeValue,M as isValueType,k as readBinaryAttribute,h as readDateStringArray,m as readHeader,g as readStringArray,j as valueType2ArrayBufferReader,A as valueType2TypedArrayClassMap};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import{EventedAccessor as t}from"../../../../core/Evented.js";import n from"../../../../core/Logger.js";import{property as r,subclass as i}from"../../../../core/accessorSupport/decorators.js";import{create as a}from"../../../../core/libs/gl-matrix-2/factories/quatf64.js";import{set as o,transformQuatValues as s}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as c}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{canProjectWithoutEngine as l}from"../../../../geometry/projectionUtils.js";import{projectBoundingRect as u}from"../../../../geometry/projection/projectBoundingRect.js";import{projectBoundingSphere as d}from"../../../../geometry/projection/projectBoundingSphere.js";import{create as f,allFinite as p,fromExtent as m}from"../../../../geometry/support/aaBoundingRect.js";import{getInfo as h}from"../../../../geometry/support/spatialReferenceUtils.js";import{Sphere as g}from"../../../../geometry/support/sphere.js";import{ElevationRange as _}from"../../support/ElevationRange.js";import{ElevationUpdateEvent as v}from"../../support/ElevationUpdateEvent.js";import{ProjectedElevationUpdateExtent as y,calculateElevationUpdateExtents as b,fullWorldElevationUpdateExtent as x,planetCenterProximityToleranceMeters as S}from"../../support/elevationUpdateExtentUtils.js";import{Intersector as C}from"../../webgl-engine/lib/Intersector.js";let w=class extends t{constructor(e){super(e),this._renderCoordsHelper=e.view.renderCoordsHelper,this._renderSR=this._renderCoordsHelper.spatialReference,this._layerElevationSource=e.layerElevationSource,this._projectedExtent=new y(this._renderCoordsHelper)}initialize(){this._intersector=new C(this.view.state.viewingMode),this._intersector.options.store=0,this._intersector.options.normalRequired=!1}get spatialReference(){return this.view?.elevationProvider?.spatialReference}getElevation(e,t,r,i){let a=this._renderCoordsHelper,s=o(E,e,t,r);if(!a.toRenderCoords(s,i,s))return n.getLogger(this).error(`could not project point to compute elevation`),null;let{layerElevationSource:c,_intersector:l,intersectionHandler:u}=this,d=c.elevationRange;if(d==null||d.isEmpty)return null;let f=d.minElevation,p=d.maxElevation,m=
|
|
2
|
+
import{__decorate as e}from"tslib";import{EventedAccessor as t}from"../../../../core/Evented.js";import n from"../../../../core/Logger.js";import{property as r,subclass as i}from"../../../../core/accessorSupport/decorators.js";import{create as a}from"../../../../core/libs/gl-matrix-2/factories/quatf64.js";import{set as o,transformQuatValues as s}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as c}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{canProjectWithoutEngine as l}from"../../../../geometry/projectionUtils.js";import{projectBoundingRect as u}from"../../../../geometry/projection/projectBoundingRect.js";import{projectBoundingSphere as d}from"../../../../geometry/projection/projectBoundingSphere.js";import{create as f,allFinite as p,fromExtent as m}from"../../../../geometry/support/aaBoundingRect.js";import{getInfo as h}from"../../../../geometry/support/spatialReferenceUtils.js";import{Sphere as g}from"../../../../geometry/support/sphere.js";import{ElevationRange as _}from"../../support/ElevationRange.js";import{ElevationUpdateEvent as v}from"../../support/ElevationUpdateEvent.js";import{ProjectedElevationUpdateExtent as y,calculateElevationUpdateExtents as b,fullWorldElevationUpdateExtent as x,planetCenterProximityToleranceMeters as S}from"../../support/elevationUpdateExtentUtils.js";import{Intersector as C}from"../../webgl-engine/lib/Intersector.js";let w=class extends t{constructor(e){super(e),this._renderCoordsHelper=e.view.renderCoordsHelper,this._renderSR=this._renderCoordsHelper.spatialReference,this._layerElevationSource=e.layerElevationSource,this._projectedExtent=new y(this._renderCoordsHelper)}initialize(){this._intersector=new C(this.view.state.viewingMode),this._intersector.options.store=0,this._intersector.options.normalRequired=!1}get spatialReference(){return this.view?.elevationProvider?.spatialReference}getElevation(e,t,r,i){let a=this._renderCoordsHelper,s=o(E,e,t,r);if(!a.toRenderCoords(s,i,s))return n.getLogger(this).error(`could not project point to compute elevation`),null;let{layerElevationSource:c,_intersector:l,intersectionHandler:u}=this,d=c.elevationRange;if(d==null||d.isEmpty)return null;let f=d.minElevation,p=d.maxElevation,m=Math.max(1,(p-f)/2),h=a.setAltitude(k,p+m,s),g=a.setAltitude(A,f-m,s);return l.reset(h,g,this.view.state.camera),u.intersectRay(l,null,h,g,null,!0),l.results.min.getIntersectionPoint(s)?a.getAltitude(s):null}getElevations(e,t,n){let{groundSpatialReference:r}=this.view;for(let i=0;i<t;++i){let t=i*3,a=e[t],o=e[t+1],s=this.getElevation(a,o,0,r);n(i,s)}}getSphereElevationRange(e,t){return d(e,t,T,this._renderSR),this._layerElevationSource.getElevationRange(T)}getRootElevationRange(){let e=this.layerElevationSource.fullExtent;return e?.hasZ?new _(e.zmin,e.zmax):null}notifyObjectsChanged(e){this._notifyObjectsChanged(e.length,t=>{for(let n of e)if(!t(n))break})}notifyObjectsChangedFunctional(e,t){this._notifyObjectsChanged(e,t)}notifyObjectChanged(e){this._notifyObjectsChanged(1,t=>{t(e)})}_notifyObjectsChanged(e,t){if(e===0)return;let n=this.spatialReference;if(n==null)return;if(!l(this._renderSR,n)){this._emitFullExtentElevationChange(n);return}let r=new Float64Array(4*e),i=!1,a=0;t(e=>this._computeObjectExtent(e,r,a,n)?(a++,!0):(i=!0,!1)),i?this._emitFullExtentElevationChange(n):this._emitElevationChangeEvents(r,n)}_computeObjectExtent(e,t,n,r){if(this.view.state.viewingMode===1&&P(e))return!1;let i=this._projectedExtent;return E[0]=e.centerX,E[1]=e.centerY,E[2]=e.centerZ,i.reset(E,e.radius,r),!this._expandExtent(e,i,r)||!p(i.extent)?!1:(t.set(i.extent,4*n),!0)}_emitElevationChangeEvents(e,t){for(let n of b(e,t))this._emitElevationChangeEvent(n,t)}_emitFullExtentElevationChange(e){let t=f(),n=this._layerElevationSource.fullExtent;if(n!=null&&u(m(n,M),n.spatialReference,t,e)&&p(t)){this._emitElevationChangeEvent(t,e);return}let r=h(e);r!=null&&this._emitElevationChangeEvent(x(e,r),e)}_emitElevationChangeEvent(e,t){let n=new v(t,e,this.intersectionHandler.isGround?`ground`:`scene`);this.emit(`elevation-change`,n)}_expandExtent(e,t,n){e.getCorners(O);for(let e=0;e<8;++e){let r=O[e];if(t.addRenderPoint(r,n)==null)return!1}for(let e=0;e<D.length;e+=2)if(!t.addRenderEdge(O[D[e]],O[D[e+1]],n))return!1;return!0}};e([r({constructOnly:!0})],w.prototype,`layerElevationSource`,void 0),e([r({constructOnly:!0})],w.prototype,`intersectionHandler`,void 0),e([r({constructOnly:!0})],w.prototype,`view`,void 0),e([r()],w.prototype,`spatialReference`,null),w=e([i(`esri.views.3d.layers.i3s.LayerElevationProvider`)],w);const T=new g,E=c(),D=[0,1,2,3,4,5,6,7,0,2,1,3,4,6,5,7,0,4,1,5,2,6,3,7],O=Array.from({length:8},()=>c()),k=c(),A=c(),j=a(),M=f(),N=c();function P(e){N[0]=-e.centerX,N[1]=-e.centerY,N[2]=-e.centerZ,e.getQuaternion(j),s(N,N,-j[0],-j[1],-j[2],j[3]);let t=Math.max(Math.abs(N[0])-e.halfSizeX,0),n=Math.max(Math.abs(N[1])-e.halfSizeY,0),r=Math.max(Math.abs(N[2])-e.halfSizeZ,0);return t*t+n*n+r*r<=S*S}export{w as LayerElevationProvider};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import t from"../../../core/Accessor.js";import{deg2rad as n,rad2deg as r}from"../../../core/mathUtils.js";import{watch as i,sync as a,initial as o}from"../../../core/reactiveUtils.js";import{property as s,subclass as c}from"../../../core/accessorSupport/decorators.js";import{applyAll as l}from"../camera/constraintUtils.js";import{surfaceElevationBelowRenderLocation as u}from"../camera/intersectionUtils.js";import{ConstraintOptions as d}from"../camera/constraintUtils/ConstraintOptions.js";import{createNearFarHeuristic as f}from"./NearFarHeuristic.js";import{SurfaceCollisionConstraint as p}from"./SurfaceCollisionConstraint.js";let m=class extends t{constructor(e){super(e),this.nearFarHeuristic=f(e.view.state.viewingMode,e.view.groundView,e.view.renderCoordsHelper.spatialReference)}initialize(){let e=()=>this._updateNearFar();this.addHandles([i(()=>[this.view.constraints.clipDistance.near,this.view.constraints.clipDistance.far],()=>this._clipDistanceNearFarChanged()),this.view.state.events.on(`before-camera-change`,({camera:e,sceneDepthRange:t})=>this._updateCameraNearFar(e,t)),i(()=>this.view.constraints.clipDistance.mode,e),i(()=>this.view.navigation.mode,e,a),i(()=>this.view.stage.renderer.sceneDepthRange.value,e,a),i(()=>this.view.renderDataExtent,e,a),i(()=>this.view.groundView.visibleElevationRange,e,a),i(()=>[this.view.constraints.altitude.min,this.view.constraints.altitude.max],()=>this._updateAltitude(),a),i(()=>this.view.constraints.tilt.max,()=>this._updateTiltMax(),a),i(()=>this.view.constraints.tilt.mode,()=>this._updateTilt(),a),i(()=>this.view.state?.camera,()=>this._updateTiltAutoMax(),a),i(()=>[this.view.map?.ground?.navigationConstraint?.type,this.view.state.constraints.collision.enabled],()=>this._updateCollision(),a)]),this.view.state.isLocal&&this.addHandles(i(()=>this.view.renderDataExtent,e=>this._updateLocalSurfaceDistance(e),o)),this._updateNearFar(),this.view.state.viewingMode!==2&&this._updateAltitude(),this._updateTilt(),this._updateCollision(),this._set(`surfaceCollisionConstraint`,new p({view:this.view}))}destroy(){this.surfaceCollisionConstraint&&(this.surfaceCollisionConstraint.destroy(),this._set(`surfaceCollisionConstraint`,null))}_clipDistanceNearFarChanged(){let e=this.view.constraints.clipDistance;e.mode!==`auto`&&this.view.state.updateCamera(t=>h(t,e))}_updateNearFar(){this.view.
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../../core/Accessor.js";import{deg2rad as n,rad2deg as r}from"../../../core/mathUtils.js";import{watch as i,sync as a,initial as o}from"../../../core/reactiveUtils.js";import{property as s,subclass as c}from"../../../core/accessorSupport/decorators.js";import{applyAll as l}from"../camera/constraintUtils.js";import{surfaceElevationBelowRenderLocation as u}from"../camera/intersectionUtils.js";import{ConstraintOptions as d}from"../camera/constraintUtils/ConstraintOptions.js";import{createNearFarHeuristic as f}from"./NearFarHeuristic.js";import{SurfaceCollisionConstraint as p}from"./SurfaceCollisionConstraint.js";let m=class extends t{constructor(e){super(e),this.nearFarHeuristic=f(e.view.state.viewingMode,e.view.groundView,e.view.renderCoordsHelper.spatialReference)}initialize(){let e=()=>this._updateNearFar();this.addHandles([i(()=>[this.view.constraints.clipDistance.near,this.view.constraints.clipDistance.far],()=>this._clipDistanceNearFarChanged()),this.view.state.events.on(`before-camera-change`,({camera:e,sceneDepthRange:t})=>this._updateCameraNearFar(e,t)),i(()=>this.view.constraints.clipDistance.mode,e),i(()=>this.view.navigation.mode,e,a),i(()=>this.view.stage.renderer.sceneDepthRange.value,e,a),i(()=>this.view.renderDataExtent,e,a),i(()=>this.view.groundView.visibleElevationRange,e,a),i(()=>[this.view.constraints.altitude.min,this.view.constraints.altitude.max],()=>this._updateAltitude(),a),i(()=>this.view.constraints.tilt.max,()=>this._updateTiltMax(),a),i(()=>this.view.constraints.tilt.mode,()=>this._updateTilt(),a),i(()=>this.view.state?.camera,()=>this._updateTiltAutoMax(),a),i(()=>[this.view.map?.ground?.navigationConstraint?.type,this.view.state.constraints.collision.enabled],()=>this._updateCollision(),a)]),this.view.state.isLocal&&this.addHandles(i(()=>this.view.renderDataExtent,e=>this._updateLocalSurfaceDistance(e),o)),this._updateNearFar(),this.view.state.viewingMode!==2&&this._updateAltitude(),this._updateTilt(),this._updateCollision(),this._set(`surfaceCollisionConstraint`,new p({view:this.view}))}destroy(){this.surfaceCollisionConstraint&&(this.surfaceCollisionConstraint.destroy(),this._set(`surfaceCollisionConstraint`,null))}_clipDistanceNearFarChanged(){let e=this.view.constraints.clipDistance;e.mode!==`auto`&&this.view.state.updateCamera(t=>h(t,e))}_updateNearFar(){let{state:e}=this.view;e.updateCamera(e=>this._updateCameraNearFar(e)),e.updateContentCameraIfPresent()}_updateCameraNearFar(e,t){let n=this.view.constraints.clipDistance;n.mode===`manual`?h(e,n):this._updateCameraNearFarAuto(e,n,t)}_updateCameraNearFarAuto(e,t,n=this.view.stage.renderer.sceneDepthRange.value){if(this.view.navigation.mode.type===`ground`)e.near=this.view.navigation.mode.nearOverride,e.far=this.view.navigation.mode.farOverride;else{let t=u(this.view,e.eye),r=this.nearFarHeuristic.compute(e,this.view.renderDataExtent,n,t);e.near=r.near,e.far=r.far}t&&t.autoUpdate(e.near,e.far)}_updateCollision(){let e=this.view.map?.ground?.navigationConstraint?.type,t=!e||e===`stay-above`,n=this.view.state.constraints.collision;t!==n.enabled&&(n.enabled=t,t&&this._reapplyConstraints(8),this.view.constraints.tilt.mode===`auto`&&this._updateTiltAuto())}_updateAltitude(){let e=this.view.constraints.altitude;this.view.state.viewingMode===1?this.view.state.constraints.altitude={min:e.min,max:e.max}:this.view.state.constraints.altitude=null,this._reapplyConstraints()}_updateTiltMax(){let e=this.view.constraints.tilt;e.mode!==`auto`&&(this._updateTiltManual(e),this._reapplyConstraints())}_updateTilt(){let e=this.view.constraints.tilt;e.mode===`manual`?this._updateTiltManual(e):this._updateTiltAuto(),this._reapplyConstraints()}_updateTiltManual(e){let t=this.view.state.constraints;t.tilt=t.createConstantMaxTilt(n(e.max))}_updateTiltAuto(){let e=this.view.state.constraints;e.tilt=e.createDefaultTilt(),this._updateTiltAutoMax()}_updateTiltAutoMax(){let e=this.view.constraints.tilt;if(e.mode!==`auto`)return;let t=this.view.state.constraints;if(t.tilt){let n=t.tilt(this.view.state.camera.distance).max;e.autoUpdate(r(n))}}_updateLocalSurfaceDistance(e){if(e==null)return;let t=Math.max(e.width,e.height);if(t<=0)return;e.zmax!=null&&e.zmin!=null&&(t=Math.max(t,e.zmax-e.zmin));let n=this.view.state,r=3*t/Math.atan(n.camera.fov/2);r!==n.constraints.distance&&(n.constraints.distance=r)}_reapplyConstraints(e=15){this.view.state.updateCamera(t=>{let n=t.clone();l(this.view,t,new d(e,0,null),t,n),this.surfaceCollisionConstraint?.setSourceCamera(n)})}};e([s({constructOnly:!0})],m.prototype,`view`,void 0),e([s({readOnly:!0})],m.prototype,`surfaceCollisionConstraint`,void 0),m=e([c(`esri.views.3d.state.ConstraintsManager`)],m);function h(e,t){t&&(e.near=t.near,e.far=t.far)}export{m as ConstraintsManager};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import{prefersReducedMotion as t}from"../../../core/a11yUtils.js";import n from"../../../core/Accessor.js";import{EventEmitter as r}from"../../../core/Evented.js";import{destroyMaybe as i}from"../../../core/maybe.js";import{when as a}from"../../../core/reactiveUtils.js";import{property as o,subclass as s}from"../../../core/accessorSupport/decorators.js";import{afterDispatch as c}from"../../../core/accessorSupport/watch.js";import{fromValues as l}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{getReferenceEllipsoid as u}from"../../../geometry/ellipsoidUtils.js";import d from"../../ViewAnimation.js";import{viewingModeFromString as f}from"../../ViewingMode.js";import{applySurfaceCollisionConstraint as p}from"../camera/constraintUtils/surfaceCollision.js";import{Constraints as m}from"./Constraints.js";import{HUDOccludedFragmentOpacity as h,labelVisibleConfiguration as g,labelAdaptiveConfiguration as _,iconVisibleConfiguration as v,iconAdaptiveConfiguration as y}from"./HUDOccludedFragmentOpacity.js";import{AnimationController as b}from"./controllers/AnimationController.js";import x from"../webgl/RenderCamera.js";import{DepthRange as S}from"../webgl-engine/lib/DepthRange.js";import{maximumHighlights as C}from"../../support/HighlightDefaults.js";import{PropertiesPool as w}from"../../support/PropertiesPool.js";let T=class extends n{constructor(e){super(e),this._propertiesPool=new w({camera:()=>new x},this),this._lastSeenCameraProjectionValues=new x,this.mode=0,this._cssCamera=new x,this._camera=new x,this.rasterPixelRatio=1,this.contentPixelRatio=1,this.constraints=new m({state:this}),this.events=new r,this.occludedFragmentOpacity=[null,null,null,null],this.fading=!1,this._cameraChanged=!1,this._updateQueue=[],this._processingUpdates=!1}reset(){this.cameraController=null,this._propertiesPool.destroy(),this._propertiesPool=new w({camera:()=>new x},this)}destroy(){this.cameraController=null,this._propertiesPool=i(this._propertiesPool)}createInitialCamera(){if(this.viewingMode===1){let e=u(this.spatialReference).radius;this.camera=new x({eye:l(e*4,0,0),center:l(e,0,0),up:l(0,0,1)})}else this.camera=new x({eye:l(0,0,100),center:l(0,0,0),up:l(0,1,0)})}get animation(){return this.cameraController instanceof b&&this.cameraController.viewAnimation!=null?this.cameraController.viewAnimation:null}get cssCamera(){let e=this._cssCamera.copyFrom(this.camera),{height:t,width:n,pixelRatio:r}=this.camera;return e.pixelRatio=1,e.height=Math.round(t/r),e.width=Math.round(n/r),e}get camera(){return this._camera}set camera(e){e!==O&&O.copyFrom(e),O.computeUp(this.viewingMode),this.events.emit(`before-camera-change`,{camera:O});let t=this._camera;if(D(this._lastSeenCameraProjectionValues,O)&&(this._lastSeenCameraProjectionValues.copyFrom(O),this.events.emit(`camera-projection-changed`,this._lastSeenCameraProjectionValues)),!t.equals(O)&&(this._camera=this._propertiesPool.get(`camera`).copyFrom(O),this._cameraChanged=!t.almostEquals(O),this._cameraChanged)){let e=c(()=>{this._cameraChanged=!1,e.remove()})}}get pixelRatio(){return this.camera.pixelRatio}get alignPixelEnabled(){return this.pixelRatio===this.rasterPixelRatio&&this.mode===2}get updating(){return this.mode!==2}get contentCamera(){return this._contentCamera??this.camera}set contentCamera(e){if(e==null){this._contentCamera=null;return}let t=e.clone();this.events.emit(`before-camera-change`,{camera:t,sceneDepthRange:S.Infinite}),this._contentCamera=t}get fixedContentCamera(){return this._contentCamera!=null}get isGlobal(){return this.viewingMode===1}get isLocal(){return this.viewingMode===2}get viewingMode(){return f(this.view.viewingMode)}get spatialReference(){return this.view.spatialReference}ensureOccludedFragmentOpacity(e,t){let n=t===`visible`,r=(n?2:0)+ +!!e,i=e?n?g:_:n?v:y,a=()=>this.view.stage?.renderView.requestRender(2);return this.occludedFragmentOpacity[r]??=new h({configuration:i,requestRender:a}),this.occludedFragmentOpacity[r]}get highlights(){let e=this.view.highlights.items.slice(0,C);for(let t=0;t<e.length;){let n=e[t],r=e.findIndex(e=>e.name===n.name);r>=0&&t>r?e.splice(t,1):++t}return e}get highlightOrderMap(){return new Map(this.highlights.map(({name:e},t)=>[e,t]))}get animationsEnabled(){return this.view.animationsEnabled&&!t()}get navigating(){return!!this.cameraController?.isInteractive}get stationary(){return!this._cameraChanged&&!this.navigating}get cameraController(){return this._get(`cameraController`)}set cameraController(e){this.stopActiveCameraController()?(this.removeHandles(k),this.cameraController?.destroy(),e&&(this.addHandles(a(()=>e.state===4||e.state===3,()=>{this.updateCamera(t=>{e.onControllerEnd(t),this.view.stateManager?.setCollisionSourceCamera(t),p(this.view,null,t,1)}),this.cameraController===e&&(this._set(`cameraController`,null),e.destroy())},{sync:!0,once:!0}),k),e.onControllerStart(this.camera),this.view.stateManager?.setCollisionSourceCamera(this.camera)),this._set(`cameraController`,e)):e&&(e.state=1)}switchCameraController(e){this.cameraController=e}stopActiveCameraController(){return!this.cameraController||this.cameraController.stopController()}updateCamera(e){this._updateQueue.push(e),this._processUpdateQueue()}_processUpdateQueue(){if(this._updateQueue.length===0||this._processingUpdates)return;this._processingUpdates=!0;let e=this._updateQueue.shift();O.copyFrom(this.camera),e(O),this.camera=O,this._processingUpdates=!1,this._processUpdateQueue()}static cleanupViewstate(){O=new x}};e([o({constructOnly:!0})],T.prototype,`view`,void 0),e([o()],T.prototype,`mode`,void 0),e([o({readOnly:!0,type:d})],T.prototype,`animation`,null),e([o({type:x})],T.prototype,`cssCamera`,null),e([o()],T.prototype,`_cssCamera`,void 0),e([o({type:x})],T.prototype,`camera`,null),e([o()],T.prototype,`_camera`,void 0),e([o({readOnly:!0})],T.prototype,`pixelRatio`,null),e([o()],T.prototype,`rasterPixelRatio`,void 0),e([o()],T.prototype,`contentPixelRatio`,void 0),e([o({readOnly:!0})],T.prototype,`alignPixelEnabled`,null),e([o({readOnly:!0})],T.prototype,`updating`,null),e([o({})],T.prototype,`_contentCamera`,void 0),e([o({type:x})],T.prototype,`contentCamera`,null),e([o({readOnly:!0})],T.prototype,`fixedContentCamera`,null),e([o({readOnly:!0})],T.prototype,`events`,void 0),e([o({readOnly:!0})],T.prototype,`isGlobal`,null),e([o({readOnly:!0})],T.prototype,`isLocal`,null),e([o({readOnly:!0})],T.prototype,`viewingMode`,null),e([o()],T.prototype,`occludedFragmentOpacity`,void 0),e([o({readOnly:!0})],T.prototype,`highlights`,null),e([o({readOnly:!0})],T.prototype,`highlightOrderMap`,null),e([o({readOnly:!0})],T.prototype,`navigating`,null),e([o()],T.prototype,`fading`,void 0),e([o({readOnly:!0})],T.prototype,`stationary`,null),e([o()],T.prototype,`_cameraChanged`,void 0),e([o()],T.prototype,`cameraController`,null),T=e([s(`esri.views.3d.state.ViewState`)],T);const E=T;function D(e,t){return e.fov!==t.fov||e.fullViewport[0]!==t.fullViewport[0]||e.fullViewport[1]!==t.fullViewport[1]||e.fullViewport[2]!==t.fullViewport[2]||e.fullViewport[3]!==t.fullViewport[3]||e.padding[0]!==t.padding[0]||e.padding[1]!==t.padding[1]||e.padding[2]!==t.padding[2]||e.padding[3]!==t.padding[3]}let O=new x;const k=`ViewStateHandles`;export{E as default};
|
|
2
|
+
import{__decorate as e}from"tslib";import{prefersReducedMotion as t}from"../../../core/a11yUtils.js";import n from"../../../core/Accessor.js";import{EventEmitter as r}from"../../../core/Evented.js";import{destroyMaybe as i}from"../../../core/maybe.js";import{when as a}from"../../../core/reactiveUtils.js";import{property as o,subclass as s}from"../../../core/accessorSupport/decorators.js";import{afterDispatch as c}from"../../../core/accessorSupport/watch.js";import{fromValues as l}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{getReferenceEllipsoid as u}from"../../../geometry/ellipsoidUtils.js";import d from"../../ViewAnimation.js";import{viewingModeFromString as f}from"../../ViewingMode.js";import{applySurfaceCollisionConstraint as p}from"../camera/constraintUtils/surfaceCollision.js";import{Constraints as m}from"./Constraints.js";import{HUDOccludedFragmentOpacity as h,labelVisibleConfiguration as g,labelAdaptiveConfiguration as _,iconVisibleConfiguration as v,iconAdaptiveConfiguration as y}from"./HUDOccludedFragmentOpacity.js";import{AnimationController as b}from"./controllers/AnimationController.js";import x from"../webgl/RenderCamera.js";import{DepthRange as S}from"../webgl-engine/lib/DepthRange.js";import{maximumHighlights as C}from"../../support/HighlightDefaults.js";import{PropertiesPool as w}from"../../support/PropertiesPool.js";let T=class extends n{constructor(e){super(e),this._propertiesPool=new w({camera:()=>new x},this),this._lastSeenCameraProjectionValues=new x,this.mode=0,this._cssCamera=new x,this._camera=new x,this.rasterPixelRatio=1,this.contentPixelRatio=1,this.constraints=new m({state:this}),this.events=new r,this.occludedFragmentOpacity=[null,null,null,null],this.fading=!1,this._cameraChanged=!1,this._updateQueue=[],this._processingUpdates=!1}reset(){this.cameraController=null,this._propertiesPool.destroy(),this._propertiesPool=new w({camera:()=>new x},this)}destroy(){this.cameraController=null,this._propertiesPool=i(this._propertiesPool)}createInitialCamera(){if(this.viewingMode===1){let e=u(this.spatialReference).radius;this.camera=new x({eye:l(e*4,0,0),center:l(e,0,0),up:l(0,0,1)})}else this.camera=new x({eye:l(0,0,100),center:l(0,0,0),up:l(0,1,0)})}get animation(){return this.cameraController instanceof b&&this.cameraController.viewAnimation!=null?this.cameraController.viewAnimation:null}get cssCamera(){let e=this._cssCamera.copyFrom(this.camera),{height:t,width:n,pixelRatio:r}=this.camera;return e.pixelRatio=1,e.height=Math.round(t/r),e.width=Math.round(n/r),e}get camera(){return this._camera}set camera(e){e!==O&&O.copyFrom(e),O.computeUp(this.viewingMode),this.events.emit(`before-camera-change`,{camera:O});let t=this._camera;if(D(this._lastSeenCameraProjectionValues,O)&&(this._lastSeenCameraProjectionValues.copyFrom(O),this.events.emit(`camera-projection-changed`,this._lastSeenCameraProjectionValues)),!t.equals(O)&&(this._camera=this._propertiesPool.get(`camera`).copyFrom(O),this._cameraChanged=!t.almostEquals(O),this._cameraChanged)){let e=c(()=>{this._cameraChanged=!1,e.remove()})}}get pixelRatio(){return this.camera.pixelRatio}get alignPixelEnabled(){return this.pixelRatio===this.rasterPixelRatio&&this.mode===2}get updating(){return this.mode!==2}get contentCamera(){return this._contentCamera??this.camera}set contentCamera(e){if(e==null){this._contentCamera=null;return}let t=e.clone();this.events.emit(`before-camera-change`,{camera:t,sceneDepthRange:S.Infinite}),this._contentCamera?.equals(t)||(this._contentCamera=t)}get fixedContentCamera(){return this._contentCamera!=null}get isGlobal(){return this.viewingMode===1}get isLocal(){return this.viewingMode===2}get viewingMode(){return f(this.view.viewingMode)}get spatialReference(){return this.view.spatialReference}ensureOccludedFragmentOpacity(e,t){let n=t===`visible`,r=(n?2:0)+ +!!e,i=e?n?g:_:n?v:y,a=()=>this.view.stage?.renderView.requestRender(2);return this.occludedFragmentOpacity[r]??=new h({configuration:i,requestRender:a}),this.occludedFragmentOpacity[r]}get highlights(){let e=this.view.highlights.items.slice(0,C);for(let t=0;t<e.length;){let n=e[t],r=e.findIndex(e=>e.name===n.name);r>=0&&t>r?e.splice(t,1):++t}return e}get highlightOrderMap(){return new Map(this.highlights.map(({name:e},t)=>[e,t]))}get animationsEnabled(){return this.view.animationsEnabled&&!t()}get navigating(){return!!this.cameraController?.isInteractive}get stationary(){return!this._cameraChanged&&!this.navigating}get cameraController(){return this._get(`cameraController`)}set cameraController(e){this.stopActiveCameraController()?(this.removeHandles(k),this.cameraController?.destroy(),e&&(this.addHandles(a(()=>e.state===4||e.state===3,()=>{this.updateCamera(t=>{e.onControllerEnd(t),this.view.stateManager?.setCollisionSourceCamera(t),p(this.view,null,t,1)}),this.cameraController===e&&(this._set(`cameraController`,null),e.destroy())},{sync:!0,once:!0}),k),e.onControllerStart(this.camera),this.view.stateManager?.setCollisionSourceCamera(this.camera)),this._set(`cameraController`,e)):e&&(e.state=1)}switchCameraController(e){this.cameraController=e}stopActiveCameraController(){return!this.cameraController||this.cameraController.stopController()}updateContentCameraIfPresent(){this._contentCamera&&(this.contentCamera=this._contentCamera)}updateCamera(e){this._updateQueue.push(e),this._processUpdateQueue()}_processUpdateQueue(){if(this._updateQueue.length===0||this._processingUpdates)return;this._processingUpdates=!0;let e=this._updateQueue.shift();O.copyFrom(this.camera),e(O),this.camera=O,this._processingUpdates=!1,this._processUpdateQueue()}static cleanupViewstate(){O=new x}};e([o({constructOnly:!0})],T.prototype,`view`,void 0),e([o()],T.prototype,`mode`,void 0),e([o({readOnly:!0,type:d})],T.prototype,`animation`,null),e([o({type:x})],T.prototype,`cssCamera`,null),e([o()],T.prototype,`_cssCamera`,void 0),e([o({type:x})],T.prototype,`camera`,null),e([o()],T.prototype,`_camera`,void 0),e([o({readOnly:!0})],T.prototype,`pixelRatio`,null),e([o()],T.prototype,`rasterPixelRatio`,void 0),e([o()],T.prototype,`contentPixelRatio`,void 0),e([o({readOnly:!0})],T.prototype,`alignPixelEnabled`,null),e([o({readOnly:!0})],T.prototype,`updating`,null),e([o({})],T.prototype,`_contentCamera`,void 0),e([o({type:x})],T.prototype,`contentCamera`,null),e([o({readOnly:!0})],T.prototype,`fixedContentCamera`,null),e([o({readOnly:!0})],T.prototype,`events`,void 0),e([o({readOnly:!0})],T.prototype,`isGlobal`,null),e([o({readOnly:!0})],T.prototype,`isLocal`,null),e([o({readOnly:!0})],T.prototype,`viewingMode`,null),e([o()],T.prototype,`occludedFragmentOpacity`,void 0),e([o({readOnly:!0})],T.prototype,`highlights`,null),e([o({readOnly:!0})],T.prototype,`highlightOrderMap`,null),e([o({readOnly:!0})],T.prototype,`navigating`,null),e([o()],T.prototype,`fading`,void 0),e([o({readOnly:!0})],T.prototype,`stationary`,null),e([o()],T.prototype,`_cameraChanged`,void 0),e([o()],T.prototype,`cameraController`,null),T=e([s(`esri.views.3d.state.ViewState`)],T);const E=T;function D(e,t){return e.fov!==t.fov||e.fullViewport[0]!==t.fullViewport[0]||e.fullViewport[1]!==t.fullViewport[1]||e.fullViewport[2]!==t.fullViewport[2]||e.fullViewport[3]!==t.fullViewport[3]||e.padding[0]!==t.padding[0]||e.padding[1]!==t.padding[1]||e.padding[2]!==t.padding[2]||e.padding[3]!==t.padding[3]}let O=new x;const k=`ViewStateHandles`;export{E as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import t from"../../../Camera.js";import n from"../../../Viewpoint.js";import r from"../../../core/Accessor.js";import i from"../../../core/Logger.js";import{destroyMaybe as a}from"../../../core/maybe.js";import{on as o,watch as s,sync as c,when as l}from"../../../core/reactiveUtils.js";import{addFrameTask as u}from"../../../core/scheduling.js";import{createScreenPoint as d}from"../../../core/screenUtils.js";import{Milliseconds as f}from"../../../core/time.js";import{property as p,subclass as ee}from"../../../core/accessorSupport/decorators.js";import{runUntracked as m}from"../../../core/accessorSupport/tracking.js";import{squaredDistance as h}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{fromArray as g}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{set as _}from"../../../core/libs/gl-matrix-2/math/vec4.js";import{create as v}from"../../../core/libs/gl-matrix-2/factories/vec4f64.js";import y from"../../../geometry/Extent.js";import b from"../../../geometry/Point.js";import x from"../../../geometry/Polygon.js";import{isLoadedOrLoadFor as S,requiresLoad as te}from"../../../geometry/projectionUtils.js";import{fromRenderCamera as C,toRenderCamera as w}from"../webgl.js";import{applyAll as T}from"../camera/constraintUtils.js";import{cameraOnContentAlongViewDirection as E,surfaceElevationBelowRenderLocation as D}from"../camera/intersectionUtils.js";import{ConstraintsManager as O}from"./ConstraintsManager.js";import{Frustum as k}from"./Frustum.js";import{GoToOperation as A}from"./GoToOperation.js";import{toArea as j,toExtent as M,applyTiltAdjustToScale as N,scaleToZoom as P,fromExtentSync as F,getObserverForPointAtDistanceSync as I,viewScaleToCameraDistance as L,zoomToScale as R}from"../support/cameraUtils.js";import{fromCamera as z,toCameraSync as ne}from"../support/viewpointUtils.js";import B from"../webgl/RenderCamera.js";import{PropertiesPool as V}from"../../support/PropertiesPool.js";import{ensureAttachmentMaxSize as H}from"../../webgl/FramebufferObject.js";let U=class extends r{constructor(e){super(e),this.ready=!1,this._windowDevicePixelRatio=1,this._devicePixelRatioOverride=null,this._idleTimeout=$,this.test={viewStateManager:this,contentCameraResetState:new Map,setDevicePixelRatio:e=>this._devicePixelRatioOverride=e,getDevicePixelRatioOverride:()=>this._devicePixelRatioOverride,renderState:null,get maximumPixelRatio(){return this.viewStateManager.view.qualitySettings.maximumPixelRatio},get updatingIgnoreRenderState(){return this.renderState!=null},get idleTimeoutEnabled(){return this.viewStateManager._idleTimeout>0},set idleTimeoutEnabled(e){this.viewStateManager._idleTimeout=e?$:0}},this._propertiesPool=new V({frustum:()=>new k(null)},this),this._cameraSetByUser=!1,this._gotoOperation=null,this._cameraChangeTime=0,this._tmpCanvasSize=new W}initialize(){this._cameraChangeTime=performance.now(),this.addHandles([o(()=>this.view.state.events,`before-camera-change`,({camera:e})=>e&&this._updateElevation(e)),s(()=>this.view.state?.camera,(e,t)=>this._cameraChangedHandler(e,t),c)]),l(()=>this.view.state?.camera,e=>this._updateElevation(e),{once:!0,sync:!0}),this.addHandles([u({prepare:e=>this._prepareFrame(e.time)}),s(()=>this.view.state.cameraController,()=>{this._cameraSetByUser=!0,this.removeHandles(Z)}),o(()=>this.view.state.events,`camera-projection-changed`,()=>this.notifyChange(`scale`))])}destroy(){this.exit(),this._propertiesPool=a(this._propertiesPool)}get camera(){let e=this._get(`camera`);if(!this.ready)return e;let{view:t}=this,n=t.state.camera;return m(()=>{let r=C(t,n,J);return r&&e&&r.equals(e)?e:r.clone()})}set camera(e){if(this._updatePropertyBeforeReady(`camera`,e))return;this.view.elevationProvider.enableCache(!0);let t=w(this.view,e);t?this.setStateCamera(t,{applyConstraints:!1})||i.getLogger(this).warnOnce(`#camera=`,`There is a currently active camera controller that has priority.`):i.getLogger(this).error(`#camera=`,`Invalid camera`,e),this.view.elevationProvider.enableCache(!1)}get contentCamera(){let e=this._get(`contentCamera`);if(!this.ready)return e;let{view:t}=this,n=t.state.contentCamera;return m(()=>{let r=C(t,n,J);return r&&e&&r.equals(e)?e:r.clone()})}set contentCamera(e){if(this._updatePropertyBeforeReady(`contentCamera`,e))return;let t=w(this.view,e);t==null?this.view.state.contentCamera=null:this.view.state.contentCamera=t}installContentCameraReset(e){if(this.removeHandles(Q),this.test.contentCameraResetState.clear(),!this.view.state.fixedContentCamera)return!1;let t=this.zoom,n=this.view.state.camera.distance**2,r=g(this.view.state.camera.center),i=e.sticky?this.contentCamera.clone():null;return this.addHandles([s(()=>this.contentCamera,()=>{e.sticky||(this.removeHandles(Q),this.test.contentCameraResetState.clear())}),s(()=>this.zoom,e=>{e!==void 0&&t!==void 0&&(this.test.contentCameraResetState.set(`view.zoom`,Math.abs(e-t)/2),Math.abs(e-t)>2?this.contentCamera=null:this.view.state.fixedContentCamera||(this.contentCamera=i))}),s(()=>this.view.state.camera,e=>{let t=h(r,e.center);this.test.contentCameraResetState.set(`camera.center`,t/n),t>n?this.contentCamera=null:this.view.state.fixedContentCamera||(this.contentCamera=i)})],Q),!0}get center(){return this.ready?this.view.pointsOfInterest.centerOnContent.location:this._get(`center`)}set center(e){this._updatePropertyBeforeReady(`center`,e)||(e?this.isCompatible(e)?this.setStateCamera(this._centerToCamera(e),{applyConstraints:!0})?this.view.pointsOfInterest.centerOnContent.runTask():i.getLogger(this).error(`#center=`,`Invalid center`,e):i.getLogger(this).error(`#center=`,`Center has an incompatible spatial reference (center: `+(e.spatialReference?e.spatialReference.wkid:`none`)+`, view: `+this.view.spatialReference?.wkid+`)`,e):i.getLogger(this).error(`#center=`,`Center may not be null or undefined`))}get visibleArea(){if(!this.ready){let e=this._get(`extent`);return e?x.fromExtent(e):null}return j(this.view,this.view.pointsOfInterest.focus.renderLocation)}get extent(){if(!this.ready)return this._get(`extent`);let e=this.view;return M(e,e.state.camera,e.pointsOfInterest.centerOnContent.renderLocation)??this._get(`extent`)}set extent(e){this._updatePropertyBeforeReady(`extent`,e)||(e?this.isCompatible(e)?this.setStateCamera(this._extentToCamera(e),{applyConstraints:!0})||i.getLogger(this).error(`#extent=`,`Invalid extent`,e):i.getLogger(this).error(`#extent=`,`Extent has an incompatible spatial reference (extent: `+(e.spatialReference?e.spatialReference.wkid:`none`)+`, view: `+this.view.spatialReference?.wkid+`)`,e):i.getLogger(this).error(`#extent=`,`Extent may not be null or undefined`))}get frustum(){let e=this._propertiesPool.get(`frustum`);return e.renderCoordsHelper=this.view.renderCoordsHelper,e.update(this.view.state.camera),e}get constraintsManager(){return this._constraintsManager}get _initialViewpoint(){let e=this.view.map;return e&&`initialViewProperties`in e?e.initialViewProperties?.viewpoint:void 0}get hasInitialView(){return!!this._initialViewpoint}get scale(){if(!this.ready)return this._get(`scale`);let e=this.view.basemapTerrain.tilingScheme,t=this.view.pointsOfInterest.cameraOnSurface.scale;return!e||!t?this._get(`scale`):N(this.view,t,this.view.state.contentCamera,e)}set scale(e){this._updatePropertyBeforeReady(`scale`,e)||this.setStateCamera(this._scaleToCamera(e),{applyConstraints:!0})||i.getLogger(this).error(`#scale=`,`Invalid scale`,e)}get padding(){if(!this.ready)return this._get(`padding`);let e=this.view.state.camera,t=e.padding,n=e.pixelRatio,r=this._get(`padding`),i=Math.round(t[0]/n),a=Math.round(t[1]/n),o=Math.round(t[2]/n),s=Math.round(t[3]/n);return r!=null&&r.top===i&&r.right===a&&r.bottom===o&&r.left===s?r:{top:i,right:a,bottom:o,left:s}}set padding(e){this._updatePropertyBeforeReady(`padding`,e)||(this._paddingToArray(e,this.view.state.camera.pixelRatio,X),this.view.state.updateCamera(e=>e.padding=X))}_paddingToArray(e,t,n){e?_(n,e.top||0,e.right||0,e.bottom||0,e.left||0):_(n,0,0,0,0);for(let e=0;e<4;e++)n[e]=Math.round(n[e]*t)}get screenCenter(){let e=this.padding;return d((this.view.width-(e.left+e.right))/2+e.left,(this.view.height-(e.top+e.bottom))/2+e.top)}get viewpoint(){return this.ready?z(this.view,this.camera):this._get(`viewpoint`)}set viewpoint(e){if(!this._updatePropertyBeforeReady(`viewpoint`,e)){if(!e)i.getLogger(this).error(`#viewpoint=`,`Viewpoint may not be null or undefined`);else if(this.isCompatible(e))this.setStateCamera(this._viewpointToCamera(e),{applyConstraints:!e.camera})||i.getLogger(this).error(`#viewpoint=`,`Invalid viewpoint`,e);else{let t=e.camera==null?e.targetGeometry:e.camera.position,n=t!=null&&t.spatialReference;i.getLogger(this).error(`#viewpoint=`,`Viewpoint has an incompatible spatial reference (viewpoint: `+(n?n.wkid:`none`)+`, view: `+this.view.spatialReference?.wkid+`)`,e)}}}get zoom(){return this.ready?P(this.view,this.scale):this._get(`zoom`)}set zoom(e){this._updatePropertyBeforeReady(`zoom`,e)||e===void 0||this.setStateCamera(this._zoomToCamera(e),{applyConstraints:!0})||i.getLogger(this).error(`#zoom=`,`Invalid zoom`,e)}_computeCanvasSize(e){if(this._devicePixelRatioOverride){this.view.state.contentPixelRatio=this._devicePixelRatioOverride,e.width=Math.round(this.view.surface.clientWidth*this._devicePixelRatioOverride),e.height=Math.round(this.view.surface.clientHeight*this._devicePixelRatioOverride),e.pixelRatio=this._devicePixelRatioOverride,e.pixelScale=1;return}let t=Math.min(this._windowDevicePixelRatio,this.view.qualitySettings.maximumPixelRatio),n=(this._useDevicePixelResolution()?this._windowDevicePixelRatio:t)*this.view.resolutionScale;e.width=Math.round(this.view.surface.clientWidth*n),e.height=Math.round(this.view.surface.clientHeight*n);let r=this.view.stage.renderView.renderingContext?.parameters.maxTextureSize;r&&H(e,r),e.pixelRatio=e.width>0?.5*(e.width/this.view.surface.clientWidth)+.5*(e.height/this.view.surface.clientHeight):n,e.pixelScale=this._windowDevicePixelRatio/e.pixelRatio,this.view.state&&(this.view.state.contentPixelRatio=Math.min(this._windowDevicePixelRatio,this.view.qualitySettings.maximumPixelRatio))}get _rasterPixelRatio(){return this._devicePixelRatioOverride==null?this._useDevicePixelResolution(2)?this._windowDevicePixelRatio:Math.min(this._windowDevicePixelRatio,this.view.qualitySettings.maximumPixelRatio):this._devicePixelRatioOverride}_useDevicePixelResolution(e){return this.view?.stage?.renderer.isFeatureEnabled(8,e)??!1}preinit(e){return!(this._isOverridden(`center`)&&!S(this.center.spatialReference,e)||this._isOverridden(`camera`)&&!S(this.camera.position.spatialReference,e)||this._isOverridden(`extent`)&&!S(this.extent.spatialReference,e)||this._isOverridden(`viewpoint`)&&(!S(this.viewpoint.targetGeometry?.spatialReference,e)||!S(this.viewpoint.camera?.position?.spatialReference,e)))}init(){this._constraintsManager=new O({view:this.view}),this._prepareFrame(f(0));let e=this._getInitialProperties();this._cameraSetByUser=!1,this._set(`ready`,!0);for(let t of e)this.set(t.name,t.value);if(!this._cameraSetByUser){let e=this._initialViewpoint||this.view.initialExtent;e&&this.isCompatible(e)?this._setInitialView(e):this.view.state.viewingMode===2&&this.addHandles(l(()=>this.view.groundView.ready,()=>{this.removeHandles(Z),this._setInitialView(this.view.dataExtent)},{once:!0,initial:!0}),Z)}}exit(){this._cancelGoToOperation(),this.ready&&(this._override(`padding`,this.padding),this._set(`ready`,!1),this._clearOverride(`hasInitialView`),this._cameraSetByUser=!1,this.removeHandles(Z),this._constraintsManager=a(this._constraintsManager))}async goTo(e,t){return t={animate:this.view.state.animationsEnabled,...t},this._gotoOperation!=null&&this._gotoOperation.abort(t.animate),this._gotoOperation=new A(e,t,this.view),this.view.resourceController.scheduler.stopFrame(),this._gotoOperation.promise}debugSetCameraOnContent(){this.setStateCamera(E(this.view),{applyConstraints:!1})}step(e){let t=this.view.state?.cameraController;t?.stepController&&this.view.state.updateCamera(n=>t.stepController(e,n))}_cancelGoToOperation(){this._gotoOperation!=null&&(this._gotoOperation.abort(),this._gotoOperation=null)}_getInitialProperties(){let e=new Set,t=[];for(let{propertyName:n,overrides:r}of K){let i=e.has(n),a=this._isOverridden(n);!i&&a&&t.push({name:n,value:this._get(n)}),this._clearOverride(n),(i||a)&&r.forEach(t=>e.add(t))}return t}_setInitialView(e){if(e==null||this._cameraSetByUser)return;if(e instanceof t){this.setStateCamera(w(this.view,e),{applyConstraints:!1});return}if(e instanceof n){if(e.targetGeometry instanceof y){let t=F(this.view,e.targetGeometry,0,.5,0);t!=null&&this.setStateCamera(w(this.view,t),{applyConstraints:!0});return}let t={applyConstraints:!e.camera},n=this._viewpointToCamera(e);this.setStateCamera(n,t);return}let r=F(this.view,e,0,.5,0);r!=null&&this.setStateCamera(w(this.view,r),{applyConstraints:!0})}_updatePropertyBeforeReady(e,t){return!this.ready&&(this._override(e,t),t&&G.has(e)&&this._override(`hasInitialView`,!0),!0)}isCompatible(e){return e==null?!1:e instanceof n?e.camera?this.isCompatible(e.camera):this.isCompatible(e.targetGeometry):e instanceof t?this.isCompatible(e.position):e.spatialReference&&!te(e.spatialReference,this.view.spatialReference)}_getPreservingHeadingTilt(e=q){return this._cameraSetByUser?(e.heading=this.camera.heading,e.tilt=this.camera.tilt):(e.heading=0,e.tilt=.5),e}_centerPointAtDistanceToCamera(e,t,n=Y){let{heading:r,tilt:i}=this._getPreservingHeadingTilt(),a=I(this.view,r,i,e,t,1);return a==null?null:(n.copyFrom(this.view.state.camera),n.eye=a.eye,n.center=a.center,n.up=a.up,n)}_centerToCamera(e){let t;if(e.hasZ)t=this.view.state.camera.distance;else{let{centerOnContent:e}=this.view.pointsOfInterest;e.runTask(),t=e.distance}return this._centerPointAtDistanceToCamera(e,t)}_extentToCamera(e){let{heading:t,tilt:n}=this._getPreservingHeadingTilt(),r=F(this.view,e,t,n,1,J);return r?w(this.view,r):null}_scaleToCamera(e){if(e==null)return null;let t=this.view,n=t.pointsOfInterest.centerOnContent;n.runTask();let r=n.renderLocation,i=t.pointsOfInterest.cameraOnSurface.renderLocation,a=L(t,e,r,i);return this._centerPointAtDistanceToCamera(r,a)}_zoomToCamera(e){return this._scaleToCamera(R(this.view,e))}_viewpointToCamera(e){return w(this.view,ne(this.view,e))}setStateCamera(e,t){return e==null||!this.view.state.stopActiveCameraController()?!1:(this._cameraSetByUser=!0,t.doNotCancelGoToOperation||this._cancelGoToOperation(),this.view.state.updateCamera(n=>{t.positionAndOrientationOnly?(n.eye=e.eye,n.center=e.center,n.up=e.up,n.fov=e.fov):n.copyFrom(e),t.applyConstraints&&T(this.view,n),this.setCollisionSourceCamera(n)}),!0)}setCollisionSourceCamera(e){this._constraintsManager?.surfaceCollisionConstraint.setSourceCamera(e)}_prepareFrame(e){let{surface:t,canvas:n,stage:r}=this.view;if(!t||!n||!r||r.destroyed||r.destroying)return;this._windowDevicePixelRatio=window.devicePixelRatio;let i=this._tmpCanvasSize;if(this._computeCanvasSize(i),i.width!==0&&i.height!==0&&((n.width!==i.width||n.height!==i.height)&&(n.width=i.width,n.height=i.height),this.view.state)){let t=this.view.state.camera;(t.fullWidth!==i.width||t.fullHeight!==i.height||t.pixelRatio!==i.pixelRatio)&&(Y.copyFrom(t),Y.pixelRatio!==i.pixelRatio&&(this._paddingToArray(this.padding,i.pixelRatio,X),Y.padding=X),Y.fullWidth=i.width,Y.fullHeight=i.height,Y.pixelRatio=i.pixelRatio,Y.pixelScale=i.pixelScale,this.view.state.camera=Y),this._updateState(),this.view.state.occludedFragmentOpacity.forEach(t=>t?.update(this.view,this.view.state.mode,e))}}_updateElevation(e){e.relativeElevation=this.view.renderCoordsHelper.getAltitude(e.eye)-(this.view.groundView?.spatialReference?D(this.view,e.eye):0)}_updateState(){this.test.renderState==null?this.view.animation?this.view.state.mode=0:this.view.interacting?this.view.state.mode=1:(this.view.state.mode===0&&(this._cameraChangeTime=0),performance.now()-this._cameraChangeTime<this._idleTimeout?this.view.state.mode=1:this.view.state.mode=2):this.view.state.mode=this.test.renderState,this.view.state.rasterPixelRatio=this._rasterPixelRatio}_cameraChangedHandler(e,t){e&&t&&e.almostEquals(t)||(this._cameraChangeTime=performance.now(),this._updateState())}};e([p({type:t})],U.prototype,`camera`,null),e([p({type:t})],U.prototype,`contentCamera`,null),e([p({type:b})],U.prototype,`center`,null),e([p()],U.prototype,`visibleArea`,null),e([p({type:y})],U.prototype,`extent`,null),e([p({readOnly:!0})],U.prototype,`frustum`,null),e([p()],U.prototype,`_constraintsManager`,void 0),e([p({readOnly:!0})],U.prototype,`constraintsManager`,null),e([p()],U.prototype,`_initialViewpoint`,null),e([p({readOnly:!0})],U.prototype,`hasInitialView`,null),e([p({readOnly:!0,type:Boolean})],U.prototype,`ready`,void 0),e([p({type:Number})],U.prototype,`scale`,null),e([p()],U.prototype,`padding`,null),e([p({readOnly:!0})],U.prototype,`screenCenter`,null),e([p({constructOnly:!0})],U.prototype,`view`,void 0),e([p({type:n})],U.prototype,`viewpoint`,null),e([p({type:Number})],U.prototype,`zoom`,null),e([p({readOnly:!0})],U.prototype,`_rasterPixelRatio`,null),e([p({readOnly:!0})],U.prototype,`_useDevicePixelResolution`,null),e([p()],U.prototype,`_windowDevicePixelRatio`,void 0),e([p()],U.prototype,`_devicePixelRatioOverride`,void 0),U=e([ee(`esri.views.3d.state.ViewStateManager`)],U);class W{constructor(){this.width=0,this.height=0,this.pixelRatio=1,this.pixelScale=1}}const G=new Set([`camera`,`viewpoint`,`extent`,`scale`,`center`,`zoom`]),K=[{propertyName:`camera`,overrides:[`viewpoint`]},{propertyName:`viewpoint`,overrides:[`extent`]},{propertyName:`extent`,overrides:[`center`,`scale`]},{propertyName:`center`,overrides:[]},{propertyName:`scale`,overrides:[`zoom`]},{propertyName:`zoom`,overrides:[]},{propertyName:`padding`,overrides:[]}],q={heading:0,tilt:0};let J=new t,Y=new B;const X=v(),Z=`pending-initial-view`,Q=`content-camera-reset`,$=300,re=100;function ie(){J=new t,Y=new B}export{U as ViewStateManager,ie as cleanupViewStateManager,re as interactingTimeout};
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../../Camera.js";import n from"../../../Viewpoint.js";import r from"../../../core/Accessor.js";import i from"../../../core/Logger.js";import{destroyMaybe as a}from"../../../core/maybe.js";import{on as o,watch as s,sync as c,when as l}from"../../../core/reactiveUtils.js";import{addFrameTask as ee}from"../../../core/scheduling.js";import{createScreenPoint as u}from"../../../core/screenUtils.js";import{Milliseconds as d}from"../../../core/time.js";import{property as f,subclass as p}from"../../../core/accessorSupport/decorators.js";import{runUntracked as m}from"../../../core/accessorSupport/tracking.js";import{squaredDistance as h}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{fromArray as te}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{set as g}from"../../../core/libs/gl-matrix-2/math/vec4.js";import{create as _}from"../../../core/libs/gl-matrix-2/factories/vec4f64.js";import v from"../../../geometry/Extent.js";import y from"../../../geometry/Point.js";import ne from"../../../geometry/Polygon.js";import{isLoadedOrLoadFor as b,requiresLoad as x}from"../../../geometry/projectionUtils.js";import{fromRenderCamera as S,toRenderCamera as C}from"../webgl.js";import{applyAll as w}from"../camera/constraintUtils.js";import{eyeWithinExtent as T,cameraOnContentAlongViewDirection as E,surfaceElevationBelowRenderLocation as D}from"../camera/intersectionUtils.js";import{ConstraintsManager as O}from"./ConstraintsManager.js";import{Frustum as k}from"./Frustum.js";import{GoToOperation as A}from"./GoToOperation.js";import{toArea as j,toExtent as M,applyTiltAdjustToScale as N,scaleToZoom as P,fromExtentSync as F,getObserverForPointAtDistanceSync as I,viewScaleToCameraDistance as L,zoomToScale as R}from"../support/cameraUtils.js";import{fromCamera as z,toCameraSync as re}from"../support/viewpointUtils.js";import B from"../webgl/RenderCamera.js";import{PropertiesPool as V}from"../../support/PropertiesPool.js";import{ensureAttachmentMaxSize as H}from"../../webgl/FramebufferObject.js";let U=class extends r{constructor(e){super(e),this.ready=!1,this._windowDevicePixelRatio=1,this._devicePixelRatioOverride=null,this._idleTimeout=$,this.test={viewStateManager:this,contentCameraResetState:new Map,setDevicePixelRatio:e=>this._devicePixelRatioOverride=e,getDevicePixelRatioOverride:()=>this._devicePixelRatioOverride,renderState:null,get maximumPixelRatio(){return this.viewStateManager.view.qualitySettings.maximumPixelRatio},get updatingIgnoreRenderState(){return this.renderState!=null},get idleTimeoutEnabled(){return this.viewStateManager._idleTimeout>0},set idleTimeoutEnabled(e){this.viewStateManager._idleTimeout=e?$:0}},this._propertiesPool=new V({frustum:()=>new k(null)},this),this._cameraSetByUser=!1,this._gotoOperation=null,this._cameraChangeTime=0,this._tmpCanvasSize=new W}initialize(){this._cameraChangeTime=performance.now(),this.addHandles([o(()=>this.view.state.events,`before-camera-change`,({camera:e})=>e&&this._updateElevation(e)),s(()=>this.view.state?.camera,(e,t)=>this._cameraChangedHandler(e,t),c),o(()=>this.view.elevationProvider,`elevation-change`,e=>{if(e.context!==`ground`)return;let{state:t}=this.view;T(this.view,t.camera,e.extent,e.spatialReference)&&t.updateCamera(e=>this._updateElevation(e)),t.fixedContentCamera&&T(this.view,t.contentCamera,e.extent,e.spatialReference)&&t.updateContentCameraIfPresent()})]),l(()=>this.view.state?.camera,e=>this._updateElevation(e),{once:!0,sync:!0}),this.addHandles([ee({prepare:e=>this._prepareFrame(e.time)}),s(()=>this.view.state.cameraController,()=>{this._cameraSetByUser=!0,this.removeHandles(Z)}),o(()=>this.view.state.events,`camera-projection-changed`,()=>this.notifyChange(`scale`))])}destroy(){this.exit(),this._propertiesPool=a(this._propertiesPool)}get camera(){let e=this._get(`camera`);if(!this.ready)return e;let{view:t}=this,n=t.state.camera;return m(()=>{let r=S(t,n,J);return r&&e&&r.equals(e)?e:r.clone()})}set camera(e){if(this._updatePropertyBeforeReady(`camera`,e))return;this.view.elevationProvider.enableCache(!0);let t=C(this.view,e);t?this.setStateCamera(t,{applyConstraints:!1})||i.getLogger(this).warnOnce(`#camera=`,`There is a currently active camera controller that has priority.`):i.getLogger(this).error(`#camera=`,`Invalid camera`,e),this.view.elevationProvider.enableCache(!1)}get contentCamera(){let e=this._get(`contentCamera`);if(!this.ready)return e;let{view:t}=this,n=t.state.contentCamera;return m(()=>{let r=S(t,n,J);return r&&e&&r.equals(e)?e:r.clone()})}set contentCamera(e){if(this._updatePropertyBeforeReady(`contentCamera`,e))return;let t=C(this.view,e);t==null?this.view.state.contentCamera=null:this.view.state.contentCamera=t}installContentCameraReset(e){if(this.removeHandles(Q),this.test.contentCameraResetState.clear(),!this.view.state.fixedContentCamera)return!1;let t=this.zoom,n=this.view.state.camera.distance**2,r=te(this.view.state.camera.center),i=e.sticky?this.contentCamera.clone():null;return this.addHandles([s(()=>this.contentCamera,()=>{e.sticky||(this.removeHandles(Q),this.test.contentCameraResetState.clear())}),s(()=>this.zoom,e=>{e!==void 0&&t!==void 0&&(this.test.contentCameraResetState.set(`view.zoom`,Math.abs(e-t)/2),Math.abs(e-t)>2?this.contentCamera=null:this.view.state.fixedContentCamera||(this.contentCamera=i))}),s(()=>this.view.state.camera,e=>{let t=h(r,e.center);this.test.contentCameraResetState.set(`camera.center`,t/n),t>n?this.contentCamera=null:this.view.state.fixedContentCamera||(this.contentCamera=i)})],Q),!0}get center(){return this.ready?this.view.pointsOfInterest.centerOnContent.location:this._get(`center`)}set center(e){this._updatePropertyBeforeReady(`center`,e)||(e?this.isCompatible(e)?this.setStateCamera(this._centerToCamera(e),{applyConstraints:!0})?this.view.pointsOfInterest.centerOnContent.runTask():i.getLogger(this).error(`#center=`,`Invalid center`,e):i.getLogger(this).error(`#center=`,`Center has an incompatible spatial reference (center: `+(e.spatialReference?e.spatialReference.wkid:`none`)+`, view: `+this.view.spatialReference?.wkid+`)`,e):i.getLogger(this).error(`#center=`,`Center may not be null or undefined`))}get visibleArea(){if(!this.ready){let e=this._get(`extent`);return e?ne.fromExtent(e):null}return j(this.view,this.view.pointsOfInterest.focus.renderLocation)}get extent(){if(!this.ready)return this._get(`extent`);let e=this.view;return M(e,e.state.camera,e.pointsOfInterest.centerOnContent.renderLocation)??this._get(`extent`)}set extent(e){this._updatePropertyBeforeReady(`extent`,e)||(e?this.isCompatible(e)?this.setStateCamera(this._extentToCamera(e),{applyConstraints:!0})||i.getLogger(this).error(`#extent=`,`Invalid extent`,e):i.getLogger(this).error(`#extent=`,`Extent has an incompatible spatial reference (extent: `+(e.spatialReference?e.spatialReference.wkid:`none`)+`, view: `+this.view.spatialReference?.wkid+`)`,e):i.getLogger(this).error(`#extent=`,`Extent may not be null or undefined`))}get frustum(){let e=this._propertiesPool.get(`frustum`);return e.renderCoordsHelper=this.view.renderCoordsHelper,e.update(this.view.state.camera),e}get constraintsManager(){return this._constraintsManager}get _initialViewpoint(){let e=this.view.map;return e&&`initialViewProperties`in e?e.initialViewProperties?.viewpoint:void 0}get hasInitialView(){return!!this._initialViewpoint}get scale(){if(!this.ready)return this._get(`scale`);let e=this.view.basemapTerrain.tilingScheme,t=this.view.pointsOfInterest.cameraOnSurface.scale;return!e||!t?this._get(`scale`):N(this.view,t,this.view.state.contentCamera,e)}set scale(e){this._updatePropertyBeforeReady(`scale`,e)||this.setStateCamera(this._scaleToCamera(e),{applyConstraints:!0})||i.getLogger(this).error(`#scale=`,`Invalid scale`,e)}get padding(){if(!this.ready)return this._get(`padding`);let e=this.view.state.camera,t=e.padding,n=e.pixelRatio,r=this._get(`padding`),i=Math.round(t[0]/n),a=Math.round(t[1]/n),o=Math.round(t[2]/n),s=Math.round(t[3]/n);return r!=null&&r.top===i&&r.right===a&&r.bottom===o&&r.left===s?r:{top:i,right:a,bottom:o,left:s}}set padding(e){this._updatePropertyBeforeReady(`padding`,e)||(this._paddingToArray(e,this.view.state.camera.pixelRatio,X),this.view.state.updateCamera(e=>e.padding=X))}_paddingToArray(e,t,n){e?g(n,e.top||0,e.right||0,e.bottom||0,e.left||0):g(n,0,0,0,0);for(let e=0;e<4;e++)n[e]=Math.round(n[e]*t)}get screenCenter(){let e=this.padding;return u((this.view.width-(e.left+e.right))/2+e.left,(this.view.height-(e.top+e.bottom))/2+e.top)}get viewpoint(){return this.ready?z(this.view,this.camera):this._get(`viewpoint`)}set viewpoint(e){if(!this._updatePropertyBeforeReady(`viewpoint`,e)){if(!e)i.getLogger(this).error(`#viewpoint=`,`Viewpoint may not be null or undefined`);else if(this.isCompatible(e))this.setStateCamera(this._viewpointToCamera(e),{applyConstraints:!e.camera})||i.getLogger(this).error(`#viewpoint=`,`Invalid viewpoint`,e);else{let t=e.camera==null?e.targetGeometry:e.camera.position,n=t!=null&&t.spatialReference;i.getLogger(this).error(`#viewpoint=`,`Viewpoint has an incompatible spatial reference (viewpoint: `+(n?n.wkid:`none`)+`, view: `+this.view.spatialReference?.wkid+`)`,e)}}}get zoom(){return this.ready?P(this.view,this.scale):this._get(`zoom`)}set zoom(e){this._updatePropertyBeforeReady(`zoom`,e)||e===void 0||this.setStateCamera(this._zoomToCamera(e),{applyConstraints:!0})||i.getLogger(this).error(`#zoom=`,`Invalid zoom`,e)}_computeCanvasSize(e){if(this._devicePixelRatioOverride){this.view.state.contentPixelRatio=this._devicePixelRatioOverride,e.width=Math.round(this.view.surface.clientWidth*this._devicePixelRatioOverride),e.height=Math.round(this.view.surface.clientHeight*this._devicePixelRatioOverride),e.pixelRatio=this._devicePixelRatioOverride,e.pixelScale=1;return}let t=Math.min(this._windowDevicePixelRatio,this.view.qualitySettings.maximumPixelRatio),n=(this._useDevicePixelResolution()?this._windowDevicePixelRatio:t)*this.view.resolutionScale;e.width=Math.round(this.view.surface.clientWidth*n),e.height=Math.round(this.view.surface.clientHeight*n);let r=this.view.stage.renderView.renderingContext?.parameters.maxTextureSize;r&&H(e,r),e.pixelRatio=e.width>0?.5*(e.width/this.view.surface.clientWidth)+.5*(e.height/this.view.surface.clientHeight):n,e.pixelScale=this._windowDevicePixelRatio/e.pixelRatio,this.view.state&&(this.view.state.contentPixelRatio=Math.min(this._windowDevicePixelRatio,this.view.qualitySettings.maximumPixelRatio))}get _rasterPixelRatio(){return this._devicePixelRatioOverride==null?this._useDevicePixelResolution(2)?this._windowDevicePixelRatio:Math.min(this._windowDevicePixelRatio,this.view.qualitySettings.maximumPixelRatio):this._devicePixelRatioOverride}_useDevicePixelResolution(e){return this.view?.stage?.renderer.isFeatureEnabled(8,e)??!1}preinit(e){return!(this._isOverridden(`center`)&&!b(this.center.spatialReference,e)||this._isOverridden(`camera`)&&!b(this.camera.position.spatialReference,e)||this._isOverridden(`extent`)&&!b(this.extent.spatialReference,e)||this._isOverridden(`viewpoint`)&&(!b(this.viewpoint.targetGeometry?.spatialReference,e)||!b(this.viewpoint.camera?.position?.spatialReference,e)))}init(){this._constraintsManager=new O({view:this.view}),this._prepareFrame(d(0));let e=this._getInitialProperties();this._cameraSetByUser=!1,this._set(`ready`,!0);for(let t of e)this.set(t.name,t.value);if(!this._cameraSetByUser){let e=this._initialViewpoint||this.view.initialExtent;e&&this.isCompatible(e)?this._setInitialView(e):this.view.state.viewingMode===2&&this.addHandles(l(()=>this.view.groundView.ready,()=>{this.removeHandles(Z),this._setInitialView(this.view.dataExtent)},{once:!0,initial:!0}),Z)}}exit(){this._cancelGoToOperation(),this.ready&&(this._override(`padding`,this.padding),this._set(`ready`,!1),this._clearOverride(`hasInitialView`),this._cameraSetByUser=!1,this.removeHandles(Z),this._constraintsManager=a(this._constraintsManager))}async goTo(e,t){return t={animate:this.view.state.animationsEnabled,...t},this._gotoOperation!=null&&this._gotoOperation.abort(t.animate),this._gotoOperation=new A(e,t,this.view),this.view.resourceController.scheduler.stopFrame(),this._gotoOperation.promise}debugSetCameraOnContent(){this.setStateCamera(E(this.view),{applyConstraints:!1})}step(e){let t=this.view.state?.cameraController;t?.stepController&&this.view.state.updateCamera(n=>t.stepController(e,n))}_cancelGoToOperation(){this._gotoOperation!=null&&(this._gotoOperation.abort(),this._gotoOperation=null)}_getInitialProperties(){let e=new Set,t=[];for(let{propertyName:n,overrides:r}of K){let i=e.has(n),a=this._isOverridden(n);!i&&a&&t.push({name:n,value:this._get(n)}),this._clearOverride(n),(i||a)&&r.forEach(t=>e.add(t))}return t}_setInitialView(e){if(e==null||this._cameraSetByUser)return;if(e instanceof t){this.setStateCamera(C(this.view,e),{applyConstraints:!1});return}if(e instanceof n){if(e.targetGeometry instanceof v){let t=F(this.view,e.targetGeometry,0,.5,0);t!=null&&this.setStateCamera(C(this.view,t),{applyConstraints:!0});return}let t={applyConstraints:!e.camera},n=this._viewpointToCamera(e);this.setStateCamera(n,t);return}let r=F(this.view,e,0,.5,0);r!=null&&this.setStateCamera(C(this.view,r),{applyConstraints:!0})}_updatePropertyBeforeReady(e,t){return!this.ready&&(this._override(e,t),t&&G.has(e)&&this._override(`hasInitialView`,!0),!0)}isCompatible(e){return e==null?!1:e instanceof n?e.camera?this.isCompatible(e.camera):this.isCompatible(e.targetGeometry):e instanceof t?this.isCompatible(e.position):e.spatialReference&&!x(e.spatialReference,this.view.spatialReference)}_getPreservingHeadingTilt(e=q){return this._cameraSetByUser?(e.heading=this.camera.heading,e.tilt=this.camera.tilt):(e.heading=0,e.tilt=.5),e}_centerPointAtDistanceToCamera(e,t,n=Y){let{heading:r,tilt:i}=this._getPreservingHeadingTilt(),a=I(this.view,r,i,e,t,1);return a==null?null:(n.copyFrom(this.view.state.camera),n.eye=a.eye,n.center=a.center,n.up=a.up,n)}_centerToCamera(e){let t;if(e.hasZ)t=this.view.state.camera.distance;else{let{centerOnContent:e}=this.view.pointsOfInterest;e.runTask(),t=e.distance}return this._centerPointAtDistanceToCamera(e,t)}_extentToCamera(e){let{heading:t,tilt:n}=this._getPreservingHeadingTilt(),r=F(this.view,e,t,n,1,J);return r?C(this.view,r):null}_scaleToCamera(e){if(e==null)return null;let t=this.view,n=t.pointsOfInterest.centerOnContent;n.runTask();let r=n.renderLocation,i=t.pointsOfInterest.cameraOnSurface.renderLocation,a=L(t,e,r,i);return this._centerPointAtDistanceToCamera(r,a)}_zoomToCamera(e){return this._scaleToCamera(R(this.view,e))}_viewpointToCamera(e){return C(this.view,re(this.view,e))}setStateCamera(e,t){return e==null||!this.view.state.stopActiveCameraController()?!1:(this._cameraSetByUser=!0,t.doNotCancelGoToOperation||this._cancelGoToOperation(),this.view.state.updateCamera(n=>{t.positionAndOrientationOnly?(n.eye=e.eye,n.center=e.center,n.up=e.up,n.fov=e.fov):n.copyFrom(e),t.applyConstraints&&w(this.view,n),this.setCollisionSourceCamera(n)}),!0)}setCollisionSourceCamera(e){this._constraintsManager?.surfaceCollisionConstraint.setSourceCamera(e)}_prepareFrame(e){let{surface:t,canvas:n,stage:r}=this.view;if(!t||!n||!r||r.destroyed||r.destroying)return;this._windowDevicePixelRatio=window.devicePixelRatio;let i=this._tmpCanvasSize;if(this._computeCanvasSize(i),i.width!==0&&i.height!==0&&((n.width!==i.width||n.height!==i.height)&&(n.width=i.width,n.height=i.height),this.view.state)){let t=this.view.state.camera;(t.fullWidth!==i.width||t.fullHeight!==i.height||t.pixelRatio!==i.pixelRatio)&&(Y.copyFrom(t),Y.pixelRatio!==i.pixelRatio&&(this._paddingToArray(this.padding,i.pixelRatio,X),Y.padding=X),Y.fullWidth=i.width,Y.fullHeight=i.height,Y.pixelRatio=i.pixelRatio,Y.pixelScale=i.pixelScale,this.view.state.camera=Y),this._updateState(),this.view.state.occludedFragmentOpacity.forEach(t=>t?.update(this.view,this.view.state.mode,e))}}_updateElevation(e){e.relativeElevation=this.view.renderCoordsHelper.getAltitude(e.eye)-(this.view.groundView?.spatialReference?D(this.view,e.eye):0)}_updateState(){this.test.renderState==null?this.view.animation?this.view.state.mode=0:this.view.interacting?this.view.state.mode=1:(this.view.state.mode===0&&(this._cameraChangeTime=0),performance.now()-this._cameraChangeTime<this._idleTimeout?this.view.state.mode=1:this.view.state.mode=2):this.view.state.mode=this.test.renderState,this.view.state.rasterPixelRatio=this._rasterPixelRatio}_cameraChangedHandler(e,t){e&&t&&e.almostEquals(t)||(this._cameraChangeTime=performance.now(),this._updateState())}};e([f({type:t})],U.prototype,`camera`,null),e([f({type:t})],U.prototype,`contentCamera`,null),e([f({type:y})],U.prototype,`center`,null),e([f()],U.prototype,`visibleArea`,null),e([f({type:v})],U.prototype,`extent`,null),e([f({readOnly:!0})],U.prototype,`frustum`,null),e([f()],U.prototype,`_constraintsManager`,void 0),e([f({readOnly:!0})],U.prototype,`constraintsManager`,null),e([f()],U.prototype,`_initialViewpoint`,null),e([f({readOnly:!0})],U.prototype,`hasInitialView`,null),e([f({readOnly:!0,type:Boolean})],U.prototype,`ready`,void 0),e([f({type:Number})],U.prototype,`scale`,null),e([f()],U.prototype,`padding`,null),e([f({readOnly:!0})],U.prototype,`screenCenter`,null),e([f({constructOnly:!0})],U.prototype,`view`,void 0),e([f({type:n})],U.prototype,`viewpoint`,null),e([f({type:Number})],U.prototype,`zoom`,null),e([f({readOnly:!0})],U.prototype,`_rasterPixelRatio`,null),e([f({readOnly:!0})],U.prototype,`_useDevicePixelResolution`,null),e([f()],U.prototype,`_windowDevicePixelRatio`,void 0),e([f()],U.prototype,`_devicePixelRatioOverride`,void 0),U=e([p(`esri.views.3d.state.ViewStateManager`)],U);class W{constructor(){this.width=0,this.height=0,this.pixelRatio=1,this.pixelScale=1}}const G=new Set([`camera`,`viewpoint`,`extent`,`scale`,`center`,`zoom`]),K=[{propertyName:`camera`,overrides:[`viewpoint`]},{propertyName:`viewpoint`,overrides:[`extent`]},{propertyName:`extent`,overrides:[`center`,`scale`]},{propertyName:`center`,overrides:[]},{propertyName:`scale`,overrides:[`zoom`]},{propertyName:`zoom`,overrides:[]},{propertyName:`padding`,overrides:[]}],q={heading:0,tilt:0};let J=new t,Y=new B;const X=_(),Z=`pending-initial-view`,Q=`content-camera-reset`,$=300,ie=100;function ae(){J=new t,Y=new B}export{U as ViewStateManager,ae as cleanupViewStateManager,ie as interactingTimeout};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{set as
|
|
2
|
+
import{fromTranslation as e}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as t}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{set as n,dist as r}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{create as i}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{negate as a}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as o}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{ONES as s}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{getReferenceEllipsoid as c}from"../../../../geometry/ellipsoidUtils.js";import{lonLatToWebMercatorComparable as l}from"../../../../geometry/projection/projectors.js";import{fromBuffer as u,center as d,create as f}from"../../../../geometry/support/aaBoundingBox.js";import{newDoubleArray as p}from"../../../../geometry/support/DoubleArray.js";import{newFloatArray as m}from"../../../../geometry/support/FloatArray.js";import{newHalfFloatArray as h}from"../../../../geometry/support/HalfFloatArray.js";import{getZeroIndexArray as g}from"../../../../geometry/support/Indices.js";import{addOlidAttribute as _}from"../../layers/graphics/olidUtils.js";import{getPlanarDistanceToGroundRatio as v}from"../planarDistanceToGroundRatio.js";import{Attribute as y}from"../../webgl-engine/lib/Attribute.js";import{BufferGeometry as b}from"../../webgl-engine/lib/BufferGeometry.js";import{Buffers as x}from"../../webgl-engine/lib/Buffers.js";import{Geometry as S}from"../../webgl-engine/lib/Geometry.js";import{createVerticesView as C}from"../../webgl-engine/lib/VerticesView.js";import{isImagePattern as w}from"../../webgl-engine/materials/lineStippleUtils.js";import{ribbonLineVertexCount as T,writeRibbonLineTextureBuffer as E,writeRibbonLineVertices as D}from"../../webgl-engine/materials/internal/ribbonLineBufferUtils.js";import{getLayout as ee,getTextureBufferLayout as te}from"../../webgl-engine/shaders/RibbonLineLayouts.js";function O(e,t,n=null){let r=[],i=t.mapPositions,a=j(t,r),o=a.data,s=a.indices.length,c=g(s);return M(t,r,c),F(t,r,c),N(t,r,c),P(t,r,a.indices,c),I(t,r,a.indices,c),L(t,r),R(t,r,a.indices,c),z(e,t,r,o),n!=null&&_(r,n,c),new S(e,r,i)}function k(e,t){return u(e,X),d(X,Z),t.getOrigin(Z)}function A(t,n,r,i){let o=n.attributeData,s=C({data:o.position,size:3,stride:3},3),c=!!t.parameters.isClosed&&s.count>2,l=ee(t.parameters).createBuffer(T(s.count,c,t.parameters)),u=te(t.parameters).createBuffer(s.count+(c?3:2)),d=u.layout.fields.has(`u0`)?B(t.parameters,n.overlayInfo,o.position):null;return a(Q,r.vec3),e($,Q),E({...o,position:s,distancesToStart:d,olidColor:i},c,{buffer:u,offset:0},$),D(s.count,c,t.parameters,{buffer:l,offset:0},0),new b(t,new x(l,u),r,n.mapPositions)}function j(e,t){let{attributeData:{position:n},removeDuplicateStartEnd:r}=e,i=n.length/3,a=i>2&&V(n)&&r,o=i-+!!a,s=Array(2*(o-1)),c=a?n.slice(0,-3):n,l=0;for(let e=0;e<o-1;e++)s[l++]=e,s[l++]=e+1;let u=new y(c,s,3,a);return t.push([`position`,u]),u}function M(e,t,n){if(e.attributeData.colorFeature!=null)return;let r=e.attributeData.color;t.push([`color`,new y(r??s,n,4)])}function N(e,t,n){e.attributeData.normal&&t.push([`normal`,new y(e.attributeData.normal,n,3)])}function P(e,t,n,r){let i=e.attributeData.colorFeature;i!=null&&(typeof i==`number`?t.push([`colorFeatureAttribute`,new y([i],r,1,!0)]):t.push([`colorFeatureAttribute`,new y(i,n,1,!0)]))}function F(e,t,n){e.attributeData.sizeFeature??t.push([`size`,new y([e.attributeData.size??1],n,1,!0)])}function I(e,t,n,r){let i=e.attributeData.sizeFeature;i!=null&&(typeof i==`number`?t.push([`sizeFeatureAttribute`,new y([i],r,1,!0)]):t.push([`sizeFeatureAttribute`,new y(i,n,1,!0)]))}function L(e,t){let{attributeData:{position:n,timeStamps:r}}=e;if(!r)return;let i=n.length/3,a=Array(2*(i-1)),o=0;for(let e=0;e<i-1;e++)a[o++]=e,a[o++]=e+1;t.push([`timeStamps`,new y(r,a,G,!0)])}function R(e,t,n,r){let i=e.attributeData.opacityFeature;i!=null&&(typeof i==`number`?t.push([`opacityFeatureAttribute`,new y([i],r,1,!0)]):t.push([`opacityFeatureAttribute`,new y(i,n,1,!0)]))}function z(e,{overlayInfo:t},n,r){let i=B(e.parameters,t,r);i!=null&&n.push([`distanceToStart`,new y(i,n[0][1].indices,1,!0)])}function B(e,t,i){if(t==null||!H(e)||e.stipplePattern==null)return null;let{renderCoordsHelper:a,spatialReference:o}=t,s=o.isGeographic&&a.viewingMode===1,u=e.worldSized||w(e.stipplePattern);if(!u&&!s)return null;let d=i;if(s){let e=p(i.length),t=c(o);for(let n=0;n<e.length;n+=3)l(i,n,e,n,t);d=e}let f=i.length/3,h=m(f+1),g=a.viewingMode===1,_=U,y=W,b=0,x=0,S=0;n(_,d[x++],d[x++]),x++,h[0]=0;for(let e=1;e<f+1;++e){e===f&&(x=0);let t=x;n(y,d[x++],d[x++]),x++;let a=(i[S+1]+i[t+1])/2,s=u?v(o,g,a):1;b+=r(_,y)*s,h[e]=b,[_,y]=[y,_],S=t}return h}function V(e){let t=e.length;return e[0]===e[t-3]&&e[1]===e[t-2]&&e[2]===e[t-1]}function H(e){return`stipplePattern`in e}const U=i(),W=i(),G=4;function K(e,t,n,r,i){if(e==null||e.length===0)return[];let a=[];return e.forEach((e,o)=>{let s=e.length,c=p(s*3);e.forEach((e,t)=>{c[t*3]=e[0],c[t*3+1]=e[1],c[t*3+2]=e[2]});let l={attributeData:{position:c,normal:t,colorFeature:n?.[o],opacityFeature:r?.[o],sizeFeature:i?.[o]},removeDuplicateStartEnd:!1};a.push(l)}),a}function q(e,t,n,r,i,a){if(e==null||e.length===0)return[];let o=K(e,t,r,i,a);return e.forEach((e,t)=>{let r=n?.[t],i=r==null?void 0:Y(r.timeStamps,r.stage);o[t].attributeData.timeStamps=i}),o}function J(e,t=0,n=.01){let r=h(e.length);r[0]=0;for(let t=1;t<e.length;t++){let n=e[t-1],i=e[t],a=Math.sqrt((i[0]-n[0])**2+(i[1]-n[1])**2+(i[2]-n[2])**2);r[t]=r[t-1]+a}let i=r.map(e=>e*n);if(t!==0&&t<i.length){let e=i[t];for(let t=0;t<i.length;t++)i[t]-=e}return i}function Y(e,t){let n=h(e.length*4),r=e[0],i=e[e.length-1];for(let a=0;a<e.length;a++)n[a*4]=e[a],n[a*4+1]=r,n[a*4+2]=i,n[a*4+3]=t+.5;return n}const X=f(),Z=o(),Q=o(),$=t();export{q as animatedLineStripsToParameters,B as computeLineDistances,A as createBufferGeometry,O as createGeometry,J as getLinearTimeStamps,K as lineStripsToParameters,G as numTimeStampValuesPerVertex,k as selectLocalOrigin,Y as timeStampsToAttribute};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{createPrimitive as e}from"./sdfPrimitives.js";import{SizedPixelFormat as t,PixelType as n}from"../../../webgl/enums.js";import r
|
|
2
|
+
import{createPrimitive as e}from"./sdfPrimitives.js";import{SizedPixelFormat as t,PixelType as n}from"../../../webgl/enums.js";import{Texture as r}from"../../../webgl/Texture.js";import{TextureDescriptor as i}from"../../../webgl/TextureDescriptor.js";const a=64,o=32,s=32/5,c=64/s,l=.25;function u(a,o){let c=e(a,64,32,s),l=new i(64);return l.internalFormat=t.R16F,l.dataType=n.FLOAT,l.pixelFormat=6403,l.wrapMode=33071,new r(o,l,c)}export{u as createMarkerTexture,c as markerSizePerLineWidth,o as markerSymbolSize,a as markerTextureSize,s as markerThickness,l as markerTipThicknessFactor};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import"../../../../core/has.js";import{estimateNestedObjectMemory as e}from"../../../../core/memoryEstimations.js";import{Seconds as t}from"../../../../core/time.js";import{fadeOutTime as n}from"./constants.js";import{FlowQuery3D as r}from"./FlowQuery3D.js";class
|
|
2
|
+
import"../../../../core/has.js";import{estimateNestedObjectMemory as e}from"../../../../core/memoryEstimations.js";import{Seconds as t}from"../../../../core/time.js";import{fadeOutTime as n}from"./constants.js";import{FlowQuery3D as r}from"./FlowQuery3D.js";import{computeGeometryBufferMemory as i}from"../../webgl-engine/lib/geometryMemoryUtils.js";class a{constructor(e,n,r,i,a){this._query=e,this.streamlines=n,this._material=r,this.geometries=i,this._bytesPerFeature=a,this._endTime=t(1/0),this.usedMemory=null,this.computeMemory()}computeMemory(){let t=e(this.streamlines),n=i(this.geometries),r=this.streamlines.length*this._bytesPerFeature;this.usedMemory=t+n+r}get startTime(){return this._query.time}set startTime(e){this._query.time!==e&&(this._query=new r(this._query.extent,this._query.timeExtent,this._query.size,this._query.pixelRatio,t(e))),this.setMaterialParameters({startTime:e})}get endTime(){return this._endTime}set endTime(e){this._endTime!==e&&(this._endTime=e,this.setMaterialParameters({endTime:e}))}get query(){return this._query}hasFadedOut(e){return this.endTime+n<e}setMaterialParameters(e){this._material.setParameters(e)}get test(){return null}}export{a as StreamlineResources3D};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{removeMaybe as e,destroyMaybe as t}from"../../../../core/maybe.js";import{memoryEstimators as n}from"../../layers/graphics/defaultSymbolComplexity.js";import{streamlinGeometryBatchSize as r}from"./constants.js";import{StreamlineResources3D as i}from"./StreamlineResources3D.js";import{
|
|
2
|
+
import{removeMaybe as e,destroyMaybe as t}from"../../../../core/maybe.js";import{memoryEstimators as n}from"../../layers/graphics/defaultSymbolComplexity.js";import{streamlinGeometryBatchSize as r}from"./constants.js";import{StreamlineResources3D as i}from"./StreamlineResources3D.js";import{TaskPriority as a}from"../../../support/Scheduler.js";class o extends i{constructor(e,t,r,i,a){let o=n.LINE_ROUND.draped.bytesPerFeature;super(e,t,r,i,o),this._layerView=a,this._drapeRenderer=null,this.drapeSourceType=2,this.updatePolicy=0,this.renderGroup=0,this._frameTask=null}get _view(){return this._layerView.view}get layer(){return this._layerView.layer}get fullOpacity(){return this._layerView.fullOpacity}get attached(){return this._drapeRenderer!=null}get destroyed(){return this.attached}async attach(){let{geometries:e}=this;e!=null&&(this.detach(),this._frameTask=this._view.resourceController.scheduler.registerTask(a.FLOW_GENERATOR),await this._frameTask.scheduleGenerator(t=>this._addGeometryToOverlay(e,t)))}async*_addGeometryToOverlay(e,t){this._drapeRenderer=this._view.overlayManager.registerGeometryDrapeSource(this);for(let n=0;n<e.length;n+=r)this._drapeRenderer.addGeometries(e.slice(n,n+r),0),this._drapeRenderer.commitChanges(),t.madeProgress(),t.done&&(t=yield)}detach(){this._frameTask=e(this._frameTask),this._drapeRenderer&&(this._drapeRenderer.removeGeometries(this.geometries,2),this._drapeRenderer.commitChanges()),this.attached&&this._view.overlayManager.unregisterDrapeSource(this),this._drapeRenderer=t(this._drapeRenderer)}}export{o as StreamlineResources3DOverlay};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{removeMaybe as e}from"../../../../core/maybe.js";import{memoryEstimators as t}from"../../layers/graphics/defaultSymbolComplexity.js";import{streamlinGeometryBatchSize as n}from"./constants.js";import{StreamlineResources3D as r}from"./StreamlineResources3D.js";import{
|
|
2
|
+
import{removeMaybe as e}from"../../../../core/maybe.js";import{memoryEstimators as t}from"../../layers/graphics/defaultSymbolComplexity.js";import{streamlinGeometryBatchSize as n}from"./constants.js";import{StreamlineResources3D as r}from"./StreamlineResources3D.js";import{BufferObject3D as i}from"../../webgl-engine/lib/BufferObject3D.js";import{WebGLLayer as a}from"../../webgl-engine/lib/WebGLLayer.js";import{TaskPriority as o}from"../../../support/Scheduler.js";class s extends r{constructor(e,n,r,i,a){let o=t.LINE_ROUND.bytesPerFeature;super(e,n,r,i,o),this._view=a,this._objects3D=[],this._engineLayer=null,this._frameTask=null}get attached(){return this._engineLayer!=null}async attach(){let{geometries:e}=this;e!=null&&(this.detach(),this._frameTask=this._view.resourceController.scheduler.registerTask(o.FLOW_GENERATOR),await this._frameTask.scheduleGenerator(t=>this._addGeometryToLayer(e,t)))}detach(){this.attached&&(this._engineLayer?.removeMany(this._objects3D),this._objects3D.forEach(e=>e.dispose()),this._engineLayer?.commit(),this._objects3D=[],this._engineLayer=null,this._frameTask=e(this._frameTask))}async*_addGeometryToLayer(e,t){let{stage:r}=this._view,o=new a(r,{pickable:!1,updatePolicy:1});for(let r=0;r<e.length;r+=n){let a=new i({geometries:e.slice(r,r+n),castShadow:!1});o.add(a),this._objects3D.push(a),o.commit(),t.madeProgress(),t.done&&(t=yield)}this._engineLayer=o}}export{s as StreamlineResources3DShape};
|