@arcgis/core 5.0.0-next.127 → 5.0.0-next.129

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 (408) hide show
  1. package/Camera.d.ts +1 -1
  2. package/Ground.d.ts +7 -7
  3. package/PopupTemplate.d.ts +6 -6
  4. package/WebScene.d.ts +1 -1
  5. package/analysis/AreaMeasurementAnalysis.d.ts +1 -1
  6. package/analysis/DirectLineMeasurementAnalysis.d.ts +1 -1
  7. package/analysis/LengthDimension.d.ts +4 -4
  8. package/analysis/ShadowCastAnalysis.d.ts +3 -3
  9. package/analysis/SliceAnalysis.d.ts +1 -1
  10. package/analysis/SlicePlane.d.ts +1 -1
  11. package/analysis/VolumeMeasurement/VolumeMeasurementCutFillOptions.d.ts +1 -1
  12. package/analysis/VolumeMeasurementAnalysis.d.ts +1 -1
  13. package/applications/WebEditor/geometryUtils.d.ts +26 -0
  14. package/applications/WebEditor/geometryUtils.js +2 -0
  15. package/assets/esri/core/workers/RemoteClient.js +1 -1
  16. package/assets/esri/core/workers/chunks/{982e709d2cef971ecd82.js → 0d9d33f29124d464a4cb.js} +1 -1
  17. package/assets/esri/core/workers/chunks/{2762149a922275136171.js → 112227b862b935123ddf.js} +2 -2
  18. package/assets/esri/core/workers/chunks/1336f685bae5f1251558.js +1 -0
  19. package/assets/esri/core/workers/chunks/{b71e4f48377fefe2537d.js → 15d46482ec096e3ce161.js} +1 -1
  20. package/assets/esri/core/workers/chunks/{d0d1378e714ff0e43e26.js → 1cfa8d404d42b9eccf78.js} +1 -1
  21. package/assets/esri/core/workers/chunks/{1e29a114c1cfe21121c4.js → 203ef5459fc5dde12851.js} +1 -1
  22. package/assets/esri/core/workers/chunks/{0a4ebb5dca630a4ab0dd.js → 236f8137ae505c8f0764.js} +1 -1
  23. package/assets/esri/core/workers/chunks/{b4203e488bb928ff8032.js → 25d34552bfb255af9467.js} +1 -1
  24. package/assets/esri/core/workers/chunks/{d8adab2d55b39241b232.js → 27e14277128446e76b45.js} +1 -1
  25. package/assets/esri/core/workers/chunks/3d3b1ce112be6ea31d93.js +1 -0
  26. package/assets/esri/core/workers/chunks/{fd47dc60646260c5633c.js → 415957a42e45eb21aa84.js} +1 -1
  27. package/assets/esri/core/workers/chunks/4ac09b066c696476e532.js +1 -0
  28. package/assets/esri/core/workers/chunks/{72acfb74fd9ab9bae923.js → 53e348f5585fa8c53fe8.js} +2 -2
  29. package/assets/esri/core/workers/chunks/{323f6077a659416c4cee.js → 6a9a96aa811c1d3b6edb.js} +1 -1
  30. package/assets/esri/core/workers/chunks/{25c189e894927099c239.js → 6c85396c90941a042c33.js} +1 -1
  31. package/assets/esri/core/workers/chunks/{89274b81a2a8b7cd5c49.js → 6f337c3ccd84d90a35e5.js} +1 -1
  32. package/assets/esri/core/workers/chunks/72c31f3313dfe87dd1aa.js +1 -0
  33. package/assets/esri/core/workers/chunks/{a3e8b7185d63a0f85931.js → 79c69ae86a1f4a56f7c7.js} +1 -1
  34. package/assets/esri/core/workers/chunks/{1ce46085095679386580.js → 8cade3af17a8bb6d4e37.js} +1 -1
  35. package/assets/esri/core/workers/chunks/{f5f513997cde0ce0f2a2.js → 8eb535b43e1220cf0d75.js} +1 -1
  36. package/assets/esri/core/workers/chunks/{6af14a0217077d9ab47f.js → aaf3ed508d30ed583915.js} +1 -1
  37. package/assets/esri/core/workers/chunks/{91858b02da40ff251ab2.js → b397a9f87082705301a4.js} +2 -2
  38. package/assets/esri/core/workers/chunks/baad696d84ab78b3d00e.js +2 -0
  39. package/assets/esri/core/workers/chunks/{f104823f3b31a204bacb.js → bc2dcbdc414d157ab727.js} +1 -1
  40. package/assets/esri/core/workers/chunks/{6bd910e0480451a8d6aa.js → bde2c3199f667b63dbe8.js} +1 -1
  41. package/assets/esri/core/workers/chunks/{4214f46bee613dea72f3.js → c66aa57b6360963bd938.js} +1 -1
  42. package/assets/esri/core/workers/chunks/{c409b8d39c0a40dafa06.js → cb5f4820277f3fc7ff2f.js} +1 -1
  43. package/assets/esri/core/workers/chunks/cbcb3530375e280bfeac.js +1 -0
  44. package/assets/esri/core/workers/chunks/{5c12a9b0db317620dce2.js → d39f5d57f7e35c00ca16.js} +1 -1
  45. package/assets/esri/core/workers/chunks/{a82587f69c4bbcac7e0b.js → dc7df2072c0ebed5602c.js} +1 -1
  46. package/assets/esri/core/workers/chunks/dd3789e71270a4640551.js +1 -0
  47. package/assets/esri/core/workers/chunks/de5719ef663224860af5.js +1 -0
  48. package/assets/esri/core/workers/chunks/de6438fdbe38d32c4ad5.js +1 -0
  49. package/assets/esri/core/workers/chunks/{b705f837caa76cee81fc.js → e09722903e63f6cc2540.js} +1 -1
  50. package/assets/esri/core/workers/chunks/{6cd370c716e4fe87b684.js → e2e03622936d2b35afc0.js} +1 -1
  51. package/assets/esri/core/workers/chunks/{9531f17cecd50431cce2.js → e8ae71e482b8d5f54a72.js} +1 -1
  52. package/assets/esri/core/workers/chunks/{7477a4d08414b561d03b.js → e97b29b026a734bbcff8.js} +1 -1
  53. package/assets/esri/core/workers/chunks/edaae0fc63d16b0f675d.js +2 -0
  54. package/assets/esri/core/workers/chunks/{214323c62d6d3b603a00.js → f7506c9d57b2ae0c5fd3.js} +1 -1
  55. package/assets/esri/themes/base/widgets/_Editor.scss +1 -0
  56. package/assets/esri/themes/dark/main.css +1 -1
  57. package/assets/esri/themes/light/main.css +1 -1
  58. package/assets/esri/themes/light/view.css +1 -1
  59. package/chunks/Envelope.js +1 -1
  60. package/chunks/GeodeticDistanceCalculator-Ce-woMPw.js +1 -1
  61. package/chunks/GeodeticUtils.js +1 -1
  62. package/chunks/Geometry.js +1 -1
  63. package/chunks/MultiPathImpl.js +1 -1
  64. package/chunks/OperatorGeodesicBuffer.js +1 -1
  65. package/chunks/OperatorGeodeticArea.js +1 -1
  66. package/chunks/OperatorGeodeticDensifyByLength.js +1 -1
  67. package/chunks/OperatorGeodeticLength.js +1 -1
  68. package/chunks/OperatorIntegrate.js +2 -0
  69. package/chunks/OperatorMultiPartToSinglePart.js +1 -1
  70. package/chunks/OperatorProximityGeodesic.js +1 -1
  71. package/chunks/OperatorShapePreservingLength.js +1 -1
  72. package/chunks/OperatorShapePreservingProject.js +1 -1
  73. package/chunks/Point2D.js +1 -1
  74. package/chunks/SpatialReference.js +1 -1
  75. package/chunks/relateOperator.js +1 -1
  76. package/config.js +1 -1
  77. package/effects/FocusAreas.d.ts +1 -1
  78. package/form/elements/FieldElement.d.ts +1 -1
  79. package/form/elements/GroupElement.d.ts +1 -1
  80. package/form/elements/TextElement.d.ts +1 -1
  81. package/form/elements/inputs/ComboBoxInput.d.ts +1 -1
  82. package/form/elements/inputs/RadioButtonsInput.d.ts +1 -1
  83. package/form/elements/inputs/SwitchInput.d.ts +1 -1
  84. package/geometry/Mesh.d.ts +7 -7
  85. package/geometry/operators/alphaShapeOperator.d.ts +1 -1
  86. package/geometry/operators/areaOperator.d.ts +1 -1
  87. package/geometry/operators/bufferOperator.d.ts +1 -1
  88. package/geometry/operators/centroidOperator.d.ts +1 -1
  89. package/geometry/operators/clipOperator.d.ts +1 -1
  90. package/geometry/operators/containsOperator.d.ts +1 -1
  91. package/geometry/operators/convexHullOperator.d.ts +1 -1
  92. package/geometry/operators/crossesOperator.d.ts +1 -1
  93. package/geometry/operators/cutOperator.d.ts +1 -1
  94. package/geometry/operators/densifyOperator.d.ts +1 -1
  95. package/geometry/operators/differenceOperator.d.ts +1 -1
  96. package/geometry/operators/disjointOperator.d.ts +1 -1
  97. package/geometry/operators/distanceOperator.d.ts +1 -1
  98. package/geometry/operators/extendOperator.js +1 -1
  99. package/geometry/operators/generalizeOperator.d.ts +1 -1
  100. package/geometry/operators/geodesicProximityOperator.d.ts +1 -1
  101. package/geometry/operators/geodeticDistanceOperator.d.ts +1 -1
  102. package/geometry/operators/geodeticUtilsOperator.d.ts +2 -2
  103. package/geometry/operators/graphicBufferOperator.d.ts +1 -1
  104. package/geometry/operators/gx/operatorAlphaShape.js +1 -1
  105. package/geometry/operators/gx/operatorAutoComplete.js +1 -1
  106. package/geometry/operators/gx/operatorConvexHull.js +1 -1
  107. package/geometry/operators/gx/operatorIntegrate.js +1 -1
  108. package/geometry/operators/gx/operatorLabelPoint.js +1 -1
  109. package/geometry/operators/gx/operatorMinimumBoundingCircle.js +1 -1
  110. package/geometry/operators/gx/operatorPolygonOverlay.js +1 -1
  111. package/geometry/operators/gx/operatorSymmetricDifference.js +1 -1
  112. package/geometry/operators/intersectionOperator.d.ts +1 -1
  113. package/geometry/operators/intersectsOperator.d.ts +1 -1
  114. package/geometry/operators/isNearOperator.d.ts +1 -1
  115. package/geometry/operators/lengthOperator.d.ts +1 -1
  116. package/geometry/operators/locateBetweenOperator.d.ts +1 -1
  117. package/geometry/operators/multiPartToSinglePartOperator.d.ts +1 -1
  118. package/geometry/operators/offsetOperator.d.ts +5 -5
  119. package/geometry/operators/overlapsOperator.d.ts +1 -1
  120. package/geometry/operators/proximityOperator.d.ts +1 -1
  121. package/geometry/operators/reshapeOperator.js +1 -1
  122. package/geometry/operators/simplifyOGCOperator.d.ts +1 -1
  123. package/geometry/operators/simplifyOperator.d.ts +1 -1
  124. package/geometry/operators/support/Transformation.d.ts +6 -6
  125. package/geometry/operators/support/jsonConverter.js +1 -1
  126. package/geometry/operators/support/projectionTransformation.js +1 -1
  127. package/geometry/operators/symmetricDifferenceOperator.d.ts +1 -1
  128. package/geometry/operators/touchesOperator.d.ts +1 -1
  129. package/geometry/operators/unionOperator.d.ts +1 -1
  130. package/geometry/operators/withinOperator.d.ts +1 -1
  131. package/geometry/support/MeshMaterialMetallicRoughness.d.ts +1 -1
  132. package/kernel.js +1 -1
  133. package/layers/BuildingSceneLayer.d.ts +4 -4
  134. package/layers/CSVLayer.d.ts +2 -2
  135. package/layers/CatalogLayer.d.ts +2 -2
  136. package/layers/ElevationLayer.d.ts +1 -1
  137. package/layers/FeatureLayer.d.ts +2 -2
  138. package/layers/GeoJSONLayer.d.ts +2 -2
  139. package/layers/GeoRSSLayer.d.ts +1 -1
  140. package/layers/GraphicsLayer.d.ts +2 -2
  141. package/layers/ImageryLayer.d.ts +3 -3
  142. package/layers/ImageryTileLayer.d.ts +2 -2
  143. package/layers/IntegratedMesh3DTilesLayer.d.ts +6 -6
  144. package/layers/IntegratedMeshLayer.d.ts +7 -7
  145. package/layers/Layer.d.ts +1 -0
  146. package/layers/MapImageLayer.d.ts +1 -1
  147. package/layers/MediaLayer.d.ts +1 -1
  148. package/layers/OGCFeatureLayer.d.ts +2 -2
  149. package/layers/OrientedImageryLayer.js +1 -1
  150. package/layers/PointCloudLayer.d.ts +1 -1
  151. package/layers/SceneLayer.d.ts +5 -5
  152. package/layers/StreamLayer.d.ts +2 -2
  153. package/layers/SubtypeGroupLayer.d.ts +0 -1
  154. package/layers/VectorTileLayer.d.ts +2 -2
  155. package/layers/VideoLayer.d.ts +1 -1
  156. package/layers/VoxelLayer.d.ts +8 -8
  157. package/layers/WFSLayer.d.ts +6 -6
  158. package/layers/catalog/CatalogFootprintLayer.d.ts +1 -1
  159. package/layers/graphics/data/QueryEngineResult.js +1 -1
  160. package/layers/mixins/BlendLayer.d.ts +6 -6
  161. package/layers/orientedImagery/core/ExposurePoint.js +1 -1
  162. package/layers/orientedImagery/transformations/utils.js +1 -1
  163. package/layers/pointCloudFilters/PointCloudReturnFilter.d.ts +1 -1
  164. package/layers/pointCloudFilters/PointCloudValueFilter.d.ts +1 -1
  165. package/layers/raster/datasets/ImageServerRaster.js +1 -1
  166. package/layers/support/DimensionalDefinition.d.ts +2 -2
  167. package/layers/support/FeatureEffect.d.ts +4 -4
  168. package/layers/support/FeatureFilter.d.ts +17 -17
  169. package/layers/support/FeatureReductionBinning.d.ts +1 -1
  170. package/layers/support/FeatureReductionCluster.d.ts +9 -9
  171. package/layers/support/LabelClass.d.ts +2 -2
  172. package/layers/support/RasterFunction.d.ts +1 -1
  173. package/layers/support/SceneFilter.d.ts +2 -2
  174. package/layers/support/SceneModification.d.ts +3 -3
  175. package/networks/support/TraceConfiguration.d.ts +5 -4
  176. package/networks/support/UNTraceConfiguration.d.ts +6 -5
  177. package/networks/support/jsonTypes.d.ts +305 -0
  178. package/package.json +3 -3
  179. package/popup/content/AttachmentsContent.d.ts +1 -1
  180. package/popup/content/BarChartMediaInfo.d.ts +1 -1
  181. package/popup/content/ColumnChartMediaInfo.d.ts +1 -1
  182. package/popup/content/FieldsContent.d.ts +1 -1
  183. package/popup/content/ImageMediaInfo.d.ts +1 -1
  184. package/popup/content/LineChartMediaInfo.d.ts +1 -1
  185. package/popup/content/MediaContent.d.ts +1 -1
  186. package/popup/content/PieChartMediaInfo.d.ts +1 -1
  187. package/popup/content/RelationshipContent.d.ts +1 -1
  188. package/popup/content/TextContent.d.ts +1 -1
  189. package/portal/schemas/definitions.js +1 -1
  190. package/renderers/DotDensityRenderer.d.ts +3 -3
  191. package/renderers/FlowRenderer.d.ts +6 -6
  192. package/renderers/HeatmapRenderer.d.ts +3 -3
  193. package/renderers/PieChartRenderer.d.ts +1 -1
  194. package/renderers/RasterShadedReliefRenderer.d.ts +1 -1
  195. package/renderers/Renderer.d.ts +2 -2
  196. package/renderers/SimpleRenderer.d.ts +1 -1
  197. package/renderers/VectorFieldRenderer.d.ts +1 -1
  198. package/renderers/mixins/VisualVariablesMixin.d.ts +8 -8
  199. package/rest/query/operations/pbfFlatFeatureSet.js +1 -1
  200. package/rest/query/support/AttachmentInfo.d.ts +1 -1
  201. package/rest/support/AutoIntervalBinParameters.d.ts +1 -1
  202. package/rest/support/DateBinParameters.d.ts +1 -1
  203. package/rest/support/FixedBoundariesBinParameters.d.ts +1 -1
  204. package/rest/support/FixedIntervalBinParameters.d.ts +1 -1
  205. package/smartMapping/labels/clusters.d.ts +1 -1
  206. package/smartMapping/popup/clusters.d.ts +2 -2
  207. package/smartMapping/popup/templates.d.ts +1 -1
  208. package/smartMapping/raster/renderers/flow.d.ts +2 -2
  209. package/smartMapping/renderers/color.d.ts +12 -12
  210. package/smartMapping/renderers/predominance.d.ts +3 -3
  211. package/smartMapping/renderers/relationship.d.ts +15 -15
  212. package/smartMapping/renderers/univariateColorSize.d.ts +4 -4
  213. package/smartMapping/support/adapters/FeatureLayerAdapter.js +1 -1
  214. package/smartMapping/support/adapters/InMemoryLayerAdapter.js +1 -1
  215. package/smartMapping/support/utils.js +1 -1
  216. package/smartMapping/symbology/color.d.ts +4 -4
  217. package/smartMapping/symbology/flow.d.ts +2 -2
  218. package/smartMapping/symbology/types.d.ts +18 -18
  219. package/support/revision.js +1 -1
  220. package/symbols/CIMSymbol.d.ts +1 -1
  221. package/symbols/FillSymbol3DLayer.d.ts +3 -3
  222. package/symbols/IconSymbol3DLayer.d.ts +1 -1
  223. package/symbols/LabelSymbol3D.d.ts +2 -2
  224. package/symbols/LineStyleMarker3D.d.ts +7 -7
  225. package/symbols/LineSymbol3D.d.ts +2 -2
  226. package/symbols/LineSymbol3DLayer.d.ts +7 -7
  227. package/symbols/LineSymbolMarker.d.ts +6 -6
  228. package/symbols/MarkerSymbol.d.ts +1 -1
  229. package/symbols/MeshSymbol3D.d.ts +2 -2
  230. package/symbols/ObjectSymbol3DLayer.d.ts +1 -1
  231. package/symbols/PathSymbol3DLayer.d.ts +14 -14
  232. package/symbols/PictureFillSymbol.d.ts +1 -1
  233. package/symbols/PictureMarkerSymbol.d.ts +1 -1
  234. package/symbols/PointSymbol3D.d.ts +3 -3
  235. package/symbols/PolygonSymbol3D.d.ts +8 -26
  236. package/symbols/PolygonSymbol3D.js +1 -1
  237. package/symbols/SimpleFillSymbol.d.ts +8 -8
  238. package/symbols/SimpleLineSymbol.d.ts +20 -20
  239. package/symbols/SimpleMarkerSymbol.d.ts +7 -7
  240. package/symbols/Symbol3DLayer.d.ts +16 -16
  241. package/symbols/TextSymbol.d.ts +1 -1
  242. package/symbols/TextSymbol3DLayer.d.ts +1 -1
  243. package/symbols/WaterSymbol3DLayer.d.ts +3 -3
  244. package/symbols/WebStyleSymbol.d.ts +1 -1
  245. package/symbols/callouts/Callout3D.d.ts +1 -1
  246. package/symbols/callouts/LineCallout3D.d.ts +3 -3
  247. package/symbols/cim/cimAnalyzer.js +1 -1
  248. package/symbols/cim/types.d.ts +23 -23
  249. package/symbols/edges/Edges3D.d.ts +1 -1
  250. package/symbols/edges/SolidEdges3D.d.ts +1 -1
  251. package/symbols/patterns/LineStylePattern3D.d.ts +11 -11
  252. package/symbols/patterns/StylePattern3D.d.ts +8 -8
  253. package/symbols/support/ElevationInfo.d.ts +2 -2
  254. package/symbols/support/IconSymbol3DLayerResource.d.ts +6 -6
  255. package/symbols/support/ObjectSymbol3DLayerResource.d.ts +7 -7
  256. package/symbols/support/Symbol3DEmissive.d.ts +24 -13
  257. package/symbols/support/Symbol3DVerticalOffset.d.ts +2 -2
  258. package/symbols/support/previewSymbol3D.js +1 -1
  259. package/views/2d/engine/webgl/shaderGraph/techniques/GraphicInstanceStore.js +1 -1
  260. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AAnimatedPolyShader.js +1 -1
  261. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AnimatedFillShader.js +1 -1
  262. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AnimatedPolyMeshWriters.js +1 -1
  263. package/views/2d/engine/webgl/shaderGraph/techniques/animated/attributes.js +1 -1
  264. package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
  265. package/views/2d/layers/BaseLayerViewGL2D.d.ts +1 -1
  266. package/views/2d/layers/features/schema/processor/symbols/ComplexSymbolSchema.js +1 -1
  267. package/views/2d/layers/imagery/BaseImageryTileSubView2D.js +1 -1
  268. package/views/2d/types.d.ts +3 -3
  269. package/views/3d/environment/CloudyWeather.d.ts +1 -1
  270. package/views/3d/environment/Environment.d.ts +4 -4
  271. package/views/3d/environment/FoggyWeather.d.ts +1 -1
  272. package/views/3d/environment/RainyWeather.d.ts +1 -1
  273. package/views/3d/environment/SnowyWeather.d.ts +1 -1
  274. package/views/3d/environment/SunLighting.d.ts +1 -1
  275. package/views/3d/environment/SunnyWeather.d.ts +1 -1
  276. package/views/3d/environment/VirtualLighting.d.ts +1 -1
  277. package/views/3d/layers/graphics/Deconflictor.js +1 -1
  278. package/views/3d/layers/i3s/I3SViewportQueries.js +1 -1
  279. package/views/3d/webgl/RenderNode.d.ts +46 -57
  280. package/views/3d/webgl.d.ts +8 -5
  281. package/views/Magnifier.d.ts +3 -3
  282. package/views/MapView.d.ts +7 -7
  283. package/views/SceneView.d.ts +34 -37
  284. package/views/View.d.ts +2 -2
  285. package/views/analysis/ElevationProfile/ElevationProfileChart.js +1 -1
  286. package/views/interactive/sketch/SketchLabelOptions.d.ts +1 -1
  287. package/views/interactive/sketch/SketchTooltipOptions.d.ts +1 -1
  288. package/views/interactive/snapping/RightAngleSnapper.js +1 -1
  289. package/views/interactive/snapping/RightAngleTriangleSnapper.js +1 -1
  290. package/views/interactive/snapping/SnappingOptions.d.ts +7 -7
  291. package/views/support/HighlightOptions.d.ts +1 -1
  292. package/views/support/flow/dataUtils.js +1 -1
  293. package/views/ui/DefaultUI.d.ts +2 -2
  294. package/webscene/Environment.d.ts +10 -10
  295. package/webscene/Glow.d.ts +8 -5
  296. package/webscene/background/ColorBackground.d.ts +1 -1
  297. package/webscene/spec-certification/spec.js +1 -1
  298. package/widgets/AreaMeasurement2D.d.ts +1 -1
  299. package/widgets/AreaMeasurement3D.d.ts +2 -2
  300. package/widgets/Attachments.d.ts +1 -1
  301. package/widgets/Attribution.d.ts +1 -1
  302. package/widgets/BasemapGallery.d.ts +1 -1
  303. package/widgets/BasemapLayerList.d.ts +3 -3
  304. package/widgets/BasemapToggle.d.ts +1 -1
  305. package/widgets/Bookmarks/BookmarksVisibleElements.d.ts +1 -1
  306. package/widgets/Bookmarks.d.ts +2 -2
  307. package/widgets/BuildingExplorer.d.ts +1 -1
  308. package/widgets/CatalogLayerList.d.ts +3 -3
  309. package/widgets/Compass.d.ts +2 -2
  310. package/widgets/CoordinateConversion.d.ts +1 -1
  311. package/widgets/Daylight.d.ts +5 -5
  312. package/widgets/DirectLineMeasurement3D.d.ts +2 -2
  313. package/widgets/Directions.d.ts +4 -4
  314. package/widgets/DistanceMeasurement2D.d.ts +1 -1
  315. package/widgets/Editor/CreateFeaturesWorkflow.d.ts +1 -1
  316. package/widgets/Editor.d.ts +2 -2
  317. package/widgets/ElevationProfile/ElevationProfileLineGround.d.ts +1 -1
  318. package/widgets/ElevationProfile/ElevationProfileLineInput.d.ts +1 -1
  319. package/widgets/ElevationProfile/ElevationProfileLineView.d.ts +1 -1
  320. package/widgets/ElevationProfile.d.ts +3 -3
  321. package/widgets/Expand.d.ts +1 -1
  322. package/widgets/FeatureForm.d.ts +1 -1
  323. package/widgets/FeatureTable/ActionColumn.d.ts +1 -1
  324. package/widgets/FeatureTable/AttachmentsColumn.d.ts +1 -1
  325. package/widgets/FeatureTable/FeatureTableViewModel.d.ts +3 -3
  326. package/widgets/FeatureTable/Grid/GroupColumn.d.ts +1 -1
  327. package/widgets/FeatureTable/RelationshipColumn.d.ts +1 -1
  328. package/widgets/FeatureTable/VisibleElements.d.ts +1 -1
  329. package/widgets/FeatureTable.d.ts +9 -9
  330. package/widgets/FeatureTemplates/FeatureTemplatesViewModel.d.ts +5 -5
  331. package/widgets/FeatureTemplates.d.ts +8 -8
  332. package/widgets/Features/FeaturesViewModel.d.ts +2 -2
  333. package/widgets/Features/FeaturesVisibleElements.d.ts +2 -2
  334. package/widgets/Features.d.ts +1 -1
  335. package/widgets/FloorFilter/FloorFilterViewModel.js +1 -1
  336. package/widgets/Histogram.d.ts +2 -2
  337. package/widgets/HistogramRangeSlider.d.ts +1 -1
  338. package/widgets/Home.d.ts +1 -1
  339. package/widgets/LayerList.d.ts +4 -4
  340. package/widgets/Legend.d.ts +8 -8
  341. package/widgets/LineOfSight.d.ts +1 -1
  342. package/widgets/Locate.d.ts +2 -2
  343. package/widgets/Measurement.d.ts +1 -1
  344. package/widgets/NavigationToggle/NavigationToggleViewModel.d.ts +1 -1
  345. package/widgets/NavigationToggle.d.ts +3 -3
  346. package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
  347. package/widgets/OrientedImageryViewer/adapters/sketch/MeasurementAdapter.js +1 -1
  348. package/widgets/OrientedImageryViewer/adapters/sketch/TriangulatedMeasurementAdapter.js +1 -1
  349. package/widgets/OrientedImageryViewer/components/ImageLocationViewModel.js +1 -1
  350. package/widgets/OrientedImageryViewer/imageMeasurementUtils.js +1 -1
  351. package/widgets/OrientedImageryViewer/navigation/NavigationManager.js +1 -1
  352. package/widgets/OrientedImageryViewer/navigation/queries.js +1 -1
  353. package/widgets/OrientedImageryViewer/navigation/utils.js +1 -1
  354. package/widgets/OrientedImageryViewer/services/ImageMeasurementService.js +1 -1
  355. package/widgets/OrientedImageryViewer/services/TransformationService.js +1 -1
  356. package/widgets/OrientedImageryViewer.js +1 -1
  357. package/widgets/Popup/PopupVisibleElements.d.ts +2 -2
  358. package/widgets/Popup.d.ts +5 -5
  359. package/widgets/Print/CustomTemplate.d.ts +1 -1
  360. package/widgets/Print/TemplateOptions.d.ts +4 -4
  361. package/widgets/ScaleRangeSlider.d.ts +1 -1
  362. package/widgets/Search/SearchViewModel.d.ts +4 -4
  363. package/widgets/Search.d.ts +5 -5
  364. package/widgets/ShadowCast.d.ts +3 -3
  365. package/widgets/Sketch/SketchViewModel.d.ts +39 -39
  366. package/widgets/Sketch.d.ts +43 -43
  367. package/widgets/Slice.d.ts +2 -2
  368. package/widgets/Slider/SliderViewModel.d.ts +2 -2
  369. package/widgets/Slider.d.ts +9 -9
  370. package/widgets/Swipe/SwipeViewModel.d.ts +1 -1
  371. package/widgets/Swipe.d.ts +2 -2
  372. package/widgets/TableList.d.ts +1 -1
  373. package/widgets/TimeSlider/TimeSliderViewModel.d.ts +8 -8
  374. package/widgets/TimeSlider/types.d.ts +1 -1
  375. package/widgets/TimeSlider.d.ts +11 -11
  376. package/widgets/Track.d.ts +2 -2
  377. package/widgets/UtilityNetworkAssociations.d.ts +3 -3
  378. package/widgets/UtilityNetworkTrace.d.ts +4 -4
  379. package/widgets/UtilityNetworkValidateTopology.d.ts +1 -1
  380. package/widgets/ValuePicker.d.ts +5 -5
  381. package/widgets/VideoPlayer.d.ts +1 -1
  382. package/widgets/smartMapping/ClassedColorSlider.d.ts +1 -1
  383. package/widgets/smartMapping/ClassedSizeSlider.d.ts +1 -1
  384. package/widgets/smartMapping/ColorSizeSlider.d.ts +2 -2
  385. package/widgets/smartMapping/ColorSlider.d.ts +1 -1
  386. package/widgets/smartMapping/HeatmapSlider.d.ts +1 -1
  387. package/widgets/smartMapping/OpacitySlider.d.ts +1 -1
  388. package/widgets/smartMapping/SizeSlider.d.ts +1 -1
  389. package/widgets/smartMapping/SmartMappingSliderBase.d.ts +4 -4
  390. package/widgets/smartMapping/SmartMappingSliderViewModel.d.ts +6 -6
  391. package/widgets/support/GridControls.d.ts +1 -1
  392. package/widgets/support/SnappingControls/VisibleElements.d.ts +1 -1
  393. package/widgets/support/SnappingControls.d.ts +6 -6
  394. package/assets/esri/core/workers/chunks/3b0cfe3db8d90e02d6c6.js +0 -1
  395. package/assets/esri/core/workers/chunks/754e4d0b8c1ad392bd83.js +0 -1
  396. package/assets/esri/core/workers/chunks/7e6309bfed6692e8d2d7.js +0 -2
  397. package/assets/esri/core/workers/chunks/9bb04d5f2e6f6e4585a0.js +0 -1
  398. package/assets/esri/core/workers/chunks/bdd246cc50ccd5c10987.js +0 -1
  399. package/assets/esri/core/workers/chunks/c941b716ea3c13cabc80.js +0 -1
  400. package/assets/esri/core/workers/chunks/c9babe86c00ae69e63ee.js +0 -2
  401. package/assets/esri/core/workers/chunks/d47ca631e109144b6ba9.js +0 -1
  402. package/assets/esri/core/workers/chunks/e0519f24430fecead87b.js +0 -1
  403. package/assets/esri/core/workers/chunks/fd5a5b05a1551cdb8c87.js +0 -1
  404. /package/assets/esri/core/workers/chunks/{2762149a922275136171.js.LICENSE.txt → 112227b862b935123ddf.js.LICENSE.txt} +0 -0
  405. /package/assets/esri/core/workers/chunks/{72acfb74fd9ab9bae923.js.LICENSE.txt → 53e348f5585fa8c53fe8.js.LICENSE.txt} +0 -0
  406. /package/assets/esri/core/workers/chunks/{7e6309bfed6692e8d2d7.js.LICENSE.txt → b397a9f87082705301a4.js.LICENSE.txt} +0 -0
  407. /package/assets/esri/core/workers/chunks/{91858b02da40ff251ab2.js.LICENSE.txt → baad696d84ab78b3d00e.js.LICENSE.txt} +0 -0
  408. /package/assets/esri/core/workers/chunks/{c9babe86c00ae69e63ee.js.LICENSE.txt → edaae0fc63d16b0f675d.js.LICENSE.txt} +0 -0
@@ -150,7 +150,7 @@ export type LayerView2DFor<TLayer extends Layer> = LayerView2DMap[TLayer["type"]
150
150
  * and will not need to be transformed by the same transform used for the geographic position. A common convention
151
151
  * is to express the offset in points or pixels and code the vertex shader accordingly.
152
152
  *
153
- * ![tessellation-helpers-extrusion](https://developers.arcgis.com/javascript/latest/assets/images/apiref/layers/tessellation-helpers-extrusion.png)
153
+ * ![tessellation-helpers-extrusion](https://developers.arcgis.com/javascript/latest/assets/references/core/layers/tessellation-helpers-extrusion.png)
154
154
  *
155
155
  * **Texture coordinates (uTexcoord, vTexcoord)**
156
156
  * The texture coordinates associated to this vertex.
@@ -161,13 +161,13 @@ export type LayerView2DFor<TLayer extends Layer> = LayerView2DMap[TLayer["type"]
161
161
  * upper right one; for [Polyline](https://developers.arcgis.com/javascript/latest/references/core/geometry/Polyline/) the start cap is made of two vertices with texture
162
162
  * coordinates (0, 0) and (0, 1) while the end cap is associated to (1, 0) and (1, 1).
163
163
  *
164
- * ![tessellation-helpers-uv](https://developers.arcgis.com/javascript/latest/assets/images/apiref/layers/tessellation-helpers-uv.png)
164
+ * ![tessellation-helpers-uv](https://developers.arcgis.com/javascript/latest/assets/references/core/layers/tessellation-helpers-uv.png)
165
165
  *
166
166
  * **Distance**
167
167
  * Valid only for [Polyline](https://developers.arcgis.com/javascript/latest/references/core/geometry/Polyline/); it is the distance, in map units, from the beginning of the
168
168
  * polyline to this vertex.
169
169
  *
170
- * ![tessellation-helpers-distance](https://developers.arcgis.com/javascript/latest/assets/images/apiref/layers/tessellation-helpers-distance.png)
170
+ * ![tessellation-helpers-distance](https://developers.arcgis.com/javascript/latest/assets/references/core/layers/tessellation-helpers-distance.png)
171
171
  *
172
172
  * @since 5.0
173
173
  */
@@ -5,7 +5,7 @@ export interface CloudyWeatherProperties extends Partial<Pick<CloudyWeather, "cl
5
5
  /**
6
6
  * The CloudyWeather class allows you to change the weather conditions in the scene to cloudy weather.
7
7
  *
8
- * ![scene-atmosphere](https://developers.arcgis.com/javascript/latest/assets/images/apiref/views/scene-weather-cloudy.png)
8
+ * ![scene-atmosphere](https://developers.arcgis.com/javascript/latest/assets/references/core/views/scene-weather-cloudy.png)
9
9
  *
10
10
  * Example:
11
11
  * ```js
@@ -11,8 +11,8 @@ export interface EnvironmentProperties extends WebSceneEnvironmentProperties {
11
11
  *
12
12
  * Known Value | Example
13
13
  * ------------|---------
14
- * [SunLighting](https://developers.arcgis.com/javascript/latest/references/core/views/3d/environment/SunLighting/) | ![scene-sun-lighting](https://developers.arcgis.com/javascript/latest/assets/images/apiref/views/SunLighting.jpg)
15
- * [VirtualLighting](https://developers.arcgis.com/javascript/latest/references/core/views/3d/environment/VirtualLighting/) | ![scene-virtual-lighting](https://developers.arcgis.com/javascript/latest/assets/images/apiref/views/VirtualLighting.jpg)
14
+ * [SunLighting](https://developers.arcgis.com/javascript/latest/references/core/views/3d/environment/SunLighting/) | ![scene-sun-lighting](https://developers.arcgis.com/javascript/latest/assets/references/core/views/SunLighting.jpg)
15
+ * [VirtualLighting](https://developers.arcgis.com/javascript/latest/references/core/views/3d/environment/VirtualLighting/) | ![scene-virtual-lighting](https://developers.arcgis.com/javascript/latest/assets/references/core/views/VirtualLighting.jpg)
16
16
  *
17
17
  * @since 5.0
18
18
  */
@@ -28,8 +28,8 @@ export default class Environment extends WebSceneEnvironment {
28
28
  *
29
29
  * Known Value | Example
30
30
  * ------------|---------
31
- * [SunLighting](https://developers.arcgis.com/javascript/latest/references/core/views/3d/environment/SunLighting/) | ![scene-sun-lighting](https://developers.arcgis.com/javascript/latest/assets/images/apiref/views/SunLighting.jpg)
32
- * [VirtualLighting](https://developers.arcgis.com/javascript/latest/references/core/views/3d/environment/VirtualLighting/) | ![scene-virtual-lighting](https://developers.arcgis.com/javascript/latest/assets/images/apiref/views/VirtualLighting.jpg)
31
+ * [SunLighting](https://developers.arcgis.com/javascript/latest/references/core/views/3d/environment/SunLighting/) | ![scene-sun-lighting](https://developers.arcgis.com/javascript/latest/assets/references/core/views/SunLighting.jpg)
32
+ * [VirtualLighting](https://developers.arcgis.com/javascript/latest/references/core/views/3d/environment/VirtualLighting/) | ![scene-virtual-lighting](https://developers.arcgis.com/javascript/latest/assets/references/core/views/VirtualLighting.jpg)
33
33
  *
34
34
  * @since 5.0
35
35
  */
@@ -5,7 +5,7 @@ export interface FoggyWeatherProperties extends Partial<Pick<FoggyWeather, "fogS
5
5
  /**
6
6
  * The FoggyWeather class allows you to change the weather conditions in the scene to foggy weather.
7
7
  *
8
- * ![scene-atmosphere](https://developers.arcgis.com/javascript/latest/assets/images/apiref/views/scene-weather-foggy.png)
8
+ * ![scene-atmosphere](https://developers.arcgis.com/javascript/latest/assets/references/core/views/scene-weather-foggy.png)
9
9
  *
10
10
  * Example:
11
11
  * ```js
@@ -5,7 +5,7 @@ export interface RainyWeatherProperties extends Partial<Pick<RainyWeather, "clou
5
5
  /**
6
6
  * The RainyWeather class allows you to change the weather conditions in the scene to rainy weather.
7
7
  *
8
- * ![scene-atmosphere](https://developers.arcgis.com/javascript/latest/assets/images/apiref/views/scene-weather-rainy.png)
8
+ * ![scene-atmosphere](https://developers.arcgis.com/javascript/latest/assets/references/core/views/scene-weather-rainy.png)
9
9
  *
10
10
  * Example:
11
11
  * ```js
@@ -5,7 +5,7 @@ export interface SnowyWeatherProperties extends Partial<Pick<SnowyWeather, "clou
5
5
  /**
6
6
  * The SnowyWeather class allows you to change the weather conditions in the scene to snowy weather.
7
7
  *
8
- * ![scene-atmosphere](https://developers.arcgis.com/javascript/latest/assets/images/apiref/views/scene-weather-snowy.png)
8
+ * ![scene-atmosphere](https://developers.arcgis.com/javascript/latest/assets/references/core/views/scene-weather-snowy.png)
9
9
  *
10
10
  * Example:
11
11
  * ```js
@@ -16,7 +16,7 @@ export interface SunLightingProperties extends WebSceneSunLightingProperties, Pa
16
16
  /**
17
17
  * The SunLighting class allows you to change the lighting in the scene to sunlight. The position of the light is set to the sun's location.
18
18
  *
19
- * ![scene-lightings](https://developers.arcgis.com/javascript/latest/assets/images/apiref/views/virtualLightCombined.png)
19
+ * ![scene-lightings](https://developers.arcgis.com/javascript/latest/assets/references/core/views/virtualLightCombined.png)
20
20
  *
21
21
  * Example:
22
22
  * ```js
@@ -5,7 +5,7 @@ export interface SunnyWeatherProperties extends Partial<Pick<SunnyWeather, "clou
5
5
  /**
6
6
  * The SunnyWeather class allows you to change the weather conditions in the scene to sunny weather.
7
7
  *
8
- * ![scene-atmosphere](https://developers.arcgis.com/javascript/latest/assets/images/apiref/views/scene-weather-sunny.png)
8
+ * ![scene-atmosphere](https://developers.arcgis.com/javascript/latest/assets/references/core/views/scene-weather-sunny.png)
9
9
  *
10
10
  * Example:
11
11
  * ```js
@@ -8,7 +8,7 @@ export interface VirtualLightingProperties extends WebSceneVirtualLightingProper
8
8
  * The VirtualLighting class allows you to change the lighting in the scene to virtual light. The position of the light
9
9
  * follows the camera and has a slight top-right offset in respect to the camera.
10
10
  *
11
- * ![scene-lightings](https://developers.arcgis.com/javascript/latest/assets/images/apiref/views/virtualLightCombined.png)
11
+ * ![scene-lightings](https://developers.arcgis.com/javascript/latest/assets/references/core/views/virtualLightCombined.png)
12
12
  *
13
13
  * Example:
14
14
  * ```js
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.0/LICENSE.txt */
2
- import{__decorate as i}from"tslib";import t from"../../../../core/Accessor.js";import{lerp as e}from"../../../../core/mathUtils.js";import{destroyMaybe as s}from"../../../../core/maybe.js";import{property as r,subclass as o}from"../../../../core/accessorSupport/decorators.js";import{transpose as c}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as n}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{create as a}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{transformMat4 as l,scale as u,round as h,copy as d,set as p}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{ZEROS as _,create as y}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{set as f,transformMat4 as m,scale as g}from"../../../../core/libs/gl-matrix-2/math/vec4.js";import{create as v}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{UpdatingHandles as b}from"../../../../core/support/UpdatingHandles.js";import{getReferenceEllipsoid as O}from"../../../../geometry/ellipsoidUtils.js";import{create as w,empty as Q,copy as D,offset as G,width as I,height as j,expand as P}from"../../../../geometry/support/aaBoundingRect.js";import{e as k,d as S,c as T}from"../../../../chunks/boundedPlane.js";import{create as C}from"../../../../geometry/support/ray.js";import{Sphere as M,sphereCSO as V}from"../../../../geometry/support/sphere.js";import{RenderNodeOutput as x}from"../../webgl.js";import{DeconflictAABR as U}from"./DeconflictAABR.js";import{prepare as A,drawPoly as R}from"./deconflictorDebug.js";import{isSymbolLayerWithTransparencyMode as E}from"./transparencyUtils.js";import N from"../../webgl/RenderCamera.js";import{GPUPointOcclusionQuery as q}from"../../webgl-engine/lib/GPUPointOcclusionQuery.js";import{SeparateScreenSizePerspectiveEvaluators as H}from"../../webgl-engine/lib/screenSizePerspectiveUtils.js";import{HUDMaterial as W}from"../../webgl-engine/materials/HUDMaterial.js";import{Yield as z}from"../../../support/Yield.js";const F=y(),B=y(),L=v(),Y=v(),J=y(),K=n(),X=new M,Z=C(),$=y(),ii=w();class ti{constructor(i){this.id=i,this.aabr=w(),this.altitude=0,this.distance=0,this.distanceToOccluder=0,this.culled=!1,this.visible=!1,this.priority=0}}function ei(i,t){const e=0!==i.distanceToOccluder&&i.distance>i.distanceToOccluder,s=0!==t.distanceToOccluder&&t.distance>t.distanceToOccluder;return e!==s?+e-+s:i.priority!==t.priority?t.priority-i.priority:i.distance!==t.distance?i.distance-t.distance:i.visible!==t.visible?+t.visible-+i.visible:i.id-t.id}class si{constructor(i,t){this.graphics3DGraphic=i,this.slicePlaneEnabled=t,this._info=null,this._labelInfo=null}ensureInfo(i){let t=this.getInfo(i);return t||(t=new ti(this.graphics3DGraphic.graphic.uid),this._setInfo(i,t)),t}getInfo(i){return 16===i?this._labelInfo:this._info}removeInfo(i){this._setInfo(i,null)}_setInfo(i,t){16===i?this._labelInfo=t:this._info=t}}class ri{constructor(){this.camera=new N,this.slicePlane=S(),this.slicePlaneEnabled=!1}copyFrom(i){this.camera.equals(i.camera)||this.camera.copyFrom(i.camera),T(i.slicePlane,this.slicePlane),this.slicePlaneEnabled=i.slicePlaneEnabled}}let oi=class extends t{get dirty(){return this._dirty}get state(){return this._state}constructor(i){super(i),this._dirty=!1,this._viewState=new ri,this._state=0,this._checkOcclusion=new Map,this._active=new Map,this._checkOcclusionIterator=null,this._activeIterator=null,this._occlusionQueryUids=new Array,this._updatingHandles=new b,this._deconflictor=new U((i,t)=>{i.visible=t,this._setGraphicVisibility(this._active.get(i.id),t)},(i,t)=>i.id!==t.id,ei),this._baseOccludedVisibility=10,this._altitudeFactor=2,this._minAltitudeDifference=100}initialize(){this._updatingHandles.add(()=>(this.view?.map?.ground?.opacity??0)>0,()=>this.setDirty()),this._updatingHandles.add(()=>this.view.ready,()=>{this._occlusionQuery=null,this._opaqueOcclusionQuery=null,this.setDirty()})}destroy(){this._occlusionQuery=null,this._opaqueOcclusionQuery=null,this._updatingHandles.destroy(),this._deconflictor.destroy(),this._checkOcclusion.clear(),this._active.clear()}setDirty(){!this._dirty&&(this._active.size>0||this._checkOcclusion.size>0)&&(this._dirty=!0,this.notifyChange("_readyToRun"))}setPriority(i,t){const e=this._active.get(i.graphic.uid)?.getInfo(this.visibilityGroup);e&&(e.priority=t)}get _readyToRun(){return 0!==this._state||this._dirty}get updating(){return this._readyToRun||this._updatingHandles.updating}get updatingProgress(){if(!this.updating)return 1;const i=this._state/5;return this._dirty?.5*i:i}get readyToRun(){return this.view.ready&&null!=this.view.state&&this._readyToRun}get usedMemory(){return this._occlusionQuery?.usedMemory??0+4*(this._occlusionQueryUids?.length??0)}runTask(i){switch(this._state){case 0:this._startUpdate(),i.madeProgress();case 1:if(this._state=1,!this._processCheckOcclusion(i))return;case 2:if(this._state=2,!(this._occlusionQuery?.done??1)||!(this._opaqueOcclusionQuery?.done??1))return z;this._readOcclusionQueryResult(),i.madeProgress();case 3:if(this._state=3,!this._collectActiveGraphics(i))return;case 4:if(this._state=4,this._deconflictor.run(i),!this._deconflictor.done)return;default:this._state=0,this.notifyChange("_readyToRun")}}setGraphicsActive(i,t){t?i.forEach(i=>this.addToActiveGraphics(i)):i.forEach(i=>this.removeFromActiveGraphics(i))}layerSupportsDeconfliction(i){if(null==i||!("hiddenIfDeconflicted"in i)||!i.hiddenIfDeconflicted)return!1;const t=i.stageObject;if(1!==(t?.geometries.length??0))return!1;const e=t?.geometries[0],s=e?.material;return s instanceof W}_startUpdate(){A(this.view),this._dirty=!1,this._viewState.copyFrom(this.viewState);const{fullWidth:i,fullHeight:t}=this._viewState.camera;if(this._deconflictor.reset(i,t),this._resetIterators(),this._occlusionQueryUids.length=0,!this._checkOcclusion.size)return this._occlusionQuery=s(this._occlusionQuery),void(this._opaqueOcclusionQuery=s(this._opaqueOcclusionQuery))}addToActiveGraphics(i){i.ensureInfo(this.visibilityGroup),this._active.set(i.graphics3DGraphic.graphic.uid,i),this.setDirty()}removeFromActiveGraphics(i){ci(i,this.visibilityGroup),i.removeInfo(this.visibilityGroup),this._active.delete(i.graphics3DGraphic.graphic.uid),this.setDirty()}addToCheckOcclusion(i){this._checkOcclusion.set(i.graphics3DGraphic.graphic.uid,i),this.setDirty()}removeFromCheckOcclusion(i){this._checkOcclusion.delete(i.graphics3DGraphic.graphic.uid)}_processCheckOcclusion(i){if(0===this._checkOcclusion.size)return!0;const t=this._ensureCheckOcclusionIterator(),e=this._viewState.camera,r=c(K,e.viewInverseTransposeMatrix),o=this.view.map.ground.opacity>0,n="global"===this.view.viewingMode&&o&&e.relativeElevation>0?X:null;let a=0;null!=n&&(l(n.center,_,e.viewMatrix),n.radius=O(this.view.spatialReference).radius,a=V.distanceToSilhouette(n,_));const u=w();for(;;){if(i.done)return!1;i.madeProgress();const s=t.next();if(!0===s.done)break;const o=s.value,c=o.graphics3DGraphic;if(c.destroyed)continue;if(!c.isVisible(1,8))continue;const h=ui(c,this.visibilityGroup);let d=null,p=!0,_=!1;for(const i of h){if(!this.layerSupportsDeconfliction(i))continue;d=hi,this._projectHudLayer(i,e,d),Q(u);const t=i.stageObject.geometries[0].material;if(this._expandBoundingRect(u,e,i,t,d),d.isOutsideScreen){p=!1;break}if(this._isCulledBySlice(o,d.positionWorld)){p=!1;break}if(null!=n&&li(d,n,a)){p=!1;break}d.altitude=this.view.renderCoordsHelper.getAltitude(d.positionWorld);const s=o.ensureInfo(this.visibilityGroup);if(s.altitude=d.altitude,s.distance=d.distance,s.distanceToOccluder=d.distanceToOccluder,s.culled=!1,D(s.aabr,u),t.parameters.useVisibilityPixel||"visible"===t.parameters.occludedVisibilityMode)break;l(B,d.positionView,r);const h=this._ensureOcclusionQuery(),y=this._ensureOpaqueOcclusionQuery();0===this._occlusionQueryUids.length&&(this._initOcclusionQuery(h),this._initOcclusionQuery(y));const f=h.addPosition(B),m=y.addPosition(B);if(f===this._occlusionQueryUids.length&&m===f){const i="adaptive"===t.parameters.occludedVisibilityMode;this._occlusionQueryUids.push(i?-c.graphic.uid:c.graphic.uid),_=!0}break}const y=this._active.has(c.graphic.uid);if(y||_){if(y&&(!p||!d)){const i=o.ensureInfo(this.visibilityGroup);i.visible=!d,i.culled=!0}}else this._setGraphicVisibility(o,p)}return this._checkOcclusionIterator=null,this._occlusionQueryUids.length||(this._occlusionQuery=s(this._occlusionQuery),this._opaqueOcclusionQuery=s(this._opaqueOcclusionQuery)),this._occlusionQuery?.start(),this._opaqueOcclusionQuery?.start(),!0}_readOcclusionQueryResult(){if(!this._occlusionQuery||!this._occlusionQueryUids.length)return;const i=this._viewState.camera,t=this.view.renderCoordsHelper.getAltitude(i.eye);for(let e=0;e<this._occlusionQueryUids.length;e++){const i=this._occlusionQueryUids[e],s=i<0,r=this._checkOcclusion.get(Math.abs(i));if(!r)continue;const o=this._occlusionQuery.getOcclusion(e)??-1,c=this._opaqueOcclusionQuery?.getOcclusion(e)??-1,n=r.getInfo(this.visibilityGroup);n&&(n.distanceToOccluder=o>0?n.distance-o:0);const a=0===c||c>0&&this._occludedVisibility(n?n.distance-c:0,n?.distance??c,n?.altitude??0,t,s),l=0===o||o>0&&this._occludedVisibility(n?.distanceToOccluder??0,n?.distance??o,n?.altitude??0,t,s),u=a||l;u&&this._setTransparentMode(r,a&&!l),this._active.has(i)?n&&(n.culled=!u,n.visible=u):this._setGraphicVisibility(r,u)}this._occlusionQueryUids.length=0}_collectActiveGraphics(i){const t=this._ensureActiveGraphicsIterator(),e=16===this.visibilityGroup;for(;!i.done;){i.madeProgress();const s=t.next();if(!0===s.done)return this._activeIterator=null,!0;const r=s.value,o=r.getInfo(this.visibilityGroup);if(!o)continue;!(!e||r.graphics3DGraphic.isVisible())||o.culled?(R(o.aabr,!1,!0),this._setGraphicVisibility(r,o.visible)):this._deconflictor.add(o)}return!1}_occludedVisibility(i,t,e,s,r=!0){const o=Math.max(this._minAltitudeDifference,Math.abs(e-s))-this._minAltitudeDifference,c=r?this._baseOccludedVisibility+this._altitudeFactor*o:0;return 0===i||t-i<=c}_resetIterators(){this._checkOcclusionIterator=null,this._activeIterator=null}_ensureCheckOcclusionIterator(){return this._checkOcclusionIterator??=this._checkOcclusion.values(),this._checkOcclusionIterator}_ensureActiveGraphicsIterator(){return this._activeIterator??=this._active.values(),this._activeIterator}_initOcclusionQuery(i){if(!i)return;const{camera:t}=this._viewState,e=2,s=Math.max(e,e+Math.round(Math.log2(Math.abs(t.relativeElevation))));u(F,this._viewState.camera.eye,2**-s),u(F,h(F,F),2**s),i.init(this._checkOcclusion.size,F)}_ensureOcclusionQuery(){return this._occlusionQuery??=new q({view:this.view}),this._occlusionQuery}_ensureOpaqueOcclusionQuery(){return this._opaqueOcclusionQuery??=new q({view:this.view,category:x.OPAQUE}),this._opaqueOcclusionQuery}_getNumVisible(i){return[...this._checkOcclusion.values()].reduce((t,e)=>t+(e.getInfo(i)?.visible?1:0),0)}_projectHudLayer(i,t,e){const s=i.stageObject,r=s.geometries[0],o=r.material;d(B,s.boundingVolumeWorldSpace.bounds.center),l(F,B,t.viewMatrix);const c=r.attributes,n=c.get("normal").data,a=c.get("centerOffsetAndDistance").data;o.applyShaderOffsets(B,F,n,s.transformation,a,t,e.screenSizePerspectiveEvaluators),f(L,F[0],F[1],F[2],1),m(Y,L,t.projectionMatrix),u(e.positionNDC,Y,1/Y[3]),o.applyShaderOffsetsNDC(e.positionNDC,a,t,e.positionNDC,J),e.distanceWithoutPolygonOffset=t.depthNDCToWorld(J[2]),e.distance=J[2]===e.positionNDC[2]?e.distanceWithoutPolygonOffset:t.depthNDCToWorld(e.positionNDC[2]),f(Y,e.positionNDC[0],e.positionNDC[1],e.positionNDC[2],1),m(L,Y,t.inverseProjectionMatrix),g(L,L,1/L[3]),p(e.positionView,L[0],L[1],L[2]),d(e.positionWorld,B)}_isCulledBySlice(i,t){return i.slicePlaneEnabled&&this._viewState.slicePlaneEnabled&&k(this._viewState.slicePlane,t)}_expandBoundingRect(i,t,s,r,{positionNDC:o,screenSizePerspectiveEvaluators:c}){const n=s.getScreenSize(ni);c.evaluator.applyVec2(n,n),n[0]*=t.pixelRatio,n[1]*=t.pixelRatio;const a=G(r.calculateRelativeScreenBounds(n,c.alignmentEvaluator.apply(t.pixelRatio),ii),e(0,t.fullWidth,.5+.5*o[0]),e(0,t.fullHeight,.5+.5*o[1])),l=this.marginFactor;if(0!==l){const i=l*Math.min(I(a),j(a));a[0]-=i,a[1]-=i,a[2]+=i,a[3]+=i}P(i,a,i)}_setGraphicVisibility(i,t){const e=i?.graphics3DGraphic;e&&!e.destroyed&&(e.setVisibilityFlag(this.visibilityGroup,8,t),16===this.visibilityGroup&&this.view.labeler.setLabelGraphicVisibility(e,t))}_setTransparentMode(i,t){const e=i?.graphics3DGraphic;if(e&&!e.destroyed)for(const s of e.layers){if("object3d"!==s?.type)continue;const{graphics3DSymbolLayer:i}=s;E(i)&&i.updateTransparentMode(s,t)}}};function ci(i,t){const e=i.graphics3DGraphic;e.destroyed||e.setVisibilityFlag(t,8,!0)}i([r({constructOnly:!0})],oi.prototype,"view",void 0),i([r({type:Boolean,readOnly:!0})],oi.prototype,"_readyToRun",null),i([r({type:Boolean,readOnly:!0})],oi.prototype,"updating",null),i([r({readOnly:!0})],oi.prototype,"_updatingHandles",void 0),oi=i([o("esri.views.3d.layers.graphics.Deconflictor")],oi);const ni=a();class ai{constructor(){this.positionWorld=y(),this.positionView=y(),this.positionNDC=y(),this.altitude=0,this.distance=0,this.distanceToOccluder=0,this.distanceWithoutPolygonOffset=0,this.screenSizePerspectiveEvaluators=new H}get isOutsideScreen(){const i=this.positionNDC;return i[0]<-1||i[1]<-1||i[2]<-1||i[0]>=1||i[1]>=1||i[2]>=1}}function li(i,t,e){return d(Z.direction,i.positionView),p(Z.origin,0,0,0),!!t.intersectRay(Z,$)&&i.distanceWithoutPolygonOffset>e}function ui(i,t){return 16===t?i.labelLayers:i.layers}const hi=new ai;export{oi as Deconflictor,si as DeconflictorGraphic,ri as DeconflictorViewState};
2
+ import{__decorate as i}from"tslib";import t from"../../../../core/Accessor.js";import{lerp as e}from"../../../../core/mathUtils.js";import{destroyMaybe as s}from"../../../../core/maybe.js";import{property as r,subclass as o}from"../../../../core/accessorSupport/decorators.js";import{transpose as c}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as n}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{create as a}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{transformMat4 as l,scale as u,round as h,copy as d,set as p}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{ZEROS as _,create as y}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{set as f,transformMat4 as m,scale as g}from"../../../../core/libs/gl-matrix-2/math/vec4.js";import{create as v}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{UpdatingHandles as b}from"../../../../core/support/UpdatingHandles.js";import{getReferenceEllipsoid as O}from"../../../../geometry/ellipsoidUtils.js";import{create as w,empty as Q,copy as D,offset as G,width as I,height as j,expand as P}from"../../../../geometry/support/aaBoundingRect.js";import{e as k,d as S,c as T}from"../../../../chunks/boundedPlane.js";import{create as C}from"../../../../geometry/support/ray.js";import{Sphere as M,sphereCSO as V}from"../../../../geometry/support/sphere.js";import{RenderNodeOutput as x}from"../../webgl.js";import{DeconflictAABR as U}from"./DeconflictAABR.js";import{prepare as A,drawPoly as R}from"./deconflictorDebug.js";import{isSymbolLayerWithTransparencyMode as E}from"./transparencyUtils.js";import N from"../../webgl/RenderCamera.js";import{GPUPointOcclusionQuery as q}from"../../webgl-engine/lib/GPUPointOcclusionQuery.js";import{SeparateScreenSizePerspectiveEvaluators as H}from"../../webgl-engine/lib/screenSizePerspectiveUtils.js";import{HUDMaterial as W}from"../../webgl-engine/materials/HUDMaterial.js";import{Yield as z}from"../../../support/Yield.js";const F=y(),B=y(),L=v(),Y=v(),J=y(),K=n(),X=new M,Z=C(),$=y(),ii=w();class ti{constructor(i){this.id=i,this.aabr=w(),this.altitude=0,this.distance=0,this.distanceToOccluder=0,this.culled=!1,this.visible=!1,this.priority=0}}function ei(i,t){const e=0!==i.distanceToOccluder&&i.distance>i.distanceToOccluder,s=0!==t.distanceToOccluder&&t.distance>t.distanceToOccluder;return e!==s?+e-+s:i.priority!==t.priority?t.priority-i.priority:i.distance!==t.distance?i.distance-t.distance:i.visible!==t.visible?+t.visible-+i.visible:i.id-t.id}class si{constructor(i,t){this.graphics3DGraphic=i,this.slicePlaneEnabled=t,this._info=null,this._labelInfo=null}ensureInfo(i){let t=this.getInfo(i);return t||(t=new ti(this.graphics3DGraphic.graphic.uid),this._setInfo(i,t)),t}getInfo(i){return 16===i?this._labelInfo:this._info}removeInfo(i){this._setInfo(i,null)}_setInfo(i,t){16===i?this._labelInfo=t:this._info=t}}class ri{constructor(){this.camera=new N,this.slicePlane=S(),this.slicePlaneEnabled=!1}copyFrom(i){this.camera.equals(i.camera)||this.camera.copyFrom(i.camera),T(i.slicePlane,this.slicePlane),this.slicePlaneEnabled=i.slicePlaneEnabled}}let oi=class extends t{get dirty(){return this._dirty}get state(){return this._state}constructor(i){super(i),this._dirty=!1,this._viewState=new ri,this._state=0,this._checkOcclusion=new Map,this._active=new Map,this._checkOcclusionIterator=null,this._activeIterator=null,this._occlusionQueryUids=new Array,this._updatingHandles=new b,this._deconflictor=new U((i,t)=>{i.visible=t,this._setGraphicVisibility(this._active.get(i.id),t)},(i,t)=>i.id!==t.id,ei),this._baseOccludedVisibility=10,this._altitudeFactor=2,this._minAltitudeDifference=100}initialize(){this._updatingHandles.add(()=>(this.view?.map?.ground?.opacity??0)>0,()=>this.setDirty()),this._updatingHandles.add(()=>this.view.ready,()=>{this._occlusionQuery=null,this._opaqueOcclusionQuery=null,this.setDirty()})}destroy(){this._occlusionQuery=null,this._opaqueOcclusionQuery=null,this._updatingHandles.destroy(),this._deconflictor.destroy(),this._checkOcclusion.clear(),this._active.clear()}setDirty(){!this._dirty&&(this._active.size>0||this._checkOcclusion.size>0)&&(this._dirty=!0,this.notifyChange("_readyToRun"))}setPriority(i,t){const e=this._active.get(i.graphic.uid)?.getInfo(this.visibilityGroup);e&&(e.priority=t)}get _readyToRun(){return 0!==this._state||this._dirty}get updating(){return this._readyToRun||this._updatingHandles.updating}get updatingProgress(){if(!this.updating)return 1;const i=this._state/5;return this._dirty?.5*i:i}get readyToRun(){return this.view.ready&&null!=this.view.state&&this._readyToRun}get usedMemory(){return this._occlusionQuery?.usedMemory??0+4*(this._occlusionQueryUids?.length??0)}runTask(i){switch(this._state){case 0:this._startUpdate(),i.madeProgress();case 1:if(this._state=1,!this._processCheckOcclusion(i))return;case 2:if(this._state=2,!(this._occlusionQuery?.done??1)||!(this._opaqueOcclusionQuery?.done??1))return z;this._readOcclusionQueryResult(),i.madeProgress();case 3:if(this._state=3,!this._collectActiveGraphics(i))return;case 4:if(this._state=4,this._deconflictor.run(i),!this._deconflictor.done)return;default:this._state=0,this.notifyChange("_readyToRun")}}setGraphicsActive(i,t){t?i.forEach(i=>this.addToActiveGraphics(i)):i.forEach(i=>this.removeFromActiveGraphics(i))}layerSupportsDeconfliction(i){if(null==i||!("hiddenIfDeconflicted"in i)||!i.hiddenIfDeconflicted)return!1;const t=i.stageObject;if(1!==(t?.geometries.length??0))return!1;const e=t?.geometries[0],s=e?.material;return s instanceof W}_startUpdate(){A(this.view),this._dirty=!1,this._viewState.copyFrom(this.viewState);const{fullWidth:i,fullHeight:t}=this._viewState.camera;if(this._deconflictor.reset(i,t),this._resetIterators(),this._occlusionQueryUids.length=0,!this._checkOcclusion.size)return this._occlusionQuery=s(this._occlusionQuery),void(this._opaqueOcclusionQuery=s(this._opaqueOcclusionQuery))}addToActiveGraphics(i){i.ensureInfo(this.visibilityGroup),this._active.set(i.graphics3DGraphic.graphic.uid,i),this.setDirty()}removeFromActiveGraphics(i){ci(i,this.visibilityGroup),i.removeInfo(this.visibilityGroup),this._active.delete(i.graphics3DGraphic.graphic.uid),this.setDirty()}addToCheckOcclusion(i){this._checkOcclusion.set(i.graphics3DGraphic.graphic.uid,i),this.setDirty()}removeFromCheckOcclusion(i){this._checkOcclusion.delete(i.graphics3DGraphic.graphic.uid)}_processCheckOcclusion(i){if(0===this._checkOcclusion.size)return!0;const t=this._ensureCheckOcclusionIterator(),e=this._viewState.camera,r=c(K,e.viewInverseTransposeMatrix),o=this.view.map.ground.opacity>0,n="global"===this.view.viewingMode&&o&&e.relativeElevation>0?X:null;let a=0;null!=n&&(l(n.center,_,e.viewMatrix),n.radius=O(this.view.spatialReference).radius,a=V.distanceToSilhouette(n,_));const u=w();for(;;){if(i.done)return!1;i.madeProgress();const s=t.next();if(!0===s.done)break;const o=s.value,c=o.graphics3DGraphic;if(c.destroyed)continue;if(!c.isVisible(1,8))continue;const h=ui(c,this.visibilityGroup);let d=null,p=!0,_=!1;for(const i of h){if(!this.layerSupportsDeconfliction(i))continue;d=hi,this._projectHudLayer(i,e,d),Q(u);const t=i.stageObject.geometries[0].material;if(this._expandBoundingRect(u,e,i,t,d),d.isOutsideScreen){p=!1;break}if(this._isCulledBySlice(o,d.positionWorld)){p=!1;break}if(null!=n&&li(d,n,a)){p=!1;break}d.altitude=this.view.renderCoordsHelper.getAltitude(d.positionWorld);const s=o.ensureInfo(this.visibilityGroup);if(s.altitude=d.altitude,s.distance=d.distance,s.distanceToOccluder=d.distanceToOccluder,s.culled=!1,D(s.aabr,u),t.parameters.useVisibilityPixel||"visible"===t.parameters.occludedVisibilityMode)break;l(B,d.positionView,r);const h=this._ensureOcclusionQuery(),y=this._ensureOpaqueOcclusionQuery();0===this._occlusionQueryUids.length&&(this._initOcclusionQuery(h),this._initOcclusionQuery(y));const f=h.addPosition(B),m=y.addPosition(B);if(f===this._occlusionQueryUids.length&&m===f){const i="adaptive"===t.parameters.occludedVisibilityMode;this._occlusionQueryUids.push(i?-c.graphic.uid:c.graphic.uid),_=!0}break}const y=this._active.has(c.graphic.uid);if(y||_){if(y&&(!p||!d)){const i=o.ensureInfo(this.visibilityGroup);i.visible=!d,i.culled=!0}}else this._setGraphicVisibility(o,p)}return this._checkOcclusionIterator=null,this._occlusionQueryUids.length||(this._occlusionQuery=s(this._occlusionQuery),this._opaqueOcclusionQuery=s(this._opaqueOcclusionQuery)),this._occlusionQuery?.start(),this._opaqueOcclusionQuery?.start(),!0}_readOcclusionQueryResult(){if(!this._occlusionQuery||!this._occlusionQueryUids.length)return;const i=this._viewState.camera,t=this.view.renderCoordsHelper.getAltitude(i.eye);for(let e=0;e<this._occlusionQueryUids.length;e++){const i=this._occlusionQueryUids[e],s=Math.abs(i),r=i<0,o=this._checkOcclusion.get(s);if(!o)continue;const c=this._occlusionQuery.getOcclusion(e)??-1,n=this._opaqueOcclusionQuery?.getOcclusion(e)??-1,a=o.getInfo(this.visibilityGroup);a&&(a.distanceToOccluder=c>0?a.distance-c:0);const l=0===n||n>0&&this._occludedVisibility(a?a.distance-n:0,a?.distance??n,a?.altitude??0,t,r),u=0===c||c>0&&this._occludedVisibility(a?.distanceToOccluder??0,a?.distance??c,a?.altitude??0,t,r),h=l||u;h&&this._setTransparentMode(o,l&&!u),this._active.has(s)?a&&(a.culled=!h,a.visible=h):this._setGraphicVisibility(o,h)}this._occlusionQueryUids.length=0}_collectActiveGraphics(i){const t=this._ensureActiveGraphicsIterator(),e=16===this.visibilityGroup;for(;!i.done;){i.madeProgress();const s=t.next();if(!0===s.done)return this._activeIterator=null,!0;const r=s.value,o=r.getInfo(this.visibilityGroup);if(!o)continue;!(!e||r.graphics3DGraphic.isVisible())||o.culled?(R(o.aabr,!1,!0),this._setGraphicVisibility(r,o.visible)):this._deconflictor.add(o)}return!1}_occludedVisibility(i,t,e,s,r=!0){const o=Math.max(this._minAltitudeDifference,Math.abs(e-s))-this._minAltitudeDifference,c=r?this._baseOccludedVisibility+this._altitudeFactor*o:0;return 0===i||t-i<=c}_resetIterators(){this._checkOcclusionIterator=null,this._activeIterator=null}_ensureCheckOcclusionIterator(){return this._checkOcclusionIterator??=this._checkOcclusion.values(),this._checkOcclusionIterator}_ensureActiveGraphicsIterator(){return this._activeIterator??=this._active.values(),this._activeIterator}_initOcclusionQuery(i){if(!i)return;const{camera:t}=this._viewState,e=2,s=Math.max(e,e+Math.round(Math.log2(Math.abs(t.relativeElevation))));u(F,this._viewState.camera.eye,2**-s),u(F,h(F,F),2**s),i.init(this._checkOcclusion.size,F)}_ensureOcclusionQuery(){return this._occlusionQuery??=new q({view:this.view}),this._occlusionQuery}_ensureOpaqueOcclusionQuery(){return this._opaqueOcclusionQuery??=new q({view:this.view,category:x.OPAQUE}),this._opaqueOcclusionQuery}_getNumVisible(i){return[...this._checkOcclusion.values()].reduce((t,e)=>t+(e.getInfo(i)?.visible?1:0),0)}_projectHudLayer(i,t,e){const s=i.stageObject,r=s.geometries[0],o=r.material;d(B,s.boundingVolumeWorldSpace.bounds.center),l(F,B,t.viewMatrix);const c=r.attributes,n=c.get("normal").data,a=c.get("centerOffsetAndDistance").data;o.applyShaderOffsets(B,F,n,s.transformation,a,t,e.screenSizePerspectiveEvaluators),f(L,F[0],F[1],F[2],1),m(Y,L,t.projectionMatrix),u(e.positionNDC,Y,1/Y[3]),o.applyShaderOffsetsNDC(e.positionNDC,a,t,e.positionNDC,J),e.distanceWithoutPolygonOffset=t.depthNDCToWorld(J[2]),e.distance=J[2]===e.positionNDC[2]?e.distanceWithoutPolygonOffset:t.depthNDCToWorld(e.positionNDC[2]),f(Y,e.positionNDC[0],e.positionNDC[1],e.positionNDC[2],1),m(L,Y,t.inverseProjectionMatrix),g(L,L,1/L[3]),p(e.positionView,L[0],L[1],L[2]),d(e.positionWorld,B)}_isCulledBySlice(i,t){return i.slicePlaneEnabled&&this._viewState.slicePlaneEnabled&&k(this._viewState.slicePlane,t)}_expandBoundingRect(i,t,s,r,{positionNDC:o,screenSizePerspectiveEvaluators:c}){const n=s.getScreenSize(ni);c.evaluator.applyVec2(n,n),n[0]*=t.pixelRatio,n[1]*=t.pixelRatio;const a=G(r.calculateRelativeScreenBounds(n,c.alignmentEvaluator.apply(t.pixelRatio),ii),e(0,t.fullWidth,.5+.5*o[0]),e(0,t.fullHeight,.5+.5*o[1])),l=this.marginFactor;if(0!==l){const i=l*Math.min(I(a),j(a));a[0]-=i,a[1]-=i,a[2]+=i,a[3]+=i}P(i,a,i)}_setGraphicVisibility(i,t){const e=i?.graphics3DGraphic;e&&!e.destroyed&&(e.setVisibilityFlag(this.visibilityGroup,8,t),16===this.visibilityGroup&&this.view.labeler.setLabelGraphicVisibility(e,t))}_setTransparentMode(i,t){const e=i?.graphics3DGraphic;if(e&&!e.destroyed)for(const s of e.layers){if("object3d"!==s?.type)continue;const{graphics3DSymbolLayer:i}=s;E(i)&&i.updateTransparentMode(s,t)}}};function ci(i,t){const e=i.graphics3DGraphic;e.destroyed||e.setVisibilityFlag(t,8,!0)}i([r({constructOnly:!0})],oi.prototype,"view",void 0),i([r({type:Boolean,readOnly:!0})],oi.prototype,"_readyToRun",null),i([r({type:Boolean,readOnly:!0})],oi.prototype,"updating",null),i([r({readOnly:!0})],oi.prototype,"_updatingHandles",void 0),oi=i([o("esri.views.3d.layers.graphics.Deconflictor")],oi);const ni=a();class ai{constructor(){this.positionWorld=y(),this.positionView=y(),this.positionNDC=y(),this.altitude=0,this.distance=0,this.distanceToOccluder=0,this.distanceWithoutPolygonOffset=0,this.screenSizePerspectiveEvaluators=new H}get isOutsideScreen(){const i=this.positionNDC;return i[0]<-1||i[1]<-1||i[2]<-1||i[0]>=1||i[1]>=1||i[2]>=1}}function li(i,t,e){return d(Z.direction,i.positionView),p(Z.origin,0,0,0),!!t.intersectRay(Z,$)&&i.distanceWithoutPolygonOffset>e}function ui(i,t){return 16===t?i.labelLayers:i.layers}const hi=new ai;export{oi as Deconflictor,si as DeconflictorGraphic,ri as DeconflictorViewState};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.0/LICENSE.txt */
2
- import{normalize as e,sub as t,dot as i,scaleAndAdd as s,set as n,equals as r,subtract as o,len as a,sqrDist as c,copy as u,scale as l,dist as d,distance as h,length as m,squaredLength as _,squaredDistance as p,add as f}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as v}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{getReferenceEllipsoid as R}from"../../../../geometry/ellipsoidUtils.js";import{getSphericalPCPF as S}from"../../../../geometry/spatialReferenceEllipsoidUtils.js";import{projectBoundingSphere as b}from"../../../../geometry/projection/projectBoundingSphere.js";import{getProjector as g}from"../../../../geometry/projection/projectors.js";import{create as M,fromMatrix as x,intersectsSphere as I,createPoints as C}from"../../../../geometry/support/frustum.js";import{signedDistance as E,getNormal as D}from"../../../../geometry/support/plane.js";import{isPlateCarree as P}from"../../../../geometry/support/spatialReferenceUtils.js";import{Sphere as A}from"../../../../geometry/support/sphere.js";import{evaluateElevationAlignmentAtPoint as O}from"../graphics/elevationAlignmentUtils.js";import{ElevationContext as F}from"../graphics/ElevationContext.js";import{createContextWithoutExpressionSupport as V,extractExpressionInfo as j}from"../graphics/featureExpressionInfoUtils.js";import{intersectBoundingRectWithMbs as B}from"./I3SUtil.js";import{SphereCylinderLocal as L,SphereConeGlobal as w}from"./SphereCone.js";import{Obb as y,computeOffsetObb as U}from"../../support/orientedBoundingBox.js";const q=1e5;class G{get _frustumMbsCenter(){return this._frustumMbs.center}get _frustumMbsRadius(){return this._frustumMbs.radius}get _frustumPlanes(){return this._frustum}constructor(e,t,i,s,n,r,o,a,c={}){this._indexSR=e,this._renderCoordsHelper=t,this._clippingArea=n,this._elevationProvider=r,this._viewingMode=o,this._options=c,this._frustum=M(),this._frustumMbs=new A,this._viewDirection=v(),this._useFrustumCulling=!1,this._poi=v(),this._cameraPOIDirection=v(),this._elevationContext=null,this.minDistance=1/0,this.maxDistance=0,this.maxLodLevel=2,this._screenspaceErrorBias=c.screenspaceErrorBias||1,this._progressiveLoadFactor=c.progressiveLoadFactor||1,this.updateCamera(i,s);const u=this._renderCoordsHelper.spatialReference;this._renderSR=u,this._renderSRSphericalPCPF=S(u),this._isGlobalMode=u===this._renderSRSphericalPCPF,this.updateElevationInfo(a),this._isECEFOBBInLocalMode=this._indexSR.isWGS84&&(u.isWebMercator||P(u)),this._indexSREllipsoidRadius=R(this._indexSR).radius,this._indexSRSphericalPCPF=S(e),this._projectorIndexSRToIndexSRSphericalPCPF=g(this._indexSR,this._indexSRSphericalPCPF)}updateElevationInfo(e){null!=e?(this._elevationContext=F.fromElevationInfo(e),this._elevationContext.setFeatureExpressionInfoContext(V(j(e,!1)))):this._elevationContext=null}updateCamera(n,r){if(this._useFrustumCulling=r,e(this._viewDirection,n.viewForward),r){x(n.viewMatrix,n.projectionMatrix,this._frustum,T);{const e=n.eye,r=z;t(r,T[4],e);const o=.5*i(r,r)/i(this._viewDirection,r),a=this._frustumMbs,c=a.center;s(c,e,this._viewDirection,o);const u=1+o;a.radius=u}}this._screenSizeFactor=1/(n.perScreenPixelRatio/2),this._camPos=n.eye,this._updateCameraPOIDirection(),this.minDistance=1/0,this.maxDistance=0}setPointOfInterest(e){this._poi=e,this._updateCameraPOIDirection()}updateScreenSpaceErrorBias(e){const t=this._screenspaceErrorBias;return this._screenspaceErrorBias=e,t}updateClippingArea(e){this._clippingArea=e}expandElevationRange(e,t,i){if(null==this._elevationContext)return;const s=e.serviceMbsInIndexSR;if(!s)return;const n="relative-to-scene"===this._elevationContext.mode?"scene":"ground",r=this._elevationProvider;if(r.getSphereElevationRange){const e=r.getSphereElevationRange(s,this._indexSR,n);if(e)return void i.expandElevationRange(e)}const[o,a,c]=s.center,u=r.getElevation(o,a,c,this._indexSR,n);u&&i.expandElevationRangeValues(u,u);const l=t?null:r.getRootElevationRange?.();l&&i.expandElevationRange(l)}calculateServiceMbsInRenderSR(e){const{serviceMbsInRenderSR:t}=e;if(t.isValid)return t;const{serviceMbsInIndexSR:i}=e;if(!i?.isValid)return t;const s=ie;return b(i,this._indexSR,s,this._renderSR),e.updateServiceMbsInRenderSR(s)}calculateServiceMbsInRenderSRElevationAdjusted(e){const{serviceMbsInRenderSRElevationAdjusted:t}=e;if(t.isValid)return t;const{serviceMbsInIndexSR:i}=e,s=this.calculateServiceMbsInRenderSR(e);if(!s.isValid||!i?.isValid)return t;const n=ie;n.copyFrom(s);const{_elevationContext:r}=this;if(r){const{minElevation:t}=e,{_renderCoordsHelper:s}=this,o=i.center;let a=0;if(Number.isFinite(t)){let i=0,c=0;const{maxElevation:u}=e,l=o[2];switch(r.mode){case"relative-to-ground":case"relative-to-scene":i=r.geometryZWithOffset(l,s)+t-l,c=u-t;break;case"on-the-ground":i=t-l,c=u-t}a=i+.5*c,n.radius+=.5*c}else n.radius<q&&(a=O(o,this._elevationProvider,r,s)-o[2]);a&&ae(n,a,this._viewingMode)}return e.updateServiceMbsInRenderSRElevationAdjusted(n)}calculateMbsConeInRenderSR(e){const{mbsConeInRenderSR:t}=e;if(t)return t;if(!e.elevationRangeValid)return null;const{minElevation:i,maxElevation:s}=e;if(!(Number.isFinite(i)&&i<s))return null;const n=this.calculateServiceMbsInRenderSR(e);if(!n.isValid)return null;const r=this._renderCoordsHelper.referenceEllipsoid.radius,o=2===this._viewingMode?new L(n,i,s):new w(n,r+i,r+s);return e.updateMbsConeInRenderSR(o)}getAndUpdateVisibilityObbInRenderSR(e){{const t=e.visibilityObbInRenderSR;if(t)return t}const t=.01*this._indexSREllipsoidRadius,{serviceMbsInIndexSR:i,serviceObbInIndexSR:s}=e;if(null==s||!i||!s.isValid||this._isECEFOBBInLocalMode&&(s.halfSizeX>t||s.halfSizeY>t||s.halfSizeZ>t))return null;{let t=e.serviceObbInRenderSR;if(null==t)t=new y,e.serviceObbInRenderSR=t;else if(t.isValid)return t;const r=i.radius;let o=0,a=0;const c=s.centerZ,u=this._renderCoordsHelper,l=this._elevationContext;if(l&&e.elevationRangeValid){const{minElevation:t,maxElevation:i}=e;switch(l.mode){case"relative-to-ground":case"relative-to-scene":o=l.geometryZWithOffset(c,u)+t-c,a=i-t;break;case"on-the-ground":o=t-c,a=i-t}}else if(l&&r<q){const e=n(Y,s.centerX,s.centerY,c);o=O(e,this._elevationProvider,l,u)-c}const d=a>0,h=d?X:t;return s.transform(h,this._indexSR,this._renderSR,o,this._renderSRSphericalPCPF,this._indexSRSphericalPCPF,this._projectorIndexSRToIndexSRSphericalPCPF),d&&U(h,0,a,this._viewingMode,t),t}}getNodeObbInRenderSRIndependentOfElevationOffset(e){{const t=e.visibilityObbInRenderSR??e.serviceObbInRenderSR??null;if(t?.isValid)return t}const t=e.serviceObbInIndexSR;return t?(t.transform(X,this._indexSR,this._renderSR,void 0,this._renderSRSphericalPCPF,this._indexSRSphericalPCPF,this._projectorIndexSRToIndexSRSphericalPCPF),X):null}ensureElevationAgnosticBoundingVolume(e){return!e.elevationAgnosticBoundingVolume.valid&&e.level>0&&(1===this._viewingMode?this._updateElevationAgnosticBoundingVolumeGlobal(e):this._updateElevationAgnosticBoundingVolumeLocal(e)),e.elevationAgnosticBoundingVolume}_updateCameraPOIDirection(){r(this._poi,this._camPos)?this._cameraPOIDirection=this._viewDirection:(o(this._cameraPOIDirection,this._camPos,this._poi),e(this._cameraPOIDirection,this._cameraPOIDirection))}_updateElevationAgnosticBoundingVolumeGlobal(t){const s=this.getNodeObbInRenderSRIndependentOfElevationOffset(t),n=t.elevationAgnosticBoundingVolume;let r,o=-1;if(s){const t=Y;s.getCenter(t),e(t,t),r=t,s.getCorners(J);for(const s of J){e(s,s);const r=i(s,t);if(r<=0)return void n.invalidate();const a=Math.sqrt(1-r*r);o=Math.max(o,a)}}else{const i=t.serviceMbsInRenderSR;if(!i.isValid)return void n.invalidate();const{center:s,radius:c}=i,u=a(s);if(u<c)return void n.invalidate();o=c/u,r=e(te,s)}n.set(r,o+ce)}_updateElevationAgnosticBoundingVolumeLocal(e){const t=e.elevationAgnosticBoundingVolume,i=this.getNodeObbInRenderSRIndependentOfElevationOffset(e);if(i){const e=i.getCenter(Y);e[2]=0;let s=0;const n=K;i.getCorners(J);for(const t of J){t[2]=0;const e=c(n,t);s=Math.max(s,e)}t.set(e,Math.sqrt(s))}else{const i=e.serviceMbsInRenderSR;if(i.isValid){const e=u(Y,i.center);e[2]=0,t.set(e,i.radius)}}}isNodeVisible(e){if(!this._isMBSinClippingArea(this.calculateServiceMbsInRenderSR(e)))return!1;if(!this._useFrustumCulling)return!0;const t=this.getAndUpdateVisibilityObbInRenderSR(e);return t?t.intersectsFrustumConservativeApproximation(this._frustum):I(this._frustum,this.calculateServiceMbsInRenderSRElevationAdjusted(e))}isElevationAgnosticBoundingVolumeVisible(e){return!this._useFrustumCulling||(!e.valid||(1===this._viewingMode?this._isConeVisibleInFrustum(e):this._isCylinderVisibleInFrustum(e)))}_isConeVisibleInFrustum(n){if(!this._isConeVisibleInFrustumMbs(n)||!n.valid)return!1;const r=n.radius;if(r>.9)return!0;const o=this._frustumPlanes,a=this._frustumMbsCenter,c=n.getAxis(te),u=i(c,a),d=this._frustumMbsRadius,h=u-d,m=u+d;if(h<=0)return!0;const _=l(k,c,h),p=l(H,c,m),f=r/Math.sqrt(1-r*r);for(const v of o){const n=D(v),r=e(Z,n),o=i(r,c);if(Math.abs(1-o)<.01)continue;const a=Q;l(a,c,o),t(a,a,r),e(a,a);const u=$;s(u,_,a,h*f);if(E(v,u)<=0)continue;s(u,p,a,m*f);if(E(v,u)<=0)continue;return!1}return!0}_isConeVisibleInFrustumMbs(e){const t=e.radius;if(t>.9)return!0;const s=this._frustumMbsRadius,n=this._frustumMbsCenter,r=a(n);if(r<=s)return!0;const o=e.getAxis(te),c=i(o,n);{const e=l(W,o,c);if(d(e,n)<s)return!0}const u=c/r;if(c<=0){return-u<s}const h=Math.sqrt(1-u*u);if(h<t)return!0;const m=s/r;return h*Math.sqrt(1-m*m)-m*u<t}isObbVisibleIndependentOfElevation(e,t){if(!this._useFrustumCulling)return!0;if(!e.valid)return!0;const s=this._frustumMbsRadius,n=this._frustumMbsCenter,r=this._frustumPlanes,o=J;if(t.getCorners(o),1===this._viewingMode){const t=e.getAxis(te),a=i(t,n),c=a-s,u=a+s;if(c<=0)return!0;for(const e of r){let s=!0;for(const n of o){const r=i(n,t),o=ee;if(l(o,n,c/r),E(e,o)<=0){s=!1;break}const a=ee;if(l(a,n,u/r),E(e,a)<=0){s=!1;break}}if(s)return!1}}else{const e=n[2]-s,t=n[2]+s;for(const i of r){let s=!0;const n=D(i),r=n[0],a=n[1],c=n[2],u=i[3];for(const i of o){const n=r*i[0]+a*i[1]+u;if(n+c*e<=0||n+c*t<=0){s=!1;break}}if(s)return!1}}return!0}_isCylinderVisibleInFrustum(e){const t=this._frustumMbsCenter,i=this._frustumMbsRadius,s=u(W,t);s[2]=0;const n=e.radius,r=e.getAxis(te);return d(s,r)<=n+i}isGeometryVisible(e){if(!this._useFrustumCulling)return!0;const t=e.geometryObbInRenderSR;return t?.intersectsFrustumConservativeApproximation(this._frustum)??this.isNodeVisible(e)}_isMBSinClippingArea(e){return null==this._clippingArea||0!==B(this._clippingArea,e)}_screenSpaceDiameterMbs(e,t){const i=this.calcCameraDistanceAndUpdateMinmaxWithCone(e);return i<0?.5*Number.MAX_VALUE:t/i*this._screenSizeFactor}calcCameraDistanceAndUpdateMinmaxWithCone(e){const t=this.calculateMbsConeInRenderSR(e),i=t?.calculateSurfaceDistanceFromPoint(this._camPos)??this.calcCameraDistanceAndUpdateMinmax(e);return t&&this._updateMinMaxDistance(i),i}calcCameraDistanceAndUpdateMinmax(e){return this.calcCameraDistanceToCenterAndUpdateMinmax(e)-this.calculateServiceMbsInRenderSRElevationAdjusted(e).radius}calcCameraDistanceToCenterAndUpdateMinmax(e){const t=this.calculateServiceMbsInRenderSRElevationAdjusted(e),i=h(t.center,this._camPos);return this._updateMinMaxDistance(i),i}calcAngleDependentLoD(e){const{center:s,radius:n}=this.calculateServiceMbsInRenderSRElevationAdjusted(e),r=t(K,s,this._camPos),o=(Math.abs(i(s,r))/m(s)+n)/m(r);return Math.min(1,o)}hasLOD(e){return 0!==e.lodMetric}_getDistanceGlobeMode(e,t){const s=m(t.center),n=m(e)-s;l(se,e,i(e,t.center)/_(e));const r=p(t.center,se),a=t.radius;if(r<=a*a)return Math.abs(n);{const r=l(se,t.center,1/s),c=l(ne,r,s-a*a/2/s),u=e,d=o(re,u,c),_=o(re,d,l(oe,r,i(r,d))),p=f(re,c,l(re,_,a/m(_)));let v=h(u,p);if(n>=2e5){const e=o(ne,u,p);let t=i(e,r)/m(e);t<.08&&(t=1e-4),v/=t}return v}}_getDistance(e,t){return this._isGlobalMode?this._getDistanceGlobeMode(e,t):N(e,t)}_updateMinMaxDistance(e){e>0?(this.minDistance=Math.min(this.minDistance,e),this.maxDistance=Math.max(this.maxDistance,e)):(this.minDistance=0,this.maxDistance=Math.max(this.maxDistance,-e))}getLodLevel(e){if(0===e.lodMetric)return 0;if(0===e.childCount)return this.maxLodLevel;if(this._useFrustumCulling&&this._progressiveLoadFactor<1){const t=this._progressiveLoadFactor*this._screenspaceErrorBias,i=this._screenspaceErrorBias;return this.evaluateLODmetric(e,t)?this.evaluateLODmetric(e,i)?2:1:0}return this.evaluateLODmetric(e,this._screenspaceErrorBias)?this.maxLodLevel:0}evaluateLODmetric(e,t){switch(e.lodMetric){case 1:{let i=this._screenSpaceDiameterMbs(e,(e.serviceMbsInIndexSR?.radius??0)*t);return this._options.angleDependentLoD&&(i*=this.calcAngleDependentLoD(e)),i<e.maxError}case 2:{const i=this.calculateServiceMbsInRenderSRElevationAdjusted(e),s=this._getDistance(this._camPos,i),n=2*s/this._screenSizeFactor,r=s+i.radius;return this._updateMinMaxDistance(r),e.maxError*t<=n}case 3:return this._screenSpaceDiameterMbs(e,e.maxError)*t<10;case 4:return this.calcCameraDistanceAndUpdateMinmax(e)>e.maxError*t}return!1}distToCameraPOIRay(e){if(null==e)return 0;const t=this.calculateServiceMbsInRenderSRElevationAdjusted(e),s=t.center,n=i(s,this._cameraPOIDirection),r=n*n,o=_(s)-r;return Math.sqrt(o)-t.radius}distCameraToPOI(){return h(this._camPos,this._poi)}}function N(e,t){const i=e[0]-t.center[0],s=e[1]-t.center[1],n=e[2]-t.center[2],r=i*i+s*s,o=t.radius;if(r<=o*o)return Math.abs(n);const a=Math.sqrt(r)-o;return Math.sqrt(n*n+a*a)}const T=C(),z=v(),W=v(),k=v(),H=v(),Z=v(),X=new y,Y=v(),J=[v(),v(),v(),v(),v(),v(),v(),v()],K=v(),Q=v(),$=v(),ee=v(),te=v(),ie=new A,se=v(),ne=v(),re=v(),oe=v();function ae(e,t,i){if(2===i)e.center[2]+=t;else{const i=m(e.center);l(e.center,e.center,1+t/i)}}const ce=.001;export{G as default};
2
+ import{normalize as e,sub as t,dot as i,scaleAndAdd as s,set as n,equals as r,subtract as o,len as a,sqrDist as c,copy as u,scale as l,dist as d,distance as h,length as m,squaredLength as _,squaredDistance as p,add as f}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as v}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{getReferenceEllipsoid as R}from"../../../../geometry/ellipsoidUtils.js";import{getSphericalPCPF as S}from"../../../../geometry/spatialReferenceEllipsoidUtils.js";import{projectBoundingSphere as b}from"../../../../geometry/projection/projectBoundingSphere.js";import{getProjector as g}from"../../../../geometry/projection/projectors.js";import{create as M,fromMatrix as x,intersectsSphere as I,createPoints as C}from"../../../../geometry/support/frustum.js";import{signedDistance as E,getNormal as D}from"../../../../geometry/support/plane.js";import{isPlateCarree as P}from"../../../../geometry/support/spatialReferenceUtils.js";import{Sphere as A}from"../../../../geometry/support/sphere.js";import{evaluateElevationAlignmentAtPoint as O}from"../graphics/elevationAlignmentUtils.js";import{ElevationContext as F}from"../graphics/ElevationContext.js";import{createContextWithoutExpressionSupport as V,extractExpressionInfo as j}from"../graphics/featureExpressionInfoUtils.js";import{intersectBoundingRectWithMbs as B}from"./I3SUtil.js";import{SphereCylinderLocal as w,SphereConeGlobal as L}from"./SphereCone.js";import{Obb as y,computeOffsetObb as U}from"../../support/orientedBoundingBox.js";const q=1e5;class G{get _frustumMbsCenter(){return this._frustumMbs.center}get _frustumMbsRadius(){return this._frustumMbs.radius}get _frustumPlanes(){return this._frustum}constructor(e,t,i,s,n,r,o,a,c={}){this._indexSR=e,this._renderCoordsHelper=t,this._clippingArea=n,this._elevationProvider=r,this._viewingMode=o,this._options=c,this._frustum=M(),this._frustumMbs=new A,this._viewDirection=v(),this._useFrustumCulling=!1,this._poi=v(),this._cameraPOIDirection=v(),this._elevationContext=null,this.minDistance=1/0,this.maxDistance=0,this.maxLodLevel=2,this._screenspaceErrorBias=c.screenspaceErrorBias||1,this._progressiveLoadFactor=c.progressiveLoadFactor||1,this.updateCamera(i,s);const u=this._renderCoordsHelper.spatialReference;this._renderSR=u,this._renderSRSphericalPCPF=S(u),this._isGlobalMode=u===this._renderSRSphericalPCPF,this.updateElevationInfo(a),this._isECEFOBBInLocalMode=this._indexSR.isWGS84&&(u.isWebMercator||P(u)),this._indexSREllipsoidRadius=R(this._indexSR).radius,this._indexSRSphericalPCPF=S(e),this._projectorIndexSRToIndexSRSphericalPCPF=g(this._indexSR,this._indexSRSphericalPCPF)}updateElevationInfo(e){null!=e?(this._elevationContext=F.fromElevationInfo(e),this._elevationContext.setFeatureExpressionInfoContext(V(j(e,!1)))):this._elevationContext=null}updateCamera(n,r){if(this._useFrustumCulling=r,e(this._viewDirection,n.viewForward),r){x(n.viewMatrix,n.projectionMatrix,this._frustum,z);{const e=n.eye,r=T;t(r,z[4],e);const o=.5*i(r,r)/i(this._viewDirection,r),a=this._frustumMbs,c=a.center;s(c,e,this._viewDirection,o);const u=1+o;a.radius=u}}this._screenSizeFactor=1/(n.perScreenPixelRatio/2),this._camPos=n.eye,this._updateCameraPOIDirection(),this.minDistance=1/0,this.maxDistance=0}setPointOfInterest(e){this._poi=e,this._updateCameraPOIDirection()}updateScreenSpaceErrorBias(e){const t=this._screenspaceErrorBias;return this._screenspaceErrorBias=e,t}updateClippingArea(e){this._clippingArea=e}expandElevationRange(e,t,i){if(null==this._elevationContext)return;const s=e.serviceMbsInIndexSR;if(!s)return;const n="relative-to-scene"===this._elevationContext.mode?"scene":"ground",r=this._elevationProvider;if(r.getSphereElevationRange){const e=r.getSphereElevationRange(s,this._indexSR,n);if(e)return void i.expandElevationRange(e)}const[o,a,c]=s.center,u=r.getElevation(o,a,c,this._indexSR,n);u&&i.expandElevationRangeValues(u,u);const l=t?null:r.getRootElevationRange?.();l&&i.expandElevationRange(l)}calculateServiceMbsInRenderSR(e){const{serviceMbsInRenderSR:t}=e;if(t.isValid)return t;const{serviceMbsInIndexSR:i}=e;if(!i?.isValid)return t;const s=ie;return b(i,this._indexSR,s,this._renderSR),e.updateServiceMbsInRenderSR(s)}calculateServiceMbsInRenderSRElevationAdjusted(e){const{serviceMbsInRenderSRElevationAdjusted:t}=e;if(t.isValid)return t;const{serviceMbsInIndexSR:i}=e,s=this.calculateServiceMbsInRenderSR(e);if(!s.isValid||!i?.isValid)return t;const n=ie;n.copyFrom(s);const{_elevationContext:r}=this;if(r){const{minElevation:t}=e,{_renderCoordsHelper:s}=this,o=i.center;let a=0;if(Number.isFinite(t)){let i=0,c=0;const{maxElevation:u}=e,l=o[2];switch(r.mode){case"relative-to-ground":case"relative-to-scene":i=r.geometryZWithOffset(l,s)+t-l,c=u-t;break;case"on-the-ground":i=t-l,c=u-t}a=i+.5*c,n.radius+=.5*c}else n.radius<q&&(a=O(o,this._elevationProvider,r,s)-o[2]);a&&ae(n,a,this._viewingMode)}return e.updateServiceMbsInRenderSRElevationAdjusted(n)}calculateMbsConeInRenderSR(e){const{mbsConeInRenderSR:t}=e;if(t)return t;if(!e.elevationRangeValid)return null;const{minElevation:i,maxElevation:s}=e;if(!(Number.isFinite(i)&&i<s))return null;const n=this.calculateServiceMbsInRenderSR(e);if(!n.isValid)return null;const r=this._renderCoordsHelper.referenceEllipsoid.radius,o=2===this._viewingMode?new w(n,i,s):new L(n,r+i,r+s);return e.updateMbsConeInRenderSR(o)}getAndUpdateVisibilityObbInRenderSR(e){{const t=e.visibilityObbInRenderSR;if(t)return t}const t=.01*this._indexSREllipsoidRadius,{serviceMbsInIndexSR:i,serviceObbInIndexSR:s}=e;if(null==s||!i||!s.isValid||this._isECEFOBBInLocalMode&&(s.halfSizeX>t||s.halfSizeY>t||s.halfSizeZ>t))return null;{let t=e.serviceObbInRenderSR;if(null==t)t=new y,e.serviceObbInRenderSR=t;else if(t.isValid)return t;const r=i.radius;let o=0,a=0;const c=s.centerZ,u=this._renderCoordsHelper,l=this._elevationContext;if(l&&e.elevationRangeValid){const{minElevation:t,maxElevation:i}=e;switch(l.mode){case"relative-to-ground":case"relative-to-scene":o=l.geometryZWithOffset(c,u)+t-c,a=i-t;break;case"on-the-ground":o=t-c,a=i-t}}else if(l&&r<q){const e=n(Y,s.centerX,s.centerY,c);o=O(e,this._elevationProvider,l,u)-c}const d=a>0,h=d?X:t;return s.transform(h,this._indexSR,this._renderSR,o,this._renderSRSphericalPCPF,this._indexSRSphericalPCPF,this._projectorIndexSRToIndexSRSphericalPCPF),d&&U(h,0,a,this._viewingMode,t),t}}getNodeObbInRenderSRIndependentOfElevationOffset(e){{const t=e.visibilityObbInRenderSR??e.serviceObbInRenderSR??null;if(t?.isValid)return t}const t=e.serviceObbInIndexSR;if(!t)return null;const i=.2;return 2===this._viewingMode&&Math.max(...t.halfSize)>i*this._indexSREllipsoidRadius?null:(t.transform(X,this._indexSR,this._renderSR,void 0,this._renderSRSphericalPCPF,this._indexSRSphericalPCPF,this._projectorIndexSRToIndexSRSphericalPCPF),X)}ensureElevationAgnosticBoundingVolume(e){return!e.elevationAgnosticBoundingVolume.valid&&e.level>0&&(1===this._viewingMode?this._updateElevationAgnosticBoundingVolumeGlobal(e):this._updateElevationAgnosticBoundingVolumeLocal(e)),e.elevationAgnosticBoundingVolume}_updateCameraPOIDirection(){r(this._poi,this._camPos)?this._cameraPOIDirection=this._viewDirection:(o(this._cameraPOIDirection,this._camPos,this._poi),e(this._cameraPOIDirection,this._cameraPOIDirection))}_updateElevationAgnosticBoundingVolumeGlobal(t){const s=this.getNodeObbInRenderSRIndependentOfElevationOffset(t),n=t.elevationAgnosticBoundingVolume;let r,o=-1;if(s){const t=Y;s.getCenter(t),e(t,t),r=t,s.getCorners(J);for(const s of J){e(s,s);const r=i(s,t);if(r<=0)return void n.invalidate();const a=Math.sqrt(1-r*r);o=Math.max(o,a)}}else{const i=t.serviceMbsInRenderSR;if(!i.isValid)return void n.invalidate();const{center:s,radius:c}=i,u=a(s);if(u<c)return void n.invalidate();o=c/u,r=e(te,s)}n.set(r,o+ce)}_updateElevationAgnosticBoundingVolumeLocal(e){const t=e.elevationAgnosticBoundingVolume,i=this.getNodeObbInRenderSRIndependentOfElevationOffset(e);if(i){const e=i.getCenter(Y);e[2]=0;let s=0;const n=K;i.getCorners(J);for(const t of J){t[2]=0;const e=c(n,t);s=Math.max(s,e)}t.set(e,Math.sqrt(s))}else{const i=e.serviceMbsInRenderSR;if(i.isValid){const e=u(Y,i.center);e[2]=0,t.set(e,i.radius)}}}isNodeVisible(e){if(!this._isMBSinClippingArea(this.calculateServiceMbsInRenderSR(e)))return!1;if(!this._useFrustumCulling)return!0;const t=this.getAndUpdateVisibilityObbInRenderSR(e);return t?t.intersectsFrustumConservativeApproximation(this._frustum):I(this._frustum,this.calculateServiceMbsInRenderSRElevationAdjusted(e))}isElevationAgnosticBoundingVolumeVisible(e){return!this._useFrustumCulling||(!e.valid||(1===this._viewingMode?this._isConeVisibleInFrustum(e):this._isCylinderVisibleInFrustum(e)))}_isConeVisibleInFrustum(n){if(!this._isConeVisibleInFrustumMbs(n)||!n.valid)return!1;const r=n.radius;if(r>.9)return!0;const o=this._frustumPlanes,a=this._frustumMbsCenter,c=n.getAxis(te),u=i(c,a),d=this._frustumMbsRadius,h=u-d,m=u+d;if(h<=0)return!0;const _=l(k,c,h),p=l(H,c,m),f=r/Math.sqrt(1-r*r);for(const v of o){const n=D(v),r=e(Z,n),o=i(r,c);if(Math.abs(1-o)<.01)continue;const a=Q;l(a,c,o),t(a,a,r),e(a,a);const u=$;s(u,_,a,h*f);if(E(v,u)<=0)continue;s(u,p,a,m*f);if(E(v,u)<=0)continue;return!1}return!0}_isConeVisibleInFrustumMbs(e){const t=e.radius;if(t>.9)return!0;const s=this._frustumMbsRadius,n=this._frustumMbsCenter,r=a(n);if(r<=s)return!0;const o=e.getAxis(te),c=i(o,n);{const e=l(W,o,c);if(d(e,n)<s)return!0}const u=c/r;if(c<=0){return-u<s}const h=Math.sqrt(1-u*u);if(h<t)return!0;const m=s/r;return h*Math.sqrt(1-m*m)-m*u<t}isObbVisibleIndependentOfElevation(e,t){if(!this._useFrustumCulling)return!0;if(!e.valid)return!0;const s=this._frustumMbsRadius,n=this._frustumMbsCenter,r=this._frustumPlanes,o=J;if(t.getCorners(o),1===this._viewingMode){const t=e.getAxis(te),a=i(t,n),c=a-s,u=a+s;if(c<=0)return!0;for(const e of r){let s=!0;for(const n of o){const r=i(n,t),o=ee;if(l(o,n,c/r),E(e,o)<=0){s=!1;break}const a=ee;if(l(a,n,u/r),E(e,a)<=0){s=!1;break}}if(s)return!1}}else{const e=n[2]-s,t=n[2]+s;for(const i of r){let s=!0;const n=D(i),r=n[0],a=n[1],c=n[2],u=i[3];for(const i of o){const n=r*i[0]+a*i[1]+u;if(n+c*e<=0||n+c*t<=0){s=!1;break}}if(s)return!1}}return!0}_isCylinderVisibleInFrustum(e){const t=this._frustumMbsCenter,i=this._frustumMbsRadius,s=u(W,t);s[2]=0;const n=e.radius,r=e.getAxis(te);return d(s,r)<=n+i}isGeometryVisible(e){if(!this._useFrustumCulling)return!0;const t=e.geometryObbInRenderSR;return t?.intersectsFrustumConservativeApproximation(this._frustum)??this.isNodeVisible(e)}_isMBSinClippingArea(e){return null==this._clippingArea||0!==B(this._clippingArea,e)}_screenSpaceDiameterMbs(e,t){const i=this.calcCameraDistanceAndUpdateMinmaxWithCone(e);return i<0?.5*Number.MAX_VALUE:t/i*this._screenSizeFactor}calcCameraDistanceAndUpdateMinmaxWithCone(e){const t=this.calculateMbsConeInRenderSR(e),i=t?.calculateSurfaceDistanceFromPoint(this._camPos)??this.calcCameraDistanceAndUpdateMinmax(e);return t&&this._updateMinMaxDistance(i),i}calcCameraDistanceAndUpdateMinmax(e){return this.calcCameraDistanceToCenterAndUpdateMinmax(e)-this.calculateServiceMbsInRenderSRElevationAdjusted(e).radius}calcCameraDistanceToCenterAndUpdateMinmax(e){const t=this.calculateServiceMbsInRenderSRElevationAdjusted(e),i=h(t.center,this._camPos);return this._updateMinMaxDistance(i),i}calcAngleDependentLoD(e){const{center:s,radius:n}=this.calculateServiceMbsInRenderSRElevationAdjusted(e),r=t(K,s,this._camPos),o=(Math.abs(i(s,r))/m(s)+n)/m(r);return Math.min(1,o)}hasLOD(e){return 0!==e.lodMetric}_getDistanceGlobeMode(e,t){const s=m(t.center),n=m(e)-s;l(se,e,i(e,t.center)/_(e));const r=p(t.center,se),a=t.radius;if(r<=a*a)return Math.abs(n);{const r=l(se,t.center,1/s),c=l(ne,r,s-a*a/2/s),u=e,d=o(re,u,c),_=o(re,d,l(oe,r,i(r,d))),p=f(re,c,l(re,_,a/m(_)));let v=h(u,p);if(n>=2e5){const e=o(ne,u,p);let t=i(e,r)/m(e);t<.08&&(t=1e-4),v/=t}return v}}_getDistance(e,t){return this._isGlobalMode?this._getDistanceGlobeMode(e,t):N(e,t)}_updateMinMaxDistance(e){e>0?(this.minDistance=Math.min(this.minDistance,e),this.maxDistance=Math.max(this.maxDistance,e)):(this.minDistance=0,this.maxDistance=Math.max(this.maxDistance,-e))}getLodLevel(e){if(0===e.lodMetric)return 0;if(0===e.childCount)return this.maxLodLevel;if(this._useFrustumCulling&&this._progressiveLoadFactor<1){const t=this._progressiveLoadFactor*this._screenspaceErrorBias,i=this._screenspaceErrorBias;return this.evaluateLODmetric(e,t)?this.evaluateLODmetric(e,i)?2:1:0}return this.evaluateLODmetric(e,this._screenspaceErrorBias)?this.maxLodLevel:0}evaluateLODmetric(e,t){switch(e.lodMetric){case 1:{let i=this._screenSpaceDiameterMbs(e,(e.serviceMbsInIndexSR?.radius??0)*t);return this._options.angleDependentLoD&&(i*=this.calcAngleDependentLoD(e)),i<e.maxError}case 2:{const i=this.calculateServiceMbsInRenderSRElevationAdjusted(e),s=this._getDistance(this._camPos,i),n=2*s/this._screenSizeFactor,r=s+i.radius;return this._updateMinMaxDistance(r),e.maxError*t<=n}case 3:return this._screenSpaceDiameterMbs(e,e.maxError)*t<10;case 4:return this.calcCameraDistanceAndUpdateMinmax(e)>e.maxError*t}return!1}distToCameraPOIRay(e){if(null==e)return 0;const t=this.calculateServiceMbsInRenderSRElevationAdjusted(e),s=t.center,n=i(s,this._cameraPOIDirection),r=n*n,o=_(s)-r;return Math.sqrt(o)-t.radius}distCameraToPOI(){return h(this._camPos,this._poi)}}function N(e,t){const i=e[0]-t.center[0],s=e[1]-t.center[1],n=e[2]-t.center[2],r=i*i+s*s,o=t.radius;if(r<=o*o)return Math.abs(n);const a=Math.sqrt(r)-o;return Math.sqrt(n*n+a*a)}const z=C(),T=v(),W=v(),k=v(),H=v(),Z=v(),X=new y,Y=v(),J=[v(),v(),v(),v(),v(),v(),v(),v()],K=v(),Q=v(),$=v(),ee=v(),te=v(),ie=new A,se=v(),ne=v(),re=v(),oe=v();function ae(e,t,i){if(2===i)e.center[2]+=t;else{const i=m(e.center);l(e.center,e.center,1+t/i)}}const ce=.001;export{G as default};
@@ -48,8 +48,8 @@ export interface RenderNodeProperties extends Partial<Pick<RenderNode, "produces
48
48
  * ```js
49
49
  * new LuminanceRenderNode({ view });
50
50
  * ```
51
- * A RenderNode subclass is created using [Accessor.createSubclass()](https://developers.arcgis.com/javascript/latest/references/core/core/Accessor/#createSubclass). This example
52
- * node modifies the "composite-color" output of the render pipeline:
51
+ * A RenderNode subclass is created using [Accessor.createSubclass()](https://developers.arcgis.com/javascript/latest/references/core/core/Accessor/#createSubclass). This example node modifies the "composite-color"
52
+ * output of the render pipeline:
53
53
  * ```js
54
54
  * const LuminanceRenderNode = RenderNode.createSubclass({
55
55
  * consumes: { required: ["composite-color"] }
@@ -67,9 +67,9 @@ export interface RenderNodeProperties extends Partial<Pick<RenderNode, "produces
67
67
  * [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/). Every time a node is traversed, the render engine will modify or create
68
68
  * framebuffers.
69
69
  * For example, the render graph in the images shown
70
- * [below](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/RenderNode/#render-node-input-images) contains nodes which render buildings,
71
- * one transparent cube, the terrain with textures, atmosphere effects, and post processing effects such as
72
- * antialiasing.
70
+ * [below](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/RenderNode/#render-node-input-images)
71
+ * contains nodes which render buildings, one transparent cube, the terrain with textures, atmosphere effects, and post
72
+ * processing effects such as antialiasing.
73
73
  *
74
74
  * Depending on the [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/) properties and layer configuration, the rendering engine
75
75
  * modifies the render graph to traverse the nodes which are required to produce the configured rendering. The
@@ -78,13 +78,13 @@ export interface RenderNodeProperties extends Partial<Pick<RenderNode, "produces
78
78
  *
79
79
  * The [RenderNode](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/RenderNode/) class offers a way to inject custom render code to this render
80
80
  * pipeline. Currently the following outputs can be modified by custom render nodes:
81
- * * **opaque-color**
82
- * * **transparent-color**
83
- * * **composite-color**
84
- * * **final-color**
85
81
  *
86
- * Opaque color contains all non-transparent 3D geometries. Transparent color contains opaque-color and all transparent
87
- * 3D geometries. Composite color contains all 3D content, but not 2D content such as icons and highlights.
82
+ * | [RenderNodeOutput](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/#RenderNodeOutput) | Description |
83
+ * |---------- | ----------- |
84
+ * | opaque-color | Contains the rendered image after all opaque geometries have been drawn. |
85
+ * | transparent-color | Contains the rendered image after all opaque and transparent geometries have been drawn |
86
+ * | composite-color | Contains the rendered image without any post processes applied. |
87
+ * | final-color | Contains the rendered image including post processes. |
88
88
  *
89
89
  * Important to note is that the chronological order for traversing the render graph does not correspond to the
90
90
  * object location in the frame. For example, all opaque objects are rendered first even if they are behind transparent
@@ -92,58 +92,49 @@ export interface RenderNodeProperties extends Partial<Pick<RenderNode, "produces
92
92
  * [alpha blending](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/blendFunc) will
93
93
  * create the correct visibility.
94
94
  *
95
- * Once the injection point is declared with [produces](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/RenderNode/#produces), the
96
- * [render()](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/RenderNode/#render) function needs to return this output in a
97
- * [ManagedFBO](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/ManagedFBO/) for the RenderNode to be correctly traversed. The output is
98
- * also provided as an input, and typically this input is read as a texture or bound as the framebuffer to create the
99
- * output.
95
+ * Once the injection point is declared with [produces](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/RenderNode/#produces), the [render()](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/RenderNode/#render)
96
+ * function needs to return this output in a [ManagedFBO](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/ManagedFBO/) for the RenderNode to be correctly
97
+ * traversed. The output is also provided as an input, and typically this input is read as a texture or bound as the
98
+ * framebuffer to create the output.
100
99
  *
101
- * See [produces](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/RenderNode/#produces) and
102
- * [RenderNodeOutput](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/#RenderNodeOutput) for details.
100
+ * See [produces](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/RenderNode/#produces) and [RenderNodeOutput](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/#RenderNodeOutput) for details.
103
101
  *
104
102
  * #### RenderNode inputs
105
103
  *
106
- * Every [RenderNode](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/RenderNode/) requires some input
107
- * [framebuffer objects](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/createFramebuffer).
104
+ * Every [RenderNode](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/RenderNode/) requires some input [framebuffer objects](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/createFramebuffer).
108
105
  * Typically a node will modify the state of a framebuffer, using its output also as a required input. The
109
- * [RenderNode](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/RenderNode/) offers additional input targets to be used as inputs for a rendering
110
- * code. These are used for advanced graphics effects. The following additional inputs are available:
106
+ * [RenderNode](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/RenderNode/) offers additional input targets to be used as inputs for a rendering code. These are
107
+ * used for advanced graphics effects. The following additional inputs are available:
111
108
  *
112
109
  * <span id="render-node-input-images"></span>
113
- * | composite-color | composite-color depth attachment | highlights | normals |
114
- * | --------------- | -------------------------------- | ---------- | ------- |
115
- * | <img src="https://developers.arcgis.com/javascript/latest/assets/images/apiref/views/3d/rendernodeCompositeColor.png" style="width:200px;"/> | <img src="https://developers.arcgis.com/javascript/latest/assets/images/apiref/views/3d/rendernodeCompositeColorDepth.png" style="width:200px;"/> | <img src="https://developers.arcgis.com/javascript/latest/assets/images/apiref/views/3d/rendernodeHighlight.png" style="width:200px;"/> | <img src="https://developers.arcgis.com/javascript/latest/assets/images/apiref/views/3d/rendernodeNormals.png" style="width:200px;"/> |
110
+ * | <img src="https://developers.arcgis.com/javascript/latest/assets/references/core/views/3d/rendernodeCompositeColor.png" style="width:200px;"/> | <img src="https://developers.arcgis.com/javascript/latest/assets/references/core/views/3d/rendernodeCompositeColorDepth.png" style="width:200px;"/> | <img src="https://developers.arcgis.com/javascript/latest/assets/references/core/views/3d/rendernodeCompositeEmissive.png" style="width:200px;"/> | <img src="https://developers.arcgis.com/javascript/latest/assets/references/core/views/3d/rendernodeHighlight.png" style="width:200px;"/> | <img src="https://developers.arcgis.com/javascript/latest/assets/references/core/views/3d/rendernodeNormals.png" style="width:200px;"/> |
111
+ * | ---------- | ---------- | ---------- | ---------- | ---------- |
112
+ * | composite-color | composite-color depth attachment | composite-color emissive attachment | highlights | normals |
116
113
  *
117
- * If one of the required inputs is not available then this [RenderNode](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/RenderNode/) will be
118
- * skipped during the frame. For example, a custom [RenderNode](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/RenderNode/) using highlights as
119
- * required input will only render if highlights are present in the scene. Optional inputs do not cause the render node
120
- * to be skipped while rendering. If optional inputs are not available they will not be present in the input parameter
121
- * of the render function.
114
+ * If one of the required inputs is not available then this [RenderNode](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/RenderNode/) will be skipped during the
115
+ * frame. For example, a custom [RenderNode](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/RenderNode/) using highlights as required input will only render if
116
+ * highlights are present in the scene. Optional inputs do not cause the render node to be skipped while rendering. If
117
+ * optional inputs are not available they will not be present in the input parameter of the render function.
122
118
  *
123
- * Note that there are restrictions in availability due to the implicit ordering of the render graph as well. For
124
- * example, opaque-color cannot require composite-color. See details in
125
- * [RenderNodeInput](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/#RenderNodeInput).
119
+ * Note that there are restrictions in availability due to the implicit ordering of the render graph as well. For example,
120
+ * opaque-color cannot require composite-color. See details in [RenderNodeInput](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/#RenderNodeInput).
126
121
  *
127
122
  * #### Managed framebuffer objects and attachments
128
123
  *
129
- * All render nodes have in common that they alter the state of a
130
- * [framebuffer object](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/createFramebuffer).
131
- * This happens either by simply drawing additional geometry "on top" of the input framebuffer, or by using the input
132
- * as a Texture, e.g. to apply a post processing effect. See WebGL tutorials or the WebGL documentation to get familiar
133
- * with the concept of
134
- * [framebuffer objects](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/createFramebuffer).
124
+ * All render nodes have in common that they alter the state of a [framebuffer object](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/createFramebuffer).
125
+ * This happens either by simply drawing additional geometry "on top" of the input framebuffer, or by using the input as
126
+ * a Texture, e.g. to apply a post processing effect. See WebGL tutorials or the WebGL documentation to get familiar with
127
+ * the concept of [framebuffer objects](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/createFramebuffer).
135
128
  *
136
- * The [ManagedFBO](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/ManagedFBO/) is a wrapper interface to request and provide framebuffer content
137
- * to the render engine of the [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/).The ManagedFBO exposes the necessary interface to
138
- * reference count these framebuffer and attached textures to render nodes.
139
- * See [ManagedFBO](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/ManagedFBO/) for details.
129
+ * The [ManagedFBO](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/ManagedFBO/) is a wrapper interface to request and provide framebuffer content to the render
130
+ * engine of the [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/).The ManagedFBO exposes the necessary interface to reference count these
131
+ * framebuffer and attached textures to render nodes. See [ManagedFBO](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/ManagedFBO/) for details.
140
132
  *
141
133
  * <span id="coordinate-systems"></span>
142
134
  * #### Coordinate systems
143
135
  *
144
136
  * When working with custom render nodes, coordinates have to be specified in the internal rendering coordinate system
145
- * of SceneView. This coordinate system depends on the [SceneView.viewingMode](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/#viewingMode) of
146
- * the view:
137
+ * of SceneView. This coordinate system depends on the [SceneView.viewingMode](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/#viewingMode) of the view:
147
138
  *
148
139
  * * In `local` viewing mode, it is equal to the coordinate system defined by the spatial reference of the view.
149
140
  * * In `global` viewing mode, it is an [ECEF](https://en.wikipedia.org/wiki/ECEF) coordinate system where the X-axis
@@ -151,12 +142,11 @@ export interface RenderNodeProperties extends Partial<Pick<RenderNode, "produces
151
142
  * drawn as a perfect sphere with a radius of 6378137, so the unit of the coordinate system should be considered
152
143
  * meters.
153
144
  *
154
- * ![rendernode-global-coordinate-system](https://developers.arcgis.com/javascript/latest/assets/images/apiref/views/3d/externalRenderers-global-coordinate-system.png)
145
+ * ![rendernode-global-coordinate-system](https://developers.arcgis.com/javascript/latest/assets/references/core/views/3d/externalRenderers-global-coordinate-system.png)
155
146
  *
156
- * You can use [toRenderCoordinates()](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/#toRenderCoordinates)
157
- * and [fromRenderCoordinates()](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/#fromRenderCoordinates) to transform to
158
- * and from the rendering coordinate system without having to worry about viewingMode and the exact coordinate
159
- * system definition.
147
+ * You can use [toRenderCoordinates()](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/#toRenderCoordinates) and [fromRenderCoordinates()](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/#fromRenderCoordinates) to transform to
148
+ * and from the rendering coordinate system without having to worry about viewingMode and the exact coordinate system
149
+ * definition.
160
150
  *
161
151
  * #### Precision and local origins
162
152
  *
@@ -235,10 +225,8 @@ export default abstract class RenderNode extends Accessor {
235
225
  *
236
226
  * The returned FBO has only a color0 attachment. The render function is however expected to return a ManagedFBO
237
227
  * with the same attachments as the input framebuffer. Any additionally needed attachments can be allocated using
238
- * [ManagedFBO.acquireDepth()](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/ManagedFBO/#acquireDepth) and
239
- * [ManagedFBO.acquireColor()](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/ManagedFBO/#acquireColor), or reused from an input framebuffer
240
- * using [ManagedFBO.attachDepth()](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/ManagedFBO/#attachDepth) and
241
- * [ManagedFBO.attachColor()](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/ManagedFBO/#attachColor).
228
+ * [ManagedFBO.acquireDepth()](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/ManagedFBO/#acquireDepth) and [ManagedFBO.acquireColor()](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/ManagedFBO/#acquireColor), or reused from
229
+ * an input framebuffer using [ManagedFBO.attachDepth()](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/ManagedFBO/#attachDepth) and [ManagedFBO.attachColor()](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/ManagedFBO/#attachColor).
242
230
  *
243
231
  * @returns The requested framebuffer object.
244
232
  * @example
@@ -273,9 +261,10 @@ export default abstract class RenderNode extends Accessor {
273
261
  /**
274
262
  * The render function is called whenever a frame is rendered.
275
263
  *
276
- * It has to return a framebuffer with the same attachments as the input "produces" framebuffer. For example, a
277
- * render node producing "composite-color" is expected to produce a "composite-color" framebuffer with one color
278
- * and depth attachment.
264
+ * It has to return a framebuffer with the same attachments as the input "produces" framebuffer. A render node producing
265
+ * "composite-color" is expected to produce a "composite-color" framebuffer with one color and depth attachment. If the
266
+ * "composite-color" framebuffer contains an additional color attachment, e.g. for emissive rendering, the render node
267
+ * is expected to return a framebuffer with two attachments and a depth attachment.
279
268
  *
280
269
  * Typically the render function either uses bindRenderTarget() to render into this framebuffer, or
281
270
  * acquireOutputFramebuffer() to get a new output framebuffer.
@@ -14,10 +14,13 @@ import type RenderCamera from "./webgl/RenderCamera.js";
14
14
  *
15
15
  * RenderNodeOutput | Description | Available RenderNodeInput FBOs | FBO attachments
16
16
  * ---------------- | ----------- | ------------------------------ | --------------- |
17
- * opaque-color | Contains the rendered image after all opaque geometries have been drawn. | opaque-color, normals | color0, depth
18
- * transparent-color| Contains the rendered image after all opaque and transparent geometries have been drawn. | transparent-color, normals | color0, depth
19
- * composite-color | Contains the rendered image without any post processes applied. | composite-color, normals, highlights (if scene has highlights) | color0, depth
20
- * final-color | Contains the rendered image including post processes. | final-color, normals, highlights (if scene has highlights) | color0, depth
17
+ * opaque-color | Contains the rendered image after all opaque geometries have been drawn. | opaque-color, normals | color0, depth, color1(emissive)
18
+ * transparent-color| Contains the rendered image after all opaque and transparent geometries have been drawn. | transparent-color, normals | color0, depth, color1(emissive)
19
+ * composite-color | Contains the rendered image without any post processes applied. | composite-color, normals, highlights (if scene has highlights) | color0, depth, color1(emissive)
20
+ * final-color | Contains the rendered image including post processes. | final-color, normals, highlights (if scene has highlights) | color0, depth, color1(emissive)
21
+ *
22
+ * Emissive attachments are only available when at least one object with [Symbol3DEmissive](https://developers.arcgis.com/javascript/latest/references/core/symbols/support/Symbol3DEmissive/) is
23
+ * added to the [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/).
21
24
  *
22
25
  * @since 5.0
23
26
  */
@@ -161,7 +164,7 @@ export function fromRenderCoordinates<T1 extends ArrayLike<number>, T2 extends A
161
164
  * * Y: Northing
162
165
  * * Z: Elevation
163
166
  *
164
- * ![externalRenderers-renderCoordinateTransformAt](https://developers.arcgis.com/javascript/latest/assets/images/apiref/views/3d/externalRenderers-renderCoordinateTransformAt.png)
167
+ * ![externalRenderers-renderCoordinateTransformAt](https://developers.arcgis.com/javascript/latest/assets/references/core/views/3d/externalRenderers-renderCoordinateTransformAt.png)
165
168
  *
166
169
  * When [view.viewingMode](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/#viewingMode) is `global`, a linear
167
170
  * transformation does not take the curvature of the globe or other non-linear projection aspects into account. Thus,
@@ -8,19 +8,19 @@ export interface MagnifierProperties extends Partial<Pick<Magnifier, "factor" |
8
8
  * as a magnified image. An instance of this class can be accessed through
9
9
  * either [MapView.magnifier](https://developers.arcgis.com/javascript/latest/references/core/views/MapView/#magnifier) or [SceneView.magnifier](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/#magnifier).
10
10
  *
11
- * ![magnifier-overlay](https://developers.arcgis.com/javascript/latest/assets/images/apiref/views/magnifier/magnifier-overlay.png)
11
+ * ![magnifier-overlay](https://developers.arcgis.com/javascript/latest/assets/references/core/views/magnifier/magnifier-overlay.png)
12
12
  *
13
13
  * As you can see in the screenshot above, the Magnifier utilizes a default overlay image of a magnifier
14
14
  * glass. The overlay image is set using the [overlayUrl](https://developers.arcgis.com/javascript/latest/references/core/views/Magnifier/#overlayUrl) property. You can disable the overlay image by setting the [overlayEnabled](https://developers.arcgis.com/javascript/latest/references/core/views/Magnifier/#overlayEnabled) to `false`. The following
15
15
  * demonstrates using a Magnifier without an overlay image.
16
16
  *
17
- * ![magnifier-no-overlay](https://developers.arcgis.com/javascript/latest/assets/images/apiref/views/magnifier/magnifier-no-overlay.png)
17
+ * ![magnifier-no-overlay](https://developers.arcgis.com/javascript/latest/assets/references/core/views/magnifier/magnifier-no-overlay.png)
18
18
  *
19
19
  * The Magnifier contains a default mask image, which is set using the [maskUrl](https://developers.arcgis.com/javascript/latest/references/core/views/Magnifier/#maskUrl), and determines the visible area of the magnified image. Be default, the magnified area
20
20
  * is in the shape of a circle. The following demonstrates an example of a mask image set in the shape of a square. Note that the `overlayEnabled` was set
21
21
  * to `false` in this example as well to hide the overlay image, and only display the magnified area.
22
22
  *
23
- * ![magnifier-maskUrl](https://developers.arcgis.com/javascript/latest/assets/images/apiref/views/magnifier/magnifier-maskUrl.png)
23
+ * ![magnifier-maskUrl](https://developers.arcgis.com/javascript/latest/assets/references/core/views/magnifier/magnifier-maskUrl.png)
24
24
  *
25
25
  * @since 4.19
26
26
  * @see [MapView.magnifier](https://developers.arcgis.com/javascript/latest/references/core/views/MapView/#magnifier)
@@ -247,7 +247,7 @@ export interface MapViewProperties extends View2DProperties {}
247
247
  * is set to `true` (default). To enable zooming in MapView, `view.constraints.snapToZoom` must be set to `false` (default is `true`).
248
248
  * Please see [GamepadInputDevice](https://developers.arcgis.com/javascript/latest/references/core/views/input/gamepad/GamepadInputDevice/) for supported devices.
249
249
  *
250
- * ![Gamepad](https://developers.arcgis.com/javascript/latest/assets/images/apiref/views/input/standard-gamepad.png)
250
+ * ![Gamepad](https://developers.arcgis.com/javascript/latest/assets/references/core/views/input/standard-gamepad.png)
251
251
  *
252
252
  * Gamepad Action | MapView behavior
253
253
  * ------|------------
@@ -258,11 +258,11 @@ export interface MapViewProperties extends View2DProperties {}
258
258
  *
259
259
  * Action Image | SpaceMouse Action | MapView behavior
260
260
  * ------|------|------------
261
- * ![3DMousePan](https://developers.arcgis.com/javascript/latest/assets/images/apiref/views/input/3dmouse-pan.png) | Push (left/right/forward/backward) | Pan the view
262
- * ![3DMousePan](https://developers.arcgis.com/javascript/latest/assets/images/apiref/views/input/pull-up.png) | Pull up | Zoom out
263
- * ![3DMousePan](https://developers.arcgis.com/javascript/latest/assets/images/apiref/views/input/push-down.png) | Push down | Zoom in
264
- * ![3DMousePan](https://developers.arcgis.com/javascript/latest/assets/images/apiref/views/input/rotate-clockwise.png) | Rotate clockwise | Rotate the view clockwise
265
- * ![3DMousePan](https://developers.arcgis.com/javascript/latest/assets/images/apiref/views/input/rotate-counterclockwise.png) | Rotate counterclockwise | Rotate the view counterclockwise
261
+ * ![3DMousePan](https://developers.arcgis.com/javascript/latest/assets/references/core/views/input/3dmouse-pan.png) | Push (left/right/forward/backward) | Pan the view
262
+ * ![3DMousePan](https://developers.arcgis.com/javascript/latest/assets/references/core/views/input/pull-up.png) | Pull up | Zoom out
263
+ * ![3DMousePan](https://developers.arcgis.com/javascript/latest/assets/references/core/views/input/push-down.png) | Push down | Zoom in
264
+ * ![3DMousePan](https://developers.arcgis.com/javascript/latest/assets/references/core/views/input/rotate-clockwise.png) | Rotate clockwise | Rotate the view clockwise
265
+ * ![3DMousePan](https://developers.arcgis.com/javascript/latest/assets/references/core/views/input/rotate-counterclockwise.png) | Rotate counterclockwise | Rotate the view counterclockwise
266
266
  *
267
267
  * To disable gamepad navigation, you can set `view.navigation.gamepad.enabled` to `false`.
268
268
  *
@@ -295,7 +295,7 @@ export interface MapViewProperties extends View2DProperties {}
295
295
  * to user interaction without delay. The [@click](https://developers.arcgis.com/javascript/latest/references/core/views/MapView/#event-click) event is only triggered after making sure that the
296
296
  * user doesn't click a second time (in which case it would trigger a [@double-click](https://developers.arcgis.com/javascript/latest/references/core/views/MapView/#event-double-click) event).
297
297
  *
298
- * ![Various events](https://developers.arcgis.com/javascript/latest/assets/images/apiref/views/events.png "Click and double-click events")
298
+ * ![Various events](https://developers.arcgis.com/javascript/latest/assets/references/core/views/events.png "Click and double-click events")
299
299
  *
300
300
  * In the case of a double-click, the same event chain is repeated after the first click. However, if the user clicks
301
301
  * a second time within a close time range, then the [@click](https://developers.arcgis.com/javascript/latest/references/core/views/MapView/#event-click) event is not emitted anymore, but the