@arcgis/core 4.28.0-next.20230719 → 4.28.0-next.20230721

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.
Files changed (334) hide show
  1. package/Color.js +1 -1
  2. package/analysis/AreaMeasurementAnalysis.js +1 -1
  3. package/arcade/arcadeCompiler.js +1 -1
  4. package/arcade/featureSetUtils.js +1 -1
  5. package/arcade/featureset/actions/Top.js +1 -1
  6. package/arcade/featureset/sources/FeatureLayerDynamic.js +1 -1
  7. package/arcade/featureset/support/FeatureSet.js +1 -1
  8. package/arcade/featureset/support/FeatureSetIterator.js +1 -1
  9. package/arcade/functions/convertdirection.js +1 -1
  10. package/arcade/functions/featuresetbase.js +1 -1
  11. package/arcade/functions/geomasync.js +1 -1
  12. package/arcade/functions/geomsync.js +1 -1
  13. package/arcade/lib/comment-handler.js +1 -1
  14. package/arcade/lib/parser.js +1 -1
  15. package/arcade/lib/scanner.js +1 -1
  16. package/assets/esri/core/workers/RemoteClient.js +1 -1
  17. package/assets/esri/core/workers/chunks/{75c28da8d0b02d612d69.js → 040b3fc9c9c0736dd893.js} +1 -1
  18. package/assets/esri/core/workers/chunks/0652f6a8d5221e978033.js +1 -0
  19. package/assets/esri/core/workers/chunks/{e579ca7d4c1387e17305.js → 092fda62b6f62c2e4869.js} +2 -2
  20. package/assets/esri/core/workers/chunks/{57e0ad037188bd2997e7.js → 0af18a96cbd4e2d35436.js} +1 -1
  21. package/assets/esri/core/workers/chunks/0b5eeec0f66c87a46a0c.js +1 -0
  22. package/assets/esri/core/workers/chunks/{68e568b67b6fb34393db.js → 0cad2b991d0d0fd07846.js} +1 -1
  23. package/assets/esri/core/workers/chunks/0dccbc6c2559fdc0c2ad.js +1 -0
  24. package/assets/esri/core/workers/chunks/256a82f6f6e1405fbcc6.js +1 -0
  25. package/assets/esri/core/workers/chunks/{bb9213899049e1db90da.js → 2c57c9bd71637c5bed8a.js} +1 -1
  26. package/assets/esri/core/workers/chunks/2cdbabcbfe32286ec78d.js +1 -0
  27. package/assets/esri/core/workers/chunks/{2b1c83453a862e01954b.js → 2d9d80b2d0042a9c09fb.js} +1 -1
  28. package/assets/esri/core/workers/chunks/2f9aec2238ff6cb99e09.js +1 -0
  29. package/assets/esri/core/workers/chunks/{55705b1bbac91d7db0e7.js → 32d940b2c891bf6ff9a2.js} +1 -1
  30. package/assets/esri/core/workers/chunks/3a0349c79551a03c2d8e.js +1 -0
  31. package/assets/esri/core/workers/chunks/{7dbd3e6406fb3e3a1a8f.js → 3cf748c025f3936c1cb2.js} +1 -1
  32. package/assets/esri/core/workers/chunks/4481d1103363434f16da.js +1 -0
  33. package/assets/esri/core/workers/chunks/58e11ca7c6e27e0ece7e.js +1 -0
  34. package/assets/esri/core/workers/chunks/5ae325e6a795c72eac6c.js +1 -0
  35. package/assets/esri/core/workers/chunks/5e4dde2886a1027b4b96.js +1 -0
  36. package/assets/esri/core/workers/chunks/{357e0381b6d767585576.js → 675e16d99758e67e5f51.js} +1 -1
  37. package/assets/esri/core/workers/chunks/726bb661b9e6998572e7.js +1 -0
  38. package/assets/esri/core/workers/chunks/730eb7e5f617fdab4f10.js +1 -0
  39. package/assets/esri/core/workers/chunks/{5a2e6bed9431cf4f42b1.js → 740dc67038f554431f1b.js} +1 -1
  40. package/assets/esri/core/workers/chunks/7cab61c9e09580520990.js +1 -0
  41. package/assets/esri/core/workers/chunks/{09178454bda15bb7929a.js → 7fbdfd1527582c52f9b6.js} +1 -1
  42. package/assets/esri/core/workers/chunks/{26546aa98a338051df66.js → 807742f38885fa90b4fe.js} +1 -1
  43. package/assets/esri/core/workers/chunks/82dfbc175b52c7a10475.js +1 -0
  44. package/assets/esri/core/workers/chunks/870a05451e074b58f19a.js +1 -0
  45. package/assets/esri/core/workers/chunks/88038ad401e5ec02f4d3.js +1 -0
  46. package/assets/esri/core/workers/chunks/88d63d1e56732d148f67.js +1 -0
  47. package/assets/esri/core/workers/chunks/8b72cd9340e8a44358ac.js +1 -0
  48. package/assets/esri/core/workers/chunks/8c5a8c1dfb086069bb06.js +1 -0
  49. package/assets/esri/core/workers/chunks/99a5a434e0bad48c7a5c.js +1 -0
  50. package/assets/esri/core/workers/chunks/9a5916c66dad91d01d5b.js +1 -0
  51. package/assets/esri/core/workers/chunks/9c133fd8c1fbd0295b86.js +1 -0
  52. package/assets/esri/core/workers/chunks/9cddb504079d396779ea.js +1 -0
  53. package/assets/esri/core/workers/chunks/a3a1d4f32e518e97d071.js +1 -0
  54. package/assets/esri/core/workers/chunks/{9548aa449fe3a300c015.js → a4fa40dc77e116c954ac.js} +1 -1
  55. package/assets/esri/core/workers/chunks/a54ec9929a7db879d5db.js +1 -0
  56. package/assets/esri/core/workers/chunks/afc5b84693757fda2bc8.js +1 -0
  57. package/assets/esri/core/workers/chunks/{591b5c277cfd3a4101a4.js → b08f2a4aa94087c6c367.js} +1 -1
  58. package/assets/esri/core/workers/chunks/c0e12f6a7bb2360e4c21.js +1 -0
  59. package/assets/esri/core/workers/chunks/c8e656cd470a17f538e9.js +1 -0
  60. package/assets/esri/core/workers/chunks/d0e203405f95e14b1399.js +1 -0
  61. package/assets/esri/core/workers/chunks/d61506497275bafba384.js +1 -0
  62. package/assets/esri/core/workers/chunks/{ec72f492f24e67e008ae.js → d8e58dc14d3495f0830c.js} +1 -1
  63. package/assets/esri/core/workers/chunks/db9a303ee0468d018def.js +1 -0
  64. package/assets/esri/core/workers/chunks/ddc393a012588f799f42.js +1 -0
  65. package/assets/esri/core/workers/chunks/de3baa85b1639c25458d.js +1 -0
  66. package/assets/esri/core/workers/chunks/e66cea26064ba8353af0.js +1 -0
  67. package/assets/esri/core/workers/chunks/ea478f2f4a19463e13fd.js +1 -0
  68. package/assets/esri/core/workers/chunks/eba197e45507f56f3ed0.js +1 -0
  69. package/assets/esri/core/workers/chunks/ebd006fcd568a7731115.js +1 -0
  70. package/assets/esri/core/workers/chunks/ef9a9a7d66d818720e20.js +1 -0
  71. package/assets/esri/core/workers/chunks/f3b458f55236566c940b.js +1 -0
  72. package/assets/esri/core/workers/chunks/fd0a91b9e0216cc269c3.js +1 -0
  73. package/assets/esri/core/workers/chunks/{a4fe220a912b1f428e49.js → fdd6403a8390d629392b.js} +1 -1
  74. package/assets/esri/themes/base/widgets/_Directions.scss +13 -7
  75. package/assets/esri/themes/base/widgets/_OrientedImageryViewer.scss +108 -4
  76. package/assets/esri/themes/dark/main.css +1 -1
  77. package/assets/esri/themes/light/main.css +1 -1
  78. package/assets/esri/themes/light/view.css +1 -1
  79. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer.json +1 -1
  80. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_en.json +1 -1
  81. package/chunks/ComponentShader.glsl.js +1 -1
  82. package/chunks/LineSeries.js +1 -1
  83. package/chunks/Theme.js +1 -1
  84. package/chunks/array.js +1 -1
  85. package/chunks/chartUtilsAm5.js +1 -1
  86. package/core/Collection.js +1 -1
  87. package/core/accessorSupport/decorators/subclass.js +1 -1
  88. package/core/accessorSupport/ensureType.js +1 -1
  89. package/core/accessorSupport/get.js +1 -1
  90. package/core/accessorSupport/tracking.js +1 -1
  91. package/core/accessorSupport/utils.js +1 -1
  92. package/core/libs/rbush/PooledRBush.js +1 -1
  93. package/core/urlUtils.js +1 -1
  94. package/geometry/GeometryCursor.js +1 -1
  95. package/geometry/support/TileClipper.js +1 -1
  96. package/geometry/support/geodesicUtils.js +1 -1
  97. package/interfaces.d.ts +9 -3
  98. package/layers/BuildingSceneLayer.js +1 -1
  99. package/layers/IntegratedMeshLayer.js +1 -1
  100. package/layers/LinkChartLayer.js +1 -1
  101. package/layers/PointCloudLayer.js +1 -1
  102. package/layers/SceneLayer.js +1 -1
  103. package/layers/VectorTileLayer.js +1 -1
  104. package/layers/VoxelLayer.js +1 -1
  105. package/layers/VoxelWasmPerSceneView.js +1 -1
  106. package/layers/WCSLayer.js +1 -1
  107. package/layers/effects/EffectView.js +1 -1
  108. package/layers/graphics/sources/geojson/geojson.js +1 -1
  109. package/layers/knowledgeGraph/KnowledgeGraphLayerDataManager.js +1 -1
  110. package/layers/mixins/ArcGISCachedService.js +1 -1
  111. package/layers/orientedImagery/core/ExposurePoint.js +1 -1
  112. package/layers/orientedImagery/core/bestImageUtils.js +1 -1
  113. package/layers/orientedImagery/queries.js +1 -1
  114. package/layers/save/featureLayerUtils.js +1 -1
  115. package/layers/support/ElevationQuery.js +1 -1
  116. package/layers/support/MultidimensionalSubset.js +1 -1
  117. package/layers/support/Sublayer.js +1 -1
  118. package/layers/support/TileInfo.js +1 -1
  119. package/layers/support/TileInfoTilemapCache.js +1 -1
  120. package/layers/support/TilemapCache.js +1 -1
  121. package/layers/support/rasterDatasets/multidimensionalUtils.js +1 -1
  122. package/layers/support/rasterDatasets/pamParser.js +1 -1
  123. package/layers/support/rasterDatasets/wcsCoverageParser.js +1 -1
  124. package/layers/support/rasterFormats/Raw.js +1 -1
  125. package/layers/support/rasterFormats/TiffDecoder.js +1 -1
  126. package/layers/support/rasterFunctions/ExtractBandFunction.js +1 -1
  127. package/layers/support/rasterFunctions/colormaps.js +1 -1
  128. package/layers/support/rasterFunctions/pixelUtils.js +1 -1
  129. package/layers/support/rasterFunctions/rasterProjectionHelper.js +1 -1
  130. package/layers/video/VideoController.js +1 -1
  131. package/layers/voxel/VoxelDimension.js +1 -1
  132. package/layers/voxel/VoxelTransferFunctionStyle.js +1 -1
  133. package/layers/voxel/VoxelVolume.js +1 -1
  134. package/package.json +1 -1
  135. package/renderers/support/RasterSymbolizer.js +1 -1
  136. package/renderers/support/colorRampUtils.js +1 -1
  137. package/renderers/visualVariables/support/visualVariableUtils.js +1 -1
  138. package/rest/query/operations/pbfDehydratedFeatureSet.js +1 -1
  139. package/rest/query/operations/pbfJSONFeatureSet.js +1 -1
  140. package/rest/support/generateRendererUtils.js +1 -1
  141. package/smartMapping/raster/renderers/classBreaks.js +1 -1
  142. package/smartMapping/renderers/color.js +1 -1
  143. package/smartMapping/renderers/support/utils.js +1 -1
  144. package/smartMapping/renderers/type.js +1 -1
  145. package/smartMapping/renderers/univariateColorSize.js +1 -1
  146. package/smartMapping/support/adapters/support/utils.js +1 -1
  147. package/statistics/utils.js +1 -1
  148. package/support/elevationInfoUtils.js +1 -1
  149. package/support/revision.js +1 -1
  150. package/symbols/cim/CIMSymbolDrawHelper.js +1 -1
  151. package/symbols/cim/GeometryWalker.js +1 -1
  152. package/symbols/cim/cimAnalyzer.js +1 -1
  153. package/symbols/cim/effects/EffectArrow.js +1 -1
  154. package/symbols/cim/effects/EffectControlMeasureLine.js +1 -1
  155. package/symbols/support/symbolUtils.js +1 -1
  156. package/views/2d/constraints/ZoomConstraint.js +1 -1
  157. package/views/2d/engine/flow/dataUtils.js +1 -1
  158. package/views/2d/engine/flow/utils.js +1 -1
  159. package/views/2d/engine/vectorTiles/VectorTile.js +1 -1
  160. package/views/2d/engine/vectorTiles/VectorTileContainer.js +1 -1
  161. package/views/2d/engine/vectorTiles/expression/expression.js +1 -1
  162. package/views/2d/engine/vectorTiles/style/VectorTileSource.js +1 -1
  163. package/views/2d/engine/vectorTiles/tileInfoUtils.js +1 -1
  164. package/views/2d/engine/webgl/TurboLine.js +1 -1
  165. package/views/2d/engine/webgl/mesh/MeshData.js +1 -1
  166. package/views/2d/engine/webgl/mesh/templates/shapingUtils.js +1 -1
  167. package/views/2d/interactive/editingTools/ControlPointsTransformTool.js +1 -1
  168. package/views/2d/interactive/editingTools/draw/DrawGraphicTool2D.js +1 -1
  169. package/views/2d/layers/BaseLayerView2D.js +1 -1
  170. package/views/2d/layers/BaseLayerViewGL2D.js +1 -1
  171. package/views/2d/layers/BitmapTileLayerView2D.js +1 -1
  172. package/views/2d/layers/MediaLayerView2D.js +1 -1
  173. package/views/2d/layers/TileLayerView2D.js +1 -1
  174. package/views/2d/layers/VectorTileLayerView2D.js +1 -1
  175. package/views/2d/layers/WMTSLayerView2D.js +1 -1
  176. package/views/2d/layers/features/support/rendererUtils.js +1 -1
  177. package/views/2d/layers/imagery/BaseImageryTileSubView2D.js +1 -1
  178. package/views/2d/layers/support/vectorTileDebugUtils.js +5 -0
  179. package/views/2d/tiling/TileInfoView.js +1 -1
  180. package/views/2d/tiling/TileInfoViewPOT.js +1 -1
  181. package/views/2d/tiling/TileQueue.js +1 -1
  182. package/views/2d/tiling.js +1 -1
  183. package/views/3d/analysis/Slice/sliceToolUtils.js +1 -1
  184. package/views/3d/environment/ChapmanAtmosphere.js +1 -1
  185. package/views/3d/environment/EnvironmentRenderer.js +1 -1
  186. package/views/3d/externalRenderers/ExternalRendererStore.js +1 -1
  187. package/views/3d/interactive/editingTools/moveGraphic/GraphicMoveTool.js +1 -1
  188. package/views/3d/interactive/visualElements/LaserlineVisualElement.js +1 -1
  189. package/views/3d/layers/ImageryTileLayerView3D.js +1 -1
  190. package/views/3d/layers/TiledLayerView3D.js +1 -1
  191. package/views/3d/layers/VectorTileLayerView3D.js +1 -1
  192. package/views/3d/layers/graphics/Deconflictor.js +1 -1
  193. package/views/3d/layers/graphics/Labeler.js +1 -1
  194. package/views/3d/layers/i3s/PointRenderer.js +1 -1
  195. package/views/3d/layers/support/FeatureTileFetcher3D.js +1 -1
  196. package/views/3d/layers/support/featureReference.js +1 -1
  197. package/views/3d/support/LaserLineRenderer.js +1 -1
  198. package/views/3d/terrain/Overlay.js +1 -1
  199. package/views/3d/terrain/OverlayFramebufferObject.js +1 -1
  200. package/views/3d/terrain/OverlayManager.js +1 -1
  201. package/views/3d/terrain/OverlayRenderTarget.js +1 -1
  202. package/views/3d/terrain/OverlayRenderer.js +1 -1
  203. package/views/3d/terrain/TerrainRenderer.js +1 -1
  204. package/views/3d/terrain/TerrainSurface.js +1 -1
  205. package/views/3d/terrain/TileCompositor.js +1 -1
  206. package/views/3d/terrain/TileRenderer.js +1 -1
  207. package/views/3d/terrain/TilingScheme.js +1 -1
  208. package/views/3d/webgl-engine/collections/Component/ComponentData.js +1 -1
  209. package/views/3d/webgl-engine/core/renderPasses/RenderPassManager.js +1 -1
  210. package/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js +1 -1
  211. package/views/3d/webgl-engine/core/shaderModules/interfaces.js +1 -1
  212. package/views/3d/webgl-engine/effects/RenderPlugin.js +5 -0
  213. package/views/3d/webgl-engine/effects/RenderPluginManager.js +5 -0
  214. package/views/3d/webgl-engine/effects/ScreenSpaceGeometry.js +5 -0
  215. package/views/3d/webgl-engine/effects/SmaaRenderPass.js +5 -0
  216. package/views/3d/webgl-engine/lib/CompositingHelper.js +1 -1
  217. package/views/3d/webgl-engine/lib/GLMaterials.js +1 -1
  218. package/views/3d/webgl-engine/lib/GeometryUtil.js +1 -1
  219. package/views/3d/webgl-engine/lib/OffscreenRendering.js +1 -1
  220. package/views/3d/webgl-engine/lib/PathBuilder.js +1 -1
  221. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  222. package/views/3d/webgl-engine/lib/RenderingContext.js +1 -1
  223. package/views/3d/webgl-engine/lib/SSAOHelper.js +1 -1
  224. package/views/3d/webgl-engine/lib/SortedRenderGeometryRenderer.js +1 -1
  225. package/views/3d/webgl-engine/lib/WebGLLayer.js +1 -1
  226. package/views/3d/webgl-engine/lib/lodRendering/LodComponentData.js +1 -1
  227. package/views/3d/webgl-engine/lib/lodRendering/LodRenderer.js +1 -1
  228. package/views/3d/webgl-engine/materials/renderers/MergedRenderer.js +1 -1
  229. package/views/3d/webgl-engine/parts/RenderView.js +1 -1
  230. package/views/3d/webgl-engine/parts/requireUtils.js +1 -1
  231. package/views/3d/webgl-engine/statistics/RendererPerformanceInfo.js +1 -1
  232. package/views/LayerViewManager.js +1 -1
  233. package/views/MapView.js +1 -1
  234. package/views/SceneView.js +1 -1
  235. package/views/animation/pointToPoint/Path.js +1 -1
  236. package/views/draw/DrawOperation.js +1 -1
  237. package/views/draw/support/Reshape.js +1 -1
  238. package/views/draw/support/createUtils.js +1 -1
  239. package/views/interactive/SegmentLabels.js +1 -1
  240. package/views/interactive/editGeometry/EditGeometry.js +1 -1
  241. package/views/interactive/editGeometry/EditGeometryOperations.js +1 -1
  242. package/views/interactive/editGeometry/operations/UndoGroup.js +1 -1
  243. package/views/layers/GroupLayerView.js +1 -1
  244. package/views/layers/ImageryTileLayerView.js +1 -1
  245. package/views/webgl/ProgramCache.js +1 -1
  246. package/webscene/spec-certification/api.js +1 -1
  247. package/webscene/spec-certification/spec.js +1 -1
  248. package/webscene/spec-certification/utils.js +1 -1
  249. package/widgets/BuildingExplorer/BuildingNumericFilterViewModel.js +1 -1
  250. package/widgets/BuildingExplorer/BuildingPhase.js +1 -1
  251. package/widgets/BuildingExplorer/support/validation.js +1 -1
  252. package/widgets/Directions/support/resources.js +1 -1
  253. package/widgets/Directions.js +1 -1
  254. package/widgets/Editor/EditorViewModel.js +1 -1
  255. package/widgets/Editor/UpdateRecordWorkflow.js +1 -1
  256. package/widgets/Editor/Workflow.js +1 -1
  257. package/widgets/Editor.js +1 -1
  258. package/widgets/FeatureForm/FeatureFormViewModel.js +1 -1
  259. package/widgets/FeatureForm/FieldInput.js +1 -1
  260. package/widgets/FeatureForm/FormExpressionsManager.js +1 -1
  261. package/widgets/FeatureForm.js +1 -1
  262. package/widgets/FeatureTemplates/FeatureTemplatesViewModel.js +1 -1
  263. package/widgets/FeatureTemplates.js +1 -1
  264. package/widgets/Features.js +1 -1
  265. package/widgets/Histogram/HistogramViewModel.js +1 -1
  266. package/widgets/HistogramRangeSlider/HistogramRangeSliderViewModel.js +1 -1
  267. package/widgets/Legend/styles/Card.js +1 -1
  268. package/widgets/Legend/styles/support/univariateUtils.js +1 -1
  269. package/widgets/Legend/support/ActiveLayerInfo.js +1 -1
  270. package/widgets/Legend/support/colorRampUtils.js +1 -1
  271. package/widgets/Legend/support/sizeRampUtils.js +1 -1
  272. package/widgets/Legend/support/utils.js +1 -1
  273. package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
  274. package/widgets/OrientedImageryViewer/arcUtils.js +5 -0
  275. package/widgets/OrientedImageryViewer/constants.js +5 -0
  276. package/widgets/OrientedImageryViewer/utils.js +5 -0
  277. package/widgets/OrientedImageryViewer.js +1 -1
  278. package/widgets/Popup/PopupViewModel.js +1 -1
  279. package/widgets/Popup.js +1 -1
  280. package/widgets/ScaleRangeSlider/ScaleRangeSliderViewModel.js +1 -1
  281. package/widgets/ScaleRangeSlider/ScaleRanges.js +1 -1
  282. package/widgets/ValuePicker/ValuePickerSlider.js +1 -1
  283. package/widgets/smartMapping/ClassedSizeSlider.js +1 -1
  284. package/widgets/smartMapping/ColorSizeSlider.js +1 -1
  285. package/widgets/smartMapping/HeatmapSlider/HeatmapSliderViewModel.js +1 -1
  286. package/widgets/smartMapping/SizeSlider.js +1 -1
  287. package/widgets/smartMapping/SmartMappingPrimaryHandleSliderViewModel.js +1 -1
  288. package/widgets/smartMapping/SmartMappingSliderViewModel.js +1 -1
  289. package/widgets/support/ColorPicker.js +1 -1
  290. package/assets/esri/core/workers/chunks/07bb40162d97d098bc19.js +0 -1
  291. package/assets/esri/core/workers/chunks/0a18317566c1fcb68422.js +0 -1
  292. package/assets/esri/core/workers/chunks/0de65e03db8c611af9fb.js +0 -1
  293. package/assets/esri/core/workers/chunks/1a60d23a92bcf91dbb22.js +0 -1
  294. package/assets/esri/core/workers/chunks/205a0b34b698d5329854.js +0 -1
  295. package/assets/esri/core/workers/chunks/2158a6ec165503ec4711.js +0 -1
  296. package/assets/esri/core/workers/chunks/25211d5904ee9d5f4a9d.js +0 -1
  297. package/assets/esri/core/workers/chunks/26b12d1ea713c1e07701.js +0 -1
  298. package/assets/esri/core/workers/chunks/2bfa7ee324c32a56b0d3.js +0 -1
  299. package/assets/esri/core/workers/chunks/370a992bd308bd806f48.js +0 -1
  300. package/assets/esri/core/workers/chunks/3892650ecc61322f6f7f.js +0 -1
  301. package/assets/esri/core/workers/chunks/38d168e9a29c40de179d.js +0 -1
  302. package/assets/esri/core/workers/chunks/4bf1c6c7e0a3051dc797.js +0 -1
  303. package/assets/esri/core/workers/chunks/524156c3f5383c2dd0e3.js +0 -1
  304. package/assets/esri/core/workers/chunks/59666ecb7c2c1f5a13b2.js +0 -1
  305. package/assets/esri/core/workers/chunks/5ae98195bdfd7dc0c44e.js +0 -1
  306. package/assets/esri/core/workers/chunks/5c005c9514354c77ec27.js +0 -1
  307. package/assets/esri/core/workers/chunks/5d46fd68878c973bcfab.js +0 -1
  308. package/assets/esri/core/workers/chunks/5dd23092c8a8a5ccd5d0.js +0 -1
  309. package/assets/esri/core/workers/chunks/620ec5c75561183d3d73.js +0 -1
  310. package/assets/esri/core/workers/chunks/68512670816f59c0e6a5.js +0 -1
  311. package/assets/esri/core/workers/chunks/6c7374ebc18b46b3480a.js +0 -1
  312. package/assets/esri/core/workers/chunks/75ba2af92da232067adb.js +0 -1
  313. package/assets/esri/core/workers/chunks/7c1f0598a016516dcec3.js +0 -1
  314. package/assets/esri/core/workers/chunks/8dcec8d1b670d2b7ea2b.js +0 -1
  315. package/assets/esri/core/workers/chunks/8e07dfb6fc2673b640cb.js +0 -1
  316. package/assets/esri/core/workers/chunks/9008dde941cb3973de20.js +0 -1
  317. package/assets/esri/core/workers/chunks/9050b167355588b7003d.js +0 -1
  318. package/assets/esri/core/workers/chunks/9230d68799f0b0b9ef36.js +0 -1
  319. package/assets/esri/core/workers/chunks/94d124453e90a5ab1706.js +0 -1
  320. package/assets/esri/core/workers/chunks/9ca312af9c056b1efe40.js +0 -1
  321. package/assets/esri/core/workers/chunks/b0a57718a0765d1c8df0.js +0 -1
  322. package/assets/esri/core/workers/chunks/b431b81a7bf45dd527da.js +0 -1
  323. package/assets/esri/core/workers/chunks/bda311ad48efdb265939.js +0 -1
  324. package/assets/esri/core/workers/chunks/da547c3cabe4a89c3ce6.js +0 -1
  325. package/assets/esri/core/workers/chunks/dd295fa57b45b7ec4ec5.js +0 -1
  326. package/assets/esri/core/workers/chunks/eb92aa372e706ce5a5eb.js +0 -1
  327. package/assets/esri/core/workers/chunks/f553b464e969d45bf451.js +0 -1
  328. package/assets/esri/core/workers/chunks/f5865294983eb160de8c.js +0 -1
  329. package/assets/esri/core/workers/chunks/fdb7b1fbdb6fe091ad83.js +0 -1
  330. package/assets/esri/core/workers/chunks/fe8544bf3bbbacd74b8b.js +0 -1
  331. package/views/2d/tiling/PagedTileQueue.js +0 -5
  332. package/views/3d/webgl-engine/lib/RenderPluginManager.js +0 -5
  333. package/views/3d/webgl-engine/lib/SmaaRenderPass.js +0 -5
  334. /package/views/3d/webgl-engine/{lib → effects}/SmaaRenderPassData.js +0 -0
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../chunks/tslib.es6.js";import t from"../../../Color.js";import i from"../../../core/Accessor.js";import{difference as r}from"../../../core/arrayUtils.js";import s from"../../../core/CollectionFlattener.js";import a from"../../../core/Evented.js";import n from"../../../core/Logger.js";import{clamp as l}from"../../../core/mathUtils.js";import{releaseMaybe as o,destroyMaybe as h}from"../../../core/maybe.js";import{MemCachePool as d}from"../../../core/MemCachePool.js";import p from"../../../core/ObjectPool.js";import u from"../../../core/PooledArray.js";import{throwIfAborted as c,isAbortError as _,isAborted as g,createAbortError as m}from"../../../core/promiseUtils.js";import{watch as T,syncAndInitial as y,sync as f,initial as v}from"../../../core/reactiveUtils.js";import{property as w}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/accessorSupport/ensureType.js";import"../../../core/has.js";import{subclass as E}from"../../../core/accessorSupport/decorators/subclass.js";import{m as S}from"../../../chunks/mat4.js";import{c as L}from"../../../chunks/mat4f64.js";import{c as D}from"../../../chunks/vec3.js";import{c as P}from"../../../chunks/vec3f64.js";import{c as b}from"../../../chunks/vec4f64.js";import{UpdatingHandles as x}from"../../../core/support/UpdatingHandles.js";import{getReferenceEllipsoid as U}from"../../../geometry/ellipsoidUtils.js";import{projectVectorToVector as R,projectPointToVector as C}from"../../../geometry/projection.js";import M from"../../../geometry/SpatialReference.js";import{create as j,equals as A,intersection as I,empty as O,expand as V,intersectsSphere as B}from"../../../geometry/support/aaBoundingRect.js";import{create as k,copy as N}from"../../../geometry/support/frustum.js";import{isPlateCarree as q}from"../../../geometry/support/spatialReferenceUtils.js";import{isRefreshableLayer as F}from"../../../layers/mixins/RefreshableLayer.js";import{ElevationQueryTileCache as G}from"../../../layers/support/ElevationQueryTileCache.js";import{ElevationTileData as W}from"../../../layers/support/ElevationTileData.js";import{isBaseLayer as H}from"../../../layers/support/layerUtils.js";import{acquireDecoder as Q}from"../../../layers/support/LercDecoder.js";import{printAllocations as z}from"../../2d/engine/vectorTiles/VectorTile.js";import{directionToHeadingTilt as X}from"../support/cameraUtils.js";import Y from"../support/debugFlags.js";import{toBoundingRect as $}from"../support/extentUtils.js";import{ClientType as K}from"../support/index.js";import{updatingProgress as J}from"../support/updatingProperties.js";import{ElevationBounds as Z}from"./ElevationBounds.js";import{ElevationData as ee,sampleElevation as te}from"./ElevationData.js";import{create as ie}from"./ExtentHelper.js";import{LODSnapping as re,TextureUpdate as se}from"./interfaces.js";import{LayerClass as ae,LayerClasses as ne}from"./LayerClass.js";import{OverlayManager as le}from"./OverlayManager.js";import{PlanarPatch as oe}from"./PlanarPatch.js";import{RenderOrder as he}from"./RenderOrder.js";import{ScaleRangeQueries as de}from"./ScaleRangeQueries.js";import{SphericalPatch as pe}from"./SphericalPatch.js";import{SplitLimits as ue}from"./SplitLimits.js";import{MAX_ROOT_TILES as ce,TOO_MANY_ROOT_TILES_AFTER_CHANGE_ERROR as _e,TOO_MANY_ROOT_TILES_FOR_LAYER_ERROR as ge,MAX_MEMORY_LOD_BIAS as me,ELEVATION_NODATA_VALUE as Te}from"./TerrainConst.js";import{TerrainRenderer as ye,TransparencyMode as fe}from"./TerrainRenderer.js";import ve from"./TerrainSurfacePerformanceInfo.js";import{weakAssert as we,internalAssert as Ee,oppositeEdge as Se,isSurfaceLayerView as Le,isGroupLayerView as De,isMapTileLayerView as Pe,isBlendableLayerView as be,isElevationLayerView as xe,isVectorTileLayerView as Ue,useFetchTileForLayer as Re,isImageryTileLayerView as Ce,isTileLayerView as Me,releaseTileData as je,neighborCornerIndices as Ae,oppositeCorner as Ie,neighborEdgeIndices as Oe,ENABLE_TERRAIN_INTERNAL_CHECKS as Ve,ENABLE_WATERPROOFNESS_TESTS as Be,enableTerrainInternalChecks as ke,enableTerrainWaterproofnessChecks as Ne}from"./terrainUtils.js";import{Tile as qe}from"./Tile.js";import{printAllocations as Fe}from"./TilePerLayerInfo.js";import{TileUpdate as Ge}from"./TileUpdate.js";import{IteratorPreorder as We,IteratorPostorder as He,compareTilesByLij as Qe,hasLoadableSiblings as ze,sortTilesByPOI as Xe,sortTiles as Ye}from"./tileUtils.js";import{TilingSchemeLogic as $e}from"./TilingSchemeLogic.js";import{UpsampleInfo as Ke}from"./UpsampleInfo.js";import{isCompositeBlendMode as Je,blendModeFromString as Ze}from"../webgl-engine/core/shaderLibrary/output/BlendOptions.js";import{PBRMode as et}from"../webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRenderingParameters.glsl.js";import{RenderRequestType as tt}from"../webgl-engine/lib/basicInterfaces.js";import{RenderState as it}from"../../support/RenderState.js";import{ImmediateTask as rt,TaskPriority as st,noBudget as at}from"../../support/Scheduler.js";let nt=class extends(a.EventedMixin(i)){constructor(e){super(e),this._scaleRangeQueries=new de,this._iteratorPool=new p(We,(e=>e.remove=()=>this._iteratorPool.release(e))),this._postorderIterator=new He,this._hasPendingUpdates=!1,this._pendingUpdates=0,this._asyncWorkItems=0,this._allTilesDirty=!0,this._allTilesSorted=!0,this._visibleCached=!1,this._usedMemory=null,this._performanceInfo=new ve,this._viewChanged=!1,this._inFrameTask=!1,this._viewChangeUpdateDirty=!1,this._eyePosRenderSR=P(),this._eyePosSurfaceSR=P(),this._splitLimits=new ue,this._frustum=k(),this._viewProjectionMatrix=L(),this._layerViews=[new Array,new Array],this._layerIndexByUid=[new Map,new Map],this._basemapLayerViewHandles=new Map,this._watchUpdatingTracking=new x,this._frameTask=rt,this._allTiles=new u,this._upsampleInfoPool=new p(Ke),this._rootTilesExtent=j(),this.updatingProgress=.5,this._maxNumUpdating=1,this.maxTextureScale=1.2,this._spatialReference=M.WebMercator,this.visibleElevationBounds=new Z(1/0,-1/0),this.rootTileElevationBounds=new Z(1/0,-1/0),this._updatingRootTiles=!1,this._pendingTilesForElevationUpdateEvent=new Set,this._pendingTilesToUpdate=new Set,this.totalGeometryUpdates=0,this.totalTileUpdates=0,this.oneBatchPerFrameTask=!0,this._layerViewsDirty=!1,this.unloadedMemory=0,this.ignoresMemoryFactor=!1,this._isWebMercator=!1,this._isWebMercatorOnPlateeCarree=!1,this.overlayManager=new le({...e,surface:this}),this._isGlobal=!e.view?.state?.isLocal}initialize(){this._lercDecoder=Q(this.view.resourceController),this._tilePool=this.view.state.isLocal?new p(oe):new p(pe);const e=this.view.resourceController.memoryController;this._upsampleMapCache=e.newCache("terrain-upsample",(e=>e.unloadMapData())),this._elevationQueryCache=new G(e.newCache("elevation-query")),this._tileTextureCache=new d(((t,i)=>e.newCache(t,i)),"TileTexture"),this.addHandles([T((()=>this.overlayManager.hasHighlights),(e=>this._renderer.setNeedsHighlight(e))),T((()=>this.overlayManager.rendersOccluded),(e=>this._renderer.setRenderOccludedOverlay(e))),T((()=>this.overlayManager.renderer.isEmpty),(()=>this._evaluateTransparency()))],"overlayManager"),this._renderer=new ye({_overlayRenderer:this.overlayManager.renderer,_ellipsoidRadius:U(this.view.spatialReference).radius,_stage:this.view._stage,_allTiles:this._allTiles,_cache:this._tileTextureCache}),this.addHandles([T((()=>this.baseOpacity),(()=>{this._handleLayerViewChanges(),this._updateTileTextures(this._evaluateTransparency()?se.UNFADED:se.IMMEDIATE)}),y),T((()=>this.hasCompositeBlendMode),(()=>this._updateTileTextures(this._evaluateTransparency()?se.UNFADED:se.IMMEDIATE)),y),T((()=>this.renderingDisabled),(()=>this.view?._stage?.renderer.setParameters({terrainRenderingEnabled:!this.renderingDisabled})),f),T((()=>this.backgroundColor),(e=>{this._handleLayerViewChanges(),this._renderer.updateTileBackground(e)}),y),T((()=>this.snapLevel),(()=>this._viewChanged=!0),f),T((()=>this.view.pointsOfInterest),(e=>{this._renderer.pointsOfInterest=e,this._watchUpdatingTracking.removeAll(),e&&this._watchUpdatingTracking.add((()=>e.focus.renderLocation),(()=>this._allTilesSorted=!1))})),T((()=>Y.TERRAIN_TILE_TREE_SHOW_TILES),(e=>{e&&!this._treeDebugger?import("../layers/support/TerrainTileTree3DDebugger.js").then((({TerrainTileTree3DDebugger:e})=>{!this._treeDebugger&&Y.TERRAIN_TILE_TREE_SHOW_TILES&&(this._treeDebugger=new e({view:this.view}))})):e||(this._treeDebugger=h(this._treeDebugger))}),v)]);const{spatialReference:t}=this.view;this._extentHelper=ie(this.viewingMode,{layers:this.view.map.allLayers,layerViews:this.view.allLayerViews,viewSpatialReference:t});const i=new s({getCollections:()=>this.view?.defaultsFromMap?.mapCollections?.map((({layers:e})=>e)),getChildrenFunction:e=>e&&"layers"in e?e.layers:null}),r=new $e({layers:i,extentHelper:this._extentHelper,viewingMode:this.viewingMode,viewSpatialReference:t});this._set("tilingSchemeLogic",r),this._updateTilingScheme(),this._elevationDataRequester=this.view.resourceController.createStreamDataRequester(K.ELEVATION),this._mapDataRequester=this.view.resourceController.createStreamDataRequester(K.BASEMAP);const a=this.view.resourceController.scheduler;this._frameTask=a.registerTask(st.TERRAIN_SURFACE,this),this.addHandles([T((()=>this._extentHelper.stencilEnabledExtents),(e=>this._renderer.setStencilEnabledLayerExtents(e)),v),T((()=>this.tilingSchemeLogic.tilingScheme),(()=>this._updateTilingScheme()),f),T((()=>this.extent),(()=>this._updateRootTiles()),v),this.view.on("resize",(()=>this._viewChangeUpdate())),T((()=>{const e=this.view,t=e.state;return[this._lodBias,this.lodSnapping,e.quality,t.camera,t.contentCamera,t.fixedContentCamera]}),(()=>this._viewChangeUpdate()),y),T((()=>this.view.qualitySettings?.tiledSurface?.textureFadeDuration),(e=>this._renderer.textureFadingEnabled=e>0),v),T((()=>this.view.qualitySettings?.physicallyBasedRenderingEnabled),(e=>this._renderer.pbrMode=e?et.Terrain:et.Disabled),v),T((()=>this._userClippingExtent),(()=>this._updateClippingExtent()),f)]),this.addHandles(this.view.allLayerViews.on("after-changes",(()=>this._layerViewsDirty=!0))),this._layerViewsDirty=!0,this._handleLayerViewChanges()}destroy(){this._frameTask.remove(),this._watchUpdatingTracking.destroy(),this._lercDecoder=o(this._lercDecoder),this._removeAllTiles(),this._set("tilingSchemeLogic",h(this.tilingSchemeLogic)),this._basemapLayerViewHandles.forEach(((e,t)=>this._unregisterTiledLayerView(t))),this._elevationDataRequester=null,this._mapDataRequester=null,this._set("overlayManager",h(this.overlayManager)),this._tilePool=h(this._tilePool),qe.prune(),this._treeDebugger=h(this._treeDebugger),this._renderer=h(this._renderer),this._iteratorPool=h(this._iteratorPool),this._upsampleMapCache=h(this._upsampleMapCache),this._elevationQueryCache=h(this._elevationQueryCache),this._tileTextureCache=h(this._tileTextureCache),this._set("view",null),this._extentHelper=h(this._extentHelper),this._upsampleInfoPool=h(this._upsampleInfoPool),z(),Fe()}get renderer(){return this._renderer}get frustum(){return this._frustum}get snapLevel(){if(this.lodSnapping===re.ON){const e=this.view,t=this.tilingScheme,i=e.pointsOfInterest?.cameraOnSurface?.scale;if(t&&i){const r=e.state.contentCamera;let s=X(e,r.eye,r.viewForward,r.up).tilt;s>90&&(s=180-s);const a=2*(s/90)**2,n=t.levelAtScale(i)-a,l=Math.min(n+e.qualitySettings.tiledSurface.lodBias,this._splitLimits.maxLod||1/0);return l<=0?null:l}}return null}get lodSnapping(){return this.view.qualitySettings.tiledSurface.reduceTileLevelDifferences?re.ON:re.OFF}get upsampleInfoPool(){return this._upsampleInfoPool}get upsampleMapCache(){return this._upsampleMapCache}get elevationQueryCache(){return this._elevationQueryCache}get mapTileRequester(){return this._mapDataRequester}get _userClippingExtent(){const{spatialReference:e}=this,{clippingArea:t}=this.view;if(null==t||null==e)return null;const i=j(),r=$(t,i,e)?i:null,s=this._get("extent");return A(r,s)?s:r}get rootTilesExtent(){return this._rootTilesExtent}get extent(){const e=I(this.groundExtent,this._userClippingExtent,j()),t=this._get("extent");return A(e,t)?t:e}get groundExtent(){return null!=this._tilingSchemeExtent?this._tilingSchemeExtent:this._rootTilesExtent}get _tilingSchemeExtent(){return this.tilingSchemeLogic?.extent}get updating(){return this._hasPendingUpdates||(this._maxNumUpdating=1),!!((this.running||this._watchUpdatingTracking?.updating||this._asyncWorkItems>0)&&this.ready&&!this.suspended||this.overlayManager?.updating)}get running(){return(this._hasPendingUpdates||this._viewChanged||this._allTilesDirty||!this._allTilesSorted||this._layerViewsDirty||this._scaleRangeQueries.updating||this._frameTask.updating)&&this.ready&&!this.suspended}get updatingProgressValue(){return this._maxNumUpdating=Math.max(this._pendingUpdates,this._maxNumUpdating),1-this._pendingUpdates/this._maxNumUpdating}get baseOpacity(){return this.view?.map?.ground?.opacity??1}set baseOpacity(e){this.view.map.ground.opacity=e}get viewingMode(){return this.view.state.viewingMode}get ready(){return null!=this._rootTiles}set renderOrder(e){this._renderer.renderOrder=e,this._set("renderOrder",e)}get rootTiles(){return this._rootTiles}get spatialReference(){return this.tilingScheme?.spatialReference??null}get backgroundColor(){return this.view?.map?.ground?.surfaceColor}set backgroundColor(e){this.view.map.ground.surfaceColor=e}set slicePlaneEnabled(e){this._renderer.slicePlaneEnabled=e,this._set("slicePlaneEnabled",e),this._evaluateTransparency()}get tilingSchemeLocked(){return this.tilingSchemeLogic?.tilingSchemeLocked??!1}get wireframe(){return this._renderer?.wireframe}set wireframe(e){e!==this._renderer.wireframe&&(this._renderer.wireframe=e,this._updateAllTileGeometries())}set _visible(e){e!==this._visibleCached&&(this._visibleCached=e,this._renderer.setVisibility(e),this.suspended=!e)}get opaque(){return this._renderer.transparency===fe.Opaque}set suspended(e){this._set("suspended",e),this._viewChangeUpdate()}get textureFadeDuration(){return this.view.qualitySettings.tiledSurface.textureFadeDuration??0}intersect(e,t,i,r){this._renderer.intersect(e,t,i,r)}getElevation(e,t,i,r){const s=this._rootTiles;if(null==s||!s.length)return null;if(0===s[0].layerInfo[ae.ELEVATION].length)return null;const a=pt;if(a[0]=e,a[1]=t,a[2]=i,!R(a,r,a,this._spatialReference))return n.getLogger(this).error("TerrainSurface.getElevation(): could not project given point to tiling scheme coordinate system"),null;return Tt(s,a[0],a[1])}getElevations(e,t,i){const r=this._rootTiles,s=r?r[0].layerInfo[ae.ELEVATION].length:0;if(null!=r&&r.length&&0!==s)for(let a=0;a<t;++a){const t=3*a;i(a,Tt(r,e[t],e[t+1]))}else for(let a=0;a<t;++a)i(a,null)}getScale(e){if(!this.tilingScheme)return null;if(!C(e,pt,this.spatialReference))return n.getLogger(this).error("TerrainSurface.getScale(): could not project given point to tiling scheme coordinate system"),null;const t=this._rootTiles;if(null!=t)for(const i of t)if(i?.containsPoint(pt)){let e=i;for(;e.children[0]&&!e.rendered;){const t=e.children[0].extent;let i=0;pt[0]>t[2]&&(i+=1),pt[1]<t[1]&&(i+=2),e=e.children[i]}return this._getLodBiasCorrectedScale(e.level)}return 1/0}getSphereElevationBounds(e,t){if(pt[0]=e[0],pt[1]=e[1],pt[2]=e[2],pt[3]=e[3],!R(pt,t,pt,this.tilingScheme?.spatialReference))return n.getLogger(this).error("TerrainSurface.getSphereElevationBounds(): could not project given point to tiling scheme coordinate system"),null;let i=1/0,r=-1/0;const s=e=>{if(e&&B(e.extent,pt))if(e.isLeaf||e.rendered)i=Math.min(i,e.elevationBounds[0]),r=Math.max(r,e.elevationBounds[1]);else for(const t of e.children)s(t)},a=this._rootTiles;if(null!=a)for(const n of a)s(n);return{min:i,max:r}}getSphereScale(e,t){if(!this.tilingScheme)return null;if(!C(e,pt,this.spatialReference))return n.getLogger(this).error("TerrainSurface.getSphereScale(): could not project given point to tiling scheme coordinate system"),null;pt[3]=t;let i=null;const r=e=>{if(e&&B(e.extent,pt)){const t=e.children;if(t[0]&&!e.rendered)for(const e of t)r(e);else{const t=this._getLodBiasCorrectedScale(e.level);i=null==i?t:Math.min(i,t)}}},s=this._rootTiles;if(null!=s)for(const a of s)r(a);return i}queryVisibleScaleRange(e,t,i,r){const s=t?this.tilingScheme.levelAtScale(t):0,a=i?this.tilingScheme.levelAtScale(i):1/0,n=this._lodBias;this._scaleRangeQueries.queryVisibleLevelRange(e,s+n,a+n,r)}_evaluateTransparency(){const e=this.baseOpacity,t=this.overlayManager.renderer.isEmpty,i=this._renderer.transparency,r=this._allSurfaceLayersTransparent()?t?fe.Empty:fe.TransparentWithDraped:e>=1&&!this.hasCompositeBlendMode&&!this._renderer.slicePlaneEnabled?fe.Opaque:fe.Semitransparent,s=i!==r;return s&&(this._renderer.transparency=r,this.view?._stage?.renderer.setParameters({terrainTransparency:this._renderer.transparency})),s}_updateTilingScheme(){const e=this.tilingSchemeLogic.tilingScheme;if(!(e!==this.tilingScheme))return;we(!!e,"tiling scheme cannot be reset to undefined"),this._isGlobal=!this.view?.state?.isLocal,this.tilingScheme&&this._removeAllTiles();const t=e?.spatialReference??M.WebMercator;this._spatialReference=t,this._isWebMercator=!!t?.isWebMercator,this._isWebMercatorOnPlateeCarree=this._isWebMercator&&q(this.view?.renderSpatialReference),this._set("tilingScheme",e),this._updateClippingExtent(),e&&(this._updateTiledLayers(),this._renderer.setTileSize(e.pixelSize),this.overlayManager.setSpatialReference(e.spatialReference),this._updateRootTiles())}_acquireTile(e,t,i,r){const s=this._tilePool.acquire();return ct[0]=e,ct[1]=t,ct[2]=i,s.init(ct,r,this),s}get updatingRootTiles(){return this._updatingRootTiles}_updateRootTiles(){const{extent:e,tilingScheme:t}=this;if(!t)return;const i=ut;let s=t.rootTilesInExtent(e,i,5*ce);if(null!=this._rootTiles){if(s.length>ce)return void n.getLogger(this).warn(_e);const e=this._rootTiles.map((e=>e.lij)),t=r(e,s,ot);if(this._updatingRootTiles=!0,t.removed.length>0||t.added.length>0){const e=this._rootTiles.filter((e=>!(t.removed.findIndex((t=>ot(t,e.lij)))>-1)||(this._purgeTile(e),!1)));t.added.forEach((t=>e.push(this._newRootTile(t)))),this._setRootTiles(e)}}else this._updatingRootTiles=!0,s.length>ce&&(n.getLogger(this).warn(ge),s=t.rootTilesInExtent(e,i,ce)),this._setRootTiles(s.map((e=>this._newRootTile(e))));A(i,this._rootTilesExtent)||(this._rootTilesExtent=j(i)),this._visible=!0,this._viewChangeUpdate(),this.overlayManager.setPlacementDirty(),this.notifyChange("ready"),this._updateAllTileGeometries(),this._updatingRootTiles=!1,this.checkAllTilesWaterproofness()}_updateAllTileGeometries(){const e=this._allTiles.filter((e=>e.isLoaded&&e.intersectsClippingArea));e.forEach((e=>this._renderer.updateTileGeometryState(e))),e.forEach((e=>e.renderData.updateNeighborData())),this._updateTilesGeometries(e),this._pendingTilesToUpdate.clear()}_updateTilesGeometries(e){if(0===e.length)return;e.sort(Qe);const t=this.renderer;e.forEach((e=>t.updateGeometryIfNeeded(e))),e.forEach((e=>this._pendingTilesForElevationUpdateEvent.add(e)))}_shouldSplit(e){return e.shouldSplit(this._splitLimits,this._eyePosRenderSR,this.snapLevel)===Ge.SPLIT}_newRootTile(e){const t=this._acquireTile(0,e[1],e[2],null);return this._shouldSplit(t)&&t.setPendingUpdate(Ge.SPLIT),this._loadTile(t),this._markTileToUpdate(t),this._updateRootTileElevationBounds(),t}_setRootTiles(e){if(this._rootTiles=e,this._allTiles.clear(),null!=e){const t=this._iteratorPool.acquire();for(t.reset(e);!t.done;)this._allTiles.push(t.next());t.remove()}this._renderer.setRootTiles(this._rootTiles),this._updateTilesVisibility(e)}_runViewChangeUpdateIfDirty(){this._viewChangeUpdateDirty&&(this._viewChangeUpdateDirty=!1,this._viewChangeUpdate())}_viewChangeUpdate(){this.view&&!this.suspended&&this.tilingScheme&&this._visibleCached&&(this._inFrameTask?this._viewChangeUpdateDirty=!0:(this._viewChangeUpdateDirty=!1,this._updateViewDependentParameters(),this._updateTilesVisibility(this._rootTiles)))}_updateClippingStatus(e){e.updateClippingStatus(this.extent)&&e.resetPendingUpdate(Ge.GEOMETRY)&&this._updateTileGeometryState(e)}_updateTilesVisibility(e){if(null==e)return;const t=ze(e),i=this.visibleElevationBounds;let r=t?i.min:1/0,s=t?i.max:-1/0;const a=this.extent,n=this._viewProjectionMatrix;this.setTileTreeDirty();const l=this._iteratorPool.acquire();for(l.reset(e);!l.done;){const e=l.next();e.updateClippingStatus(a)&&e.resetPendingUpdate(Ge.GEOMETRY)&&this._updateTileGeometryState(e),e.setPendingUpdate(Ge.RENDERDATA),e.computeVisibility(),e.updateScreenDepth(n),e.renderData&&(r=Math.min(e.elevationBounds[0],r),s=Math.max(e.elevationBounds[1],s))}l.remove(),this._viewChanged=!0,this._allTilesDirty=!0,this._batchUpdatePendingTileGeometries(),isFinite(r)&&isFinite(s)&&(i.min!==r||i.max!==s)&&(this.visibleElevationBounds=new Z(r,s))}_updateRootTileElevationBounds(){let e=1/0,t=-1/0;const i=this._rootTiles;null!=i&&i.forEach((({elevationBounds:i})=>{e=Math.min(e,i[0]),t=Math.max(t,i[1])}));const r=this.rootTileElevationBounds;r.min===e&&r.max===t||(this.rootTileElevationBounds=new Z(e,t))}_updateViewDependentParameters(){const{camera:e,contentCamera:t}=this.view.state,i=Math.tan(.5*t.fovX),r=Math.tan(.5*t.fovY),s=this.tilingScheme.pixelSize,a=2**-this._lodBias*e.pixelRatio;this._splitLimits.aboveGround=e.aboveGround,this._splitLimits.fovX=i,this._splitLimits.fovY=r,this._splitLimits.relativeWidthLimit=s/e.width*this.maxTextureScale*a,this._splitLimits.relativeHeightLimit=s/e.height*this.maxTextureScale*a,this._splitLimits.maxLod=this.tilingScheme.getMaxLod(),this._splitLimits.angledSplitBias=this.view.qualitySettings.tiledSurface.angledSplitBias,this.view.state.fixedContentCamera?(null==this._splitLimits.frustum&&(this._splitLimits.frustum=k()),N(this._splitLimits.frustum,t.frustum)):this._splitLimits.frustum=null,N(this._frustum,e.frustum),S(this._viewProjectionMatrix,t.projectionMatrix,t.viewMatrix),D(this._eyePosRenderSR,t.eye),R(e.eye,this.view.renderSpatialReference,this._eyePosSurfaceSR,this.spatialReference)}_updateRenderData(e){e.rendered&&!e.shouldLoad&&(ht(e)?this._loadChildren(e):dt(e)&&this._loadParent(e))}_updateTileGeometryState(e){e.updateVisibility();this._renderer.updateTileGeometryState(e)&&this._markTileToUpdate(e),this._usedMemory=null}_markAllTileNeighborsForGeometryUpdate(e){const t=this._pendingTilesToUpdate;e.forEachLoadedNeighbor((e=>{t.add(e)}))}_updateTileTexture(e,t){const i=e.resetPendingUpdate(Ge.TEXTURE_FADING)?Ge.TEXTURE_FADING:!!e.resetPendingUpdate(Ge.TEXTURE_NOFADING)&&Ge.TEXTURE_NOFADING;i&&(this._renderer.updateTileTexture(e,i),this._usedMemory=null,t.madeProgress())}_emitElevationUpdateEventForTiles(){const e=gt.extent;O(e),this._pendingTilesForElevationUpdateEvent.forEach((t=>V(e,t.extent,e))),this._pendingTilesForElevationUpdateEvent.clear(),gt.spatialReference=this.spatialReference,this.emit("elevation-change",gt)}runTask(e){this._handleLayerViewChanges(e),this._frameTask.processQueue(e),this.renderer.processScaleRangeQueries(this._scaleRangeQueries,e),this._inFrameTask=!0,this._pendingUpdates=0,this._hasPendingUpdates=!1,this._updateAllTilesStatus(e),this._sortTiles(e);const t=!this.view.state.fixedContentCamera;this._mergeAndSplit(e,t),this._updateElevation(e),this._updateTextures(e),t||this._mergeAndSplit(e,!0),this._inFrameTask=!1,this._runViewChangeUpdateIfDirty(),this._batchUpdatePendingTileGeometries(),this._emitElevationUpdateEventForTiles(),e.done&&e.hasProgressed&&this.requestUpdate(),this.notifyChange("updatingProgressValue")}_updateAllTilesStatus(e){if(!this._viewChanged||!this._rootTiles||e.done)return;this._viewChanged=!1;const t=this._iteratorPool.acquire();t.reset(this._rootTiles);const i=this.snapLevel,r=this._splitLimits,s=this._eyePosRenderSR;for(;!t.done;){const e=t.next(),a=e.shouldSplit(r,s,i);if(a!==Ge.SPLIT){if(e.resetPendingUpdate(Ge.SPLIT)&&e.updateAgentSuspension(),a===Ge.ELEVATION&&e.updateAgents(ae.ELEVATION),t.skipSubtree(),!e.isLeaf){e.setPendingUpdate(Ge.MERGE),e.resetPendingUpdate(Ge.SPLIT);const t=this._iteratorPool.acquire();t.resetOne(e);const i=this._viewProjectionMatrix;for(let e=t.next();!t.done;e=t.next())this._updateClippingStatus(e),e.updateVisibility(),e.updateScreenDepth(i);t.remove()}}else e.resetPendingUpdate(Ge.MERGE),e.isLeaf&&(e.setPendingUpdate(Ge.SPLIT),t.skipSubtree()),e.rendered&&e.setPendingUpdate(Ge.RENDERDATA)}t.remove(),this.requestUpdate(),(this.shortBatches||!this.oneBatchPerFrameTask)&&this._batchUpdatePendingTileGeometries(),e.madeProgress()}_sortTiles(e){e.done||this._allTilesSorted||(Xe(this._allTiles,this.view.pointsOfInterest.focus.renderLocation),this._allTilesSorted=!0,this._treeDebugger&&this._treeDebugger.update(),e.madeProgress())}_markTileToUpdate(e){Ee(e.isLoaded),e.intersectsClippingArea&&(this._pendingTilesToUpdate.add(e),this._markAllTileNeighborsForGeometryUpdate(e))}_batchUpdatePendingTileGeometries(){const e=this._pendingTilesToUpdate;if(0===e.size)return;const t=Array.from(this._pendingTilesToUpdate.keys()).filter((e=>e.isLoaded&&e.intersectsClippingArea)),i=(i,r)=>{!r?.isLoaded||!r.intersectsClippingArea||r.level<i.level||e.has(r)||(e.add(r),t.push(r),r.renderData.updateNeighborData())};t.sort(Qe);const r=t.length;for(let s=0;s<r;++s){const r=t[s];Ee(r.isLoaded),Ee(r.intersectsClippingArea);const a=r.renderData;a.updateNeighborData();const n=a._dirtyEdgeResolutions,l=a.geometryState.neighborData.cornerPeerNeighbors,o=e=>{const t=Ae[e];i(r,l[e]?.findCorner(Ie(t),(e=>e.isLoaded)))};for(let t=0;t<4;++t)if(n&1<<t){const s=a.geometryState.neighborData.edgePeerNeighbors[t];s&&s?.level>=r.level&&s.forAllSubtreeOnSide(Se(Oe[t]),(t=>!(!t.isLoaded||!t.intersectsClippingArea)&&(Ee(e.has(t)||Qe(r,t)<0),i(r,t),!0))),o((t+1)%4),o(t)}}e.clear(),this._updateTilesGeometries(t),Ve&&Be&&this.checkAllTilesWaterproofness()}_mergeAndSplit(e,t){if(this.suspended||e.done||!this._allTilesDirty)return;this._allTilesDirty=!1,this.requestUpdate();let i=!1;const r=this.view.state.fixedContentCamera;let s=!1;for(;!e.done;){s=!0;let a=!1;const n=!this._allTiles.some((s=>{if(!i&&!r&&!s.visible)return e.done;let n=s;if(s.resetPendingUpdate(Ge.MERGE)){if(!t)return s.setPendingUpdate(Ge.MERGE),e.done;for(;n.parent?.resetPendingUpdate(Ge.MERGE);)n=n.parent;this._mergeTile(n),a=!0,e.madeProgress()}else s.resetPendingUpdate(Ge.SPLIT)&&(this._splitTile(s),a=!0,e.madeProgress());return!e.done&&n===s&&s.resetPendingUpdate(Ge.RENDERDATA)&&(this._updateRenderData(s),e.madeProgress()),e.done}));if(a&&(this._allTilesSorted=!1,this._allTilesDirty=!0),n){if(!i){i=!0;continue}if(!a)break}else this._allTilesDirty=!0}s?e.madeProgress():this._allTilesDirty=!0,!this.oneBatchPerFrameTask&&this._batchUpdatePendingTileGeometries(),this._sortTiles(e)}_updateElevation(e){e.done||(this._allTiles.some((t=>(t.resetPendingUpdate(Ge.GEOMETRY)&&(this._updateTileGeometryState(t),this._updateTileTexture(t,e),this.shortBatches&&this._batchUpdatePendingTileGeometries(),e.madeProgress()),e.done))),!this.oneBatchPerFrameTask&&this._batchUpdatePendingTileGeometries())}_updateTextures(e){e.done||this._allTiles.some((t=>(this._updateTileTexture(t,e),e.done)))}_updateClippingExtent(){this.spatialReference&&(this.updateTileOverlayParams(tt.UPDATE),this.overlayManager.setPlacementDirty(),this._updateRootTiles())}get _lodBias(){const e=this.view.quality;return this.view.qualitySettings.tiledSurface.lodBias-(1-e)*me}_getLodBiasCorrectedScale(e){const t=this.tilingScheme.levels,i=l(e-this._lodBias,0,t.length-1),r=i-Math.floor(i);return t[Math.floor(i)].scale*(1-r)+t[Math.ceil(i)].scale*r}_removeAllTiles(){null!=this._rootTiles&&(this._rootTiles.forEach((e=>this._purgeTile(e))),this._setRootTiles(null),this.notifyChange("ready")),this._allTiles.clear(),this._visible=!1}_purgeDescendantTiles(e){if(!e.children[0])return!1;let t=!1;for(let i=0;i<4;++i)t=this._purgeTile(e.children[i])||t;return e.unsetChildren(),t}_purgeTile(e){const t=this._purgeDescendantTiles(e)||e.rendered;return this._allTiles.removeUnordered(e),this._unloadTile(e),this._tilePool.release(e),t}_unloadTile(e){this._pendingTilesToUpdate.delete(e),this._pendingTilesForElevationUpdateEvent.delete(e),e.unload(this._renderer)}_splitTile(e){we(e.isLeaf,"tile that is already split should not be split again!");const t=e.level+1,i=2*e.lij[1],r=2*e.lij[2];e.setChildren(this._createTile(t,i,r,e),this._createTile(t,i,r+1,e),this._createTile(t,i+1,r,e),this._createTile(t,i+1,r+1,e)),e.setPendingUpdate(Ge.RENDERDATA),e.updateAgentSuspension(),this._allTiles.pushArray(e.children),this._allTilesDirty=!0,++this._performanceInfo.numSplit}_emitTileScaleChange(e,t=e.level){mt.spatialReference=this.spatialReference,mt.extent=e.extent,mt.scale=this._getLodBiasCorrectedScale(t),this.emit("scale-change",mt)}_createTile(e,t,i,r){we(!!r,"_createTile sanity check");const s=this._acquireTile(e,t,i,r);return s.updateClippingStatus(this.extent),s.updateScreenDepth(this._viewProjectionMatrix),this._shouldSplit(s)&&s.setPendingUpdate(Ge.SPLIT),s}get shortBatches(){return this.view.state.mode!==it.IDLE}_mergeTile(e){we(!e.hasPendingUpdate(Ge.SPLIT),"_mergeTile sanity check"),this._purgeDescendantTiles(e)&&(we(!e.renderData,"_mergeTile sanity check"),this._loadTile(e),this._markTileToUpdate(e),this._emitTileScaleChange(e),this.shortBatches&&this._batchUpdatePendingTileGeometries()),this._allTilesDirty=!0,++this._performanceInfo.numMerged}_loadChildren(e){we(e.rendered,"parent should be rendered"),this._unloadTile(e);const t=e.children;t.forEach((e=>this._loadTile(e))),t.forEach((e=>this._pendingTilesToUpdate.add(e))),this._markAllTileNeighborsForGeometryUpdate(e),this._emitTileScaleChange(e,e.level+1),this.shortBatches&&this._batchUpdatePendingTileGeometries()}_loadParent(e){const t=e.parent;this._unloadChildren(t),this._loadTile(t),this._markTileToUpdate(t),this._emitTileScaleChange(t,t.level),this.shortBatches&&this._batchUpdatePendingTileGeometries()}_unloadChildren(e){const t=e.children;if(t[0])for(let i=0;i<4;++i){const e=t[i];this._unloadChildren(e),this._unloadTile(e)}}_loadTile(e){e.load(),e.setPendingUpdate(Ge.RENDERDATA),this.requestUpdate(),this._allTilesDirty=!0,this.overlayManager&&this.overlayManager.hasOverlays&&this.overlayManager.setTileParameters(e)}_elevationDataArrived(e,t,i){const r=new ee(e.lij,e.extent,i);e.dataArrived(t,ae.ELEVATION,r);const s=[e],a=e.level,n=this._iteratorPool.acquire();for(n.reset(s);!n.done;){const e=n.next();e.findElevationBoundsForLayer(t,a),e.computeElevationBounds()}0===a&&this._updateRootTileElevationBounds(),n.remove(),this._updateTilesVisibility(s)}_handleLayerViewChanges(e=at){if(!this._layerViewsDirty)return;this._layerViewsDirty=!1;let t=!1;const i=new Set;let r=-1;for(const s of this.view.allLayerViews.items)if(i.add(s.uid),Le(s)||De(s))if(this._basemapLayerViewHandles.has(s.uid)&&!De(s)){const e=this._layerClassFromLayerView(s),i=this._getLayerIdxByUID(e,s.uid);null!=i&&((i<r||null==r)&&(t=!0),r=i)}else this._registerTiledLayerView(s),s.layer.loaded&&(t=!0);this._basemapLayerViewHandles.forEach(((e,r)=>{i.has(r)||(this._unregisterTiledLayerView(r),t=!0)})),t&&this._updateTiledLayers(),this.hasCompositeBlendMode=this._hasCompositeBlendMode(),this._evaluateTransparency(),e.madeProgress()}_allSurfaceLayersTransparent(){let e=0===this.view.map?.ground?.opacity;for(const t of this.view.allLayerViews.items)if(Pe(t)&&!H(t.layer)&&0!==t.fullOpacity)return e=!1,e;return e}_hasCompositeBlendMode(){for(const e of this.view.allLayerViews.items)if((be(e)||De(e))&&Je(Ze[e.layer.blendMode]))return!0;return!1}_layerClassFromLayerView(e){return xe(e)?ae.ELEVATION:ae.MAP}_registerTiledLayerView(e){const t=[];if((be(e)||De(e))&&t.push(T((()=>e.layer.blendMode),(()=>{this.hasCompositeBlendMode=this._hasCompositeBlendMode(),this._updateTileTextures(se.UNFADED)}))),!De(e)){const i=this._layerClassFromLayerView(e);t.push(T((()=>e.suspended),(()=>this._updateTiledLayers()))),t.push(T((()=>e.fullOpacity),(()=>this._updateTileTextures(se.UNFADED)))),t.push(T((()=>"effectiveScaleRange"in e.layer?e.layer.effectiveScaleRange:null),(()=>this._restartAllAgents(i)))),t.push(e.on("data-changed",(()=>{const t=this._getLayerIdxByUID(i,e.uid);null!=t&&this._invalidateLayerData(t,i)})))}this._unregisterTiledLayerView(e.uid),this._basemapLayerViewHandles.set(e.uid,t)}_unregisterTiledLayerView(e){const t=this._basemapLayerViewHandles.get(e);if(t){for(const e of t)e.remove();this._basemapLayerViewHandles.delete(e)}}_updateTiledLayers(){if(!this.tilingScheme||this.view.suspended)return;const e=this.view.allLayerViews,t=[[],[]];let i=null;e.forEach((e=>{if(!e.layer||e.suspended||!Le(e)||!e.fullExtent)return;const r=this._layerClassFromLayerView(e);if(r===ae.MAP){const t=e.displayLevelRange.maxLevel;t!==1/0&&(null===i||t>i)&&(i=t)}t[r].push(e)}));for(const r of ne){const e=this._layerViews[r],i=t[r];i.reverse();const s=i.length;let a=e.length!==s;const n=new Array(s),l=new Array(e.length);this._layerIndexByUid[r].clear();for(let t=0;t<s;t++){const s=i[t].uid;this._layerIndexByUid[r].set(s,t);const o=e.indexOf(i[t]);n[t]=o,t!==o&&(a=!0),o>-1&&(l[o]=t)}if(a){const e=this._postorderIterator;for(e.reset(this._rootTiles);!e.done;)e.next().modifyLayers(l,n,r);this._layerViews[r]=i,this._restartAllAgents(r),this._updateTilesVisibility(this._rootTiles)}}this.tilingScheme.ensureMaxLod(i)&&this._viewChangeUpdate()}_restartAllAgents(e){const t=this._postorderIterator;for(t.reset(this._rootTiles);!t.done;){const i=t.next();i.restartAgents(e),e===ae.ELEVATION&&i.computeElevationBounds()}this._updateRootTileElevationBounds()}layerViewByIndex(e,t){return this._layerViews[t][e]}numLayers(e){return this._layerViews[e].length}_updateTileTextures(e){this._allTiles.forAll((t=>{t.updateAgents(ae.MAP),e===se.IMMEDIATE?this.renderer.updateTileTexture(t,Ge.TEXTURE_NOFADING):t.updateRenderData(ae.MAP,e)})),this._evaluateTransparency()}_invalidateLayerData(e,t){this._allTiles.forAll((i=>i.removeLayerAgent(e,t))),this._allTiles.forAll((i=>i.invalidateLayerData(e,t)))}setTileTreeDirty(){this._allTilesDirty=!0}requestRender(e=tt.UPDATE){this.renderer.setNeedsRender(e)}requestUpdate(){1==++this._pendingUpdates&&(this._hasPendingUpdates=!0)}requestTileData(e,t,i,r){const s=this.layerViewByIndex(t,i),a=s.layer;return!a.tilemapCache||Ue(s)?this._requestTileData(e,i,s,r):(++this._asyncWorkItems,a.tilemapCache.fetchAvailability(e.lij[0],e.lij[1],e.lij[2],{...r,timeout:6e3}).then((()=>--this._asyncWorkItems)).catch((t=>{throw--this._asyncWorkItems,c(r),_(t)||this._dataMissing(e,i,s,{notInTilemap:!0}),t})).then((()=>this._frameTask.schedule((()=>this._requestTileData(e,i,s,r)),r.signal))))}_requestTileData(e,t,i,r){return t===ae.ELEVATION?xe(i)?this._requestElevationTileData(e,i,r):Promise.reject():Pe(i)?this._requestMapTileData(e,i,r):Promise.reject()}_requestElevationTileData(e,t,i){++this._asyncWorkItems;const r=r=>{if(g(i))return;const s=this._layerIndexByUid[ae.ELEVATION].get(t.uid);null!=s?(this._usedMemory=null,this.requestUpdate(),this._elevationDataArrived(e,s,r)):n.getLogger(this).warn("TerrainSurface: received data from unknown layer %d %s",ae.ELEVATION,e.lij.toString())},s=i=>{_(i)||(this._dataMissing(e,ae.ELEVATION,t,i),this.requestUpdate())};if(Re(t.layer))return t.layer.fetchTile(e.lij[0],e.lij[1],e.lij[2],{noDataValue:Te,signal:i.signal}).then((e=>{if(!g(i))return this._frameTask.schedule((()=>r(e)),i.signal,s);n.getLogger(this).warnOnce("A call to fetchTile resolved even though the request was aborted. fetchTile should not resolve if options.signal.aborted is true.")}),s).finally((()=>{--this._asyncWorkItems}));const a=t.getTileUrl(e.lij[0],e.lij[1],e.lij[2]);return this._elevationDataRequester.request(a,"binary",i).then((e=>this._lercDecoder.decode(e,{noDataValue:Te},i.signal))).then((e=>{e?r(new W(e)):s(new Error("LERC decoding failed"))}),s).finally((()=>{--this._asyncWorkItems}))}_requestMapTileData(e,t,i){++this._asyncWorkItems;const r=(r,s)=>{--this._asyncWorkItems,je(s),g(i)||(this._dataMissing(e,ae.MAP,t,r),this.requestUpdate())},s=e=>t=>r(t,e),a=r=>this._frameTask.schedule((()=>{--this._asyncWorkItems,this.requestUpdate(),g(i)?je(r):this._mapTileDataArrived(e,t,r)}),i.signal,s(r)).catch(s(r)),l=(e,t=null)=>this._frameTask.schedule((()=>r(e,t)));if(Ue(t)){const r=t.schemaHelper.getLevelRowColumn(e.lij);return t.fetchTile(r[0],r[1],r[2],i).then(a,l)}if(Ce(t))return t.fetchTile(e.lij[0],e.lij[1],e.lij[2],i).then(a,l);if(Me(t)&&Re(t.layer))return t.layer.fetchTile(e.lij[0],e.lij[1],e.lij[2],i).then((e=>{if(g(i))return n.getLogger(this).warnOnce("A call to fetchTile resolved even though the request was aborted. fetchTile should not resolve if options.signal.aborted is true."),void l(m());a(e)}),l);let o=t.getTileUrl(e.lij[0],e.lij[1],e.lij[2]);F(t.layer)&&t.layer.refreshTimestamp&&(o+=`${o.includes("?")?"&":"?"}_ts=${t.layer.refreshTimestamp}`);const h=t.hasMixedImageFormats?"image+type":"image";return this._mapDataRequester.request(o,h,i).then(a,l)}_mapTileDataArrived(e,t,i){const r=this._getLayerIdxByUID(ae.MAP,t.uid);null!=r?e.dataArrived(r,ae.MAP,i):(je(i),n.getLogger(this).warn("TerrainSurface: received data from unknown layer"))}_getLayerIdxByUID(e,t){return this._layerIndexByUid[e].get(t)}_dataMissing(e,t,i,r){const s=this._getLayerIdxByUID(t,i.uid);null!=s?e.dataMissing(s,t,r):n.getLogger(this).warn("TerrainSurface: received data from unknown layer")}updateTileOverlayParams(e){this._rootTiles&&this.overlayManager&&(this._allTiles.forAll((e=>{e.renderData&&this.overlayManager.setTileParameters(e)})),this._renderer.setNeedsRender(e))}get performanceInfo(){const e=this._performanceInfo;return e.numNodes=this._allTiles.length,e.numLeaves=e.numVisible=e.numRendered=e.numLoadedPerLevel.length=e.numRenderedPerLevel.length=0,this._allTiles.forAll((t=>{t.isLeaf&&e.numLeaves++;const i=t.level;t.renderData&&(e.numLoadedPerLevel[i]=(e.numLoadedPerLevel[i]||0)+1),t.visible&&(e.numVisible++,t.rendered&&(e.numRenderedPerLevel[i]=(e.numRenderedPerLevel[i]||0)+1,e.numRendered++))})),e}get usedMemory(){return this.tilingScheme?(null==this._usedMemory&&(this._usedMemory=this._recalculateUsedMemory()),this._usedMemory??0):0}_recalculateUsedMemory(){return this.tilingScheme?Math.round(this._allTiles.reduce(((e,t)=>e+t.usedMemory),this.overlayManager.usedMemory)):null}getUsedMemoryForLayerView(e){let t=0;const i=this._layerClassFromLayerView(e),r=this._getLayerIdxByUID(i,e.uid);return null!=r&&this._allTiles.forAll((e=>t+=e.getUsedMemoryForLayer(i,r))),t}getTile(e){if(null==e||null==this._rootTiles)return null;const t=e.split("/").map((e=>+e));if(0===t[0])return this._rootTiles.find((e=>e.lij[1]===t[1]&&e.lij[2]===t[2]));const i=2**t[0],r=Math.floor(t[1]/i),s=Math.floor(t[2]/i);let a;if(this._rootTiles.some((e=>e.lij[1]===r&&e.lij[2]===s&&(a=e,!0))),a){let e=1<<t[0]-1;for(;a.lij[0]<t[0];){let i=t[1]&e?2:0;if((t[2]&e)>0&&i++,!a.children[i])return null;a=a.children[i],e>>=1}return we(a.lij[0]===t[0]&&a.lij[1]===t[1]&&a.lij[2]===t[2],"not the right tile?"),a}return null}get renderPatchBorders(){return this._renderer.renderPatchBorders}set renderPatchBorders(e){this._renderer.renderPatchBorders=e}get visualizeNormals(){return this._renderer.visualizeNormals}set visualizeNormals(e){this._renderer.visualizeNormals=e}get renderingDisabled(){return this._renderer.renderingDisabled}set renderingDisabled(e){this._renderer.renderingDisabled=e}get test(){const e=this;return{renderer:e._renderer,lercDecoder:e._lercDecoder,forceReload:()=>{null!=e._rootTiles&&e._rootTiles.length>0&&(e._mergeTile(e._rootTiles[0]),e._viewChangeUpdate())},getTiles:()=>e._allTiles.toArray(),getRenderedTiles(){_t.clear(),e._allTiles.forAll((e=>{e.visible&&e.rendered&&_t.push(e)}));const t=_t.toArray();return Ye(e.renderOrder,t),t},lockTilingScheme(t,i){e._extentHelper.defaultTiledLayersExtent=i,e.tilingSchemeLogic.test.lockTilingScheme(t)}}}checkAllTilesWaterproofness(){if(!Be)return;const e=this._rootTiles;if(null==e)return;const t=e=>e?.renderData?.geometry?.indices?.length>0,i=(e,i)=>{t(e)&&console.error("Tile[",e.lij,"] has geometry although parent[",i.lij,"] has geom")},r=e=>{if(e.intersectsClippingArea)if(e.renderData&&!e.renderData.geometryState&&console.error("Tile[",e.lij,"] has renderData but not geometryState"),e.renderData&&!e.renderData.geometry&&console.error("Tile[",e.lij,"] has renderData but not geometryInfo"),!e.renderData?.geometry||(e.renderData.geometry.indices?.length??0)>0||console.error("Tile[",e.lij,"] has renderData but no indices - geometryInfo: ",e.renderData.geometry),t(e)){e.checkGeometryWaterproofness();for(const t of e.children)i(t,e)}else if(e.isLeaf)console.error("Tile[",e.lij,"] has no geometry and no children, from root to leaf");else for(const t of e.children)r(t)},s=e=>{const t=e.parent?.visible??!0,i=e.visible;e.computeVisibility();const r=e.visible;if(i!==r&&t&&console.error(" Tile[",e.lij,"] has out of date visibility: ",i," instead of ",r),!e.isLeaf)for(const a of e.children)s(a)};for(const a of e)r(a),s(a)}get isGlobal(){return this._isGlobal}get isWebMercator(){return this._isWebMercator}get isWebMercatorOnPlateeCarree(){return this._isWebMercatorOnPlateeCarree}isEastEndWrap(e){return this.isGlobal&&e[2]===this.lijEastEnd(e[0])-1}isWestEndWrap(e){return this.isGlobal&&0===e[2]}lijEastEnd(e){return 2**(e+(null!=this.spatialReference&&this.spatialReference.isGeographic?1:0))}wrapEastWest(e){const t=this.lijEastEnd(e[0]),i=e[2];if(0<=i&&i<t)return e;if(!this.isGlobal)return null;const r=(i+(i<0?t:0))%t;return[e[0],e[1],r]}enableInternalChecks(e){ke(e)}enableWaterproofnessChecks(e){Ne(e)}};e([w()],nt.prototype,"_renderer",void 0),e([w({constructOnly:!0})],nt.prototype,"_scaleRangeQueries",void 0),e([w({constructOnly:!0})],nt.prototype,"view",void 0),e([w({constructOnly:!0})],nt.prototype,"overlayManager",void 0),e([w()],nt.prototype,"_hasPendingUpdates",void 0),e([w()],nt.prototype,"_asyncWorkItems",void 0),e([w()],nt.prototype,"_allTilesDirty",void 0),e([w()],nt.prototype,"_allTilesSorted",void 0),e([w()],nt.prototype,"_viewChanged",void 0),e([w()],nt.prototype,"_splitLimits",void 0),e([w({readOnly:!0})],nt.prototype,"_watchUpdatingTracking",void 0),e([w()],nt.prototype,"_frameTask",void 0),e([w({readOnly:!0})],nt.prototype,"snapLevel",null),e([w({readOnly:!0})],nt.prototype,"lodSnapping",null),e([w()],nt.prototype,"_userClippingExtent",null),e([w()],nt.prototype,"_rootTilesExtent",void 0),e([w({readOnly:!0})],nt.prototype,"extent",null),e([w({readOnly:!0})],nt.prototype,"groundExtent",null),e([w({readOnly:!0})],nt.prototype,"_tilingSchemeExtent",null),e([w({readOnly:!0})],nt.prototype,"updating",null),e([w({readOnly:!0})],nt.prototype,"running",null),e([w(J)],nt.prototype,"updatingProgress",void 0),e([w({readOnly:!0})],nt.prototype,"updatingProgressValue",null),e([w()],nt.prototype,"_maxNumUpdating",void 0),e([w()],nt.prototype,"baseOpacity",null),e([w()],nt.prototype,"hasCompositeBlendMode",void 0),e([w({readOnly:!0})],nt.prototype,"viewingMode",null),e([w()],nt.prototype,"maxTextureScale",void 0),e([w({readOnly:!0})],nt.prototype,"ready",null),e([w({value:he.FRONT_TO_BACK})],nt.prototype,"renderOrder",null),e([w({readOnly:!0})],nt.prototype,"rootTiles",null),e([w()],nt.prototype,"_rootTiles",void 0),e([w({readOnly:!0})],nt.prototype,"spatialReference",null),e([w({type:t})],nt.prototype,"backgroundColor",null),e([w({value:!1})],nt.prototype,"slicePlaneEnabled",null),e([w({readOnly:!0})],nt.prototype,"tilingScheme",void 0),e([w({readOnly:!0})],nt.prototype,"tilingSchemeLocked",null),e([w({readOnly:!0})],nt.prototype,"tilingSchemeLogic",void 0),e([w()],nt.prototype,"wireframe",null),e([w({value:!1})],nt.prototype,"suspended",null),e([w()],nt.prototype,"textureFadeDuration",null),e([w()],nt.prototype,"visibleElevationBounds",void 0),e([w()],nt.prototype,"rootTileElevationBounds",void 0),e([w()],nt.prototype,"_layerViewsDirty",void 0),e([w()],nt.prototype,"renderPatchBorders",null),e([w()],nt.prototype,"visualizeNormals",null),e([w()],nt.prototype,"renderingDisabled",null),nt=e([E("esri.views.3d.terrain.TerrainSurface")],nt);const lt=nt;function ot(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function ht(e){const t=e.children;if(!t[0])return!1;for(const i of t)if(i.shouldLoad)return!0;for(const i of t)if(ht(i))return!0;return!1}function dt(e){return e.isLeaf&&(e.parent?.shouldLoad??!1)}const pt=b(),ut=j(),ct=[0,0,0],_t=new u,gt={spatialReference:null,extent:j(),context:"ground"},mt={spatialReference:null,extent:null,scale:0};function Tt(e,t,i){for(const r of e){if(!r.containsPointXY(t,i))continue;let e=r;for(;e&&!e.renderData;){const r=(t>e.extentMidX?1:0)+(i<e.extentMidY?2:0);e=e.children[r]}const s=e?.renderData?.geometryState.samplerData??null;return te(t,i,s)}return null}export{lt as default};
5
+ import{_ as e}from"../../../chunks/tslib.es6.js";import t from"../../../Color.js";import i from"../../../core/Accessor.js";import{difference as r}from"../../../core/arrayUtils.js";import s from"../../../core/CollectionFlattener.js";import a from"../../../core/Evented.js";import n from"../../../core/Logger.js";import{clamp as l}from"../../../core/mathUtils.js";import{releaseMaybe as o,destroyMaybe as h}from"../../../core/maybe.js";import{MemCachePool as d}from"../../../core/MemCachePool.js";import p from"../../../core/ObjectPool.js";import u from"../../../core/PooledArray.js";import{throwIfAborted as c,isAbortError as _,isAborted as g,createAbortError as m}from"../../../core/promiseUtils.js";import{watch as T,syncAndInitial as y,sync as f,initial as v}from"../../../core/reactiveUtils.js";import{property as w}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/accessorSupport/ensureType.js";import"../../../core/has.js";import{subclass as E}from"../../../core/accessorSupport/decorators/subclass.js";import{m as S}from"../../../chunks/mat4.js";import{c as L}from"../../../chunks/mat4f64.js";import{c as D}from"../../../chunks/vec3.js";import{c as P}from"../../../chunks/vec3f64.js";import{c as b}from"../../../chunks/vec4f64.js";import{UpdatingHandles as x}from"../../../core/support/UpdatingHandles.js";import{getReferenceEllipsoid as U}from"../../../geometry/ellipsoidUtils.js";import{projectVectorToVector as R,projectPointToVector as C}from"../../../geometry/projection.js";import M from"../../../geometry/SpatialReference.js";import{create as j,equals as A,intersection as I,empty as O,expand as V,intersectsSphere as B}from"../../../geometry/support/aaBoundingRect.js";import{create as k,copy as N}from"../../../geometry/support/frustum.js";import{isPlateCarree as q}from"../../../geometry/support/spatialReferenceUtils.js";import{isRefreshableLayer as F}from"../../../layers/mixins/RefreshableLayer.js";import{ElevationQueryTileCache as G}from"../../../layers/support/ElevationQueryTileCache.js";import{ElevationTileData as W}from"../../../layers/support/ElevationTileData.js";import{isBaseLayer as H}from"../../../layers/support/layerUtils.js";import{acquireDecoder as Q}from"../../../layers/support/LercDecoder.js";import{printAllocations as z}from"../../2d/engine/vectorTiles/VectorTile.js";import{directionToHeadingTilt as X}from"../support/cameraUtils.js";import Y from"../support/debugFlags.js";import{toBoundingRect as $}from"../support/extentUtils.js";import{ClientType as K}from"../support/index.js";import{updatingProgress as J}from"../support/updatingProperties.js";import{ElevationBounds as Z}from"./ElevationBounds.js";import{ElevationData as ee,sampleElevation as te}from"./ElevationData.js";import{create as ie}from"./ExtentHelper.js";import{LODSnapping as re,TextureUpdate as se}from"./interfaces.js";import{LayerClass as ae,LayerClasses as ne}from"./LayerClass.js";import{OverlayManager as le}from"./OverlayManager.js";import{PlanarPatch as oe}from"./PlanarPatch.js";import{RenderOrder as he}from"./RenderOrder.js";import{ScaleRangeQueries as de}from"./ScaleRangeQueries.js";import{SphericalPatch as pe}from"./SphericalPatch.js";import{SplitLimits as ue}from"./SplitLimits.js";import{MAX_ROOT_TILES as ce,TOO_MANY_ROOT_TILES_AFTER_CHANGE_ERROR as _e,TOO_MANY_ROOT_TILES_FOR_LAYER_ERROR as ge,MAX_MEMORY_LOD_BIAS as me,ELEVATION_NODATA_VALUE as Te}from"./TerrainConst.js";import{TerrainRenderer as ye,TransparencyMode as fe}from"./TerrainRenderer.js";import ve from"./TerrainSurfacePerformanceInfo.js";import{weakAssert as we,internalAssert as Ee,oppositeEdge as Se,isSurfaceLayerView as Le,isGroupLayerView as De,isMapTileLayerView as Pe,isBlendableLayerView as be,isElevationLayerView as xe,isVectorTileLayerView as Ue,useFetchTileForLayer as Re,isImageryTileLayerView as Ce,isTileLayerView as Me,releaseTileData as je,neighborCornerIndices as Ae,oppositeCorner as Ie,neighborEdgeIndices as Oe,ENABLE_TERRAIN_INTERNAL_CHECKS as Ve,ENABLE_WATERPROOFNESS_TESTS as Be,enableTerrainInternalChecks as ke,enableTerrainWaterproofnessChecks as Ne}from"./terrainUtils.js";import{Tile as qe}from"./Tile.js";import{printAllocations as Fe}from"./TilePerLayerInfo.js";import{TileUpdate as Ge}from"./TileUpdate.js";import{IteratorPreorder as We,IteratorPostorder as He,compareTilesByLij as Qe,hasLoadableSiblings as ze,sortTilesByPOI as Xe,sortTiles as Ye}from"./tileUtils.js";import{TilingSchemeLogic as $e}from"./TilingSchemeLogic.js";import{UpsampleInfo as Ke}from"./UpsampleInfo.js";import{isCompositeBlendMode as Je,blendModeFromString as Ze}from"../webgl-engine/core/shaderLibrary/output/BlendOptions.js";import{PBRMode as et}from"../webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRenderingParameters.glsl.js";import{RenderRequestType as tt}from"../webgl-engine/lib/basicInterfaces.js";import{RenderState as it}from"../../support/RenderState.js";import{ImmediateTask as rt,TaskPriority as st,noBudget as at}from"../../support/Scheduler.js";let nt=class extends(a.EventedMixin(i)){constructor(e){super(e),this._scaleRangeQueries=new de,this._iteratorPool=new p(We,(e=>e.remove=()=>this._iteratorPool.release(e))),this._postorderIterator=new He,this._hasPendingUpdates=!1,this._pendingUpdates=0,this._asyncWorkItems=0,this._allTilesDirty=!0,this._allTilesSorted=!0,this._visibleCached=!1,this._usedMemory=null,this._performanceInfo=new ve,this._viewChanged=!1,this._inFrameTask=!1,this._viewChangeUpdateDirty=!1,this._eyePosRenderSR=P(),this._eyePosSurfaceSR=P(),this._splitLimits=new ue,this._frustum=k(),this._viewProjectionMatrix=L(),this._layerViews=[new Array,new Array],this._layerIndexByUid=[new Map,new Map],this._basemapLayerViewHandles=new Map,this._watchUpdatingTracking=new x,this._frameTask=rt,this._allTiles=new u,this._upsampleInfoPool=new p(Ke),this._rootTilesExtent=j(),this.updatingProgress=.5,this._maxNumUpdating=1,this.maxTextureScale=1.2,this._spatialReference=M.WebMercator,this.visibleElevationBounds=new Z(1/0,-1/0),this.rootTileElevationBounds=new Z(1/0,-1/0),this._updatingRootTiles=!1,this._pendingTilesForElevationUpdateEvent=new Set,this._pendingTilesToUpdate=new Set,this.totalGeometryUpdates=0,this.totalTileUpdates=0,this.oneBatchPerFrameTask=!0,this._layerViewsDirty=!1,this.unloadedMemory=0,this.ignoresMemoryFactor=!1,this._isWebMercator=!1,this._isWebMercatorOnPlateeCarree=!1,this.overlayManager=new le({...e,surface:this}),this._isGlobal=!e.view?.state?.isLocal}initialize(){this._lercDecoder=Q(this.view.resourceController),this._tilePool=this.view.state.isLocal?new p(oe):new p(pe);const e=this.view.resourceController.memoryController;this._upsampleMapCache=e.newCache("terrain-upsample",(e=>e.unloadMapData())),this._elevationQueryCache=new G(e.newCache("elevation-query")),this._tileTextureCache=new d(((t,i)=>e.newCache(t,i)),"TileTexture"),this.addHandles([T((()=>this.overlayManager.hasHighlights),(e=>this._renderer.setNeedsHighlight(e))),T((()=>this.overlayManager.rendersOccluded),(e=>this._renderer.setRenderOccludedOverlay(e))),T((()=>this.overlayManager.renderer.isEmpty),(()=>this._evaluateTransparency()))],"overlayManager"),this._renderer=new ye({_overlayRenderer:this.overlayManager.renderer,_ellipsoidRadius:U(this.view.spatialReference).radius,_stage:this.view._stage,_allTiles:this._allTiles,_cache:this._tileTextureCache}),this.addHandles([T((()=>this.baseOpacity),(()=>{this._handleLayerViewChanges(),this._updateTileTextures(this._evaluateTransparency()?se.UNFADED:se.IMMEDIATE)}),y),T((()=>this.hasCompositeBlendMode),(()=>this._updateTileTextures(this._evaluateTransparency()?se.UNFADED:se.IMMEDIATE)),y),T((()=>this.renderingDisabled),(()=>this.view?._stage?.renderer.setParameters({terrainRenderingEnabled:!this.renderingDisabled})),f),T((()=>this.backgroundColor),(e=>{this._handleLayerViewChanges(),this._renderer.updateTileBackground(e)}),y),T((()=>this.snapLevel),(()=>this._viewChanged=!0),f),T((()=>this.view.pointsOfInterest),(e=>{this._renderer.pointsOfInterest=e,this._watchUpdatingTracking.removeAll(),e&&this._watchUpdatingTracking.add((()=>e.focus.renderLocation),(()=>this._allTilesSorted=!1))})),T((()=>Y.TERRAIN_TILE_TREE_SHOW_TILES),(e=>{e&&!this._treeDebugger?import("../layers/support/TerrainTileTree3DDebugger.js").then((({TerrainTileTree3DDebugger:e})=>{!this._treeDebugger&&Y.TERRAIN_TILE_TREE_SHOW_TILES&&(this._treeDebugger=new e({view:this.view}))})):e||(this._treeDebugger=h(this._treeDebugger))}),v)]);const{spatialReference:t}=this.view;this._extentHelper=ie(this.viewingMode,{layers:this.view.map.allLayers,layerViews:this.view.allLayerViews,viewSpatialReference:t});const i=new s({getCollections:()=>this.view?.defaultsFromMap?.mapCollections?.map((({layers:e})=>e)),getChildrenFunction:e=>e&&"layers"in e?e.layers:null}),r=new $e({layers:i,extentHelper:this._extentHelper,viewingMode:this.viewingMode,viewSpatialReference:t});this._set("tilingSchemeLogic",r),this._updateTilingScheme(),this._elevationDataRequester=this.view.resourceController.createStreamDataRequester(K.ELEVATION),this._mapDataRequester=this.view.resourceController.createStreamDataRequester(K.BASEMAP);const a=this.view.resourceController.scheduler;this._frameTask=a.registerTask(st.TERRAIN_SURFACE,this),this.addHandles([T((()=>this._extentHelper.stencilEnabledExtents),(e=>this._renderer.setStencilEnabledLayerExtents(e)),v),T((()=>this.tilingSchemeLogic.tilingScheme),(()=>this._updateTilingScheme()),f),T((()=>this.extent),(()=>this._updateRootTiles()),v),this.view.on("resize",(()=>this._viewChangeUpdate())),T((()=>{const e=this.view,t=e.state;return[this._lodBias,this.lodSnapping,e.quality,t.camera,t.contentCamera,t.fixedContentCamera]}),(()=>this._viewChangeUpdate()),y),T((()=>this.view.qualitySettings?.tiledSurface?.textureFadeDuration),(e=>this._renderer.textureFadingEnabled=e>0),v),T((()=>this.view.qualitySettings?.physicallyBasedRenderingEnabled),(e=>this._renderer.pbrMode=e?et.Terrain:et.Disabled),v),T((()=>this._userClippingExtent),(()=>this._updateClippingExtent()),f)]),this.addHandles(this.view.allLayerViews.on("after-changes",(()=>this._layerViewsDirty=!0))),this._layerViewsDirty=!0,this._handleLayerViewChanges()}destroy(){this._frameTask.remove(),this._watchUpdatingTracking.destroy(),this._lercDecoder=o(this._lercDecoder),this._removeAllTiles(),this._set("tilingSchemeLogic",h(this.tilingSchemeLogic)),this._basemapLayerViewHandles.forEach(((e,t)=>this._unregisterTiledLayerView(t))),this._elevationDataRequester=null,this._mapDataRequester=null,this._set("overlayManager",h(this.overlayManager)),this._tilePool=h(this._tilePool),qe.prune(),this._treeDebugger=h(this._treeDebugger),this._renderer=h(this._renderer),this._iteratorPool=h(this._iteratorPool),this._upsampleMapCache=h(this._upsampleMapCache),this._elevationQueryCache=h(this._elevationQueryCache),this._tileTextureCache=h(this._tileTextureCache),this._set("view",null),this._extentHelper=h(this._extentHelper),this._upsampleInfoPool=h(this._upsampleInfoPool),z(),Fe()}get renderer(){return this._renderer}get frustum(){return this._frustum}get snapLevel(){if(this.lodSnapping===re.ON){const e=this.view,t=this.tilingScheme,i=e.pointsOfInterest?.cameraOnSurface?.scale;if(t&&i){const r=e.state.contentCamera;let s=X(e,r.eye,r.viewForward,r.up).tilt;s>90&&(s=180-s);const a=2*(s/90)**2,n=t.levelAtScale(i)-a,l=Math.min(n+e.qualitySettings.tiledSurface.lodBias,this._splitLimits.maxLod||1/0);return l<=0?null:l}}return null}get lodSnapping(){return this.view.qualitySettings.tiledSurface.reduceTileLevelDifferences?re.ON:re.OFF}get upsampleInfoPool(){return this._upsampleInfoPool}get upsampleMapCache(){return this._upsampleMapCache}get elevationQueryCache(){return this._elevationQueryCache}get mapTileRequester(){return this._mapDataRequester}get _userClippingExtent(){const{spatialReference:e}=this,{clippingArea:t}=this.view;if(null==t||null==e)return null;const i=j(),r=$(t,i,e)?i:null,s=this._get("extent");return A(r,s)?s:r}get rootTilesExtent(){return this._rootTilesExtent}get extent(){const e=I(this.groundExtent,this._userClippingExtent,j()),t=this._get("extent");return A(e,t)?t:e}get groundExtent(){return null!=this._tilingSchemeExtent?this._tilingSchemeExtent:this._rootTilesExtent}get _tilingSchemeExtent(){return this.tilingSchemeLogic?.extent}get updating(){return this._hasPendingUpdates||(this._maxNumUpdating=1),!!((this.running||this._watchUpdatingTracking?.updating||this._asyncWorkItems>0)&&this.ready&&!this.suspended||this.overlayManager?.updating)}get running(){return(this._hasPendingUpdates||this._viewChanged||this._allTilesDirty||!this._allTilesSorted||this._layerViewsDirty||this._scaleRangeQueries.updating||this._frameTask.updating)&&this.ready&&!this.suspended}get updatingProgressValue(){return this._maxNumUpdating=Math.max(this._pendingUpdates,this._maxNumUpdating),1-this._pendingUpdates/this._maxNumUpdating}get baseOpacity(){return this.view?.map?.ground?.opacity??1}set baseOpacity(e){this.view.map.ground.opacity=e}get viewingMode(){return this.view.state.viewingMode}get ready(){return null!=this._rootTiles}set renderOrder(e){this._renderer.renderOrder=e,this._set("renderOrder",e)}get rootTiles(){return this._rootTiles}get spatialReference(){return this.tilingScheme?.spatialReference??null}get backgroundColor(){return this.view?.map?.ground?.surfaceColor}set backgroundColor(e){this.view.map.ground.surfaceColor=e}set slicePlaneEnabled(e){this._renderer.slicePlaneEnabled=e,this._set("slicePlaneEnabled",e),this._evaluateTransparency()}get tilingSchemeLocked(){return this.tilingSchemeLogic?.tilingSchemeLocked??!1}get wireframe(){return this._renderer?.wireframe}set wireframe(e){e!==this._renderer.wireframe&&(this._renderer.wireframe=e,this._updateAllTileGeometries())}set _visible(e){e!==this._visibleCached&&(this._visibleCached=e,this._renderer.setVisibility(e),this.suspended=!e)}get opaque(){return this._renderer.transparency===fe.Opaque}set suspended(e){this._set("suspended",e),this._viewChangeUpdate()}get textureFadeDuration(){return this.view.qualitySettings.tiledSurface.textureFadeDuration??0}intersect(e,t,i,r){this._renderer.intersect(e,t,i,r)}getElevation(e,t,i,r){const s=this._rootTiles;if(null==s||!s.length)return null;if(0===s[0].layerInfo[ae.ELEVATION].length)return null;const a=pt;if(a[0]=e,a[1]=t,a[2]=i,!R(a,r,a,this._spatialReference))return n.getLogger(this).error("TerrainSurface.getElevation(): could not project given point to tiling scheme coordinate system"),null;return Tt(s,a[0],a[1])}getElevations(e,t,i){const r=this._rootTiles,s=r?r[0].layerInfo[ae.ELEVATION].length:0;if(null!=r&&r.length&&0!==s)for(let a=0;a<t;++a){const t=3*a;i(a,Tt(r,e[t],e[t+1]))}else for(let a=0;a<t;++a)i(a,null)}getScale(e){if(!this.tilingScheme)return null;if(!C(e,pt,this.spatialReference))return n.getLogger(this).error("TerrainSurface.getScale(): could not project given point to tiling scheme coordinate system"),null;const t=this._rootTiles;if(null!=t)for(const i of t)if(i?.containsPoint(pt)){let e=i;for(;e.children[0]&&!e.rendered;){const t=e.children[0].extent;let i=0;pt[0]>t[2]&&(i+=1),pt[1]<t[1]&&(i+=2),e=e.children[i]}return this._getLodBiasCorrectedScale(e.level)}return 1/0}getSphereElevationBounds(e,t){if(pt[0]=e[0],pt[1]=e[1],pt[2]=e[2],pt[3]=e[3],!R(pt,t,pt,this.tilingScheme?.spatialReference))return n.getLogger(this).error("TerrainSurface.getSphereElevationBounds(): could not project given point to tiling scheme coordinate system"),null;let i=1/0,r=-1/0;const s=e=>{if(e&&B(e.extent,pt))if(e.isLeaf||e.rendered)i=Math.min(i,e.elevationBounds[0]),r=Math.max(r,e.elevationBounds[1]);else for(const t of e.children)s(t)},a=this._rootTiles;if(null!=a)for(const n of a)s(n);return{min:i,max:r}}getSphereScale(e,t){if(!this.tilingScheme)return null;if(!C(e,pt,this.spatialReference))return n.getLogger(this).error("TerrainSurface.getSphereScale(): could not project given point to tiling scheme coordinate system"),null;pt[3]=t;let i=null;const r=e=>{if(e&&B(e.extent,pt)){const t=e.children;if(t[0]&&!e.rendered)for(const e of t)r(e);else{const t=this._getLodBiasCorrectedScale(e.level);i=null==i?t:Math.min(i,t)}}},s=this._rootTiles;if(null!=s)for(const a of s)r(a);return i}queryVisibleScaleRange(e,t,i,r){const s=t?this.tilingScheme.levelAtScale(t):0,a=i?this.tilingScheme.levelAtScale(i):1/0,n=this._lodBias;this._scaleRangeQueries.queryVisibleLevelRange(e,s+n,a+n,r)}_evaluateTransparency(){const e=this.baseOpacity,t=this.overlayManager.renderer.isEmpty,i=this._renderer.transparency,r=this._allSurfaceLayersTransparent()?t?fe.Empty:fe.TransparentWithDraped:e>=1&&!this.hasCompositeBlendMode&&!this._renderer.slicePlaneEnabled?fe.Opaque:fe.Semitransparent,s=i!==r;return s&&(this._renderer.transparency=r,this.view?._stage?.renderer.setParameters({terrainTransparency:this._renderer.transparency})),s}_updateTilingScheme(){const e=this.tilingSchemeLogic.tilingScheme;if(!(e!==this.tilingScheme))return;we(!!e,"tiling scheme cannot be reset to undefined"),this._isGlobal=!this.view?.state?.isLocal,this.tilingScheme&&this._removeAllTiles();const t=e?.spatialReference??M.WebMercator;this._spatialReference=t,this._isWebMercator=!!t?.isWebMercator,this._isWebMercatorOnPlateeCarree=this._isWebMercator&&q(this.view?.renderSpatialReference),this._set("tilingScheme",e),this._updateClippingExtent(),e&&(this._updateTiledLayers(),this._renderer.setTileSize(e.pixelSize),this.overlayManager.setSpatialReference(e.spatialReference),this._updateRootTiles())}_acquireTile(e,t,i,r){const s=this._tilePool.acquire();return ct[0]=e,ct[1]=t,ct[2]=i,s.init(ct,r,this),s}get updatingRootTiles(){return this._updatingRootTiles}_updateRootTiles(){const{extent:e,tilingScheme:t}=this;if(!t)return;const i=ut;let s=t.rootTilesInExtent(e,i,5*ce);if(null!=this._rootTiles){if(s.length>ce)return void n.getLogger(this).warn(_e);const e=this._rootTiles.map((e=>e.lij)),t=r(e,s,ot);if(this._updatingRootTiles=!0,t.removed.length>0||t.added.length>0){const e=this._rootTiles.filter((e=>!(t.removed.findIndex((t=>ot(t,e.lij)))>-1)||(this._purgeTile(e),!1)));t.added.forEach((t=>e.push(this._newRootTile(t)))),this._setRootTiles(e)}}else this._updatingRootTiles=!0,s.length>ce&&(n.getLogger(this).warn(ge),s=t.rootTilesInExtent(e,i,ce)),this._setRootTiles(s.map((e=>this._newRootTile(e))));A(i,this._rootTilesExtent)||(this._rootTilesExtent=j(i)),this._visible=!0,this._viewChangeUpdate(),this.overlayManager.setPlacementDirty(),this.notifyChange("ready"),this._updateAllTileGeometries(),this._updatingRootTiles=!1,this.checkAllTilesWaterproofness()}_updateAllTileGeometries(){const e=this._allTiles.filter((e=>e.isLoaded&&e.intersectsClippingArea));e.forEach((e=>this._renderer.updateTileGeometryState(e))),e.forEach((e=>e.renderData.updateNeighborData())),this._updateTilesGeometries(e),this._pendingTilesToUpdate.clear()}_updateTilesGeometries(e){if(0===e.length)return;e.sort(Qe);const t=this.renderer;e.forEach((e=>t.updateGeometryIfNeeded(e))),e.forEach((e=>this._pendingTilesForElevationUpdateEvent.add(e)))}_shouldSplit(e){return e.shouldSplit(this._splitLimits,this._eyePosRenderSR,this.snapLevel)===Ge.SPLIT}_newRootTile(e){const t=this._acquireTile(0,e[1],e[2],null);return this._shouldSplit(t)&&t.setPendingUpdate(Ge.SPLIT),this._loadTile(t),this._markTileToUpdate(t),this._updateRootTileElevationBounds(),t}_setRootTiles(e){if(this._rootTiles=e,this._allTiles.clear(),null!=e){const t=this._iteratorPool.acquire();for(t.reset(e);!t.done;)this._allTiles.push(t.next());t.remove()}this._renderer.setRootTiles(this._rootTiles),this._updateTilesVisibility(e)}_runViewChangeUpdateIfDirty(){this._viewChangeUpdateDirty&&(this._viewChangeUpdateDirty=!1,this._viewChangeUpdate())}_viewChangeUpdate(){this.view&&!this.suspended&&this.tilingScheme&&this._visibleCached&&(this._inFrameTask?this._viewChangeUpdateDirty=!0:(this._viewChangeUpdateDirty=!1,this._updateViewDependentParameters(),this._updateTilesVisibility(this._rootTiles)))}_updateClippingStatus(e){e.updateClippingStatus(this.extent)&&e.resetPendingUpdate(Ge.GEOMETRY)&&this._updateTileGeometryState(e)}_updateTilesVisibility(e){if(null==e)return;const t=ze(e),i=this.visibleElevationBounds;let r=t?i.min:1/0,s=t?i.max:-1/0;const a=this.extent,n=this._viewProjectionMatrix;this.setTileTreeDirty();const l=this._iteratorPool.acquire();for(l.reset(e);!l.done;){const e=l.next();e.updateClippingStatus(a)&&e.resetPendingUpdate(Ge.GEOMETRY)&&this._updateTileGeometryState(e),e.setPendingUpdate(Ge.RENDERDATA),e.computeVisibility(),e.updateScreenDepth(n),e.renderData&&(r=Math.min(e.elevationBounds[0],r),s=Math.max(e.elevationBounds[1],s))}l.remove(),this._viewChanged=!0,this._allTilesDirty=!0,this._batchUpdatePendingTileGeometries(),isFinite(r)&&isFinite(s)&&(i.min!==r||i.max!==s)&&(this.visibleElevationBounds=new Z(r,s))}_updateRootTileElevationBounds(){let e=1/0,t=-1/0;const i=this._rootTiles;null!=i&&i.forEach((({elevationBounds:i})=>{e=Math.min(e,i[0]),t=Math.max(t,i[1])}));const r=this.rootTileElevationBounds;r.min===e&&r.max===t||(this.rootTileElevationBounds=new Z(e,t))}_updateViewDependentParameters(){const{camera:e,contentCamera:t}=this.view.state,i=Math.tan(.5*t.fovX),r=Math.tan(.5*t.fovY),s=this.tilingScheme.pixelSize,a=2**-this._lodBias*e.pixelRatio;this._splitLimits.aboveGround=e.aboveGround,this._splitLimits.fovX=i,this._splitLimits.fovY=r,this._splitLimits.relativeWidthLimit=s/e.width*this.maxTextureScale*a,this._splitLimits.relativeHeightLimit=s/e.height*this.maxTextureScale*a,this._splitLimits.maxLod=this.tilingScheme.getMaxLod(),this._splitLimits.angledSplitBias=this.view.qualitySettings.tiledSurface.angledSplitBias,this.view.state.fixedContentCamera?(null==this._splitLimits.frustum&&(this._splitLimits.frustum=k()),N(this._splitLimits.frustum,t.frustum)):this._splitLimits.frustum=null,N(this._frustum,e.frustum),S(this._viewProjectionMatrix,t.projectionMatrix,t.viewMatrix),D(this._eyePosRenderSR,t.eye),R(e.eye,this.view.renderSpatialReference,this._eyePosSurfaceSR,this.spatialReference)}_updateRenderData(e){e.rendered&&!e.shouldLoad&&(ht(e)?this._loadChildren(e):dt(e)&&this._loadParent(e))}_updateTileGeometryState(e){e.updateVisibility();this._renderer.updateTileGeometryState(e)&&this._markTileToUpdate(e),this._usedMemory=null}_markAllTileNeighborsForGeometryUpdate(e){const t=this._pendingTilesToUpdate;e.forEachLoadedNeighbor((e=>{t.add(e)}))}_updateTileTexture(e,t){const i=e.resetPendingUpdate(Ge.TEXTURE_FADING)?Ge.TEXTURE_FADING:!!e.resetPendingUpdate(Ge.TEXTURE_NOFADING)&&Ge.TEXTURE_NOFADING;i&&(this._renderer.updateTileTexture(e,i),this._usedMemory=null,t.madeProgress())}_emitElevationUpdateEventForTiles(){const e=gt.extent;O(e),this._pendingTilesForElevationUpdateEvent.forEach((t=>V(e,t.extent,e))),this._pendingTilesForElevationUpdateEvent.clear(),gt.spatialReference=this.spatialReference,this.emit("elevation-change",gt)}runTask(e){this._handleLayerViewChanges(e),this._frameTask.processQueue(e),this.renderer.processScaleRangeQueries(this._scaleRangeQueries,e),this._inFrameTask=!0,this._pendingUpdates=0,this._hasPendingUpdates=!1,this._updateAllTilesStatus(e),this._sortTiles(e);const t=!this.view.state.fixedContentCamera;this._mergeAndSplit(e,t),this._updateElevation(e),this._updateTextures(e),t||this._mergeAndSplit(e,!0),this._inFrameTask=!1,this._runViewChangeUpdateIfDirty(),this._batchUpdatePendingTileGeometries(),this._emitElevationUpdateEventForTiles(),e.done&&e.hasProgressed&&this.requestUpdate(),this.notifyChange("updatingProgressValue")}_updateAllTilesStatus(e){if(!this._viewChanged||!this._rootTiles||e.done)return;this._viewChanged=!1;const t=this._iteratorPool.acquire();t.reset(this._rootTiles);const i=this.snapLevel,r=this._splitLimits,s=this._eyePosRenderSR;for(;!t.done;){const e=t.next(),a=e.shouldSplit(r,s,i);if(a!==Ge.SPLIT){if(e.resetPendingUpdate(Ge.SPLIT)&&e.updateAgentSuspension(),a===Ge.ELEVATION&&e.updateAgents(ae.ELEVATION),t.skipSubtree(),!e.isLeaf){e.setPendingUpdate(Ge.MERGE),e.resetPendingUpdate(Ge.SPLIT);const t=this._iteratorPool.acquire();t.resetOne(e);const i=this._viewProjectionMatrix;for(let e=t.next();!t.done;e=t.next())this._updateClippingStatus(e),e.updateVisibility(),e.updateScreenDepth(i);t.remove()}}else e.resetPendingUpdate(Ge.MERGE),e.isLeaf&&(e.setPendingUpdate(Ge.SPLIT),t.skipSubtree()),e.rendered&&e.setPendingUpdate(Ge.RENDERDATA)}t.remove(),this.requestUpdate(),(this.shortBatches||!this.oneBatchPerFrameTask)&&this._batchUpdatePendingTileGeometries(),e.madeProgress()}_sortTiles(e){e.done||this._allTilesSorted||(Xe(this._allTiles,this.view.pointsOfInterest.focus.renderLocation),this._allTilesSorted=!0,this._treeDebugger&&this._treeDebugger.update(),e.madeProgress())}_markTileToUpdate(e){Ee(e.isLoaded),e.intersectsClippingArea&&(this._pendingTilesToUpdate.add(e),this._markAllTileNeighborsForGeometryUpdate(e))}_batchUpdatePendingTileGeometries(){const e=this._pendingTilesToUpdate;if(0===e.size)return;const t=Array.from(this._pendingTilesToUpdate.keys()).filter((e=>e.isLoaded&&e.intersectsClippingArea)),i=(i,r)=>{!r?.isLoaded||!r.intersectsClippingArea||r.level<i.level||e.has(r)||(e.add(r),t.push(r),r.renderData.updateNeighborData())};t.sort(Qe);const r=t.length;for(let s=0;s<r;++s){const r=t[s];Ee(r.isLoaded),Ee(r.intersectsClippingArea);const a=r.renderData;a.updateNeighborData();const n=a._dirtyEdgeResolutions,l=a.geometryState.neighborData.cornerPeerNeighbors,o=e=>{const t=Ae[e];i(r,l[e]?.findCorner(Ie(t),(e=>e.isLoaded)))};for(let t=0;t<4;++t)if(n&1<<t){const s=a.geometryState.neighborData.edgePeerNeighbors[t];s&&s?.level>=r.level&&s.forAllSubtreeOnSide(Se(Oe[t]),(t=>!(!t.isLoaded||!t.intersectsClippingArea)&&(Ee(e.has(t)||Qe(r,t)<0),i(r,t),!0))),o((t+1)%4),o(t)}}e.clear(),this._updateTilesGeometries(t),Ve&&Be&&this.checkAllTilesWaterproofness()}_mergeAndSplit(e,t){if(this.suspended||e.done||!this._allTilesDirty)return;this._allTilesDirty=!1,this.requestUpdate();let i=!1;const r=this.view.state.fixedContentCamera;let s=!1;for(;!e.done;){s=!0;let a=!1;const n=!this._allTiles.some((s=>{if(!i&&!r&&!s.visible)return e.done;let n=s;if(s.resetPendingUpdate(Ge.MERGE)){if(!t)return s.setPendingUpdate(Ge.MERGE),e.done;for(;n.parent?.resetPendingUpdate(Ge.MERGE);)n=n.parent;this._mergeTile(n),a=!0,e.madeProgress()}else s.resetPendingUpdate(Ge.SPLIT)&&(this._splitTile(s),a=!0,e.madeProgress());return!e.done&&n===s&&s.resetPendingUpdate(Ge.RENDERDATA)&&(this._updateRenderData(s),e.madeProgress()),e.done}));if(a&&(this._allTilesSorted=!1,this._allTilesDirty=!0),n){if(!i){i=!0;continue}if(!a)break}else this._allTilesDirty=!0}s?e.madeProgress():this._allTilesDirty=!0,!this.oneBatchPerFrameTask&&this._batchUpdatePendingTileGeometries(),this._sortTiles(e)}_updateElevation(e){e.done||(this._allTiles.some((t=>(t.resetPendingUpdate(Ge.GEOMETRY)&&(this._updateTileGeometryState(t),this._updateTileTexture(t,e),this.shortBatches&&this._batchUpdatePendingTileGeometries(),e.madeProgress()),e.done))),!this.oneBatchPerFrameTask&&this._batchUpdatePendingTileGeometries())}_updateTextures(e){e.done||this._allTiles.some((t=>(this._updateTileTexture(t,e),e.done)))}_updateClippingExtent(){this.spatialReference&&(this.updateTileOverlayParams(tt.UPDATE),this.overlayManager.setPlacementDirty(),this._updateRootTiles())}get _lodBias(){const e=this.view.quality;return this.view.qualitySettings.tiledSurface.lodBias-(1-e)*me}_getLodBiasCorrectedScale(e){const t=this.tilingScheme.levels,i=l(e-this._lodBias,0,t.length-1),r=i-Math.floor(i);return t[Math.floor(i)].scale*(1-r)+t[Math.ceil(i)].scale*r}_removeAllTiles(){null!=this._rootTiles&&(this._rootTiles.forEach((e=>this._purgeTile(e))),this._setRootTiles(null),this.notifyChange("ready")),this._allTiles.clear(),this._visible=!1}_purgeDescendantTiles(e){if(!e.children[0])return!1;let t=!1;for(let i=0;i<4;++i)t=this._purgeTile(e.children[i])||t;return e.unsetChildren(),t}_purgeTile(e){const t=this._purgeDescendantTiles(e)||e.rendered;return this._allTiles.removeUnordered(e),this._unloadTile(e),this._tilePool.release(e),t}_unloadTile(e){this._pendingTilesToUpdate.delete(e),this._pendingTilesForElevationUpdateEvent.delete(e),e.unload(this._renderer)}_splitTile(e){we(e.isLeaf,"tile that is already split should not be split again!");const t=e.level+1,i=2*e.lij[1],r=2*e.lij[2];e.setChildren(this._createTile(t,i,r,e),this._createTile(t,i,r+1,e),this._createTile(t,i+1,r,e),this._createTile(t,i+1,r+1,e)),e.setPendingUpdate(Ge.RENDERDATA),e.updateAgentSuspension(),this._allTiles.pushArray(e.children),this._allTilesDirty=!0,++this._performanceInfo.numSplit}_emitTileScaleChange(e,t=e.level){mt.spatialReference=this.spatialReference,mt.extent=e.extent,mt.scale=this._getLodBiasCorrectedScale(t),this.emit("scale-change",mt)}_createTile(e,t,i,r){we(!!r,"_createTile sanity check");const s=this._acquireTile(e,t,i,r);return s.updateClippingStatus(this.extent),s.updateScreenDepth(this._viewProjectionMatrix),this._shouldSplit(s)&&s.setPendingUpdate(Ge.SPLIT),s}get shortBatches(){return this.view.state.mode!==it.IDLE}_mergeTile(e){we(!e.hasPendingUpdate(Ge.SPLIT),"_mergeTile sanity check"),this._purgeDescendantTiles(e)&&(we(!e.renderData,"_mergeTile sanity check"),this._loadTile(e),this._markTileToUpdate(e),this._emitTileScaleChange(e),this.shortBatches&&this._batchUpdatePendingTileGeometries()),this._allTilesDirty=!0,++this._performanceInfo.numMerged}_loadChildren(e){we(e.rendered,"parent should be rendered"),this._unloadTile(e);const t=e.children;t.forEach((e=>this._loadTile(e))),t.forEach((e=>this._pendingTilesToUpdate.add(e))),this._markAllTileNeighborsForGeometryUpdate(e),this._emitTileScaleChange(e,e.level+1),this.shortBatches&&this._batchUpdatePendingTileGeometries()}_loadParent(e){const t=e.parent;this._unloadChildren(t),this._loadTile(t),this._markTileToUpdate(t),this._emitTileScaleChange(t,t.level),this.shortBatches&&this._batchUpdatePendingTileGeometries()}_unloadChildren(e){const t=e.children;if(t[0])for(let i=0;i<4;++i){const e=t[i];this._unloadChildren(e),this._unloadTile(e)}}_loadTile(e){e.load(),e.setPendingUpdate(Ge.RENDERDATA),this.requestUpdate(),this._allTilesDirty=!0,this.overlayManager&&this.overlayManager.hasOverlays&&this.overlayManager.setTileParameters(e)}_elevationDataArrived(e,t,i){const r=new ee(e.lij,e.extent,i);e.dataArrived(t,ae.ELEVATION,r);const s=[e],a=e.level,n=this._iteratorPool.acquire();for(n.reset(s);!n.done;){const e=n.next();e.findElevationBoundsForLayer(t,a),e.computeElevationBounds()}0===a&&this._updateRootTileElevationBounds(),n.remove(),this._updateTilesVisibility(s)}_handleLayerViewChanges(e=at){if(!this._layerViewsDirty)return;this._layerViewsDirty=!1;let t=!1;const i=new Set;let r=-1;for(const s of this.view.allLayerViews.items)if(i.add(s.uid),Le(s)||De(s))if(this._basemapLayerViewHandles.has(s.uid)&&!De(s)){const e=this._layerClassFromLayerView(s),i=this._getLayerIdxByUID(e,s.uid);null!=i&&((i<r||null==r)&&(t=!0),r=i)}else this._registerTiledLayerView(s),s.layer.loaded&&(t=!0);this._basemapLayerViewHandles.forEach(((e,r)=>{i.has(r)||(this._unregisterTiledLayerView(r),t=!0)})),t&&this._updateTiledLayers(),this.hasCompositeBlendMode=this._hasCompositeBlendMode(),this._evaluateTransparency(),e.madeProgress()}_allSurfaceLayersTransparent(){let e=0===this.view.map?.ground?.opacity;for(const t of this.view.allLayerViews.items)if(Pe(t)&&!H(t.layer)&&0!==t.fullOpacity)return e=!1,e;return e}_hasCompositeBlendMode(){for(const e of this.view.allLayerViews.items)if((be(e)||De(e))&&Je(Ze[e.layer.blendMode]))return!0;return!1}_layerClassFromLayerView(e){return xe(e)?ae.ELEVATION:ae.MAP}_registerTiledLayerView(e){const t=[];if((be(e)||De(e))&&t.push(T((()=>e.layer.blendMode),(()=>{this.hasCompositeBlendMode=this._hasCompositeBlendMode(),this._updateTileTextures(se.UNFADED)}))),!De(e)){const i=this._layerClassFromLayerView(e);t.push(T((()=>e.suspended),(()=>this._updateTiledLayers()))),t.push(T((()=>e.fullOpacity),(()=>this._updateTileTextures(se.UNFADED)))),t.push(T((()=>"effectiveScaleRange"in e.layer?e.layer.effectiveScaleRange:null),(()=>this._restartAllAgents(i)))),t.push(e.on("data-changed",(()=>{const t=this._getLayerIdxByUID(i,e.uid);null!=t&&this._invalidateLayerData(t,i)})))}this._unregisterTiledLayerView(e.uid),this._basemapLayerViewHandles.set(e.uid,t)}_unregisterTiledLayerView(e){const t=this._basemapLayerViewHandles.get(e);if(t){for(const e of t)e.remove();this._basemapLayerViewHandles.delete(e)}}_updateTiledLayers(){if(!this.tilingScheme||this.view.suspended)return;const e=this.view.allLayerViews,t=[[],[]];let i=null;e.forEach((e=>{if(!e.layer||e.suspended||!Le(e)||!e.fullExtent)return;const r=this._layerClassFromLayerView(e);if(r===ae.MAP){const t=e.displayLevelRange.maxLevel;t!==1/0&&(null===i||t>i)&&(i=t)}t[r].push(e)}));for(const r of ne){const e=this._layerViews[r],i=t[r];i.reverse();const s=i.length;let a=e.length!==s;const n=new Array(s),l=new Array(e.length);this._layerIndexByUid[r].clear();for(let t=0;t<s;t++){const s=i[t].uid;this._layerIndexByUid[r].set(s,t);const o=e.indexOf(i[t]);n[t]=o,t!==o&&(a=!0),o>-1&&(l[o]=t)}if(a){const e=this._postorderIterator;for(e.reset(this._rootTiles);!e.done;)e.next().modifyLayers(l,n,r);this._layerViews[r]=i,this._restartAllAgents(r),this._updateTilesVisibility(this._rootTiles)}}this.tilingScheme.ensureMaxLod(i)&&this._viewChangeUpdate()}_restartAllAgents(e){const t=this._postorderIterator;for(t.reset(this._rootTiles);!t.done;){const i=t.next();i.restartAgents(e),e===ae.ELEVATION&&i.computeElevationBounds()}this._updateRootTileElevationBounds()}layerViewByIndex(e,t){return this._layerViews[t][e]}numLayers(e){return this._layerViews[e].length}_updateTileTextures(e){this._allTiles.forAll((t=>{t.updateAgents(ae.MAP),e===se.IMMEDIATE?this.renderer.updateTileTexture(t,Ge.TEXTURE_NOFADING):t.updateRenderData(ae.MAP,e)})),this._evaluateTransparency()}_invalidateLayerData(e,t){this._allTiles.forAll((i=>i.removeLayerAgent(e,t))),this._allTiles.forAll((i=>i.invalidateLayerData(e,t)))}setTileTreeDirty(){this._allTilesDirty=!0}requestRender(e=tt.UPDATE){this.renderer.setNeedsRender(e)}requestUpdate(){1==++this._pendingUpdates&&(this._hasPendingUpdates=!0)}requestTileData(e,t,i,r){const s=this.layerViewByIndex(t,i),a=s.layer;return!a.tilemapCache||Ue(s)?this._requestTileData(e,i,s,r):(++this._asyncWorkItems,a.tilemapCache.fetchAvailability(e.lij[0],e.lij[1],e.lij[2],{...r,timeout:6e3}).then((()=>--this._asyncWorkItems)).catch((t=>{throw--this._asyncWorkItems,c(r),_(t)||this._dataMissing(e,i,s,{notInTilemap:!0}),t})).then((()=>this._frameTask.schedule((()=>this._requestTileData(e,i,s,r)),r.signal))))}_requestTileData(e,t,i,r){return t===ae.ELEVATION?xe(i)?this._requestElevationTileData(e,i,r):Promise.reject():Pe(i)?this._requestMapTileData(e,i,r):Promise.reject()}_requestElevationTileData(e,t,i){++this._asyncWorkItems;const r=r=>{if(g(i))return;const s=this._layerIndexByUid[ae.ELEVATION].get(t.uid);null!=s?(this._usedMemory=null,this.requestUpdate(),this._elevationDataArrived(e,s,r)):n.getLogger(this).warn("TerrainSurface: received data from unknown layer %d %s",ae.ELEVATION,e.lij.toString())},s=i=>{_(i)||(this._dataMissing(e,ae.ELEVATION,t,i),this.requestUpdate())};if(Re(t.layer))return t.layer.fetchTile(e.lij[0],e.lij[1],e.lij[2],{noDataValue:Te,signal:i.signal}).then((e=>{if(!g(i))return this._frameTask.schedule((()=>r(e)),i.signal,s);n.getLogger(this).warnOnce("A call to fetchTile resolved even though the request was aborted. fetchTile should not resolve if options.signal.aborted is true.")}),s).finally((()=>{--this._asyncWorkItems}));const a=t.getTileUrl(e.lij[0],e.lij[1],e.lij[2]);return this._elevationDataRequester.request(a,"binary",i).then((e=>this._lercDecoder.decode(e,{noDataValue:Te},i.signal))).then((e=>{e?r(new W(e)):s(new Error("LERC decoding failed"))}),s).finally((()=>{--this._asyncWorkItems}))}_requestMapTileData(e,t,i){++this._asyncWorkItems;const r=(r,s)=>{--this._asyncWorkItems,je(s),g(i)||(this._dataMissing(e,ae.MAP,t,r),this.requestUpdate())},s=e=>t=>r(t,e),a=r=>this._frameTask.schedule((()=>{--this._asyncWorkItems,this.requestUpdate(),g(i)?je(r):this._mapTileDataArrived(e,t,r)}),i.signal,s(r)).catch(s(r)),l=(e,t=null)=>this._frameTask.schedule((()=>r(e,t)));if(Ue(t)){const r=t.schemaHelper.getLevelRowColumn(e.lij);return t.fetchTile(r[0],r[1],r[2],i).then(a,l)}if(Ce(t))return t.fetchTile(e.lij[0],e.lij[1],e.lij[2],i).then(a,l);if(Me(t)&&Re(t.layer))return t.layer.fetchTile(e.lij[0],e.lij[1],e.lij[2],i).then((e=>{if(g(i))return n.getLogger(this).warnOnce("A call to fetchTile resolved even though the request was aborted. fetchTile should not resolve if options.signal.aborted is true."),void l(m());a(e)}),l);let o=t.getTileUrl(e.lij[0],e.lij[1],e.lij[2]);F(t.layer)&&t.layer.refreshTimestamp&&(o+=`${o.includes("?")?"&":"?"}_ts=${t.layer.refreshTimestamp}`);const h=t.hasMixedImageFormats?"image+type":"image";return this._mapDataRequester.request(o,h,i).then(a,l)}_mapTileDataArrived(e,t,i){const r=this._getLayerIdxByUID(ae.MAP,t.uid);null!=r?e.dataArrived(r,ae.MAP,i):(je(i),n.getLogger(this).warn("TerrainSurface: received data from unknown layer"))}_getLayerIdxByUID(e,t){return this._layerIndexByUid[e].get(t)}_dataMissing(e,t,i,r){const s=this._getLayerIdxByUID(t,i.uid);null!=s?e.dataMissing(s,t,r):n.getLogger(this).warn("TerrainSurface: received data from unknown layer")}updateTileOverlayParams(e){this._rootTiles&&this.overlayManager&&(this._allTiles.forAll((e=>{e.renderData&&this.overlayManager.setTileParameters(e)})),this._renderer.setNeedsRender(e))}get performanceInfo(){const e=this._performanceInfo;return e.numNodes=this._allTiles.length,e.numLeaves=e.numVisible=e.numRendered=e.numLoadedPerLevel.length=e.numRenderedPerLevel.length=0,this._allTiles.forAll((t=>{t.isLeaf&&e.numLeaves++;const i=t.level;t.renderData&&(e.numLoadedPerLevel[i]=(e.numLoadedPerLevel[i]||0)+1),t.visible&&(e.numVisible++,t.rendered&&(e.numRenderedPerLevel[i]=(e.numRenderedPerLevel[i]||0)+1,e.numRendered++))})),e}get usedMemory(){return this.tilingScheme?(null==this._usedMemory&&(this._usedMemory=this._recalculateUsedMemory()),this._usedMemory??0):0}_recalculateUsedMemory(){return this.tilingScheme?Math.round(this._allTiles.reduce(((e,t)=>e+t.usedMemory),0)):null}getUsedMemoryForLayerView(e){let t=0;const i=this._layerClassFromLayerView(e),r=this._getLayerIdxByUID(i,e.uid);return null!=r&&this._allTiles.forAll((e=>t+=e.getUsedMemoryForLayer(i,r))),t}getTile(e){if(null==e||null==this._rootTiles)return null;const t=e.split("/").map((e=>+e));if(0===t[0])return this._rootTiles.find((e=>e.lij[1]===t[1]&&e.lij[2]===t[2]));const i=2**t[0],r=Math.floor(t[1]/i),s=Math.floor(t[2]/i);let a;if(this._rootTiles.some((e=>e.lij[1]===r&&e.lij[2]===s&&(a=e,!0))),a){let e=1<<t[0]-1;for(;a.lij[0]<t[0];){let i=t[1]&e?2:0;if((t[2]&e)>0&&i++,!a.children[i])return null;a=a.children[i],e>>=1}return we(a.lij[0]===t[0]&&a.lij[1]===t[1]&&a.lij[2]===t[2],"not the right tile?"),a}return null}get renderPatchBorders(){return this._renderer.renderPatchBorders}set renderPatchBorders(e){this._renderer.renderPatchBorders=e}get visualizeNormals(){return this._renderer.visualizeNormals}set visualizeNormals(e){this._renderer.visualizeNormals=e}get renderingDisabled(){return this._renderer.renderingDisabled}set renderingDisabled(e){this._renderer.renderingDisabled=e}get test(){const e=this;return{renderer:e._renderer,lercDecoder:e._lercDecoder,forceReload:()=>{null!=e._rootTiles&&e._rootTiles.length>0&&(e._mergeTile(e._rootTiles[0]),e._viewChangeUpdate())},getTiles:()=>e._allTiles.toArray(),getRenderedTiles(){_t.clear(),e._allTiles.forAll((e=>{e.visible&&e.rendered&&_t.push(e)}));const t=_t.toArray();return Ye(e.renderOrder,t),t},lockTilingScheme(t,i){e._extentHelper.defaultTiledLayersExtent=i,e.tilingSchemeLogic.test.lockTilingScheme(t)}}}checkAllTilesWaterproofness(){if(!Be)return;const e=this._rootTiles;if(null==e)return;const t=e=>e?.renderData?.geometry?.indices?.length>0,i=(e,i)=>{t(e)&&console.error("Tile[",e.lij,"] has geometry although parent[",i.lij,"] has geom")},r=e=>{if(e.intersectsClippingArea)if(e.renderData&&!e.renderData.geometryState&&console.error("Tile[",e.lij,"] has renderData but not geometryState"),e.renderData&&!e.renderData.geometry&&console.error("Tile[",e.lij,"] has renderData but not geometryInfo"),!e.renderData?.geometry||(e.renderData.geometry.indices?.length??0)>0||console.error("Tile[",e.lij,"] has renderData but no indices - geometryInfo: ",e.renderData.geometry),t(e)){e.checkGeometryWaterproofness();for(const t of e.children)i(t,e)}else if(e.isLeaf)console.error("Tile[",e.lij,"] has no geometry and no children, from root to leaf");else for(const t of e.children)r(t)},s=e=>{const t=e.parent?.visible??!0,i=e.visible;e.computeVisibility();const r=e.visible;if(i!==r&&t&&console.error(" Tile[",e.lij,"] has out of date visibility: ",i," instead of ",r),!e.isLeaf)for(const a of e.children)s(a)};for(const a of e)r(a),s(a)}get isGlobal(){return this._isGlobal}get isWebMercator(){return this._isWebMercator}get isWebMercatorOnPlateeCarree(){return this._isWebMercatorOnPlateeCarree}isEastEndWrap(e){return this.isGlobal&&e[2]===this.lijEastEnd(e[0])-1}isWestEndWrap(e){return this.isGlobal&&0===e[2]}lijEastEnd(e){return 2**(e+(null!=this.spatialReference&&this.spatialReference.isGeographic?1:0))}wrapEastWest(e){const t=this.lijEastEnd(e[0]),i=e[2];if(0<=i&&i<t)return e;if(!this.isGlobal)return null;const r=(i+(i<0?t:0))%t;return[e[0],e[1],r]}enableInternalChecks(e){ke(e)}enableWaterproofnessChecks(e){Ne(e)}};e([w()],nt.prototype,"_renderer",void 0),e([w({constructOnly:!0})],nt.prototype,"_scaleRangeQueries",void 0),e([w({constructOnly:!0})],nt.prototype,"view",void 0),e([w({constructOnly:!0})],nt.prototype,"overlayManager",void 0),e([w()],nt.prototype,"_hasPendingUpdates",void 0),e([w()],nt.prototype,"_asyncWorkItems",void 0),e([w()],nt.prototype,"_allTilesDirty",void 0),e([w()],nt.prototype,"_allTilesSorted",void 0),e([w()],nt.prototype,"_viewChanged",void 0),e([w()],nt.prototype,"_splitLimits",void 0),e([w({readOnly:!0})],nt.prototype,"_watchUpdatingTracking",void 0),e([w()],nt.prototype,"_frameTask",void 0),e([w({readOnly:!0})],nt.prototype,"snapLevel",null),e([w({readOnly:!0})],nt.prototype,"lodSnapping",null),e([w()],nt.prototype,"_userClippingExtent",null),e([w()],nt.prototype,"_rootTilesExtent",void 0),e([w({readOnly:!0})],nt.prototype,"extent",null),e([w({readOnly:!0})],nt.prototype,"groundExtent",null),e([w({readOnly:!0})],nt.prototype,"_tilingSchemeExtent",null),e([w({readOnly:!0})],nt.prototype,"updating",null),e([w({readOnly:!0})],nt.prototype,"running",null),e([w(J)],nt.prototype,"updatingProgress",void 0),e([w({readOnly:!0})],nt.prototype,"updatingProgressValue",null),e([w()],nt.prototype,"_maxNumUpdating",void 0),e([w()],nt.prototype,"baseOpacity",null),e([w()],nt.prototype,"hasCompositeBlendMode",void 0),e([w({readOnly:!0})],nt.prototype,"viewingMode",null),e([w()],nt.prototype,"maxTextureScale",void 0),e([w({readOnly:!0})],nt.prototype,"ready",null),e([w({value:he.FRONT_TO_BACK})],nt.prototype,"renderOrder",null),e([w({readOnly:!0})],nt.prototype,"rootTiles",null),e([w()],nt.prototype,"_rootTiles",void 0),e([w({readOnly:!0})],nt.prototype,"spatialReference",null),e([w({type:t})],nt.prototype,"backgroundColor",null),e([w({value:!1})],nt.prototype,"slicePlaneEnabled",null),e([w({readOnly:!0})],nt.prototype,"tilingScheme",void 0),e([w({readOnly:!0})],nt.prototype,"tilingSchemeLocked",null),e([w({readOnly:!0})],nt.prototype,"tilingSchemeLogic",void 0),e([w()],nt.prototype,"wireframe",null),e([w({value:!1})],nt.prototype,"suspended",null),e([w()],nt.prototype,"textureFadeDuration",null),e([w()],nt.prototype,"visibleElevationBounds",void 0),e([w()],nt.prototype,"rootTileElevationBounds",void 0),e([w()],nt.prototype,"_layerViewsDirty",void 0),e([w()],nt.prototype,"renderPatchBorders",null),e([w()],nt.prototype,"visualizeNormals",null),e([w()],nt.prototype,"renderingDisabled",null),nt=e([E("esri.views.3d.terrain.TerrainSurface")],nt);const lt=nt;function ot(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function ht(e){const t=e.children;if(!t[0])return!1;for(const i of t)if(i.shouldLoad)return!0;for(const i of t)if(ht(i))return!0;return!1}function dt(e){return e.isLeaf&&(e.parent?.shouldLoad??!1)}const pt=b(),ut=j(),ct=[0,0,0],_t=new u,gt={spatialReference:null,extent:j(),context:"ground"},mt={spatialReference:null,extent:null,scale:0};function Tt(e,t,i){for(const r of e){if(!r.containsPointXY(t,i))continue;let e=r;for(;e&&!e.renderData;){const r=(t>e.extentMidX?1:0)+(i<e.extentMidY?2:0);e=e.children[r]}const s=e?.renderData?.geometryState.samplerData??null;return te(t,i,s)}return null}export{lt as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../../core/Logger.js";import{disposeMaybe as t,releaseMaybe as r}from"../../../core/maybe.js";import{Z as i}from"../../../chunks/vec2f64.js";import{RasterColorizerStretchType as s}from"../../2d/engine/imagery/enums.js";import{VectorTileRendererHelper3D as o}from"../../2d/engine/vectorTiles/VectorTileRendererHelper3D.js";import{BlendLayersTechniqueConfiguration as n,BlendLayersTechnique as a}from"./BlendLayersTechnique.js";import{LayerClass as l}from"./LayerClass.js";import{RasterColorizerTechniqueConfiguration as h,RasterColorizerTechnique as u}from"./RasterColorizerTechnique.js";import{MultiSizeFramebuffer as c}from"./support/MultiSizeFramebuffer.js";import{LayerBlendMode as d}from"../webgl-engine/core/shaderLibrary/output/BlendOptions.js";import{PremultipliedAlphaSource as _,BlendLayersOutput as f,BaseOpacityMode as p}from"../webgl-engine/core/shaderLibrary/terrain/TileBackground.glsl.js";import{a as b}from"../../../chunks/BlendLayers.glsl.js";import{BindParameters as g}from"../webgl-engine/lib/BindParameters.js";import{Pos2Tex as m}from"../webgl-engine/lib/DefaultVertexBufferLayouts.js";import{createQuadVAO as T}from"../webgl-engine/lib/glUtil3D.js";import{PrimitiveType as y,ClearBufferBit as x,TextureType as C}from"../../webgl/enums.js";import{Texture as B}from"../../webgl/Texture.js";import{vertexCount as q}from"../../webgl/Util.js";const O=e.getLogger("esri.views.3d.terrain");class L{constructor(e,t){this._rctx=e,this._techniqueRepository=t,this._fbos=[],this._vectorTileHelper=new o,this._bindParameters=new g(null,null,null),this._blendLayersTechniqueConfig=new n,this._current=0,this._lastUsedIds=new Array,this._lastCreatedBufferId=0,this._onHoldIds=new Array,this._vaoQuad=T(this._rctx,m)}dispose(){this._fbos.forEach(t),this._fbos=null,this._vtFBO=t(this._vtFBO),this._vaoQuad=t(this._vaoQuad),this._vectorTileHelper=t(this._vectorTileHelper),this._backgroundTechnique=r(this._backgroundTechnique),this._applyOpacityTechnique=r(this._applyOpacityTechnique),this._blendLayersTechnique=r(this._blendLayersTechnique)}_getBlendLayersTechnique(e,t,r,i=_.Off,s=b.BelowLayer){return this._blendLayersTechniqueConfig.output=t,this._blendLayersTechniqueConfig.blendMode=e,this._blendLayersTechniqueConfig.baseOpacityMode=r,this._blendLayersTechniqueConfig.premultipliedSource=i,this._blendLayersTechniqueConfig.background=s,this._blendLayersTechnique=this._techniqueRepository.releaseAndAcquire(a,this._blendLayersTechniqueConfig,this._blendLayersTechnique),this._blendLayersTechnique}drawBackground(e,t){const r=this._getBlendLayersTechnique(d.Normal,t?f.ColorComposite:f.GridComposite,p.NotRequired,_.Off,b.Only),i=this._rctx.bindTechnique(r,e,this._bindParameters);this._render(i)}_render(e){this._rctx.bindVAO(this._vaoQuad),e.assertCompatibleVertexAttributeLocations(this._vaoQuad),this._rctx.drawArrays(y.TRIANGLE_STRIP,0,q(this._vaoQuad,"geometry"))}drawGroup(e,t,r,i,s,o=_.On){t===f.Composite&&(e.fboTexture=this._fbos[this.getLastOnHoldId()].get(r).colorTexture),e.texture=this.currentFBO(r).colorTexture,this.closeGroup(r);const n=this._getBlendLayersTechnique(i,t,s,o),a=this._rctx.bindTechnique(n,e,this._bindParameters);this._render(a)}drawRasterData(e,t,r,i,s,o=_.Off){if(null==e.texture)return;e.fboTexture=t===f.GroupBackgroundComposite||i===d.Normal&&s===p.NotRequired&&o===_.Off?null:this.switch(r).colorTexture;const n=this._getBlendLayersTechnique(i,t,s,o),a=this._rctx.bindTechnique(n,e,this._bindParameters);this._render(a)}drawImageryTileData(e,t,r,i,s,o){const n=o.sourceLayerInfo.data;if(!n.source)return;if(o.tile.surface.layerViewByIndex(o.layerIndex,l.MAP).ensureSymbolizerParameters(n),!n.bind(this._rctx))return;e.fboTexture=i===d.Normal&&s===p.NotRequired?null:this.switch(r).colorTexture;const a=this._getRasterColorizerTechnique(n,t,i,s);n.opacity=e.opacity;const h=n.getUniforms();h.scale=o.scale,h.offset=o.offset,h.backgroundColor=e.backgroundColor,h.fboTexture=e.fboTexture,h.baseOpacity=e.baseOpacity;const u=this._rctx.bindTechnique(a,h,null);this._render(u)}_getRasterColorizerTechnique(e,t,r,i){const o=e.symbolizerParameters,n=["stretch","lut","hillshade"].indexOf(o.type);return null==this._rasterColorizerConfig&&(this._rasterColorizerConfig=new h,this._rctx.gl.getExtension("WEBGL_color_buffer_float"),this._rctx.gl.getExtension("OES_texture_float")),this._rasterColorizerConfig.output=t,this._rasterColorizerConfig.blendMode=r,this._rasterColorizerConfig.baseOpacityMode=i,this._rasterColorizerConfig.colorizerType=n,this._rasterColorizerConfig.applyColormap=!!o.colormap,this._rasterColorizerConfig.requireBilinearWithNN=e.isBilinearWithStretchColorRamp,this._rasterColorizerConfig.stretchType=e.hasStretchTypeNone()?s.Noop:s.PerBand,this._rasterColorizerTechnique=this._techniqueRepository.releaseAndAcquire(u,this._rasterColorizerConfig,this._rasterColorizerTechnique),this._rasterColorizerTechnique}drawVectorData(e,t,r,s,o,n,a,h,u){const b=this._rctx,g=n.sourceLayerInfo.data,m=n.tile.surface.layerViewByIndex(n.layerIndex,l.MAP),T=o===p.Required||e.opacity<1||s!==d.Normal||t!==f.Composite,y=T?_.On:_.Off;this._getBlendLayersTechnique(s,t,o,y).bindPipelineState(b);let C=null,B=null;T?(B=this.currentFBO(r),null==this._vtFBO&&(this._vtFBO=new c(this._rctx)),C=this._vtFBO.get(r),b.bindFramebuffer(C),this._clearCurrentFBO()):u&&b.clearSafe(x.DEPTH_BUFFER_BIT);try{this._vectorTileHelper.render(b,n.sourceLod,g,m.painter,m.layer.styleRepository,m.schemaHelper,Math.round(1/n.scale),n.offset,h,a,m.contentZoom),n.vtlNeighborInfos.forAll((e=>this._vectorTileHelper.renderSymbols(b,e.sourceLod,e.sourceLayerInfo.data,m.painter,m.layer.styleRepository,m.schemaHelper,1,e.offset,h,a,m.contentZoom)))}catch(q){O.warnOnce("A render call containing vector tiles did not resolve correctly.",q)}return null==C||(b.bindFramebuffer(B),e.texture=C.colorTexture,e.offset=i,e.scale=1,this.drawRasterData(e,t,r,s,o,y),u)}copyFBOToTexture(e){const t=this._rctx,r=t.bindTexture(e.texture,B.TEXTURE_UNIT_FOR_UPDATES),i=e.descriptor;t.gl.copyTexImage2D(C.TEXTURE_2D,0,i.pixelFormat,0,0,i.width,i.height,0),e.generateMipmap(),t.bindTexture(r,B.TEXTURE_UNIT_FOR_UPDATES)}_clearCurrentFBO(){this._rctx.setClearColor(0,0,0,0),this._rctx.setClearDepth(1),this._rctx.clearSafe(x.COLOR_BUFFER_BIT|x.DEPTH_BUFFER_BIT)}_initFBO(e,t,r){this._rctx.bindFramebuffer(e),r&&(this._rctx.setViewport(0,0,t,t),this._clearCurrentFBO())}ensureBuffer(e){this._lastUsedIds.length=0,this._lastUsedIds.push(1),this._lastCreatedBufferId=1,this._onHoldIds.length=0,this.bind(e)}bind(e,t=0,r=!0){if(this._current=t,t>=this._fbos.length)for(let i=this._fbos.length;i<=t;i++)this._fbos.push(new c(this._rctx));this._initFBO(this._fbos[t].get(e),e,r)}_bindNextFreeBuffer(e){this._lastUsedIds.length>0?this.bind(e,this._lastUsedIds.pop()):(this._lastCreatedBufferId++,this.bind(e,this._lastCreatedBufferId))}openGroup(e){this._onHoldIds.push(this._current),this._bindNextFreeBuffer(e)}switch(e){const t=this.currentFBO(e),r=this._current;return this._bindNextFreeBuffer(e),this._lastUsedIds.push(r),t}getLastOnHoldId(){return this._onHoldIds.at(-1)}closeGroup(e){const t=this._current;this._bindNextFreeBuffer(e),this._lastUsedIds.push(t),this._lastUsedIds.push(this._onHoldIds.pop())}unbind(){this._rctx.bindFramebuffer(null)}currentFBO(e){return this._fbos[this._current].get(e)}}export{L as TileCompositor};
5
+ import e from"../../../core/Logger.js";import{disposeMaybe as t,releaseMaybe as r}from"../../../core/maybe.js";import{Z as i}from"../../../chunks/vec2f64.js";import{RasterColorizerStretchType as s}from"../../2d/engine/imagery/enums.js";import{VectorTileRendererHelper3D as o}from"../../2d/engine/vectorTiles/VectorTileRendererHelper3D.js";import{BlendLayersTechniqueConfiguration as n,BlendLayersTechnique as a}from"./BlendLayersTechnique.js";import{LayerClass as l}from"./LayerClass.js";import{RasterColorizerTechniqueConfiguration as h,RasterColorizerTechnique as u}from"./RasterColorizerTechnique.js";import{MultiSizeFramebuffer as c}from"./support/MultiSizeFramebuffer.js";import{LayerBlendMode as d}from"../webgl-engine/core/shaderLibrary/output/BlendOptions.js";import{PremultipliedAlphaSource as _,BlendLayersOutput as f,BaseOpacityMode as p}from"../webgl-engine/core/shaderLibrary/terrain/TileBackground.glsl.js";import{a as b}from"../../../chunks/BlendLayers.glsl.js";import{BindParameters as g}from"../webgl-engine/lib/BindParameters.js";import{Pos2Tex as m}from"../webgl-engine/lib/DefaultVertexBufferLayouts.js";import{createQuadVAO as T}from"../webgl-engine/lib/glUtil3D.js";import{PrimitiveType as y,ClearBufferBit as x,TextureType as C}from"../../webgl/enums.js";import{Texture as B}from"../../webgl/Texture.js";import{vertexCount as q}from"../../webgl/Util.js";const O=e.getLogger("esri.views.3d.terrain");class I{constructor(e,t){this._rctx=e,this._techniqueRepository=t,this._fbos=[],this._vectorTileHelper=new o,this._bindParameters=new g(null,null,null),this._blendLayersTechniqueConfig=new n,this._current=0,this._lastUsedIds=new Array,this._lastCreatedBufferId=0,this._onHoldIds=new Array,this._vaoQuad=T(this._rctx,m)}dispose(){this._fbos.forEach(t),this._fbos=null,this._vtFBO=t(this._vtFBO),this._vaoQuad=t(this._vaoQuad),this._vectorTileHelper=t(this._vectorTileHelper),this._backgroundTechnique=r(this._backgroundTechnique),this._applyOpacityTechnique=r(this._applyOpacityTechnique),this._blendLayersTechnique=r(this._blendLayersTechnique)}_getBlendLayersTechnique(e,t,r,i=_.Off,s=b.BelowLayer){return this._blendLayersTechniqueConfig.output=t,this._blendLayersTechniqueConfig.blendMode=e,this._blendLayersTechniqueConfig.baseOpacityMode=r,this._blendLayersTechniqueConfig.premultipliedSource=i,this._blendLayersTechniqueConfig.background=s,this._blendLayersTechnique=this._techniqueRepository.releaseAndAcquire(a,this._blendLayersTechniqueConfig,this._blendLayersTechnique),this._blendLayersTechnique}drawBackground(e,t){const r=this._getBlendLayersTechnique(d.Normal,t?f.ColorComposite:f.GridComposite,p.NotRequired,_.Off,b.Only),i=this._rctx.bindTechnique(r,e,this._bindParameters);this._render(i)}_render(e){this._rctx.bindVAO(this._vaoQuad),e.assertCompatibleVertexAttributeLocations(this._vaoQuad),this._rctx.drawArrays(y.TRIANGLE_STRIP,0,q(this._vaoQuad,"geometry"))}drawGroup(e,t,r,i,s,o=_.On){t===f.Composite&&(e.fboTexture=this._fbos[this.getLastOnHoldId()].get(r).colorTexture),e.texture=this.currentFBO(r).colorTexture,this.closeGroup(r);const n=this._getBlendLayersTechnique(i,t,s,o),a=this._rctx.bindTechnique(n,e,this._bindParameters);this._render(a)}drawRasterData(e,t,r,i,s,o=_.Off){if(null==e.texture)return;e.fboTexture=t===f.GroupBackgroundComposite||i===d.Normal&&s===p.NotRequired&&o===_.Off?null:this.switch(r).colorTexture;const n=this._getBlendLayersTechnique(i,t,s,o),a=this._rctx.bindTechnique(n,e,this._bindParameters);this._render(a)}drawImageryTileData(e,t,r,i,s,o){const n=o.sourceLayerInfo.data;if(!n.source)return;if(o.tile.surface.layerViewByIndex(o.layerIndex,l.MAP).ensureSymbolizerParameters(n),!n.bind(this._rctx))return;e.fboTexture=i===d.Normal&&s===p.NotRequired?null:this.switch(r).colorTexture;const a=this._getRasterColorizerTechnique(n,t,i,s);n.opacity=e.opacity;const h=n.getUniforms();h.scale=o.scale,h.offset=o.offset,h.backgroundColor=e.backgroundColor,h.fboTexture=e.fboTexture,h.baseOpacity=e.baseOpacity;const u=this._rctx.bindTechnique(a,h,null);this._render(u)}_getRasterColorizerTechnique(e,t,r,i){const o=e.symbolizerParameters,n=["stretch","lut","hillshade"].indexOf(o.type);return null==this._rasterColorizerConfig&&(this._rasterColorizerConfig=new h,this._rctx.gl.getExtension("WEBGL_color_buffer_float"),this._rctx.gl.getExtension("OES_texture_float")),this._rasterColorizerConfig.output=t,this._rasterColorizerConfig.blendMode=r,this._rasterColorizerConfig.baseOpacityMode=i,this._rasterColorizerConfig.colorizerType=n,this._rasterColorizerConfig.applyColormap=!!o.colormap,this._rasterColorizerConfig.requireBilinearWithNN=e.isBilinearWithStretchColorRamp,this._rasterColorizerConfig.stretchType=e.hasStretchTypeNone()?s.Noop:s.PerBand,this._rasterColorizerTechnique=this._techniqueRepository.releaseAndAcquire(u,this._rasterColorizerConfig,this._rasterColorizerTechnique),this._rasterColorizerTechnique}drawVectorData(e,t,r,s,o,n,a,h,u){const b=this._rctx,g=n.sourceLayerInfo.data,m=n.tile.surface.layerViewByIndex(n.layerIndex,l.MAP),T=o===p.Required||e.opacity<1||s!==d.Normal||t!==f.Composite,y=T?_.On:_.Off;this._getBlendLayersTechnique(s,t,o,y).bindPipelineState(b);let C=null,B=null;T?(B=this.currentFBO(r),null==this._vtFBO&&(this._vtFBO=new c(this._rctx)),C=this._vtFBO.get(r),b.bindFramebuffer(C),this._clearCurrentFBO()):u&&b.clearSafe(x.DEPTH_BUFFER_BIT);try{this._vectorTileHelper.render(b,n.sourceLod,g,m.painter,m.layer.styleRepository,m.schemaHelper,Math.round(1/n.scale),n.offset,h,a,m.contentZoom),n.vtlNeighborInfos.forAll((e=>this._vectorTileHelper.renderSymbols(b,e.sourceLod,e.sourceLayerInfo.data,m.painter,m.layer.styleRepository,m.schemaHelper,1,e.offset,h,a,m.contentZoom)))}catch(q){O.warnOnce("A render call containing vector tiles did not resolve correctly.",q)}return null==C||(b.bindFramebuffer(B),e.texture=C.colorTexture,e.offset=i,e.scale=1,this.drawRasterData(e,t,r,s,o,y),u)}copyFBOToTexture(e){const t=this._rctx,r=t.bindTexture(e.texture,B.TEXTURE_UNIT_FOR_UPDATES),i=e.descriptor;t.gl.copyTexImage2D(C.TEXTURE_2D,0,i.pixelFormat,0,0,i.width,i.height,0),e.generateMipmap(),t.bindTexture(r,B.TEXTURE_UNIT_FOR_UPDATES)}_clearCurrentFBO(){this._rctx.setClearColor(0,0,0,0),this._rctx.setClearDepth(1),this._rctx.clearSafe(x.COLOR_BUFFER_BIT|x.DEPTH_BUFFER_BIT)}_initFBO(e,t,r){this._rctx.bindFramebuffer(e),r&&(this._rctx.setViewport(0,0,t,t),this._clearCurrentFBO())}ensureBuffer(e){this._lastUsedIds.length=0,this._lastUsedIds.push(1),this._lastCreatedBufferId=1,this._onHoldIds.length=0,this.bind(e)}bind(e,t=0,r=!0){if(this._current=t,t>=this._fbos.length)for(let i=this._fbos.length;i<=t;i++)this._fbos.push(new c(this._rctx));this._initFBO(this._fbos[t].get(e),e,r)}_bindNextFreeBuffer(e){this._lastUsedIds.length>0?this.bind(e,this._lastUsedIds.pop()):(this._lastCreatedBufferId++,this.bind(e,this._lastCreatedBufferId))}openGroup(e){this._onHoldIds.push(this._current),this._bindNextFreeBuffer(e)}switch(e){const t=this.currentFBO(e),r=this._current;return this._bindNextFreeBuffer(e),this._lastUsedIds.push(r),t}getLastOnHoldId(){return this._onHoldIds[this._onHoldIds.length-1]}closeGroup(e){const t=this._current;this._bindNextFreeBuffer(e),this._lastUsedIds.push(t),this._lastUsedIds.push(this._onHoldIds.pop())}unbind(){this._rctx.bindFramebuffer(null)}currentFBO(e){return this._fbos[this._current].get(e)}}export{I as TileCompositor};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{disposeMaybe as e,releaseMaybe as t}from"../../../core/maybe.js";import{s as r,j as s}from"../../../chunks/vec2.js";import{Z as o}from"../../../chunks/vec2f64.js";import{isBaseLayer as a,isGroupLayer as i}from"../../../layers/support/layerUtils.js";import{ImageWithType as n}from"../support/StreamDataLoader.js";import{BlendLayersPassParameters as c}from"./BlendLayersTechnique.js";import{TextureUpdate as u}from"./interfaces.js";import{NeighborIndex as l}from"./ITile.js";import{LayerClass as p}from"./LayerClass.js";import{isBlendableLayerView as h,isVectorTileLayerView as d,isVectorTileRenderInfo as m,isImageryTileRenderInfo as _,isRasterTileRenderInfo as f,isTextureTileRenderInfo as T,isVectorTilePerLayerInfo as y}from"./terrainUtils.js";import{ActivationTime as g}from"./TextureFader.js";import{TextureReference as b}from"./TextureReference.js";import{TileCompositor as x}from"./TileCompositor.js";import{TileRenderInfo as w}from"./TileRenderInfo.js";import I from"./TileTexture.js";import{TileUpdate as k}from"./TileUpdate.js";import{blendModeFromString as A}from"../webgl-engine/core/shaderLibrary/output/BlendOptions.js";import{BaseOpacityMode as P,BlendLayersOutput as E}from"../webgl-engine/core/shaderLibrary/terrain/TileBackground.glsl.js";import{createEmptyTexture as R}from"../webgl-engine/lib/glUtil3D.js";import{TextureSamplingMode as M,TextureWrapMode as D,PixelFormat as O}from"../../webgl/enums.js";import{Texture as j}from"../../webgl/Texture.js";import{TextureDescriptor as L}from"../../webgl/TextureDescriptor.js";class N{constructor(e,t,r,s){this.start=e,this.end=t,this.blendMode=r,this.opacity=s}}class C{constructor(e,t,r,s){this._rctx=e,this.tileSize=t,this._techniques=r,this._cache=s,this._passParameters=new c,this._backgroundTexture=null,this._backgroundColor=null,this._backgroundDirty=!1,this._maxAnisotropy=this._rctx.parameters.maxMaxAnisotropy,this._composition=new x(this._rctx,this._techniques),this._ensureBackgroundTexture(this.tileSize)}dispose(){this._composition=e(this._composition),this._backgroundTexture=t(this._backgroundTexture)}get backgroundIsGrid(){return null==this._backgroundColor}get backgroundColor(){return this._backgroundColor}updateTileTexture(e,t){if(!e.renderData)return;const r=e.surface,s=r.baseOpacity;let o=0,n=0,c=this.tileSize,u=!1;const l=r.view.state.contentPixelRatio;let m=!1;z.clear(),H.length=0;const _=e.layerInfo[p.MAP];let f=_.length,T=0,y=null;for(;T<_.length;T++){const t=r.layerViewByIndex(T,p.MAP),g=t.layer.opacity;F[T]=g;const b=t.fullOpacity;if(q[T]=b,a(t.layer)&&f>=_.length&&(f=T),h(t)){v[T]=t.layer.blendMode;let e="normal"!==t.layer.blendMode;if(i(t.layer.parent)){const r=U(t.layer.parent);null!=r&&""!==r&&(e=B(t.layer.parent)||e)}e&&(m=e,u=!1)}if(0===g&&!m){_[T].pendingUpdates&=~(k.TEXTURE_NOFADING&k.TEXTURE_FADING);continue}++n;const x=S(e,T);if(x){if(_[T].pendingUpdates&=~(k.TEXTURE_NOFADING&k.TEXTURE_FADING),i(t.layer.parent)){const e=U(t.layer.parent);null!=e&&""!==e&&G(t.layer.parent,T)}d(t)?c=Math.max(c,this.tileSize*l):1===s&&1===b&&(t.isOpaque||this._dataToTexture(x)&&x.sourceLayerInfo.data.descriptor.isOpaque)&&(u=!0),++o,null===y&&(y=T)}}const g=c/this.tileSize;0!==o&&null!==y?1===o&&!m&&this._useLayerTexture(e,y,f,q[y])||this._composeMapLayers(e,t,T-1,f,F,v,c,g,!u||m,z,m):this._useBackgroundTexture(e,n)}_ensureBackgroundTexture(e){return null==this._backgroundTexture&&(this._backgroundTexture=this._buildTexture(e,!1),this._backgroundDirty=!0),this._backgroundDirty&&(this._composition.bind(e),this._passParameters.offset=o,this._passParameters.scale=1,this._passParameters.opacity=1,null!=this.backgroundColor&&(this._passParameters.backgroundColor=this.backgroundColor),this._composition.drawBackground(this._passParameters,null!=this.backgroundColor),this._composition.copyFBOToTexture(this._backgroundTexture),this._composition.unbind(),this._backgroundDirty=!1),this._backgroundTexture}_useBackgroundTexture(e,t){const r=this._ensureBackgroundTexture(this.tileSize);let s=g.Immediate;(e.surface.view.layerViewManager.updating||t>0)&&(s=g.Delayed);const o=e.renderData;null==o.textureReference&&(s=g.Immediate),o.setTextureReference(new b(r,u.FADING,V,e.surface.baseOpacity,0,1),s)}_useLayerTexture(e,t,r,s){const o=t<r,a=o?1:e.surface.baseOpacity,i=o?e.surface.baseOpacity:1,n=S(e,t);return!!this._dataToTexture(n)&&(e.renderData.setTextureReference(new b(n.sourceLayerInfo.data,u.FADING,n,a,i,s)),!0)}_composeMapLayers(e,t,r,s,a,i,n,c,u,l,p){this._composition.ensureBuffer(n);const h=e.surface.baseOpacity;let d=!1,f=M.LINEAR_MIPMAP_LINEAR,T=!1,y=0;for(let b=r;b>=0;b--){const t=S(e,b);if(!t||0===a[b]&&!p)continue;const r=b<s&&h<1&&!d;r&&(d=!0),this._passParameters.baseOpacity=r?h:1;const g=this._passParameters.baseOpacity<1?P.Required:P.NotRequired;let x=!1;l.forEach((e=>{e.start===b&&(H.push(e),this._composition.openGroup(n),x=!0)}));const w=0===y,I=x?E.GroupBackgroundComposite:u&&w?this.backgroundIsGrid?E.GridComposite:E.ColorComposite:E.Composite,k=A[i[b]];for(m(t)?(this._passParameters.opacity=a[b],T=this._composition.drawVectorData(this._passParameters,I,n,k,g,t,c,this.tileSize,T)):_(t)?(this._passParameters.opacity=a[b],this._composition.drawImageryTileData(this._passParameters,I,n,k,g,t),this._hasNearestInterpolation(t)&&(f=M.NEAREST)):this._dataToTexture(t)&&(this._passParameters.texture=t.sourceLayerInfo.data.texture,this._passParameters.offset=t.offset,this._passParameters.scale=t.scale,this._passParameters.opacity=a[b],this._composition.drawRasterData(this._passParameters,I,n,k,g));H.length>0&&H.at(-1).end===b;){const e=H.pop();this._passParameters.opacity=e.opacity,this._passParameters.offset=o,this._passParameters.scale=1;const t=u&&w?this.backgroundIsGrid?E.GridComposite:E.ColorComposite:E.Composite;this._composition.drawGroup(this._passParameters,t,n,A[e.blendMode],g)}y++}const g=e.renderData,x=p||d&&h<1,w=g.ensureTexture(n,x,(()=>this._buildTexture(n,x,f)));this._composition.copyFBOToTexture(w),this._composition.unbind(),g.setTextureReference(new b(w,t,V,d?1:h,0,1))}_hasNearestInterpolation(e){const t=e.sourceLayerInfo.data;return!!t.source&&"nearest"===t.interpolation}_dataToTexture(e){if(f(e)){const t=e.sourceLayerInfo;t.data=this._buildTexture(t.data,!0),e.tile.setMemoryDirty()}return T(e)}setBackground(e){this._backgroundColor!==e&&(this._backgroundColor=e,this._backgroundDirty=!0)}_buildTexture(e,t,r=M.LINEAR_MIPMAP_LINEAR){if(null==e)return null;const s=new L;s.wrapMode=D.CLAMP_TO_EDGE,s.samplingMode=r,s.maxAnisotropy=this._maxAnisotropy,s.preMultiplyAlpha=!0,s.flipped=!0,s.hasMipmap=!0,t||(s.pixelFormat=O.RGB);const o=this._rctx;let a;if("number"==typeof e){s.width=s.height=e;const t=`${e} ${s.pixelFormat}`,r=this._cache.pop(t);r?(r.retain(),a=r):a=new I(new j(o,s),this._cache)}else if(e instanceof n)s.isOpaque=e.isOpaque,s.isOpaque&&(s.pixelFormat=O.RGB),a=new I(new j(o,s,e.image)),e.release();else try{s.width=e.width,s.height=e.height,a=new I(new j(o,s,e))}catch(c){a=new I(R(o)),console.warn("TileRenderer: failed to execute 'texImage2D', cross-origin image may not be loaded.")}const i=o.bindTexture(a.texture,j.TEXTURE_UNIT_FOR_UPDATES);return a.generateMipmap(),o.bindTexture(i,j.TEXTURE_UNIT_FOR_UPDATES),a}get test(){return{backgroundTexture:this._backgroundTexture}}}function S(e,t){X.layerIndex=t,X.vtlNeighborInfos.clear();const o=e.layerInfo[p.MAP][t];if(o.data)return r(X.offset,0,0),X.tile=e,X.scale=1,X.sourceLod=e.lij,X.sourceLayerInfo=o,m(X)&&e.forEachLoadedNeighbor(((r,s)=>{if(r.level!==e.level)return;const a=r.layerInfo[p.MAP][t];if(!y(a)||o.data===a.data)return;const i=X.vtlNeighborInfos.pushNew();i.offset=W[s],i.sourceLod=r.lij,i.sourceLayerInfo=a})),X;const a=o.upsampleInfo;if(a){const e=a.tile.layerInfo[p.MAP][t];return X.tile=a.tile,s(X.offset,a.offset),X.scale=a.scale,X.sourceLod=a.tile.lij,X.sourceLayerInfo=e,X}return null}function U(e){return e.uid}function B(e){let t="normal"!==e.blendMode;return i(e.parent)&&(t=B(e.parent)||t),t}function G(e,t){i(e.parent)&&G(e.parent,t);const r=U(e);if(null!=r&&""!==r){const s=z.get(r);s?s.start=t:z.set(r,new N(t,t,e.blendMode,e.opacity))}}const F=new Array,q=new Array,v=new Array,z=new Map,H=new Array,X=new w,V={offset:[0,0],scale:1},W=new Array;W[l.NORTH]=[0,-1],W[l.NORTH_EAST]=[-1,-1],W[l.EAST]=[-1,0],W[l.SOUTH_EAST]=[-1,1],W[l.SOUTH]=[0,1],W[l.SOUTH_WEST]=[1,1],W[l.WEST]=[1,0],W[l.NORTH_WEST]=[1,-1];export{N as GroupInfo,C as TileRenderer};
5
+ import{disposeMaybe as e,releaseMaybe as t}from"../../../core/maybe.js";import{s as r,j as s}from"../../../chunks/vec2.js";import{Z as o}from"../../../chunks/vec2f64.js";import{isBaseLayer as a,isGroupLayer as i}from"../../../layers/support/layerUtils.js";import{ImageWithType as n}from"../support/StreamDataLoader.js";import{BlendLayersPassParameters as c}from"./BlendLayersTechnique.js";import{TextureUpdate as u}from"./interfaces.js";import{NeighborIndex as l}from"./ITile.js";import{LayerClass as p}from"./LayerClass.js";import{isBlendableLayerView as h,isVectorTileLayerView as d,isVectorTileRenderInfo as m,isImageryTileRenderInfo as _,isRasterTileRenderInfo as f,isTextureTileRenderInfo as T,isVectorTilePerLayerInfo as y}from"./terrainUtils.js";import{ActivationTime as g}from"./TextureFader.js";import{TextureReference as b}from"./TextureReference.js";import{TileCompositor as x}from"./TileCompositor.js";import{TileRenderInfo as w}from"./TileRenderInfo.js";import I from"./TileTexture.js";import{TileUpdate as k}from"./TileUpdate.js";import{blendModeFromString as A}from"../webgl-engine/core/shaderLibrary/output/BlendOptions.js";import{BaseOpacityMode as P,BlendLayersOutput as E}from"../webgl-engine/core/shaderLibrary/terrain/TileBackground.glsl.js";import{createEmptyTexture as R}from"../webgl-engine/lib/glUtil3D.js";import{TextureSamplingMode as M,TextureWrapMode as D,PixelFormat as O}from"../../webgl/enums.js";import{Texture as j}from"../../webgl/Texture.js";import{TextureDescriptor as L}from"../../webgl/TextureDescriptor.js";class N{constructor(e,t,r,s){this.start=e,this.end=t,this.blendMode=r,this.opacity=s}}class C{constructor(e,t,r,s){this._rctx=e,this.tileSize=t,this._techniques=r,this._cache=s,this._passParameters=new c,this._backgroundTexture=null,this._backgroundColor=null,this._backgroundDirty=!1,this._maxAnisotropy=this._rctx.parameters.maxMaxAnisotropy,this._composition=new x(this._rctx,this._techniques),this._ensureBackgroundTexture(this.tileSize)}dispose(){this._composition=e(this._composition),this._backgroundTexture=t(this._backgroundTexture)}get backgroundIsGrid(){return null==this._backgroundColor}get backgroundColor(){return this._backgroundColor}updateTileTexture(e,t){if(!e.renderData)return;const r=e.surface,s=r.baseOpacity;let o=0,n=0,c=this.tileSize,u=!1;const l=r.view.state.contentPixelRatio;let m=!1;z.clear(),H.length=0;const _=e.layerInfo[p.MAP];let f=_.length,T=0,y=null;for(;T<_.length;T++){const t=r.layerViewByIndex(T,p.MAP),g=t.layer.opacity;F[T]=g;const b=t.fullOpacity;if(q[T]=b,a(t.layer)&&f>=_.length&&(f=T),h(t)){v[T]=t.layer.blendMode;let e="normal"!==t.layer.blendMode;if(i(t.layer.parent)){const r=U(t.layer.parent);null!=r&&""!==r&&(e=B(t.layer.parent)||e)}e&&(m=e,u=!1)}if(0===g&&!m){_[T].pendingUpdates&=~(k.TEXTURE_NOFADING&k.TEXTURE_FADING);continue}++n;const x=S(e,T);if(x){if(_[T].pendingUpdates&=~(k.TEXTURE_NOFADING&k.TEXTURE_FADING),i(t.layer.parent)){const e=U(t.layer.parent);null!=e&&""!==e&&G(t.layer.parent,T)}d(t)?c=Math.max(c,this.tileSize*l):1===s&&1===b&&(t.isOpaque||this._dataToTexture(x)&&x.sourceLayerInfo.data.descriptor.isOpaque)&&(u=!0),++o,null===y&&(y=T)}}const g=c/this.tileSize;0!==o&&null!==y?1===o&&!m&&this._useLayerTexture(e,y,f,q[y])||this._composeMapLayers(e,t,T-1,f,F,v,c,g,!u||m,z,m):this._useBackgroundTexture(e,n)}_ensureBackgroundTexture(e){return null==this._backgroundTexture&&(this._backgroundTexture=this._buildTexture(e,!1),this._backgroundDirty=!0),this._backgroundDirty&&(this._composition.bind(e),this._passParameters.offset=o,this._passParameters.scale=1,this._passParameters.opacity=1,null!=this.backgroundColor&&(this._passParameters.backgroundColor=this.backgroundColor),this._composition.drawBackground(this._passParameters,null!=this.backgroundColor),this._composition.copyFBOToTexture(this._backgroundTexture),this._composition.unbind(),this._backgroundDirty=!1),this._backgroundTexture}_useBackgroundTexture(e,t){const r=this._ensureBackgroundTexture(this.tileSize);let s=g.Immediate;(e.surface.view.layerViewManager.updating||t>0)&&(s=g.Delayed);const o=e.renderData;null==o.textureReference&&(s=g.Immediate),o.setTextureReference(new b(r,u.FADING,V,e.surface.baseOpacity,0,1),s)}_useLayerTexture(e,t,r,s){const o=t<r,a=o?1:e.surface.baseOpacity,i=o?e.surface.baseOpacity:1,n=S(e,t);return!!this._dataToTexture(n)&&(e.renderData.setTextureReference(new b(n.sourceLayerInfo.data,u.FADING,n,a,i,s)),!0)}_composeMapLayers(e,t,r,s,a,i,n,c,u,l,p){this._composition.ensureBuffer(n);const h=e.surface.baseOpacity;let d=!1,f=M.LINEAR_MIPMAP_LINEAR,T=!1,y=0;for(let b=r;b>=0;b--){const t=S(e,b);if(!t||0===a[b]&&!p)continue;const r=b<s&&h<1&&!d;r&&(d=!0),this._passParameters.baseOpacity=r?h:1;const g=this._passParameters.baseOpacity<1?P.Required:P.NotRequired;let x=!1;l.forEach((e=>{e.start===b&&(H.push(e),this._composition.openGroup(n),x=!0)}));const w=0===y,I=x?E.GroupBackgroundComposite:u&&w?this.backgroundIsGrid?E.GridComposite:E.ColorComposite:E.Composite,k=A[i[b]];for(m(t)?(this._passParameters.opacity=a[b],T=this._composition.drawVectorData(this._passParameters,I,n,k,g,t,c,this.tileSize,T)):_(t)?(this._passParameters.opacity=a[b],this._composition.drawImageryTileData(this._passParameters,I,n,k,g,t),this._hasNearestInterpolation(t)&&(f=M.NEAREST)):this._dataToTexture(t)&&(this._passParameters.texture=t.sourceLayerInfo.data.texture,this._passParameters.offset=t.offset,this._passParameters.scale=t.scale,this._passParameters.opacity=a[b],this._composition.drawRasterData(this._passParameters,I,n,k,g));H.length>0&&H[H.length-1].end===b;){const e=H.pop();this._passParameters.opacity=e.opacity,this._passParameters.offset=o,this._passParameters.scale=1;const t=u&&w?this.backgroundIsGrid?E.GridComposite:E.ColorComposite:E.Composite;this._composition.drawGroup(this._passParameters,t,n,A[e.blendMode],g)}y++}const g=e.renderData,x=p||d&&h<1,w=g.ensureTexture(n,x,(()=>this._buildTexture(n,x,f)));this._composition.copyFBOToTexture(w),this._composition.unbind(),g.setTextureReference(new b(w,t,V,d?1:h,0,1))}_hasNearestInterpolation(e){const t=e.sourceLayerInfo.data;return!!t.source&&"nearest"===t.interpolation}_dataToTexture(e){if(f(e)){const t=e.sourceLayerInfo;t.data=this._buildTexture(t.data,!0),e.tile.setMemoryDirty()}return T(e)}setBackground(e){this._backgroundColor!==e&&(this._backgroundColor=e,this._backgroundDirty=!0)}_buildTexture(e,t,r=M.LINEAR_MIPMAP_LINEAR){if(null==e)return null;const s=new L;s.wrapMode=D.CLAMP_TO_EDGE,s.samplingMode=r,s.maxAnisotropy=this._maxAnisotropy,s.preMultiplyAlpha=!0,s.flipped=!0,s.hasMipmap=!0,t||(s.pixelFormat=O.RGB);const o=this._rctx;let a;if("number"==typeof e){s.width=s.height=e;const t=`${e} ${s.pixelFormat}`,r=this._cache.pop(t);r?(r.retain(),a=r):a=new I(new j(o,s),this._cache)}else if(e instanceof n)s.isOpaque=e.isOpaque,s.isOpaque&&(s.pixelFormat=O.RGB),a=new I(new j(o,s,e.image)),e.release();else try{s.width=e.width,s.height=e.height,a=new I(new j(o,s,e))}catch(c){a=new I(R(o)),console.warn("TileRenderer: failed to execute 'texImage2D', cross-origin image may not be loaded.")}const i=o.bindTexture(a.texture,j.TEXTURE_UNIT_FOR_UPDATES);return a.generateMipmap(),o.bindTexture(i,j.TEXTURE_UNIT_FOR_UPDATES),a}get test(){return{backgroundTexture:this._backgroundTexture}}}function S(e,t){X.layerIndex=t,X.vtlNeighborInfos.clear();const o=e.layerInfo[p.MAP][t];if(o.data)return r(X.offset,0,0),X.tile=e,X.scale=1,X.sourceLod=e.lij,X.sourceLayerInfo=o,m(X)&&e.forEachLoadedNeighbor(((r,s)=>{if(r.level!==e.level)return;const a=r.layerInfo[p.MAP][t];if(!y(a)||o.data===a.data)return;const i=X.vtlNeighborInfos.pushNew();i.offset=W[s],i.sourceLod=r.lij,i.sourceLayerInfo=a})),X;const a=o.upsampleInfo;if(a){const e=a.tile.layerInfo[p.MAP][t];return X.tile=a.tile,s(X.offset,a.offset),X.scale=a.scale,X.sourceLod=a.tile.lij,X.sourceLayerInfo=e,X}return null}function U(e){return e.uid}function B(e){let t="normal"!==e.blendMode;return i(e.parent)&&(t=B(e.parent)||t),t}function G(e,t){i(e.parent)&&G(e.parent,t);const r=U(e);if(null!=r&&""!==r){const s=z.get(r);s?s.start=t:z.set(r,new N(t,t,e.blendMode,e.opacity))}}const F=new Array,q=new Array,v=new Array,z=new Map,H=new Array,X=new w,V={offset:[0,0],scale:1},W=new Array;W[l.NORTH]=[0,-1],W[l.NORTH_EAST]=[-1,-1],W[l.EAST]=[-1,0],W[l.SOUTH_EAST]=[-1,1],W[l.SOUTH]=[0,1],W[l.SOUTH_WEST]=[1,1],W[l.WEST]=[1,0],W[l.NORTH_WEST]=[1,-1];export{N as GroupInfo,C as TileRenderer};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import"../../../geometry.js";import e from"../../../core/Error.js";import{deg2rad as i,floatEqualAbsolute as t,floatEqualRelative as s}from"../../../core/mathUtils.js";import{getMetersPerUnitForSR as r}from"../../../core/unitUtils.js";import n from"../../../geometry/Extent.js";import{canProjectToWGS84ComparableLonLat as l}from"../../../geometry/projection.js";import o from"../../../geometry/SpatialReference.js";import{create as a}from"../../../geometry/support/aaBoundingRect.js";import{isMars as h,isMoon as c}from"../../../geometry/support/spatialReferenceUtils.js";import{x2lon as m,y2lat as u}from"../../../geometry/support/webMercatorUtils.js";import p from"../../../layers/support/LOD.js";import g from"../../../layers/support/TileInfo.js";import f from"../../../geometry/Point.js";const x=12;class v{constructor(e){const i=v.checkUnsupported(e);if(null!=i)throw i;const t=e;this.spatialReference=t.spatialReference,this._isWebMercator=this.spatialReference.isWebMercator,this._isGCS=l(this.spatialReference)||h(this.spatialReference)||c(this.spatialReference),this.origin=[t.origin.x,t.origin.y],this.pixelSize=t.size[0],this.dpi=t.dpi;const s=t.lods.reduce(((e,i,t)=>(i.level<e.min&&(e.min=i.level,e.minIndex=t),e.max=Math.max(e.max,i.level),e)),{min:1/0,minIndex:0,max:-1/0}),r=t.lods[s.minIndex],n=2**r.level;let o=r.resolution*n,a=r.scale*n;this.levels=new Array(s.max+1);for(let l=0;l<this.levels.length;l++)this.levels[l]={resolution:o,scale:a,tileSize:[o*t.size[0],o*t.size[1]]},o/=2,a/=2}clone(){return new v(this.toTileInfo())}toTileInfo(){return new g({dpi:this.dpi,origin:new f({x:this.origin[0],y:this.origin[1],spatialReference:this.spatialReference}),size:[this.pixelSize,this.pixelSize],spatialReference:this.spatialReference,lods:this.levels.map(((e,i)=>new p({level:i,scale:e.scale,resolution:e.resolution})))})}getExtent(e,i,t,s){const r=this.levels[e],n=r.tileSize[0],l=r.tileSize[1];s[0]=this.origin[0]+t*n,s[2]=this.origin[0]+(t+1)*n,s[3]=this.origin[1]-i*l,s[1]=this.origin[1]-(i+1)*l}convertExtentToRadians(e,t){this._isWebMercator?(t[0]=m(e[0]),t[1]=u(e[1]),t[2]=m(e[2]),t[3]=u(e[3])):this._isGCS&&(t[0]=i(e[0]),t[1]=i(e[1]),t[2]=i(e[2]),t[3]=i(e[3]))}getExtentGeometry(e,i,t,s=new n){return this.getExtent(e,i,t,M),s.spatialReference=this.spatialReference,s.xmin=M[0],s.ymin=M[1],s.xmax=M[2],s.ymax=M[3],s.zmin=void 0,s.zmax=void 0,s}ensureMaxLod(e){if(null==e)return!1;let i=!1;for(;this.levels.length<=e;){const e=this.levels.at(-1),t=e.resolution/2;this.levels.push({resolution:t,scale:e.scale/2,tileSize:[t*this.pixelSize,t*this.pixelSize]}),i=!0}return i}capMaxLod(e){this.levels.length>e+1&&(this.levels.length=e+1)}getMaxLod(){return this.levels.length-1}scaleAtLevel(e){return this.levels[0].scale/2**e}levelAtScale(e){const i=this.levels[0].scale;return e>=i?0:Math.log(i/e)*Math.LOG2E}resolutionAtLevel(e){return this.levels[0].resolution/2**e}compatibleWith(e){if(!(e instanceof v)){if(v.checkUnsupported(e))return!1;e=new v(e)}if(!e.spatialReference.equals(this.spatialReference))return!1;if(e.pixelSize!==this.pixelSize)return!1;const i=Math.min(this.levels.length,e.levels.length)-1,s=this.levels[i].resolution;let r=.5*s;if(!t(e.origin[0],this.origin[0],r)||!t(e.origin[1],this.origin[1],r))return!1;return r=.5*s/2**i/this.pixelSize*x,t(s,e.levels[i].resolution,r)}rootTilesInExtent(e,i=null,t=1/0){const s=new Array,r=this.levels[0].tileSize;if(null==e||0===r[0]||0===r[1])return s;v.computeRowColExtent(e,r,this.origin,M);let n=M[1],l=M[3],o=M[0],a=M[2];const h=a-o,c=l-n;if(h*c>t){const e=Math.floor(Math.sqrt(t));c>e&&(n=n+Math.floor(.5*c)-Math.floor(.5*e),l=n+e),h>e&&(o=o+Math.floor(.5*h)-Math.floor(.5*e),a=o+e)}for(let m=n;m<l;m++)for(let e=o;e<a;e++)s.push([0,m,e]);return null!=i&&(i[0]=this.origin[0]+o*r[0],i[1]=this.origin[1]-l*r[1],i[2]=this.origin[0]+a*r[0],i[3]=this.origin[1]-n*r[1]),s}static computeRowColExtent(e,i,t,s){const r=.001*(e[2]-e[0]+(e[3]-e[1]));s[0]=Math.max(0,Math.floor((e[0]+r-t[0])/i[0])),s[2]=Math.max(0,Math.ceil((e[2]-r-t[0])/i[0])),s[1]=Math.max(0,Math.floor((t[1]-e[3]+r)/i[1])),s[3]=Math.max(0,Math.ceil((t[1]-e[1]-r)/i[1]))}static isPowerOfTwo(e){const i=e.lods,t=i[0].resolution*2**i[0].level;return!i.some((e=>!s(e.resolution,t/2**e.level)))}static hasGapInLevels(e){const i=e.lods.map((e=>e.level));i.sort(((e,i)=>e-i));for(let t=1;t<i.length;t++)if(i[t]!==i[0]+t)return!0;return!1}static tileSizeSupported(e){const i=e.size[1];return i===e.size[0]&&0==(i&i-1)&&i>=128&&i<=512}static hasOriginPerLODs(e){const i=e.origin;return e.lods.some((e=>null!=e.origin&&(e.origin[0]!==i.x||e.origin[1]!==i.y)))}static getMissingTileInfoError(){return new e("tilingscheme:tile-info-missing","Tiling scheme must have tiling information")}static checkUnsupported(i){return null==i?w():i.lods.length<1?new e("tilingscheme:generic","Tiling scheme must have at least one level"):v.isPowerOfTwo(i)?v.hasGapInLevels(i)?new e("tilingscheme:gaps","Tiling scheme levels must not have gaps between min and max level"):v.tileSizeSupported(i)?v.hasOriginPerLODs(i)?new e("tilingscheme:multiple-origin","Tiling scheme levels must not have their own origin"):null:new e("tilingscheme:tile-size","Tiles must be square and size must be one of [128, 256, 512]"):new e("tilingscheme:power-of-two","Tiling scheme must be power of two")}static fromExtent(e,i){const t=e[2]-e[0],s=e[3]-e[1],n=r(i),l=1.2*Math.max(t,s),o=256,a=96,h=.0254,c=new v(new g({size:[o,o],origin:new f({x:e[0]-.5*(l-t),y:e[3]+.5*(l-s)}),lods:[new p({level:0,resolution:l/o,scale:1/(o/a*h/(l*n))})],spatialReference:i}));return c.ensureMaxLod(20),c}static makeWebMercatorAuxiliarySphere(e){const i=new v(v.WebMercatorAuxiliarySphereTileInfo);return i.ensureMaxLod(e),i}static makeGCSWithTileSize(e,i=256,t=16){const s=256/i,r=new v(new g({size:[i,i],origin:new f({x:-180,y:90,spatialReference:e}),spatialReference:e,lods:[new p({level:0,resolution:.703125*s,scale:295497598.570834*s})]}));return r.ensureMaxLod(t),r}get test(){return{isWebMercator:this._isWebMercator,isGCS:this._isGCS}}}function w(){return new e("tilingscheme:tile-info-missing","Tiling scheme must have tiling information")}v.WebMercatorAuxiliarySphereTileInfo=new g({size:[256,256],origin:new f({x:-20037508.342787,y:20037508.342787,spatialReference:o.WebMercator}),spatialReference:o.WebMercator,lods:[new p({level:0,resolution:156543.03392800014,scale:591657527.591555})]}),v.WebMercatorAuxiliarySphere=v.makeWebMercatorAuxiliarySphere(19);const M=a();export{v as TilingScheme,w as getMissingTileInfoError};
5
+ import"../../../geometry.js";import e from"../../../core/Error.js";import{deg2rad as i,floatEqualAbsolute as t,floatEqualRelative as s}from"../../../core/mathUtils.js";import{getMetersPerUnitForSR as r}from"../../../core/unitUtils.js";import n from"../../../geometry/Extent.js";import{canProjectToWGS84ComparableLonLat as l}from"../../../geometry/projection.js";import o from"../../../geometry/SpatialReference.js";import{create as a}from"../../../geometry/support/aaBoundingRect.js";import{isMars as h,isMoon as c}from"../../../geometry/support/spatialReferenceUtils.js";import{x2lon as m,y2lat as u}from"../../../geometry/support/webMercatorUtils.js";import p from"../../../layers/support/LOD.js";import g from"../../../layers/support/TileInfo.js";import f from"../../../geometry/Point.js";const x=12;class v{constructor(e){const i=v.checkUnsupported(e);if(null!=i)throw i;const t=e;this.spatialReference=t.spatialReference,this._isWebMercator=this.spatialReference.isWebMercator,this._isGCS=l(this.spatialReference)||h(this.spatialReference)||c(this.spatialReference),this.origin=[t.origin.x,t.origin.y],this.pixelSize=t.size[0],this.dpi=t.dpi;const s=t.lods.reduce(((e,i,t)=>(i.level<e.min&&(e.min=i.level,e.minIndex=t),e.max=Math.max(e.max,i.level),e)),{min:1/0,minIndex:0,max:-1/0}),r=t.lods[s.minIndex],n=2**r.level;let o=r.resolution*n,a=r.scale*n;this.levels=new Array(s.max+1);for(let l=0;l<this.levels.length;l++)this.levels[l]={resolution:o,scale:a,tileSize:[o*t.size[0],o*t.size[1]]},o/=2,a/=2}clone(){return new v(this.toTileInfo())}toTileInfo(){return new g({dpi:this.dpi,origin:new f({x:this.origin[0],y:this.origin[1],spatialReference:this.spatialReference}),size:[this.pixelSize,this.pixelSize],spatialReference:this.spatialReference,lods:this.levels.map(((e,i)=>new p({level:i,scale:e.scale,resolution:e.resolution})))})}getExtent(e,i,t,s){const r=this.levels[e],n=r.tileSize[0],l=r.tileSize[1];s[0]=this.origin[0]+t*n,s[2]=this.origin[0]+(t+1)*n,s[3]=this.origin[1]-i*l,s[1]=this.origin[1]-(i+1)*l}convertExtentToRadians(e,t){this._isWebMercator?(t[0]=m(e[0]),t[1]=u(e[1]),t[2]=m(e[2]),t[3]=u(e[3])):this._isGCS&&(t[0]=i(e[0]),t[1]=i(e[1]),t[2]=i(e[2]),t[3]=i(e[3]))}getExtentGeometry(e,i,t,s=new n){return this.getExtent(e,i,t,M),s.spatialReference=this.spatialReference,s.xmin=M[0],s.ymin=M[1],s.xmax=M[2],s.ymax=M[3],s.zmin=void 0,s.zmax=void 0,s}ensureMaxLod(e){if(null==e)return!1;let i=!1;for(;this.levels.length<=e;){const e=this.levels[this.levels.length-1],t=e.resolution/2;this.levels.push({resolution:t,scale:e.scale/2,tileSize:[t*this.pixelSize,t*this.pixelSize]}),i=!0}return i}capMaxLod(e){this.levels.length>e+1&&(this.levels.length=e+1)}getMaxLod(){return this.levels.length-1}scaleAtLevel(e){return this.levels[0].scale/2**e}levelAtScale(e){const i=this.levels[0].scale;return e>=i?0:Math.log(i/e)*Math.LOG2E}resolutionAtLevel(e){return this.levels[0].resolution/2**e}compatibleWith(e){if(!(e instanceof v)){if(v.checkUnsupported(e))return!1;e=new v(e)}if(!e.spatialReference.equals(this.spatialReference))return!1;if(e.pixelSize!==this.pixelSize)return!1;const i=Math.min(this.levels.length,e.levels.length)-1,s=this.levels[i].resolution;let r=.5*s;if(!t(e.origin[0],this.origin[0],r)||!t(e.origin[1],this.origin[1],r))return!1;return r=.5*s/2**i/this.pixelSize*x,t(s,e.levels[i].resolution,r)}rootTilesInExtent(e,i=null,t=1/0){const s=new Array,r=this.levels[0].tileSize;if(null==e||0===r[0]||0===r[1])return s;v.computeRowColExtent(e,r,this.origin,M);let n=M[1],l=M[3],o=M[0],a=M[2];const h=a-o,c=l-n;if(h*c>t){const e=Math.floor(Math.sqrt(t));c>e&&(n=n+Math.floor(.5*c)-Math.floor(.5*e),l=n+e),h>e&&(o=o+Math.floor(.5*h)-Math.floor(.5*e),a=o+e)}for(let m=n;m<l;m++)for(let e=o;e<a;e++)s.push([0,m,e]);return null!=i&&(i[0]=this.origin[0]+o*r[0],i[1]=this.origin[1]-l*r[1],i[2]=this.origin[0]+a*r[0],i[3]=this.origin[1]-n*r[1]),s}static computeRowColExtent(e,i,t,s){const r=.001*(e[2]-e[0]+(e[3]-e[1]));s[0]=Math.max(0,Math.floor((e[0]+r-t[0])/i[0])),s[2]=Math.max(0,Math.ceil((e[2]-r-t[0])/i[0])),s[1]=Math.max(0,Math.floor((t[1]-e[3]+r)/i[1])),s[3]=Math.max(0,Math.ceil((t[1]-e[1]-r)/i[1]))}static isPowerOfTwo(e){const i=e.lods,t=i[0].resolution*2**i[0].level;return!i.some((e=>!s(e.resolution,t/2**e.level)))}static hasGapInLevels(e){const i=e.lods.map((e=>e.level));i.sort(((e,i)=>e-i));for(let t=1;t<i.length;t++)if(i[t]!==i[0]+t)return!0;return!1}static tileSizeSupported(e){const i=e.size[1];return i===e.size[0]&&0==(i&i-1)&&i>=128&&i<=512}static hasOriginPerLODs(e){const i=e.origin;return e.lods.some((e=>null!=e.origin&&(e.origin[0]!==i.x||e.origin[1]!==i.y)))}static getMissingTileInfoError(){return new e("tilingscheme:tile-info-missing","Tiling scheme must have tiling information")}static checkUnsupported(i){return null==i?w():i.lods.length<1?new e("tilingscheme:generic","Tiling scheme must have at least one level"):v.isPowerOfTwo(i)?v.hasGapInLevels(i)?new e("tilingscheme:gaps","Tiling scheme levels must not have gaps between min and max level"):v.tileSizeSupported(i)?v.hasOriginPerLODs(i)?new e("tilingscheme:multiple-origin","Tiling scheme levels must not have their own origin"):null:new e("tilingscheme:tile-size","Tiles must be square and size must be one of [128, 256, 512]"):new e("tilingscheme:power-of-two","Tiling scheme must be power of two")}static fromExtent(e,i){const t=e[2]-e[0],s=e[3]-e[1],n=r(i),l=1.2*Math.max(t,s),o=256,a=96,h=.0254,c=new v(new g({size:[o,o],origin:new f({x:e[0]-.5*(l-t),y:e[3]+.5*(l-s)}),lods:[new p({level:0,resolution:l/o,scale:1/(o/a*h/(l*n))})],spatialReference:i}));return c.ensureMaxLod(20),c}static makeWebMercatorAuxiliarySphere(e){const i=new v(v.WebMercatorAuxiliarySphereTileInfo);return i.ensureMaxLod(e),i}static makeGCSWithTileSize(e,i=256,t=16){const s=256/i,r=new v(new g({size:[i,i],origin:new f({x:-180,y:90,spatialReference:e}),spatialReference:e,lods:[new p({level:0,resolution:.703125*s,scale:295497598.570834*s})]}));return r.ensureMaxLod(t),r}get test(){return{isWebMercator:this._isWebMercator,isGCS:this._isGCS}}}function w(){return new e("tilingscheme:tile-info-missing","Tiling scheme must have tiling information")}v.WebMercatorAuxiliarySphereTileInfo=new g({size:[256,256],origin:new f({x:-20037508.342787,y:20037508.342787,spatialReference:o.WebMercator}),spatialReference:o.WebMercator,lods:[new p({level:0,resolution:156543.03392800014,scale:591657527.591555})]}),v.WebMercatorAuxiliarySphere=v.makeWebMercatorAuxiliarySphere(19);const M=a();export{v as TilingScheme,w as getMissingTileInfoError};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{ComponentRangeRunLengthEncoded as t}from"./IndexRange/ComponentRangeRunLengthEncoded.js";class e{constructor(e,h){this.offsets=h,this.pickability=null,this.highlightCounts=null,this.verticalOffsets=null,this.cachedGeometryRanges=null,this.cachedHighlightRanges=null,this.cachedDefaultRanges=null;const i=this.count;this.visibility=new t(i),this.materialDataBuffer=e.getBuffer(i),this.materialDataIndices=new Uint16Array(i);for(let t=0;t<i;t++)this.materialDataIndices[t]=this.materialDataBuffer.acquireIndex()}destroy(){for(let t=0;t<this.count;t++)this.materialDataBuffer.releaseIndex(this.materialDataIndices[t])}get count(){return this.offsets.length-1}get geometryRanges(){return null==this.cachedGeometryRanges&&(this.cachedGeometryRanges=this.visibility.computeOffsetRanges(this.offsets)),this.cachedGeometryRanges}get highlightRanges(){return null==this.highlightCounts?null:(this._updateCachedHighlightRanges(),this.cachedHighlightRanges)}get defaultShadowMapRanges(){return null==this.highlightCounts?this.geometryRanges:(this._updateCachedHighlightRanges(),this.cachedDefaultRanges)}highlightsDirty(){this.cachedHighlightRanges=null,this.cachedDefaultRanges=null}visibilityDirty(){this.cachedGeometryRanges=null,this.highlightsDirty()}_updateCachedHighlightRanges(){if((null==this.cachedHighlightRanges||null==this.cachedDefaultRanges)&&null!=this.highlightCounts){const{highlightRanges:t,defaultRanges:e}=h(this.highlightCounts,this.visibility,this.offsets);this.cachedHighlightRanges=t,this.cachedDefaultRanges=e}}}function h(t,e,h){const i=[],s=[];let a=h.length,n=h.length;return e.forEachComponent((e=>(t[e]>0?(a!==e-1&&(i.length&&i.push(h[a+1]-i.at(-1)),i.push(h[e])),a=e):(n!==e-1&&(s.length&&s.push(h[n+1]-s.at(-1)),s.push(h[e])),n=e),!0))),i.length&&i.push(h[a+1]-i.at(-1)),s.length&&s.push(h[n+1]-s.at(-1)),{highlightRanges:i,defaultRanges:s}}export{e as default};
5
+ import{ComponentRangeRunLengthEncoded as t}from"./IndexRange/ComponentRangeRunLengthEncoded.js";class e{constructor(e,h){this.offsets=h,this.pickability=null,this.highlightCounts=null,this.verticalOffsets=null,this.cachedGeometryRanges=null,this.cachedHighlightRanges=null,this.cachedDefaultRanges=null;const i=this.count;this.visibility=new t(i),this.materialDataBuffer=e.getBuffer(i),this.materialDataIndices=new Uint16Array(i);for(let t=0;t<i;t++)this.materialDataIndices[t]=this.materialDataBuffer.acquireIndex()}destroy(){for(let t=0;t<this.count;t++)this.materialDataBuffer.releaseIndex(this.materialDataIndices[t])}get count(){return this.offsets.length-1}get geometryRanges(){return null==this.cachedGeometryRanges&&(this.cachedGeometryRanges=this.visibility.computeOffsetRanges(this.offsets)),this.cachedGeometryRanges}get highlightRanges(){return null==this.highlightCounts?null:(this._updateCachedHighlightRanges(),this.cachedHighlightRanges)}get defaultShadowMapRanges(){return null==this.highlightCounts?this.geometryRanges:(this._updateCachedHighlightRanges(),this.cachedDefaultRanges)}highlightsDirty(){this.cachedHighlightRanges=null,this.cachedDefaultRanges=null}visibilityDirty(){this.cachedGeometryRanges=null,this.highlightsDirty()}_updateCachedHighlightRanges(){if((null==this.cachedHighlightRanges||null==this.cachedDefaultRanges)&&null!=this.highlightCounts){const{highlightRanges:t,defaultRanges:e}=h(this.highlightCounts,this.visibility,this.offsets);this.cachedHighlightRanges=t,this.cachedDefaultRanges=e}}}function h(t,e,h){const i=[],s=[];let a=h.length,n=h.length;return e.forEachComponent((e=>(t[e]>0?(a!==e-1&&(i.length&&i.push(h[a+1]-i[i.length-1]),i.push(h[e])),a=e):(n!==e-1&&(s.length&&s.push(h[n+1]-s[s.length-1]),s.push(h[e])),n=e),!0))),i.length&&i.push(h[a+1]-i[i.length-1]),s.length&&s.push(h[n+1]-s[s.length-1]),{highlightRanges:i,defaultRanges:s}}export{e as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{f as s,t as e,e as t}from"../../../../../chunks/mat3.js";import{c as a}from"../../../../../chunks/mat3f64.js";import{c as r}from"../../../../../chunks/mat4.js";import{s as i,c as h}from"../../../../../chunks/vec3.js";import{c as o}from"../../../../../chunks/vec3f64.js";import{MaterialPassParameters as n,ShadowMapPassParameters as m,HighlightPassParameters as l,RenderPassIdentifier as c}from"./AllRenderPasses.js";import{RenderPass as p,RenderPassSorting as u}from"./RenderPass.js";import{ShaderOutput as d}from"../shaderLibrary/ShaderOutput.js";import{TwoVectorPosition as _}from"../util/TwoVectorPosition.js";import{union as g}from"../../lib/depthRange.js";import{RenderSlot as P}from"../../lib/RenderSlot.js";class w{constructor(s,e){this.rctx=s,this.shaderTechniqueRepository=e,this._materialPassParameters=new n,this._shadowPassParameters=new m,this._highlightPassParameters=new l,this._systems=new Set,this._passes={materialOpaque:new p(s,e),materialTransparent:new p(s,e,u.BackToFront),materialIntegratedMesh:new p(s,e),shadowMap:new p(s,e),highlight:new p(s,e),highlightIntegratedMesh:new p(s,e),highlightShadowMap:new p(s,e),defaultShadowMap:new p(s,e)}}destroy(){this._context=null,this._systems.clear()}register(s){this._systems.add(s)}canRender(s){return s!==P.TRANSPARENT_MATERIAL||this._passes.materialTransparent.count>0}requiresOutput(s){return s===d.Highlight&&(this._passes.highlight.count>0||this._passes.highlightIntegratedMesh.count>0)}prepareRender(s){if(0!==this._systems.size){for(const s of Object.values(this._passes))s.prepareSubmit();this._systems.forEach((e=>e.submit(this._passes,s.bindParameters)));for(const s of Object.values(this._passes))s.finishSubmit();this.shaderTechniqueRepository.frameUpdate()}}prepareTechniques(s){return 0===this._systems.size?null:(this._configure(s),this._materialPassParameters.output=s.output,this._invoke(s,((e,t)=>e.prepare(t,s.bindParameters))))}render(s,e){this._invoke(s,((t,a)=>t.dispatch(a,s.bindParameters,e)))}_invoke(s,e){switch(s.bindParameters.slot){case P.OPAQUE_MATERIAL:switch(s.output){case d.Color:case d.Depth:case d.Normal:case d.ObjectAndLayerIdColor:return e(this._passes.materialOpaque,this._materialPassParameters);case d.Highlight:return e(this._passes.highlight,this._highlightPassParameters);case d.Shadow:return e(this._passes.shadowMap,this._shadowPassParameters);case d.ShadowHighlight:return e(this._passes.highlightShadowMap,this._shadowPassParameters);case d.ShadowExcludeHighlight:return e(this._passes.defaultShadowMap,this._shadowPassParameters)}break;case P.TRANSPARENT_MATERIAL:switch(s.output){case d.Color:case d.Alpha:case d.Depth:case d.Normal:case d.ObjectAndLayerIdColor:return e(this._passes.materialTransparent,this._materialPassParameters)}break;case P.INTEGRATED_MESH:switch(s.output){case d.Color:case d.Depth:case d.Normal:case d.ObjectAndLayerIdColor:return e(this._passes.materialIntegratedMesh,this._materialPassParameters);case d.Highlight:return e(this._passes.highlightIntegratedMesh,this._highlightPassParameters)}}return null}notifyDirty(){this._context.requestRender()}get renderSlots(){return[P.OPAQUE_MATERIAL,P.TRANSPARENT_MATERIAL,P.INTEGRATED_MESH]}initializeRenderContext(s){this._context=s}uninitializeRenderContext(){}queryDepthRange(s){const e={near:1/0,far:-1/0};return this._systems.forEach((t=>{const a=t.queryShadowCasterDepthRange(s);null!=a&&g(e,a,e)})),e}_configure(s){const e=s.output===d.Shadow||s.output===d.ShadowHighlight||s.output===d.ShadowExcludeHighlight?this._shadowPassParameters:s.output===d.Highlight?this._highlightPassParameters:this._materialPassParameters;this._updateParameters(s,e)}_updateParameters(a,o){const n=a.bindParameters.camera,m=n.viewInverseTransposeMatrix;i(f,m[3],m[7],m[11]),T.set(f),h(o.transformWorldFromViewTH,T.high),h(o.transformWorldFromViewTL,T.low),h(o.slicePlaneLocalOrigin,f),s(o.transformViewFromCameraRelativeRS,n.viewMatrix),r(o.transformProjFromView,n.projectionMatrix),o.identifier===c.Material&&(this._materialPassParameters.transparent=a.bindParameters.slot===P.TRANSPARENT_MATERIAL,this._materialPassParameters.integratedMesh=a.bindParameters.slot===P.INTEGRATED_MESH,e(R,o.transformViewFromCameraRelativeRS),t(o.transformNormalViewFromGlobal,R))}}const f=o(),R=a(),T=new _;export{w as RenderPassManager};
5
+ import{_ as s}from"../../../../../chunks/tslib.es6.js";import"../../../../../core/Logger.js";import"../../../../../core/accessorSupport/ensureType.js";import"../../../../../core/arrayUtils.js";import"../../../../../core/has.js";import"../../../../../core/Error.js";import{subclass as e}from"../../../../../core/accessorSupport/decorators/subclass.js";import{f as t,t as r,e as a}from"../../../../../chunks/mat3.js";import{c as i}from"../../../../../chunks/mat3f64.js";import{c as h}from"../../../../../chunks/mat4.js";import{s as o,c as n}from"../../../../../chunks/vec3.js";import{c as l}from"../../../../../chunks/vec3f64.js";import{MaterialPassParameters as m,ShadowMapPassParameters as c,HighlightPassParameters as p,RenderPassIdentifier as u}from"./AllRenderPasses.js";import{RenderPass as d,RenderPassSorting as _}from"./RenderPass.js";import{ShaderOutput as g}from"../shaderLibrary/ShaderOutput.js";import{TwoVectorPosition as P}from"../util/TwoVectorPosition.js";import{SyncPreparesRenderPlugin as w}from"../../effects/RenderPlugin.js";import{union as f}from"../../lib/depthRange.js";import{RenderSlot as R}from"../../lib/RenderSlot.js";let A=class extends w{get renderSlots(){return[R.OPAQUE_MATERIAL,R.TRANSPARENT_MATERIAL,R.INTEGRATED_MESH]}constructor(){super({}),this._passes=null,this._materialPassParameters=new m,this._shadowPassParameters=new c,this._highlightPassParameters=new p,this._systems=new Set}initializeRenderContext(s){this._context=s;const e=s.renderContext.rctx,t=s.techniqueRepository;this._passes={materialOpaque:new d(e,t),materialTransparent:new d(e,t,_.BackToFront),materialIntegratedMesh:new d(e,t),shadowMap:new d(e,t),highlight:new d(e,t),highlightIntegratedMesh:new d(e,t),highlightShadowMap:new d(e,t),defaultShadowMap:new d(e,t)}}get rctx(){return this._context.renderContext.rctx}uninitializeRenderContext(){}dispose(){this._context=null,this._systems.clear()}register(s){this._systems.add(s)}canRender(s){return s!==R.TRANSPARENT_MATERIAL||null==this._passes||this._passes.materialTransparent.count>0}requiresOutput(s){return s===g.Highlight&&null!=this._passes&&(this._passes.highlight.count>0||this._passes.highlightIntegratedMesh.count>0)||s===g.ShadowHighlight&&null!=this._passes&&this._passes.highlight.count>0}prepareRender(s){if(0!==this._systems.size&&null!==this._passes){for(const s of Object.values(this._passes))s.prepareSubmit();this._systems.forEach((e=>e.submit(this._passes,s.bindParameters)));for(const s of Object.values(this._passes))s.finishSubmit();this._context.techniqueRepository.frameUpdate()}}prepareTechniques(s){return 0===this._systems.size?null:(this._configure(s),this._materialPassParameters.output=s.output,this._invoke(s,((e,t)=>e.prepare(t,s.bindParameters))))}render(s,e){this._invoke(s,((t,r)=>t.dispatch(r,s.bindParameters,e)))}_invoke(s,e){if(null===this._passes)return null;switch(s.bindParameters.slot){case R.OPAQUE_MATERIAL:switch(s.output){case g.Color:case g.Depth:case g.Normal:case g.ObjectAndLayerIdColor:return e(this._passes.materialOpaque,this._materialPassParameters);case g.Highlight:return e(this._passes.highlight,this._highlightPassParameters);case g.Shadow:return e(this._passes.shadowMap,this._shadowPassParameters);case g.ShadowHighlight:return e(this._passes.highlightShadowMap,this._shadowPassParameters);case g.ShadowExcludeHighlight:return e(this._passes.defaultShadowMap,this._shadowPassParameters)}break;case R.TRANSPARENT_MATERIAL:switch(s.output){case g.Color:case g.Alpha:case g.Depth:case g.Normal:case g.ObjectAndLayerIdColor:return e(this._passes.materialTransparent,this._materialPassParameters)}break;case R.INTEGRATED_MESH:switch(s.output){case g.Color:case g.Depth:case g.Normal:case g.ObjectAndLayerIdColor:return e(this._passes.materialIntegratedMesh,this._materialPassParameters);case g.Highlight:return e(this._passes.highlightIntegratedMesh,this._highlightPassParameters)}}return null}notifyDirty(){this._context.requestRender()}queryDepthRange(s){const e={near:1/0,far:-1/0};return this._systems.forEach((t=>{const r=t.queryShadowCasterDepthRange(s);null!=r&&f(e,r,e)})),e}_configure(s){const e=s.output===g.Shadow||s.output===g.ShadowHighlight||s.output===g.ShadowExcludeHighlight?this._shadowPassParameters:s.output===g.Highlight?this._highlightPassParameters:this._materialPassParameters;this._updateParameters(s,e)}_updateParameters(s,e){const i=s.bindParameters.camera,l=i.viewInverseTransposeMatrix;o(T,l[3],l[7],l[11]),j.set(T),n(e.transformWorldFromViewTH,j.high),n(e.transformWorldFromViewTL,j.low),n(e.slicePlaneLocalOrigin,T),t(e.transformViewFromCameraRelativeRS,i.viewMatrix),h(e.transformProjFromView,i.projectionMatrix),e.identifier===u.Material&&(this._materialPassParameters.transparent=s.bindParameters.slot===R.TRANSPARENT_MATERIAL,this._materialPassParameters.integratedMesh=s.bindParameters.slot===R.INTEGRATED_MESH,r(S,e.transformViewFromCameraRelativeRS),a(e.transformNormalViewFromGlobal,S))}};A=s([e("esri.views.3d.webgl-engine.core.renderPasses.RenderPassManager")],A);const T=l(),S=i(),j=new P;export{A as RenderPassManager};
@@ -2,7 +2,7 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{glsl as e}from"../../shaderModules/interfaces.js";import{Texture2DPassUniform as r}from"../../shaderModules/Texture2DPassUniform.js";import{blurSizePixels as s}from"../../../lib/SSAOHelper.js";function t(t,o){const n=t.fragment;o.receiveAmbientOcclusion?(n.uniforms.add(new r("ssaoTex",((e,r)=>r.ssaoHelper.colorTexture))),n.constants.add("blurSizePixelsInverse","float",1/s),n.code.add(e`float evaluateAmbientOcclusionInverse() {
5
+ import{glsl as e}from"../../shaderModules/interfaces.js";import{Texture2DPassUniform as r}from"../../shaderModules/Texture2DPassUniform.js";import{blurSizePixels as s}from"../../../lib/SSAOHelper.js";function t(t,o){const n=t.fragment;o.receiveAmbientOcclusion?(n.uniforms.add(new r("ssaoTex",((e,r)=>r.ssao?.colorTexture))),n.constants.add("blurSizePixelsInverse","float",1/s),n.code.add(e`float evaluateAmbientOcclusionInverse() {
6
6
  vec2 ssaoTextureSizeInverse = 1.0 / vec2(textureSize(ssaoTex, 0));
7
7
  return texture(ssaoTex, gl_FragCoord.xy * blurSizePixelsInverse * ssaoTextureSizeInverse).r;
8
8
  }
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- class t{}const n=t;function o(t,...n){let o="";for(let r=0;r<n.length;r++)o+=t[r]+n[r];return o+=t.at(-1),o}!function(t){function n(t){return Math.round(t).toString()}function o(t){return t.toPrecision(8)}t.int=n,t.float=o}(o||(o={}));export{n as NoParameters,o as glsl};
5
+ class t{}const n=t;function o(t,...n){let o="";for(let r=0;r<n.length;r++)o+=t[r]+n[r];return o+=t[t.length-1],o}!function(t){function n(t){return Math.round(t).toString()}function o(t){return t.toPrecision(8)}t.int=n,t.float=o}(o||(o={}));export{n as NoParameters,o as glsl};
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
+ */
5
+ import e from"../../../../core/Accessor.js";class s extends e{requiresOutput(e){return!1}get usedMemory(){return 0}get isDecoration(){return!1}get running(){return!1}}class r extends s{}class t extends s{}class n extends s{}class c extends s{}class u extends s{}export{u as ASyncPreparesRenderPlugin,c as AsyncRenderPlugin,t as SyncPrepareRenderPlugin,n as SyncPreparesRenderPlugin,r as SyncRenderPlugin};
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
+ */
5
+ import{_ as e}from"../../../../chunks/tslib.es6.js";import r from"../../../../core/Accessor.js";import t from"../../../../core/PooledArray.js";import{isPromiseLike as n,createAbortError as s}from"../../../../core/promiseUtils.js";import{property as o}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as i}from"../../../../core/accessorSupport/decorators/subclass.js";import{ShaderOutput as a}from"../core/shaderLibrary/ShaderOutput.js";import{Decorations as l}from"../lib/basicInterfaces.js";import{union as u}from"../lib/depthRange.js";import{RenderOccludedFlag as d}from"../lib/Material.js";import{RenderSlot as c}from"../lib/RenderSlot.js";let p=class extends r{constructor(e){super({}),this._context=e,this._renderPlugins=new t,this._slots=new Array;for(let r=0;r<c.MAX_SLOTS;++r)this._slots[r]=[]}normalizeCtorArgs(){return{}}add(e,r){const t=()=>{if(r?.aborted)throw e.uninitializeRenderContext(),s();this._renderPlugins.push(e);for(const r of e.renderSlots)this._slots[r].push(e);this._context.requestRender(),this.notifyChange("updating")},o=e.initializeRenderContext(this._context,r);if(n(o))return o.then(t);t()}remove(e){if(null!=this._renderPlugins.removeUnordered(e)){for(let r=0;r<this._slots.length;++r)this._slots[r]=this._slots[r].filter((r=>r!==e));e.uninitializeRenderContext(),this._context.requestRender(),this.notifyChange("updating")}}prepareRender(){this._renderPlugins.forAll((e=>{e.prepareRender&&e.prepareRender(this._context.renderContext)}))}updateAnimation(e){let r=!1;return this._renderPlugins.forAll((t=>{t.updateAnimation&&(r=t.updateAnimation(e)||r)})),r}renderFeatureChanged(){this._renderPlugins.forAll((e=>{e.renderFeatureChanged&&e.renderFeatureChanged()}))}prepareSlots(e){for(const r of e)this._context.renderContext.bindParameters.slot=r,this._slots[r].filter((e=>{e.canRender(r,a.Color)&&(h(e)&&e.prepareTechnique(this._context.renderContext),m(e)&&e.prepareTechniques(this._context.renderContext))}))}prepare(e){this._context.renderContext.bindParameters.slot=e;const r=this._slots[e],t=new Map;return r.forEach((r=>{if(r.canRender(e,a.Color)&&(!r.isDecoration||this._context.renderContext.bindParameters.decorations!==l.OFF))if(h(r)){const e=r.prepareTechnique(this._context.renderContext);null!=e&&t.set(r,e)}else if(m(r)){const e=r.prepareTechniques(this._context.renderContext);null!=e&&t.set(r,e)}else t.set(r,null)})),t}render(e){e.forEach(((e,r)=>r.render(this._context.renderContext,e)))}queryDepthRange(e){const r=g;return r.near=1/0,r.far=-1/0,this._renderPlugins.forAll((t=>{if(t.queryDepthRange){const n=t.queryDepthRange(e);n&&u(r,n,r)}})),r}get updating(){return this._renderPlugins.some((e=>e.running))}canRender(e,r=a.Color){return this._slots[e].some((t=>t.canRender(e,r)))}requiresOutput(e){return this._renderPlugins.some((r=>r.requiresOutput(e)))}get hasDecorations(){return this._renderPlugins.some((e=>e.isDecoration))}get needsLaserlineWithContrastControl(){const e=this._slots[c.LASERLINES_CONTRAST_CONTROL];return!!e&&e.length>0}get renderOccludedFlags(){return this._renderPlugins.reduce(((e,r)=>e|r.renderOccludedFlags),d.None)}get usedMemory(){return this._renderPlugins.reduce(((e,r)=>e+(r.usedMemory??0)),0)}};function h(e){return"prepareTechnique"in e}function m(e){return"prepareTechniques"in e}e([o({readOnly:!0})],p.prototype,"updating",null),p=e([i("esri.views.3d.webgl-engine.lib.RenderPluginManager")],p);const g={near:0,far:0};export{p as RenderPluginManager};
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
+ */
5
+ import{disposeMaybe as t}from"../../../../core/maybe.js";import{createScreenSizeTriangleVAO as r}from"../lib/glUtil3D.js";import{PrimitiveType as s}from"../../../webgl/enums.js";class o{constructor(t){this._rctx=t,this._vao=r(t)}destroy(){this._vao=t(this._vao)}draw(){null!=this._vao&&(this._rctx.bindVAO(this._vao),this._rctx.drawArrays(s.TRIANGLES,0,3))}get test(){return{cachedWebGLObjects:this._vao?.glName?2:0}}}export{o as ScreenSpaceGeometry};
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
+ */
5
+ import{_ as e}from"../../../../chunks/tslib.es6.js";import{abortMaybe as t,disposeMaybe as r}from"../../../../core/maybe.js";import{isAbortError as s,throwIfAborted as i,isAborted as o}from"../../../../core/promiseUtils.js";import{watch as a,syncAndInitial as n}from"../../../../core/reactiveUtils.js";import{property as l}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as h}from"../../../../core/accessorSupport/decorators/subclass.js";import{requestImage as c}from"../../../../support/requestImageUtils.js";import{ColorFormat as u}from"../core/FBOCache.js";import{SyncRenderPlugin as m}from"./RenderPlugin.js";import{BlendWeightsTechnique as d}from"../lib/BlendWeightsTechnique.js";import{BlurTechnique as p}from"../lib/BlurTechnique.js";import{EdgeDetectTechnique as _}from"../lib/EdgeDetectTechnique.js";import{RenderFeature as b}from"../lib/RenderFeature.js";import{RenderSlot as x}from"../lib/RenderSlot.js";import{SMAAPassParameters as T}from"../shaders/SMAAPassParameters.js";import{PixelFormat as f,TextureSamplingMode as g,ClearBufferBit as C,TextureWrapMode as R}from"../../../webgl/enums.js";import{Texture as j}from"../../../webgl/Texture.js";import{TextureDescriptor as w}from"../../../webgl/TextureDescriptor.js";let E=class extends m{constructor(e){super(e),this.renderSlots=[x.ANTIALIASING],this._context=null,this._areaTexture=null,this._searchTexture=null,this._isEnabled=!1,this._smaaParameters=new T}canRender(){return this._isEnabled&&null!=this._context}requiresOutput(){return!1}get updating(){return null!=this._abortController}initializeRenderContext(e){this._context=e,this.addHandles([a((()=>this.view.qualitySettings.antialiasingEnabled),(e=>e||this._context?.isFeatureEnabled(b.Antialiasing)?this.enable():this.disable()),n)])}renderFeatureChanged(){this.view.qualitySettings.antialiasingEnabled||this._context?.isFeatureEnabled(b.Antialiasing)?this.enable():this.disable()}uninitializeRenderContext(){this.disable(),this._context=null}enable(){if(this._isEnabled||!this._context||this._abortController)return;this._abortController=new AbortController;const e=this._abortController.signal;import("./SmaaRenderPassData.js").then((t=>this._loadTextures(this._context,t,e))).then((()=>{this._context?.requestRender(),this._abortController=null})).catch((e=>{s(e)||this._dispose()}))}_loadTextures(e,t,r){return i(r),e?Promise.all([c(t.areaTexture).then((t=>q(e.fbos.rctx,g.LINEAR,f.RGB,t))),c(t.searchTexure).then((t=>q(e.fbos.rctx,g.NEAREST,f.LUMINANCE,t)))]).then((([e,t])=>{o(r)?(e.dispose(),t.dispose(),i(r)):(this._areaTexture=e,this._searchTexture=t,this._isEnabled=!0)})):Promise.reject()}disable(){this._abortController=t(this._abortController),this._dispose()}_dispose(){this._areaTexture=r(this._areaTexture),this._searchTexture=r(this._searchTexture),this._isEnabled=!1}render(e){if(!this._isEnabled||!this._context)return;const t=e.offscreenRenderingHelper.colorTexture,r=t.descriptor.width,s=t.descriptor.height,i=this._context.fbos,o=e.bindParameters.output,a=this._context.fbos.rctx;a.setViewport(0,0,r,s);const n=i.acquire(u.RG,r,s);a.bindFramebuffer(n.fbo),a.setClearColor(0,0,0,1),a.clear(C.COLOR_BUFFER_BIT),this._smaaParameters.color=t;const l=this._context.techniqueRepository.acquire(_);a.bindTechnique(l,this._smaaParameters,null),a.screen.draw(),l.release();const h=i.acquire(u.RGBA,r,s);a.bindFramebuffer(h.fbo),a.setClearColor(0,0,1,1),a.clear(C.COLOR_BUFFER_BIT),this._smaaParameters.inputTexture=n.colorTexture,this._smaaParameters.areaTexture=this._areaTexture,this._smaaParameters.searchTexture=this._searchTexture;const c=this._context.techniqueRepository.acquire(d);a.bindTechnique(c,this._smaaParameters,null),a.screen.draw(),c.release(),a.bindFramebuffer(o),n.release(),a.setClearColor(0,1,0,1),a.clear(C.COLOR_BUFFER_BIT),this._smaaParameters.inputTexture=h.colorTexture;const m=this._context.techniqueRepository.acquire(p);a.bindTechnique(m,this._smaaParameters,null),a.screen.draw(),m.release(),h.release()}};function q(e,t,r,s){const i=new w;return i.pixelFormat=r,i.wrapMode=R.CLAMP_TO_EDGE,i.width=s.width,i.height=s.height,i.samplingMode=t,new j(e,i,s)}e([l({constructOnly:!0})],E.prototype,"view",void 0),e([l()],E.prototype,"_context",void 0),e([l()],E.prototype,"_abortController",void 0),e([l({readOnly:!0})],E.prototype,"updating",null),E=e([h("esri.views.3d.webgl-engine.lib.SmaaRenderPass")],E);export{E as SmaaRenderPass};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{disposeMaybe as e}from"../../../../core/maybe.js";import{ChapmanAtmosphereTechniqueConfiguration as t}from"../../environment/ChapmanAtmosphereTechniqueConfiguration.js";import{BlendWeightsTechnique as s}from"./BlendWeightsTechnique.js";import{BlurTechnique as r}from"./BlurTechnique.js";import{EdgeDetectTechnique as i}from"./EdgeDetectTechnique.js";import{createScreenSizeTriangleVAO as a}from"./glUtil3D.js";import{A as o}from"../../../../chunks/AtmosphereCompositing.glsl.js";import{AtmosphereCompositingTechnique as h}from"../shaders/AtmosphereCompositingTechnique.js";import{C as m}from"../../../../chunks/Compositing.glsl.js";import{CompositingTechnique as n}from"../shaders/CompositingTechnique.js";import{CompositingTechniqueConfiguration as c,AlphaMode as u}from"../shaders/CompositingTechniqueConfiguration.js";import{H as _}from"../../../../chunks/HUDCompositing.glsl.js";import{HUDCompositingTechnique as p}from"../shaders/HUDCompositingTechnique.js";import{O as l}from"../../../../chunks/OITCompositing.glsl.js";import{OITCompositingTechnique as d}from"../shaders/OITCompositingTechnique.js";import{O as q}from"../../../../chunks/OverlayCompositing.glsl.js";import{OverlayCompositingTechnique as P}from"../shaders/OverlayCompositingTechnique.js";import{SMAAPassParameters as g}from"../shaders/SMAAPassParameters.js";import{PrimitiveType as f}from"../../../webgl/enums.js";class T{constructor(e,s){this._rctx=e,this._techniqueRepository=s,this._configuration=new c,this._atmosphereConfiguration=new t,this._passParameters=new m,this._atmosphereParameters=new o,this._oitParameters=new l,this._hudParameters=new _,this._overlayParameters=new q,this._smaaParameters=new g}destroy(){this._vao=e(this._vao)}compositeOIT(e,t,s,r){this._oitParameters.colorTexture=t,this._oitParameters.alphaTexture=s,this._oitParameters.frontFaceTexture=r;const i=this._techniqueRepository.acquire(d);this._rctx.bindTechnique(i,this._oitParameters,e),this._draw(),i.release()}compositeHUD(e,t){this._hudParameters.texture=t;const s=this._techniqueRepository.acquire(p);this._rctx.bindTechnique(s,this._hudParameters,e),this._draw(),s.release()}compositeOverlay(e,t,s,r){this._overlayParameters.texture=t,this._overlayParameters.opacity=s,this._overlayParameters.overlayIndex=r;const i=this._techniqueRepository.acquire(P);this._rctx.bindTechnique(i,this._overlayParameters,e),this._draw(),i.release()}compositeAtmosphere(e,t,s,r){this._atmosphereParameters.color=t,this._atmosphereParameters.depth=s,this._atmosphereConfiguration.haze=r;const i=this._techniqueRepository.acquire(h,this._atmosphereConfiguration);this._rctx.bindTechnique(i,this._atmosphereParameters,e),this._draw(),i.release()}composite(e,t,s=u.None,r=1){this._configuration.alphaMode=s,this._configuration.hasOpacityFactor=1!==r,this._passParameters.texture=t,this._passParameters.opacity=r;const i=this._techniqueRepository.acquire(n,this._configuration);this._rctx.bindTechnique(i,this._passParameters,e),this._draw(),i.release()}compositeSMAAEdgeDetect(e){this._smaaParameters.color=e;const t=this._techniqueRepository.acquire(i);this._rctx.bindTechnique(t,this._smaaParameters,null),this._draw(),t.release()}compositeSMAABlendWeights(e,t,r){this._smaaParameters.inputTexture=e,this._smaaParameters.areaTexture=t,this._smaaParameters.searchTexture=r;const i=this._techniqueRepository.acquire(s);this._rctx.bindTechnique(i,this._smaaParameters,null),this._draw(),i.release()}compositeSMAABlur(e){this._smaaParameters.inputTexture=e;const t=this._techniqueRepository.acquire(r);this._rctx.bindTechnique(t,this._smaaParameters,null),this._draw(),t.release()}_draw(){const e=this._ensureVAO();this._rctx.bindVAO(e),this._rctx.drawArrays(f.TRIANGLES,0,3)}_ensureVAO(){return null==this._vao&&(this._vao=a(this._rctx)),this._vao}}export{T as default};
5
+ import{C as s}from"../../../../chunks/Compositing.glsl.js";import{CompositingTechnique as t}from"../shaders/CompositingTechnique.js";import{CompositingTechniqueConfiguration as e,AlphaMode as i}from"../shaders/CompositingTechniqueConfiguration.js";import{H as r}from"../../../../chunks/HUDCompositing.glsl.js";import{HUDCompositingTechnique as o}from"../shaders/HUDCompositingTechnique.js";import{O as a}from"../../../../chunks/OITCompositing.glsl.js";import{OITCompositingTechnique as h}from"../shaders/OITCompositingTechnique.js";class n{constructor(t,i){this._rctx=t,this._techniqueRepository=i,this._configuration=new e,this._passParameters=new s,this._oitParameters=new a,this._hudParameters=new r}compositeOIT(s,t,e,i){this._oitParameters.colorTexture=t,this._oitParameters.alphaTexture=e,this._oitParameters.frontFaceTexture=i;const r=this._techniqueRepository.acquire(h);this._rctx.bindTechnique(r,this._oitParameters,s),this._rctx.screen.draw(),r.release()}compositeHUD(s,t){this._hudParameters.texture=t;const e=this._techniqueRepository.acquire(o);this._rctx.bindTechnique(e,this._hudParameters,s),this._rctx.screen.draw(),e.release()}composite(s,e,r=i.None,o=1){this._configuration.alphaMode=r,this._configuration.hasOpacityFactor=1!==o,this._passParameters.texture=e,this._passParameters.opacity=o;const a=this._techniqueRepository.acquire(t,this._configuration);this._rctx.bindTechnique(a,this._passParameters,s),this._rctx.screen.draw(),a.release()}}export{n as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{ResourceState as t}from"./basicInterfaces.js";class r{constructor(t,r){this._material=t,this._repository=r,this._map=new Map}destroy(){this._map.forEach(((t,r)=>{null!=t&&this._repository.release(this._material,r)}))}load(r,e,s){if(!this._material.canRender(e,s))return null;this._map.has(s)||this._map.set(s,this._repository.acquire(this._material,e,s));const i=this._map.get(s);if(null!=i){if(i.ensureResources(r)===t.LOADED)return i;this._repository.requestRender()}return null}}export{r as GLMaterials};
5
+ import{ResourceState as s}from"./basicInterfaces.js";class t{constructor(s,t){this._material=s,this._repository=t,this._map=new Map}dispose(){this._map.forEach(((s,t)=>{null!=s&&this._repository.release(this._material,t)}))}load(t,e,r){if(!this._material.canRender(e,r))return null;this._map.has(r)||this._map.set(r,this._repository.acquire(this._material,e,r));const i=this._map.get(r);if(null!=i){if(i.ensureResources(t)===s.LOADED)return i;this._repository.requestRender()}return null}}export{t as GLMaterials};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{b as t,f as n,n as e,g as s,a as o,e as r,s as h,c as l,m as u}from"../../../../chunks/vec3.js";import{f as c,b as a,a as p}from"../../../../chunks/vec3f32.js";import{c as f}from"../../../../chunks/vec3f64.js";import{newDoubleArray as O}from"../../../../geometry/support/DoubleArray.js";import{newFloatArray as i,floatArrayFrom as I}from"../../../../geometry/support/FloatArray.js";import{getZeroIndexArray as w,getContinuousIndexArray as g}from"../../../../geometry/support/Indices.js";import{create as M,fromPositionAndNormal as A,intersectRay as m}from"../../../../geometry/support/plane.js";import{wrap as N}from"../../../../geometry/support/ray.js";import{Attribute as y}from"./Attribute.js";import{Vec3Compact as P}from"./BufferVectorMath.js";import{ContentObjectType as T}from"./ContentObjectType.js";import{Geometry as S}from"./Geometry.js";import{assert as R}from"./Util.js";import{VertexAttribute as L}from"./VertexAttribute.js";const b=P,d=[[-.5,-.5,.5],[.5,-.5,.5],[.5,.5,.5],[-.5,.5,.5],[-.5,-.5,-.5],[.5,-.5,-.5],[.5,.5,-.5],[-.5,.5,-.5]],j=[0,0,1,-1,0,0,1,0,0,0,-1,0,0,1,0,0,0,-1],U=[0,0,1,0,1,1,0,1],V=[0,1,2,2,3,0,4,0,3,3,7,4,1,5,6,6,2,1,1,0,4,4,5,1,3,2,6,6,7,3,5,4,7,7,6,5],v=new Array(36);for(let At=0;At<6;At++)for(let t=0;t<6;t++)v[6*At+t]=At;const x=new Array(36);for(let At=0;At<6;At++)x[6*At]=0,x[6*At+1]=1,x[6*At+2]=2,x[6*At+3]=2,x[6*At+4]=3,x[6*At+5]=0;function F(t,n){Array.isArray(n)||(n=[n,n,n]);const e=new Array(24);for(let s=0;s<8;s++)e[3*s]=d[s][0]*n[0],e[3*s+1]=d[s][1]*n[1],e[3*s+2]=d[s][2]*n[2];return new S(t,[[L.POSITION,new y(e,3,!0)],[L.NORMAL,new y(j,3)],[L.UV0,new y(U,2)]],[[L.POSITION,V],[L.NORMAL,v],[L.UV0,x]])}const C=[[-.5,0,-.5],[.5,0,-.5],[.5,0,.5],[-.5,0,.5],[0,-.5,0],[0,.5,0]],E=[0,1,-1,1,1,0,0,1,1,-1,1,0,0,-1,-1,1,-1,0,0,-1,1,-1,-1,0],G=[5,1,0,5,2,1,5,3,2,5,0,3,4,0,1,4,1,2,4,2,3,4,3,0],k=[0,0,0,1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7];function q(t,n){Array.isArray(n)||(n=[n,n,n]);const e=new Array(18);for(let s=0;s<6;s++)e[3*s]=C[s][0]*n[0],e[3*s+1]=C[s][1]*n[1],e[3*s+2]=C[s][2]*n[2];return new S(t,[[L.POSITION,new y(e,3,!0)],[L.NORMAL,new y(E,3)]],[[L.POSITION,G],[L.NORMAL,k]])}const B=c(-.5,0,-.5),z=c(.5,0,-.5),D=c(0,0,.5),X=c(0,.5,0),Z=a(),H=a(),J=a(),K=a(),Q=a();t(Z,B,X),t(H,B,z),n(J,Z,H),e(J,J),t(Z,z,X),t(H,z,D),n(K,Z,H),e(K,K),t(Z,D,X),t(H,D,B),n(Q,Z,H),e(Q,Q);const W=[B,z,D,X],Y=[0,-1,0,J[0],J[1],J[2],K[0],K[1],K[2],Q[0],Q[1],Q[2]],$=[0,1,2,3,1,0,3,2,1,3,0,2],_=[0,0,0,1,1,1,2,2,2,3,3,3];function tt(t,n){Array.isArray(n)||(n=[n,n,n]);const e=new Array(12);for(let s=0;s<4;s++)e[3*s]=W[s][0]*n[0],e[3*s+1]=W[s][1]*n[1],e[3*s+2]=W[s][2]*n[2];return new S(t,[[L.POSITION,new y(e,3,!0)],[L.NORMAL,new y(Y,3)]],[[L.POSITION,$],[L.NORMAL,_]])}function nt(t,n,e,s,o={uv:!0}){const r=-Math.PI,h=2*Math.PI,l=-Math.PI/2,u=Math.PI,c=Math.max(3,Math.floor(e)),a=Math.max(2,Math.floor(s)),p=(c+1)*(a+1),f=i(3*p),O=i(3*p),I=i(2*p),g=[];let M=0;for(let i=0;i<=a;i++){const t=[],e=i/a,s=l+e*u,o=Math.cos(s);for(let l=0;l<=c;l++){const u=l/c,a=r+u*h,p=Math.cos(a)*o,i=Math.sin(s),w=-Math.sin(a)*o;f[3*M]=p*n,f[3*M+1]=i*n,f[3*M+2]=w*n,O[3*M]=p,O[3*M+1]=i,O[3*M+2]=w,I[2*M]=u,I[2*M+1]=e,t.push(M),++M}g.push(t)}const A=new Array;for(let i=0;i<a;i++)for(let t=0;t<c;t++){const n=g[i][t],e=g[i][t+1],s=g[i+1][t+1],o=g[i+1][t];0===i?(A.push(n),A.push(s),A.push(o)):i===a-1?(A.push(n),A.push(e),A.push(s)):(A.push(n),A.push(e),A.push(s),A.push(s),A.push(o),A.push(n))}const m=[[L.POSITION,A],[L.NORMAL,A]],N=[[L.POSITION,new y(f,3,!0)],[L.NORMAL,new y(O,3,!0)]];return o.uv&&(N.push([L.UV0,new y(I,2,!0)]),m.push([L.UV0,A])),o.offset&&(m[0][0]=L.OFFSET,N[0][0]=L.OFFSET,m.push([L.POSITION,w(A.length)]),N.push([L.POSITION,new y(Float64Array.from(o.offset),3,!0)])),new S(t,N,m)}function et(t,n,e,s){const{vertexAttributes:o,indices:r}=st(n,e,s);return new S(t,o,r)}function st(t,n,e){const s=t;let o,r;if(e)o=[0,-1,0,1,0,0,0,0,1,-1,0,0,0,0,-1,0,1,0],r=[0,1,2,0,2,3,0,3,4,0,4,1,1,5,2,2,5,3,3,5,4,4,5,1];else{const t=s*(1+Math.sqrt(5))/2;o=[-s,t,0,s,t,0,-s,-t,0,s,-t,0,0,-s,t,0,s,t,0,-s,-t,0,s,-t,t,0,-s,t,0,s,-t,0,-s,-t,0,s],r=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1]}for(let a=0;a<o.length;a+=3)b.scale(o,a,t/b.length(o,a));let h={};function l(n,e){n>e&&([n,e]=[e,n]);const s=n.toString()+"."+e.toString();if(h[s])return h[s];let r=o.length;return o.length+=3,b.add(o,3*n,o,3*e,o,r),b.scale(o,r,t/b.length(o,r)),r/=3,h[s]=r,r}for(let a=0;a<n;a++){const t=r.length,n=new Array(4*t);for(let e=0;e<t;e+=3){const t=r[e],s=r[e+1],o=r[e+2],h=l(t,s),u=l(s,o),c=l(o,t),a=4*e;n[a]=t,n[a+1]=h,n[a+2]=c,n[a+3]=s,n[a+4]=u,n[a+5]=h,n[a+6]=o,n[a+7]=c,n[a+8]=u,n[a+9]=h,n[a+10]=u,n[a+11]=c}r=n,h={}}const u=I(o);for(let a=0;a<u.length;a+=3)b.normalize(u,a);const c=[[L.POSITION,r],[L.NORMAL,r]];return{vertexAttributes:[[L.POSITION,new y(I(o),3,!0)],[L.NORMAL,new y(u,3,!0)]],indices:c}}function ot(t,n,e,s,o,r,h,l,u=null){const c=e?[e[0],e[1],e[2]]:[0,0,0],a=n?[n[0],n[1],n[2]]:[0,0,1];h=h||[0,0];const p=s?[255*s[0],255*s[1],255*s[2],s.length>3?255*s[3]:255]:[255,255,255,255],f=null!=o&&2===o.length?o:[1,1],O=[[L.POSITION,new y(c,3,!0)],[L.NORMAL,new y(a,3,!0)],[L.UV0,new y(h,h.length)],[L.COLOR,new y(p,4,!0)],[L.SIZE,new y(f,2)]];if(null!=r){const t=[r[0],r[1],r[2],r[3]];O.push([L.AUXPOS1,new y(t,4)])}if(null!=l){const t=[l[0],l[1],l[2],l[3]];O.push([L.FEATUREATTRIBUTE,new y(t,4)])}return new S(t,O,null,null,T.Point,u)}const rt=[[-1,-1,0],[1,-1,0],[1,1,0],[-1,1,0]];function ht(t,n=rt){const e=new Array(12);for(let a=0;a<4;a++)for(let t=0;t<3;t++)e[3*a+t]=n[a][t];const s=[0,1,2,2,3,0],o=[0,0,1],r=[0,0,0,0,0,0],h=[0,0,1,0,1,1,0,1],l=[255,255,255,255],u=[[L.POSITION,s],[L.NORMAL,r],[L.UV0,s],[L.COLOR,r]],c=[[L.POSITION,new y(e,3,!0)],[L.NORMAL,new y(o,3,!0)],[L.UV0,new y(h,2,!0)],[L.COLOR,new y(l,4,!0)]];return new S(t,c,u)}function lt(t,n,e,s,o,r=!0,h=!0){let l=0;const u=e,a=n;let p=c(0,l,0),f=c(0,l+a,0),O=c(0,-1,0),I=c(0,1,0);o&&(l=a,f=c(0,0,0),p=c(0,l,0),O=c(0,1,0),I=c(0,-1,0));const w=[f,p],g=[O,I],M=s+2,A=Math.sqrt(a*a+u*u);if(o)for(let i=s-1;i>=0;i--){const t=i*(2*Math.PI/s),n=c(Math.cos(t)*u,l,Math.sin(t)*u);w.push(n);const e=c(a*Math.cos(t)/A,-u/A,a*Math.sin(t)/A);g.push(e)}else for(let i=0;i<s;i++){const t=i*(2*Math.PI/s),n=c(Math.cos(t)*u,l,Math.sin(t)*u);w.push(n);const e=c(a*Math.cos(t)/A,u/A,a*Math.sin(t)/A);g.push(e)}const m=new Array,N=new Array;if(r){for(let t=3;t<w.length;t++)m.push(1),m.push(t-1),m.push(t),N.push(0),N.push(0),N.push(0);m.push(w.length-1),m.push(2),m.push(1),N.push(0),N.push(0),N.push(0)}if(h){for(let t=3;t<w.length;t++)m.push(t),m.push(t-1),m.push(0),N.push(t),N.push(t-1),N.push(1);m.push(0),m.push(2),m.push(w.length-1),N.push(1),N.push(2),N.push(g.length-1)}const P=i(3*M);for(let c=0;c<M;c++)P[3*c]=w[c][0],P[3*c+1]=w[c][1],P[3*c+2]=w[c][2];const T=i(3*M);for(let c=0;c<M;c++)T[3*c]=g[c][0],T[3*c+1]=g[c][1],T[3*c+2]=g[c][2];const R=[[L.POSITION,m],[L.NORMAL,N]],b=[[L.POSITION,new y(P,3,!0)],[L.NORMAL,new y(T,3,!0)]];return new S(t,b,R)}function ut(t,l,u,f,O,I,w){const g=O?p(O):c(1,0,0),M=I?p(I):c(0,0,0);w??=!0;const A=a();e(A,g);const m=a();s(m,A,Math.abs(l));const N=a();s(N,m,-.5),o(N,N,M);const P=c(0,1,0);Math.abs(1-r(A,P))<.2&&h(P,0,0,1);const T=a();n(T,A,P),e(T,T),n(P,T,A);const R=2*f+(w?2:0),b=f+(w?2:0),d=i(3*R),j=i(3*b),U=i(2*R),V=new Array(3*f*(w?4:2)),v=new Array(3*f*(w?4:2));w&&(d[3*(R-2)]=N[0],d[3*(R-2)+1]=N[1],d[3*(R-2)+2]=N[2],U[2*(R-2)]=0,U[2*(R-2)+1]=0,d[3*(R-1)]=d[3*(R-2)]+m[0],d[3*(R-1)+1]=d[3*(R-2)+1]+m[1],d[3*(R-1)+2]=d[3*(R-2)+2]+m[2],U[2*(R-1)]=1,U[2*(R-1)+1]=1,j[3*(b-2)]=-A[0],j[3*(b-2)+1]=-A[1],j[3*(b-2)+2]=-A[2],j[3*(b-1)]=A[0],j[3*(b-1)+1]=A[1],j[3*(b-1)+2]=A[2]);const x=(t,n,e)=>{V[t]=n,v[t]=e};let F=0;const C=a(),E=a();for(let n=0;n<f;n++){const t=n*(2*Math.PI/f);s(C,P,Math.sin(t)),s(E,T,Math.cos(t)),o(C,C,E),j[3*n]=C[0],j[3*n+1]=C[1],j[3*n+2]=C[2],s(C,C,u),o(C,C,N),d[3*n]=C[0],d[3*n+1]=C[1],d[3*n+2]=C[2],U[2*n]=n/f,U[2*n+1]=0,d[3*(n+f)]=d[3*n]+m[0],d[3*(n+f)+1]=d[3*n+1]+m[1],d[3*(n+f)+2]=d[3*n+2]+m[2],U[2*(n+f)]=n/f,U[2*n+1]=1;const e=(n+1)%f;x(F++,n,n),x(F++,n+f,n),x(F++,e,e),x(F++,e,e),x(F++,n+f,n),x(F++,e+f,e)}if(w){for(let t=0;t<f;t++){const n=(t+1)%f;x(F++,R-2,b-2),x(F++,t,b-2),x(F++,n,b-2)}for(let t=0;t<f;t++){const n=(t+1)%f;x(F++,t+f,b-1),x(F++,R-1,b-1),x(F++,n+f,b-1)}}const G=[[L.POSITION,V],[L.NORMAL,v],[L.UV0,V]],k=[[L.POSITION,new y(d,3,!0)],[L.NORMAL,new y(j,3,!0)],[L.UV0,new y(U,2,!0)]];return new S(t,k,G)}function ct(t,n,e,s,o,r){s=s||10,o=null==o||o,R(n.length>1);const h=[[0,0,0]],l=[],u=[];for(let c=0;c<s;c++){l.push([0,-c-1,-(c+1)%s-1]);const t=c/s*2*Math.PI;u.push([Math.cos(t)*e,Math.sin(t)*e])}return at(t,u,n,h,l,o,r)}function at(r,u,p,O,I,w,g=c(0,0,0)){const P=u.length,T=i(p.length*P*3+(6*O.length||0)),R=i(p.length*P*3+(O?6:0)),b=new Array,d=new Array;let j=0,U=0;const V=a(),v=a(),x=a(),F=a(),C=a(),E=a(),G=a(),k=f(),q=a(),B=a(),z=a(),D=a(),X=a(),Z=M();h(q,0,1,0),t(v,p[1],p[0]),e(v,v),w?(o(k,p[0],g),e(x,k)):h(x,0,0,1),wt(v,x,q,q,C,x,gt),l(F,x),l(D,C);for(let t=0;t<O.length;t++)s(E,C,O[t][0]),s(k,x,O[t][2]),o(E,E,k),o(E,E,p[0]),T[j++]=E[0],T[j++]=E[1],T[j++]=E[2];R[U++]=-v[0],R[U++]=-v[1],R[U++]=-v[2];for(let t=0;t<I.length;t++)b.push(I[t][0]>0?I[t][0]:-I[t][0]-1+O.length),b.push(I[t][1]>0?I[t][1]:-I[t][1]-1+O.length),b.push(I[t][2]>0?I[t][2]:-I[t][2]-1+O.length),d.push(0),d.push(0),d.push(0);let H=O.length;const J=O.length-1;for(let h=0;h<p.length;h++){let r=!1;if(h>0){l(V,v),h<p.length-1?(t(v,p[h+1],p[h]),e(v,v)):r=!0,o(B,V,v),e(B,B),o(z,p[h-1],F),A(p[h],B,Z);m(Z,N(z,V),k)?(t(k,k,p[h]),e(x,k),n(C,B,x),e(C,C)):wt(B,F,D,q,C,x,gt),l(F,x),l(D,C)}w&&(o(k,p[h],g),e(X,k));for(let t=0;t<P;t++)if(s(E,C,u[t][0]),s(k,x,u[t][1]),o(E,E,k),e(G,E),R[U++]=G[0],R[U++]=G[1],R[U++]=G[2],o(E,E,p[h]),T[j++]=E[0],T[j++]=E[1],T[j++]=E[2],!r){const n=(t+1)%P;b.push(H+t),b.push(H+P+t),b.push(H+n),b.push(H+n),b.push(H+P+t),b.push(H+P+n);for(let t=0;t<6;t++){const n=b.length-6;d.push(b[n+t]-J)}}H+=P}const K=p.at(-1);for(let t=0;t<O.length;t++)s(E,C,O[t][0]),s(k,x,O[t][1]),o(E,E,k),o(E,E,K),T[j++]=E[0],T[j++]=E[1],T[j++]=E[2];const Q=U/3;R[U++]=v[0],R[U++]=v[1],R[U++]=v[2];const W=H-P;for(let t=0;t<I.length;t++)b.push(I[t][0]>=0?H+I[t][0]:-I[t][0]-1+W),b.push(I[t][2]>=0?H+I[t][2]:-I[t][2]-1+W),b.push(I[t][1]>=0?H+I[t][1]:-I[t][1]-1+W),d.push(Q),d.push(Q),d.push(Q);const Y=[[L.POSITION,b],[L.NORMAL,d]],$=[[L.POSITION,new y(T,3,!0)],[L.NORMAL,new y(R,3,!0)]];return new S(r,$,Y)}function pt(t,n,e,s){R(n.length>1,"createPolylineGeometry(): polyline needs at least 2 points"),R(3===n[0].length,"createPolylineGeometry(): malformed vertex"),R(null==e||e.length===n.length,"createPolylineGeometry: need same number of points and normals"),R(null==e||3===e[0].length,"createPolylineGeometry(): malformed normal");const o=O(3*n.length),r=new Array(2*(n.length-1));let h=0,l=0;for(let a=0;a<n.length;a++){for(let t=0;t<3;t++)o[h++]=n[a][t];a>0&&(r[l++]=a-1,r[l++]=a)}const u=[],c=[];if(u.push([L.POSITION,r]),c.push([L.POSITION,new y(o,3,!0)]),e){const t=i(3*e.length);let s=0;for(let o=0;o<n.length;o++)for(let n=0;n<3;n++)t[s++]=e[o][n];u.push([L.NORMAL,r]),c.push([L.NORMAL,new y(t,3,!0)])}return s&&(c.push([L.COLOR,new y(s,4)]),u.push([L.COLOR,g(s.length/4)])),new S(t,c,u,null,T.Line)}function ft(t,n,e,s,o,r=0){const h=new Array(18),l=[[-e,r,o/2],[s,r,o/2],[0,n+r,o/2],[-e,r,-o/2],[s,r,-o/2],[0,n+r,-o/2]],u=[0,1,2,3,0,2,2,5,3,1,4,5,5,2,1,1,0,3,3,4,1,4,3,5];for(let c=0;c<6;c++)h[3*c]=l[c][0],h[3*c+1]=l[c][1],h[3*c+2]=l[c][2];return new S(t,[[L.POSITION,new y(h,3,!0)]],[[L.POSITION,u]])}function Ot(t,n){const e=t.getMutableAttribute(L.POSITION).data;for(let s=0;s<e.length;s+=3){const t=e[s],o=e[s+1],r=e[s+2];h(Mt,t,o,r),u(Mt,Mt,n),e[s]=Mt[0],e[s+1]=Mt[1],e[s+2]=Mt[2]}}function it(t,n=t){const e=t.vertexAttributes,s=e.get(L.POSITION).data,o=e.get(L.NORMAL).data;if(o){const t=n.getMutableAttribute(L.NORMAL).data;for(let n=0;n<o.length;n+=3){const e=o[n+1];t[n+1]=-o[n+2],t[n+2]=e}}if(s){const t=n.getMutableAttribute(L.POSITION).data;for(let n=0;n<s.length;n+=3){const e=s[n+1];t[n+1]=-s[n+2],t[n+2]=e}}}function It(t,s,o,h,l){return!(Math.abs(r(s,t))>l)&&(n(o,t,s),e(o,o),n(h,o,t),e(h,h),!0)}function wt(t,n,e,s,o,r,h){return It(t,n,o,r,h)||It(t,e,o,r,h)||It(t,s,o,r,h)}const gt=.99619469809,Mt=a();export{it as cgToGIS,F as createBoxGeometry,lt as createConeGeometry,ut as createCylinderGeometry,q as createDiamondGeometry,ft as createExtrudedTriangle,at as createPathExtrusionGeometry,ot as createPointGeometry,st as createPolySphereData,et as createPolySphereGeometry,pt as createPolylineGeometry,nt as createSphereGeometry,ht as createSquareGeometry,tt as createTetrahedronGeometry,ct as createTubeGeometry,wt as makeOrthoBasisDirUpFallback,Ot as transformInPlace};
5
+ import{b as t,f as n,n as e,g as s,a as o,e as r,s as h,c as l,m as u}from"../../../../chunks/vec3.js";import{f as c,b as a,a as p}from"../../../../chunks/vec3f32.js";import{c as f}from"../../../../chunks/vec3f64.js";import{newDoubleArray as O}from"../../../../geometry/support/DoubleArray.js";import{newFloatArray as i,floatArrayFrom as I}from"../../../../geometry/support/FloatArray.js";import{getZeroIndexArray as w,getContinuousIndexArray as g}from"../../../../geometry/support/Indices.js";import{create as M,fromPositionAndNormal as A,intersectRay as m}from"../../../../geometry/support/plane.js";import{wrap as N}from"../../../../geometry/support/ray.js";import{Attribute as y}from"./Attribute.js";import{Vec3Compact as P}from"./BufferVectorMath.js";import{ContentObjectType as T}from"./ContentObjectType.js";import{Geometry as S}from"./Geometry.js";import{assert as R}from"./Util.js";import{VertexAttribute as L}from"./VertexAttribute.js";const b=P,d=[[-.5,-.5,.5],[.5,-.5,.5],[.5,.5,.5],[-.5,.5,.5],[-.5,-.5,-.5],[.5,-.5,-.5],[.5,.5,-.5],[-.5,.5,-.5]],j=[0,0,1,-1,0,0,1,0,0,0,-1,0,0,1,0,0,0,-1],U=[0,0,1,0,1,1,0,1],V=[0,1,2,2,3,0,4,0,3,3,7,4,1,5,6,6,2,1,1,0,4,4,5,1,3,2,6,6,7,3,5,4,7,7,6,5],v=new Array(36);for(let At=0;At<6;At++)for(let t=0;t<6;t++)v[6*At+t]=At;const x=new Array(36);for(let At=0;At<6;At++)x[6*At]=0,x[6*At+1]=1,x[6*At+2]=2,x[6*At+3]=2,x[6*At+4]=3,x[6*At+5]=0;function F(t,n){Array.isArray(n)||(n=[n,n,n]);const e=new Array(24);for(let s=0;s<8;s++)e[3*s]=d[s][0]*n[0],e[3*s+1]=d[s][1]*n[1],e[3*s+2]=d[s][2]*n[2];return new S(t,[[L.POSITION,new y(e,3,!0)],[L.NORMAL,new y(j,3)],[L.UV0,new y(U,2)]],[[L.POSITION,V],[L.NORMAL,v],[L.UV0,x]])}const C=[[-.5,0,-.5],[.5,0,-.5],[.5,0,.5],[-.5,0,.5],[0,-.5,0],[0,.5,0]],E=[0,1,-1,1,1,0,0,1,1,-1,1,0,0,-1,-1,1,-1,0,0,-1,1,-1,-1,0],G=[5,1,0,5,2,1,5,3,2,5,0,3,4,0,1,4,1,2,4,2,3,4,3,0],k=[0,0,0,1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7];function q(t,n){Array.isArray(n)||(n=[n,n,n]);const e=new Array(18);for(let s=0;s<6;s++)e[3*s]=C[s][0]*n[0],e[3*s+1]=C[s][1]*n[1],e[3*s+2]=C[s][2]*n[2];return new S(t,[[L.POSITION,new y(e,3,!0)],[L.NORMAL,new y(E,3)]],[[L.POSITION,G],[L.NORMAL,k]])}const B=c(-.5,0,-.5),z=c(.5,0,-.5),D=c(0,0,.5),X=c(0,.5,0),Z=a(),H=a(),J=a(),K=a(),Q=a();t(Z,B,X),t(H,B,z),n(J,Z,H),e(J,J),t(Z,z,X),t(H,z,D),n(K,Z,H),e(K,K),t(Z,D,X),t(H,D,B),n(Q,Z,H),e(Q,Q);const W=[B,z,D,X],Y=[0,-1,0,J[0],J[1],J[2],K[0],K[1],K[2],Q[0],Q[1],Q[2]],$=[0,1,2,3,1,0,3,2,1,3,0,2],_=[0,0,0,1,1,1,2,2,2,3,3,3];function tt(t,n){Array.isArray(n)||(n=[n,n,n]);const e=new Array(12);for(let s=0;s<4;s++)e[3*s]=W[s][0]*n[0],e[3*s+1]=W[s][1]*n[1],e[3*s+2]=W[s][2]*n[2];return new S(t,[[L.POSITION,new y(e,3,!0)],[L.NORMAL,new y(Y,3)]],[[L.POSITION,$],[L.NORMAL,_]])}function nt(t,n,e,s,o={uv:!0}){const r=-Math.PI,h=2*Math.PI,l=-Math.PI/2,u=Math.PI,c=Math.max(3,Math.floor(e)),a=Math.max(2,Math.floor(s)),p=(c+1)*(a+1),f=i(3*p),O=i(3*p),I=i(2*p),g=[];let M=0;for(let i=0;i<=a;i++){const t=[],e=i/a,s=l+e*u,o=Math.cos(s);for(let l=0;l<=c;l++){const u=l/c,a=r+u*h,p=Math.cos(a)*o,i=Math.sin(s),w=-Math.sin(a)*o;f[3*M]=p*n,f[3*M+1]=i*n,f[3*M+2]=w*n,O[3*M]=p,O[3*M+1]=i,O[3*M+2]=w,I[2*M]=u,I[2*M+1]=e,t.push(M),++M}g.push(t)}const A=new Array;for(let i=0;i<a;i++)for(let t=0;t<c;t++){const n=g[i][t],e=g[i][t+1],s=g[i+1][t+1],o=g[i+1][t];0===i?(A.push(n),A.push(s),A.push(o)):i===a-1?(A.push(n),A.push(e),A.push(s)):(A.push(n),A.push(e),A.push(s),A.push(s),A.push(o),A.push(n))}const m=[[L.POSITION,A],[L.NORMAL,A]],N=[[L.POSITION,new y(f,3,!0)],[L.NORMAL,new y(O,3,!0)]];return o.uv&&(N.push([L.UV0,new y(I,2,!0)]),m.push([L.UV0,A])),o.offset&&(m[0][0]=L.OFFSET,N[0][0]=L.OFFSET,m.push([L.POSITION,w(A.length)]),N.push([L.POSITION,new y(Float64Array.from(o.offset),3,!0)])),new S(t,N,m)}function et(t,n,e,s){const{vertexAttributes:o,indices:r}=st(n,e,s);return new S(t,o,r)}function st(t,n,e){const s=t;let o,r;if(e)o=[0,-1,0,1,0,0,0,0,1,-1,0,0,0,0,-1,0,1,0],r=[0,1,2,0,2,3,0,3,4,0,4,1,1,5,2,2,5,3,3,5,4,4,5,1];else{const t=s*(1+Math.sqrt(5))/2;o=[-s,t,0,s,t,0,-s,-t,0,s,-t,0,0,-s,t,0,s,t,0,-s,-t,0,s,-t,t,0,-s,t,0,s,-t,0,-s,-t,0,s],r=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1]}for(let a=0;a<o.length;a+=3)b.scale(o,a,t/b.length(o,a));let h={};function l(n,e){n>e&&([n,e]=[e,n]);const s=n.toString()+"."+e.toString();if(h[s])return h[s];let r=o.length;return o.length+=3,b.add(o,3*n,o,3*e,o,r),b.scale(o,r,t/b.length(o,r)),r/=3,h[s]=r,r}for(let a=0;a<n;a++){const t=r.length,n=new Array(4*t);for(let e=0;e<t;e+=3){const t=r[e],s=r[e+1],o=r[e+2],h=l(t,s),u=l(s,o),c=l(o,t),a=4*e;n[a]=t,n[a+1]=h,n[a+2]=c,n[a+3]=s,n[a+4]=u,n[a+5]=h,n[a+6]=o,n[a+7]=c,n[a+8]=u,n[a+9]=h,n[a+10]=u,n[a+11]=c}r=n,h={}}const u=I(o);for(let a=0;a<u.length;a+=3)b.normalize(u,a);const c=[[L.POSITION,r],[L.NORMAL,r]];return{vertexAttributes:[[L.POSITION,new y(I(o),3,!0)],[L.NORMAL,new y(u,3,!0)]],indices:c}}function ot(t,n,e,s,o,r,h,l,u=null){const c=e?[e[0],e[1],e[2]]:[0,0,0],a=n?[n[0],n[1],n[2]]:[0,0,1];h=h||[0,0];const p=s?[255*s[0],255*s[1],255*s[2],s.length>3?255*s[3]:255]:[255,255,255,255],f=null!=o&&2===o.length?o:[1,1],O=[[L.POSITION,new y(c,3,!0)],[L.NORMAL,new y(a,3,!0)],[L.UV0,new y(h,h.length)],[L.COLOR,new y(p,4,!0)],[L.SIZE,new y(f,2)]];if(null!=r){const t=[r[0],r[1],r[2],r[3]];O.push([L.AUXPOS1,new y(t,4)])}if(null!=l){const t=[l[0],l[1],l[2],l[3]];O.push([L.FEATUREATTRIBUTE,new y(t,4)])}return new S(t,O,null,null,T.Point,u)}const rt=[[-1,-1,0],[1,-1,0],[1,1,0],[-1,1,0]];function ht(t,n=rt){const e=new Array(12);for(let a=0;a<4;a++)for(let t=0;t<3;t++)e[3*a+t]=n[a][t];const s=[0,1,2,2,3,0],o=[0,0,1],r=[0,0,0,0,0,0],h=[0,0,1,0,1,1,0,1],l=[255,255,255,255],u=[[L.POSITION,s],[L.NORMAL,r],[L.UV0,s],[L.COLOR,r]],c=[[L.POSITION,new y(e,3,!0)],[L.NORMAL,new y(o,3,!0)],[L.UV0,new y(h,2,!0)],[L.COLOR,new y(l,4,!0)]];return new S(t,c,u)}function lt(t,n,e,s,o,r=!0,h=!0){let l=0;const u=e,a=n;let p=c(0,l,0),f=c(0,l+a,0),O=c(0,-1,0),I=c(0,1,0);o&&(l=a,f=c(0,0,0),p=c(0,l,0),O=c(0,1,0),I=c(0,-1,0));const w=[f,p],g=[O,I],M=s+2,A=Math.sqrt(a*a+u*u);if(o)for(let i=s-1;i>=0;i--){const t=i*(2*Math.PI/s),n=c(Math.cos(t)*u,l,Math.sin(t)*u);w.push(n);const e=c(a*Math.cos(t)/A,-u/A,a*Math.sin(t)/A);g.push(e)}else for(let i=0;i<s;i++){const t=i*(2*Math.PI/s),n=c(Math.cos(t)*u,l,Math.sin(t)*u);w.push(n);const e=c(a*Math.cos(t)/A,u/A,a*Math.sin(t)/A);g.push(e)}const m=new Array,N=new Array;if(r){for(let t=3;t<w.length;t++)m.push(1),m.push(t-1),m.push(t),N.push(0),N.push(0),N.push(0);m.push(w.length-1),m.push(2),m.push(1),N.push(0),N.push(0),N.push(0)}if(h){for(let t=3;t<w.length;t++)m.push(t),m.push(t-1),m.push(0),N.push(t),N.push(t-1),N.push(1);m.push(0),m.push(2),m.push(w.length-1),N.push(1),N.push(2),N.push(g.length-1)}const P=i(3*M);for(let c=0;c<M;c++)P[3*c]=w[c][0],P[3*c+1]=w[c][1],P[3*c+2]=w[c][2];const T=i(3*M);for(let c=0;c<M;c++)T[3*c]=g[c][0],T[3*c+1]=g[c][1],T[3*c+2]=g[c][2];const R=[[L.POSITION,m],[L.NORMAL,N]],b=[[L.POSITION,new y(P,3,!0)],[L.NORMAL,new y(T,3,!0)]];return new S(t,b,R)}function ut(t,l,u,f,O,I,w){const g=O?p(O):c(1,0,0),M=I?p(I):c(0,0,0);w??=!0;const A=a();e(A,g);const m=a();s(m,A,Math.abs(l));const N=a();s(N,m,-.5),o(N,N,M);const P=c(0,1,0);Math.abs(1-r(A,P))<.2&&h(P,0,0,1);const T=a();n(T,A,P),e(T,T),n(P,T,A);const R=2*f+(w?2:0),b=f+(w?2:0),d=i(3*R),j=i(3*b),U=i(2*R),V=new Array(3*f*(w?4:2)),v=new Array(3*f*(w?4:2));w&&(d[3*(R-2)]=N[0],d[3*(R-2)+1]=N[1],d[3*(R-2)+2]=N[2],U[2*(R-2)]=0,U[2*(R-2)+1]=0,d[3*(R-1)]=d[3*(R-2)]+m[0],d[3*(R-1)+1]=d[3*(R-2)+1]+m[1],d[3*(R-1)+2]=d[3*(R-2)+2]+m[2],U[2*(R-1)]=1,U[2*(R-1)+1]=1,j[3*(b-2)]=-A[0],j[3*(b-2)+1]=-A[1],j[3*(b-2)+2]=-A[2],j[3*(b-1)]=A[0],j[3*(b-1)+1]=A[1],j[3*(b-1)+2]=A[2]);const x=(t,n,e)=>{V[t]=n,v[t]=e};let F=0;const C=a(),E=a();for(let n=0;n<f;n++){const t=n*(2*Math.PI/f);s(C,P,Math.sin(t)),s(E,T,Math.cos(t)),o(C,C,E),j[3*n]=C[0],j[3*n+1]=C[1],j[3*n+2]=C[2],s(C,C,u),o(C,C,N),d[3*n]=C[0],d[3*n+1]=C[1],d[3*n+2]=C[2],U[2*n]=n/f,U[2*n+1]=0,d[3*(n+f)]=d[3*n]+m[0],d[3*(n+f)+1]=d[3*n+1]+m[1],d[3*(n+f)+2]=d[3*n+2]+m[2],U[2*(n+f)]=n/f,U[2*n+1]=1;const e=(n+1)%f;x(F++,n,n),x(F++,n+f,n),x(F++,e,e),x(F++,e,e),x(F++,n+f,n),x(F++,e+f,e)}if(w){for(let t=0;t<f;t++){const n=(t+1)%f;x(F++,R-2,b-2),x(F++,t,b-2),x(F++,n,b-2)}for(let t=0;t<f;t++){const n=(t+1)%f;x(F++,t+f,b-1),x(F++,R-1,b-1),x(F++,n+f,b-1)}}const G=[[L.POSITION,V],[L.NORMAL,v],[L.UV0,V]],k=[[L.POSITION,new y(d,3,!0)],[L.NORMAL,new y(j,3,!0)],[L.UV0,new y(U,2,!0)]];return new S(t,k,G)}function ct(t,n,e,s,o,r){s=s||10,o=null==o||o,R(n.length>1);const h=[[0,0,0]],l=[],u=[];for(let c=0;c<s;c++){l.push([0,-c-1,-(c+1)%s-1]);const t=c/s*2*Math.PI;u.push([Math.cos(t)*e,Math.sin(t)*e])}return at(t,u,n,h,l,o,r)}function at(r,u,p,O,I,w,g=c(0,0,0)){const P=u.length,T=i(p.length*P*3+(6*O.length||0)),R=i(p.length*P*3+(O?6:0)),b=new Array,d=new Array;let j=0,U=0;const V=a(),v=a(),x=a(),F=a(),C=a(),E=a(),G=a(),k=f(),q=a(),B=a(),z=a(),D=a(),X=a(),Z=M();h(q,0,1,0),t(v,p[1],p[0]),e(v,v),w?(o(k,p[0],g),e(x,k)):h(x,0,0,1),wt(v,x,q,q,C,x,gt),l(F,x),l(D,C);for(let t=0;t<O.length;t++)s(E,C,O[t][0]),s(k,x,O[t][2]),o(E,E,k),o(E,E,p[0]),T[j++]=E[0],T[j++]=E[1],T[j++]=E[2];R[U++]=-v[0],R[U++]=-v[1],R[U++]=-v[2];for(let t=0;t<I.length;t++)b.push(I[t][0]>0?I[t][0]:-I[t][0]-1+O.length),b.push(I[t][1]>0?I[t][1]:-I[t][1]-1+O.length),b.push(I[t][2]>0?I[t][2]:-I[t][2]-1+O.length),d.push(0),d.push(0),d.push(0);let H=O.length;const J=O.length-1;for(let h=0;h<p.length;h++){let r=!1;if(h>0){l(V,v),h<p.length-1?(t(v,p[h+1],p[h]),e(v,v)):r=!0,o(B,V,v),e(B,B),o(z,p[h-1],F),A(p[h],B,Z);m(Z,N(z,V),k)?(t(k,k,p[h]),e(x,k),n(C,B,x),e(C,C)):wt(B,F,D,q,C,x,gt),l(F,x),l(D,C)}w&&(o(k,p[h],g),e(X,k));for(let t=0;t<P;t++)if(s(E,C,u[t][0]),s(k,x,u[t][1]),o(E,E,k),e(G,E),R[U++]=G[0],R[U++]=G[1],R[U++]=G[2],o(E,E,p[h]),T[j++]=E[0],T[j++]=E[1],T[j++]=E[2],!r){const n=(t+1)%P;b.push(H+t),b.push(H+P+t),b.push(H+n),b.push(H+n),b.push(H+P+t),b.push(H+P+n);for(let t=0;t<6;t++){const n=b.length-6;d.push(b[n+t]-J)}}H+=P}const K=p[p.length-1];for(let t=0;t<O.length;t++)s(E,C,O[t][0]),s(k,x,O[t][1]),o(E,E,k),o(E,E,K),T[j++]=E[0],T[j++]=E[1],T[j++]=E[2];const Q=U/3;R[U++]=v[0],R[U++]=v[1],R[U++]=v[2];const W=H-P;for(let t=0;t<I.length;t++)b.push(I[t][0]>=0?H+I[t][0]:-I[t][0]-1+W),b.push(I[t][2]>=0?H+I[t][2]:-I[t][2]-1+W),b.push(I[t][1]>=0?H+I[t][1]:-I[t][1]-1+W),d.push(Q),d.push(Q),d.push(Q);const Y=[[L.POSITION,b],[L.NORMAL,d]],$=[[L.POSITION,new y(T,3,!0)],[L.NORMAL,new y(R,3,!0)]];return new S(r,$,Y)}function pt(t,n,e,s){R(n.length>1,"createPolylineGeometry(): polyline needs at least 2 points"),R(3===n[0].length,"createPolylineGeometry(): malformed vertex"),R(null==e||e.length===n.length,"createPolylineGeometry: need same number of points and normals"),R(null==e||3===e[0].length,"createPolylineGeometry(): malformed normal");const o=O(3*n.length),r=new Array(2*(n.length-1));let h=0,l=0;for(let a=0;a<n.length;a++){for(let t=0;t<3;t++)o[h++]=n[a][t];a>0&&(r[l++]=a-1,r[l++]=a)}const u=[],c=[];if(u.push([L.POSITION,r]),c.push([L.POSITION,new y(o,3,!0)]),e){const t=i(3*e.length);let s=0;for(let o=0;o<n.length;o++)for(let n=0;n<3;n++)t[s++]=e[o][n];u.push([L.NORMAL,r]),c.push([L.NORMAL,new y(t,3,!0)])}return s&&(c.push([L.COLOR,new y(s,4)]),u.push([L.COLOR,g(s.length/4)])),new S(t,c,u,null,T.Line)}function ft(t,n,e,s,o,r=0){const h=new Array(18),l=[[-e,r,o/2],[s,r,o/2],[0,n+r,o/2],[-e,r,-o/2],[s,r,-o/2],[0,n+r,-o/2]],u=[0,1,2,3,0,2,2,5,3,1,4,5,5,2,1,1,0,3,3,4,1,4,3,5];for(let c=0;c<6;c++)h[3*c]=l[c][0],h[3*c+1]=l[c][1],h[3*c+2]=l[c][2];return new S(t,[[L.POSITION,new y(h,3,!0)]],[[L.POSITION,u]])}function Ot(t,n){const e=t.getMutableAttribute(L.POSITION).data;for(let s=0;s<e.length;s+=3){const t=e[s],o=e[s+1],r=e[s+2];h(Mt,t,o,r),u(Mt,Mt,n),e[s]=Mt[0],e[s+1]=Mt[1],e[s+2]=Mt[2]}}function it(t,n=t){const e=t.vertexAttributes,s=e.get(L.POSITION).data,o=e.get(L.NORMAL).data;if(o){const t=n.getMutableAttribute(L.NORMAL).data;for(let n=0;n<o.length;n+=3){const e=o[n+1];t[n+1]=-o[n+2],t[n+2]=e}}if(s){const t=n.getMutableAttribute(L.POSITION).data;for(let n=0;n<s.length;n+=3){const e=s[n+1];t[n+1]=-s[n+2],t[n+2]=e}}}function It(t,s,o,h,l){return!(Math.abs(r(s,t))>l)&&(n(o,t,s),e(o,o),n(h,o,t),e(h,h),!0)}function wt(t,n,e,s,o,r,h){return It(t,n,o,r,h)||It(t,e,o,r,h)||It(t,s,o,r,h)}const gt=.99619469809,Mt=a();export{it as cgToGIS,F as createBoxGeometry,lt as createConeGeometry,ut as createCylinderGeometry,q as createDiamondGeometry,ft as createExtrudedTriangle,at as createPathExtrusionGeometry,ot as createPointGeometry,st as createPolySphereData,et as createPolySphereGeometry,pt as createPolylineGeometry,nt as createSphereGeometry,ht as createSquareGeometry,tt as createTetrahedronGeometry,ct as createTubeGeometry,wt as makeOrthoBasisDirUpFallback,Ot as transformInPlace};