@arcgis/core 5.2.0-next.36 → 5.2.0-next.37

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 (276) hide show
  1. package/assets/esri/core/workers/RemoteClient.js +1 -1
  2. package/assets/esri/core/workers/chunks/02b043a3c5fa8bcb4c5b.js +1 -0
  3. package/assets/esri/core/workers/chunks/{acbc14395c31f6da509e.js → 03437a8ef35c200dbf17.js} +1 -1
  4. package/assets/esri/core/workers/chunks/034dd8ee5152a12412cd.js +1 -0
  5. package/assets/esri/core/workers/chunks/0a6e03263ab0906d8bcf.js +1 -0
  6. package/assets/esri/core/workers/chunks/0edd250159ec259601b3.js +1 -0
  7. package/assets/esri/core/workers/chunks/{401ee7fa500adad77db1.js → 1079914101d69a40b3eb.js} +1 -1
  8. package/assets/esri/core/workers/chunks/{c72121076e438ed28d60.js → 1599dc5309a4e60017ce.js} +2 -2
  9. package/assets/esri/core/workers/chunks/181e98399732f425305d.js +1 -0
  10. package/assets/esri/core/workers/chunks/{47d88e1b003c4519b7b6.js → 18f4b2099299942aaf97.js} +1 -1
  11. package/assets/esri/core/workers/chunks/196e7515a43bd0026f49.js +1 -0
  12. package/assets/esri/core/workers/chunks/1aa7496a7dc95aae11ac.js +1 -0
  13. package/assets/esri/core/workers/chunks/1d524690c4b66289bd20.js +1 -0
  14. package/assets/esri/core/workers/chunks/{f72f38e7609756a7f8ea.js → 20fa2c3d4360afa5e136.js} +1 -1
  15. package/assets/esri/core/workers/chunks/{03350a56f840cffe5459.js → 2757c4bf0280e27f3484.js} +1 -1
  16. package/assets/esri/core/workers/chunks/{93ceb74ac88ef460fe5f.js → 278409028bc5af45b507.js} +1 -1
  17. package/assets/esri/core/workers/chunks/{2c61bb25578f73ba49bc.js → 29a1d0659bbc5a039864.js} +1 -1
  18. package/assets/esri/core/workers/chunks/29df3f829006719b2680.js +1 -0
  19. package/assets/esri/core/workers/chunks/30cf84a47ebefd180bb7.js +1 -0
  20. package/assets/esri/core/workers/chunks/{71a593fa116770e58832.js → 37a95f097533bad1b338.js} +1 -1
  21. package/assets/esri/core/workers/chunks/{7335a762412bc8c15a2f.js → 37e823202424c11076cb.js} +1 -1
  22. package/assets/esri/core/workers/chunks/{ee446250a40e5d89bb5a.js → 3a76fffa2016c16d7989.js} +3 -3
  23. package/assets/esri/core/workers/chunks/{58ce4bcfb15f378b1b9f.js → 3d6d2b42ba2ad7086d5d.js} +1 -1
  24. package/assets/esri/core/workers/chunks/3ec91474658eae87b832.js +1 -0
  25. package/assets/esri/core/workers/chunks/448e0596005cba9a4225.js +1 -0
  26. package/assets/esri/core/workers/chunks/{f148666308071bdb185a.js → 45530a49fa1f09d1682e.js} +1 -1
  27. package/assets/esri/core/workers/chunks/{155940ef3d1888272d73.js → 459e89d1b94a3b204d20.js} +2 -2
  28. package/assets/esri/core/workers/chunks/{f71f5778e03f68f27482.js → 45b2e58051f42ebd236e.js} +1 -1
  29. package/assets/esri/core/workers/chunks/4611cf051c3c396fdf96.js +1 -0
  30. package/assets/esri/core/workers/chunks/{efaa1d05705f6b450e8f.js → 46e3d33e44e5398221e2.js} +1 -1
  31. package/assets/esri/core/workers/chunks/{866950e9ab96aebc6b32.js → 4a8201e09bc3ad5cc00b.js} +1 -1
  32. package/assets/esri/core/workers/chunks/{110135b0562a3b5708b9.js → 4abe820bbe4f7ffccc09.js} +1 -1
  33. package/assets/esri/core/workers/chunks/4ad86d6b1be07c97b6f6.js +1 -0
  34. package/assets/esri/core/workers/chunks/{20ffeb09bb30400de110.js → 4e28f49d0be20ea50fd7.js} +1 -1
  35. package/assets/esri/core/workers/chunks/4f25aac84d9eb10cac83.js +1 -0
  36. package/assets/esri/core/workers/chunks/{0197e459fdb04dfb28ef.js → 51838d55d8ec4ce70398.js} +1 -1
  37. package/assets/esri/core/workers/chunks/542d8a6c415098b9857c.js +1 -0
  38. package/assets/esri/core/workers/chunks/57abf838fcff0f0e2c5e.js +1 -0
  39. package/assets/esri/core/workers/chunks/57dd017fed2943d24e3d.js +1 -0
  40. package/assets/esri/core/workers/chunks/59801b2ccaaf4b394e02.js +1 -0
  41. package/assets/esri/core/workers/chunks/5a62c9f64db4fcae5e52.js +1 -0
  42. package/assets/esri/core/workers/chunks/{e84c13ac59e5381b77e2.js → 5aebecb5c2b3e7887127.js} +1 -1
  43. package/assets/esri/core/workers/chunks/{c19fe4f31e4ef84bbcf6.js → 5e68b74fd548c7cdba36.js} +1 -1
  44. package/assets/esri/core/workers/chunks/{9dcb2cbf89dcb7558432.js → 5f360492560ae07083a6.js} +1 -1
  45. package/assets/esri/core/workers/chunks/6022f43ebd58e21c737a.js +1 -0
  46. package/assets/esri/core/workers/chunks/62b137a795e487fa06a1.js +1 -0
  47. package/assets/esri/core/workers/chunks/{007485862ce95928717a.js → 632de34ebd2f44b4423d.js} +1 -1
  48. package/assets/esri/core/workers/chunks/{1ad5fcae6d6a9801cf58.js → 63ca17f569407c89bde1.js} +2 -2
  49. package/assets/esri/core/workers/chunks/6896a6dd36fa91a27151.js +1 -0
  50. package/assets/esri/core/workers/chunks/{e6263e1983e703befe48.js → 68bc674affe2f7269c40.js} +1 -1
  51. package/assets/esri/core/workers/chunks/{759686b896f51f0fe6a9.js → 6a51499c6623ddce5f00.js} +1 -1
  52. package/assets/esri/core/workers/chunks/6cdf1db30793133294dd.js +1 -0
  53. package/assets/esri/core/workers/chunks/{b0e4af49fc968b0a910f.js → 6ff6783f89ecd3a5e752.js} +1 -1
  54. package/assets/esri/core/workers/chunks/{857532de88f21e8c3466.js → 70763c7b68d8abe8d5fe.js} +1 -1
  55. package/assets/esri/core/workers/chunks/{e67a9f9298d63026e7f6.js → 716b1f073e3cd807abd3.js} +1 -1
  56. package/assets/esri/core/workers/chunks/71a3f05cb86ae2920f8d.js +1 -0
  57. package/assets/esri/core/workers/chunks/723bb56de2324b41df4e.js +1 -0
  58. package/assets/esri/core/workers/chunks/73f61107cb7e6d30bf03.js +1 -0
  59. package/assets/esri/core/workers/chunks/752c34cee981862add89.js +1 -0
  60. package/assets/esri/core/workers/chunks/760dfd585b6c2c1937ce.js +1 -0
  61. package/assets/esri/core/workers/chunks/{595401947e74a0a67144.js → 76449e50222111ba0eb1.js} +1 -1
  62. package/assets/esri/core/workers/chunks/76bed5497f42f23a27ed.js +1 -0
  63. package/assets/esri/core/workers/chunks/832ecc1f7d45774c4726.js +1 -0
  64. package/assets/esri/core/workers/chunks/860a0f9d20f53db1caf4.js +1 -0
  65. package/assets/esri/core/workers/chunks/867e39bb444947c93586.js +1 -0
  66. package/assets/esri/core/workers/chunks/8a8b7ac6693bdfbebf07.js +1 -0
  67. package/assets/esri/core/workers/chunks/8fce15ce4cfdccf407f3.js +1 -0
  68. package/assets/esri/core/workers/chunks/{5260f623438bd84f2caa.js → 937cf55b3b9d324eea73.js} +1 -1
  69. package/assets/esri/core/workers/chunks/93df864c2e829f0fd5ce.js +1 -0
  70. package/assets/esri/core/workers/chunks/{7b5e628ea3d4a51f1c4e.js → 966d002acec8c72be56a.js} +1 -1
  71. package/assets/esri/core/workers/chunks/{367a3031abbeff0c0090.js → 9aef0b87f471626abd66.js} +1 -1
  72. package/assets/esri/core/workers/chunks/{f1d211904d5a1de93cb3.js → 9ba9a3705623679bc305.js} +1 -1
  73. package/assets/esri/core/workers/chunks/{aec82b94787821153d2b.js → a188d0767825d322f96d.js} +1 -1
  74. package/assets/esri/core/workers/chunks/a638de0102c3990403d1.js +1 -0
  75. package/assets/esri/core/workers/chunks/b09935d0105d50a0971b.js +1 -0
  76. package/assets/esri/core/workers/chunks/b2c0262c4a76b8a86200.js +1 -0
  77. package/assets/esri/core/workers/chunks/{599bd80379423c99799d.js → b4323e69e624c6b51754.js} +1 -1
  78. package/assets/esri/core/workers/chunks/b5141f240ca79729686d.js +1 -0
  79. package/assets/esri/core/workers/chunks/b549a4d4b1a34bee8beb.js +1 -0
  80. package/assets/esri/core/workers/chunks/bb89b6fd93513c61b2d3.js +1 -0
  81. package/assets/esri/core/workers/chunks/{3bd32387af52fa48d747.js → bc553ecc8cbcc1b02717.js} +1 -1
  82. package/assets/esri/core/workers/chunks/bcba02f61cf0abcb5600.js +1 -0
  83. package/assets/esri/core/workers/chunks/{f63e7b01c70352538b1e.js → bd0f488e228a75fbefb3.js} +2 -2
  84. package/assets/esri/core/workers/chunks/c48dfda8dcb9551606fb.js +1 -0
  85. package/assets/esri/core/workers/chunks/c4e44fde4bc4ff89e2bc.js +1 -0
  86. package/assets/esri/core/workers/chunks/c93a68618674b38b932e.js +1 -0
  87. package/assets/esri/core/workers/chunks/d2745886ba5a86fd5c4c.js +680 -0
  88. package/assets/esri/core/workers/chunks/d4c341b15d9244276fb9.js +1 -0
  89. package/assets/esri/core/workers/chunks/d5faab9799891e5da5a8.js +1 -0
  90. package/assets/esri/core/workers/chunks/d811924acc9c0be95bba.js +1 -0
  91. package/assets/esri/core/workers/chunks/{4b96aa2dc5b88846bb53.js → e0a4d0288abd334b0673.js} +1 -1
  92. package/assets/esri/core/workers/chunks/{b22a1c98271c2e4d8808.js → e1ddb8e4977b317fd40c.js} +1 -1
  93. package/assets/esri/core/workers/chunks/e961c6140c39921816a8.js +1 -0
  94. package/assets/esri/core/workers/chunks/eb7daa0f6610983ff8db.js +1 -0
  95. package/assets/esri/core/workers/chunks/eb842cf470ce28a73187.js +1 -0
  96. package/assets/esri/core/workers/chunks/ed1d4ebf487c7dcd5c33.js +1 -0
  97. package/assets/esri/core/workers/chunks/f565e203d8fed2672112.js +1 -0
  98. package/assets/esri/core/workers/chunks/f80cadcc2a588da63b38.js +1 -0
  99. package/assets/esri/core/workers/chunks/f8bbb52b865a0a242140.js +1 -0
  100. package/assets/esri/core/workers/chunks/f9592bcdd9988199a7ea.js +1 -0
  101. package/assets/esri/core/workers/chunks/ff7e1eb2366d4301d288.js +1 -0
  102. package/assets/esri/libs/parquet/pkg/bundle_bg.wasm +0 -0
  103. package/chunks/NavigationDepth.glsl.js +18 -0
  104. package/chunks/Path.glsl.js +20 -16
  105. package/config.js +1 -1
  106. package/core/accessorSupport/diffUtils.js +1 -1
  107. package/geometry/FlatGeometry.js +1 -1
  108. package/geometry/support/Indices.js +1 -1
  109. package/geometry/support/ShortArray.js +1 -1
  110. package/geometry/support/UintArray.js +1 -1
  111. package/geometry/support/meshUtils/geographicUtils.js +1 -1
  112. package/kernel.js +1 -1
  113. package/layers/mixins/PublishableLayer.js +1 -1
  114. package/layers/mixins/RefreshableLayer.js +1 -1
  115. package/layers/raster/functions/pixelUtils.js +1 -1
  116. package/layers/support/kustoUtils.js +1 -1
  117. package/package.json +1 -1
  118. package/popup/Feature.js +1 -1
  119. package/portal/support/resourceUtils.js +1 -1
  120. package/renderers/support/rasterTypeUtils.js +1 -1
  121. package/rest/query/operations/pbfFeatureSetUtils.js +1 -1
  122. package/support/revision.js +1 -1
  123. package/symbols/cim/utils.js +1 -1
  124. package/tables/support/tablesUtils.js +1 -1
  125. package/views/2d/engine/flow/utils.js +1 -1
  126. package/views/2d/engine/webgl/GlyphMosaic.js +1 -1
  127. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AAnimatedShader.js +1 -1
  128. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AnimatedTechnique.js +1 -1
  129. package/views/2d/engine/webgl/shaderGraph/techniques/labels/LabelMeshWriter.js +1 -1
  130. package/views/2d/engine/webgl/shaderGraph/techniques/mesh/AlignedVertexSpec.js +1 -1
  131. package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
  132. package/views/2d/layers/features/layerAdapters/labelingUtils.js +1 -1
  133. package/views/2d/layers/support/annodime/dimensionUtils.js +1 -1
  134. package/views/2d/layers/support/annodime/utils.js +1 -1
  135. package/views/3d/interactive/editingTools/reshape/ReshapeOperation.js +1 -1
  136. package/views/3d/interactive/editingTools/reshape/ReshapeTool3D.js +1 -1
  137. package/views/3d/layers/GaussianSplatLayerView3D.js +1 -1
  138. package/views/3d/layers/IntegratedMesh3DTilesLayerView3D.js +1 -1
  139. package/views/3d/layers/Lyr3DWasm.js +1 -1
  140. package/views/3d/layers/PointCloudLayerView3D.js +1 -1
  141. package/views/3d/layers/graphics/Graphics3DPathSymbolLayer.js +1 -1
  142. package/views/3d/layers/i3s/PointCloudRenderer.js +1 -1
  143. package/views/3d/layers/i3s/PointCloudRendererUtil.js +1 -1
  144. package/views/3d/layers/i3s/PointCloudWorkerUtil.js +1 -1
  145. package/views/3d/layers/support/lyr3dTypeConversions.js +1 -1
  146. package/views/3d/state/utils/navigationUtils.js +1 -1
  147. package/views/3d/support/gaussianSplatting/GaussianSplatAtlasPages.js +1 -1
  148. package/views/3d/support/gaussianSplatting/GaussianSplatTextureAtlas.js +1 -1
  149. package/views/3d/support/orientedBoundingBox.js +1 -1
  150. package/views/3d/terrain/terrainUtils.js +1 -1
  151. package/views/3d/webgl-engine/core/material/MaterialBase.js +1 -1
  152. package/views/3d/webgl-engine/core/renderPasses/AllRenderPasses.js +1 -1
  153. package/views/3d/webgl-engine/core/shaderLibrary/attributes/PathVertexPosition.glsl.js +32 -16
  154. package/views/3d/webgl-engine/core/shaderLibrary/output/Emissions.glsl.js +1 -1
  155. package/views/3d/webgl-engine/core/shaderLibrary/shading/calculateUVZShadowFromDepth.glsl.js +2 -2
  156. package/views/3d/webgl-engine/effects/RenderPlugin.js +1 -1
  157. package/views/3d/webgl-engine/lib/Geometry.js +1 -1
  158. package/views/3d/webgl-engine/lib/GridLocalOriginFactory.js +1 -1
  159. package/views/3d/webgl-engine/lib/Intersector.js +1 -1
  160. package/views/3d/webgl-engine/lib/NavigationDepthCache.js +2 -0
  161. package/views/3d/webgl-engine/lib/PathEvaluator.js +1 -1
  162. package/views/3d/webgl-engine/lib/PathGeometry.js +1 -1
  163. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  164. package/views/3d/webgl-engine/lib/geometryDataUtils.js +1 -1
  165. package/views/3d/webgl-engine/lib/intersectorUtils.js +1 -1
  166. package/views/3d/webgl-engine/lib/screenPolygonOverlapUtils.js +1 -1
  167. package/views/3d/webgl-engine/lib/screenPolygonTriangleIntersections.js +1 -1
  168. package/views/3d/webgl-engine/materials/Path.glsl.js +1 -1
  169. package/views/3d/webgl-engine/materials/PathLayouts.js +1 -1
  170. package/views/3d/webgl-engine/materials/PathMaterial.js +1 -1
  171. package/views/3d/webgl-engine/materials/PathTechniqueConfiguration.js +1 -1
  172. package/views/3d/webgl-engine/materials/internal/bufferWriterUtils.js +1 -1
  173. package/views/3d/webgl-engine/parts/RenderView.js +1 -1
  174. package/views/3d/webgl-engine/shaders/NavigationDepth.glsl.js +2 -0
  175. package/views/3d/webgl-engine/shaders/NavigationDepthTechnique.js +2 -0
  176. package/views/3d/webgl-engine/shaders/oitResolution.glsl.js +1 -1
  177. package/views/draw/support/Reshape.js +1 -1
  178. package/views/support/euclideanLengthMeasurementUtils.js +1 -1
  179. package/views/support/selectionUtils.js +1 -1
  180. package/views/webgl/BufferObject.js +1 -1
  181. package/views/webgl/FramebufferObject.js +1 -1
  182. package/views/webgl/RenderingContext.js +1 -1
  183. package/views/webgl/VertexAttributeLayouts.js +1 -1
  184. package/webscene/spec-certification/utils.js +1 -1
  185. package/widgets/Editor/legacy/workflowUtils.js +1 -1
  186. package/widgets/Editor/workflowUtils.js +1 -1
  187. package/widgets/OrientedImageryViewer/imageMeasurementUtils.js +1 -1
  188. package/widgets/OrientedImageryViewer/navigation/errors.js +1 -1
  189. package/widgets/OrientedImageryViewer/navigation/queries.js +1 -1
  190. package/widgets/OrientedImageryViewer/navigation/utils.js +1 -1
  191. package/widgets/OrientedImageryViewer/support/superimposeUtils.js +1 -1
  192. package/widgets/OrientedImageryViewer/utils.js +1 -1
  193. package/widgets/OrientedImageryViewer.js +1 -1
  194. package/widgets/PanoramicViewer/constants.js +1 -1
  195. package/widgets/PanoramicViewer/support/importUtils.js +1 -1
  196. package/widgets/PanoramicViewer/utils.js +1 -1
  197. package/widgets/support/dateUtils.js +1 -1
  198. package/assets/esri/core/workers/chunks/0a2f08298a3c932614f2.js +0 -1
  199. package/assets/esri/core/workers/chunks/0df978697328b6453c94.js +0 -1
  200. package/assets/esri/core/workers/chunks/168c15cf462f9abcbdd2.js +0 -1
  201. package/assets/esri/core/workers/chunks/22c447fcc9a28afeb6e3.js +0 -1
  202. package/assets/esri/core/workers/chunks/24aa98cb2021ddd789ce.js +0 -1
  203. package/assets/esri/core/workers/chunks/2509da565e5a2b43ac7f.js +0 -1
  204. package/assets/esri/core/workers/chunks/256cc116e3be4feee593.js +0 -1
  205. package/assets/esri/core/workers/chunks/2bb3494659609594c4ca.js +0 -1
  206. package/assets/esri/core/workers/chunks/2c017eae434254610c8e.js +0 -1
  207. package/assets/esri/core/workers/chunks/303e723e829ea7088d43.js +0 -1
  208. package/assets/esri/core/workers/chunks/368db1420b8520beae05.js +0 -1
  209. package/assets/esri/core/workers/chunks/38a6a7c56c592f336a12.js +0 -1
  210. package/assets/esri/core/workers/chunks/39ff5b2a05a90e1cb214.js +0 -1
  211. package/assets/esri/core/workers/chunks/3b914ca36e7e2b00cfe6.js +0 -1
  212. package/assets/esri/core/workers/chunks/3e8fa2a7a36881234479.js +0 -1
  213. package/assets/esri/core/workers/chunks/451331f69d21c61ec93b.js +0 -1
  214. package/assets/esri/core/workers/chunks/4656a4bf430d7eed1465.js +0 -1
  215. package/assets/esri/core/workers/chunks/472ec242cd3070e6acfe.js +0 -1
  216. package/assets/esri/core/workers/chunks/51d7145f748b4865de7f.js +0 -1
  217. package/assets/esri/core/workers/chunks/54f54623532f633dc0e2.js +0 -1
  218. package/assets/esri/core/workers/chunks/570a4725b2a4a19c5148.js +0 -1
  219. package/assets/esri/core/workers/chunks/586ca90e46f5cbdfeece.js +0 -1
  220. package/assets/esri/core/workers/chunks/59c22bab85f9cdbb9948.js +0 -1
  221. package/assets/esri/core/workers/chunks/5dfeefee96659832398a.js +0 -1
  222. package/assets/esri/core/workers/chunks/6c746ac4bd2e57b8cb41.js +0 -1
  223. package/assets/esri/core/workers/chunks/6d72a1bdc2664df62c4c.js +0 -1
  224. package/assets/esri/core/workers/chunks/7085b4c655a19694da04.js +0 -1
  225. package/assets/esri/core/workers/chunks/777b16b76db406c99c69.js +0 -1
  226. package/assets/esri/core/workers/chunks/818a481ce579f519de1c.js +0 -1
  227. package/assets/esri/core/workers/chunks/85a280ee915010a8da3c.js +0 -1
  228. package/assets/esri/core/workers/chunks/86731e276b31453bc235.js +0 -1
  229. package/assets/esri/core/workers/chunks/87b86375f8557418dbe6.js +0 -1
  230. package/assets/esri/core/workers/chunks/8817d25c7f4cf0e6c6bd.js +0 -1
  231. package/assets/esri/core/workers/chunks/8a9b2efa0603e9fa4e8b.js +0 -1
  232. package/assets/esri/core/workers/chunks/8aa5bbf9a9b09815725a.js +0 -1
  233. package/assets/esri/core/workers/chunks/8b68a69ab8fb1679e7b2.js +0 -1
  234. package/assets/esri/core/workers/chunks/98685bd149dee1d6dc99.js +0 -1
  235. package/assets/esri/core/workers/chunks/9de673a04c70bd47047e.js +0 -1
  236. package/assets/esri/core/workers/chunks/9de9cec5c644bc452294.js +0 -1
  237. package/assets/esri/core/workers/chunks/9fb0431b0628dcb53004.js +0 -680
  238. package/assets/esri/core/workers/chunks/a2a688dd2ed4565e01ff.js +0 -1
  239. package/assets/esri/core/workers/chunks/a3ae7c41832c7a8b0570.js +0 -1
  240. package/assets/esri/core/workers/chunks/a3e86830460e52706a4d.js +0 -1
  241. package/assets/esri/core/workers/chunks/a58b8903ae17acf117d6.js +0 -1
  242. package/assets/esri/core/workers/chunks/a99ce2f12c8204ee542a.js +0 -1
  243. package/assets/esri/core/workers/chunks/ab3d1c00ef514b61ce0b.js +0 -1
  244. package/assets/esri/core/workers/chunks/ae5363956b4467208e04.js +0 -1
  245. package/assets/esri/core/workers/chunks/b24b7411a73d1da87c30.js +0 -1
  246. package/assets/esri/core/workers/chunks/b97b83159fec34f383af.js +0 -1
  247. package/assets/esri/core/workers/chunks/bec660ee2e7828f965e2.js +0 -1
  248. package/assets/esri/core/workers/chunks/c7316fd2bdb7ac9eada3.js +0 -1
  249. package/assets/esri/core/workers/chunks/ca7d4d76a6bf5a3046cd.js +0 -1
  250. package/assets/esri/core/workers/chunks/cffef41791f0cfa6c26c.js +0 -1
  251. package/assets/esri/core/workers/chunks/d26b1a9f47b4b2744c89.js +0 -1
  252. package/assets/esri/core/workers/chunks/d4a96f0402172787823a.js +0 -1
  253. package/assets/esri/core/workers/chunks/d9fcc63df008f687848a.js +0 -1
  254. package/assets/esri/core/workers/chunks/e3a4695c31d3f9d55213.js +0 -1
  255. package/assets/esri/core/workers/chunks/e65d291bab13f7f5323b.js +0 -1
  256. package/assets/esri/core/workers/chunks/eeee7421f64a52074ff4.js +0 -1
  257. package/assets/esri/core/workers/chunks/eef7e0bee19c4258ba55.js +0 -1
  258. package/assets/esri/core/workers/chunks/efaf998d18479a0380ae.js +0 -1
  259. package/assets/esri/core/workers/chunks/f0573db9a3d3e1499a7e.js +0 -1
  260. package/assets/esri/core/workers/chunks/f07722efd7fa2b75d4dd.js +0 -1
  261. package/assets/esri/core/workers/chunks/f137e544076482e348ad.js +0 -1
  262. package/assets/esri/core/workers/chunks/fd53ef66176ae164e221.js +0 -1
  263. package/assets/esri/core/workers/chunks/fd956a58787020d610af.js +0 -1
  264. package/rest/sharedTemplates/addSharedTemplates.js +0 -2
  265. package/support/featureFlags.js +0 -2
  266. package/views/2d/engine/webgl/ClippingInfo.js +0 -2
  267. package/views/2d/engine/webgl/Mesh2D.js +0 -2
  268. package/views/2d/engine/webgl/shaderGraph/GLSLShaderModule.js +0 -2
  269. package/views/2d/layers/features/ProcessorTileMessageQueue.js +0 -2
  270. package/views/3d/support/AsyncWorkerQueue.js +0 -2
  271. package/views/3d/webgl-engine/lib/PathGeometryData.js +0 -2
  272. package/widgets/BatchAttributeForm/templates/support/contingentValuesUtils.js +0 -2
  273. package/widgets/OrientedImageryViewer/components/NavigationAction.js +0 -2
  274. package/widgets/OrientedImageryViewer/components/NavigationActions.js +0 -2
  275. package/widgets/OrientedImageryViewer/support/NonPanoramicMediaCollection.js +0 -2
  276. package/widgets/PanoramicViewer/support/PanoramicMediaCollection.js +0 -2
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../../Graphic.js";import i from"../../../request.js";import{isSome as r}from"../../../core/arrayUtils.js";import{result as s,forEach as o}from"../../../core/asyncUtils.js";import"../../../core/has.js";import n from"../../../core/Logger.js";import{destroyMaybe as a,abortMaybe as d}from"../../../core/maybe.js";import{estimateNumberArrayMemory as l,baseObjectMemory as u,estimateNumberMemory as h,estimateFixedArrayMemory as p,baseArrayMemory as c}from"../../../core/memoryEstimations.js";import{isAbortError as _,allSettledValues as m,throwIfAborted as g}from"../../../core/promiseUtils.js";import{initial as f,watch as y,sync as b,syncAndInitial as w}from"../../../core/reactiveUtils.js";import{pt2px as P}from"../../../core/screenUtils.js";import{isArrayBuffer as N}from"../../../core/typedArrayUtil.js";import{property as v,subclass as x}from"../../../core/accessorSupport/decorators.js";import{add as C,dot as S,copy as I}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{clone as A}from"../../../core/libs/gl-matrix-2/factories/vec3f32.js";import{create as R,fromValues as j}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import Q from"../../../geometry/Extent.js";import V from"../../../geometry/Point.js";import{projectBoundingSphere as k}from"../../../geometry/projection/projectBoundingSphere.js";import{projectVectorToVector as F}from"../../../geometry/projection/projectVectorToVector.js";import{create as E,fromMinMax as O}from"../../../geometry/support/aaBoundingBox.js";import{create as L,fromNormalAndOffset as D}from"../../../geometry/support/plane.js";import{Sphere as U}from"../../../geometry/support/sphere.js";import W from"../../../layers/graphics/OptimizedGeometry.js";import{QueryEngine as G}from"../../../layers/graphics/data/QueryEngine.js";import M from"../../../layers/support/CodedValue.js";import z from"../../../layers/support/CodedValueDomain.js";import{unpackFieldNames as q}from"../../../layers/support/fieldUtils.js";import H from"../../../rest/support/FeatureSet.js";import T from"../../../rest/support/Query.js";import{getElevationOffset as B}from"../../../support/elevationInfoUtils.js";import{LayerView3D as $}from"./LayerView3D.js";import{PointCloudLayerViewPerformanceInfo as J,QueuePerformanceInfo as Z}from"./PointCloudLayerViewPerformanceInfo.js";import{PointCloudWorkerHandle as Y}from"./PointCloudWorkerHandle.js";import{I3SQueryFeatureStore as X}from"./i3s/I3SQueryFeatureStore.js";import{checkPointCloudLayerValid as K,checkPointCloudLayerCompatibleWithView as ee}from"./i3s/I3SUtil.js";import{nodeDiff as te,sortFrontToBack as ie,splitWorkEntries as re}from"./i3s/LoDUtil.js";import{PagedNodeIndex as se}from"./i3s/PagedNodeIndex.js";import{PointCloudGraphic as oe}from"./i3s/PointCloudGraphic.js";import{PointCloudRenderer as ne}from"./i3s/PointCloudRenderer.js";import{isPointRendererNode as ae,PointCloudRendererNode as de}from"./i3s/PointCloudRendererNode.js";import{getSplatSizeAlgorithm as le,getFixedSizeAlgorithm as ue,getRendererInfo as he,getFilterInfo as pe,rendererUsesFixedSizes as ce,getAttributeInfo as _e}from"./i3s/PointCloudRendererUtil.js";import{getAttributeValues as me,readGeometry as ge,elevationFromPositions as fe}from"./i3s/PointCloudWorkerUtil.js";import{normalizeHighlightTarget as ye,emptyHighlightHandle as be}from"./support/highlightUtils.js";import{PopupSceneLayerView as we}from"./support/PopupSceneLayerView.js";import{projectToBoundingBox as Pe}from"../support/extentUtils.js";import{computeMapPointFromVec3d as Ne}from"../support/hitTest.js";import{Obb as ve}from"../support/orientedBoundingBox.js";import{updatingProgress as xe}from"../support/updatingProperties.js";import Ce from"../../layers/LayerView.js";import{PointCloudLayerViewMixin as Se}from"../../layers/PointCloudLayerView.js";import{getHighlightName as Ie}from"../../support/highlightOptionsUtils.js";import{isInEffectiveScaleRange as Ae}from"../../support/layerViewUtils.js";import{PromiseQueue as Re}from"../../support/PromiseQueue.js";import{TaskPriority as je}from"../../support/Scheduler.js";const Qe=8,Ve=L();let ke=class extends(Se(we($(Ce)))){constructor(){super(...arguments),this.type="point-cloud-3d",this.maximumPointCount=4e6,this.slicePlaneEnabled=!1,this._renderer=null,this._rendererAdded=!1,this._renderedNodes=new Set,this._updateViewNeeded=!0,this._lodFactor=1,this._maxLoggedBoxWarnings=5,this._pageMultiplier=1,this._nodeLoadEpoch=0,this._indexQueue=[],this._workQueue=new Array,this._idleQueue=new Re,this._loadingPages=new Map,this._loadingNodes=new Map,this._recalcWork=!0,this._layerIsVisible=!1,this._codedDomainPopulationPromise=null,this._codedDomainPopulationAbortController=null,this._totalWork=0,this._index=null,this._loadingInitNodePage=!1,this._nodeIdArray=[],this.ignoresMemoryFactor=!1}get baseUrl(){return this.layer.parsedUrl?.path??""}get pointScale(){const e=le(this.layer?.renderer),t=1;return null!=e?.scaleFactor?e.scaleFactor:t}get useRealWorldSymbolSizes(){const e=ue(this.layer?.renderer),t=!1;return null!=e?.useRealWorldSymbolSizes?e.useRealWorldSymbolSizes:t}get pointSize(){const e=ue(this.layer?.renderer),t=0;return null!=e?.size?e.size:t}get inverseDensity(){const e=96;return this.layer?.renderer?1*e/this.layer.renderer.pointsPerInch:5}get availableFields(){const e=he(this.layer),t=new Set;e.primaryAttribute&&t.add(e.primaryAttribute.name),e.modulationAttribute&&t.add(e.modulationAttribute.name);const i=pe(this.layer);if(i)for(const r of i)r.attributeInfo&&t.add(r.attributeInfo.name);if(this.layer.outFields)for(const r of q(this.layer.fieldsIndex,this.layer.outFields))t.add(r);return Array.from(t)}get _clippingBox(){if(!this.view||!this.view.clippingArea)return null;const e=E(),t=this.view.renderSpatialReference;return Pe(this.view.clippingArea,e,t)?e:null}get _elevationOffset(){const e=this.layer&&this.layer.elevationInfo;return"absolute-height"===e?.mode?B(e,this.layer.spatialReference):0}get _graphicOrigin(){return this.layer.graphicOrigin}initialize(){const e=this.view.resourceController,t=De(e);this._worker=new Y(t),this.addResolvingPromise(this._worker.promise),this.addResolvingPromise(this.layer.rootPagePromise),K(this.layer),ee(this.layer,this.view),this._initRenderer();const i=this._initNodePages(),r=this.view.resourceController.memoryController;this._memCache=r.newCache(`pcl-${this.layer.uid}`),this._queryFeaturesCache=r.newCache(`pcl-query-features-${this.layer.uid};`),this._updatingHandles.add(()=>this._clippingBox,()=>this._setUpdateViewNeeded(),f),this._updatingHandles.add(()=>this._elevationOffset,()=>this._elevationOffsetChanged(),f),this._updatingHandles.add(()=>this.layer.renderer,()=>this._rendererChanged(),f),this._updatingHandles.add(()=>this.layer.filters,()=>this._reload(),f),this._updatingHandles.add(()=>this.layer.outFields,()=>this._reload(),f),this._updatingHandles.add(()=>this.layer.effectiveScaleRange,()=>this._setUpdateViewNeeded()),this._updatingHandles.add(()=>this.view.state.contentCamera,()=>this._setUpdateViewNeeded()),this.addHandles([y(()=>this.view.quality,()=>this._setUpdateViewNeeded(),b)]),this.addResolvingPromise(i),this.when(()=>{this.addHandles([e.scheduler.registerTask(je.POINT_CLOUD_LAYER,this),y(()=>2===this.view.state.mode,()=>this._setUpdateViewNeeded(),w),this._updatingHandles.add(()=>this.suspended,e=>{e?this._clearNodeState():this._setUpdateViewNeeded()},f)])},()=>{this._updatingHandles.removeAll(),this.removeAllHandles()})}_setUpdateViewNeeded(){this._updateViewNeeded=!0,this._updateLoading()}destroy(){this.cancelLoading(),this._worker=a(this._worker),this._destroyRenderer(),this._memCache=a(this._memCache),this._queryFeaturesCache=a(this._queryFeaturesCache),this._queryEngine=a(this._queryEngine),this._codedDomainPopulationAbortController=d(this._codedDomainPopulationAbortController),this._codedDomainPopulationPromise=null}_initRenderer(){this._renderer=new ne({createGraphic:(e,t,i)=>this._createGraphic(e,t,i)}),this._renderer.layerViewUid=this.uid,this._updatingHandles.add(()=>this._clippingBox,e=>this._renderer.clippingBox=e,f),this._updatingHandles.add(()=>this.suspended,e=>this._setPointsVisible(!e),f),this._updatingHandles.add(()=>this.pointScale,e=>this._renderer.scaleFactor=e,f),this._renderer.minSizePx=Math.sqrt(2),this._updatingHandles.add(()=>this.useRealWorldSymbolSizes,e=>this._renderer.useRealWorldSymbolSizes=e,f),this._updatingHandles.add(()=>this.pointSize,e=>{const t=P(e);this._renderer.size=e,this._renderer.sizePx=t},f),this._updatingHandles.add(()=>this.slicePlaneEnabled,e=>this._renderer.slicePlaneEnabled=e,f),this._updatingHandles.add(()=>this.inverseDensity,()=>this._setUpdateViewNeeded(),f),this._updatingHandles.add(()=>this.maximumPointCount,()=>this._setUpdateViewNeeded(),f),this._updatingHandles.add(()=>this.view.qualitySettings.sceneService.pointCloudLoDFactor,e=>{this._lodFactor=e,this._setUpdateViewNeeded()},f)}_destroyRenderer(){this._renderer.removeAll(),this._setPointsVisible(!1)}_createGraphic(e,t,i,r){const s=null!=e.pointIdFilterMap?e.pointIdFilterMap[t]:t,o=i?"declaredClass"in i?i:Ne(this.view,i):null;return r??=this._createGraphicAttributes(e,s),new oe({pointCloudMetadata:{nodeId:e.id,pointIndexInNode:t,attributePointIndexInNode:s,epoch:this._nodeLoadEpoch},geometry:o,attributes:r,layer:this.layer,sourceLayer:this.layer,origin:this._graphicOrigin})}_createGraphicAttributes(e,t){const i={};for(const r of e.attributes)this._encodeGraphicAttribute(r.attributeInfo,r.values,t,i);return i}_getGraphicAttribute(e,t,i){const r=e.storageInfo?.attributeValues,s=r?.valuesPerElement??1;if(1===s)return t[i];if("UInt8"===r?.valueType&&s<=4){let e=0;const r=i*s;for(let i=r;i<r+s;i++)e=(e<<8)+t[i];return e}}_encodeGraphicAttribute(e,t,i,r){r[e.name]=this._getGraphicAttribute(e,t,i)}_setPointsVisible(e){e&&!this._rendererAdded?(this.view.stage.addRenderPlugin(this._renderer),this._rendererAdded=!0):!e&&this._rendererAdded&&(this.view.stage.removeRenderPlugin(this._renderer),this._rendererAdded=!1)}_rendererChanged(){this._renderer.useFixedSizes=ce(this.layer.renderer),this._reload()}_reload(){this._clearNodeState(),this._memCache.clear(),this._setUpdateViewNeeded()}_elevationOffsetChanged(){this._clearNodeState(),this._memCache.clear(),this._initNodePages().catch(()=>{})}_displayNodes(e){this._workQueue=te([...this._renderedNodes],e,this._index),ie(this._workQueue,this.view.state.contentCamera.viewForward,this._index),re(this._workQueue,Qe,this._index),this._updateQueues(),this._totalWork=this._computeWork(),this._updateLoading(),this._layerIsVisible=e.length>0||this._loadingInitNodePage,this.notifyChange("suspended")}cancelLoading(){this._cancelNodeLoading(),this._cancelIndexLoading()}_cancelNodeLoading(){[...this._loadingNodes.values()].forEach(e=>e.abort()),this._workQueue=[],this._idleQueue.cancelAll(),this._totalWork=this._computeWork(),this._updateLoading()}_updateQueues(){const e=new Set;this._workQueue.forEach(t=>t.load.forEach(t=>e.add(t)));const t=new Array;this._loadingNodes.forEach((i,r)=>{e.has(r)||(this._loadingNodes.delete(r),t.push(i))}),t.forEach(e=>e.abort()),this._workQueue=this._workQueue.filter(e=>{for(const t of e.load)if(this._loadingNodes.has(t))return this._recalcWork=!0,!1;return!0}),this._totalWork=this._computeWork(),this._updateLoading()}_cancelIndexLoading(){this._indexQueue=[],this._loadingPages.forEach(e=>e.abort()),this._loadingPages.clear(),this._totalWork=this._computeWork(),this._updateLoading()}_clearNodeState(){this._nodeLoadEpoch++,this._renderedNodes.forEach(e=>this._removeFromRenderer(e)),this._cancelNodeLoading()}get readyToRun(){return this.suspended?this._updateViewNeeded:this._updateViewNeeded||this._indexQueue.length>0||this._workQueue.length>0||this._idleQueue.readyToRun}runTask(e){if(this.suspended){if(this._updateViewNeeded){this._updateViewNeeded=!1;const e=this._isRootNodeVisible();e!==this._layerIsVisible&&(this._layerIsVisible=e,this.notifyChange("suspended")),this._updateLoading()}}else{for(e.run(()=>this._updateWorkQueues());this._indexQueue.length>0&&!e.done;)this._processIndexQueue(),e.madeProgress();this._processWorkQueue(e),this._idleQueue.runTask(e)}}async _processIndexQueue(){const e=this._indexQueue.shift(),t=new AbortController;this._loadingPages.set(e,t);try{const i=await this._loadNodePage(e,t.signal);this._index.addPage(e,i,this._elevationOffset),this._setUpdateViewNeeded(),this._loadingPages.delete(e)}catch(i){this._loadingPages.get(e)===t&&this._loadingPages.delete(e)}}_processWorkQueue(e){for(;!e.done;){const t=this._scheduleWorkEntry();if(null==t)return void e.madeProgress();this._processWorkEntry(t),e.madeProgress()}}_scheduleWorkEntry(){let e=this._workQueue.length;for(;e--;){const e=this._workQueue.shift();if(!e.remove.find(e=>!this._renderedNodes.has(e)))return e;this._workQueue.push(e)}return null}async _processWorkEntry(e){if(0===e.load.length){for(const t of e.remove)this._removeFromRenderer(t);return}const t=e.load.map(e=>{const t=new AbortController;return this._loadingNodes.set(e,t),t});this._updateLoading();try{const i=await Promise.all(e.load.map((e,i)=>this._memCache.pop(`${e}`)??this._loadNode(e,t[i].signal)));for(let t=0;t<e.load.length;t++)if(i[t]){const r=this._setupRendererData(e.load[t],i[t]);this._addToRenderer(r)}for(const t of e.remove)this._removeFromRenderer(t);for(const t of e.load)this._loadingNodes.delete(t)}catch(i){e.load.forEach((e,i)=>{this._loadingNodes.get(e)===t[i]&&this._loadingNodes.delete(e)})}this._updateLoading(),this._recalcWork&&!this._idleQueue.updating&&0===this._indexQueue.length&&0===this._loadingNodes.size&&(this._recalcWork=!1,this._setUpdateViewNeeded())}async _populateClassCodeCodedDomain(e,t){const i="CLASS_CODE",r=this.layer.fieldsIndex.get(i);if(!r||r.domain)return;if(!e.includes(r.name))return;const o=await s(this.layer.queryCachedStatistics(i,{signal:t}));if(!1===o.ok)return;const n=o.value?.stats?.labels?.labels;n&&Array.isArray(n)&&(r.domain=new z({name:"CLASS_CODE",codedValues:n.map(e=>new M({code:e.value,name:e.label}))}))}async prepareFetchPopupFeatures(e){return this._codedDomainPopulationPromise||(this._codedDomainPopulationAbortController=new AbortController,this._codedDomainPopulationPromise=this._populateClassCodeCodedDomain(e,this._codedDomainPopulationAbortController.signal).then(()=>{this._codedDomainPopulationAbortController=null})),this._codedDomainPopulationPromise}async whenGraphicAttributes(e,t){const i=this._splitGraphicsPerNode(e),s=this.layer.attributeStorageInfo,n=t.map(e=>_e(s,e)).filter(r),a=async(e,t)=>{const i=this._index.getNode(t);await o(n,async t=>{const r=t.useElevation?await this._loadElevationAttributeFromGeometry(i.resourceId):await this._loadAndParseAttribute(i,t);if(r)for(const i of e)if(this._isValidPointGraphic(i)){const e=i.pointCloudMetadata.attributePointIndexInNode;this._encodeGraphicAttribute(t,r,e,i.attributes)}})},d=[];return i.forEach((e,t)=>{d.push(a(e,t))}),await Promise.allSettled(d),e}_isValidPointGraphic(e){return e instanceof oe&&e.pointCloudMetadata?.epoch===this._nodeLoadEpoch}_splitGraphicsPerNode(e){const t=new Map;for(const i of e){if(!this._isValidPointGraphic(i))continue;const e=i.pointCloudMetadata,r=t.get(e.nodeId);r?r.push(i):t.set(e.nodeId,[i])}return t}async _loadAndParseAttribute(e,t){const i=await this._loadAttribute(e.resourceId,t,null);return i?me({attributeInfo:t,buffer:i},null,e.vertexCount):null}async _loadElevationAttributeFromGeometry(e){const t=this.layer.store.defaultGeometrySchema,i=ge(t,await this._loadGeometry(e,null));return fe(i,i.length/3)}highlight(e,i){const r=ye(e);if(0===r.length)return be;if(!(r[0]instanceof t))return be;const s=r;return this._renderer.highlight(s.map(e=>this._graphicToPointDefinition(e)),Ie(i))}_graphicToPointDefinition(e){if(!this._isValidPointGraphic(e))return null;const{nodeId:t,pointIndexInNode:i}=e.pointCloudMetadata;return null!=t&&null!=i?{nodeId:t,pointId:i}:null}_computeWork(){let e=0;for(const t of this._workQueue)e+=t.load.length+t.remove.length;return e+=this._loadingNodes.size,e+=(this._indexQueue.length+this._loadingPages.size)*this._index.pageSize,e+=this._loadingInitNodePage?100:0,e+=this._updateViewNeeded?100:0,e}get updatingProgressValue(){if(this.suspended)return this._updateViewNeeded?0:1;const e=this._computeWork();return 1-Math.min(this._totalWork,e)/this._totalWork}_updateLoading(){this.notifyChange("updating"),this.notifyChange("updatingProgressValue")}canResume(){return super.canResume()&&this._layerIsVisible}isUpdating(){return this.suspended?this._updateViewNeeded:this._computeWork()>0}get visibleAtCurrentScale(){return Ae(this.layer.effectiveScaleRange,this.view.scale)}async queryFeatures(e,i){const r=await this._ensureQueryEngine().executeQuery(this._ensureQueryJSON(e),i?.signal),s=r.features;r.features=[];const o=H.fromJSON(r),n=this.view.spatialReference;return o.features=s.map(e=>{const{attributes:i,metadata:r}=e;if(!r){const i=t.fromJSON(e);return i.geometry&&(i.geometry.spatialReference=o.spatialReference??n),i.layer=this.layer,i.sourceLayer=this.layer,i.origin=this._graphicOrigin,i}const s=e.geometry?V.fromJSON(e.geometry):void 0;return s&&(s.spatialReference=o.spatialReference??n),this._createGraphic(r.node,r.pointId,s,i)}),o}createQuery(){const e={outFields:["*"],returnGeometry:!0,outSpatialReference:this.view.spatialReference,returnZ:!0};return new T(e)}async queryFeatureCount(e,t){return await this._ensureQueryEngine().executeQueryForCount(this._ensureQueryJSON(e),t?.signal)}async queryExtent(e,t){const{count:i,extent:r}=await this._ensureQueryEngine().executeQueryForExtent(this._ensureQueryJSON(e),t?.signal);return{count:i,extent:Q.fromJSON(r)}}_ensureQueryJSON(e){return null==e?new T({outSpatialReference:this.view.spatialReference}).toJSON():T.from(e).toJSON()}_ensureQueryEngine(){if(this._queryEngine)return this._queryEngine;const{spatialReference:e}=this.view;return this._queryEngine=new G({fieldsIndex:this.layer.fieldsIndex.toJSON(),geometryType:"esriGeometryPoint",spatialReference:e,featureIdInfo:{type:"object-id",fieldName:"objectId"},hasZ:!0,featureStore:new X({sourceSpatialReference:e,viewSpatialReference:e,forAllFeatures:(e,t)=>{this._renderer.forEachNode(i=>{if(t){const e=i.obb,r=new U(e.getCenter(R()),e.radius);k(r,this.view.renderSpatialReference,r,this.view.spatialReference);if(1===t(r))return}let r=this._queryFeaturesCache.get(`${i.id}`);r||(r=this._createQueryPointFeatures(i),this._queryFeaturesCache.put(`${i.id}`,r)),r.features.forEach(e)})},getFeatureExtent:({point:e},t)=>O(e,e,t),featureAdapter:{cloneWithGeometry:(e,t,i)=>new Ee(e.node,e.pointId,t.coords),getAttribute:({node:e,attributePointId:t},i)=>{for(const r of e.attributes)if(r.attributeInfo.name===i)return this._getGraphicAttribute(r.attributeInfo,r.values,t)},getAttributes:({node:e,attributePointId:t})=>this._createGraphicAttributes(e,t),getCentroid:e=>e.getGeometry(),getGeometry:e=>e.getGeometry(),getObjectId:()=>{},getMetadata:e=>e}})}),this._queryEngine}_createQueryPointFeatures(e){const t=e.coordinates,i=new Array;for(let r=0;r<t.length/3;r++){const s=3*r,o=j(t[s+0],t[s+1],t[s+2]);C(o,o,e.origin),F(o,this.view.renderSpatialReference,o,this.view.spatialReference);const n=new Ee(e,r,o);i.push(n)}return new Oe(i)}async _initNodePages(){const e=this.layer.store.index,t=e.nodesPerPage||e.nodePerIndexBlock;this._index=new se(this.layer.spatialReference,this.view.renderCoordsHelper.spatialReference,t),this._cancelIndexLoading(),this._traverseVisible=this._index.createVisibilityTraverse(),this._loadingInitNodePage=!0,this._layerIsVisible=!0,this.notifyChange("suspended"),this._updateLoading(),this._pageMultiplier=null!=e.nodesPerPage?1:e.nodePerIndexBlock;const i=await this.layer.rootPagePromise;this._loadingInitNodePage=!1,i?(this._index.addPage(0,this._processJSONNodes(i,0),this._elevationOffset),this._setUpdateViewNeeded()):n.getLogger(this).error("Point cloud layer root page not loaded")}_loadNodePage(e,t){const i=`${this.baseUrl}/nodepages/${e*this._pageMultiplier}`;return this._requestNodePage(i,t).then(t=>this._processJSONNodes(t,e))}_processJSONNodes(e,t){const i=t*this._index.pageSize;return e.nodes.map((e,t)=>({resourceId:e.resourceId??i+t,obb:ve.fromJSON(e.obb),obbInRenderSR:new ve,firstChild:e.firstChild,childCount:e.childCount,vertexCount:e.vertexCount??e.pointCount,lodThreshold:e.lodThreshold??e.effectiveArea}))}_updateWorkQueues(){if(!this._updateViewNeeded)return!1;const e=this.view.quality;let t=this.inverseDensity/this._lodFactor*e;const i=this.maximumPointCount*this._lodFactor*e;let r=this._computeNodesForMinimumDensity(t),s=this._computePointCount(r),o=Math.sqrt(s/(.75*i));for(;s>i;)t*=o,r=this._computeNodesForMinimumDensity(t),s=this._computePointCount(r),o=Math.sqrt(2);return this._displayNodes(r),this._updateViewNeeded=!1,this._updateLoading(),!0}_computePointCount(e){let t=0;for(let i=0;i<e.length;i++){const r=this._index.getNode(e[i]);r&&(t+=r.vertexCount)}return t}_isRootNodeVisible(){let e=!1;return this._traverseVisible({frustum:this.view.state.contentCamera.frustum,clippingBox:this._clippingBox},{predicate:(t,i,r)=>(e=r,!1),pageMiss:()=>{}}),e}_computeNodesForMinimumDensity(e){const t=this.view.state.contentCamera,i=t.frustum,r=this._clippingBox,s=t.viewForward,o=S(s,t.eye),n=D(s,-o,Ve),a=t.perScreenPixelRatio/2,d=e*e,l=this._nodeIdArray;l.length=0;const u=e=>l.push(e);return this._traverseVisible({frustum:i,clippingBox:r},{predicate:(e,t,i)=>{if(!i)return!1;if(0===t.childCount)return u(e),!1;const r=this._index.getRenderObb(e);return!(this._computeAveragePixelArea(r,t.lodThreshold,t.vertexCount,n,a)<=d)||(u(e),!1)},pageMiss:(e,t)=>{u(e),this._indexQueue.includes(t)||this._indexQueue.push(t)}}),l}_computeAveragePixelArea(e,t,i,r,s){const o=1e-7,n=Math.max(o,e.signedDistanceRangePlane(r).min);return t/(n*n)/(4*s*s)/i}_loadNode(e,t){try{return this._loadNodeAsync(e,t)}catch(i){throw _(i)||n.getLogger(this).error(i),i}}async _loadAdditionalUserAttributes(e,t,i){const s=this.layer.outFields;if(!s)return[];const o=q(this.layer.fieldsIndex,s),n=new Set(e.map(e=>null!=e?e.name:null)),a=this.layer.attributeStorageInfo,d=[];for(const r of o){if(n.has(r))continue;const e=_e(a,r);e&&d.push(t(e))}const l=await m(d);return g(i),l.filter(r)}async _loadNodeAsync(e,t){const i=this._index.getNode(e),r=he(this.layer),s=pe(this.layer),o=i.resourceId,n=async e=>{if(!e)return null;if(e.useElevation)return{attributeInfo:e,buffer:null};const i=await this._loadAttribute(o,e,t);return null!=i?{attributeInfo:e,buffer:i}:null};return this._idleQueue.push(async()=>{const i=this._loadGeometry(o,t),{primaryAttribute:a,modulationAttribute:d}=r,l=n(a),u=n(d),h=s.map(e=>e.attributeInfo),p=h.map(e=>n(e)),c=this._loadAdditionalUserAttributes([a,d,...h],n,t),[_,m,f,y,b]=await Promise.all([i,l,u,Promise.all(p),c]);g(t);const w={geometryBuffer:_,primaryAttributeData:m,modulationAttributeData:f,filterAttributesData:y,userAttributesData:b,schema:this.layer.store.defaultGeometrySchema,rendererInfo:r,filterInfo:s,obbData:this._index.getRenderObb(e).data,elevationOffset:this._elevationOffset,inSR:this.layer.spatialReference.toJSON(),outSR:this.view.renderCoordsHelper.spatialReference.toJSON()};return this._worker.invoke(w,t)},t)}async _loadGeometry(e,t){return this._requestData(`${this.baseUrl}/nodes/${e}/geometries/0`,t)}async _loadAttribute(e,t,i){if(!t?.storageInfo)return null;const r=t.storageInfo.key;return this._requestData(`${this.baseUrl}/nodes/${e}/attributes/${r}`,i)}async _requestNodePage(e,t){const r={useQueue:!1,query:{f:"json",...this.layer.customParameters,token:this.layer.apiKey},responseType:"json",signal:t};return(await i(e,r)).data}async _requestData(e,t){const r={useQueue:!1,query:{...this.layer.customParameters,token:this.layer.apiKey},responseType:"array-buffer",signal:t};return(await i(e,r)).data}_removeFromRenderer(e){if(this._renderedNodes.has(e)){const t=this._renderer.removeNode(e);this._renderedNodes.delete(e),this._memCache.put(`${t.id}`,t)}}_addToRenderer(e){this._renderedNodes.has(e.id)||(this._renderedNodes.add(e.id),this._renderer.addNode(e))}_setupRendererData(e,t){const i=this._index.getNode(e),r=Math.sqrt(i.lodThreshold/i.vertexCount),s=this._index.getRenderObb(e);if(ae(t))return t.splatSize=r,t.obb=s,I(t.origin,t.obb.getCenter(R())),t;const o=ve.fromData(t.obbData),{halfSizeX:a,halfSizeY:d,halfSizeZ:l}=o,{halfSizeX:u,halfSizeY:h,halfSizeZ:p}=s,c=.01*Math.max(u,h,p);if(a>u+c||d>h+c||l>p+c){if(this._maxLoggedBoxWarnings>0){const t=e=>`[${e.halfSizeX}, ${e.halfSizeY}, ${e.halfSizeZ}]`;n.getLogger(this).warn(`Node ${e} reported bounding box too small. got ${t(s)} but points cover ${t(o)}`),0===--this._maxLoggedBoxWarnings&&n.getLogger(this).warn(" Too many bounding box errors, stopping reporting for this layer.")}this._index.setRenderObb(e,o)}return new de(e,r,A(s.getCenter(R())),s,0===i.childCount,t.points,t.rgb,t.attributes,t.pointIdFilterMap)}get usedMemory(){let e=0;return this._renderer.forEachNode(t=>{e+=Le,e+=l(t.coordinates);for(const i of t.attributes){const t=i.values;N(t.buffer)&&(e+=l(t))}}),e}get unloadedMemory(){const e=this._renderedNodes.size;if(e<4)return 0;const t=[...this._renderedNodes].reduce((e,t)=>e+this._index.getNode(t).vertexCount);let i=this._loadingNodes.size;for(let r=0;r<this._workQueue.length;r++)i+=this._workQueue[r].load.length,i-=this._workQueue[r].remove.length;if(i<0)return 0;return i*t/e*((this.usedMemory-e*Le)/t)+i*Le}get performanceInfo(){return new J(this.usedMemory,this._renderedNodes.size,[...this._renderedNodes].reduce((e,t)=>e+this._index.getNode(t).vertexCount,0),this.maximumPointCount,new Z(this._loadingNodes.size,this._indexQueue.length,this._workQueue.length,this._idleQueue.length))}get test(){}};e([v()],ke.prototype,"layer",void 0),e([v()],ke.prototype,"baseUrl",null),e([v()],ke.prototype,"pointScale",null),e([v()],ke.prototype,"useRealWorldSymbolSizes",null),e([v()],ke.prototype,"pointSize",null),e([v()],ke.prototype,"inverseDensity",null),e([v()],ke.prototype,"maximumPointCount",void 0),e([v({readOnly:!0})],ke.prototype,"availableFields",null),e([v({readOnly:!0})],ke.prototype,"_clippingBox",null),e([v({readOnly:!0})],ke.prototype,"_elevationOffset",null),e([v({type:Boolean})],ke.prototype,"slicePlaneEnabled",void 0),e([v()],ke.prototype,"_graphicOrigin",null),e([v()],ke.prototype,"updating",void 0),e([v(xe)],ke.prototype,"updatingProgress",void 0),e([v({readOnly:!0})],ke.prototype,"updatingProgressValue",null),e([v({readOnly:!0})],ke.prototype,"visibleAtCurrentScale",null),ke=e([x("esri.views.3d.layers.PointCloudLayerView3D")],ke);const Fe=ke;class Ee{constructor(e,t,i){this.node=e,this.pointId=t,this.point=i}getGeometry(){return new W([],Array.from(this.point),!0,!1)}get attributePointId(){const{node:e,pointId:t}=this;return null!=e.pointIdFilterMap?e.pointIdFilterMap[t]:t}get usedMemory(){return u+u+h+p(this.point,h)}}class Oe{constructor(e){this.features=e}get usedMemory(){return this.features.reduce((e,t)=>e+t.usedMemory,u+c)}}const Le=160;function De(e){return t=>e.immediate.schedule(t)}export{Fe as default};
2
+ import{__decorate as e}from"tslib";import t from"../../../Graphic.js";import i from"../../../request.js";import{isSome as r}from"../../../core/arrayUtils.js";import{result as s,forEach as o}from"../../../core/asyncUtils.js";import"../../../core/has.js";import n from"../../../core/Logger.js";import{destroyMaybe as a,abortMaybe as d}from"../../../core/maybe.js";import{estimateNumberArrayMemory as l,baseObjectMemory as u,estimateNumberMemory as h,estimateFixedArrayMemory as p,baseArrayMemory as c}from"../../../core/memoryEstimations.js";import{isAbortError as _,allSettledValues as m,throwIfAborted as g}from"../../../core/promiseUtils.js";import{initial as f,watch as y,sync as b,syncAndInitial as w}from"../../../core/reactiveUtils.js";import{pt2px as P}from"../../../core/screenUtils.js";import{isArrayBuffer as N}from"../../../core/typedArrayUtil.js";import{property as v,subclass as x}from"../../../core/accessorSupport/decorators.js";import{add as C,dot as S,copy as I}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{clone as A}from"../../../core/libs/gl-matrix-2/factories/vec3f32.js";import{create as R,fromValues as j}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import Q from"../../../geometry/Extent.js";import V from"../../../geometry/Point.js";import{projectBoundingSphere as k}from"../../../geometry/projection/projectBoundingSphere.js";import{projectVectorToVector as F}from"../../../geometry/projection/projectVectorToVector.js";import{create as E,fromMinMax as O}from"../../../geometry/support/aaBoundingBox.js";import{create as L,fromNormalAndOffset as D}from"../../../geometry/support/plane.js";import{Sphere as U}from"../../../geometry/support/sphere.js";import W from"../../../layers/graphics/OptimizedGeometry.js";import{QueryEngine as G}from"../../../layers/graphics/data/QueryEngine.js";import M from"../../../layers/support/CodedValue.js";import z from"../../../layers/support/CodedValueDomain.js";import{unpackFieldNames as q}from"../../../layers/support/fieldUtils.js";import H from"../../../rest/support/FeatureSet.js";import T from"../../../rest/support/Query.js";import{getElevationOffset as B}from"../../../support/elevationInfoUtils.js";import{LayerView3D as $}from"./LayerView3D.js";import{PointCloudLayerViewPerformanceInfo as J,QueuePerformanceInfo as Z}from"./PointCloudLayerViewPerformanceInfo.js";import{PointCloudWorkerHandle as Y}from"./PointCloudWorkerHandle.js";import{I3SQueryFeatureStore as X}from"./i3s/I3SQueryFeatureStore.js";import{checkPointCloudLayerValid as K,checkPointCloudLayerCompatibleWithView as ee}from"./i3s/I3SUtil.js";import{nodeDiff as te,sortFrontToBack as ie,splitWorkEntries as re}from"./i3s/LoDUtil.js";import{PagedNodeIndex as se}from"./i3s/PagedNodeIndex.js";import{PointCloudGraphic as oe}from"./i3s/PointCloudGraphic.js";import{PointCloudRenderer as ne}from"./i3s/PointCloudRenderer.js";import{isPointRendererNode as ae,PointCloudRendererNode as de}from"./i3s/PointCloudRendererNode.js";import{getSplatSizeAlgorithm as le,getFixedSizeAlgorithm as ue,getRendererInfo as he,getFilterInfo as pe,rendererUsesFixedSizes as ce,canUpdateRendererWithoutReload as _e,getAttributeInfo as me}from"./i3s/PointCloudRendererUtil.js";import{getAttributeValues as ge,readGeometry as fe,elevationFromPositions as ye}from"./i3s/PointCloudWorkerUtil.js";import{normalizeHighlightTarget as be,emptyHighlightHandle as we}from"./support/highlightUtils.js";import{PopupSceneLayerView as Pe}from"./support/PopupSceneLayerView.js";import{projectToBoundingBox as Ne}from"../support/extentUtils.js";import{computeMapPointFromVec3d as ve}from"../support/hitTest.js";import{Obb as xe}from"../support/orientedBoundingBox.js";import{updatingProgress as Ce}from"../support/updatingProperties.js";import Se from"../../layers/LayerView.js";import{PointCloudLayerViewMixin as Ie}from"../../layers/PointCloudLayerView.js";import{getHighlightName as Ae}from"../../support/highlightOptionsUtils.js";import{isInEffectiveScaleRange as Re}from"../../support/layerViewUtils.js";import{PromiseQueue as je}from"../../support/PromiseQueue.js";import{TaskPriority as Qe}from"../../support/Scheduler.js";const Ve=8,ke=L();let Fe=class extends(Ie(Pe($(Se)))){constructor(){super(...arguments),this.type="point-cloud-3d",this.maximumPointCount=4e6,this.slicePlaneEnabled=!1,this._renderer=null,this._rendererAdded=!1,this._renderedNodes=new Set,this._updateViewNeeded=!0,this._lodFactor=1,this._maxLoggedBoxWarnings=5,this._pageMultiplier=1,this._nodeLoadEpoch=0,this._indexQueue=[],this._workQueue=new Array,this._idleQueue=new je,this._loadingPages=new Map,this._loadingNodes=new Map,this._recalcWork=!0,this._layerIsVisible=!1,this._codedDomainPopulationPromise=null,this._codedDomainPopulationAbortController=null,this._totalWork=0,this._index=null,this._loadingInitNodePage=!1,this._nodeIdArray=[],this.ignoresMemoryFactor=!1}get baseUrl(){return this.layer.parsedUrl?.path??""}get pointScale(){const e=le(this.layer?.renderer),t=1;return null!=e?.scaleFactor?e.scaleFactor:t}get useRealWorldSymbolSizes(){const e=ue(this.layer?.renderer),t=!1;return null!=e?.useRealWorldSymbolSizes?e.useRealWorldSymbolSizes:t}get pointSize(){const e=ue(this.layer?.renderer),t=0;return null!=e?.size?e.size:t}get inverseDensity(){const e=96;return this.layer?.renderer?1*e/this.layer.renderer.pointsPerInch:5}get availableFields(){const e=he(this.layer),t=new Set;e.primaryAttribute&&t.add(e.primaryAttribute.name),e.modulationAttribute&&t.add(e.modulationAttribute.name);const i=pe(this.layer);if(i)for(const r of i)r.attributeInfo&&t.add(r.attributeInfo.name);if(this.layer.outFields)for(const r of q(this.layer.fieldsIndex,this.layer.outFields))t.add(r);return Array.from(t)}get _clippingBox(){if(!this.view||!this.view.clippingArea)return null;const e=E(),t=this.view.renderSpatialReference;return Ne(this.view.clippingArea,e,t)?e:null}get _elevationOffset(){const e=this.layer&&this.layer.elevationInfo;return"absolute-height"===e?.mode?B(e,this.layer.spatialReference):0}get _graphicOrigin(){return this.layer.graphicOrigin}initialize(){const e=this.view.resourceController,t=Ue(e);this._worker=new Y(t),this.addResolvingPromise(this._worker.promise),this.addResolvingPromise(this.layer.rootPagePromise),K(this.layer),ee(this.layer,this.view),this._initRenderer();const i=this._initNodePages(),r=this.view.resourceController.memoryController;this._memCache=r.newCache(`pcl-${this.layer.uid}`),this._queryFeaturesCache=r.newCache(`pcl-query-features-${this.layer.uid};`),this._updatingHandles.add(()=>this._clippingBox,()=>this._setUpdateViewNeeded(),f),this._updatingHandles.add(()=>this._elevationOffset,()=>this._elevationOffsetChanged(),f),this._updatingHandles.add(()=>this.layer.renderer,(e,t)=>this._rendererChanged(e,t),f),this._updatingHandles.add(()=>this.layer.filters,()=>this._reload(),f),this._updatingHandles.add(()=>this.layer.outFields,()=>this._reload(),f),this._updatingHandles.add(()=>this.layer.effectiveScaleRange,()=>this._setUpdateViewNeeded()),this._updatingHandles.add(()=>this.view.state.contentCamera,()=>this._setUpdateViewNeeded()),this.addHandles([y(()=>this.view.quality,()=>this._setUpdateViewNeeded(),b)]),this.addResolvingPromise(i),this.when(()=>{this.addHandles([e.scheduler.registerTask(Qe.POINT_CLOUD_LAYER,this),y(()=>2===this.view.state.mode,()=>this._setUpdateViewNeeded(),w),this._updatingHandles.add(()=>this.suspended,e=>{e?this._clearNodeState():this._setUpdateViewNeeded()},f)])},()=>{this._updatingHandles.removeAll(),this.removeAllHandles()})}_setUpdateViewNeeded(){this._updateViewNeeded=!0,this._updateLoading()}destroy(){this.cancelLoading(),this._worker=a(this._worker),this._destroyRenderer(),this._memCache=a(this._memCache),this._queryFeaturesCache=a(this._queryFeaturesCache),this._queryEngine=a(this._queryEngine),this._codedDomainPopulationAbortController=d(this._codedDomainPopulationAbortController),this._codedDomainPopulationPromise=null}_initRenderer(){this._renderer=new ne({createGraphic:(e,t,i)=>this._createGraphic(e,t,i)}),this._renderer.layerViewUid=this.uid,this._updatingHandles.add(()=>this._clippingBox,e=>this._renderer.clippingBox=e,f),this._updatingHandles.add(()=>this.suspended,e=>this._setPointsVisible(!e),f),this._updatingHandles.add(()=>this.pointScale,e=>this._renderer.scaleFactor=e,f),this._renderer.minSizePx=Math.sqrt(2),this._updatingHandles.add(()=>this.useRealWorldSymbolSizes,e=>this._renderer.useRealWorldSymbolSizes=e,f),this._updatingHandles.add(()=>this.pointSize,e=>{const t=P(e);this._renderer.size=e,this._renderer.sizePx=t},f),this._updatingHandles.add(()=>this.slicePlaneEnabled,e=>this._renderer.slicePlaneEnabled=e,f),this._updatingHandles.add(()=>this.inverseDensity,()=>this._setUpdateViewNeeded(),f),this._updatingHandles.add(()=>this.maximumPointCount,()=>this._setUpdateViewNeeded(),f),this._updatingHandles.add(()=>this.view.qualitySettings.sceneService.pointCloudLoDFactor,e=>{this._lodFactor=e,this._setUpdateViewNeeded()},f)}_destroyRenderer(){this._renderer.removeAll(),this._setPointsVisible(!1)}_createGraphic(e,t,i,r){const s=null!=e.pointIdFilterMap?e.pointIdFilterMap[t]:t,o=i?"declaredClass"in i?i:ve(this.view,i):null;return r??=this._createGraphicAttributes(e,s),new oe({pointCloudMetadata:{nodeId:e.id,pointIndexInNode:t,attributePointIndexInNode:s,epoch:this._nodeLoadEpoch},geometry:o,attributes:r,layer:this.layer,sourceLayer:this.layer,origin:this._graphicOrigin})}_createGraphicAttributes(e,t){const i={};for(const r of e.attributes)this._encodeGraphicAttribute(r.attributeInfo,r.values,t,i);return i}_getGraphicAttribute(e,t,i){const r=e.storageInfo?.attributeValues,s=r?.valuesPerElement??1;if(1===s)return t[i];if("UInt8"===r?.valueType&&s<=4){let e=0;const r=i*s;for(let i=r;i<r+s;i++)e=(e<<8)+t[i];return e}}_encodeGraphicAttribute(e,t,i,r){r[e.name]=this._getGraphicAttribute(e,t,i)}_setPointsVisible(e){e&&!this._rendererAdded?(this.view.stage.addRenderPlugin(this._renderer),this._rendererAdded=!0):!e&&this._rendererAdded&&(this.view.stage.removeRenderPlugin(this._renderer),this._rendererAdded=!1)}_rendererChanged(e,t){this._renderer.useFixedSizes=ce(e),_e(e,t)?this._setUpdateViewNeeded():this._reload()}_reload(){this._clearNodeState(),this._memCache.clear(),this._setUpdateViewNeeded()}_elevationOffsetChanged(){this._clearNodeState(),this._memCache.clear(),this._initNodePages().catch(()=>{})}_displayNodes(e){this._workQueue=te([...this._renderedNodes],e,this._index),ie(this._workQueue,this.view.state.contentCamera.viewForward,this._index),re(this._workQueue,Ve,this._index),this._updateQueues(),this._totalWork=this._computeWork(),this._updateLoading(),this._layerIsVisible=e.length>0||this._loadingInitNodePage,this.notifyChange("suspended")}cancelLoading(){this._cancelNodeLoading(),this._cancelIndexLoading()}_cancelNodeLoading(){[...this._loadingNodes.values()].forEach(e=>e.abort()),this._workQueue=[],this._idleQueue.cancelAll(),this._totalWork=this._computeWork(),this._updateLoading()}_updateQueues(){const e=new Set;this._workQueue.forEach(t=>t.load.forEach(t=>e.add(t)));const t=new Array;this._loadingNodes.forEach((i,r)=>{e.has(r)||(this._loadingNodes.delete(r),t.push(i))}),t.forEach(e=>e.abort()),this._workQueue=this._workQueue.filter(e=>{for(const t of e.load)if(this._loadingNodes.has(t))return this._recalcWork=!0,!1;return!0}),this._totalWork=this._computeWork(),this._updateLoading()}_cancelIndexLoading(){this._indexQueue=[],this._loadingPages.forEach(e=>e.abort()),this._loadingPages.clear(),this._totalWork=this._computeWork(),this._updateLoading()}_clearNodeState(){this._nodeLoadEpoch++,this._renderedNodes.forEach(e=>this._removeFromRenderer(e)),this._cancelNodeLoading()}get readyToRun(){return this.suspended?this._updateViewNeeded:this._updateViewNeeded||this._indexQueue.length>0||this._workQueue.length>0||this._idleQueue.readyToRun}runTask(e){if(this.suspended){if(this._updateViewNeeded){this._updateViewNeeded=!1;const e=this._isRootNodeVisible();e!==this._layerIsVisible&&(this._layerIsVisible=e,this.notifyChange("suspended")),this._updateLoading()}}else{for(e.run(()=>this._updateWorkQueues());this._indexQueue.length>0&&!e.done;)this._processIndexQueue(),e.madeProgress();this._processWorkQueue(e),this._idleQueue.runTask(e)}}async _processIndexQueue(){const e=this._indexQueue.shift(),t=new AbortController;this._loadingPages.set(e,t);try{const i=await this._loadNodePage(e,t.signal);this._index.addPage(e,i,this._elevationOffset),this._setUpdateViewNeeded(),this._loadingPages.delete(e)}catch(i){this._loadingPages.get(e)===t&&this._loadingPages.delete(e)}}_processWorkQueue(e){for(;!e.done;){const t=this._scheduleWorkEntry();if(null==t)return void e.madeProgress();this._processWorkEntry(t),e.madeProgress()}}_scheduleWorkEntry(){let e=this._workQueue.length;for(;e--;){const e=this._workQueue.shift();if(!e.remove.find(e=>!this._renderedNodes.has(e)))return e;this._workQueue.push(e)}return null}async _processWorkEntry(e){if(0===e.load.length){for(const t of e.remove)this._removeFromRenderer(t);return}const t=e.load.map(e=>{const t=new AbortController;return this._loadingNodes.set(e,t),t});this._updateLoading();try{const i=await Promise.all(e.load.map((e,i)=>this._memCache.pop(`${e}`)??this._loadNode(e,t[i].signal)));for(let t=0;t<e.load.length;t++)if(i[t]){const r=this._setupRendererData(e.load[t],i[t]);this._addToRenderer(r)}for(const t of e.remove)this._removeFromRenderer(t);for(const t of e.load)this._loadingNodes.delete(t)}catch(i){e.load.forEach((e,i)=>{this._loadingNodes.get(e)===t[i]&&this._loadingNodes.delete(e)})}this._updateLoading(),this._recalcWork&&!this._idleQueue.updating&&0===this._indexQueue.length&&0===this._loadingNodes.size&&(this._recalcWork=!1,this._setUpdateViewNeeded())}async _populateClassCodeCodedDomain(e,t){const i="CLASS_CODE",r=this.layer.fieldsIndex.get(i);if(!r||r.domain)return;if(!e.includes(r.name))return;const o=await s(this.layer.queryCachedStatistics(i,{signal:t}));if(!1===o.ok)return;const n=o.value?.stats?.labels?.labels;n&&Array.isArray(n)&&(r.domain=new z({name:"CLASS_CODE",codedValues:n.map(e=>new M({code:e.value,name:e.label}))}))}async prepareFetchPopupFeatures(e){return this._codedDomainPopulationPromise||(this._codedDomainPopulationAbortController=new AbortController,this._codedDomainPopulationPromise=this._populateClassCodeCodedDomain(e,this._codedDomainPopulationAbortController.signal).then(()=>{this._codedDomainPopulationAbortController=null})),this._codedDomainPopulationPromise}async whenGraphicAttributes(e,t){const i=this._splitGraphicsPerNode(e),s=this.layer.attributeStorageInfo,n=t.map(e=>me(s,e)).filter(r),a=async(e,t)=>{const i=this._index.getNode(t);await o(n,async t=>{const r=t.useElevation?await this._loadElevationAttributeFromGeometry(i.resourceId):await this._loadAndParseAttribute(i,t);if(r)for(const i of e)if(this._isValidPointGraphic(i)){const e=i.pointCloudMetadata.attributePointIndexInNode;this._encodeGraphicAttribute(t,r,e,i.attributes)}})},d=[];return i.forEach((e,t)=>{d.push(a(e,t))}),await Promise.allSettled(d),e}_isValidPointGraphic(e){return e instanceof oe&&e.pointCloudMetadata?.epoch===this._nodeLoadEpoch}_splitGraphicsPerNode(e){const t=new Map;for(const i of e){if(!this._isValidPointGraphic(i))continue;const e=i.pointCloudMetadata,r=t.get(e.nodeId);r?r.push(i):t.set(e.nodeId,[i])}return t}async _loadAndParseAttribute(e,t){const i=await this._loadAttribute(e.resourceId,t,null);return i?ge({attributeInfo:t,buffer:i},null,e.vertexCount):null}async _loadElevationAttributeFromGeometry(e){const t=this.layer.store.defaultGeometrySchema,i=fe(t,await this._loadGeometry(e,null));return ye(i,i.length/3)}highlight(e,i){const r=be(e);if(0===r.length)return we;if(!(r[0]instanceof t))return we;const s=r;return this._renderer.highlight(s.map(e=>this._graphicToPointDefinition(e)),Ae(i))}_graphicToPointDefinition(e){if(!this._isValidPointGraphic(e))return null;const{nodeId:t,pointIndexInNode:i}=e.pointCloudMetadata;return null!=t&&null!=i?{nodeId:t,pointId:i}:null}_computeWork(){let e=0;for(const t of this._workQueue)e+=t.load.length+t.remove.length;return e+=this._loadingNodes.size,e+=(this._indexQueue.length+this._loadingPages.size)*this._index.pageSize,e+=this._loadingInitNodePage?100:0,e+=this._updateViewNeeded?100:0,e}get updatingProgressValue(){if(this.suspended)return this._updateViewNeeded?0:1;const e=this._computeWork();return 1-Math.min(this._totalWork,e)/this._totalWork}_updateLoading(){this.notifyChange("updating"),this.notifyChange("updatingProgressValue")}canResume(){return super.canResume()&&this._layerIsVisible}isUpdating(){return this.suspended?this._updateViewNeeded:this._computeWork()>0}get visibleAtCurrentScale(){return Re(this.layer.effectiveScaleRange,this.view.scale)}async queryFeatures(e,i){const r=await this._ensureQueryEngine().executeQuery(this._ensureQueryJSON(e),i?.signal),s=r.features;r.features=[];const o=H.fromJSON(r),n=this.view.spatialReference;return o.features=s.map(e=>{const{attributes:i,metadata:r}=e;if(!r){const i=t.fromJSON(e);return i.geometry&&(i.geometry.spatialReference=o.spatialReference??n),i.layer=this.layer,i.sourceLayer=this.layer,i.origin=this._graphicOrigin,i}const s=e.geometry?V.fromJSON(e.geometry):void 0;return s&&(s.spatialReference=o.spatialReference??n),this._createGraphic(r.node,r.pointId,s,i)}),o}createQuery(){const e={outFields:["*"],returnGeometry:!0,outSpatialReference:this.view.spatialReference,returnZ:!0};return new T(e)}async queryFeatureCount(e,t){return await this._ensureQueryEngine().executeQueryForCount(this._ensureQueryJSON(e),t?.signal)}async queryExtent(e,t){const{count:i,extent:r}=await this._ensureQueryEngine().executeQueryForExtent(this._ensureQueryJSON(e),t?.signal);return{count:i,extent:Q.fromJSON(r)}}_ensureQueryJSON(e){return null==e?new T({outSpatialReference:this.view.spatialReference}).toJSON():T.from(e).toJSON()}_ensureQueryEngine(){if(this._queryEngine)return this._queryEngine;const{spatialReference:e}=this.view;return this._queryEngine=new G({fieldsIndex:this.layer.fieldsIndex.toJSON(),geometryType:"esriGeometryPoint",spatialReference:e,featureIdInfo:{type:"object-id",fieldName:"objectId"},hasZ:!0,featureStore:new X({sourceSpatialReference:e,viewSpatialReference:e,forAllFeatures:(e,t)=>{this._renderer.forEachNode(i=>{if(t){const e=i.obb,r=new U(e.getCenter(R()),e.radius);k(r,this.view.renderSpatialReference,r,this.view.spatialReference);if(1===t(r))return}let r=this._queryFeaturesCache.get(`${i.id}`);r||(r=this._createQueryPointFeatures(i),this._queryFeaturesCache.put(`${i.id}`,r)),r.features.forEach(e)})},getFeatureExtent:({point:e},t)=>O(e,e,t),featureAdapter:{cloneWithGeometry:(e,t,i)=>new Oe(e.node,e.pointId,t.coords),getAttribute:({node:e,attributePointId:t},i)=>{for(const r of e.attributes)if(r.attributeInfo.name===i)return this._getGraphicAttribute(r.attributeInfo,r.values,t)},getAttributes:({node:e,attributePointId:t})=>this._createGraphicAttributes(e,t),getCentroid:e=>e.getGeometry(),getGeometry:e=>e.getGeometry(),getObjectId:()=>{},getMetadata:e=>e}})}),this._queryEngine}_createQueryPointFeatures(e){const t=e.coordinates,i=new Array;for(let r=0;r<t.length/3;r++){const s=3*r,o=j(t[s+0],t[s+1],t[s+2]);C(o,o,e.origin),F(o,this.view.renderSpatialReference,o,this.view.spatialReference);const n=new Oe(e,r,o);i.push(n)}return new Le(i)}async _initNodePages(){const e=this.layer.store.index,t=e.nodesPerPage||e.nodePerIndexBlock;this._index=new se(this.layer.spatialReference,this.view.renderCoordsHelper.spatialReference,t),this._cancelIndexLoading(),this._traverseVisible=this._index.createVisibilityTraverse(),this._loadingInitNodePage=!0,this._layerIsVisible=!0,this.notifyChange("suspended"),this._updateLoading(),this._pageMultiplier=null!=e.nodesPerPage?1:e.nodePerIndexBlock;const i=await this.layer.rootPagePromise;this._loadingInitNodePage=!1,i?(this._index.addPage(0,this._processJSONNodes(i,0),this._elevationOffset),this._setUpdateViewNeeded()):n.getLogger(this).error("Point cloud layer root page not loaded")}_loadNodePage(e,t){const i=`${this.baseUrl}/nodepages/${e*this._pageMultiplier}`;return this._requestNodePage(i,t).then(t=>this._processJSONNodes(t,e))}_processJSONNodes(e,t){const i=t*this._index.pageSize;return e.nodes.map((e,t)=>({resourceId:e.resourceId??i+t,obb:xe.fromJSON(e.obb),obbInRenderSR:new xe,firstChild:e.firstChild,childCount:e.childCount,vertexCount:e.vertexCount??e.pointCount,lodThreshold:e.lodThreshold??e.effectiveArea}))}_updateWorkQueues(){if(!this._updateViewNeeded)return!1;const e=this.view.quality;let t=this.inverseDensity/this._lodFactor*e;const i=this.maximumPointCount*this._lodFactor*e;let r=this._computeNodesForMinimumDensity(t),s=this._computePointCount(r),o=Math.sqrt(s/(.75*i));for(;s>i;)t*=o,r=this._computeNodesForMinimumDensity(t),s=this._computePointCount(r),o=Math.sqrt(2);return this._displayNodes(r),this._updateViewNeeded=!1,this._updateLoading(),!0}_computePointCount(e){let t=0;for(let i=0;i<e.length;i++){const r=this._index.getNode(e[i]);r&&(t+=r.vertexCount)}return t}_isRootNodeVisible(){let e=!1;return this._traverseVisible({frustum:this.view.state.contentCamera.frustum,clippingBox:this._clippingBox},{predicate:(t,i,r)=>(e=r,!1),pageMiss:()=>{}}),e}_computeNodesForMinimumDensity(e){const t=this.view.state.contentCamera,i=t.frustum,r=this._clippingBox,s=t.viewForward,o=S(s,t.eye),n=D(s,-o,ke),a=t.perScreenPixelRatio/2,d=e*e,l=this._nodeIdArray;l.length=0;const u=e=>l.push(e);return this._traverseVisible({frustum:i,clippingBox:r},{predicate:(e,t,i)=>{if(!i)return!1;if(0===t.childCount)return u(e),!1;const r=this._index.getRenderObb(e);return!(this._computeAveragePixelArea(r,t.lodThreshold,t.vertexCount,n,a)<=d)||(u(e),!1)},pageMiss:(e,t)=>{u(e),this._indexQueue.includes(t)||this._indexQueue.push(t)}}),l}_computeAveragePixelArea(e,t,i,r,s){const o=1e-7,n=Math.max(o,e.signedDistanceRangePlane(r).min);return t/(n*n)/(4*s*s)/i}_loadNode(e,t){try{return this._loadNodeAsync(e,t)}catch(i){throw _(i)||n.getLogger(this).error(i),i}}async _loadAdditionalUserAttributes(e,t,i){const s=this.layer.outFields;if(!s)return[];const o=q(this.layer.fieldsIndex,s),n=new Set(e.map(e=>null!=e?e.name:null)),a=this.layer.attributeStorageInfo,d=[];for(const r of o){if(n.has(r))continue;const e=me(a,r);e&&d.push(t(e))}const l=await m(d);return g(i),l.filter(r)}async _loadNodeAsync(e,t){const i=this._index.getNode(e),r=he(this.layer),s=pe(this.layer),o=i.resourceId,n=async e=>{if(!e)return null;if(e.useElevation)return{attributeInfo:e,buffer:null};const i=await this._loadAttribute(o,e,t);return null!=i?{attributeInfo:e,buffer:i}:null};return this._idleQueue.push(async()=>{const i=this._loadGeometry(o,t),{primaryAttribute:a,modulationAttribute:d}=r,l=n(a),u=n(d),h=s.map(e=>e.attributeInfo),p=h.map(e=>n(e)),c=this._loadAdditionalUserAttributes([a,d,...h],n,t),[_,m,f,y,b]=await Promise.all([i,l,u,Promise.all(p),c]);g(t);const w={geometryBuffer:_,primaryAttributeData:m,modulationAttributeData:f,filterAttributesData:y,userAttributesData:b,schema:this.layer.store.defaultGeometrySchema,rendererInfo:r,filterInfo:s,obbData:this._index.getRenderObb(e).data,elevationOffset:this._elevationOffset,inSR:this.layer.spatialReference.toJSON(),outSR:this.view.renderCoordsHelper.spatialReference.toJSON()};return this._worker.invoke(w,t)},t)}async _loadGeometry(e,t){return this._requestData(`${this.baseUrl}/nodes/${e}/geometries/0`,t)}async _loadAttribute(e,t,i){if(!t?.storageInfo)return null;const r=t.storageInfo.key;return this._requestData(`${this.baseUrl}/nodes/${e}/attributes/${r}`,i)}async _requestNodePage(e,t){const r={useQueue:!1,query:{f:"json",...this.layer.customParameters,token:this.layer.apiKey},responseType:"json",signal:t};return(await i(e,r)).data}async _requestData(e,t){const r={useQueue:!1,query:{...this.layer.customParameters,token:this.layer.apiKey},responseType:"array-buffer",signal:t};return(await i(e,r)).data}_removeFromRenderer(e){if(this._renderedNodes.has(e)){const t=this._renderer.removeNode(e);this._renderedNodes.delete(e),this._memCache.put(`${t.id}`,t)}}_addToRenderer(e){this._renderedNodes.has(e.id)||(this._renderedNodes.add(e.id),this._renderer.addNode(e))}_setupRendererData(e,t){const i=this._index.getNode(e),r=Math.sqrt(i.lodThreshold/i.vertexCount),s=this._index.getRenderObb(e);if(ae(t))return t.splatSize=r,t.obb=s,I(t.origin,t.obb.getCenter(R())),t;const o=xe.fromData(t.obbData),{halfSizeX:a,halfSizeY:d,halfSizeZ:l}=o,{halfSizeX:u,halfSizeY:h,halfSizeZ:p}=s,c=.01*Math.max(u,h,p);if(a>u+c||d>h+c||l>p+c){if(this._maxLoggedBoxWarnings>0){const t=e=>`[${e.halfSizeX}, ${e.halfSizeY}, ${e.halfSizeZ}]`;n.getLogger(this).warn(`Node ${e} reported bounding box too small. got ${t(s)} but points cover ${t(o)}`),0===--this._maxLoggedBoxWarnings&&n.getLogger(this).warn(" Too many bounding box errors, stopping reporting for this layer.")}this._index.setRenderObb(e,o)}return new de(e,r,A(s.getCenter(R())),s,0===i.childCount,t.points,t.rgb,t.attributes,t.pointIdFilterMap)}get usedMemory(){let e=0;return this._renderer.forEachNode(t=>{e+=De,e+=l(t.coordinates);for(const i of t.attributes){const t=i.values;N(t.buffer)&&(e+=l(t))}}),e}get unloadedMemory(){const e=this._renderedNodes.size;if(e<4)return 0;const t=[...this._renderedNodes].reduce((e,t)=>e+this._index.getNode(t).vertexCount);let i=this._loadingNodes.size;for(let r=0;r<this._workQueue.length;r++)i+=this._workQueue[r].load.length,i-=this._workQueue[r].remove.length;if(i<0)return 0;return i*t/e*((this.usedMemory-e*De)/t)+i*De}get performanceInfo(){return new J(this.usedMemory,this._renderedNodes.size,[...this._renderedNodes].reduce((e,t)=>e+this._index.getNode(t).vertexCount,0),this.maximumPointCount,new Z(this._loadingNodes.size,this._indexQueue.length,this._workQueue.length,this._idleQueue.length))}get test(){}};e([v()],Fe.prototype,"layer",void 0),e([v()],Fe.prototype,"baseUrl",null),e([v()],Fe.prototype,"pointScale",null),e([v()],Fe.prototype,"useRealWorldSymbolSizes",null),e([v()],Fe.prototype,"pointSize",null),e([v()],Fe.prototype,"inverseDensity",null),e([v()],Fe.prototype,"maximumPointCount",void 0),e([v({readOnly:!0})],Fe.prototype,"availableFields",null),e([v({readOnly:!0})],Fe.prototype,"_clippingBox",null),e([v({readOnly:!0})],Fe.prototype,"_elevationOffset",null),e([v({type:Boolean})],Fe.prototype,"slicePlaneEnabled",void 0),e([v()],Fe.prototype,"_graphicOrigin",null),e([v()],Fe.prototype,"updating",void 0),e([v(Ce)],Fe.prototype,"updatingProgress",void 0),e([v({readOnly:!0})],Fe.prototype,"updatingProgressValue",null),e([v({readOnly:!0})],Fe.prototype,"visibleAtCurrentScale",null),Fe=e([x("esri.views.3d.layers.PointCloudLayerView3D")],Fe);const Ee=Fe;class Oe{constructor(e,t,i){this.node=e,this.pointId=t,this.point=i}getGeometry(){return new W([],Array.from(this.point),!0,!1)}get attributePointId(){const{node:e,pointId:t}=this;return null!=e.pointIdFilterMap?e.pointIdFilterMap[t]:t}get usedMemory(){return u+u+h+p(this.point,h)}}class Le{constructor(e){this.features=e}get usedMemory(){return this.features.reduce((e,t)=>e+t.usedMemory,u+c)}}const De=160;function Ue(e){return t=>e.immediate.schedule(t)}export{Ee as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__addDisposableResource as e,__disposeResources as t}from"tslib";import r from"../../../../core/Error.js";import{disposable as i}from"../../../../core/handleUtils.js";import{translate as s}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{IDENTITY as a,create as o}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{set as n,scale as l}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{fromValues as c,fromArray as h,clone as p}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{set as m}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{fromArray as d,create as u}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{projectBuffer as f}from"../../../../geometry/projection/projectBuffer.js";import{create as g,fromSubBuffer as y,intersectsClippingArea as _}from"../../../../geometry/support/aaBoundingBox.js";import{newDoubleArray as b,doubleArrayFrom as v}from"../../../../geometry/support/DoubleArray.js";import{newFloatArray as x}from"../../../../geometry/support/FloatArray.js";import{getCoordinateEquals as w}from"../../../../geometry/support/geometryUtils.js";import{isDrivenOpacityFallbackAlwaysOpaque as S}from"../../../../renderers/visualVariables/support/visualVariableUtils.js";import{needsElevationUpdates3D as P,evaluateElevationAlignmentAtPoint as D,SampleElevationInfo as j}from"./elevationAlignmentUtils.js";import{Graphics3DObject3DGraphicLayer as C}from"./Graphics3DObject3DGraphicLayer.js";import{maxPathLength as V,pathNumRoundJoinSubdivisions as A}from"./Graphics3DPathSymbolLayerConstants.js";import{Graphics3DSymbolLayer as U,nanFallbackColor as z}from"./Graphics3DSymbolLayer.js";import{isValidSize as E}from"./graphicUtils.js";import{ConvertOptions as R,initFastSymbolUpdatesState as B,updateFastSymbolUpdatesState as G,getSizeAttributeValue as L,getAttributeValue as k}from"../support/FastSymbolUpdates.js";import{SamplePosition as O}from"../../support/ElevationProvider.js";import{Object3D as I}from"../../webgl-engine/lib/Object3D.js";import{Path as F}from"../../webgl-engine/lib/Path.js";import{PathBuilder as M}from"../../webgl-engine/lib/PathBuilder.js";import{RoundCapBuilder as T,TriangulationCapBuilder as q,NoCapBuilder as H}from"../../webgl-engine/lib/PathCapBuilder.js";import{MiterExtruder as W}from"../../webgl-engine/lib/PathExtruder.js";import{PathGeometry as N,isPathGeometry as Z}from"../../webgl-engine/lib/PathGeometry.js";import{FastUpdatePathGeometry as J,StaticPathGeometry as $}from"../../webgl-engine/lib/PathGeometryData.js";import{computeMinimumRotationTangentFrame as K}from"../../webgl-engine/lib/pathGeometryUtils.js";import{quadProfiles as Q,circleProfiles as X}from"../../webgl-engine/lib/PathProfile.js";import{newPathVertex as Y}from"../../webgl-engine/lib/PathVertex.js";import{DefaultMaterial as ee}from"../../webgl-engine/materials/DefaultMaterial.js";import{PathMaterial as te}from"../../webgl-engine/materials/PathMaterial.js";const re=["polyline"];class ie extends U{constructor(e,t,r,i){super(e,t,r,i,S(t)),this._intrinsicSize=c(1,1),this._upVectorAlignment=1,this._stencilWidth=.1,this.ensureDrapedStatus(!1)}_validateGeometry(e,t,r){return!!super._validateGeometry(e,t,r)&&("polyline"===e.type&&(!e.paths.some(e=>e.length>V)||(this.logger.warn(`Geometry has a path longer than ${V} vertices and cannot be displayed by PathSymbol3DLayer`),!1)))}async doLoad(){const e=this.symbolLayer,t=null!=e.width?e.width:e.height,i=null!=e.height?e.height:t;this._vvConvertOptions=new R({supports:{size:!0,color:!0,rotation:!1,opacity:!0},modelSize:[1,1,1],symbolSize:[t,1,i],unitInMeters:this._context.renderCoordsHelper.unitInMeters,fallbackColor:this._getFallbackOpacityAndColor(z),fallbackSize:[t,1,i]});const s=this._context.renderer?.visualVariables;this._fastUpdates=s?.length?B(this._context.renderer,this._vvConvertOptions):null;const a=e.anchor||"center";this._upVectorAlignment="heading"===e.profileRotation?0:1;const o=e.profile||"circle";switch(o){default:case"circle":this._profile=X[a];break;case"quad":this._profile=Q[a]}switch(e.join){case"round":this._extruder=new W(0,A);break;default:case"bevel":this._extruder=new W(0,1);break;case"miter":this._extruder=new W(.8*Math.PI,1)}switch(this._cap){case"none":this._capBuilder=new H;break;case"butt":default:this._capBuilder=new q(this._profile,1);break;case"square":this._capBuilder=new q(this._profile,2);break;case"round":{const e="quad"===o;this._capBuilder=new T(this._profile,e);break}}const c=this._materialColor,p=this._getCombinedOpacityAndColor(c),m=d(p),u=p[3],f=this.needsDrivenTransparentPass,g=e.material?.emissive,y={diffuse:m,ambient:m,emissiveStrengthFromSymbol:("color"===g?.source?g?.strength:void 0)??0,emissiveSource:1,opacity:u,drivenOpacity:f,hasVertexColors:!1,hasSlicePlane:this._context.slicePlaneEnabled,castShadows:this.symbolLayer.castShadows,offsetTransparentBackfaces:!0};if(!this._drivenProperties.size&&(n(this._intrinsicSize,t,i),!E(this._intrinsicSize[0])||!E(this._intrinsicSize[1])))throw new r("graphics3dpathsymbollayer:invalid-size","Symbol sizes may not be negative values");let _;this._fastUpdates?.visualVariables.size||l(this._intrinsicSize,this._intrinsicSize,1/this._context.renderCoordsHelper.unitInMeters),this._fastUpdates?_=new te({...y,...this._fastUpdates.materialParameters,size:h(this._intrinsicSize),upVectorAlignment:this._upVectorAlignment,profile:this._profile,pathCapType:this._capBuilder.type,cutoffAngle:this._extruder.cutoffAngle,numJoinSubdivisions:this._extruder.numBendSubdivisions},this._context):(y.hasVertexColors=this._drivenProperties.color||this._drivenProperties.opacity,y.normalType=1,_=new ee(y,this._context)),_.setParameters({usePBR:this._context.physicalBasedRenderingEnabled,isSchematic:!0}),this._materials[0]=_,this._updateTransparentDepedentMaterialParameters()}createGraphics3DGraphic(e){const t=e.graphic;if(!this._validateGeometry(t.geometry,re,this.symbolLayer.type))return null;const r=this.createElevationContextForGraphic(t);return this._createAs3DShape(e,r)}layerOpacityChanged(){const e=this._materialColor,t=this._getCombinedOpacity(e),r=this._materials[0];r&&(r.setParameters({opacity:t}),this._updateTransparentDepedentMaterialParameters())}layerScreenSizePerspectiveChanged(){}layerElevationInfoChanged(e,t){return this.updateGraphics3DGraphicElevationInfo(e,t,P)}slicePlaneEnabledChanged(){return this._materials[0]?.setParameters({hasSlicePlane:this._context.slicePlaneEnabled}),!0}physicalBasedRenderingChanged(){return this._materials[0]?.setParameters({usePBR:this._context.physicalBasedRenderingEnabled,isSchematic:!0}),!0}applyRendererDiff(e,t){for(const r in e.diff){if("visualVariables"!==r)return 0;if(!G(this._fastUpdates,t,this._vvConvertOptions))return 0;this._materials[0]?.setParameters(this._fastUpdates.materialParameters)}return 2}_getVertexData(r){let i=0;const s=r.paths,a=[],o=r.spatialReference,n=this._context.elevationProvider.spatialReference,l=this._context.renderCoordsHelper.spatialReference,c=w(r.hasZ),h=s.map(r=>{const i={stack:[],error:void 0,hasError:!1};try{const t=he;e(i,pe,!1);for(let e=1;e<r.length;++e)c(r[e],r[e-1])&&t.add(e);return 0===t.size?r:r.filter((e,r)=>!t.has(r))}catch(s){i.error=s,i.hasError=!0}finally{t(i)}});for(const e of h)i+=e.length;const p=b(3*i);let m,d=0;for(const e of h){a.push({offset:d,numVertices:e.length});for(const t of e)p[d++]=t[0],p[d++]=t[1],p[d++]=r.hasZ?t[2]:0}return null==n||o.equals(n)||f(p,o,0,p,n,0,i)?(null==n||n.equals(l)?m=v(p):(m=b(3*i),f(p,n,0,m,l,0,i)),{pathVertexDataInfos:a,vertexDataES:p,vertexDataRS:m}):null}_createAs3DShape(e,t){const{graphic:r,renderingInfo:i}=e,n=r.geometry,l=this._getVertexData(n);if(null==l)return this.logger.warn("PathSymbol3DLayer geometry failed to be created (failed to project geometry to view spatial reference)"),null;if(0===l.pathVertexDataInfos.length)return 0!==n.paths.length&&n.paths.some(e=>e.length>0)||this.logger.warn("PathSymbol3DLayer geometry failed to be created (no paths were defined)"),null;const c=new Array,h=n.spatialReference,d=g(),u=this._context.renderCoordsHelper,f=new O(l.vertexDataES),b=r.uid,v=x(l.vertexDataRS.length);for(const g of l.pathVertexDataInfos){const e=g.numVertices;if(e<2)continue;const r=g.offset;if(null!=this._context.clippingExtent&&(y(l.vertexDataES,r,e,d),!_(d,this._context.clippingExtent)))continue;const n=new Array,x=r+3*e;for(let i=r;i<x;i+=3){f.offset=i;const e=D(f,this._context.elevationProvider,t,u);m(le,l.vertexDataRS[i],l.vertexDataRS[i+1],l.vertexDataRS[i+2]),u.setAltitude(le,e),l.vertexDataRS[i]=le[0],l.vertexDataRS[i+1]=le[1],l.vertexDataRS[i+2]=le[2],n.push(Y(this._upVectorAlignment))}const w=new F(n,l.vertexDataES,l.vertexDataRS,r,v);se(w,this._upVectorAlignment,this._context.renderCoordsHelper);const S=new M(w,this._profile,this._extruder,this._capBuilder,this._upVectorAlignment);let P=null;if(this._fastUpdates){const{size:e,color:t,opacity:r}=this._fastUpdates.visualVariables,s=L(e,i.size),a=k(t,i.color),o=k(r,i.opacity);P=new J(S,s,a,o)}else{const e=p(this._intrinsicSize);if(this._drivenProperties.size){const t=i.size?.output??["symbol-value","symbol-value","symbol-value"];e[0]*=ae(t[0],"symbol-value"===t[2]?this.symbolLayer.height||0:t[2],this.symbolLayer.width||0),e[1]*=ae(t[2],"symbol-value"===t[0]?this.symbolLayer.width||0:t[0],this.symbolLayer.height||0)}const t=new $(S);t.bake(e);const r=this._getDrivenColor(i);r&&t.bakeVertexColors(r),P=t}const j=P.createGeometryData(),C=this._context.stage.renderView.getObjectAndLayerIdColor({graphicUid:b,layerViewUid:this._context.layerViewUid}),V=new N(this._materials[0],j,P,h,this._stencilWidth,C);V.transformation=s(o(),a,S.path.origin),c.push(V)}if(0===c.length)return null;const w=new I({geometries:c,layerViewUid:this._context.layerViewUid,graphicUid:b}),S=new C(this,w,null,(e,t,r,i,s)=>ne(e,t,i,s,this._upVectorAlignment),t,null);return S.alignedSampledElevation=0,S.needsElevationUpdates=P(t.mode),S}_getDrivenColor(e){return this._hasDrivenColorOrOpacity?this._getDrivenUInt8ColorWithNaNSupport(e,this._materialColor,!1):null}get _materialColor(){return this.symbolLayer.material?.color}_getFallbackOpacityAndColor(e){return this._materialColor?.toUnitRGBA()??e}get _cap(){return this.symbolLayer.cap||"butt"}_updateTransparentDepedentMaterialParameters(){const e=this._materials[0];e&&e.setParameters({cullFace:e.transparent||"none"===this._cap?0:2})}}function se(e,t,r){const{origin:i,positions:s}=e;let a=e.offset;switch(t){default:case 0:for(const t of e.vertices)le[0]=s[a++]+i[0],le[1]=s[a++]+i[1],le[2]=s[a++]+i[2],r.worldUpAtPosition(le,le),t.setFrameFromUpVector(le);break;case 1:le[0]=s[a]+i[0],le[1]=s[a+1]+i[1],le[2]=s[a+2]+i[2],r.worldUpAtPosition(le,le),K(e,le)}}function ae(e,t,r){switch(e){case"symbol-value":return r;case"proportional":return t;default:return e}}function oe(e,t,r,i){let s=0;const{origin:a,vertices:o,positions:n,positionsES:l}=e,c=e.offset+3*o.length;for(let h=e.offset;h<c;h+=3)m(le,l[h],l[h+1],l[h+2]),r(le,ce),s+=ce.sampledElevation,le[0]=n[h]+a[0],le[1]=n[h+1]+a[1],le[2]=n[h+2]+a[2],i.setAltitude(le,ce.z),n[h]=le[0]-a[0],n[h+1]=le[1]-a[1],n[h+2]=le[2]-a[2];return e.updatePathVertexInformation(),s/o.length}function ne(e,t,r,i,s){const a=e.stageObject,o=a.geometries;let n=0;for(const l of o){if(!Z(l))continue;const e=l.path,o=e.builder.path;n+=oe(o,t,r,i),0!==s&&se(o,s,i),e.onPathChanged(l),l.invalidateBoundingInfo(),a.geometryVertexAttributeUpdated(l,"position")}return n/o.length}const le=u(),ce=new j,he=new Set,pe=i({remove:()=>he.clear()});export{ie as Graphics3DPathSymbolLayer};
2
+ import{__addDisposableResource as e,__disposeResources as t}from"tslib";import r from"../../../../core/Error.js";import{disposable as i}from"../../../../core/handleUtils.js";import{translate as s}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{IDENTITY as a,create as o}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{set as n,scale as l,multiply as h}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{fromValues as c,fromArray as p}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{set as m}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{fromArray as u,create as d}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{projectBuffer as f}from"../../../../geometry/projection/projectBuffer.js";import{create as g,fromSubBuffer as _,intersectsClippingArea as y}from"../../../../geometry/support/aaBoundingBox.js";import{newDoubleArray as b,doubleArrayFrom as v}from"../../../../geometry/support/DoubleArray.js";import{newFloatArray as x}from"../../../../geometry/support/FloatArray.js";import{getCoordinateEquals as w}from"../../../../geometry/support/geometryUtils.js";import{isDrivenOpacityFallbackAlwaysOpaque as P}from"../../../../renderers/visualVariables/support/visualVariableUtils.js";import{needsElevationUpdates3D as S,evaluateElevationAlignmentAtPoint as D,SampleElevationInfo as j}from"./elevationAlignmentUtils.js";import{Graphics3DObject3DGraphicLayer as V}from"./Graphics3DObject3DGraphicLayer.js";import{maxPathLength as C,pathNumRoundJoinSubdivisions as A}from"./Graphics3DPathSymbolLayerConstants.js";import{Graphics3DSymbolLayer as z,nanFallbackColor as U}from"./Graphics3DSymbolLayer.js";import{isValidSize as E}from"./graphicUtils.js";import{ConvertOptions as R,initFastSymbolUpdatesState as B,updateFastSymbolUpdatesState as L,getSizeAttributeValue as G,getAttributeValue as O}from"../support/FastSymbolUpdates.js";import{SamplePosition as k}from"../../support/ElevationProvider.js";import{Object3D as I}from"../../webgl-engine/lib/Object3D.js";import{Path as F}from"../../webgl-engine/lib/Path.js";import{PathBuilder as M}from"../../webgl-engine/lib/PathBuilder.js";import{RoundCapBuilder as q,TriangulationCapBuilder as H,NoCapBuilder as T}from"../../webgl-engine/lib/PathCapBuilder.js";import{MiterExtruder as Z}from"../../webgl-engine/lib/PathExtruder.js";import{PathGeometry as J,isPathGeometry as $}from"../../webgl-engine/lib/PathGeometry.js";import{computeMinimumRotationTangentFrame as K}from"../../webgl-engine/lib/pathGeometryUtils.js";import{quadProfiles as N,circleProfiles as Q}from"../../webgl-engine/lib/PathProfile.js";import{newPathVertex as W}from"../../webgl-engine/lib/PathVertex.js";import{PathMaterial as X}from"../../webgl-engine/materials/PathMaterial.js";const Y=["polyline"];class ee extends z{constructor(e,t,r,i){super(e,t,r,i,P(t)),this._intrinsicSize=c(1,1),this._upVectorAlignment=1,this.ensureDrapedStatus(!1)}_validateGeometry(e,t,r){return!!super._validateGeometry(e,t,r)&&("polyline"===e.type&&(!e.paths.some(e=>e.length>C)||(this.logger.warn(`Geometry has a path longer than ${C} vertices and cannot be displayed by PathSymbol3DLayer`),!1)))}async doLoad(){const e=this.symbolLayer,t=null!=e.width?e.width:e.height,i=null!=e.height?e.height:t;this._vvConvertOptions=new R({supports:{size:!0,color:!0,rotation:!1,opacity:!0},modelSize:[1,1,1],symbolSize:[t,1,i],unitInMeters:this._context.renderCoordsHelper.unitInMeters,fallbackColor:this._getFallbackOpacityAndColor(U),fallbackSize:[t,1,i]});const s=this._context.renderer?.visualVariables;this._fastUpdates=s?.length?B(this._context.renderer,this._vvConvertOptions):null;const a=e.anchor||"center";this._upVectorAlignment="heading"===e.profileRotation?0:1;const o=e.profile||"circle";switch(o){default:case"circle":this._profile=Q[a];break;case"quad":this._profile=N[a]}switch(e.join){case"round":this._extruder=new Z(0,A);break;default:case"bevel":this._extruder=new Z(0,1);break;case"miter":this._extruder=new Z(.8*Math.PI,1)}switch(this._cap){case"none":this._capBuilder=new T;break;case"butt":default:this._capBuilder=new H(this._profile,1);break;case"square":this._capBuilder=new H(this._profile,2);break;case"round":{const e="quad"===o;this._capBuilder=new q(this._profile,e);break}}const h=this._materialColor,c=this._getCombinedOpacityAndColor(h),m=u(c),d=c[3],f=this.needsDrivenTransparentPass,g=e.material?.emissive,_={diffuse:m,ambient:m,emissiveStrengthFromSymbol:("color"===g?.source?g?.strength:void 0)??0,emissiveSource:1,opacity:d,drivenOpacity:f,hasSlicePlane:this._context.slicePlaneEnabled,castShadows:this.symbolLayer.castShadows};if(!this._drivenProperties.size&&(n(this._intrinsicSize,t,i),!E(this._intrinsicSize[0])||!E(this._intrinsicSize[1])))throw new r("graphics3dpathsymbollayer:invalid-size","Symbol sizes may not be negative values");this._fastUpdates?.visualVariables.size||l(this._intrinsicSize,this._intrinsicSize,1/this._context.renderCoordsHelper.unitInMeters);const y=null!=this._fastUpdates,b=new X({..._,...this._fastUpdates?.materialParameters,size:p(this._intrinsicSize),upVectorAlignment:this._upVectorAlignment,profile:this._profile,pathCapType:this._capBuilder.type,cutoffAngle:this._extruder.cutoffAngle,numJoinSubdivisions:this._extruder.numBendSubdivisions,hasPathColor:!y&&this._drivenProperties.color,hasPathOpacity:!y&&this._drivenProperties.opacity&&!this._drivenProperties.color,hasPathSize:!y&&this._drivenProperties.size,usePBR:this._context.physicalBasedRenderingEnabled},this._context);this._materials[0]=b,this._updateTransparentDepedentMaterialParameters()}createGraphics3DGraphic(e){const t=e.graphic;if(!this._validateGeometry(t.geometry,Y,this.symbolLayer.type))return null;const r=this.createElevationContextForGraphic(t);return this._createAs3DShape(e,r)}layerOpacityChanged(){const e=this._materialColor,t=this._getCombinedOpacity(e),r=this._materials[0];r&&(r.setParameters({opacity:t}),this._updateTransparentDepedentMaterialParameters())}layerScreenSizePerspectiveChanged(){}layerElevationInfoChanged(e,t){return this.updateGraphics3DGraphicElevationInfo(e,t,S)}slicePlaneEnabledChanged(){return this._materials[0]?.setParameters({hasSlicePlane:this._context.slicePlaneEnabled}),!0}physicalBasedRenderingChanged(){return this._materials[0]?.setParameters({usePBR:this._context.physicalBasedRenderingEnabled}),!0}applyRendererDiff(e,t){for(const r in e.diff){if("visualVariables"!==r)return 0;if(!L(this._fastUpdates,t,this._vvConvertOptions))return 0;this._materials[0]?.setParameters(this._fastUpdates.materialParameters)}return 2}_getVertexData(r){let i=0;const s=r.paths,a=[],o=r.spatialReference,n=this._context.elevationProvider.spatialReference,l=this._context.renderCoordsHelper.spatialReference,h=w(r.hasZ),c=s.map(r=>{const i={stack:[],error:void 0,hasError:!1};try{const t=ne;e(i,le,!1);for(let e=1;e<r.length;++e)h(r[e],r[e-1])&&t.add(e);return 0===t.size?r:r.filter((e,r)=>!t.has(r))}catch(s){i.error=s,i.hasError=!0}finally{t(i)}});for(const e of c)i+=e.length;const p=b(3*i);let m,u=0;for(const e of c){a.push({offset:u,numVertices:e.length});for(const t of e)p[u++]=t[0],p[u++]=t[1],p[u++]=r.hasZ?t[2]:0}return null==n||o.equals(n)||f(p,o,0,p,n,0,i)?(null==n||n.equals(l)?m=v(p):(m=b(3*i),f(p,n,0,m,l,0,i)),{pathVertexDataInfos:a,vertexDataES:p,vertexDataRS:m}):null}_createAs3DShape(e,t){const{graphic:r,renderingInfo:i}=e,n=r.geometry,l=this._getVertexData(n);if(null==l)return this.logger.warn("PathSymbol3DLayer geometry failed to be created (failed to project geometry to view spatial reference)"),null;if(0===l.pathVertexDataInfos.length)return 0!==n.paths.length&&n.paths.some(e=>e.length>0)||this.logger.warn("PathSymbol3DLayer geometry failed to be created (no paths were defined)"),null;const h=new Array,c=g(),p=this._context.renderCoordsHelper,u=new k(l.vertexDataES),d=r.uid,f=x(l.vertexDataRS.length);for(const g of l.pathVertexDataInfos){const e=g.numVertices;if(e<2)continue;const r=g.offset;if(null!=this._context.clippingExtent&&(_(l.vertexDataES,r,e,c),!y(c,this._context.clippingExtent)))continue;const n=new Array,b=r+3*e;for(let i=r;i<b;i+=3){u.offset=i;const e=D(u,this._context.elevationProvider,t,p);m(ae,l.vertexDataRS[i],l.vertexDataRS[i+1],l.vertexDataRS[i+2]),p.setAltitude(ae,e),l.vertexDataRS[i]=ae[0],l.vertexDataRS[i+1]=ae[1],l.vertexDataRS[i+2]=ae[2],n.push(W(this._upVectorAlignment))}const v=new F(n,l.vertexDataES,l.vertexDataRS,r,f);te(v,this._upVectorAlignment,this._context.renderCoordsHelper);const x=new M(v,this._profile,this._extruder,this._capBuilder,this._upVectorAlignment),w=this._context.stage.renderView.getObjectAndLayerIdColor({graphicUid:d,layerViewUid:this._context.layerViewUid}),P=new J(this._materials[0],x,this._getVisualVariableData(i),w);P.transformation=s(o(),a,x.path.origin),h.push(P)}if(0===h.length)return null;const b=new I({geometries:h,layerViewUid:this._context.layerViewUid,graphicUid:d}),v=new V(this,b,null,(e,t,r,i,s)=>se(e,t,i,s,this._upVectorAlignment),t,null);return v.alignedSampledElevation=0,v.needsElevationUpdates=S(t.mode),v}_getVisualVariableData(e){if(this._fastUpdates){const{size:t,color:r,opacity:i}=this._fastUpdates.visualVariables;return{sizeAttributeValue:G(t,e.size),colorAttributeValue:O(r,e.color),opacityAttributeValue:O(i,e.opacity)}}return{size:this._getDrivenSize(e),color:this._getDrivenColor(e),opacity:this._getDrivenOpacity(e)}}_getDrivenSize(e){if(!this._drivenProperties.size)return null;const t=e.size?.output??["symbol-value","symbol-value","symbol-value"],r=c(re(t[0],"symbol-value"===t[2]?this.symbolLayer.height||0:t[2],this.symbolLayer.width||0),re(t[2],"symbol-value"===t[0]?this.symbolLayer.width||0:t[0],this.symbolLayer.height||0));return h(r,r,this._intrinsicSize),r}_getDrivenColor(e){return this._drivenProperties.color?this._getDrivenUInt8Color(e,this._materialColor,!1):null}_getDrivenOpacity(e){return this._drivenProperties.opacity&&!this._drivenProperties.color?e.opacity?.output??this._materialColor?.a??0:null}get _materialColor(){return this.symbolLayer.material?.color}_getFallbackOpacityAndColor(e){return this._materialColor?.toUnitRGBA()??e}get _cap(){return this.symbolLayer.cap||"butt"}_updateTransparentDepedentMaterialParameters(){const e=this._materials[0];e&&e.setParameters({cullFace:e.transparent||"none"===this._cap?0:2})}}function te(e,t,r){const{origin:i,positions:s}=e;let a=e.offset;switch(t){default:case 0:for(const t of e.vertices)ae[0]=s[a++]+i[0],ae[1]=s[a++]+i[1],ae[2]=s[a++]+i[2],r.worldUpAtPosition(ae,ae),t.setFrameFromUpVector(ae);break;case 1:ae[0]=s[a]+i[0],ae[1]=s[a+1]+i[1],ae[2]=s[a+2]+i[2],r.worldUpAtPosition(ae,ae),K(e,ae)}}function re(e,t,r){switch(e){case"symbol-value":return r;case"proportional":return t;default:return e}}function ie(e,t,r,i){let s=0;const{origin:a,vertices:o,positions:n,positionsES:l}=e,h=e.offset+3*o.length;for(let c=e.offset;c<h;c+=3)m(ae,l[c],l[c+1],l[c+2]),r(ae,oe),s+=oe.sampledElevation,ae[0]=n[c]+a[0],ae[1]=n[c+1]+a[1],ae[2]=n[c+2]+a[2],i.setAltitude(ae,oe.z),n[c]=ae[0]-a[0],n[c+1]=ae[1]-a[1],n[c+2]=ae[2]-a[2];return e.updatePathVertexInformation(),s/o.length}function se(e,t,r,i,s){const a=e.stageObject,o=a.geometries;let n=0;for(const l of o){if(!$(l))continue;const e=l.builder.path;n+=ie(e,t,r,i),0!==s&&te(e,s,i),l.onPathChanged(),a.geometryVertexAttributeUpdated(l,"position")}return n/o.length}const ae=d(),oe=new j,ne=new Set,le=i({remove:()=>ne.clear()});export{ee as Graphics3DPathSymbolLayer};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{disposeMaybe as s}from"../../../../core/maybe.js";import t from"../../../../core/PooledArray.js";import{property as i,subclass as r}from"../../../../core/accessorSupport/decorators.js";import{subtract as n,length as o,scale as a,negate as h,dot as l,squaredLength as d}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as c}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{set as u}from"../../../../core/libs/gl-matrix-2/math/vec4.js";import{create as g,offset as p,contains as m,containsPoint as _,set as f,positiveInfinity as P,equals as x}from"../../../../geometry/support/aaBoundingBox.js";import{create as b}from"../../../../geometry/support/plane.js";import{fromPoints as R}from"../../../../geometry/support/ray.js";import{Sphere as S}from"../../../../geometry/support/sphere.js";import{PclTarget as w}from"./Intersector.js";import{PointCloudHighlights as z}from"./PointCloudHighlights.js";import{isColor as y,isHighlight as v,isDepth as j}from"../../webgl-engine/core/shaderLibrary/ShaderOutput.js";import{SyncRenderPlugin as q}from"../../webgl-engine/effects/RenderPlugin.js";import{IntersectorResult as H}from"../../webgl-engine/lib/IntersectorResult.js";import{VertexArrayObject as O}from"../../webgl-engine/lib/VertexArrayObject.js";import{P as A,g as E}from"../../../../chunks/PointRenderer.glsl.js";import{PointRendererTechnique as F,positionsLayout as I,colorsLayout as B}from"../../webgl-engine/shaders/PointRendererTechnique.js";import{PointRendererTechniqueConfiguration as M}from"../../webgl-engine/shaders/PointRendererTechniqueConfiguration.js";import{PrimitiveType as N}from"../../../webgl/enums.js";import{VertexBuffer as V}from"../../../webgl/VertexBuffer.js";let T=class extends q{constructor(e){super(e),this.type=6,this.isGround=!1,this._passParameters=new A,this._highlights=new z({forEachNode:e=>this.forEachNode(e),addHighlights:(e,s,t)=>this._addHighlights(e,s,t),removeHighlight:(e,s)=>this._removeHighlight(e,s)}),this.produces=new Map([[2,e=>y(e)||v(e)&&!this._highlights.empty],[3,e=>j(e)]]),this.point=c(),this.intersectionRayDir=c(),this.intersectionPlane=b(),this.nodeOriginOffset=c(),this.nodeBoundingBox=g(),this.layerViewUid="",this._slicePlaneEnabled=!1,this._configuration=new M,this._nodes=new t,this._highlightsInOrder=null}destroy(){this._nodes.prune()}hasHighlight(e){return this._highlights.has(e)}initializeRenderContext(e){this._context=e,e.requestRender()}uninitializeRenderContext(){}intersectRay(e,s,t,i){const{point:r,intersectionRayDir:f,nodeOriginOffset:P,intersectionPlane:x,layerViewUid:b,nodeBoundingBox:z}=this,y=R(t,i),v=e.camera.perScreenPixelRatio/2,j=e.camera.near;n(f,i,t);const q=1/o(f);a(f,f,q);const O=c();h(O,f),u(x,f[0],f[1],f[2],-l(f,t));const A=new D,E=new D,F=new Array,I=g(this._passParameters.clipBox);p(I,-t[0],-t[1],-t[2],I),this._nodes.forAll(o=>{const{isLeaf:a,coordinates:h}=o,c=o.splatSize*this._passParameters.scaleFactor;let{min:u,max:g}=o.obb.signedDistanceRangePlane(x);u-=U(c,u+j,this._passParameters,v,a),g-=U(c,g+j,this._passParameters,v,a);const R=g<0,w=null!=A.dist&&null!=E.dist&&A.dist<u*q&&E.dist>g*q;if(R||w)return;const H=C(c,g+j,this._passParameters,v,a);if(!new S(o.obb.getCenter(L),o.obb.radius+H).intersectRay(y))return;if(!o.obb.intersectRay(t,f,H))return;const B=H*H;o.obb.toAaBoundingBox(z),p(z,-t[0],-t[1],-t[2],z);const M=!m(I,z);n(P,o.origin,t);const N=h.length/3;for(let n=0;n<N;n++){const u=3*n;if(r[0]=P[0]+h[u],r[1]=P[1]+h[u+1],r[2]=P[2]+h[u+2],M&&!_(I,r))continue;const g=l(r,f),p=g*g,m=d(r)-p;if(m>B)continue;let x=g+j;const R=U(c,x,this._passParameters,v,a);if(g-R<0)continue;x-=R;const S=C(c,x,this._passParameters,v,a);if(m>S*S)continue;const w=(g-R)*q,z=e=>(e.point=e.point?W(o,n,e.point):W(o,n),e.dist=w,e.normal=O,e.node=o,e.pointId=n,e.layerViewUid=b,e);if((null==A.dist||w<A.dist)&&(null==s||s(t,i,w))&&z(A),0!==e.options.store&&(null==E.dist||w>E.dist)&&(null==s||s(t,i,w))&&z(E),2===e.options.store&&(null==s||s(t,i,w))){const e=new D;F.push(z(e))}}});const B=e=>{const{layerViewUid:s,node:t,pointId:i}=e;return new w(e.point,s,i,()=>this.createGraphic(t,i,e.point))},M=(e,s)=>{const t=B(s);e.set(this.type,t,s.dist,s.normal)};if(G(A)){const s=e.results.min;(null==s.distance||A.dist<s.distance)&&M(s,A)}if(G(E)&&0!==e.options.store){const s=e.results.max;(null==s.distance||E.dist>s.distance)&&M(s,E)}if(2===e.options.store)for(const n of F){const s=new H(y);M(s,n),e.results.all.push(s)}}acquireTechniques(e){const s=10===e.output;return 0!==this._nodes.length&&(y(e.output)||j(e.output)&&3===e.bind.slot||s)?(this._nodes.forAll(s=>this._initNode(e,s)),this._configuration.drawScreenSize=this._passParameters.drawScreenSpace,this._configuration.useFixedSizes=this._passParameters.useFixedSizes,this._configuration.hasSlicePlane=this._slicePlaneEnabled,this._configuration.hasOccludees=e.bind.hasOccludees,this._configuration.clippingEnabled=this._clippingEnabled,this._configuration.hasHighlightMixTexture=s&&null!=e.bind.highlightMixTexture,this._configuration.output=e.output,this._configuration.hasEmission=e.bind.hasEmission,this._context.techniques.get(F,this._configuration)):null}render(e,s){const{rctx:t,bind:i,output:r}=e,n=t.bindTechnique(s,i,this._passParameters),o=10===r,a=i.highlight?.name??null;o&&!a||(o&&i.highlights!==this._highlightsInOrder&&this._updateResolvedHighlights(i.highlights),this._nodes.forAll(s=>{const r=o?s.resolvedHighlightRanges.get(a):null;0===s.coordinates.length||null==s.vao||o&&null==r||(n.assertCompatibleVertexAttributeLocations(s.vao),n.bindDraw(i,this._passParameters,s),t.bindVAO(s.vao),o?this._renderHighlightFragments(e,r):t.drawArrays(N.POINTS,0,s.coordinates.length/3))}))}_renderHighlightFragments(e,s){const{rctx:t}=e;for(let i=0;i<s.length;i+=2)t.drawArrays(N.POINTS,s[i],s[i+1])}set useFixedSizes(e){this._passParameters.useFixedSizes!==e&&(this._passParameters.useFixedSizes=e,this._requestRender())}get useFixedSizes(){return this._passParameters.useFixedSizes}set scaleFactor(e){this._passParameters.scaleFactor!==e&&(this._passParameters.scaleFactor=e,this._requestRender())}get scaleFactor(){return this._passParameters.scaleFactor}set minSizePx(e){this._passParameters.minSizePx!==e&&(this._passParameters.minSizePx=e,this._requestRender())}get minSizePx(){return this._passParameters.minSizePx}set useRealWorldSymbolSizes(e){this._passParameters.useRealWorldSymbolSizes!==e&&(this._passParameters.useRealWorldSymbolSizes=e,this._requestRender())}get useRealWorldSymbolSizes(){return this._passParameters.useRealWorldSymbolSizes}set size(e){this._passParameters.size!==e&&(this._passParameters.size=e,this._requestRender())}get size(){return this._passParameters.size}set sizePx(e){this._passParameters.sizePx!==e&&(this._passParameters.sizePx=e,this._requestRender())}get sizePx(){return this._passParameters.sizePx}set clippingBox(e){f(this._passParameters.clipBox,e||P)}get _clippingEnabled(){return!x(this._passParameters.clipBox,P,(e,s)=>e===s)}get slicePlaneEnabled(){return this._slicePlaneEnabled}set slicePlaneEnabled(e){this._slicePlaneEnabled!==e&&(this._slicePlaneEnabled=e,this._requestRender())}addNode(e){this._nodes.push(e),e.clearHighlights(),this._highlights.nodeAdded(e),this._requestRender()}removeNode(e){let t=null;return this._nodes.filterInPlace(i=>i.id!==e||(t=i,i.vao=s(i.vao),this._highlights.nodeRemoved(i),!1)),this._requestRender(),t}forEachNode(e){this._nodes.forEach(e)}removeAll(){this._nodes.forAll(e=>e.vao=s(e.vao)),this._highlights.removeAll(),this._nodes.clear(),this._requestRender()}highlight(e,s){return this._highlights.add(e,s)}_addHighlights(e,s,t){for(const i of s)e.addHighlight(i,t);this._highlightsInOrder&&e.updateResolvedHighlights(this._highlightsInOrder),this._requestRender()}_removeHighlight(e,s){e.removeHighlight(s),this._highlightsInOrder&&e.updateResolvedHighlights(this._highlightsInOrder),this._requestRender()}_initNode(e,s){s.vao??=new O(e.rctx,new Map([["positions",new V(e.rctx,I,s.coordinates)],["colors",new V(e.rctx,B,s.rgb)]]))}_requestRender(){this._context&&this._context.requestRender()}_updateResolvedHighlights(e){this._highlightsInOrder=e,this._nodes.forAll(s=>s.updateResolvedHighlights(e))}};function C(e,s,t,i,r){if(t.drawScreenSpace)return t.fixedSize*s*i;const n=E(r)*s*i;return t.useFixedSizes?Math.min(t.fixedSize/2,n):t.screenMinSize>0?Math.min(Math.max(t.screenMinSize*s*i,e/2),n):Math.min(e/2,n)}function U(e,s,t,i,r){return t.drawScreenSpace?0:C(e,s,t,i,r)}function W(e,s,t=c()){return t[0]=e.origin[0]+e.coordinates[3*s],t[1]=e.origin[1]+e.coordinates[3*s+1],t[2]=e.origin[2]+e.coordinates[3*s+2],t}e([i({constructOnly:!0})],T.prototype,"createGraphic",void 0),T=e([r("esri.views.3d.layers.i3s.PointCloudRenderer")],T);class D{constructor(){this.node=null,this.pointId=null,this.point=null,this.dist=null,this.normal=null,this.layerViewUid=""}}function G(e){return null!=e.dist&&null!=e.point&&null!=e.pointId&&null!=e.node}const L=c();export{T as PointCloudRenderer};
2
+ import{__decorate as e}from"tslib";import{disposeMaybe as t}from"../../../../core/maybe.js";import i from"../../../../core/PooledArray.js";import{createScreenPointArray as s}from"../../../../core/screenUtils.js";import{property as r,subclass as n}from"../../../../core/accessorSupport/decorators.js";import{subtract as o,length as a,scale as l,negate as h,dot as c,squaredLength as d,distance as u}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as g,clone as p}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{set as m}from"../../../../core/libs/gl-matrix-2/math/vec4.js";import{create as _,offset as f,contains as P,containsPoint as x,set as b,positiveInfinity as S,equals as w}from"../../../../geometry/support/aaBoundingBox.js";import{create as R}from"../../../../geometry/support/plane.js";import{fromPoints as y}from"../../../../geometry/support/ray.js";import{Sphere as z}from"../../../../geometry/support/sphere.js";import{PclTarget as v}from"./Intersector.js";import{PointCloudHighlights as j}from"./PointCloudHighlights.js";import{isColor as q,isHighlight as F,isDepth as H}from"../../webgl-engine/core/shaderLibrary/ShaderOutput.js";import{SyncRenderPlugin as O}from"../../webgl-engine/effects/RenderPlugin.js";import{IntersectorResult as A}from"../../webgl-engine/lib/IntersectorResult.js";import{screenPolygonIntersectsCircle as E}from"../../webgl-engine/lib/screenPolygonOverlapUtils.js";import{VertexArrayObject as I}from"../../webgl-engine/lib/VertexArrayObject.js";import{P as B,g as M}from"../../../../chunks/PointRenderer.glsl.js";import{PointRendererTechnique as V,positionsLayout as N,colorsLayout as T}from"../../webgl-engine/shaders/PointRendererTechnique.js";import{PointRendererTechniqueConfiguration as C}from"../../webgl-engine/shaders/PointRendererTechniqueConfiguration.js";import{PrimitiveType as U}from"../../../webgl/enums.js";import{VertexBuffer as D}from"../../../webgl/VertexBuffer.js";let W=class extends O{constructor(e){super(e),this.type=6,this.isGround=!1,this._passParameters=new B,this._highlights=new j({forEachNode:e=>this.forEachNode(e),addHighlights:(e,t,i)=>this._addHighlights(e,t,i),removeHighlight:(e,t)=>this._removeHighlight(e,t)}),this.produces=new Map([[2,e=>q(e)||F(e)&&!this._highlights.empty],[3,e=>H(e)]]),this.point=g(),this.intersectionRayDir=g(),this.intersectionPlane=R(),this.nodeOriginOffset=g(),this.nodeBoundingBox=_(),this.layerViewUid="",this._slicePlaneEnabled=!1,this._configuration=new C,this._nodes=new i,this._highlightsInOrder=null}destroy(){this._nodes.prune()}hasHighlight(e){return this._highlights.has(e)}initializeRenderContext(e){this._context=e,e.requestRender()}uninitializeRenderContext(){}intersectRay(e,t,i,s){const{point:r,intersectionRayDir:n,nodeOriginOffset:u,intersectionPlane:p,layerViewUid:b,nodeBoundingBox:S}=this,w=y(i,s),R=this._passParameters,j=e.camera.perScreenPixelRatio/2,q=e.camera.near;o(n,s,i);const F=1/a(n);l(n,n,F);const H=g();h(H,n),m(p,n[0],n[1],n[2],-c(n,i));const O=new Y,E=new Y,I=new Array,B=_(R.clipBox);f(B,-i[0],-i[1],-i[2],B);const M=new J;this._nodes.forAll(a=>{const{isLeaf:l,coordinates:h}=a,g=a.splatSize*R.scaleFactor;let{min:m,max:_}=a.obb.signedDistanceRangePlane(p);m-=L(g,m+q,R,j,l),_-=L(g,_+q,R,j,l);const y=_<0,v=null!=O.dist&&null!=E.dist&&O.dist<m*F&&E.dist>_*F;if(y||v)return;const A=G(g,_+q,R,j,l);if(!new z(a.obb.getCenter($),a.obb.radius+A).intersectRay(w))return;if(!a.obb.intersectRay(i,n,A))return;const V=A*A;a.obb.toAaBoundingBox(S),f(S,-i[0],-i[1],-i[2],S);const N=!P(B,S);o(u,a.origin,i);const T=h.length/3;for(let o=0;o<T;o++){const p=3*o;if(r[0]=u[0]+h[p],r[1]=u[1]+h[p+1],r[2]=u[2]+h[p+2],N&&!x(B,r))continue;const m=c(r,n),_=m*m,f=d(r)-_;if(f>V)continue;const{distance:P,radius:S}=K(M,g,m+q,R,j,l),w=P-q;if(w<0)continue;if(f>S*S)continue;const y=w*F,z=e=>(e.point=e.point?Q(a,o,e.point):Q(a,o),e.dist=y,e.normal=H,e.node=a,e.pointId=o,e.layerViewUid=b,e);if((null==O.dist||y<O.dist)&&(null==t||t(i,s,y))&&z(O),0!==e.options.store&&(null==E.dist||y>E.dist)&&(null==t||t(i,s,y))&&z(E),2===e.options.store&&(null==t||t(i,s,y))){const e=new Y;I.push(z(e))}}});const V=e=>{const{layerViewUid:t,node:i,pointId:s}=e;return new v(e.point,t,s,()=>this.createGraphic(i,s,e.point))},N=(e,t)=>{const i=V(t);e.set(this.type,i,t.dist,t.normal)};if(Z(O)){const t=e.results.min;(null==t.distance||O.dist<t.distance)&&N(t,O)}if(Z(E)&&0!==e.options.store){const t=e.results.max;(null==t.distance||E.dist>t.distance)&&N(t,E)}if(2===e.options.store)for(const o of I){const t=new A(w);N(t,o),e.results.all.push(t)}}*intersectScreenPolygon(e,t){const i=e.camera,{screenPolygonPrimitiveProcessor:s}=e,{point:r,layerViewUid:n,_nodes:a}=this,l=this._passParameters,h=i.perScreenPixelRatio/2,{eye:d,near:g,viewForward:_}=i,f=m(ie,_[0],_[1],_[2],-c(_,d)),P=new J,{bounds:x,broadPhaseFrustum:b}=t,{scaleFactor:S}=l;for(let m=0;m<a.length;++m){const w=a.data[m],{isLeaf:R,obb:y}=w,z=w.splatSize*S,j=k(l,R),q=G(z,Math.max(y.signedDistanceRangePlane(f).max,g),l,h,R);if(!y.intersectsFrustumConservativeApproximationWithMargin(b,q))continue;const{coordinates:F}=w,H=F.length/3;for(let a=0;a<H;a++){if(!s.validatePoint(Q(w,a,r)))continue;if(!i.projectToScreen(r,ee))continue;if(!X(x,ee,j))continue;const m=c(o(te,r,d),_),{distance:f,radius:b}=K(P,z,m,l,h,R);if(f<g)continue;const S=b/i.computeScreenPixelSizeAtDist(f);E(t,ee,S)&&e.polygonResults.add(this.type,new v(p(r),n,null,()=>this.createGraphic(w,a,r)),u(d,r))}yield}}acquireTechniques(e){const t=10===e.output;return 0!==this._nodes.length&&(q(e.output)||H(e.output)&&3===e.bind.slot||t)?(this._nodes.forAll(t=>this._initNode(e,t)),this._configuration.drawScreenSize=this._passParameters.drawScreenSpace,this._configuration.useFixedSizes=this._passParameters.useFixedSizes,this._configuration.hasSlicePlane=this._slicePlaneEnabled,this._configuration.hasOccludees=e.bind.hasOccludees,this._configuration.clippingEnabled=this._clippingEnabled,this._configuration.hasHighlightMixTexture=t&&null!=e.bind.highlightMixTexture,this._configuration.output=e.output,this._configuration.hasEmission=e.bind.hasEmission,this._context.techniques.get(V,this._configuration)):null}render(e,t){const{rctx:i,bind:s,output:r}=e,n=i.bindTechnique(t,s,this._passParameters),o=10===r,a=s.highlight?.name??null;o&&!a||(o&&s.highlights!==this._highlightsInOrder&&this._updateResolvedHighlights(s.highlights),this._nodes.forAll(t=>{const r=o?t.resolvedHighlightRanges.get(a):null;0===t.coordinates.length||null==t.vao||o&&null==r||(n.assertCompatibleVertexAttributeLocations(t.vao),n.bindDraw(s,this._passParameters,t),i.bindVAO(t.vao),o?this._renderHighlightFragments(e,r):i.drawArrays(U.POINTS,0,t.coordinates.length/3))}))}_renderHighlightFragments(e,t){const{rctx:i}=e;for(let s=0;s<t.length;s+=2)i.drawArrays(U.POINTS,t[s],t[s+1])}set useFixedSizes(e){this._passParameters.useFixedSizes!==e&&(this._passParameters.useFixedSizes=e,this._requestRender())}get useFixedSizes(){return this._passParameters.useFixedSizes}set scaleFactor(e){this._passParameters.scaleFactor!==e&&(this._passParameters.scaleFactor=e,this._requestRender())}get scaleFactor(){return this._passParameters.scaleFactor}set minSizePx(e){this._passParameters.minSizePx!==e&&(this._passParameters.minSizePx=e,this._requestRender())}get minSizePx(){return this._passParameters.minSizePx}set useRealWorldSymbolSizes(e){this._passParameters.useRealWorldSymbolSizes!==e&&(this._passParameters.useRealWorldSymbolSizes=e,this._requestRender())}get useRealWorldSymbolSizes(){return this._passParameters.useRealWorldSymbolSizes}set size(e){this._passParameters.size!==e&&(this._passParameters.size=e,this._requestRender())}get size(){return this._passParameters.size}set sizePx(e){this._passParameters.sizePx!==e&&(this._passParameters.sizePx=e,this._requestRender())}get sizePx(){return this._passParameters.sizePx}set clippingBox(e){b(this._passParameters.clipBox,e||S)}get _clippingEnabled(){return!w(this._passParameters.clipBox,S,(e,t)=>e===t)}get slicePlaneEnabled(){return this._slicePlaneEnabled}set slicePlaneEnabled(e){this._slicePlaneEnabled!==e&&(this._slicePlaneEnabled=e,this._requestRender())}addNode(e){this._nodes.push(e),e.clearHighlights(),this._highlights.nodeAdded(e),this._requestRender()}removeNode(e){let i=null;return this._nodes.filterInPlace(s=>s.id!==e||(i=s,s.vao=t(s.vao),this._highlights.nodeRemoved(s),!1)),this._requestRender(),i}forEachNode(e){this._nodes.forEach(e)}removeAll(){this._nodes.forAll(e=>e.vao=t(e.vao)),this._highlights.removeAll(),this._nodes.clear(),this._requestRender()}highlight(e,t){return this._highlights.add(e,t)}_addHighlights(e,t,i){for(const s of t)e.addHighlight(s,i);this._highlightsInOrder&&e.updateResolvedHighlights(this._highlightsInOrder),this._requestRender()}_removeHighlight(e,t){e.removeHighlight(t),this._highlightsInOrder&&e.updateResolvedHighlights(this._highlightsInOrder),this._requestRender()}_initNode(e,t){t.vao??=new I(e.rctx,new Map([["positions",new D(e.rctx,N,t.coordinates)],["colors",new D(e.rctx,T,t.rgb)]]))}_requestRender(){this._context&&this._context.requestRender()}_updateResolvedHighlights(e){this._highlightsInOrder=e,this._nodes.forAll(t=>t.updateResolvedHighlights(e))}};function G(e,t,i,s,r){if(i.drawScreenSpace)return i.fixedSize*t*s;const n=M(r)*t*s;return i.useFixedSizes?Math.min(i.fixedSize/2,n):i.screenMinSize>0?Math.min(Math.max(i.screenMinSize*t*s,e/2),n):Math.min(e/2,n)}function L(e,t,i,s,r){return i.drawScreenSpace?0:G(e,t,i,s,r)}function k(e,t){return e.drawScreenSpace?e.fixedSize/2:M(t)/2}e([r({constructOnly:!0})],W.prototype,"createGraphic",void 0),W=e([n("esri.views.3d.layers.i3s.PointCloudRenderer")],W);class J{constructor(){this.distance=0,this.radius=0}}function K(e,t,i,s,r,n){const o=i-L(t,i,s,r,n);return e.distance=o,e.radius=G(t,o,s,r,n),e}function Q(e,t,i=g()){return i[0]=e.origin[0]+e.coordinates[3*t],i[1]=e.origin[1]+e.coordinates[3*t+1],i[2]=e.origin[2]+e.coordinates[3*t+2],i}function X(e,t,i){return t[0]>=e[0]-i&&t[0]<=e[2]+i&&t[1]>=e[1]-i&&t[1]<=e[3]+i}class Y{constructor(){this.node=null,this.pointId=null,this.point=null,this.dist=null,this.normal=null,this.layerViewUid=""}}function Z(e){return null!=e.dist&&null!=e.point&&null!=e.pointId&&null!=e.node}const $=g(),ee=s(),te=g(),ie=R();export{W as PointCloudRenderer};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- function t(t){const e=t.renderer,n=e?.type,o=e?.toJSON()??null;let l=null,i=!1;const a=t.attributeStorageInfo;"point-cloud-unique-value"===n||"point-cloud-stretch"===n||"point-cloud-class-breaks"===n?l=u(a,e.field):"point-cloud-rgb"===n?(l=r(a,e.field),i=null!=l):(l=r(a,"RGB"),i=null!=l);let s=null;return e?.colorModulation&&(s=u(a,e.colorModulation.field)),{rendererJSON:o,isRGBRenderer:i,primaryAttribute:l,modulationAttribute:s}}function e(t){const e=t.filters;return e?e.map(e=>({filterJSON:e.toJSON(),attributeInfo:u(t.attributeStorageInfo,e.field)})):[]}function n(t){const e=t?.pointSizeAlgorithm;return"splat"===e?.type?e:null}function o(t){const e=t?.pointSizeAlgorithm;return"fixed-size"===e?.type?e:null}function l(t){const e=t?.pointSizeAlgorithm;return!!e?.type&&"fixed-size"===e.type}function r(t,e){for(const n of t??[])if(n.name===e&&null!=n.attributeValues&&"UInt8"===n.attributeValues.valueType&&3===n.attributeValues.valuesPerElement)return{name:e,storageInfo:n,useElevation:!1};return null}function u(t,e){for(const n of t??[])if(n.name===e){const t="embedded-elevation"===n.encoding;return t?{name:e,storageInfo:null,useElevation:t}:{name:e,storageInfo:n,useElevation:t}}return"elevation"===e?.toLowerCase()?{name:e,storageInfo:null,useElevation:!0}:null}export{u as getAttributeInfo,e as getFilterInfo,o as getFixedSizeAlgorithm,t as getRendererInfo,n as getSplatSizeAlgorithm,l as rendererUsesFixedSizes};
2
+ import{diff as t}from"../../../../core/accessorSupport/diffUtils.js";function e(t){const e=t.renderer,n=e?.type,o=e?.toJSON()??null;let r=null,l=!1;const i=t.attributeStorageInfo;"point-cloud-unique-value"===n||"point-cloud-stretch"===n||"point-cloud-class-breaks"===n?r=a(i,e.field):"point-cloud-rgb"===n?(r=u(i,e.field),l=null!=r):(r=u(i,"RGB"),l=null!=r);let s=null;return e?.colorModulation&&(s=a(i,e.colorModulation.field)),{rendererJSON:o,isRGBRenderer:l,primaryAttribute:r,modulationAttribute:s}}function n(t){const e=t.filters;return e?e.map(e=>({filterJSON:e.toJSON(),attributeInfo:a(t.attributeStorageInfo,e.field)})):[]}function o(t){const e=t?.pointSizeAlgorithm;return"splat"===e?.type?e:null}function r(t){const e=t?.pointSizeAlgorithm;return"fixed-size"===e?.type?e:null}function l(t){const e=t?.pointSizeAlgorithm;return!!e?.type&&"fixed-size"===e.type}function i(e,n){if(null==e||null==n||e.type!==n.type)return!1;const o=t(e.toJSON(),n.toJSON());if(null==o)return!0;if("partial"!==o.type)return!1;return Object.keys(o.diff).every(t=>"pointSizeAlgorithm"===t||"pointsPerInch"===t)}function u(t,e){for(const n of t??[])if(n.name===e&&null!=n.attributeValues&&"UInt8"===n.attributeValues.valueType&&3===n.attributeValues.valuesPerElement)return{name:e,storageInfo:n,useElevation:!1};return null}function a(t,e){for(const n of t??[])if(n.name===e){const t="embedded-elevation"===n.encoding;return t?{name:e,storageInfo:null,useElevation:t}:{name:e,storageInfo:n,useElevation:t}}return"elevation"===e?.toLowerCase()?{name:e,storageInfo:null,useElevation:!0}:null}export{i as canUpdateRendererWithoutReload,a as getAttributeInfo,n as getFilterInfo,r as getFixedSizeAlgorithm,e as getRendererInfo,o as getSplatSizeAlgorithm,l as rendererUsesFixedSizes};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import e from"../../../../renderers/PointCloudClassBreaksRenderer.js";import r from"../../../../renderers/PointCloudStretchRenderer.js";import o from"../../../../renderers/PointCloudUniqueValueRenderer.js";import{createGeometryIndexFromSchema as t,createTypedView as n,readBinaryAttribute as l}from"./I3SBinaryReader.js";import{decodeXYZ as s}from"./LEPCC.js";function i(t,n,l,s){const{rendererJSON:i,isRGBRenderer:u}=t;let c=null,a=null;if(n&&u)c=n;else if(n&&"pointCloudUniqueValueRenderer"===i?.type){a=o.fromJSON(i);const e=a.colorUniqueValueInfos;c=new Uint8Array(3*s);const r=d(a.fieldTransformType);for(let o=0;o<s;o++){const t=(r?r(n[o]):n[o])+"";for(let r=0;r<e.length;r++)if(e[r].values.includes(t)){c[3*o]=e[r].color.r,c[3*o+1]=e[r].color.g,c[3*o+2]=e[r].color.b;break}}}else if(n&&"pointCloudStretchRenderer"===i?.type){a=r.fromJSON(i);const e=a.stops;c=new Uint8Array(3*s);const o=d(a.fieldTransformType);for(let r=0;r<s;r++){const t=o?o(n[r]):n[r],l=e.length-1;if(t<e[0].value)c[3*r]=e[0].color.r,c[3*r+1]=e[0].color.g,c[3*r+2]=e[0].color.b;else if(t>=e[l].value)c[3*r]=e[l].color.r,c[3*r+1]=e[l].color.g,c[3*r+2]=e[l].color.b;else for(let o=1;o<e.length;o++)if(t<e[o].value){const n=(t-e[o-1].value)/(e[o].value-e[o-1].value);c[3*r]=e[o].color.r*n+e[o-1].color.r*(1-n),c[3*r+1]=e[o].color.g*n+e[o-1].color.g*(1-n),c[3*r+2]=e[o].color.b*n+e[o-1].color.b*(1-n);break}}}else if(n&&"pointCloudClassBreaksRenderer"===i?.type){a=e.fromJSON(i);const r=a.colorClassBreakInfos;c=new Uint8Array(3*s);const o=d(a.fieldTransformType);for(let e=0;e<s;e++){const t=o?o(n[e]):n[e];for(let o=0;o<r.length;o++)if(t>=r[o].minValue&&t<=r[o].maxValue){c[3*e]=r[o].color.r,c[3*e+1]=r[o].color.g,c[3*e+2]=r[o].color.b;break}}}else c=new Uint8Array(3*s).fill(255);if(l&&a?.colorModulation){const e=a.colorModulation.minValue,r=a.colorModulation.maxValue,o=.3;for(let t=0;t<s;t++){const n=l[t],s=n>=r?1:n<=e?o:o+(1-o)*(n-e)/(r-e);c[3*t]=s*c[3*t],c[3*t+1]=s*c[3*t+1],c[3*t+2]=s*c[3*t+2]}}return c}function u(e,r){if(null==e.encoding||""===e.encoding){const o=t(r,e);if(null==o.vertexAttributes.position)return;const l=n(r,o.vertexAttributes.position),s=o.header.fields,i=[s.offsetX,s.offsetY,s.offsetZ],u=[s.scaleX,s.scaleY,s.scaleZ],c=l.length/3,a=new Float64Array(3*c);for(let e=0;e<c;e++)a[3*e]=l[3*e]*u[0]+i[0],a[3*e+1]=l[3*e+1]*u[1]+i[1],a[3*e+2]=l[3*e+2]*u[2]+i[2];return a}if("lepcc-xyz"===e.encoding)return s(r).result}function c(e,r,o){return e?.attributeInfo.useElevation?r?a(r,o):null:e?.attributeInfo.storageInfo?l(e.attributeInfo.storageInfo,e.buffer,o,!0):null}function a(e,r){const o=new Float64Array(r);for(let t=0;t<r;t++)o[t]=e[3*t+2];return o}function f(e,r,o,t,n){const l=e.length/3;let s=0;for(let i=0;i<l;i++){let l=!0;for(let e=0;e<t.length&&l;e++){const{filterJSON:r}=t[e],o=n[e].values[i];switch(r.type){case"pointCloudValueFilter":{const e="exclude"===r.mode;r.values.includes(o)===e&&(l=!1);break}case"pointCloudBitfieldFilter":{const e=b(r.requiredSetBits),t=b(r.requiredClearBits);(o&e)===e&&0===(o&t)||(l=!1);break}case"pointCloudReturnFilter":{const e=15&o,t=o>>>4&15,n=t>1,s=1===e,i=e===t;let u=!1;for(const o of r.includedReturns)if("last"===o&&i||"firstOfMany"===o&&s&&n||"lastOfMany"===o&&i&&n||"single"===o&&!n){u=!0;break}u||(l=!1);break}}}l&&(o[s]=i,e[3*s]=e[3*i],e[3*s+1]=e[3*i+1],e[3*s+2]=e[3*i+2],r[3*s]=r[3*i],r[3*s+1]=r[3*i+1],r[3*s+2]=r[3*i+2],s++)}return s}function d(e){switch(e){default:case null:case"none":return e=>e;case"low-four-bit":return e=>15&e;case"high-four-bit":return e=>(240&e)>>4;case"absolute-value":return e=>Math.abs(e);case"modulo-ten":return e=>e%10}}function b(e){let r=0;for(const o of e||[])r|=1<<o;return r}export{a as elevationFromPositions,i as evaluateRenderer,f as filterInPlace,c as getAttributeValues,u as readGeometry};
2
+ import e from"../../../../renderers/PointCloudClassBreaksRenderer.js";import r from"../../../../renderers/PointCloudStretchRenderer.js";import o from"../../../../renderers/PointCloudUniqueValueRenderer.js";import{createGeometryIndexFromSchema as t,createTypedView as l,readBinaryAttribute as n}from"./I3SBinaryReader.js";import{decodeXYZ as s}from"./LEPCC.js";function i(t,l,n,s){const{rendererJSON:i,isRGBRenderer:u}=t;let a=null,c=null;if(l&&u)a=l;else if(l&&"pointCloudUniqueValueRenderer"===i?.type){c=o.fromJSON(i);const e=c.colorUniqueValueInfos;a=new Uint8Array(3*s);const r=p(c.fieldTransformType);for(let o=0;o<s;o++){const t=(r?r(l[o]):l[o])+"";for(let r=0;r<e.length;r++)if(e[r].values.includes(t)){a[3*o]=e[r].color.r,a[3*o+1]=e[r].color.g,a[3*o+2]=e[r].color.b;break}}}else if(l&&"pointCloudStretchRenderer"===i?.type){c=r.fromJSON(i);const e=c.stops;a=new Uint8Array(3*s);const o=p(c.fieldTransformType);for(let r=0;r<s;r++){const t=o?o(l[r]):l[r],n=e.length-1;if(t<e[0].value)a[3*r]=e[0].color.r,a[3*r+1]=e[0].color.g,a[3*r+2]=e[0].color.b;else if(t>=e[n].value)a[3*r]=e[n].color.r,a[3*r+1]=e[n].color.g,a[3*r+2]=e[n].color.b;else for(let o=1;o<e.length;o++)if(t<e[o].value){const l=(t-e[o-1].value)/(e[o].value-e[o-1].value);a[3*r]=e[o].color.r*l+e[o-1].color.r*(1-l),a[3*r+1]=e[o].color.g*l+e[o-1].color.g*(1-l),a[3*r+2]=e[o].color.b*l+e[o-1].color.b*(1-l);break}}}else if(l&&"pointCloudClassBreaksRenderer"===i?.type){c=e.fromJSON(i);const r=c.colorClassBreakInfos;a=new Uint8Array(3*s);const o=p(c.fieldTransformType);for(let e=0;e<s;e++){const t=o?o(l[e]):l[e];for(let o=0;o<r.length;o++)if(t>=r[o].minValue&&t<=r[o].maxValue){a[3*e]=r[o].color.r,a[3*e+1]=r[o].color.g,a[3*e+2]=r[o].color.b;break}}}else a=new Uint8Array(3*s).fill(255);if(n&&c?.colorModulation){const e=c.colorModulation.minValue,r=c.colorModulation.maxValue,o=.3;for(let t=0;t<s;t++){const l=n[t],s=l>=r?1:l<=e?o:o+(1-o)*(l-e)/(r-e);a[3*t]=s*a[3*t],a[3*t+1]=s*a[3*t+1],a[3*t+2]=s*a[3*t+2]}}return a}function u(e,r){if(null==e.encoding||""===e.encoding){const o=t(r,e);if(null==o.vertexAttributes.position)return;const n=l(r,o.vertexAttributes.position),s=o.header.fields,i=[s.offsetX,s.offsetY,s.offsetZ],u=[s.scaleX,s.scaleY,s.scaleZ],a=n.length/3,c=new Float64Array(3*a);for(let e=0;e<a;e++)c[3*e]=n[3*e]*u[0]+i[0],c[3*e+1]=n[3*e+1]*u[1]+i[1],c[3*e+2]=n[3*e+2]*u[2]+i[2];return c}if("lepcc-xyz"===e.encoding)return s(r).result}function a(e,r,o){return e?.attributeInfo.useElevation?r?c(r,o):null:e?.attributeInfo.storageInfo?n(e.attributeInfo.storageInfo,e.buffer,o,!0):null}function c(e,r){const o=new Float64Array(r);for(let t=0;t<r;t++)o[t]=e[3*t+2];return o}function f(e,r,o,t,l){const n=e.length/3,s=d(t);let i=0;for(let u=0;u<n;u++){let t=!0;for(let e=0;e<s.length&&t;e++){const{clearMask:r,filterJSON:o,requiredMask:n,valuesSet:i}=s[e],a=l[e].values[u];switch(o.type){case"pointCloudValueFilter":{const e="exclude"===o.mode;i.has(a)===e&&(t=!1);break}case"pointCloudBitfieldFilter":(a&n)===n&&0===(a&r)||(t=!1);break;case"pointCloudReturnFilter":{const e=15&a,r=a>>>4&15,l=r>1,n=1===e,s=e===r;let i=!1;for(const t of o.includedReturns)if("last"===t&&s||"firstOfMany"===t&&n&&l||"lastOfMany"===t&&s&&l||"single"===t&&!l){i=!0;break}i||(t=!1);break}}}t&&(o[i]=u,e[3*i]=e[3*u],e[3*i+1]=e[3*u+1],e[3*i+2]=e[3*u+2],r[3*i]=r[3*u],r[3*i+1]=r[3*u+1],r[3*i+2]=r[3*u+2],i++)}return i}function d(e){return e.map(e=>{const{filterJSON:r}=e;switch(r.type){case"pointCloudValueFilter":return{...e,valuesSet:new Set(r.values)};case"pointCloudBitfieldFilter":return{...e,clearMask:b(r.requiredClearBits),requiredMask:b(r.requiredSetBits)};default:return e}})}function p(e){switch(e){default:case null:case"none":return e=>e;case"low-four-bit":return e=>15&e;case"high-four-bit":return e=>(240&e)>>4;case"absolute-value":return e=>Math.abs(e);case"modulo-ten":return e=>e%10}}function b(e){let r=0;for(const o of e||[])r|=1<<o;return r}export{c as elevationFromPositions,i as evaluateRenderer,f as filterInPlace,a as getAttributeValues,u as readGeometry};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{PrimitiveType as t}from"../../../webgl/enums.js";const n={Points:null,Lines:null,LineStrip:null,Triangles:t.TRIANGLES,TriangleStrip:t.TRIANGLE_STRIP,NotSet:null},e={Opaque:1,Mask:2,Blend:0},l={Back:2,Front:1,None:0,NotSet:0},o={WrapYBit:{s:33071,t:10497},WrapXBit:{s:10497,t:33071},WrapXy:{s:10497,t:10497},None:{s:33071,t:33071},NotSet:{s:33071,t:33071}},r={U8:1,I8:1,U16:2,I16:2,U32:4,I32:4,F32:4,F64:8,Utf8String:1,NotSet:1};export{e as alphaModeConversion,l as faceCullingConversion,r as lyr3DTypeToByteSize,n as primTypeConversion,o as wrapModeConversion};
2
+ import{PrimitiveType as t}from"../../../webgl/enums.js";const n={Points:null,Lines:null,LineStrip:null,Triangles:t.TRIANGLES,TriangleStrip:t.TRIANGLE_STRIP,NotSet:null},e={Opaque:1,Mask:2,Blend:0},l={Back:2,Front:1,None:0,NotSet:0},s={WrapYBit:{s:33071,t:10497},WrapXBit:{s:10497,t:33071},WrapXy:{s:10497,t:10497},None:{s:33071,t:33071},NotSet:{s:33071,t:33071}};export{e as alphaModeConversion,l as faceCullingConversion,n as primTypeConversion,s as wrapModeConversion};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{cyclicalPI as t}from"../../../../core/Cyclical.js";import{deg2rad as e,clamp as n,acosClamped as r,asinClamped as o}from"../../../../core/mathUtils.js";import{createScreenPointArray as i}from"../../../../core/screenUtils.js";import{fromRotation as a,exactEquals as s,rotate as c,multiply as u}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{IDENTITY as l,create as m}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{set as f}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{create as p}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{length as h,dot as M,subtract as g,normalize as y,squaredDistance as d,copy as b,transformMat4 as x,add as j,distance as v,cross as P,scale as w,lerp as z,crossAndNormalize as I,scaleAndAdd as S,set as T}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as R}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{create as A,axis as q,fromPoints as H,wrapAxisAngle as U}from"../../../../geometry/support/axisAngle.js";import{coordinateSystemFromOneAxisAndNormalVector as G,vectorCoordinates as k}from"../../../../geometry/support/coordinateSystem.js";import{create as E,fromNormalAndOffset as F,intersectRay as C,fromPositionAndNormal as O,distance as W,projectPoint as B,projectVector as D}from"../../../../geometry/support/plane.js";import{create as J}from"../../../../geometry/support/ray.js";import{Sphere as K}from"../../../../geometry/support/sphere.js";import{sm4d as L,sv3d as N}from"../../../../geometry/support/vectorStacks.js";import{fromScreenAtEye as Q,fromScreen as V}from"../../support/geometryUtils/ray.js";import{intersectScreen as X}from"../../support/geometryUtils/sphere.js";import Y from"../../webgl/RenderCamera.js";import{terrainId as Z}from"../../webgl-engine/lib/verticalOffsetUtils.js";const $=30,_=[1,3e8],tt=8,et=[200,1508e5],nt=5,rt=50,ot=5,it=10,at=80,st=90,ct=1e-6,ut={exclude:new Set([Z])};function lt(t,e,n){return n[0]=e[0]/(t.fullWidth/t.pixelRatio),n[1]=e[1]/(t.fullHeight/t.pixelRatio),n}function mt(t){for(;t>Math.PI;)t-=2*Math.PI;for(;t<-Math.PI;)t+=2*Math.PI;return t}function ft(t,e,n){const r=a(L.get(),n[3],q(n));null==r||s(r,l)||(g(ke,t.eye,e),x(ke,ke,r),t.eye=j(ke,ke,e),g(ke,t.center,e),x(ke,ke,r),t.center=j(ke,ke,e),t.up=x(ke,t.up,r))}function pt(t,e,n,r){return C(t,V(e,n,Be),r)}function ht(t,e,n,r){return C(t,Q(e,n,Be),r)}function Mt(t,e,n,r){const o=N.get();let i=1-n;g(o,e,t.eye);const a=h(o);let s=a*(1-i);i>=0&&s<r&&(s=r,i=-(s-a)/a),Math.abs(a-s)<ct||(w(o,o,i),t.eye=j(ke,t.eye,o),t.center=z(ke,t.center,e,i))}function gt(t,e,n){e.getScreenCenter(yt),X(t,e,yt,ke)&&(e.center=ke);const r=e.distance,o=r*n;if(Math.abs(r-o)<ct)return;const i=w(N.get(),e.viewForward,o);e.eye=g(ke,e.center,i)}const yt=i();function dt(t,e){T(e,0,0,0);for(const n of t)j(e,e,n);w(e,e,1/t.length)}function bt(t,e,n,r){return Math.sin(t/h(e))*(n+r.radius)}function xt(t,e,n,r){return bt(Math.PI/2,e,n,r)+(t-Math.PI/2)}const jt={Elevation:3e4,Angle:e(16)},vt=e(80);function Pt(t,e,n,r,o,i){const a=R(),s=new K;let c=!0,u=!0;const{eye:l}=e;return t.intersectScreen(n,a,i)&&xe(l,a,r)?s.radius=h(a):(u=!1,e.aboveGround&&0!==o?s.radius=Math.max(h(e.center),.9*r):s.radius=h(e.eye)-e.relativeElevation,1===o?St(s,e,n,a):c=X(s,e,n,a)),{sphere:s,scenePickPoint:c?a:null,hasGeometryIntersection:u}}function wt(t,e,n,r){const o=t.relativeElevation;if(o>jt.Elevation&&"global"===r)return 1;Q(t,e,De);const i=Math.sign(o),a=n.worldUpAtPosition(t.eye,ke);return-i*M(a,De.direction)<Math.sin(jt.Angle)*h(De.direction)?0:1}function zt(t,e,n){g(It,n,e),t.eye=g(ke,t.eye,It),t.center=g(ke,t.center,It)}const It=R();function St(t,e,n,r){const o=Q(e,n,Be);return null!=o&&(t.closestPointOnSilhouette(o,Tt),t.intersectRay(o,r)?!(d(Tt,o.origin)<d(r,o.origin))||(b(r,Tt),!1):(g(Rt,e.eye,e.center),y(Rt,Rt),F(Rt,-M(y(Rt,Rt),Tt),At),C(At,o,r),!1))}const Tt=R(),Rt=R(),At=E(),qt=R(),Ht=R(),Ut=i();function Gt(t,e){return D(e,t.viewForward,qt),j(Ht,t.eye,qt),t.projectToScreen(Ht,Ut),Ut[1]}const kt=R(),Et=E(),Ft=R(),Ct=R(),Ot=R(),Wt=R(),Bt=R(),Dt=R(),Jt=R(),Kt=R(),Lt=i(),Nt=i(),Qt=J();function Vt(t,e,n){const r=t.eye;if(v(e.center,r)<e.radius)return null;const o=t.up;Q(t,n,Qt);const i=e.radius;if(I(kt,o,Qt.direction),O(r,kt,Et),W(Et,e.center)>i)return null;B(Et,e.center,Ft);const a=v(e.center,Ft),s=Math.sqrt(i**2-a**2);g(Ct,r,Ft),y(Ot,Ct),I(Wt,kt,Ot);const c=M(Ct,Ot),u=M(Ct,Wt),l=Math.sqrt(c**2+u**2),m=s**2/l**2,f=s/l**2*Math.sqrt(l**2-s**2),p=m*c,h=f*-u,d=m*u,b=f*c,x=p-h,P=d+b,z=d-b;return j(Bt,Ft,S(Bt,w(Bt,Ot,p+h),Wt,P)),j(Dt,Ft,S(Dt,w(Dt,Ot,x),Wt,z)),g(Jt,Bt,r),g(Kt,Dt,r),t.projectToScreen(Bt,Lt),t.projectToScreen(Dt,Nt),Math.min(Lt[1],Nt[1])}function Xt(t,e,n){return e?t>n:t<n}const Yt=.05,Zt=12;function $t(t,e){const n=t.fullHeight/t.pixelRatio,r=Math.max(e,n-e);return Math.max(Zt,Yt*r)}function _t(t,e){const n=t.fullHeight/t.pixelRatio;return Math.min(n,e+$t(t,e))}function te(t,e){return Math.max(0,e-$t(t,e))}function ee(t,e,n,r){return Je[0]=n,Je[1]=r,t.intersectRay(Q(e,Je,Be),ke)}function ne(t,e,n,r){return Je[0]=n,Je[1]=r,C(t,Q(e,Je,Be),ke)}function re(i,a,s,c,u,l){let m=0;if(P(Ce,i,a),g(Ee,i,a),h(i)<=u||!c.aboveGround){P(s,Ee,c.eye);const f=M(i,a)/(h(i)*h(a));if(f<.9999)m=r(f);else{const t=h(P(R(),i,a))/(h(i)*h(a));m=o(t)}const p=Math.cos(n(t.normalize(e(l)),0,vt));m=-m-Math.max(0,h(a)-u)/(p*u)}else g(oe,c.eye,c.center),P(s,Ee,oe),m=-h(Ee)/u;return y(s,s),w(s,s,h(Ce)),m}const oe=R();function ie(o,i,a,s){let c,u;const l=Math.cos(n(t.normalize(e(s)),0,vt));return c=i>a?-(i-a)/(l*a):i<-a?Math.PI-(i+a)/(l*a):r(i/a),u=o>a?-(o-a)/(l*a):o<-a?Math.PI-(o+a)/(l*a):r(o/a),(u-c)*a}function ae(t,e,n,r,o,i,a,s,c,u){const l=ie(t[2],e[2],i.radius,s),m=c?ie(t[0],e[0],i.radius,180):e[0]-t[0],p=Math.sin(a)*m-Math.cos(a)*l,h=Math.cos(a)*m+Math.sin(a)*l;y(ke,o);const g=c?p/Math.sqrt(Math.abs(i.radius**2-M(n,ke)**2)):p/i.radius,d=h/Math.sqrt(Math.abs(i.radius**2-M(n,r)**2));f(u,g,d)}function se(t,e,n,r,o,i,a,s,c,u){P(Ce,t,e),G(i.up,i.eye,we,ze,Ie),G([0,0,1],i.eye,je,ve,Pe),b(n,ve),b(r,je),y(n,n),w(n,n,h(Ce)),k(t,y(ze,ze),y(Ie,Ie),y(we,we),Se),k(e,ze,Ie,we,Te),ae(Se,Te,t,je,ve,a,s,c,u,o)}function ce(t,e,n,r,o,i,s){a(qe,o,r),a(He,s,i),u(Ue,qe,He),g(e,t,n),x(e,e,Ue),j(e,e,n)}function ue(t,e,n,r,o,i){a(qe,r,n),a(He,i,o),u(Ue,qe,He),g(ke,t.eye,e),x(ke,ke,Ue),t.eye=j(ke,ke,e),g(ke,t.center,e),x(ke,ke,Ue),t.center=j(ke,ke,e),g(ke,t.up,e),x(ke,ke,Ue),t.up=j(ke,ke,e)}const le={Pole:.95,Angle:e(18),Tilt:45,TiltHysteresisMargin:1e-7};let me=!1;function fe(t,e,n,r,o,i){const a=Math.abs(r)>Math.PI-le.Angle||Math.abs(r)<le.Angle,s=(Math.abs(t[2])<n*le.Pole||Math.abs(e)>n)&&i;return a&&s?!me&&o<le.Tilt-le.TiltHysteresisMargin?me=!0:me&&o>le.Tilt+le.TiltHysteresisMargin&&(me=!1):me=!1,me}function pe(t,e,n,r,o,i){if(i)H(n,r,Ae),ft(e,t.center,Ae);else{const i=re(n,r,Oe,e,t.radius,o);ft(e,t.center,U(Oe,i))}}function he(t,e,n,r,o,i,a){const s=a?20:1,c=1e-12;let u,l;b(Ge,r),Fe.copyFrom(e);for(let m=0;m<s&&d(n,Ge)>c&&(u=d(n,Ge),se(n,Ge,ve,je,Re,Fe,t,o,i,a),ue(Fe,t.center,je,Re[1],ve,Re[0]),ce(Ge,Ge,t.center,je,Re[1],ve,Re[0]),l=d(n,Ge),l<u||0===m);m++)e.copyFrom(Fe)}function Me(n,r,o,i,a,s,c){fe(o,M(r.up,o),n.radius,-t.normalize(e(a)),s,r.aboveGround)?he(n,r,o,i,-t.normalize(e(a)),s,c):pe(n,r,o,i,s,c)}function ge(t,e,n,r,o,i){const{eye:a}=t;G([0,0,1],a,je,ve,Pe);const s=e.translation[0]*n.pan,u="zoom"===o.mode?0:e.translation[1]*n.pan,l=Math.max(Math.sqrt(Math.abs(1-M(t.center,je)**2/h(t.center)**2)),.5),m=(Math.sin(i)*u+Math.cos(i)*s)/l,f=-Math.cos(i)*u+Math.sin(i)*s;switch(c(r.pan.matrix,r.pan.matrix,m,je),r.pan.enabled=!0,o.mode){case"pan":c(r.pan.matrix,r.pan.matrix,f,ve),r.pan.enabled=!0;break;case"zoom":r.zoom=-e.translation[1]*n.zoom}}function ye(t,e,n,r,o){const{eye:i,viewRight:a}=t,s=P(N.get(),a,i),u=e.translation[0]*n.pan;switch(0!==u&&(c(r.pan.matrix,r.pan.matrix,-u,s),r.pan.enabled=!0),o.mode){case"pan":{const t=e.translation[1]*n.pan;0!==t&&(c(r.pan.matrix,r.pan.matrix,t,a),r.pan.enabled=!0);break}case"zoom":r.zoom=-e.translation[1]*n.zoom}}function de(n,r,o,i,a,s,c,u,l){fe(n.center,M(n.up,n.center),h(n.center),-t.normalize(e(s)),c,r.aboveGround)?ge(r,o,i,u,l,-t.normalize(e(a))):ye(r,o,i,u,l)}function be(t,e,n=1/0){const r=Math.abs(M(t,e));return Math.min(n,1/r)}function xe(t,e,n){const r=v(t,e),o=h(t);return r<Math.max(o,n)}const je=R(),ve=R(),Pe=R(),we=R(),ze=R(),Ie=R(),Se=R(),Te=R(),Re=p(),Ae=A(),qe=m(),He=m(),Ue=m(),Ge=R(),ke=R(),Ee=R();let Fe=new Y;const Ce=R(),Oe=R();function We(){Fe=new Y}const Be={origin:R(),direction:R()},De={origin:R(),direction:R()},Je=i();export{vt as TiltThresholdPanningSpeed,jt as VerticalPanTresholds,zt as applyPanPlanar,pe as applyPanSphericalDirectRotation,he as applyPanSphericalPreserveHeading,ft as applyRotation,ue as applyRotationWithTwoAxes,gt as applyZoomOnSphere,Mt as applyZoomToPoint,dt as centroid,We as cleanupNavigationUtils,te as computeHorizonDownLimitScreenY,$t as computeHorizonPadding,_t as computeHorizonUpLimitScreenY,ct as distanceComparisonTolerance,ut as excludeTerrain,Gt as findPlaneHorizonY,Vt as findSphereHorizonY,be as getTiltScaleFactor,wt as inferNavigationMode,pt as intersectPlaneFromScreenPoint,ht as intersectPlaneFromScreenPointAtEye,ne as intersectsPlaneAtScreenPoint,ee as intersectsSphereAtScreenPoint,xe as isHitOnSamePlanetSide,ie as lengthFromPoints,nt as maxPanDistanceModifier,ot as maxRotatePivotDistanceModifier,$ as maxZoomPivotDistanceModifier,tt as maxZoomStepDistanceModifier,rt as minPinchAndPanCameraHeight,it as minRotatePivotDistance,lt as normalizeCoordinate,mt as normalizeRotationDelta,xt as offSurfaceTiltToEyeTiltGlobal,bt as onSurfaceTiltToEyeTiltGlobal,de as panMotionToRotationMatrix,Me as panToPosition,Pt as pickPointAndInitSphere,at as pivotSearchAreaSize,le as preservingHeadingThresholds,Yt as relativeHorizonPanPadding,st as rotatePivotSearchAreaSize,ce as rotatePointAroundTwoAxes,re as rotationAngleAndAxisDirectRotation,se as rotationAnglesAndAxesHeadingPreserving,ae as rotationAnglesHeadingPreserving,Xt as shouldClampScreenY,fe as shouldPreserveHeading,St as sphereOrPlanePointFromScreenPoint,_ as zoomPivotDistanceClamp,et as zoomStepDistanceClamp};
2
+ import{cyclicalPI as t}from"../../../../core/Cyclical.js";import{deg2rad as e,clamp as n,acosClamped as r,asinClamped as o}from"../../../../core/mathUtils.js";import{createScreenPointArray as i}from"../../../../core/screenUtils.js";import{fromRotation as a,exactEquals as s,rotate as c,multiply as u}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{IDENTITY as l,create as m}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{set as f}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{create as p}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{length as h,dot as M,subtract as g,normalize as y,squaredDistance as d,copy as b,transformMat4 as x,add as j,distance as v,cross as w,scale as P,lerp as z,crossAndNormalize as I,scaleAndAdd as S,set as T}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as A}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{create as R,axis as q,fromPoints as F,wrapAxisAngle as H}from"../../../../geometry/support/axisAngle.js";import{coordinateSystemFromOneAxisAndNormalVector as U,vectorCoordinates as G}from"../../../../geometry/support/coordinateSystem.js";import{create as k,fromNormalAndOffset as E,intersectRay as C,fromPositionAndNormal as O,distance as W,projectPoint as B,projectVector as D}from"../../../../geometry/support/plane.js";import{create as J}from"../../../../geometry/support/ray.js";import{Sphere as K}from"../../../../geometry/support/sphere.js";import{sm4d as L,sv3d as N}from"../../../../geometry/support/vectorStacks.js";import{fromScreenAtEye as Q,fromScreen as V}from"../../support/geometryUtils/ray.js";import{intersectScreen as X}from"../../support/geometryUtils/sphere.js";import Y from"../../webgl/RenderCamera.js";import{terrainId as Z}from"../../webgl-engine/lib/verticalOffsetUtils.js";const $=30,_=[1,3e8],tt=8,et=[200,1508e5],nt=5,rt=50,ot=5,it=10,at=80,st=90,ct=1e-6,ut={exclude:new Set([Z])};function lt(t,e,n){return n[0]=e[0]/(t.fullWidth/t.pixelRatio),n[1]=e[1]/(t.fullHeight/t.pixelRatio),n}function mt(t){for(;t>Math.PI;)t-=2*Math.PI;for(;t<-Math.PI;)t+=2*Math.PI;return t}function ft(t,e,n){const r=a(L.get(),n[3],q(n));null==r||s(r,l)||(g(Fe,t.eye,e),x(Fe,Fe,r),t.eye=j(Fe,Fe,e),g(Fe,t.center,e),x(Fe,Fe,r),t.center=j(Fe,Fe,e),t.up=x(Fe,t.up,r))}function pt(t,e,n,r){return C(t,V(e,n,Ce),r)}function ht(t,e,n,r){return C(t,Q(e,n,Ce),r)}function Mt(t,e,n,r){const o=N.get();let i=1-n;g(o,e,t.eye);const a=h(o);let s=a*(1-i);i>=0&&s<r&&(s=r,i=-(s-a)/a),Math.abs(a-s)<ct||(P(o,o,i),t.eye=j(Fe,t.eye,o),t.center=z(Fe,t.center,e,i))}function gt(t,e,n){e.getScreenCenter(yt),X(t,e,yt,Fe)&&(e.center=Fe);const r=e.distance,o=r*n;if(Math.abs(r-o)<ct)return;const i=P(N.get(),e.viewForward,o);e.eye=g(Fe,e.center,i)}const yt=i();function dt(t,e){T(e,0,0,0);for(const n of t)j(e,e,n);P(e,e,1/t.length)}function bt(t,e,n,r){return Math.sin(t/h(e))*(n+r.radius)}function xt(t,e,n,r){return bt(Math.PI/2,e,n,r)+(t-Math.PI/2)}const jt={Elevation:3e4,Angle:e(16)},vt=e(80);function wt(t,e,n,r,o,i){const a=A(),s=new K;let c=!0,u=!0;const{eye:l}=e;return t.intersectScreen(n,a,i)&&ye(l,a,r)?s.radius=h(a):(u=!1,e.aboveGround&&0!==o?s.radius=Math.max(h(e.center),.9*r):s.radius=h(e.eye)-e.relativeElevation,1===o?St(s,e,n,a):c=X(s,e,n,a)),{sphere:s,scenePickPoint:c?a:null,hasGeometryIntersection:u}}function Pt(t,e,n,r){const o=t.relativeElevation;if(o>jt.Elevation&&"global"===r)return 1;Q(t,e,Oe);const i=Math.sign(o),a=n.worldUpAtPosition(t.eye,Fe);return-i*M(a,Oe.direction)<Math.sin(jt.Angle)*h(Oe.direction)?0:1}function zt(t,e,n){g(It,n,e),t.eye=g(Fe,t.eye,It),t.center=g(Fe,t.center,It)}const It=A();function St(t,e,n,r){const o=Q(e,n,Ce);return null!=o&&(t.closestPointOnSilhouette(o,Tt),t.intersectRay(o,r)?!(d(Tt,o.origin)<d(r,o.origin))||(b(r,Tt),!1):(g(At,e.eye,e.center),y(At,At),E(At,-M(y(At,At),Tt),Rt),C(Rt,o,r),!1))}const Tt=A(),At=A(),Rt=k(),qt=A(),Ft=A(),Ht=i();function Ut(t,e){return D(e,t.viewForward,qt),j(Ft,t.eye,qt),t.projectToScreen(Ft,Ht),Ht[1]}const Gt=A(),kt=k(),Et=A(),Ct=A(),Ot=A(),Wt=A(),Bt=A(),Dt=A(),Jt=A(),Kt=A(),Lt=i(),Nt=J();function Qt(t,e,n){const r=t.eye;if(v(e.center,r)<e.radius)return null;const o=t.up;Q(t,n,Nt);const i=e.radius;if(I(Gt,o,Nt.direction),O(r,Gt,kt),W(kt,e.center)>i)return null;B(kt,e.center,Et);const a=v(e.center,Et),s=Math.sqrt(i**2-a**2);g(Ct,r,Et),y(Ot,Ct),I(Wt,Gt,Ot);const c=M(Ct,Ot),u=M(Ct,Wt),l=Math.sqrt(c**2+u**2),m=s**2/l**2,f=s/l**2*Math.sqrt(l**2-s**2),p=m*c,h=f*-u,d=m*u,b=f*c,x=p-h,w=d+b,z=d-b;j(Bt,Et,S(Bt,P(Bt,Ot,p+h),Wt,w)),j(Dt,Et,S(Dt,P(Dt,Ot,x),Wt,z)),g(Jt,Bt,r),y(Jt,Jt),g(Kt,Dt,r),y(Kt,Kt);return M(t.viewForward,Jt)>=M(t.viewForward,Kt)?t.projectToScreen(Bt,Lt):t.projectToScreen(Dt,Lt),Lt[1]}function Vt(t,e,n){return e?t>n:t<n}const Xt=.05,Yt=12;function Zt(t,e){const n=t.fullHeight/t.pixelRatio,r=Math.max(e,n-e);return Math.max(Yt,Xt*r)}function $t(t,e){const n=t.fullHeight/t.pixelRatio;return Math.min(n,e+Zt(t,e))}function _t(t,e){return Math.max(0,e-Zt(t,e))}function te(i,a,s,c,u,l){let m=0;if(w(Ge,i,a),g(He,i,a),h(i)<=u||!c.aboveGround){w(s,He,c.eye);const f=M(i,a)/(h(i)*h(a));if(f<.9999)m=r(f);else{const t=h(w(A(),i,a))/(h(i)*h(a));m=o(t)}const p=Math.cos(n(t.normalize(e(l)),0,vt));m=-m-Math.max(0,h(a)-u)/(p*u)}else g(ee,c.eye,c.center),w(s,He,ee),m=-h(He)/u;return y(s,s),P(s,s,h(Ge)),m}const ee=A();function ne(o,i,a,s){let c,u;const l=Math.cos(n(t.normalize(e(s)),0,vt));return c=i>a?-(i-a)/(l*a):i<-a?Math.PI-(i+a)/(l*a):r(i/a),u=o>a?-(o-a)/(l*a):o<-a?Math.PI-(o+a)/(l*a):r(o/a),(u-c)*a}function re(t,e,n,r,o,i,a,s,c,u){const l=ne(t[2],e[2],i.radius,s),m=c?ne(t[0],e[0],i.radius,180):e[0]-t[0],p=Math.sin(a)*m-Math.cos(a)*l,h=Math.cos(a)*m+Math.sin(a)*l;y(Fe,o);const g=c?p/Math.sqrt(Math.abs(i.radius**2-M(n,Fe)**2)):p/i.radius,d=h/Math.sqrt(Math.abs(i.radius**2-M(n,r)**2));f(u,g,d)}function oe(t,e,n,r,o,i,a,s,c,u){w(Ge,t,e),U(i.up,i.eye,je,ve,we),U([0,0,1],i.eye,de,be,xe),b(n,be),b(r,de),y(n,n),P(n,n,h(Ge)),G(t,y(ve,ve),y(we,we),y(je,je),Pe),G(e,ve,we,je,ze),re(Pe,ze,t,de,be,a,s,c,u,o)}function ie(t,e,n,r,o,i,s){a(Te,o,r),a(Ae,s,i),u(Re,Te,Ae),g(e,t,n),x(e,e,Re),j(e,e,n)}function ae(t,e,n,r,o,i){a(Te,r,n),a(Ae,i,o),u(Re,Te,Ae),g(Fe,t.eye,e),x(Fe,Fe,Re),t.eye=j(Fe,Fe,e),g(Fe,t.center,e),x(Fe,Fe,Re),t.center=j(Fe,Fe,e),g(Fe,t.up,e),x(Fe,Fe,Re),t.up=j(Fe,Fe,e)}const se={Pole:.95,Angle:e(18),Tilt:45,TiltHysteresisMargin:1e-7};let ce=!1;function ue(t,e,n,r,o,i){const a=Math.abs(r)>Math.PI-se.Angle||Math.abs(r)<se.Angle,s=(Math.abs(t[2])<n*se.Pole||Math.abs(e)>n)&&i;return a&&s?!ce&&o<se.Tilt-se.TiltHysteresisMargin?ce=!0:ce&&o>se.Tilt+se.TiltHysteresisMargin&&(ce=!1):ce=!1,ce}function le(t,e,n,r,o,i){if(i)F(n,r,Se),ft(e,t.center,Se);else{const i=te(n,r,ke,e,t.radius,o);ft(e,t.center,H(ke,i))}}function me(t,e,n,r,o,i,a){const s=a?20:1,c=1e-12;let u,l;b(qe,r),Ue.copyFrom(e);for(let m=0;m<s&&d(n,qe)>c&&(u=d(n,qe),oe(n,qe,be,de,Ie,Ue,t,o,i,a),ae(Ue,t.center,de,Ie[1],be,Ie[0]),ie(qe,qe,t.center,de,Ie[1],be,Ie[0]),l=d(n,qe),l<u||0===m);m++)e.copyFrom(Ue)}function fe(n,r,o,i,a,s,c){ue(o,M(r.up,o),n.radius,-t.normalize(e(a)),s,r.aboveGround)?me(n,r,o,i,-t.normalize(e(a)),s,c):le(n,r,o,i,s,c)}function pe(t,e,n,r,o,i){const{eye:a}=t;U([0,0,1],a,de,be,xe);const s=e.translation[0]*n.pan,u="zoom"===o.mode?0:e.translation[1]*n.pan,l=Math.max(Math.sqrt(Math.abs(1-M(t.center,de)**2/h(t.center)**2)),.5),m=(Math.sin(i)*u+Math.cos(i)*s)/l,f=-Math.cos(i)*u+Math.sin(i)*s;switch(c(r.pan.matrix,r.pan.matrix,m,de),r.pan.enabled=!0,o.mode){case"pan":c(r.pan.matrix,r.pan.matrix,f,be),r.pan.enabled=!0;break;case"zoom":r.zoom=-e.translation[1]*n.zoom}}function he(t,e,n,r,o){const{eye:i,viewRight:a}=t,s=w(N.get(),a,i),u=e.translation[0]*n.pan;switch(0!==u&&(c(r.pan.matrix,r.pan.matrix,-u,s),r.pan.enabled=!0),o.mode){case"pan":{const t=e.translation[1]*n.pan;0!==t&&(c(r.pan.matrix,r.pan.matrix,t,a),r.pan.enabled=!0);break}case"zoom":r.zoom=-e.translation[1]*n.zoom}}function Me(n,r,o,i,a,s,c,u,l){ue(n.center,M(n.up,n.center),h(n.center),-t.normalize(e(s)),c,r.aboveGround)?pe(r,o,i,u,l,-t.normalize(e(a))):he(r,o,i,u,l)}function ge(t,e,n=1/0){const r=Math.abs(M(t,e));return Math.min(n,1/r)}function ye(t,e,n){const r=v(t,e),o=h(t);return r<Math.max(o,n)}const de=A(),be=A(),xe=A(),je=A(),ve=A(),we=A(),Pe=A(),ze=A(),Ie=p(),Se=R(),Te=m(),Ae=m(),Re=m(),qe=A(),Fe=A(),He=A();let Ue=new Y;const Ge=A(),ke=A();function Ee(){Ue=new Y}const Ce={origin:A(),direction:A()},Oe={origin:A(),direction:A()};export{vt as TiltThresholdPanningSpeed,jt as VerticalPanTresholds,zt as applyPanPlanar,le as applyPanSphericalDirectRotation,me as applyPanSphericalPreserveHeading,ft as applyRotation,ae as applyRotationWithTwoAxes,gt as applyZoomOnSphere,Mt as applyZoomToPoint,dt as centroid,Ee as cleanupNavigationUtils,_t as computeHorizonDownLimitScreenY,Zt as computeHorizonPadding,$t as computeHorizonUpLimitScreenY,ct as distanceComparisonTolerance,ut as excludeTerrain,Ut as findPlaneHorizonY,Qt as findSphereHorizonY,ge as getTiltScaleFactor,Pt as inferNavigationMode,pt as intersectPlaneFromScreenPoint,ht as intersectPlaneFromScreenPointAtEye,ye as isHitOnSamePlanetSide,ne as lengthFromPoints,nt as maxPanDistanceModifier,ot as maxRotatePivotDistanceModifier,$ as maxZoomPivotDistanceModifier,tt as maxZoomStepDistanceModifier,rt as minPinchAndPanCameraHeight,it as minRotatePivotDistance,lt as normalizeCoordinate,mt as normalizeRotationDelta,xt as offSurfaceTiltToEyeTiltGlobal,bt as onSurfaceTiltToEyeTiltGlobal,Me as panMotionToRotationMatrix,fe as panToPosition,wt as pickPointAndInitSphere,at as pivotSearchAreaSize,se as preservingHeadingThresholds,Xt as relativeHorizonPanPadding,st as rotatePivotSearchAreaSize,ie as rotatePointAroundTwoAxes,te as rotationAngleAndAxisDirectRotation,oe as rotationAnglesAndAxesHeadingPreserving,re as rotationAnglesHeadingPreserving,Vt as shouldClampScreenY,ue as shouldPreserveHeading,St as sphereOrPlanePointFromScreenPoint,_ as zoomPivotDistanceClamp,et as zoomStepDistanceClamp};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- const t=4096,s=64,e=1024,i=t*s/e,n=4,r=e*n,o=t*s;class h{constructor(t=i){this._pageCount=t;const s=Math.ceil(t/32);this._bitset=new Uint32Array(s)}get pageCount(){return this._pageCount}isAllocated(t){const s=t/32|0,e=t%32;return!!(this._bitset[s]&1<<e)}allocate(t){const s=t/32|0,e=t%32;this._bitset[s]|=1<<e}free(t){const s=t/32|0,e=t%32;this._bitset[s]&=~(1<<e)}findFirstFreePage(){for(let t=0;t<this._bitset.length;t++)if(4294967295!==this._bitset[t])for(let s=0;s<32;s++){const e=32*t+s;if(e>=this._pageCount)break;if(!(this._bitset[t]&1<<s))return e}return null}resize(t){this._pageCount=t;const s=Math.ceil(t/32),e=this._bitset.length;if(s!==e){const t=new Uint32Array(s),i=Math.min(e,s);t.set(this._bitset.subarray(0,i)),this._bitset=t}this._clearExcessBits(this._bitset,t)}_clearExcessBits(t,s){const e=Math.floor((s-1)/32),i=(s-1)%32;if(s>0&&i<31){const s=(1<<i+1)-1;t[e]&=s}e+1<t.length&&t.fill(0,e+1)}}export{h as GaussianSplatAtlasPages,e as gaussiansPerPage,s as initialSplatAtlasTextureHeight,i as initialSplatAtlasTexturePages,o as minExpectedGaussianCount,n as packedGaussianSizeInU32,t as splatAtlasTextureWidth,r as splatPageSizeInU32};
2
+ const t=4096,s=64,e=4096,i=1024,n=1024,r=t*s/n,o=4,h=n*o,a=t*s;class c{constructor(t=r){this._pageCount=t;const s=Math.ceil(t/32);this._bitset=new Uint32Array(s)}get pageCount(){return this._pageCount}isAllocated(t){const s=t/32|0,e=t%32;return!!(this._bitset[s]&1<<e)}allocate(t){const s=t/32|0,e=t%32;this._bitset[s]|=1<<e}free(t){const s=t/32|0,e=t%32;this._bitset[s]&=~(1<<e)}findFirstFreePage(){for(let t=0;t<this._bitset.length;t++)if(4294967295!==this._bitset[t])for(let s=0;s<32;s++){const e=32*t+s;if(e>=this._pageCount)break;if(!(this._bitset[t]&1<<s))return e}return null}resize(t){this._pageCount=t;const s=Math.ceil(t/32),e=this._bitset.length;if(s!==e){const t=new Uint32Array(s),i=Math.min(e,s);t.set(this._bitset.subarray(0,i)),this._bitset=t}this._clearExcessBits(this._bitset,t)}_clearExcessBits(t,s){const e=Math.floor((s-1)/32),i=(s-1)%32;if(s>0&&i<31){const s=(1<<i+1)-1;t[e]&=s}e+1<t.length&&t.fill(0,e+1)}}export{c as GaussianSplatAtlasPages,n as gaussiansPerPage,s as initialSplatAtlasTextureHeight,r as initialSplatAtlasTexturePages,e as maximumSplatAtlasTextureHeight,i as maximumSplatAtlasTextureHeightMobile,a as minExpectedGaussianCount,o as packedGaussianSizeInU32,t as splatAtlasTextureWidth,h as splatPageSizeInU32};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{has}from"../../../../applications/Components/baUtils.js";import{reallocGrowthFactor as t}from"../../../../core/arrayUtils.js";import{initialSplatAtlasTextureHeight as e,GaussianSplatAtlasPages as s,splatAtlasTextureWidth as r,gaussiansPerPage as a}from"./GaussianSplatAtlasPages.js";import{PixelType as i,SizedPixelFormat as o}from"../../../webgl/enums.js";import{DisposableFramebufferObject as l}from"../../../webgl/FramebufferObject.js";import h from"../../../webgl/Texture.js";import{TextureDescriptor as u}from"../../../webgl/TextureDescriptor.js";class c{constructor(t,r,a,i){this._splatAtlasTextureHeight=e,this.texture=null,this._rctx=t,this._fboCache=a,this._onCachedTextureEvicted=i,this.pageAllocator=new s,this._cache=r.newCache("gaussian texture cache",t=>{t.dispose(),this._onCachedTextureEvicted()})}get usedMemory(){return this.texture?.usedMemory??0}ensureTextureAtlas(){if(this.texture?.hasWebGLTextureObject)return;this.texture=null;const t=this._cache.pop("splatTextureAtlas");if(t)return void(this.texture=t);const e=new u;e.height=this._splatAtlasTextureHeight,e.width=r,e.pixelFormat=36249,e.dataType=i.UNSIGNED_INT,e.internalFormat=o.RGBA32UI,e.samplingMode=9728,e.wrapMode=33071,e.isImmutable=!0,this.texture=new h(this._rctx,e),this._updatePageAllocator()}grow(){if(!this.texture)return this.ensureTextureAtlas(),!1;const e=Math.floor(this._splatAtlasTextureHeight*t);if(e>Math.min(has("esri-mobile")?1024:4096,this._rctx.parameters.maxTextureSize))return!1;const s=new l(this._rctx,this.texture),a=this._fboCache.acquire(r,e,"gaussian splat atlas resize",12);return this._rctx.blitFramebuffer(s,a.fbo,16384,9728,0,0,r,this._splatAtlasTextureHeight,0,0,r,this._splatAtlasTextureHeight),this.texture=a.fbo?.detachColorTexture(),s.dispose(),a.dispose(),this._splatAtlasTextureHeight=e,this._updatePageAllocator(),!0}allocatePage(){let t=this.pageAllocator.findFirstFreePage();return null===t&&this.grow()&&(t=this.pageAllocator.findFirstFreePage()),null!==t&&this.pageAllocator.allocate(t),t}freePage(t){this.pageAllocator.free(t)}freePages(t){for(const e of t)this.freePage(e)}update(t,e,s){this.ensureTextureAtlas(),this.texture.updateData(0,t,e,a,1,s)}_updatePageAllocator(){const t=r*this._splatAtlasTextureHeight/a;this.pageAllocator.pageCount!==t&&this.pageAllocator.resize(t)}clear(){this.texture&&(this._cache.put("splatTextureAtlas",this.texture),this.texture=null)}destroy(){this._onCachedTextureEvicted=()=>{},this._cache.destroy(),this.texture?.dispose(),this.texture=null}}export{c as GaussianSplatTextureAtlas};
2
+ import{has}from"../../../../applications/Components/baUtils.js";import{reallocGrowthFactor as t}from"../../../../core/arrayUtils.js";import{initialSplatAtlasTextureHeight as e,GaussianSplatAtlasPages as s,splatAtlasTextureWidth as r,maximumSplatAtlasTextureHeightMobile as a,maximumSplatAtlasTextureHeight as i,gaussiansPerPage as o}from"./GaussianSplatAtlasPages.js";import{PixelType as l,SizedPixelFormat as h}from"../../../webgl/enums.js";import{DisposableFramebufferObject as u}from"../../../webgl/FramebufferObject.js";import c from"../../../webgl/Texture.js";import{TextureDescriptor as p}from"../../../webgl/TextureDescriptor.js";class n{constructor(t,r,a,i){this._splatAtlasTextureHeight=e,this.texture=null,this._rctx=t,this._fboCache=a,this._onCachedTextureEvicted=i,this.pageAllocator=new s,this._cache=r.newCache("gaussian texture cache",t=>{t.dispose(),this._onCachedTextureEvicted()})}get usedMemory(){return this.texture?.usedMemory??0}get maximumSupportedVisibleGaussians(){const t=2/3,e=has("esri-mobile")?r*a:r*i;return Math.floor(e*t)}ensureTextureAtlas(){if(this.texture?.hasWebGLTextureObject)return;this.texture=null;const t=this._cache.pop("splatTextureAtlas");if(t)return void(this.texture=t);const e=new p;e.height=this._splatAtlasTextureHeight,e.width=r,e.pixelFormat=36249,e.dataType=l.UNSIGNED_INT,e.internalFormat=h.RGBA32UI,e.samplingMode=9728,e.wrapMode=33071,e.isImmutable=!0,this.texture=new c(this._rctx,e),this._updatePageAllocator()}grow(){if(!this.texture)return this.ensureTextureAtlas(),!1;const e=Math.floor(this._splatAtlasTextureHeight*t);if(e>Math.min(has("esri-mobile")?a:i,this._rctx.parameters.maxTextureSize))return!1;const s=new u(this._rctx,this.texture),o=this._fboCache.acquire(r,e,"gaussian splat atlas resize",12);return this._rctx.blitFramebuffer(s,o.fbo,16384,9728,0,0,r,this._splatAtlasTextureHeight,0,0,r,this._splatAtlasTextureHeight),this.texture=o.fbo?.detachColorTexture(),s.dispose(),o.dispose(),this._splatAtlasTextureHeight=e,this._updatePageAllocator(),!0}allocatePage(){let t=this.pageAllocator.findFirstFreePage();return null===t&&this.grow()&&(t=this.pageAllocator.findFirstFreePage()),null!==t&&this.pageAllocator.allocate(t),t}freePage(t){this.pageAllocator.free(t)}freePages(t){for(const e of t)this.freePage(e)}update(t,e,s){this.ensureTextureAtlas(),this.texture.updateData(0,t,e,o,1,s)}_updatePageAllocator(){const t=r*this._splatAtlasTextureHeight/o;this.pageAllocator.pageCount!==t&&this.pageAllocator.resize(t)}clear(){this.texture&&(this._cache.put("splatTextureAtlas",this.texture),this.texture=null)}destroy(){this._onCachedTextureEvicted=()=>{},this._cache.destroy(),this.texture?.dispose(),this.texture=null}}export{n as GaussianSplatTextureAtlas};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{fromQuat as t,scale as e}from"../../../core/libs/gl-matrix-2/math/mat3.js";import{create as a}from"../../../core/libs/gl-matrix-2/factories/mat3f64.js";import{create as s}from"../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{set as r,conjugate as i,multiply as n}from"../../../core/libs/gl-matrix-2/math/quat.js";import{IDENTITY as o,create as h}from"../../../core/libs/gl-matrix-2/factories/quatf64.js";import{transformQuat as c,dot as f,cross as d,len as u,scale as l,set as m,transformMat3 as _,add as g,transformQuatValues as p,sub as b,abs as M,max as j,min as S,length as C,scaleAndAdd as z,sign as x,multiply as H}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{ZEROS as y,freeze as Q,create as A,UNIT_Z as P}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{transformMat4 as R}from"../../../core/libs/gl-matrix-2/math/vec4.js";import{create as F}from"../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{getReferenceEllipsoid as v}from"../../../geometry/ellipsoidUtils.js";import{getSphericalPCPF as w}from"../../../geometry/spatialReferenceEllipsoidUtils.js";import{computeTranslationToOriginAndRotation as D}from"../../../geometry/projection/computeTranslationToOriginAndRotation.js";import{projectBuffer as q}from"../../../geometry/projection/projectBuffer.js";import{getProjector as B}from"../../../geometry/projection/projectors.js";import{getNormal as V}from"../../../geometry/support/plane.js";import{isPlateCarree as Z}from"../../../geometry/support/spatialReferenceUtils.js";import{computeOBB as k}from"./dito.js";import{Vertices as U}from"../webgl-engine/lib/Attribute.js";class W{constructor(t=y,e=st,a=o){this._data=[t[0],t[1],t[2],e[0],e[1],e[2],a[0],a[1],a[2],a[3]]}clone(){return W.fromData(this._data)}invalidate(){this._data[3]=-1}get isValid(){return this._data[3]>=0}static fromData(t){const e=new W;return e._copyFromData(t),e}static fromJSON(t){return new W(t.center,t.halfSize,t.quaternion)}copy(t){this._copyFromData(t.data)}_copyFromData(t){for(let e=0;e<10;++e)this._data[e]=t[e]}get centerX(){return this._data[0]}get centerY(){return this._data[1]}get centerZ(){return this._data[2]}getCenter(t){return t[0]=this._data[0],t[1]=this._data[1],t[2]=this._data[2],t}setCenter(t){this._data[0]=t[0],this._data[1]=t[1],this._data[2]=t[2]}setCenterFromValues(t,e,a){this._data[0]=t,this._data[1]=e,this._data[2]=a}get halfSizeX(){return this._data[3]}get halfSizeY(){return this._data[4]}get halfSizeZ(){return this._data[5]}getHalfSize(t){return t[0]=this._data[3],t[1]=this._data[4],t[2]=this._data[5],t}setHalfSize(t){this._data[3]=t[0],this._data[4]=t[1],this._data[5]=t[2]}setHalfSizeFromValues(t,e,a){this._data[3]=t,this._data[4]=e,this._data[5]=a}getQuaternion(t){return t[0]=this._data[6],t[1]=this._data[7],t[2]=this._data[8],t[3]=this._data[9],t}getQuaternionConjugate(t){return t[0]=-this._data[6],t[1]=-this._data[7],t[2]=-this._data[8],t[3]=this._data[9],t}setQuaternion(t){this._data[6]=t[0],this._data[7]=t[1],this._data[8]=t[2],this._data[9]=t[3]}get data(){return this._data}getCorners(t){const e=this._data,a=r(X,e[6],e[7],e[8],e[9]);for(let s=0;s<8;++s){const r=t[s];r[0]=(1&s?-1:1)*e[3],r[1]=(2&s?-1:1)*e[4],r[2]=(4&s?-1:1)*e[5],c(r,r,a),r[0]+=e[0],r[1]+=e[1],r[2]+=e[2]}return t}getAxes(t){const e=this._data,a=r(X,e[6],e[7],e[8],e[9]);return c(t[0],[1,0,0],a),c(t[1],[0,1,0],a),c(t[2],[0,0,1],a),t}intersectsFrustum(t){const{centerX:e,centerY:a,centerZ:s}=this,r=t.planes;for(const f of r){const t=V(f),r=this.projectedRadius(t);if(e*t[0]+a*t[1]+s*t[2]+f[3]-r>0)return!1}const i=this.getAxes(lt),n=t.points,o=this.getHalfSize(ct);for(let d=0;d<3;++d){const t=i[d],r=-t[0]*e-t[1]*a-t[2]*s,h=o[d];let c=!0,u=!0;for(const e of n){const a=f(e,t)+r;c&&=a>h,u&&=a<-h}if(c||u)return!1}if(this.getCorners(ut).some(e=>t.intersectsPoint(e)))return!0;const h=bt;for(let f=0;f<3;++f){const t=i[f];h[f]=t[0]*e+t[1]*a+t[2]*s}const c=t=>{for(let e=0;e<3;++e){const a=i[e],s=o[e],r=a[0]*t[0]+a[1]*t[1]+a[2]*t[2]-h[e];if(r>s||r<-s)return!1}return!0};if(t.points.some(t=>c(t)))return!0;const m=t.lines,_=pt;for(let g=0;g<8;++g){const t=m[g].direction;for(const r of i){d(_,t,r);const i=u(_);if(!(i>0))continue;l(_,_,1/i);const o=this.projectedRadius(_),h=_[0]*e+_[1]*a+_[2]*s,c=h-o,m=h+o;let g=!1,p=!1,b=!0;for(const t of n){const e=f(_,t);if(e>m){if(p){b=!1;break}g=!0}else{if(!(e<c)){b=!1;break}if(g){b=!1;break}p=!0}}if(b)return!1}}return!0}intersectsFrustumConservativeApproximation(t){return this.intersectPlane(t[0])<=0&&this.intersectPlane(t[1])<=0&&this.intersectPlane(t[2])<=0&&this.intersectPlane(t[3])<=0&&this.intersectPlane(t[4])<=0&&this.intersectPlane(t[5])<=0}get radius(){const t=this._data[3],e=this._data[4],a=this._data[5];return Math.sqrt(t*t+e*e+a*a)}intersectsPoint(t){const e=this.getAxes(lt),a=this.getHalfSize(ct),s=this.getCenter(ht);for(let r=0;r<3;++r){const i=e[r],n=a[r],o=f(i,t)-f(i,s);if(o>n||o<-n)return!1}return!0}intersectSphere(t){const{center:e,radius:a}=t,s=this._data,r=s[3],i=s[4],n=s[5],o=r+i+n+a,h=s[0]-e[0];if(Math.abs(h)>o)return!1;const c=s[1]-e[1];if(Math.abs(c)>o)return!1;const f=s[2]-e[2];if(Math.abs(f)>o)return!1;const d=-s[6],u=-s[7],l=-s[8],m=u*f-l*c,_=l*h-d*f,g=d*c-u*h,p=u*g-l*_,b=l*m-d*g,M=d*_-u*m,j=2*s[9],S=Math.abs(h+m*j+2*p),C=Math.abs(c+_*j+2*b),z=Math.abs(f+g*j+2*M),x=S-Math.min(S,r),H=C-Math.min(C,i),y=z-Math.min(z,n);return x*x+H*H+y*y<=a*a}intersectSphereWithMBS(t,e=this.radius){const a=this._data,{center:s,radius:r}=t,i=e+r,n=a[0]-s[0];if(n>i)return!1;const o=a[1]-s[1];if(o>i)return!1;const h=a[2]-s[2];if(h>i)return!1;if(n*n+o*o+h*h>i*i)return!1;const c=-a[6],f=-a[7],d=-a[8],u=f*h-d*o,l=d*n-c*h,m=c*o-f*n,_=f*m-d*l,g=d*u-c*m,p=c*l-f*u,b=2*a[9],M=Math.abs(n+u*b+2*_),j=Math.abs(o+l*b+2*g),S=Math.abs(h+m*b+2*p),C=M-Math.min(M,a[3]),z=j-Math.min(j,a[4]),x=S-Math.min(S,a[5]);return C*C+z*z+x*x<r*r}intersectPlane(t){const e=t[0]*this._data[0]+t[1]*this._data[1]+t[2]*this._data[2]+t[3],a=this.projectedRadius(V(t));return e>a?1:e<-a?-1:0}intersectRay(t,e,a=0){const s=this._data,r=X;r[0]=-s[6],r[1]=-s[7],r[2]=-s[8],r[3]=s[9],O[0]=t[0]-s[0],O[1]=t[1]-s[1],O[2]=t[2]-s[2];const i=c(O,O,X),n=c(T,e,X);let o=-1/0,h=1/0;const f=this.getHalfSize(ct);for(let c=0;c<3;c++){const t=i[c],e=n[c],s=f[c]+a;if(Math.abs(e)>1e-6){const a=(s-t)/e,r=(-s-t)/e;o=Math.max(o,Math.min(a,r)),h=Math.min(h,Math.max(a,r))}else if(t>s||t<-s)return!1}return o<=h}projectedArea(a,s,r,n){const o=this.getQuaternion(Y);i(X,o),O[0]=a[0]-this._data[0],O[1]=a[1]-this._data[1],O[2]=a[2]-this._data[2],c(O,O,X);const h=this.getHalfSize(ct),f=O[0]<-h[0]?-1:O[0]>h[0]?1:0,d=O[1]<-h[1]?-1:O[1]>h[1]?1:0,u=O[2]<-h[2]?-1:O[2]>h[2]?1:0,l=Math.abs(f)+Math.abs(d)+Math.abs(u);if(0===l)return 1/0;const p=1===l?4:6,b=6*(f+3*d+9*u+13);t(ft,o),e(ft,ft,h);const M=this.getCenter(ht);for(let t=0;t<p;t++){const e=N[b+t];m(O,((1&e)<<1)-1,(2&e)-1,((4&e)>>1)-1),_(O,O,ft),g(E,M,O),E[3]=1,R(E,E,s);const a=1/Math.max(1e-6,E[3]);J[2*t]=E[0]*a,J[2*t+1]=E[1]*a}const j=2*p-2;let S=J[0]*(J[3]-J[j+1])+J[j]*(J[1]-J[j-1]);for(let t=2;t<j;t+=2)S+=J[t]*(J[t+3]-J[t-1]);return Math.abs(S)*r*n*.125}projectedRadius(t){const e=this._data;return p(O,t,-e[6],-e[7],-e[8],e[9]),Math.abs(O[0]*e[3])+Math.abs(O[1]*e[4])+Math.abs(O[2]*e[5])}signedDistancePlane(t,e){const a=this._data,s=t[0]*a[0]+t[1]*a[1]+t[2]*a[2]+e,r=this.projectedRadius(t);return s>r?s-r:s<-r?s+r:0}signedDistanceRangePlane(t){const e=t[0]*this._data[0]+t[1]*this._data[1]+t[2]*this._data[2]+t[3],a=this.projectedRadius(V(t));return{min:e-a,max:e+a}}toAaBoundingBox(e){const a=this.getQuaternion(Y),s=t(ft,a),r=this._data[3]*Math.abs(s[0])+this._data[4]*Math.abs(s[3])+this._data[5]*Math.abs(s[6]),i=this._data[3]*Math.abs(s[1])+this._data[4]*Math.abs(s[4])+this._data[5]*Math.abs(s[7]),n=this._data[3]*Math.abs(s[2])+this._data[4]*Math.abs(s[5])+this._data[5]*Math.abs(s[8]);e[0]=this._data[0]-r,e[1]=this._data[1]-i,e[2]=this._data[2]-n,e[3]=this._data[0]+r,e[4]=this._data[1]+i,e[5]=this._data[2]+n}transform(t,e,a,s=0,r=w(a),i=w(e),n=B(e,i)){if(a===r)e.isGeographic?at(this,t,e,s,i):et(this,t,e,s,i,n);else if(e.isGeographic&&(a.isWebMercator||Z(a)))L(e,this,a,t,s);else if(e.isWebMercator&&Z(a))$(e,this,a,t,s);else{const r=this.getCenter(ht);r[2]+=s,q(r,e,0,r,a,0),t.setCenter(r),this!==t&&(t.setQuaternion(this.getQuaternion(Y)),t.setHalfSize(this.getHalfSize(ct)))}}}const X=h(),Y=h(),G=h(),O=A(),T=A(),E=F();function I(t,e=new W){return k(t,e),e}const J=[.1,.2,.3,.4,.5,.6,.7,.8,.9,1,1.1,1.2],N=(()=>{const t=new Int8Array(162);let e=0;const a=a=>{for(let s=0;s<a.length;s++)t[e+s]=a[s];e+=6};return a([6,2,3,1,5,4]),a([0,2,3,1,5,4]),a([0,2,3,7,5,4]),a([0,1,3,2,6,4]),a([0,1,3,2,0,0]),a([0,1,5,7,3,2]),a([0,1,3,7,6,4]),a([0,1,3,7,6,2]),a([0,1,5,7,6,2]),a([0,1,5,4,6,2]),a([0,1,5,4,0,0]),a([0,1,3,7,5,4]),a([0,2,6,4,0,0]),a([0,0,0,0,0,0]),a([1,3,7,5,0,0]),a([2,3,7,6,4,0]),a([2,3,7,6,0,0]),a([2,3,1,5,7,6]),a([0,1,5,7,6,2]),a([0,1,5,7,6,4]),a([0,1,3,7,6,4]),a([4,5,7,6,2,0]),a([4,5,7,6,0,0]),a([4,5,1,3,7,6]),a([0,2,3,7,5,4]),a([6,2,3,7,5,4]),a([6,2,3,1,5,4]),t})();function K(t,e,a,s,r){const n=t.getQuaternion(Y);r.setQuaternion(n),i(X,n);const o=t.getCenter(ht),h=t.getHalfSize(ct);if(1===s){c(mt,o,X),M(_t,mt),S(gt,_t,h),b(gt,_t,gt);const s=C(gt);g(gt,_t,h);const i=C(gt);if(s<a)r.setCenter(o),m(mt,a,a,a),r.setHalfSize(g(mt,h,mt));else{const n=i>0?1+e/i:1,o=s>0?1+a/s:1,f=(o+n)/2,d=(o-n)/2;l(gt,_t,d),r.setHalfSize(z(gt,gt,h,f)),l(gt,_t,f),z(gt,gt,h,d),x(mt,mt),H(mt,gt,mt);const u=t.getQuaternion(G);r.setCenter(c(mt,mt,u))}}else{r.setCenter(z(mt,o,P,(a+e)/2));const t=c(mt,P,X);M(t,t),r.setHalfSize(z(_t,h,t,(a-e)/2))}return r}function L(t,e,a,s,r){const i=e.getCenter(ht);i[2]+=r;const n=w(a);q(i,t,0,i,n,0),tt(n,e,i,a,s)}function $(t,e,a,s,r){const i=e.getCenter(ht);i[2]+=r,tt(t,e,i,a,s)}function tt(e,a,s,r,i){const n=a.getQuaternion(Y),o=t(ft,n),h=a.getHalfSize(ct);for(let t=0;t<8;++t){for(let e=0;e<3;++e)ot[e]=h[e]*(t&1<<e?-1:1);for(let e=0;e<3;++e){let a=s[e];for(let t=0;t<3;++t)a+=ot[t]*o[3*t+e];it[3*t+e]=a}}q(it,e,0,it,r,0,8),I(nt,i)}function et(t,e,a,s,r=w(a),o=B(a,r)){t.getCorners(ut);const h=t.getCenter(ht);h[2]+=s,D(a,h,dt,r),e.setCenterFromValues(dt[12],dt[13],dt[14]);const f=2*Math.sqrt(1+dt[0]+dt[5]+dt[10]);X[0]=(dt[6]-dt[9])/f,X[1]=(dt[8]-dt[2])/f,X[2]=(dt[1]-dt[4])/f,X[3]=.25*f;const d=t.getQuaternion(Y);e.setQuaternion(n(X,X,d)),i(X,X),m(_t,0,0,0);const u=e.getCenter(ht);for(const i of ut)i[2]+=s,o(i,0,i,0),b(mt,i,u),c(mt,mt,X),M(mt,mt),j(_t,_t,mt);e.setHalfSize(_t)}function at(t,e,a,s,r=w(a)){const n=v(a),o=1+Math.max(0,s)/(n.radius+t.centerZ);t.getCenter(ot),ot[2]+=s,q(ot,a,0,ot,r,0),e.setCenter(ot);const h=t.getQuaternion(Y);e.setQuaternion(h),i(X,h),m(mt,0,0,1),c(mt,mt,X);const f=t.getHalfSize(ct);m(mt,f[0]*Math.abs(mt[0]),f[1]*Math.abs(mt[1]),f[2]*Math.abs(mt[2])),l(mt,mt,n.inverseFlattening),g(mt,f,mt),e.setHalfSize(l(mt,mt,o))}const st=Q(-1,-1,-1);function rt(t){return Array.from(t)}const it=new Array(24),nt=new U(it,3),ot=A(),ht=A(),ct=A(),ft=a(),dt=s(),ut=[[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0]],lt=[A(),A(),A()],mt=A(),_t=A(),gt=A(),pt=A(),bt=[0,0,0];export{W as Obb,I as compute,K as computeOffsetObb,rt as ensurePackedObbData};
2
+ import{fromQuat as t,scale as e}from"../../../core/libs/gl-matrix-2/math/mat3.js";import{create as a}from"../../../core/libs/gl-matrix-2/factories/mat3f64.js";import{create as s}from"../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{set as i,conjugate as r,multiply as n}from"../../../core/libs/gl-matrix-2/math/quat.js";import{IDENTITY as o,create as h}from"../../../core/libs/gl-matrix-2/factories/quatf64.js";import{transformQuat as c,dot as f,cross as d,len as l,scale as u,set as m,transformMat3 as g,add as _,transformQuatValues as p,sub as M,abs as b,max as j,min as S,length as C,scaleAndAdd as x,sign as z,multiply as H}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{ZEROS as P,freeze as R,create as y,UNIT_Z as Q}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{transformMat4 as D}from"../../../core/libs/gl-matrix-2/math/vec4.js";import{create as A}from"../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{getReferenceEllipsoid as v}from"../../../geometry/ellipsoidUtils.js";import{getSphericalPCPF as F}from"../../../geometry/spatialReferenceEllipsoidUtils.js";import{computeTranslationToOriginAndRotation as w}from"../../../geometry/projection/computeTranslationToOriginAndRotation.js";import{projectBuffer as q}from"../../../geometry/projection/projectBuffer.js";import{getProjector as B}from"../../../geometry/projection/projectors.js";import{getNormal as V}from"../../../geometry/support/plane.js";import{isPlateCarree as W}from"../../../geometry/support/spatialReferenceUtils.js";import{computeOBB as Z}from"./dito.js";import{Vertices as k}from"../webgl-engine/lib/Attribute.js";class U{constructor(t=P,e=st,a=o){this._data=[t[0],t[1],t[2],e[0],e[1],e[2],a[0],a[1],a[2],a[3]]}clone(){return U.fromData(this._data)}invalidate(){this._data[3]=-1}get isValid(){return this._data[3]>=0}static fromData(t){const e=new U;return e._copyFromData(t),e}static fromJSON(t){return new U(t.center,t.halfSize,t.quaternion)}copy(t){this._copyFromData(t.data)}_copyFromData(t){for(let e=0;e<10;++e)this._data[e]=t[e]}get centerX(){return this._data[0]}get centerY(){return this._data[1]}get centerZ(){return this._data[2]}getCenter(t){return t[0]=this._data[0],t[1]=this._data[1],t[2]=this._data[2],t}setCenter(t){this._data[0]=t[0],this._data[1]=t[1],this._data[2]=t[2]}setCenterFromValues(t,e,a){this._data[0]=t,this._data[1]=e,this._data[2]=a}get halfSizeX(){return this._data[3]}get halfSizeY(){return this._data[4]}get halfSizeZ(){return this._data[5]}getHalfSize(t){return t[0]=this._data[3],t[1]=this._data[4],t[2]=this._data[5],t}setHalfSize(t){this._data[3]=t[0],this._data[4]=t[1],this._data[5]=t[2]}setHalfSizeFromValues(t,e,a){this._data[3]=t,this._data[4]=e,this._data[5]=a}getQuaternion(t){return t[0]=this._data[6],t[1]=this._data[7],t[2]=this._data[8],t[3]=this._data[9],t}getQuaternionConjugate(t){return t[0]=-this._data[6],t[1]=-this._data[7],t[2]=-this._data[8],t[3]=this._data[9],t}setQuaternion(t){this._data[6]=t[0],this._data[7]=t[1],this._data[8]=t[2],this._data[9]=t[3]}get data(){return this._data}getCorners(t){const e=this._data,a=i(X,e[6],e[7],e[8],e[9]);for(let s=0;s<8;++s){const i=t[s];i[0]=(1&s?-1:1)*e[3],i[1]=(2&s?-1:1)*e[4],i[2]=(4&s?-1:1)*e[5],c(i,i,a),i[0]+=e[0],i[1]+=e[1],i[2]+=e[2]}return t}getAxes(t){const e=this._data,a=i(X,e[6],e[7],e[8],e[9]);return c(t[0],[1,0,0],a),c(t[1],[0,1,0],a),c(t[2],[0,0,1],a),t}intersectsFrustum(t){const{centerX:e,centerY:a,centerZ:s}=this,i=t.planes;for(const f of i){const t=V(f),i=this.projectedRadius(t);if(e*t[0]+a*t[1]+s*t[2]+f[3]-i>0)return!1}const r=this.getAxes(ut),n=t.points,o=this.getHalfSize(ct);for(let d=0;d<3;++d){const t=r[d],i=-t[0]*e-t[1]*a-t[2]*s,h=o[d];let c=!0,l=!0;for(const e of n){const a=f(e,t)+i;c&&=a>h,l&&=a<-h}if(c||l)return!1}if(this.getCorners(lt).some(e=>t.intersectsPoint(e)))return!0;const h=Mt;for(let f=0;f<3;++f){const t=r[f];h[f]=t[0]*e+t[1]*a+t[2]*s}const c=t=>{for(let e=0;e<3;++e){const a=r[e],s=o[e],i=a[0]*t[0]+a[1]*t[1]+a[2]*t[2]-h[e];if(i>s||i<-s)return!1}return!0};if(t.points.some(t=>c(t)))return!0;const m=t.lines,g=pt;for(let _=0;_<8;++_){const t=m[_].direction;for(const i of r){d(g,t,i);const r=l(g);if(!(r>0))continue;u(g,g,1/r);const o=this.projectedRadius(g),h=g[0]*e+g[1]*a+g[2]*s,c=h-o,m=h+o;let _=!1,p=!1,M=!0;for(const t of n){const e=f(g,t);if(e>m){if(p){M=!1;break}_=!0}else{if(!(e<c)){M=!1;break}if(_){M=!1;break}p=!0}}if(M)return!1}}return!0}intersectsFrustumConservativeApproximation(t){return this.intersectPlane(t[0])<=0&&this.intersectPlane(t[1])<=0&&this.intersectPlane(t[2])<=0&&this.intersectPlane(t[3])<=0&&this.intersectPlane(t[4])<=0&&this.intersectPlane(t[5])<=0}intersectsFrustumConservativeApproximationWithMargin(t,e){return this.signedDistanceRangePlane(t[0]).min<=e&&this.signedDistanceRangePlane(t[1]).min<=e&&this.signedDistanceRangePlane(t[2]).min<=e&&this.signedDistanceRangePlane(t[3]).min<=e&&this.signedDistanceRangePlane(t[4]).min<=e&&this.signedDistanceRangePlane(t[5]).min<=e}get radius(){const t=this._data[3],e=this._data[4],a=this._data[5];return Math.sqrt(t*t+e*e+a*a)}intersectsPoint(t){const e=this.getAxes(ut),a=this.getHalfSize(ct),s=this.getCenter(ht);for(let i=0;i<3;++i){const r=e[i],n=a[i],o=f(r,t)-f(r,s);if(o>n||o<-n)return!1}return!0}intersectSphere(t){const{center:e,radius:a}=t,s=this._data,i=s[3],r=s[4],n=s[5],o=i+r+n+a,h=s[0]-e[0];if(Math.abs(h)>o)return!1;const c=s[1]-e[1];if(Math.abs(c)>o)return!1;const f=s[2]-e[2];if(Math.abs(f)>o)return!1;const d=-s[6],l=-s[7],u=-s[8],m=l*f-u*c,g=u*h-d*f,_=d*c-l*h,p=l*_-u*g,M=u*m-d*_,b=d*g-l*m,j=2*s[9],S=Math.abs(h+m*j+2*p),C=Math.abs(c+g*j+2*M),x=Math.abs(f+_*j+2*b),z=S-Math.min(S,i),H=C-Math.min(C,r),P=x-Math.min(x,n);return z*z+H*H+P*P<=a*a}intersectSphereWithMBS(t,e=this.radius){const a=this._data,{center:s,radius:i}=t,r=e+i,n=a[0]-s[0];if(n>r)return!1;const o=a[1]-s[1];if(o>r)return!1;const h=a[2]-s[2];if(h>r)return!1;if(n*n+o*o+h*h>r*r)return!1;const c=-a[6],f=-a[7],d=-a[8],l=f*h-d*o,u=d*n-c*h,m=c*o-f*n,g=f*m-d*u,_=d*l-c*m,p=c*u-f*l,M=2*a[9],b=Math.abs(n+l*M+2*g),j=Math.abs(o+u*M+2*_),S=Math.abs(h+m*M+2*p),C=b-Math.min(b,a[3]),x=j-Math.min(j,a[4]),z=S-Math.min(S,a[5]);return C*C+x*x+z*z<i*i}intersectPlane(t){const e=t[0]*this._data[0]+t[1]*this._data[1]+t[2]*this._data[2]+t[3],a=this.projectedRadius(V(t));return e>a?1:e<-a?-1:0}intersectRay(t,e,a=0){const s=this._data,i=X;i[0]=-s[6],i[1]=-s[7],i[2]=-s[8],i[3]=s[9],O[0]=t[0]-s[0],O[1]=t[1]-s[1],O[2]=t[2]-s[2];const r=c(O,O,X),n=c(T,e,X);let o=-1/0,h=1/0;const f=this.getHalfSize(ct);for(let c=0;c<3;c++){const t=r[c],e=n[c],s=f[c]+a;if(Math.abs(e)>1e-6){const a=(s-t)/e,i=(-s-t)/e;o=Math.max(o,Math.min(a,i)),h=Math.min(h,Math.max(a,i))}else if(t>s||t<-s)return!1}return o<=h}projectedArea(a,s,i,n){const o=this.getQuaternion(Y);r(X,o),O[0]=a[0]-this._data[0],O[1]=a[1]-this._data[1],O[2]=a[2]-this._data[2],c(O,O,X);const h=this.getHalfSize(ct),f=O[0]<-h[0]?-1:O[0]>h[0]?1:0,d=O[1]<-h[1]?-1:O[1]>h[1]?1:0,l=O[2]<-h[2]?-1:O[2]>h[2]?1:0,u=Math.abs(f)+Math.abs(d)+Math.abs(l);if(0===u)return 1/0;const p=1===u?4:6,M=6*(f+3*d+9*l+13);t(ft,o),e(ft,ft,h);const b=this.getCenter(ht);for(let t=0;t<p;t++){const e=N[M+t];m(O,((1&e)<<1)-1,(2&e)-1,((4&e)>>1)-1),g(O,O,ft),_(E,b,O),E[3]=1,D(E,E,s);const a=1/Math.max(1e-6,E[3]);J[2*t]=E[0]*a,J[2*t+1]=E[1]*a}const j=2*p-2;let S=J[0]*(J[3]-J[j+1])+J[j]*(J[1]-J[j-1]);for(let t=2;t<j;t+=2)S+=J[t]*(J[t+3]-J[t-1]);return Math.abs(S)*i*n*.125}projectedRadius(t){const e=this._data;return p(O,t,-e[6],-e[7],-e[8],e[9]),Math.abs(O[0]*e[3])+Math.abs(O[1]*e[4])+Math.abs(O[2]*e[5])}signedDistancePlane(t,e){const a=this._data,s=t[0]*a[0]+t[1]*a[1]+t[2]*a[2]+e,i=this.projectedRadius(t);return s>i?s-i:s<-i?s+i:0}signedDistanceRangePlane(t){const e=t[0]*this._data[0]+t[1]*this._data[1]+t[2]*this._data[2]+t[3],a=this.projectedRadius(V(t));return{min:e-a,max:e+a}}toAaBoundingBox(e){const a=this.getQuaternion(Y),s=t(ft,a),i=this._data[3]*Math.abs(s[0])+this._data[4]*Math.abs(s[3])+this._data[5]*Math.abs(s[6]),r=this._data[3]*Math.abs(s[1])+this._data[4]*Math.abs(s[4])+this._data[5]*Math.abs(s[7]),n=this._data[3]*Math.abs(s[2])+this._data[4]*Math.abs(s[5])+this._data[5]*Math.abs(s[8]);e[0]=this._data[0]-i,e[1]=this._data[1]-r,e[2]=this._data[2]-n,e[3]=this._data[0]+i,e[4]=this._data[1]+r,e[5]=this._data[2]+n}transform(t,e,a,s=0,i=F(a),r=F(e),n=B(e,r)){if(a===i)e.isGeographic?at(this,t,e,s,r):et(this,t,e,s,r,n);else if(e.isGeographic&&(a.isWebMercator||W(a)))L(e,this,a,t,s);else if(e.isWebMercator&&W(a))$(e,this,a,t,s);else{const i=this.getCenter(ht);i[2]+=s,q(i,e,0,i,a,0),t.setCenter(i),this!==t&&(t.setQuaternion(this.getQuaternion(Y)),t.setHalfSize(this.getHalfSize(ct)))}}}const X=h(),Y=h(),G=h(),O=y(),T=y(),E=A();function I(t,e=new U){return Z(t,e),e}const J=[.1,.2,.3,.4,.5,.6,.7,.8,.9,1,1.1,1.2],N=(()=>{const t=new Int8Array(162);let e=0;const a=a=>{for(let s=0;s<a.length;s++)t[e+s]=a[s];e+=6};return a([6,2,3,1,5,4]),a([0,2,3,1,5,4]),a([0,2,3,7,5,4]),a([0,1,3,2,6,4]),a([0,1,3,2,0,0]),a([0,1,5,7,3,2]),a([0,1,3,7,6,4]),a([0,1,3,7,6,2]),a([0,1,5,7,6,2]),a([0,1,5,4,6,2]),a([0,1,5,4,0,0]),a([0,1,3,7,5,4]),a([0,2,6,4,0,0]),a([0,0,0,0,0,0]),a([1,3,7,5,0,0]),a([2,3,7,6,4,0]),a([2,3,7,6,0,0]),a([2,3,1,5,7,6]),a([0,1,5,7,6,2]),a([0,1,5,7,6,4]),a([0,1,3,7,6,4]),a([4,5,7,6,2,0]),a([4,5,7,6,0,0]),a([4,5,1,3,7,6]),a([0,2,3,7,5,4]),a([6,2,3,7,5,4]),a([6,2,3,1,5,4]),t})();function K(t,e,a,s,i){const n=t.getQuaternion(Y);i.setQuaternion(n),r(X,n);const o=t.getCenter(ht),h=t.getHalfSize(ct);if(1===s){c(mt,o,X),b(gt,mt),S(_t,gt,h),M(_t,gt,_t);const s=C(_t);_(_t,gt,h);const r=C(_t);if(s<a)i.setCenter(o),m(mt,a,a,a),i.setHalfSize(_(mt,h,mt));else{const n=r>0?1+e/r:1,o=s>0?1+a/s:1,f=(o+n)/2,d=(o-n)/2;u(_t,gt,d),i.setHalfSize(x(_t,_t,h,f)),u(_t,gt,f),x(_t,_t,h,d),z(mt,mt),H(mt,_t,mt);const l=t.getQuaternion(G);i.setCenter(c(mt,mt,l))}}else{i.setCenter(x(mt,o,Q,(a+e)/2));const t=c(mt,Q,X);b(t,t),i.setHalfSize(x(gt,h,t,(a-e)/2))}return i}function L(t,e,a,s,i){const r=e.getCenter(ht);r[2]+=i;const n=F(a);q(r,t,0,r,n,0),tt(n,e,r,a,s)}function $(t,e,a,s,i){const r=e.getCenter(ht);r[2]+=i,tt(t,e,r,a,s)}function tt(e,a,s,i,r){const n=a.getQuaternion(Y),o=t(ft,n),h=a.getHalfSize(ct);for(let t=0;t<8;++t){for(let e=0;e<3;++e)ot[e]=h[e]*(t&1<<e?-1:1);for(let e=0;e<3;++e){let a=s[e];for(let t=0;t<3;++t)a+=ot[t]*o[3*t+e];rt[3*t+e]=a}}q(rt,e,0,rt,i,0,8),I(nt,r)}function et(t,e,a,s,i=F(a),o=B(a,i)){t.getCorners(lt);const h=t.getCenter(ht);h[2]+=s,w(a,h,dt,i),e.setCenterFromValues(dt[12],dt[13],dt[14]);const f=2*Math.sqrt(1+dt[0]+dt[5]+dt[10]);X[0]=(dt[6]-dt[9])/f,X[1]=(dt[8]-dt[2])/f,X[2]=(dt[1]-dt[4])/f,X[3]=.25*f;const d=t.getQuaternion(Y);e.setQuaternion(n(X,X,d)),r(X,X),m(gt,0,0,0);const l=e.getCenter(ht);for(const r of lt)r[2]+=s,o(r,0,r,0),M(mt,r,l),c(mt,mt,X),b(mt,mt),j(gt,gt,mt);e.setHalfSize(gt)}function at(t,e,a,s,i=F(a)){const n=v(a),o=1+Math.max(0,s)/(n.radius+t.centerZ);t.getCenter(ot),ot[2]+=s,q(ot,a,0,ot,i,0),e.setCenter(ot);const h=t.getQuaternion(Y);e.setQuaternion(h),r(X,h),m(mt,0,0,1),c(mt,mt,X);const f=t.getHalfSize(ct);m(mt,f[0]*Math.abs(mt[0]),f[1]*Math.abs(mt[1]),f[2]*Math.abs(mt[2])),u(mt,mt,n.inverseFlattening),_(mt,f,mt),e.setHalfSize(u(mt,mt,o))}const st=R(-1,-1,-1);function it(t){return Array.from(t)}const rt=new Array(24),nt=new k(rt,3),ot=y(),ht=y(),ct=y(),ft=a(),dt=s(),lt=[[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0]],ut=[y(),y(),y()],mt=y(),gt=y(),_t=y(),pt=y(),Mt=[0,0,0];export{U as Obb,I as compute,K as computeOffsetObb,it as ensurePackedObbData};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import n from"../../../core/Collection.js";import{isEarth as t}from"../../../geometry/ellipsoidUtils.js";import{isCGCS2000 as e}from"../../../geometry/support/spatialReferenceUtils.js";import{getTileMaxtrixSetFromActiveLayer as r}from"../../../layers/support/layerUtils.js";import{isRasterTile as o,isCreateBitmapResult as i,isTileTexture as u,isVectorTile as l}from"./TerrainData.js";import{t as f}from"../../../chunks/terrainUtilsPlanar.js";import{t as c}from"../../../chunks/terrainUtilsSpherical.js";const s={1:c,2:f};function a(n,t){n||console.warn("Terrain: "+t)}let p=!1,m=!1;function y(n){m=n,p=p||n}function d(n){p=n}function I(n,t){if(p&&!n){const n=(new Error).stack?.slice(5);throw console.warn("Terrain internal: "+(t??"")+" at "+n),new Error("Assertion failed"+(t?": "+t:""))}}function h(n){return"imagery-tile"===n?.type||"wcs"===n?.type}function x(n){return"imagery-tile-3d"===n?.type}function E(n){return"tile-3d"===n?.type}function T(n){return"vector-tile-3d"===n?.type}function g(n){return"wmts-3d"===n?.type}function w(n){return"elevation-3d"===n?.type}function L(n){return"group"===n?.type}function j(n){return n&&(E(n)||g(n)||x(n)||T(n))}function v(n){return n&&(E(n)||x(n)||T(n)||g(n))}function C(n){return v(n)||w(n)}function b(n){return o(n?.sourceLayerInfo?.data)}function k(n){return V(n?.sourceLayerInfo)||!!n?.isVTLBackground}function F(n){return u(n?.sourceLayerInfo?.data)}function U(n){const t=n?.sourceLayerInfo?.data;return i(t)}function V(n){return l(n?.data)}function S(n){return null!=n&&"release"in n&&n.release(),null}function M(n){return"fetchTile"in n&&(!("hasOverriddenFetchTile"in n)||!1!==n.hasOverriddenFetchTile)}function O(n,t,e,r,o){return s[r].checkIfTileInfoSupportedForViewSR(n,e,t,o)}function D(n,t,e){let r=null,o=null;if("wmts"===n?.type){const i=R(n,t,e);r=i.tileInfo,o=i.fullExtent}else{o=h(n)?n.getCompatibleFullExtent(t):n.fullExtent;const i=2===e;if(h(n))r=n.getCompatibleTileInfo(t,o,i);else if("vector-tile"===n?.type){r=i&&!W(t)||A.force512VTL?n.tileInfo:n.tileInfo.getCompatibleForVTL(256)}else r=n.tileInfo}const i="tilemapCache"in n?n.tilemapCache?.effectiveMaxLOD:void 0;return null!=r&&null!=o&&null==O(r,o,t,e,i)?{tileInfo:r,fullExtent:o}:null}function R(t,e,o){const i=r(t);if(null!=i){if(!n.isCollection(i))return{tileInfo:i.tileInfo,fullExtent:i.fullExtent};{const n=i.find(n=>null==O(n.tileInfo,n.fullExtent,e,o));if(n)return{tileInfo:n.tileInfo,fullExtent:n.fullExtent}}}return{tileInfo:null,fullExtent:null}}function W(n){return n.isWGS84||n.isWebMercator||e(n)||!t(n)}const A={force512VTL:!1};function B(n){return"["+n[0]+","+n[1]+","+n[2]+"]"}function G(n){return"("+n[0]+","+n[1]+","+n[2]+")"}function P(n,t,e=$){return Math.abs(n-t)<e}function q(n){return 1===n?5:7===n?3:5===n?1:7}function z(n){return 0===n?4:2===n?6:4===n?0:2}function H(n){return 7===n||5===n}function J(n){return 7===n||1===n}function K(n){return 7===n||6===n||5===n}function N(n){return 1===n||2===n||3===n}function Q(n){return 3===n||4===n||5===n}function X(n){return 1===n||0===n||7===n}const Y=[0,2,4,6],Z=[1,3,5,7],$=1e-5;export{P as almostEquals,O as checkIfTileInfoSupportedForView,d as enableInternalTerrainChecks,p as enableTerrainInternalChecks,y as enableTerrainWaterproofChecks,m as enableWaterproofTests,$ as eps,R as getTileInfoAndExtentFromWMTSLayer,D as getTiledLayerInfo,I as internalAssert,j as isBlendableLayerView,N as isEast,w as isElevationLayerView,L as isGroupLayerView,U as isImageSourceRenderInfo,x as isImageryTileLayerView,b as isImageryTileRenderInfo,v as isMapTileLayerView,X as isNorth,J as isNorthCorner,h as isProjectableRasterLayer,Q as isSouth,C as isSurfaceLayerView,F as isTextureTileRenderInfo,E as isTileLayerView,T as isVectorTileLayerView,V as isVectorTilePerLayerInfo,k as isVectorTileRenderInfo,g as isWMTSLayerView,K as isWest,H as isWestCorner,B as lij2s,Z as neighborCornerIndices,Y as neighborEdgeIndices,q as oppositeCorner,z as oppositeEdge,S as releaseTerrainData,A as test,M as useFetchTileForLayer,G as v32s,W as vtlAssumes256PixelSizeAsDefault,a as weakAssert};
2
+ import n from"../../../core/Collection.js";import{isEarth as t}from"../../../geometry/ellipsoidUtils.js";import{isCGCS2000 as e}from"../../../geometry/support/spatialReferenceUtils.js";import{getTileMaxtrixSetFromActiveLayer as r}from"../../../layers/support/layerUtils.js";import{isRasterTile as o,isCreateBitmapResult as i,isTileTexture as u,isVectorTile as l}from"./TerrainData.js";import{t as f}from"../../../chunks/terrainUtilsPlanar.js";import{t as c}from"../../../chunks/terrainUtilsSpherical.js";const s={1:c,2:f};function a(n,t){n||console.warn("Terrain: "+t)}let p=!1,m=!1;function y(n){m=n,p=p||n}function I(n){p=n}function d(n,t){if(p&&!n){const n=(new Error).stack?.slice(5);throw console.warn("Terrain internal: "+(t??"")+" at "+n),new Error("Assertion failed"+(t?": "+t:""))}}function x(n){return"imagery-tile"===n?.type||"wcs"===n?.type}function E(n){return"imagery-tile-3d"===n?.type}function g(n){return"tile-3d"===n?.type}function w(n){return"vector-tile-3d"===n?.type}function L(n){return"wmts-3d"===n?.type}function T(n){return"elevation-3d"===n?.type}function h(n){return"group"===n?.type}function j(n){return n&&(g(n)||L(n)||E(n)||w(n))}function C(n){return n&&(g(n)||E(n)||w(n)||L(n))}function b(n){return C(n)||T(n)}function k(n){return o(n?.sourceLayerInfo?.data)}function v(n){return S(n?.sourceLayerInfo)||!!n?.isVTLBackground}function U(n){return u(n?.sourceLayerInfo?.data)}function V(n){const t=n?.sourceLayerInfo?.data;return i(t)}function S(n){return l(n?.data)}function F(n){return null!=n&&"release"in n&&n.release(),null}function M(n,t,e,r,o){return s[r].checkIfTileInfoSupportedForViewSR(n,e,t,o)}function D(n,t,e){let r=null,o=null;if("wmts"===n?.type){const i=R(n,t,e);r=i.tileInfo,o=i.fullExtent}else{o=x(n)?n.getCompatibleFullExtent(t):n.fullExtent;const i=2===e;if(x(n))r=n.getCompatibleTileInfo(t,o,i);else if("vector-tile"===n?.type){r=i&&!W(t)||A.force512VTL?n.tileInfo:n.tileInfo.getCompatibleForVTL(256)}else r=n.tileInfo}const i="tilemapCache"in n?n.tilemapCache?.effectiveMaxLOD:void 0;return null!=r&&null!=o&&null==M(r,o,t,e,i)?{tileInfo:r,fullExtent:o}:null}function R(t,e,o){const i=r(t);if(null!=i){if(!n.isCollection(i))return{tileInfo:i.tileInfo,fullExtent:i.fullExtent};{const n=i.find(n=>null==M(n.tileInfo,n.fullExtent,e,o));if(n)return{tileInfo:n.tileInfo,fullExtent:n.fullExtent}}}return{tileInfo:null,fullExtent:null}}function W(n){return n.isWGS84||n.isWebMercator||e(n)||!t(n)}const A={force512VTL:!1};function B(n){return"["+n[0]+","+n[1]+","+n[2]+"]"}function G(n){return"("+n[0]+","+n[1]+","+n[2]+")"}function O(n,t,e=Z){return Math.abs(n-t)<e}function P(n){return 1===n?5:7===n?3:5===n?1:7}function q(n){return 0===n?4:2===n?6:4===n?0:2}function z(n){return 7===n||5===n}function H(n){return 7===n||1===n}function J(n){return 7===n||6===n||5===n}function K(n){return 1===n||2===n||3===n}function N(n){return 3===n||4===n||5===n}function Q(n){return 1===n||0===n||7===n}const X=[0,2,4,6],Y=[1,3,5,7],Z=1e-5;export{O as almostEquals,M as checkIfTileInfoSupportedForView,I as enableInternalTerrainChecks,p as enableTerrainInternalChecks,y as enableTerrainWaterproofChecks,m as enableWaterproofTests,Z as eps,R as getTileInfoAndExtentFromWMTSLayer,D as getTiledLayerInfo,d as internalAssert,j as isBlendableLayerView,K as isEast,T as isElevationLayerView,h as isGroupLayerView,V as isImageSourceRenderInfo,E as isImageryTileLayerView,k as isImageryTileRenderInfo,C as isMapTileLayerView,Q as isNorth,H as isNorthCorner,x as isProjectableRasterLayer,N as isSouth,b as isSurfaceLayerView,U as isTextureTileRenderInfo,g as isTileLayerView,w as isVectorTileLayerView,S as isVectorTilePerLayerInfo,v as isVectorTileRenderInfo,L as isWMTSLayerView,J as isWest,z as isWestCorner,B as lij2s,Y as neighborCornerIndices,X as neighborEdgeIndices,P as oppositeCorner,q as oppositeEdge,F as releaseTerrainData,A as test,G as v32s,W as vtlAssumes256PixelSizeAsDefault,a as weakAssert};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{NoParameters as t}from"../../../../webgl/NoParameters.js";class r extends t{constructor(){super(...arguments),this._dirty=!0}_setDirty(){this._dirty=!0}_setClean(){if(this._dirty=!1,null!=this._parameterBlocks)for(const t of this._parameterBlocks)this[t]._setClean()}get dirty(){return this._dirty||this._checkParameterBlocksDirty()}_checkParameterBlocksDirty(){if(null==this._parameterBlocks)return!1;for(const t of this._parameterBlocks)if(this[t].dirty)return!0;return!1}}class e{constructor(){this._dirty=!0}_setDirty(){this._dirty=!0}_setClean(){this._dirty=!1}get dirty(){return this._dirty}}function s(t={}){return(r,e)=>{const s=r._parameterCount??0;r._parameterCount=s+1;const i=t.vectorOps;i?Object.defineProperty(r,e,{get(){return this[s]},set(t){const r=this[s];if(null==r)this[s]=Array.from(t);else{if(i.equals(r,t))return;i.copy(r,t)}this._setDirty()}}):Object.defineProperty(r,e,{get(){return this[s]},set(r){this[s]!==r&&(t.dispose&&this[s]&&this[s].dispose(),this[s]=r,this._setDirty())}})}}function i(){return(t,r)=>{const e=t._parameterCount??0;t._parameterCount=e+1,t._parameterBlocks=t._parameterBlocks||[],t._parameterBlocks.push(e),Object.defineProperty(t,r,{get(){return this[e]},set(t){this[e]!==t&&(this[e]=t,this._setDirty())}})}}export{r as MaterialBase,e as MaterialParameterBlock,s as parameter,i as parameterBlock};
2
+ import{NoParameters as t}from"../../../../webgl/NoParameters.js";class r extends t{constructor(){super(...arguments),this._dirty=!0}_setDirty(){this._dirty=!0}_setClean(){if(this._dirty=!1,null!=this._parameterBlocks)for(const t of this._parameterBlocks)this[t]._setClean()}get dirty(){return this._dirty||this._checkParameterBlocksDirty()}_checkParameterBlocksDirty(){if(null==this._parameterBlocks)return!1;for(const t of this._parameterBlocks)if(this[t].dirty)return!0;return!1}}export{r as MaterialBase};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{create as e}from"../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{RenderPass as s}from"./RenderPass.js";import{VertexNormalPassParameters as t,VertexNormalDrawParameters as i}from"../shaderLibrary/attributes/VertexNormal.glsl.js";class r{constructor(e,t){const{rctx:i}=e.renderContext,{techniques:r}=e;this.opaque=new s(t,i,r),this.transparent=new s(t,i,r,1),this.integratedMesh=new s(t,i,r),this.transparentIntegratedMesh=new s(t,i,r),this.occludedGround=new s(t,i,r),this.shadowMap=new s(t,i,r),this.highlight=new s(t,i,r),this.highlightIntegratedMesh=new s(t,i,r),this.highlightShadowMap=new s(t,i,r),this.viewshedShadowMap=new s(t,i,r),this.defaultShadowMap=new s(t,i,r)}}class n extends t{constructor(){super(...arguments),this.slicePlaneLocalOrigin=e(),this.origin=this.slicePlaneLocalOrigin}}class h extends i{}class a extends n{constructor(){super(...arguments),this.identifier=0,this.transparent=!1,this.occludedGround=!1}}class o extends n{constructor(){super(...arguments),this.identifier=1}}class c extends n{constructor(){super(...arguments),this.identifier=2}}class d extends n{constructor(){super(...arguments),this.identifier=3}}export{r as AllRenderPasses,h as DrawParameters,c as HighlightPassParameters,a as MaterialPassParameters,n as PassParameters,o as ShadowMapPassParameters,d as ViewshedShadowMapPassParameters};
2
+ import{create as t}from"../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{RenderPass as e}from"./RenderPass.js";import{VertexNormalPassParameters as s}from"../shaderLibrary/attributes/VertexNormal.glsl.js";class i{constructor(t,s){const{rctx:i}=t.renderContext,{techniques:r}=t;this.opaque=new e(s,i,r),this.transparent=new e(s,i,r,1),this.integratedMesh=new e(s,i,r),this.transparentIntegratedMesh=new e(s,i,r),this.occludedGround=new e(s,i,r),this.shadowMap=new e(s,i,r),this.highlight=new e(s,i,r),this.highlightIntegratedMesh=new e(s,i,r),this.highlightShadowMap=new e(s,i,r),this.viewshedShadowMap=new e(s,i,r),this.defaultShadowMap=new e(s,i,r)}}class r extends s{constructor(){super(...arguments),this.slicePlaneLocalOrigin=t(),this.origin=this.slicePlaneLocalOrigin}}class n extends r{constructor(){super(...arguments),this.identifier=0,this.transparent=!1,this.occludedGround=!1}}class h extends r{constructor(){super(...arguments),this.identifier=1}}class a extends r{constructor(){super(...arguments),this.identifier=2}}class o extends r{constructor(){super(...arguments),this.identifier=3}}export{i as AllRenderPasses,a as HighlightPassParameters,n as MaterialPassParameters,r as PassParameters,h as ShadowMapPassParameters,o as ViewshedShadowMapPassParameters};