@arcgis/core 4.23.0-next.20220106 → 4.23.0-next.20220124

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 (642) hide show
  1. package/assets/components/assets/calcite-date-picker/nls/bg.json +31 -0
  2. package/assets/components/assets/calcite-icon/centerAlign16.json +1 -0
  3. package/assets/components/assets/calcite-icon/centerAlign24.json +1 -0
  4. package/assets/components/assets/calcite-icon/centerAlign32.json +1 -0
  5. package/assets/components/assets/calcite-icon/checkSquareF16.json +1 -0
  6. package/assets/components/assets/calcite-icon/checkSquareF24.json +1 -0
  7. package/assets/components/assets/calcite-icon/checkSquareF32.json +1 -0
  8. package/assets/components/assets/calcite-icon/convert16.json +1 -0
  9. package/assets/components/assets/calcite-icon/convert24.json +1 -0
  10. package/assets/components/assets/calcite-icon/convert32.json +1 -0
  11. package/assets/components/assets/calcite-icon/explore16.json +1 -0
  12. package/assets/components/assets/calcite-icon/explore24.json +1 -0
  13. package/assets/components/assets/calcite-icon/explore32.json +1 -0
  14. package/assets/components/assets/calcite-icon/formDropdown16.json +1 -0
  15. package/assets/components/assets/calcite-icon/formDropdown24.json +1 -0
  16. package/assets/components/assets/calcite-icon/formDropdown32.json +1 -0
  17. package/assets/components/assets/calcite-icon/language16.json +1 -0
  18. package/assets/components/assets/calcite-icon/language24.json +1 -0
  19. package/assets/components/assets/calcite-icon/language32.json +1 -0
  20. package/assets/components/assets/calcite-icon/languageTranslate16.json +1 -0
  21. package/assets/components/assets/calcite-icon/languageTranslate24.json +1 -0
  22. package/assets/components/assets/calcite-icon/languageTranslate32.json +1 -0
  23. package/assets/components/assets/calcite-icon/leftAlign16.json +1 -0
  24. package/assets/components/assets/calcite-icon/leftAlign24.json +1 -0
  25. package/assets/components/assets/calcite-icon/leftAlign32.json +1 -0
  26. package/assets/components/assets/calcite-icon/lineSolid4.json +1 -0
  27. package/assets/components/assets/calcite-icon/partlyCloudy16.json +1 -0
  28. package/assets/components/assets/calcite-icon/partlyCloudy24.json +1 -0
  29. package/assets/components/assets/calcite-icon/partlyCloudy32.json +1 -0
  30. package/assets/components/assets/calcite-icon/rightAlign16.json +1 -0
  31. package/assets/components/assets/calcite-icon/rightAlign24.json +1 -0
  32. package/assets/components/assets/calcite-icon/rightAlign32.json +1 -0
  33. package/assets/components/assets/calcite-icon/screenshotMode16.json +1 -0
  34. package/assets/components/assets/calcite-icon/screenshotMode24.json +1 -0
  35. package/assets/components/assets/calcite-icon/screenshotMode32.json +1 -0
  36. package/assets/components/assets/calcite-icon/squareF16.json +1 -0
  37. package/assets/components/assets/calcite-icon/squareF24.json +1 -0
  38. package/assets/components/assets/calcite-icon/squareF32.json +1 -0
  39. package/assets/components/assets/calcite-icon/terminal16.json +1 -0
  40. package/assets/components/assets/calcite-icon/terminal24.json +1 -0
  41. package/assets/components/assets/calcite-icon/terminal32.json +1 -0
  42. package/assets/components/assets/calcite-icon/touch16.json +1 -0
  43. package/assets/components/assets/calcite-icon/touch24.json +1 -0
  44. package/assets/components/assets/calcite-icon/touch32.json +1 -0
  45. package/assets/components/assets/calcite-icon/xHexagon16.json +1 -0
  46. package/assets/components/assets/calcite-icon/xHexagon24.json +1 -0
  47. package/assets/components/assets/calcite-icon/xHexagon32.json +1 -0
  48. package/assets/components/assets/calcite-icon/xHexagonF16.json +1 -0
  49. package/assets/components/assets/calcite-icon/xHexagonF24.json +1 -0
  50. package/assets/components/assets/calcite-icon/xHexagonF32.json +1 -0
  51. package/assets/components/assets/calcite-icon/xOctagonF16.json +1 -0
  52. package/assets/components/assets/calcite-icon/xOctagonF24.json +1 -0
  53. package/assets/components/assets/calcite-icon/xOctagonF32.json +1 -0
  54. package/assets/esri/core/workers/RemoteClient.js +1 -1
  55. package/assets/esri/core/workers/chunks/09da224052976e290828.js +1 -0
  56. package/assets/esri/core/workers/chunks/0bf079e752ab79468478.js +1 -0
  57. package/assets/esri/core/workers/chunks/{ce5ca5e95b2378ec55b9.js → 1305ef8717da6e902a55.js} +1 -1
  58. package/assets/esri/core/workers/chunks/199670a3a564ebe3bd79.js +1 -0
  59. package/assets/esri/core/workers/chunks/1e4d37c2b9dc83d20a11.js +1 -0
  60. package/assets/esri/core/workers/chunks/20411bb8e04703962ce6.js +1 -0
  61. package/assets/esri/core/workers/chunks/2416f8bf8bbd2ec786ab.js +1 -0
  62. package/assets/esri/core/workers/chunks/25a3e9bc0b4c7e0d3165.js +1 -0
  63. package/assets/esri/core/workers/chunks/{99f0d896c17dd09cd285.js → 2629adf79e7fd9f25f07.js} +1 -1
  64. package/assets/esri/core/workers/chunks/{9c417740bf3707a0d465.js → 2c607d30ff8ca1b61286.js} +1 -1
  65. package/assets/esri/core/workers/chunks/2e445a8735ea2adb641a.js +1 -0
  66. package/assets/esri/core/workers/chunks/37a7bd30352b1309b8f8.js +1 -0
  67. package/assets/esri/core/workers/chunks/390d9021169e65c10eb8.js +1 -0
  68. package/assets/esri/core/workers/chunks/{3d5169ea9810d10caf0d.js → 3a9740dccda6a733313c.js} +1 -1
  69. package/assets/esri/core/workers/chunks/{8a250ec51097f16feb66.js → 40a1e713f63ec77110c0.js} +1 -1
  70. package/assets/esri/core/workers/chunks/43cdff2418325e163420.js +1 -0
  71. package/assets/esri/core/workers/chunks/4c9084a04948b6924749.js +1 -0
  72. package/assets/esri/core/workers/chunks/{4beba242e7540ee3182b.js → 5538639a49c7cc2eca63.js} +1 -1
  73. package/assets/esri/core/workers/chunks/57c67e260267a1dbc5e3.js +1 -0
  74. package/assets/esri/core/workers/chunks/5a4a5585ec8027079f32.js +1 -0
  75. package/assets/esri/core/workers/chunks/5ac4c1d54b94c7d87835.js +1 -0
  76. package/assets/esri/core/workers/chunks/60371c0f750cde87656d.js +1 -0
  77. package/assets/esri/core/workers/chunks/{ba6fdaed6c315dc13981.js → 625d2663daa8e0cf64b0.js} +1 -1
  78. package/assets/esri/core/workers/chunks/{3a2b2dc3e938d53faa30.js → 64276aacaafa4c8a15bd.js} +1 -1
  79. package/assets/esri/core/workers/chunks/{75466e0c8c8da499b150.js → 662d13f68cf3ec92439b.js} +1 -1
  80. package/assets/esri/core/workers/chunks/663ad15b86936eb06b69.js +1 -0
  81. package/assets/esri/core/workers/chunks/67162b3e2cc1b5dc6818.js +1 -0
  82. package/assets/esri/core/workers/chunks/68a59ce98177d8513337.js +1 -0
  83. package/assets/esri/core/workers/chunks/6cdfe175c965918b741b.js +1 -0
  84. package/assets/esri/core/workers/chunks/739e579150bf466d43ae.js +1 -0
  85. package/assets/esri/core/workers/chunks/74df1f3e1e2e524a89d2.js +1 -0
  86. package/assets/esri/core/workers/chunks/76eef4799f6c5fff7e2d.js +1 -0
  87. package/assets/esri/core/workers/chunks/{ea05f870dda27bca4fe8.js → 7a8764ae8a0041e1151d.js} +2 -2
  88. package/assets/esri/core/workers/chunks/{ea05f870dda27bca4fe8.js.LICENSE.txt → 7a8764ae8a0041e1151d.js.LICENSE.txt} +1 -1
  89. package/assets/esri/core/workers/chunks/7baf6b1f3f050aa67ae4.js +1 -0
  90. package/assets/esri/core/workers/chunks/{f52b6d5037e4205b035c.js → 7bc5cc5dbf1b7b70ddac.js} +1 -1
  91. package/assets/esri/core/workers/chunks/85e27fd949475f9a6bbc.js +1 -0
  92. package/assets/esri/core/workers/chunks/8967288145f8fbd20e7d.js +1 -0
  93. package/assets/esri/core/workers/chunks/8cbb04a9065aa3756638.js +1 -0
  94. package/assets/esri/core/workers/chunks/8fa0a14165d43ffe87a5.js +1 -0
  95. package/assets/esri/core/workers/chunks/94b8dbf859df71858d1c.js +1 -0
  96. package/assets/esri/core/workers/chunks/96ab518eb6ba11333dee.js +1 -0
  97. package/assets/esri/core/workers/chunks/99a777693e4539f0b03b.js +1 -0
  98. package/assets/esri/core/workers/chunks/9cb2ae42a8e328b1d98d.js +1 -0
  99. package/assets/esri/core/workers/chunks/9d3c58a0ef634d95b7bd.js +1 -0
  100. package/assets/esri/core/workers/chunks/9d77467aa71d345fc1b6.js +1 -0
  101. package/assets/esri/core/workers/chunks/9f8b7b6b4e95f9a794fc.js +1 -0
  102. package/assets/esri/core/workers/chunks/a78757b9c7e8cbea08fa.js +1 -0
  103. package/assets/esri/core/workers/chunks/{9b7c51ff3d2b42aa62f5.js → a7b1b75643ed31489495.js} +1 -1
  104. package/assets/esri/core/workers/chunks/a8b13fb804bb775e4967.js +1 -0
  105. package/assets/esri/core/workers/chunks/a8c13529367c037cdd94.js +1 -0
  106. package/assets/esri/core/workers/chunks/a96afc176041f698c7a1.js +1 -0
  107. package/assets/esri/core/workers/chunks/aa861b8eae6c85f3dad4.js +1 -0
  108. package/assets/esri/core/workers/chunks/ac8dca61ade28c542ae2.js +1 -0
  109. package/assets/esri/core/workers/chunks/ad081d8e49e7f90c3c26.js +1 -0
  110. package/assets/esri/core/workers/chunks/afa6912454f2a5ffadce.js +1 -0
  111. package/assets/esri/core/workers/chunks/b0b036ad3ad3cd956747.js +1 -0
  112. package/assets/esri/core/workers/chunks/{2a39d520b192b8e552b5.js → b2ae5fc4f787ea568b88.js} +1 -1
  113. package/assets/esri/core/workers/chunks/b2beb6e1fd2ee6503830.js +1 -0
  114. package/assets/esri/core/workers/chunks/{b87bc1481a49b38109f4.js → b9c177524b3e7de1ffd1.js} +1 -1
  115. package/assets/esri/core/workers/chunks/ba615f118a3a8970ef25.js +1 -0
  116. package/assets/esri/core/workers/chunks/{7c1b9ae141112a63b446.js → ba6654a885be4b7a43f0.js} +1 -1
  117. package/assets/esri/core/workers/chunks/bab1cfd0a901181622af.js +1 -0
  118. package/assets/esri/core/workers/chunks/be2b7cce79fd41627931.js +1 -0
  119. package/assets/esri/core/workers/chunks/bf6dda4a2af14c4b7716.js +1 -0
  120. package/assets/esri/core/workers/chunks/{ed0297fc61014e848c18.js → c080114a69fa95b88d22.js} +1 -1
  121. package/assets/esri/core/workers/chunks/c13dfdd548dcb1bdb294.js +1 -0
  122. package/assets/esri/core/workers/chunks/c36f84daa7736878418d.js +1 -0
  123. package/assets/esri/core/workers/chunks/c6f94b92e866b881d9b9.js +1 -0
  124. package/assets/esri/core/workers/chunks/{573dc3064e84ca86844d.js → c959e0d1cf7dce0421b9.js} +1 -1
  125. package/assets/esri/core/workers/chunks/{1fd48459afb58a6cf14f.js → ca2f5faa01d99c21ec14.js} +1 -1
  126. package/assets/esri/core/workers/chunks/cbb291412fd1a5261aa9.js +1 -0
  127. package/assets/esri/core/workers/chunks/{7aa543a97f055cddea99.js → cc146c57bbdac8029fd8.js} +1 -1
  128. package/assets/esri/core/workers/chunks/cd7d83d127e085d52584.js +1 -0
  129. package/assets/esri/core/workers/chunks/cef4af64860ebbfc1c47.js +1 -0
  130. package/assets/esri/core/workers/chunks/d1454155ee1b8a421cbb.js +1 -0
  131. package/assets/esri/core/workers/chunks/{0cd583c3233573cb8468.js → d24c4fbc567486b1188f.js} +1 -1
  132. package/assets/esri/core/workers/chunks/d52108864136c5a8a618.js +1 -0
  133. package/assets/esri/core/workers/chunks/d72488db62fcf39447b6.js +1 -0
  134. package/assets/esri/core/workers/chunks/de03439ca2c9782bf325.js +1 -0
  135. package/assets/esri/core/workers/chunks/de6cff7b6cbbf99b20d1.js +981 -0
  136. package/assets/esri/core/workers/chunks/e079cb1d53aca15b7df2.js +1 -0
  137. package/assets/esri/core/workers/chunks/e59764ee8cf25d4f74e2.js +1 -0
  138. package/assets/esri/core/workers/chunks/e6df9839b551569fbc62.js +1 -0
  139. package/assets/esri/core/workers/chunks/e97e986120aaadad7d4c.js +1 -0
  140. package/assets/esri/core/workers/chunks/{2f66fcb8670b108af549.js → ed0bcc66fb1e0ee75a4b.js} +1 -1
  141. package/assets/esri/core/workers/chunks/f8e7755240a94b499e1f.js +1 -0
  142. package/assets/esri/core/workers/chunks/{b4ed7856cd9c98434477.js → fe864d01e72aa24574b6.js} +1 -1
  143. package/assets/esri/libs/vxl/vxlLayer.wasm +0 -0
  144. package/assets/esri/themes/base/icons/fonts/CalciteWebCoreIcons.svg +1 -0
  145. package/assets/esri/themes/base/icons/fonts/CalciteWebCoreIcons.ttf +0 -0
  146. package/assets/esri/themes/base/icons/fonts/CalciteWebCoreIcons.woff +0 -0
  147. package/assets/esri/themes/base/icons/selection.json +1 -1
  148. package/assets/esri/themes/base/icons/style.css +4 -0
  149. package/assets/esri/themes/base/icons/style.scss +6 -0
  150. package/assets/esri/themes/base/icons/variables.scss +1 -0
  151. package/assets/esri/themes/base/widgets/_FeatureTable.scss +6 -0
  152. package/assets/esri/themes/base/widgets/_Weather.scss +1 -1
  153. package/assets/esri/themes/dark/main.css +1 -1
  154. package/assets/esri/themes/dark-blue/main.css +1 -1
  155. package/assets/esri/themes/dark-green/main.css +1 -1
  156. package/assets/esri/themes/dark-purple/main.css +1 -1
  157. package/assets/esri/themes/dark-red/main.css +1 -1
  158. package/assets/esri/themes/light/main.css +1 -1
  159. package/assets/esri/themes/light/view.css +1 -1
  160. package/assets/esri/themes/light-blue/main.css +1 -1
  161. package/assets/esri/themes/light-green/main.css +1 -1
  162. package/assets/esri/themes/light-purple/main.css +1 -1
  163. package/assets/esri/themes/light-red/main.css +1 -1
  164. package/assets/esri/widgets/Editor/t9n/Editor_ar.json +1 -1
  165. package/assets/esri/widgets/Editor/t9n/Editor_bg.json +1 -1
  166. package/assets/esri/widgets/Editor/t9n/Editor_bs.json +1 -1
  167. package/assets/esri/widgets/Editor/t9n/Editor_ca.json +1 -1
  168. package/assets/esri/widgets/Editor/t9n/Editor_cs.json +1 -1
  169. package/assets/esri/widgets/Editor/t9n/Editor_da.json +1 -1
  170. package/assets/esri/widgets/Editor/t9n/Editor_de.json +1 -1
  171. package/assets/esri/widgets/Editor/t9n/Editor_el.json +1 -1
  172. package/assets/esri/widgets/Editor/t9n/Editor_es.json +1 -1
  173. package/assets/esri/widgets/Editor/t9n/Editor_et.json +1 -1
  174. package/assets/esri/widgets/Editor/t9n/Editor_fi.json +1 -1
  175. package/assets/esri/widgets/Editor/t9n/Editor_fr.json +1 -1
  176. package/assets/esri/widgets/Editor/t9n/Editor_he.json +1 -1
  177. package/assets/esri/widgets/Editor/t9n/Editor_hr.json +1 -1
  178. package/assets/esri/widgets/Editor/t9n/Editor_hu.json +1 -1
  179. package/assets/esri/widgets/Editor/t9n/Editor_id.json +1 -1
  180. package/assets/esri/widgets/Editor/t9n/Editor_it.json +1 -1
  181. package/assets/esri/widgets/Editor/t9n/Editor_ja.json +1 -1
  182. package/assets/esri/widgets/Editor/t9n/Editor_ko.json +1 -1
  183. package/assets/esri/widgets/Editor/t9n/Editor_lt.json +1 -1
  184. package/assets/esri/widgets/Editor/t9n/Editor_lv.json +1 -1
  185. package/assets/esri/widgets/Editor/t9n/Editor_nb.json +1 -1
  186. package/assets/esri/widgets/Editor/t9n/Editor_nl.json +1 -1
  187. package/assets/esri/widgets/Editor/t9n/Editor_pl.json +1 -1
  188. package/assets/esri/widgets/Editor/t9n/Editor_pt-BR.json +1 -1
  189. package/assets/esri/widgets/Editor/t9n/Editor_pt-PT.json +1 -1
  190. package/assets/esri/widgets/Editor/t9n/Editor_ro.json +1 -1
  191. package/assets/esri/widgets/Editor/t9n/Editor_ru.json +1 -1
  192. package/assets/esri/widgets/Editor/t9n/Editor_sk.json +1 -1
  193. package/assets/esri/widgets/Editor/t9n/Editor_sl.json +1 -1
  194. package/assets/esri/widgets/Editor/t9n/Editor_sr.json +1 -1
  195. package/assets/esri/widgets/Editor/t9n/Editor_sv.json +1 -1
  196. package/assets/esri/widgets/Editor/t9n/Editor_th.json +1 -1
  197. package/assets/esri/widgets/Editor/t9n/Editor_tr.json +1 -1
  198. package/assets/esri/widgets/Editor/t9n/Editor_uk.json +1 -1
  199. package/assets/esri/widgets/Editor/t9n/Editor_vi.json +1 -1
  200. package/assets/esri/widgets/Editor/t9n/Editor_zh-CN.json +1 -1
  201. package/assets/esri/widgets/Editor/t9n/Editor_zh-HK.json +1 -1
  202. package/assets/esri/widgets/Editor/t9n/Editor_zh-TW.json +1 -1
  203. package/assets/esri/widgets/ElevationProfile/t9n/ElevationProfile_ja.json +1 -1
  204. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_ar.json +1 -1
  205. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_bg.json +1 -1
  206. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_bs.json +1 -1
  207. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_ca.json +1 -1
  208. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_cs.json +1 -1
  209. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_da.json +1 -1
  210. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_de.json +1 -1
  211. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_el.json +1 -1
  212. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_es.json +1 -1
  213. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_et.json +1 -1
  214. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_fi.json +1 -1
  215. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_fr.json +1 -1
  216. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_he.json +1 -1
  217. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_hr.json +1 -1
  218. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_hu.json +1 -1
  219. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_id.json +1 -1
  220. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_it.json +1 -1
  221. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_ja.json +1 -1
  222. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_ko.json +1 -1
  223. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_lt.json +1 -1
  224. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_lv.json +1 -1
  225. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_nb.json +1 -1
  226. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_nl.json +1 -1
  227. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_pl.json +1 -1
  228. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_pt-BR.json +1 -1
  229. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_pt-PT.json +1 -1
  230. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_ro.json +1 -1
  231. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_ru.json +1 -1
  232. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_sk.json +1 -1
  233. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_sl.json +1 -1
  234. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_sr.json +1 -1
  235. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_sv.json +1 -1
  236. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_th.json +1 -1
  237. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_tr.json +1 -1
  238. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_uk.json +1 -1
  239. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_vi.json +1 -1
  240. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_zh-CN.json +1 -1
  241. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_zh-HK.json +1 -1
  242. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_zh-TW.json +1 -1
  243. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_cs.json +1 -1
  244. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_el.json +1 -1
  245. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_fr.json +1 -1
  246. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_lv.json +1 -1
  247. package/assets/esri/widgets/Weather/t9n/Weather_ar.json +1 -1
  248. package/assets/esri/widgets/Weather/t9n/Weather_bg.json +1 -1
  249. package/assets/esri/widgets/Weather/t9n/Weather_bs.json +1 -1
  250. package/assets/esri/widgets/Weather/t9n/Weather_ca.json +1 -1
  251. package/assets/esri/widgets/Weather/t9n/Weather_cs.json +1 -1
  252. package/assets/esri/widgets/Weather/t9n/Weather_da.json +1 -1
  253. package/assets/esri/widgets/Weather/t9n/Weather_de.json +1 -1
  254. package/assets/esri/widgets/Weather/t9n/Weather_el.json +1 -1
  255. package/assets/esri/widgets/Weather/t9n/Weather_es.json +1 -1
  256. package/assets/esri/widgets/Weather/t9n/Weather_et.json +1 -1
  257. package/assets/esri/widgets/Weather/t9n/Weather_fi.json +1 -1
  258. package/assets/esri/widgets/Weather/t9n/Weather_fr.json +1 -1
  259. package/assets/esri/widgets/Weather/t9n/Weather_he.json +1 -1
  260. package/assets/esri/widgets/Weather/t9n/Weather_hr.json +1 -1
  261. package/assets/esri/widgets/Weather/t9n/Weather_hu.json +1 -1
  262. package/assets/esri/widgets/Weather/t9n/Weather_id.json +1 -1
  263. package/assets/esri/widgets/Weather/t9n/Weather_it.json +1 -1
  264. package/assets/esri/widgets/Weather/t9n/Weather_ja.json +1 -1
  265. package/assets/esri/widgets/Weather/t9n/Weather_ko.json +1 -1
  266. package/assets/esri/widgets/Weather/t9n/Weather_lt.json +1 -1
  267. package/assets/esri/widgets/Weather/t9n/Weather_lv.json +1 -1
  268. package/assets/esri/widgets/Weather/t9n/Weather_nb.json +1 -1
  269. package/assets/esri/widgets/Weather/t9n/Weather_nl.json +1 -1
  270. package/assets/esri/widgets/Weather/t9n/Weather_pl.json +1 -1
  271. package/assets/esri/widgets/Weather/t9n/Weather_pt-BR.json +1 -1
  272. package/assets/esri/widgets/Weather/t9n/Weather_pt-PT.json +1 -1
  273. package/assets/esri/widgets/Weather/t9n/Weather_ro.json +1 -1
  274. package/assets/esri/widgets/Weather/t9n/Weather_ru.json +1 -1
  275. package/assets/esri/widgets/Weather/t9n/Weather_sk.json +1 -1
  276. package/assets/esri/widgets/Weather/t9n/Weather_sl.json +1 -1
  277. package/assets/esri/widgets/Weather/t9n/Weather_sr.json +1 -1
  278. package/assets/esri/widgets/Weather/t9n/Weather_sv.json +1 -1
  279. package/assets/esri/widgets/Weather/t9n/Weather_th.json +1 -1
  280. package/assets/esri/widgets/Weather/t9n/Weather_tr.json +1 -1
  281. package/assets/esri/widgets/Weather/t9n/Weather_uk.json +1 -1
  282. package/assets/esri/widgets/Weather/t9n/Weather_vi.json +1 -1
  283. package/assets/esri/widgets/Weather/t9n/Weather_zh-CN.json +1 -1
  284. package/assets/esri/widgets/Weather/t9n/Weather_zh-HK.json +1 -1
  285. package/assets/esri/widgets/Weather/t9n/Weather_zh-TW.json +1 -1
  286. package/chunks/Clouds.glsl.js +14 -14
  287. package/chunks/CloudsComposition.glsl.js +4 -4
  288. package/chunks/DefaultMaterial.glsl.js +2 -2
  289. package/chunks/HUDMaterial.glsl.js +22 -21
  290. package/chunks/RibbonLine.glsl.js +10 -14
  291. package/chunks/persistableUrlUtils.js +1 -1
  292. package/chunks/vec32.js +1 -1
  293. package/chunks/vec42.js +1 -1
  294. package/chunks/vxlLayer.js +1 -1
  295. package/core/accessorSupport/ensureType.js +1 -1
  296. package/core/accessorSupport/get.js +1 -1
  297. package/core/accessorSupport/set.js +1 -1
  298. package/core/has.js +1 -1
  299. package/core/urlUtils.js +1 -1
  300. package/core/workers/workerFactory.js +1 -1
  301. package/form/elements/FieldElement.js +1 -1
  302. package/geometry/support/buffer/math/common.js +1 -1
  303. package/geometry/support/heightModelInfoUtils.js +1 -1
  304. package/interfaces.d.ts +372 -126
  305. package/layers/FeatureLayer.js +1 -1
  306. package/layers/RouteLayer.js +1 -1
  307. package/layers/SubtypeGroupLayer.js +1 -1
  308. package/layers/VectorTileLayer.js +1 -1
  309. package/layers/VoxelLayer.js +1 -1
  310. package/layers/VoxelWasmPerScene.js +1 -1
  311. package/layers/WMSLayer.js +1 -1
  312. package/layers/graphics/controllers/FeatureTileController3D.js +1 -1
  313. package/layers/graphics/data/QueryEngineCapabilities.js +1 -1
  314. package/layers/graphics/sources/OGCFeatureSource.js +1 -1
  315. package/layers/mixins/ArcGISImageService.js +1 -1
  316. package/layers/mixins/OperationalLayer.js +1 -1
  317. package/layers/ogc/crsUtils.js +5 -0
  318. package/layers/support/RasterFunction.js +1 -1
  319. package/layers/support/RasterWorker.js +1 -1
  320. package/layers/support/capabilities.js +1 -1
  321. package/layers/support/rasterDatasets/BaseRaster.js +1 -1
  322. package/layers/support/rasterDatasets/WCSRaster.js +1 -1
  323. package/layers/support/rasterDatasets/wcsCoverageParser.js +1 -1
  324. package/layers/support/rasterFunctions/rasterProjectionHelper.js +1 -1
  325. package/layers/support/vectorTileLayerLoader.js +1 -1
  326. package/layers/support/wmsUtils.js +1 -1
  327. package/layers/support/wmtsUtils.js +1 -1
  328. package/libs/vxl/enums.js +1 -1
  329. package/package.json +5 -5
  330. package/portal/schemas/buildingSceneLayerItem.js +1 -1
  331. package/portal/schemas/definitions.js +1 -1
  332. package/portal/schemas/integratedMeshLayerItem.js +1 -1
  333. package/portal/schemas/pointCloudLayerItem.js +1 -1
  334. package/portal/schemas/sceneLayerItem.js +1 -1
  335. package/portal/schemas/webScene.js +1 -1
  336. package/rasterRenderers.js +1 -1
  337. package/renderers/support/RasterSymbolizer.js +1 -1
  338. package/request.js +1 -1
  339. package/rest/find.js +1 -1
  340. package/rest/geometryService/generalize.js +1 -1
  341. package/rest/geometryService/lengths.js +1 -1
  342. package/rest/geometryService/offset.js +1 -1
  343. package/rest/geometryService/relation.js +1 -1
  344. package/rest/geometryService/trimExtend.js +1 -1
  345. package/rest/identify.js +1 -1
  346. package/{tasks → rest}/operations/find.js +0 -0
  347. package/{tasks → rest}/operations/generalize.js +0 -0
  348. package/rest/operations/identify.js +5 -0
  349. package/{tasks → rest}/operations/lengths.js +0 -0
  350. package/{tasks → rest}/operations/offset.js +0 -0
  351. package/{tasks → rest}/operations/relation.js +0 -0
  352. package/{tasks → rest}/operations/trimExtend.js +0 -0
  353. package/{tasks → rest}/operations/urlUtils.js +0 -0
  354. package/rest/print.js +1 -1
  355. package/rest/query/operations/query.js +1 -1
  356. package/rest/query/operations/queryAttachments.js +1 -1
  357. package/rest/query/operations/queryRelatedRecords.js +1 -1
  358. package/rest/query/operations/queryTopFeatures.js +1 -1
  359. package/rest/route/utils.js +1 -1
  360. package/rest/support/ImageIdentifyParameters.js +1 -1
  361. package/rest/support/NetworkServiceDescription.js +1 -1
  362. package/rest/support/RouteInfo.js +1 -1
  363. package/rest/support/RouteParameters.js +1 -1
  364. package/rest/support/RouteSettings.js +5 -0
  365. package/rest/support/StatisticDefinition.js +1 -1
  366. package/rest/support/Stop.js +1 -1
  367. package/rest/support/networkEnums.js +1 -1
  368. package/smartMapping/renderers/univariateColorSize.js +1 -1
  369. package/smartMapping/support/adapters/FeatureLayerAdapter.js +1 -1
  370. package/support/featureFlags.js +1 -1
  371. package/support/revision.js +1 -1
  372. package/symbols/ExtrudeSymbol3DLayer.js +1 -1
  373. package/symbols/Font.js +1 -1
  374. package/symbols/IconSymbol3DLayer.js +1 -1
  375. package/symbols/ObjectSymbol3DLayer.js +1 -1
  376. package/symbols/PathSymbol3DLayer.js +1 -1
  377. package/symbols/TextSymbol.js +1 -1
  378. package/symbols/TextSymbol3DLayer.js +1 -1
  379. package/symbols/cim/placements/PlacementAlongLineSameSize.js +1 -1
  380. package/symbols/support/Symbol3DHalo.js +1 -1
  381. package/symbols/support/Symbol3DMaterial.js +1 -1
  382. package/symbols/support/cimSymbolUtils.js +1 -1
  383. package/symbols/support/textUtils.js +5 -0
  384. package/symbols/support/utils.js +1 -1
  385. package/views/2d/engine/Stage.js +1 -1
  386. package/views/2d/engine/vectorTiles/TileHandler.js +1 -1
  387. package/views/2d/engine/vectorTiles/shaders/VTLMaterialManager.js +1 -1
  388. package/views/2d/engine/vectorTiles/style/VectorTileSource.js +1 -1
  389. package/views/2d/engine/vectorTiles/style/VectorTilesRequestManager.js +5 -0
  390. package/views/2d/engine/webgl/BitBlitRenderer.js +1 -1
  391. package/views/2d/engine/webgl/MaterialManager.js +1 -1
  392. package/views/2d/engine/webgl/alignmentUtils.js +1 -1
  393. package/views/2d/engine/webgl/effects/BlendEffect.js +1 -1
  394. package/views/2d/engine/webgl/materialKey/MaterialKey.js +1 -1
  395. package/views/2d/engine/webgl/mesh/templates/WGLLabelTemplate.js +1 -1
  396. package/views/2d/engine/webgl/shaders/BlendPrograms.js +1 -1
  397. package/views/2d/engine/webgl/shaders/MaterialPrograms.js +1 -1
  398. package/views/2d/layers/BaseLayerView2D.js +1 -1
  399. package/views/2d/layers/BaseLayerViewGL2D.js +1 -1
  400. package/views/2d/layers/GraphicsLayerView2D.js +1 -1
  401. package/views/2d/layers/ImageryLayerView2D.js +1 -1
  402. package/views/2d/layers/ImageryTileLayerView2D.js +1 -1
  403. package/views/2d/layers/LayerView2D.js +1 -1
  404. package/views/2d/layers/MapNotesLayerView2D.js +1 -1
  405. package/views/2d/layers/RouteLayerView2D.js +1 -1
  406. package/views/2d/layers/TileLayerView2D.js +1 -1
  407. package/views/2d/layers/VectorTileLayerView2D.js +1 -1
  408. package/views/2d/layers/WMSLayerView2D.js +1 -1
  409. package/views/2d/layers/WMTSLayerView2D.js +1 -1
  410. package/views/2d/layers/features/sources/BaseFeatureSource.js +1 -1
  411. package/views/2d/layers/features/support/AttributeStore.js +1 -1
  412. package/views/2d/layers/graphics/GraphicBoundsRenderer.js +1 -1
  413. package/views/2d/layers/graphics/GraphicsView2D.js +1 -1
  414. package/views/2d/layers/imagery/BaseImageryTileSubView2D.js +1 -1
  415. package/views/2d/support/engineHelpers.js +1 -1
  416. package/views/3d/analysis/LineOfSight/LineOfSightController.js +1 -1
  417. package/views/3d/environment/CloudsComposition.glsl.js +1 -1
  418. package/views/3d/environment/CloudsComposition.js +1 -1
  419. package/views/3d/environment/CloudsGenerator.js +1 -1
  420. package/views/3d/environment/CloudyWeather.js +1 -1
  421. package/views/3d/environment/Fog.js +1 -1
  422. package/views/3d/environment/FoggyWeather.js +1 -1
  423. package/views/3d/environment/NoiseTextureAtlas.js +1 -1
  424. package/views/3d/environment/RainyWeather.js +1 -1
  425. package/views/3d/environment/Stars.js +1 -1
  426. package/views/3d/layers/BuildingComponentSublayerView3D.js +1 -1
  427. package/views/3d/layers/DynamicLayerView3D.js +1 -1
  428. package/views/3d/layers/FeatureLayerViewBase3D.js +1 -1
  429. package/views/3d/layers/FeatureLikeLayerView3D.js +1 -1
  430. package/views/3d/layers/GraphicsLayerView3D.js +1 -1
  431. package/views/3d/layers/GraphicsView3D.js +1 -1
  432. package/views/3d/layers/I3SMeshView3D.js +1 -1
  433. package/views/3d/layers/ImageryLayerView3D.js +1 -1
  434. package/views/3d/layers/ImageryTileLayerView3D.js +1 -1
  435. package/views/3d/layers/IntegratedMeshLayerView3D.js +1 -1
  436. package/views/3d/layers/MapImageLayerView3D.js +1 -1
  437. package/views/3d/layers/OGCFeatureLayerView3D.js +1 -1
  438. package/views/3d/layers/PointCloudLayerView3D.js +1 -1
  439. package/views/3d/layers/SceneLayerGraphicsView3D.js +1 -1
  440. package/views/3d/layers/SceneLayerView3D.js +1 -1
  441. package/views/3d/layers/VectorTileLayerView3D.js +1 -1
  442. package/views/3d/layers/VoxelLayerView3D.js +1 -1
  443. package/views/3d/layers/WMSLayerView3D.js +1 -1
  444. package/views/3d/layers/WMTSLayerView3D.js +1 -1
  445. package/views/3d/layers/graphics/Deconflictor.js +1 -1
  446. package/views/3d/layers/graphics/Graphics3DCore.js +1 -1
  447. package/views/3d/layers/graphics/Graphics3DDrapedGraphicLayer.js +1 -1
  448. package/views/3d/layers/graphics/Graphics3DElevationAlignment.js +1 -1
  449. package/views/3d/layers/graphics/Graphics3DFeatureProcessor.js +5 -0
  450. package/views/3d/layers/graphics/Graphics3DFrustumVisibility.js +1 -1
  451. package/views/3d/layers/graphics/Graphics3DIconSymbolLayer.js +1 -1
  452. package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
  453. package/views/3d/layers/graphics/Graphics3DMeshFillSymbolLayer.js +1 -1
  454. package/views/3d/layers/graphics/Graphics3DPointSymbol.js +1 -1
  455. package/views/3d/layers/graphics/Graphics3DPolygonFillSymbolLayer.js +1 -1
  456. package/views/3d/layers/graphics/Graphics3DScaleVisibility.js +1 -1
  457. package/views/3d/layers/graphics/Graphics3DSymbolCreationContext.js +1 -1
  458. package/views/3d/layers/graphics/Graphics3DSymbolLayer.js +1 -1
  459. package/views/3d/layers/graphics/Graphics3DTextSymbolLayer.js +1 -1
  460. package/views/3d/layers/graphics/Graphics3DWaterSymbolLayer.js +1 -1
  461. package/views/3d/layers/graphics/GraphicsProcessor.js +5 -0
  462. package/views/3d/layers/graphics/IGraphics3DFeatureProcessor.js +4 -0
  463. package/views/3d/layers/graphics/Labeler.js +1 -1
  464. package/views/3d/layers/graphics/QueryEngine.js +1 -1
  465. package/views/3d/layers/support/FeatureTileTree3DDebugger.js +1 -1
  466. package/views/3d/state/controllers/RotateController.js +1 -1
  467. package/views/3d/state/controllers/global/PinchAndPanController.js +1 -1
  468. package/views/3d/state/controllers/global/ZoomController.js +1 -1
  469. package/views/3d/state/controllers/global/ZoomStepController.js +1 -1
  470. package/views/3d/state/controllers/local/PinchAndPanController.js +1 -1
  471. package/views/3d/state/controllers/local/ZoomStepController.js +1 -1
  472. package/views/3d/support/debugFlags.js +1 -1
  473. package/views/3d/support/sunUtils.js +1 -1
  474. package/views/3d/terrain/Overlay.js +1 -1
  475. package/views/3d/terrain/OverlayManager.js +1 -1
  476. package/views/3d/terrain/OverlayRenderer.js +1 -1
  477. package/views/3d/terrain/TerrainSurface.js +1 -1
  478. package/views/3d/webgl-engine/core/shaderLibrary/Transform.glsl.js +7 -1
  479. package/views/3d/webgl-engine/core/shaderLibrary/default/DefaultMaterialAuxiliaryPasses.glsl.js +28 -24
  480. package/views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js +19 -14
  481. package/views/3d/webgl-engine/core/shaderLibrary/util/CloudsParallaxShading.glsl.js +12 -14
  482. package/views/3d/webgl-engine/lib/GridLocalOriginFactory.js +1 -1
  483. package/views/3d/webgl-engine/lib/InstanceParameters.js +5 -0
  484. package/views/3d/webgl-engine/lib/{localOrigin.js → LocalOriginFactory.js} +0 -0
  485. package/views/3d/webgl-engine/lib/OffscreenRendering.js +1 -1
  486. package/views/3d/webgl-engine/lib/Program.js +1 -1
  487. package/views/3d/webgl-engine/lib/RenderGeometry.js +1 -1
  488. package/views/3d/webgl-engine/lib/RenderTargetHelper.js +1 -1
  489. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  490. package/views/3d/webgl-engine/lib/RenderingContext.js +1 -1
  491. package/views/3d/webgl-engine/lib/SSAOHelper.js +1 -1
  492. package/views/3d/webgl-engine/lib/TextRenderParameters.js +1 -1
  493. package/views/3d/webgl-engine/lib/TextRenderer.js +1 -1
  494. package/views/3d/webgl-engine/lib/intersectorUtilsConversions.js +1 -1
  495. package/views/3d/webgl-engine/lib/lodRendering/LodRenderer.js +1 -1
  496. package/views/3d/webgl-engine/materials/DefaultMaterial.js +1 -1
  497. package/views/3d/webgl-engine/materials/HUDMaterial.js +1 -1
  498. package/views/3d/webgl-engine/parts/Model.js +1 -1
  499. package/views/3d/webgl-engine/parts/RenderView.js +1 -1
  500. package/views/3d/webgl-engine/parts/ScreenshotManager.js +1 -1
  501. package/views/3d/webgl-engine/shaders/DefaultMaterialTechnique.js +1 -1
  502. package/views/3d/webgl-engine/shaders/HUDMaterialTechnique.js +1 -1
  503. package/views/3d/webgl-engine/shaders/RealisticTreeTechnique.js +1 -1
  504. package/views/3d/webgl-engine/shaders/RibbonLineTechnique.js +1 -1
  505. package/views/LayerViewManager.js +1 -1
  506. package/views/MapView.js +1 -1
  507. package/views/SceneView.js +1 -1
  508. package/views/interactive/snapping/FeatureSnappingEngine.js +1 -1
  509. package/views/interactive/snapping/featureSources/FeatureServiceSnappingSource.js +1 -1
  510. package/views/interactive/snapping/featureSources/GraphicsSnappingSource.js +1 -1
  511. package/views/interactive/snapping/featureSources/featureServiceSource/FeatureServiceTiledFetcher.js +1 -1
  512. package/views/layers/ImageryTileLayerView.js +1 -1
  513. package/views/layers/LayerView.js +1 -1
  514. package/views/layers/OGCFeatureLayerView.js +1 -1
  515. package/views/layers/RefreshableLayerView.js +1 -1
  516. package/views/overlay/ViewOverlay.js +1 -1
  517. package/views/support/DefaultsFromMap.js +1 -1
  518. package/views/support/WatchUpdatingTracking.js +1 -1
  519. package/views/support/imageReprojection.js +1 -1
  520. package/views/webgl/BufferObject.js +1 -1
  521. package/views/webgl/ContextState.js +1 -1
  522. package/views/webgl/FramebufferObject.js +1 -1
  523. package/views/webgl/Program.js +1 -1
  524. package/views/webgl/ProgramCache.js +1 -1
  525. package/views/webgl/ProgramTemplate.js +1 -1
  526. package/views/webgl/Renderbuffer.js +1 -1
  527. package/views/webgl/RenderingContext.js +1 -1
  528. package/views/webgl/ShaderTranspiler.js +1 -1
  529. package/views/webgl/Texture.js +1 -1
  530. package/views/webgl/UniformBufferLayout.js +5 -0
  531. package/views/webgl/UniformBufferObject.js +5 -0
  532. package/views/webgl/Util.js +1 -1
  533. package/views/webgl/enums.js +1 -1
  534. package/views/webgl/rasterUtils.js +1 -1
  535. package/views/webgl/storageLayouts.js +5 -0
  536. package/views/webgl/testDoublePrecisionArithmetic.js +1 -1
  537. package/views/webgl/testFloatBufferBlend.js +1 -1
  538. package/views/webgl/testSVGPremultipliedAlpha.js +1 -1
  539. package/views/webgl/testSamplerPrecision.js +1 -1
  540. package/views/webgl/tests/SimpleDraw.js +1 -1
  541. package/widgets/BasemapLayerList.js +1 -1
  542. package/widgets/BuildingExplorer/BuildingDisciplinesViewModel.js +1 -1
  543. package/widgets/Editor/BatchCreateWorkflow.js +1 -1
  544. package/widgets/Editor/CreateWorkflow.js +1 -1
  545. package/widgets/Editor/UpdateWorkflow.js +1 -1
  546. package/widgets/Editor/workflowUtils.js +1 -1
  547. package/widgets/ElevationProfile/components/SettingsButton.js +1 -1
  548. package/widgets/ElevationProfile.js +1 -1
  549. package/widgets/Feature/FeatureExpression/FeatureExpressionViewModel.js +1 -1
  550. package/widgets/Feature/FeatureExpression.js +1 -1
  551. package/widgets/Feature/FeatureMedia/FeatureMediaViewModel.js +1 -1
  552. package/widgets/Feature/FeatureMedia.js +1 -1
  553. package/widgets/Feature/FeatureViewModel.js +1 -1
  554. package/widgets/FeatureForm/FeatureFormViewModel.js +1 -1
  555. package/widgets/FeatureForm/InputField.js +1 -1
  556. package/widgets/FeatureForm/InputFieldGroup.js +1 -1
  557. package/widgets/FeatureForm.js +1 -1
  558. package/widgets/FeatureTable/Grid/Grid.js +1 -1
  559. package/widgets/FeatureTable.js +1 -1
  560. package/widgets/FeatureTemplates.js +1 -1
  561. package/widgets/FloorFilter.js +1 -1
  562. package/widgets/LayerList/LayerListViewModel.js +1 -1
  563. package/widgets/LayerList/ListItemPanel.js +1 -1
  564. package/widgets/LayerList/support/layerListUtils.js +1 -1
  565. package/widgets/Legend/support/ActiveLayerInfo.js +1 -1
  566. package/widgets/Popup.js +1 -1
  567. package/widgets/Print.js +1 -1
  568. package/widgets/Search.js +1 -1
  569. package/widgets/Sketch/SketchViewModel.js +1 -1
  570. package/widgets/Weather/CoverageSlider.js +5 -0
  571. package/widgets/Weather/WeatherViewModel.js +1 -1
  572. package/widgets/Weather/css.js +1 -1
  573. package/widgets/Weather.js +1 -1
  574. package/widgets/support/geolocationUtils.js +1 -1
  575. package/assets/esri/core/workers/chunks/0881ce46b10362861f87.js +0 -1
  576. package/assets/esri/core/workers/chunks/0c0a02770eeeb3e28ea1.js +0 -1
  577. package/assets/esri/core/workers/chunks/0d2effbd84a9482eb639.js +0 -1
  578. package/assets/esri/core/workers/chunks/0f04246c1b591a3ac74d.js +0 -1
  579. package/assets/esri/core/workers/chunks/1ac6be0dc25e16c75d06.js +0 -1
  580. package/assets/esri/core/workers/chunks/1f8110ea12d65ca94b55.js +0 -1
  581. package/assets/esri/core/workers/chunks/2025d0fd61a64876c81b.js +0 -1
  582. package/assets/esri/core/workers/chunks/241859d74c0daac62e11.js +0 -1
  583. package/assets/esri/core/workers/chunks/2c9af2ebd72d9b55329b.js +0 -1
  584. package/assets/esri/core/workers/chunks/331be347c1b1ca0be2d2.js +0 -1
  585. package/assets/esri/core/workers/chunks/39af317388ecebb4387d.js +0 -1
  586. package/assets/esri/core/workers/chunks/39be2893a7dbdecfd65a.js +0 -1
  587. package/assets/esri/core/workers/chunks/3a20f66b0b7d08064e34.js +0 -1
  588. package/assets/esri/core/workers/chunks/445099d037affd139ed0.js +0 -1
  589. package/assets/esri/core/workers/chunks/45848fecec88ed2da33d.js +0 -1
  590. package/assets/esri/core/workers/chunks/48d3a3abc53abe6a4017.js +0 -1
  591. package/assets/esri/core/workers/chunks/5005b8c1fdd5cb9a4c19.js +0 -1
  592. package/assets/esri/core/workers/chunks/52e4c367c72ea7cc3457.js +0 -1
  593. package/assets/esri/core/workers/chunks/5d8170f6207dbeb4de1b.js +0 -1
  594. package/assets/esri/core/workers/chunks/615aa2d3ecafe30c80c0.js +0 -1
  595. package/assets/esri/core/workers/chunks/642c38ac00a962f35d44.js +0 -1
  596. package/assets/esri/core/workers/chunks/64459604505647e9c714.js +0 -1
  597. package/assets/esri/core/workers/chunks/653d1550dd1a4867a9fc.js +0 -1
  598. package/assets/esri/core/workers/chunks/65f73fbbc3c7c60c6d3d.js +0 -1
  599. package/assets/esri/core/workers/chunks/6db7081d344bea26ef64.js +0 -1
  600. package/assets/esri/core/workers/chunks/6deac533bb455be4004b.js +0 -1
  601. package/assets/esri/core/workers/chunks/6e13dab8ec43f7494297.js +0 -1
  602. package/assets/esri/core/workers/chunks/722a10c65456844d72b9.js +0 -1
  603. package/assets/esri/core/workers/chunks/7bd4c3ee43fb038b88d8.js +0 -1
  604. package/assets/esri/core/workers/chunks/803de5097a8a2c4b58a8.js +0 -1
  605. package/assets/esri/core/workers/chunks/8298231a0fd0129b0d5c.js +0 -1
  606. package/assets/esri/core/workers/chunks/8500c6c011400af1b7bd.js +0 -1
  607. package/assets/esri/core/workers/chunks/8b322a2a47dfdbb59b45.js +0 -1
  608. package/assets/esri/core/workers/chunks/8f83bebef9174c3f15da.js +0 -1
  609. package/assets/esri/core/workers/chunks/904332faa22bc0e876cb.js +0 -1
  610. package/assets/esri/core/workers/chunks/950565d1e682fc4072e1.js +0 -1
  611. package/assets/esri/core/workers/chunks/9846098704ee38bf6350.js +0 -1
  612. package/assets/esri/core/workers/chunks/a247ddd84245c81112c8.js +0 -1
  613. package/assets/esri/core/workers/chunks/a721342a32541717324d.js +0 -1
  614. package/assets/esri/core/workers/chunks/a9ffa806df20130ecfb6.js +0 -1
  615. package/assets/esri/core/workers/chunks/af13e534e4160636bd3d.js +0 -1
  616. package/assets/esri/core/workers/chunks/b2f62234ebb8b6158baa.js +0 -1
  617. package/assets/esri/core/workers/chunks/b51261a9a9ab62388839.js +0 -971
  618. package/assets/esri/core/workers/chunks/b58eba403bd517a7bb15.js +0 -1
  619. package/assets/esri/core/workers/chunks/b5bb7cfa26b1f0cec67a.js +0 -1
  620. package/assets/esri/core/workers/chunks/b8666d1a4e4fff7a4703.js +0 -1
  621. package/assets/esri/core/workers/chunks/bea1da9e3f878e0e2c83.js +0 -1
  622. package/assets/esri/core/workers/chunks/c1b6c31fa3ec1542f996.js +0 -1
  623. package/assets/esri/core/workers/chunks/c32a4fbdc87225f84019.js +0 -1
  624. package/assets/esri/core/workers/chunks/c67fea81f69a60c0eaef.js +0 -1
  625. package/assets/esri/core/workers/chunks/cb68db7169b9dfd1c3ff.js +0 -1
  626. package/assets/esri/core/workers/chunks/cc96608b2802fbfe7a08.js +0 -1
  627. package/assets/esri/core/workers/chunks/cd02fe27eb07681cb366.js +0 -1
  628. package/assets/esri/core/workers/chunks/d336afd5890dcdbf5341.js +0 -1
  629. package/assets/esri/core/workers/chunks/da69e3e5949fe1716e34.js +0 -1
  630. package/assets/esri/core/workers/chunks/daa9c450b2e2a5371249.js +0 -1
  631. package/assets/esri/core/workers/chunks/dd63ba77b7e4c3c9c594.js +0 -1
  632. package/assets/esri/core/workers/chunks/dfa57982d28c9aeb97b9.js +0 -1
  633. package/assets/esri/core/workers/chunks/e01812116b27874948f0.js +0 -1
  634. package/assets/esri/core/workers/chunks/e5c9d8482b913cf3580a.js +0 -1
  635. package/assets/esri/core/workers/chunks/eeadd92f0bede9fc8745.js +0 -1
  636. package/assets/esri/core/workers/chunks/fbb67cb6224aed2cce16.js +0 -1
  637. package/assets/esri/core/workers/chunks/feeaf61424336e9eac88.js +0 -1
  638. package/assets/esri/core/workers/chunks/ff02295329a8986d0568.js +0 -1
  639. package/tasks/operations/identify.js +0 -5
  640. package/views/2d/engine/webgl/mesh/templates/meshUtils.js +0 -5
  641. package/views/3d/layers/graphics/Graphics3DFeatureLikeLayerView.js +0 -5
  642. package/views/3d/layers/graphics/Graphics3DGraphicLikeLayerView.js +0 -5
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.23/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../chunks/tslib.es6.js";import r from"../../../core/Accessor.js";import t from"../../../core/Evented.js";import s from"../../../core/Handles.js";import i from"../../../core/Logger.js";import{someMap as a}from"../../../core/MapUtils.js";import{releaseMaybe as o,disposeMaybe as n,isSome as l,unwrapOr as h,isNone as d,unwrap as c}from"../../../core/maybe.js";import u from"../../../core/PooledArray.js";import{someSet as p}from"../../../core/SetUtils.js";import{init as g}from"../../../core/watchUtils.js";import{property as m}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/arrayUtils.js";import"../../../core/has.js";import"../../../core/accessorSupport/ensureType.js";import{subclass as y}from"../../../core/accessorSupport/decorators/subclass.js";import{q as _,f}from"../../../chunks/mat4.js";import{a as R}from"../../../chunks/vec2f64.js";import{f as T,c as b}from"../../../chunks/vec3f64.js";import{I as w}from"../../../chunks/mat4f64.js";import{ViewingMode as v}from"../../ViewingMode.js";import{DrapeTargetType as x,DrapeSourceType as O}from"../layers/interfaces.js";import E from"../support/debugFlags.js";import{OverlayIndex as L,RenderTargetType as j}from"./interfaces.js";import{Overlay as A}from"./Overlay.js";import{OverlayFramebufferObject as S}from"./OverlayFramebufferObject.js";import{OverlayRenderTarget as P}from"./OverlayRenderTarget.js";import{ShaderTechniqueRepository as C}from"../webgl-engine/core/shaderTechnique/ShaderTechniqueRepository.js";import{autoDispose as D,AutoDisposableMixin as G}from"../webgl-engine/lib/AutoDisposable.js";import{TransparencyPassType as I,UpdatePolicy as V}from"../webgl-engine/lib/basicInterfaces.js";import M from"../webgl-engine/lib/Camera.js";import{GLMaterialRepository as U}from"../webgl-engine/lib/GLMaterialRepository.js";import{createEmptyDepthTexture as F,createQuadVAO as q}from"../webgl-engine/lib/glUtil3D.js";import{GridLocalOriginFactory as H}from"../webgl-engine/lib/GridLocalOriginFactory.js";import{newIntersectorResult as W}from"../webgl-engine/lib/Intersector.js";import{StoreResults as N,IntersectorType as B}from"../webgl-engine/lib/IntersectorInterfaces.js";import{RenderOccludedFlag as k}from"../webgl-engine/lib/Material.js";import{ModelDirty as z}from"../webgl-engine/lib/ModelDirtyTypes.js";import{OverlayRenderContext as Y}from"../webgl-engine/lib/RenderContext.js";import{RenderPass as X}from"../webgl-engine/lib/RenderPass.js";import{RenderSlot as Q}from"../webgl-engine/lib/RenderSlot.js";import{SortedRenderGeometryRenderer as J}from"../webgl-engine/lib/SortedRenderGeometryRenderer.js";import{TextureTechniqueConfiguration as K,TextureTechnique as Z}from"../webgl-engine/lib/TextureTechnique.js";import{AmbientLight as $}from"../webgl-engine/lighting/Lightsources.js";import{SceneLighting as ee}from"../webgl-engine/lighting/SceneLighting.js";import{StippleTextureRepository as re}from"../webgl-engine/materials/StippleTextureRepository.js";import{C as te}from"../../../chunks/Compositing.glsl.js";import{AlphaMode as se}from"../webgl-engine/shaders/CompositingTechnique.js";import{ImmediateTask as ie,TaskPriority as ae,noBudget as oe}from"../../support/Scheduler.js";import{ClearBufferBit as ne,PrimitiveType as le,TextureType as he,PixelFormat as de,PixelType as ce,TextureSamplingMode as ue}from"../../webgl/enums.js";import{Texture as pe}from"../../webgl/Texture.js";import{vertexCount as ge}from"../../webgl/Util.js";const me=i.getLogger("esri.views.3d.webgl-engine.lib.OverlayRenderer");let ye=class extends(G(r)){constructor(e){super(e),this._overlays=null,this._overlayRenderTarget=null,this._hasHighlights=!1,this._rendersOccluded=!1,this._hasWater=!1,this._lighting=new ee,this._handles=new s,this._frameTask=ie,this._layerRenderers=new Map,this._sortedLayerRenderersDirty=!1,this._sortedLayerRenderers=new u,this._geometries=new Map,this.worldToPCSRatio=1,this.events=new t,this.longitudeCyclical=null}initialize(){const e=this.view._stage.renderView;this._rctx=e.renderingContext,this._renderContext=new Y(this._rctx);const r=e.waterTextureRepository;this._stippleTextureRepository=new re(e.renderingContext),this._shaderTechniqueRepository=new C({rctx:this._rctx,viewingMode:v.Local,stippleTextureRepository:this._stippleTextureRepository,waterTextureRepository:r}),this._handles.add([g(r,"loadingState",(()=>this.events.emit("content-changed"))),g(this,"spatialReference",(e=>this._localOrigins=new H(e)))]),this._materialRepository=new U(e.textureRepository,this._shaderTechniqueRepository,(e=>{(e.renderOccluded&Oe)>0!==this._rendersOccluded&&this._updateRendersOccluded(),this.events.emit("content-changed"),this.notifyChange("updating")}),(()=>this.events.emit("content-changed"))),this._lighting.groundLightingFactor=1,this._lighting.globalFactor=0,this._lighting.set([new $(T(1,1,1))]),this._bindParameters={slot:Q.DRAPED_MATERIAL,highlightDepthTexture:F(this._rctx),camera:be,inverseViewport:R(),origin:null,screenToWorldRatio:null,screenToPCSRatio:null,shadowMappingEnabled:!1,slicePlane:null,ssaoEnabled:!1,hasOccludees:!1,linearDepthTexture:null,lastFrameColorTexture:null,reprojectionMatrix:w,ssrEnabled:!1,lighting:this._lighting,transparencyPassType:I.NONE,terrainLinearDepthTexture:null,geometryLinearDepthTexture:null,multipassTerrainEnabled:!1,cullAboveGround:!1,multipassGeometryEnabled:!1,highlightColorTexture:null},this._frameTask=this.view.resourceController.scheduler.registerTask(ae.STAGE,this),this._handles.add(this._frameTask)}dispose(){this._handles.destroy(),this._layerRenderers.forEach((e=>e.dispose())),this._layerRenderers.clear(),this._debugTextureTechnique=o(this._debugTextureTechnique),this._debugPatternTexture=n(this._debugPatternTexture),this._bindParameters.highlightDepthTexture=n(this._bindParameters.highlightDepthTexture),this._shaderTechniqueRepository=n(this._shaderTechniqueRepository),this._temporaryFBO=n(this._temporaryFBO),this._quadVAO=n(this._quadVAO),this.disposeOverlays()}get updating(){return this._sortedLayerRenderersDirty||this._frameTask.updating||a(this._layerRenderers,(e=>e.updating))}get hasOverlays(){return l(this._overlays)&&l(this._overlayRenderTarget)}get gpuMemoryUsage(){return l(this._overlayRenderTarget)?this._overlayRenderTarget.gpuMemoryUsage:0}collectUnusedRenderTargetMemory(e){let r=!1;if(l(this._overlayRenderTarget))for(const t of this._overlayRenderTarget.renderTargets){const s=this.overlays[0].validTargets[t.type]||!this.overlays[1].validTargets[t.type];r=this._overlayRenderTarget.validateUsageForTarget(s,t,e)||r}return r}get overlays(){return h(this._overlays,[])}ensureDrapeTargets(e){l(this._overlays)&&this._overlays.forEach((r=>{r.hasTargetWithoutRasterImage=p(e,(e=>e.drapeTargetType===x.WithoutRasterImage))}))}ensureDrapeSources(e){l(this._overlays)&&this._overlays.forEach((r=>{r.hasDrapedFeatureSource=a(e,((e,r)=>r.drapeSourceType===O.Features)),r.hasDrapedRasterSource=a(e,((e,r)=>r.drapeSourceType===O.RasterImage))}))}ensureOverlays(e,r){d(this._overlays)&&(this._overlayRenderTarget=new P(this._rctx),this._overlays=[new A(L.INNER,this._overlayRenderTarget),new A(L.OUTER,this._overlayRenderTarget)]),this.ensureDrapeTargets(e),this.ensureDrapeSources(r)}disposeOverlays(){this._overlays=null,this._overlayRenderTarget=n(this._overlayRenderTarget),this.events.emit("textures-disposed")}get running(){return this.updating}runTask(e,r=(()=>!0)){this._frameTask.processQueue(e),e.done||this._processLayers(e,r)}_processLayers(e,r){let t=!1;for(const[s,i]of this._layerRenderers){if(e.done)break;(s.destroyed||r(s))&&(i.commitChanges()&&(t=!0,e.madeProgress()),i.isEmpty&&(t=!0,this._sortedLayerRenderersDirty=!0,this._layerRenderers.delete(s),this._handles.remove(s)))}this._updateSortedLayerRenderers(),t&&(l(this._overlays)&&0===this._layerRenderers.size&&this.disposeOverlays(),this.notifyChange("updating"),this.events.emit("content-changed"),this._updateHasHighlights(),this._updateRendersOccluded(),this._updateHasWater())}processSyncLayers(){this._processLayers(oe,(e=>e.updatePolicy===V.SYNC))}addGeometries(e,r,t){for(const s of e)d(s.origin)&&(s.origin=this._localOrigins.getOrigin(s.boundingSphere)),this._geometries.set(s.id,s);this._ensureLayerRenderer(r).add(e),t===z.Geometry.UPDATE&&this._notifyGraphicGeometryChanged(e,r)}removeGeometries(e,r,t){for(const i of e)this._geometries.delete(c(i.id));const s=this._layerRenderers.get(r);s&&(s.remove(e),t===z.Geometry.UPDATE&&this._notifyGraphicGeometryChanged(e,r))}updateGeometries(e,r,t){const s=this._layerRenderers.get(r);if(s)switch(s.modify(e,t),t){case z.State.TRANSFORMATION:case z.State.VERTEXATTRS:return this._notifyGraphicGeometryChanged(e,r);case z.State.VISIBILITIES:return this._notifyGraphicVisibilityChanged(e,r)}else me.warn("Attempted to update geometry for nonexistent layer")}_notifyGraphicGeometryChanged(e,r){if(d(r.notifyGraphicGeometryChanged))return;let t;for(const s of e){const e=s.graphicUid;l(e)&&e!==t&&(r.notifyGraphicGeometryChanged(e),t=e)}}_notifyGraphicVisibilityChanged(e,r){if(d(r.notifyGraphicVisibilityChanged))return;let t;for(const s of e){const e=s.graphicUid;l(e)&&e!==t&&(r.notifyGraphicVisibilityChanged(e),t=e)}}updateHighlights(e,r){const t=this._layerRenderers.get(r);t?t.modify(e,z.State.HIGHLIGHTS):me.warn("Attempted to update highlights for nonexistent layer")}isEmpty(){return 0===this._geometries.size&&!E.OVERLAY_DRAW_DEBUG_TEXTURE}get hasHighlights(){return this._hasHighlights}get hasWater(){return this._hasWater}get rendersOccluded(){return this._rendersOccluded}updateAnimation(e){let r=!1;return this._layerRenderers.forEach((t=>r=t.updateAnimation(e)||r)),r}updateLayerOrder(){this._sortedLayerRenderersDirty=!0}drawTarget(e,r,t){const s=e.canvasGeometries;if(0===s.numViews)return!1;this._screenToWorldRatio=t*e.mapUnitsPerPixel;const i=r.renderPass;if(this.isEmpty()||i===X.MATERIAL_HIGHLIGHT&&!this.hasHighlights||i===X.MATERIAL_NORMAL&&!this.hasWater||!e.hasSomeSizedView())return!1;const a=r.fbo;if(!a.isValid())return!1;const o=2*e.resolution,n=e.resolution;a.resize(o,n);const h=this._rctx;be.pixelRatio=e.pixelRatio*t,this._renderContext.pass=i,this._bindParameters.screenToWorldRatio=this._screenToWorldRatio,this._bindParameters.screenToPCSRatio=this._screenToWorldRatio*this.worldToPCSRatio,this._bindParameters.slot=i===X.MATERIAL_NORMAL?Q.DRAPED_WATER:Q.DRAPED_MATERIAL,e.applyViewport(this._rctx),a.bind(h),e.index===L.INNER&&(h.setClearColor(0,0,0,0),h.clearSafe(ne.COLOR_BUFFER_BIT));const d=r.type===j.ColorNoRasterImage?_e.ExcludeRasterImage:r.type===j.Occluded?_e.OccludedOnly:_e.Normal;if(d===_e.OccludedOnly&&(this._renderContext.renderOccludedMask=Oe),E.OVERLAY_DRAW_DEBUG_TEXTURE&&d!==_e.OccludedOnly)for(let l=0;l<s.numViews;l++)this._setViewParameters(s.extents[l],e,be),this._drawDebugTexture(e.resolution,Re[e.index]);return this._layerRenderers.size>0&&this._sortedLayerRenderers.forAll((({layerView:r,renderer:t})=>{if(d===_e.ExcludeRasterImage&&l(r)&&r.drapeSourceType===O.RasterImage)return;const u=l(r)&&l(r.fullOpacity)&&r.fullOpacity<1&&i===X.MATERIAL;u&&(this.bindTemporaryFramebuffer(this._rctx,o,n),h.clearSafe(ne.COLOR_BUFFER_BIT));for(let i=0;i<s.numViews;i++)this._setViewParameters(s.extents[i],e,be),t.render(this._renderContext,this._bindParameters);u&&l(this._temporaryFBO)&&(a.bind(h),this.view._stage.renderView.compositingHelper.composite(this._temporaryFBO.getTexture(),se.PremultipliedAlpha,c(c(r).fullOpacity),te.OverlayWithTransparency,e.index))})),h.bindFramebuffer(null),a.generateMipMap(),this._renderContext.resetRenderOccludedMask(),!0}bindTemporaryFramebuffer(e,r,t){d(this._temporaryFBO)&&(this._temporaryFBO=new S(e,!1)),this._temporaryFBO.resize(r,t),this._temporaryFBO.bind(e)}async reloadShaders(){await this._shaderTechniqueRepository.reloadAll()}intersect(e,r,t,s){let i=0;this._geometries.forEach((a=>{if(s&&!s(a))return;this._intersectRenderGeometry(a,t,r,0,e,i);const o=this.longitudeCyclical;o&&(a.boundingSphere[0]-a.boundingSphere[3]<o.min&&this._intersectRenderGeometry(a,t,r,o.range,e,i),a.boundingSphere[0]+a.boundingSphere[3]>o.max&&this._intersectRenderGeometry(a,t,r,-o.range,e,i)),i++}))}_intersectRenderGeometry(e,r,t,s,i,a){if(!e.instanceParameters.visible)return;let o=0;l(e.transformation)&&(s+=e.transformation[12],o=e.transformation[13]),we[0]=t[0]-s,we[1]=t[1]-o,we[2]=1,ve[0]=t[0]-s,ve[1]=t[1]-o,ve[2]=0,e.screenToWorldRatio=this._screenToWorldRatio,e.material.intersect(e,null,e.getShaderTransformation(),i,we,ve,((t,s,o)=>{Te(r,o,e.material.renderPriority,a,i,e.layerUid,e.graphicUid)}),e.calculateShaderTransformation,r)}_ensureLayerRenderer(e){let r=this._layerRenderers.get(e);return r||(r=new J({rctx:this._rctx,materialRepository:this._materialRepository}),this._layerRenderers.set(e,r),this._sortedLayerRenderersDirty=!0,"fullOpacity"in e&&this._handles.add(e.watch("fullOpacity",(()=>this.events.emit("content-changed"))),e),this._handles.add(g(r,"updating",(()=>this.notifyChange("updating"))),e)),r}_updateSortedLayerRenderers(){if(!this._sortedLayerRenderersDirty)return;if(this._sortedLayerRenderersDirty=!1,this._sortedLayerRenderers.clear(),0===this._layerRenderers.size)return;const e=new Set(this._layerRenderers.values());this.view.allLayerViews.forEach((r=>{const t=r,s=this._layerRenderers.get(t);s&&(this._sortedLayerRenderers.push(new fe(t,s)),e.delete(s))})),e.forEach((e=>this._sortedLayerRenderers.push(new fe(null,e))))}_setViewParameters(e,r,t){t.viewport[0]=t.viewport[1]=0,t.viewport[2]=t.viewport[3]=r.resolution,_(t.projectionMatrix,0,e[2]-e[0],0,e[3]-e[1],t.near,t.far),f(t.viewMatrix,[-e[0],-e[1],0]),this._renderContext.camera=t,this._bindParameters.camera=t,this._bindParameters.inverseViewport[0]=1/t.fullViewport[2],this._bindParameters.inverseViewport[1]=1/t.fullViewport[3]}_updateHasWater(){const e=a(this._layerRenderers,(e=>e.hasWater));e!==this._hasWater&&(this._hasWater=e,this.events.emit("has-water",e))}_updateHasHighlights(){const e=a(this._layerRenderers,(e=>e.hasHighlights));e!==this._hasHighlights&&(this._hasHighlights=e,this.events.emit("has-highlights",e))}_updateRendersOccluded(){const e=a(this._layerRenderers,(e=>e.rendersOccluded));e!==this._rendersOccluded&&(this._rendersOccluded=e,this.events.emit("renders-occluded",e))}_drawDebugTexture(e,r){const t=this._rctx;this._ensureDebugPatternResources(e,e);const s=this._debugTextureTechnique.program;t.useProgram(s),this._debugTextureTechnique.bindPipelineState(t),s.setUniform4f("color",r[0],r[1],r[2],1),s.bindTexture(this._debugPatternTexture,"tex"),t.bindVAO(this._quadVAO),t.drawArrays(le.TRIANGLE_STRIP,0,ge(this._quadVAO,"geometry"))}_ensureDebugPatternResources(e,r){if(this._debugPatternTexture)return;const t=new Uint8Array(e*r*4);let s=0;for(let a=0;a<r;a++)for(let i=0;i<e;i++){const o=Math.floor(i/10),n=Math.floor(a/10);o<2||n<2||10*o>e-20||10*n>r-20?(t[s++]=255,t[s++]=255,t[s++]=255,t[s++]=255):(t[s++]=255,t[s++]=255,t[s++]=255,t[s++]=1&o&&1&n?1&i^1&a?0:255:1&o^1&n?0:128)}this._debugPatternTexture=new pe(this._rctx,{target:he.TEXTURE_2D,pixelFormat:de.RGBA,dataType:ce.UNSIGNED_BYTE,samplingMode:ue.NEAREST,width:e,height:r},t);const i=new K;i.hasAlpha=!0,this._debugTextureTechnique=this._shaderTechniqueRepository.acquire(Z,i),this._quadVAO=q(this._rctx)}get test(){return{layerRenderers:this._layerRenderers}}};var _e;e([m()],ye.prototype,"_frameTask",void 0),e([m()],ye.prototype,"_sortedLayerRenderersDirty",void 0),e([D()],ye.prototype,"_shaderTechniqueRepository",void 0),e([D()],ye.prototype,"_stippleTextureRepository",void 0),e([m({constructOnly:!0})],ye.prototype,"view",void 0),e([m()],ye.prototype,"worldToPCSRatio",void 0),e([m()],ye.prototype,"spatialReference",void 0),e([m({type:Boolean,readOnly:!0})],ye.prototype,"updating",null),ye=e([y("esri.views.3d.terrain.OverlayRenderer")],ye),function(e){e[e.Normal=0]="Normal",e[e.OccludedOnly=1]="OccludedOnly",e[e.ExcludeRasterImage=2]="ExcludeRasterImage"}(_e||(_e={}));class fe{constructor(e,r){this.layerView=e,this.renderer=r}}const Re=[[1,.5,.5],[.5,.5,1]];function Te(e,r,t,s,i,a,o){const n={layerUid:a,graphicUid:o,triangleNr:r},l=r=>{r.set(B.OVERLAY,n,e.dist,e.normal,e.transformation,t,s)};if((null==i.results.min.drapedLayerOrder||t>=i.results.min.drapedLayerOrder)&&(null==i.results.min.dist||i.results.ground.dist<=i.results.min.dist)&&l(i.results.min),i.options.store!==N.MIN&&(null==i.results.max.drapedLayerOrder||t<i.results.max.drapedLayerOrder)&&(null==i.results.max.dist||i.results.ground.dist>i.results.max.dist)&&l(i.results.max),i.options.store===N.ALL){const e=W(i.ray);l(e),i.results.all.push(e)}}const be=new M;be.near=1,be.far=1e4,be.relativeElevation=null;const we=b(),ve=b(),xe=-2,Oe=k.OccludeAndTransparent;export{xe as DRAPED_Z,_e as DrawPassOption,ye as OverlayRenderer,Oe as overlayRenderOccludedFlag};
5
+ import{_ as e}from"../../../chunks/tslib.es6.js";import r from"../../../core/Accessor.js";import t from"../../../core/Evented.js";import s from"../../../core/Handles.js";import i from"../../../core/Logger.js";import{someMap as a}from"../../../core/MapUtils.js";import{releaseMaybe as o,disposeMaybe as n,isSome as h,unwrapOr as l,isNone as d,unwrap as c}from"../../../core/maybe.js";import u from"../../../core/PooledArray.js";import{someSet as p}from"../../../core/SetUtils.js";import{init as g}from"../../../core/watchUtils.js";import{property as m}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/arrayUtils.js";import"../../../core/has.js";import"../../../core/accessorSupport/ensureType.js";import{subclass as y}from"../../../core/accessorSupport/decorators/subclass.js";import{q as _,f}from"../../../chunks/mat4.js";import{a as R}from"../../../chunks/vec2f64.js";import{f as T,c as b}from"../../../chunks/vec3f64.js";import{I as w}from"../../../chunks/mat4f64.js";import{ViewingMode as v}from"../../ViewingMode.js";import{DrapeTargetType as x,DrapeSourceType as O}from"../layers/interfaces.js";import E from"../support/debugFlags.js";import{OverlayIndex as L,RenderTargetType as j}from"./interfaces.js";import{Overlay as A}from"./Overlay.js";import{OverlayFramebufferObject as S}from"./OverlayFramebufferObject.js";import{OverlayRenderTarget as P}from"./OverlayRenderTarget.js";import{ShaderTechniqueRepository as C}from"../webgl-engine/core/shaderTechnique/ShaderTechniqueRepository.js";import{autoDispose as D,AutoDisposableMixin as G}from"../webgl-engine/lib/AutoDisposable.js";import{TransparencyPassType as I,UpdatePolicy as M}from"../webgl-engine/lib/basicInterfaces.js";import V from"../webgl-engine/lib/Camera.js";import{GLMaterialRepository as U}from"../webgl-engine/lib/GLMaterialRepository.js";import{createEmptyDepthTexture as F,createQuadVAO as q}from"../webgl-engine/lib/glUtil3D.js";import{GridLocalOriginFactory as H}from"../webgl-engine/lib/GridLocalOriginFactory.js";import{newIntersectorResult as W}from"../webgl-engine/lib/Intersector.js";import{StoreResults as N,IntersectorType as B}from"../webgl-engine/lib/IntersectorInterfaces.js";import{RenderOccludedFlag as k}from"../webgl-engine/lib/Material.js";import{ModelDirty as z}from"../webgl-engine/lib/ModelDirtyTypes.js";import{OverlayRenderContext as Y}from"../webgl-engine/lib/RenderContext.js";import{RenderPass as X}from"../webgl-engine/lib/RenderPass.js";import{RenderSlot as Q}from"../webgl-engine/lib/RenderSlot.js";import{SortedRenderGeometryRenderer as J}from"../webgl-engine/lib/SortedRenderGeometryRenderer.js";import{TextureTechniqueConfiguration as K,TextureTechnique as Z}from"../webgl-engine/lib/TextureTechnique.js";import{AmbientLight as $}from"../webgl-engine/lighting/Lightsources.js";import{SceneLighting as ee}from"../webgl-engine/lighting/SceneLighting.js";import{StippleTextureRepository as re}from"../webgl-engine/materials/StippleTextureRepository.js";import{C as te}from"../../../chunks/Compositing.glsl.js";import{AlphaMode as se}from"../webgl-engine/shaders/CompositingTechnique.js";import{ImmediateTask as ie,TaskPriority as ae,noBudget as oe}from"../../support/Scheduler.js";import{ClearBufferBit as ne,PrimitiveType as he,TextureType as le,PixelFormat as de,PixelType as ce,TextureSamplingMode as ue}from"../../webgl/enums.js";import{Texture as pe}from"../../webgl/Texture.js";import{vertexCount as ge}from"../../webgl/Util.js";const me=i.getLogger("esri.views.3d.webgl-engine.lib.OverlayRenderer");let ye=class extends(G(r)){constructor(e){super(e),this._overlays=null,this._overlayRenderTarget=null,this._hasHighlights=!1,this._rendersOccluded=!1,this._hasWater=!1,this._lighting=new ee,this._handles=new s,this._frameTask=ie,this._layerRenderers=new Map,this._sortedLayerRenderersDirty=!1,this._sortedLayerRenderers=new u,this._geometries=new Map,this.worldToPCSRatio=1,this.events=new t,this.longitudeCyclical=null}initialize(){const e=this.view._stage.renderView;this._rctx=e.renderingContext,this._renderContext=new Y(this._rctx);const r=e.waterTextureRepository;this._stippleTextureRepository=new re(e.renderingContext),this._shaderTechniqueRepository=new C({rctx:this._rctx,viewingMode:v.Local,stippleTextureRepository:this._stippleTextureRepository,waterTextureRepository:r}),this._handles.add([g(r,"loadingState",(()=>this.events.emit("content-changed"))),g(this,"spatialReference",(e=>this._localOrigins=new H(e)))]),this._materialRepository=new U(e.textureRepository,this._shaderTechniqueRepository,(e=>{(e.renderOccluded&Oe)>0!==this._rendersOccluded&&this._updateRendersOccluded(),this.events.emit("content-changed"),this.notifyChange("updating")}),(()=>this.events.emit("content-changed"))),this._lighting.groundLightingFactor=1,this._lighting.globalFactor=0,this._lighting.set([new $(T(1,1,1))]),this._bindParameters={slot:Q.DRAPED_MATERIAL,highlightDepthTexture:F(this._rctx),camera:be,inverseViewport:R(),origin:null,screenToWorldRatio:null,screenToPCSRatio:null,shadowMappingEnabled:!1,slicePlane:null,ssaoEnabled:!1,hasOccludees:!1,linearDepthTexture:null,lastFrameColorTexture:null,reprojectionMatrix:w,ssrEnabled:!1,lighting:this._lighting,transparencyPassType:I.NONE,terrainLinearDepthTexture:null,geometryLinearDepthTexture:null,multipassTerrainEnabled:!1,cullAboveGround:!1,multipassGeometryEnabled:!1,highlightColorTexture:null},this._frameTask=this.view.resourceController.scheduler.registerTask(ae.STAGE,this),this._handles.add(this._frameTask)}dispose(){this._handles.destroy(),this._layerRenderers.forEach((e=>e.dispose())),this._layerRenderers.clear(),this._debugTextureTechnique=o(this._debugTextureTechnique),this._debugPatternTexture=n(this._debugPatternTexture),this._bindParameters.highlightDepthTexture=n(this._bindParameters.highlightDepthTexture),this._shaderTechniqueRepository=n(this._shaderTechniqueRepository),this._temporaryFBO=n(this._temporaryFBO),this._quadVAO=n(this._quadVAO),this.disposeOverlays()}get updating(){return this._sortedLayerRenderersDirty||this._frameTask.updating||a(this._layerRenderers,(e=>e.updating))}get hasOverlays(){return h(this._overlays)&&h(this._overlayRenderTarget)}get gpuMemoryUsage(){return h(this._overlayRenderTarget)?this._overlayRenderTarget.gpuMemoryUsage:0}collectUnusedRenderTargetMemory(e){let r=!1;if(h(this._overlayRenderTarget))for(const t of this._overlayRenderTarget.renderTargets){const s=this.overlays[0].validTargets[t.type]||!this.overlays[1].validTargets[t.type];r=this._overlayRenderTarget.validateUsageForTarget(s,t,e)||r}return r}get overlays(){return l(this._overlays,[])}ensureDrapeTargets(e){h(this._overlays)&&this._overlays.forEach((r=>{r.hasTargetWithoutRasterImage=p(e,(e=>e.drapeTargetType===x.WithoutRasterImage))}))}ensureDrapeSources(e){h(this._overlays)&&this._overlays.forEach((r=>{r.hasDrapedFeatureSource=a(e,((e,r)=>r.drapeSourceType===O.Features)),r.hasDrapedRasterSource=a(e,((e,r)=>r.drapeSourceType===O.RasterImage))}))}ensureOverlays(e,r){d(this._overlays)&&(this._overlayRenderTarget=new P(this._rctx),this._overlays=[new A(L.INNER,this._overlayRenderTarget),new A(L.OUTER,this._overlayRenderTarget)]),this.ensureDrapeTargets(e),this.ensureDrapeSources(r)}disposeOverlays(){this._overlays=null,this._overlayRenderTarget=n(this._overlayRenderTarget),this.events.emit("textures-disposed")}get running(){return this.updating}runTask(e,r=(()=>!0)){this._frameTask.processQueue(e),e.done||this._processLayers(e,r)}_processLayers(e,r){let t=!1;for(const[s,i]of this._layerRenderers){if(e.done)break;(s.destroyed||r(s))&&(i.commitChanges()&&(t=!0,e.madeProgress()),i.isEmpty&&(t=!0,this._sortedLayerRenderersDirty=!0,this._layerRenderers.delete(s),this._handles.remove(s)))}this._updateSortedLayerRenderers(),t&&(h(this._overlays)&&0===this._layerRenderers.size&&this.disposeOverlays(),this.notifyChange("updating"),this.events.emit("content-changed"),this._updateHasHighlights(),this._updateRendersOccluded(),this._updateHasWater())}processSyncLayers(){this._processLayers(oe,(e=>e.updatePolicy===M.SYNC))}addGeometries(e,r,t){for(const s of e)d(s.origin)&&(s.origin=this._localOrigins.getOrigin(s.boundingSphere)),this._geometries.set(s.id,s);this._ensureLayerRenderer(r).add(e),t===z.Geometry.UPDATE&&this._notifyGraphicGeometryChanged(e,r)}removeGeometries(e,r,t){for(const i of e)this._geometries.delete(c(i.id));const s=this._layerRenderers.get(r);s&&(s.remove(e),t===z.Geometry.UPDATE&&this._notifyGraphicGeometryChanged(e,r))}updateGeometries(e,r,t){const s=this._layerRenderers.get(r);if(s)switch(s.modify(e,t),t){case z.State.TRANSFORMATION:case z.State.VERTEXATTRS:return this._notifyGraphicGeometryChanged(e,r);case z.State.VISIBILITIES:return this._notifyGraphicVisibilityChanged(e,r)}else me.warn("Attempted to update geometry for nonexistent layer")}_notifyGraphicGeometryChanged(e,r){if(d(r.notifyGraphicGeometryChanged))return;let t;for(const s of e){const e=s.graphicUid;h(e)&&e!==t&&(r.notifyGraphicGeometryChanged(e),t=e)}}_notifyGraphicVisibilityChanged(e,r){if(d(r.notifyGraphicVisibilityChanged))return;let t;for(const s of e){const e=s.graphicUid;h(e)&&e!==t&&(r.notifyGraphicVisibilityChanged(e),t=e)}}updateHighlights(e,r){const t=this._layerRenderers.get(r);t?t.modify(e,z.State.HIGHLIGHTS):me.warn("Attempted to update highlights for nonexistent layer")}isEmpty(){return 0===this._geometries.size&&!E.OVERLAY_DRAW_DEBUG_TEXTURE}get hasHighlights(){return this._hasHighlights}get hasWater(){return this._hasWater}get rendersOccluded(){return this._rendersOccluded}updateAnimation(e){let r=!1;return this._layerRenderers.forEach((t=>r=t.updateAnimation(e)||r)),r}updateLayerOrder(){this._sortedLayerRenderersDirty=!0}drawTarget(e,r,t){const s=e.canvasGeometries;if(0===s.numViews)return!1;this._screenToWorldRatio=t*e.mapUnitsPerPixel;const i=r.renderPass;if(this.isEmpty()||i===X.MATERIAL_HIGHLIGHT&&!this.hasHighlights||i===X.MATERIAL_NORMAL&&!this.hasWater||!e.hasSomeSizedView())return!1;const a=r.fbo;if(!a.isValid())return!1;const o=2*e.resolution,n=e.resolution;a.resize(o,n);const l=this._rctx;be.pixelRatio=e.pixelRatio*t,this._renderContext.pass=i,this._bindParameters.screenToWorldRatio=this._screenToWorldRatio,this._bindParameters.screenToPCSRatio=this._screenToWorldRatio*this.worldToPCSRatio,this._bindParameters.slot=i===X.MATERIAL_NORMAL?Q.DRAPED_WATER:Q.DRAPED_MATERIAL,e.applyViewport(this._rctx),a.bind(l),e.index===L.INNER&&(l.setClearColor(0,0,0,0),l.clearSafe(ne.COLOR_BUFFER_BIT));const d=r.type===j.ColorNoRasterImage?_e.ExcludeRasterImage:r.type===j.Occluded?_e.OccludedOnly:_e.Normal;if(d===_e.OccludedOnly&&(this._renderContext.renderOccludedMask=Oe),E.OVERLAY_DRAW_DEBUG_TEXTURE&&d!==_e.OccludedOnly)for(let h=0;h<s.numViews;h++)this._setViewParameters(s.extents[h],e,be),this._drawDebugTexture(e.resolution,Re[e.index]);return this._layerRenderers.size>0&&this._sortedLayerRenderers.forAll((({overlayLayer:r,renderer:t})=>{if(d===_e.ExcludeRasterImage&&r.drapeSourceType===O.RasterImage)return;const{fullOpacity:c}=r,u=h(c)&&c<1&&i===X.MATERIAL;u&&(this.bindTemporaryFramebuffer(this._rctx,o,n),l.clearSafe(ne.COLOR_BUFFER_BIT));for(let i=0;i<s.numViews;i++)this._setViewParameters(s.extents[i],e,be),t.render(this._renderContext,this._bindParameters);u&&h(this._temporaryFBO)&&(a.bind(l),this.view._stage.renderView.compositingHelper.composite(this._temporaryFBO.getTexture(),se.PremultipliedAlpha,c,te.OverlayWithTransparency,e.index))})),l.bindFramebuffer(null),a.generateMipMap(),this._renderContext.resetRenderOccludedMask(),!0}bindTemporaryFramebuffer(e,r,t){d(this._temporaryFBO)&&(this._temporaryFBO=new S(e,!1)),this._temporaryFBO.resize(r,t),this._temporaryFBO.bind(e)}async reloadShaders(){await this._shaderTechniqueRepository.reloadAll()}intersect(e,r,t,s){let i=0;this._geometries.forEach((a=>{if(s&&!s(a))return;this._intersectRenderGeometry(a,t,r,0,e,i);const o=this.longitudeCyclical;o&&(a.boundingSphere[0]-a.boundingSphere[3]<o.min&&this._intersectRenderGeometry(a,t,r,o.range,e,i),a.boundingSphere[0]+a.boundingSphere[3]>o.max&&this._intersectRenderGeometry(a,t,r,-o.range,e,i)),i++}))}_intersectRenderGeometry(e,r,t,s,i,a){if(!e.instanceParameters.visible)return;let o=0;h(e.transformation)&&(s+=e.transformation[12],o=e.transformation[13]),we[0]=t[0]-s,we[1]=t[1]-o,we[2]=1,ve[0]=t[0]-s,ve[1]=t[1]-o,ve[2]=0,e.screenToWorldRatio=this._screenToWorldRatio,e.material.intersect(e,null,e.getShaderTransformation(),i,we,ve,((t,s,o)=>{Te(r,o,e.material.renderPriority,a,i,e.layerUid,e.graphicUid)}),e.calculateShaderTransformation,r)}_ensureLayerRenderer(e){let r=this._layerRenderers.get(e);return r||(r=new J({rctx:this._rctx,materialRepository:this._materialRepository}),this._layerRenderers.set(e,r),this._sortedLayerRenderersDirty=!0,"fullOpacity"in e&&this._handles.add(e.watch("fullOpacity",(()=>this.events.emit("content-changed"))),e),this._handles.add(g(r,"updating",(()=>this.notifyChange("updating"))),e)),r}_updateSortedLayerRenderers(){if(!this._sortedLayerRenderersDirty)return;if(this._sortedLayerRenderersDirty=!1,this._sortedLayerRenderers.clear(),0===this._layerRenderers.size)return;const e=this.view.map.allLayers;this._layerRenderers.forEach(((r,t)=>{const s=e.indexOf(t.layer);this._sortedLayerRenderers.push(new fe(t,r,s<0?1/0:s))})),this._sortedLayerRenderers.sort(((e,r)=>e.index-r.index))}_setViewParameters(e,r,t){t.viewport[0]=t.viewport[1]=0,t.viewport[2]=t.viewport[3]=r.resolution,_(t.projectionMatrix,0,e[2]-e[0],0,e[3]-e[1],t.near,t.far),f(t.viewMatrix,[-e[0],-e[1],0]),this._renderContext.camera=t,this._bindParameters.camera=t,this._bindParameters.inverseViewport[0]=1/t.fullViewport[2],this._bindParameters.inverseViewport[1]=1/t.fullViewport[3]}_updateHasWater(){const e=a(this._layerRenderers,(e=>e.hasWater));e!==this._hasWater&&(this._hasWater=e,this.events.emit("has-water",e))}_updateHasHighlights(){const e=a(this._layerRenderers,(e=>e.hasHighlights));e!==this._hasHighlights&&(this._hasHighlights=e,this.events.emit("has-highlights",e))}_updateRendersOccluded(){const e=a(this._layerRenderers,(e=>e.rendersOccluded));e!==this._rendersOccluded&&(this._rendersOccluded=e,this.events.emit("renders-occluded",e))}_drawDebugTexture(e,r){const t=this._rctx;this._ensureDebugPatternResources(e,e);const s=this._debugTextureTechnique.program;t.useProgram(s),this._debugTextureTechnique.bindPipelineState(t),s.setUniform4f("color",r[0],r[1],r[2],1),s.bindTexture(this._debugPatternTexture,"tex"),t.bindVAO(this._quadVAO),t.drawArrays(he.TRIANGLE_STRIP,0,ge(this._quadVAO,"geometry"))}_ensureDebugPatternResources(e,r){if(this._debugPatternTexture)return;const t=new Uint8Array(e*r*4);let s=0;for(let a=0;a<r;a++)for(let i=0;i<e;i++){const o=Math.floor(i/10),n=Math.floor(a/10);o<2||n<2||10*o>e-20||10*n>r-20?(t[s++]=255,t[s++]=255,t[s++]=255,t[s++]=255):(t[s++]=255,t[s++]=255,t[s++]=255,t[s++]=1&o&&1&n?1&i^1&a?0:255:1&o^1&n?0:128)}this._debugPatternTexture=new pe(this._rctx,{target:le.TEXTURE_2D,pixelFormat:de.RGBA,dataType:ce.UNSIGNED_BYTE,samplingMode:ue.NEAREST,width:e,height:r},t);const i=new K;i.hasAlpha=!0,this._debugTextureTechnique=this._shaderTechniqueRepository.acquire(Z,i),this._quadVAO=q(this._rctx)}get test(){return{layerRenderers:this._layerRenderers}}};var _e;e([m()],ye.prototype,"_frameTask",void 0),e([m()],ye.prototype,"_sortedLayerRenderersDirty",void 0),e([D()],ye.prototype,"_shaderTechniqueRepository",void 0),e([D()],ye.prototype,"_stippleTextureRepository",void 0),e([m({constructOnly:!0})],ye.prototype,"view",void 0),e([m()],ye.prototype,"worldToPCSRatio",void 0),e([m()],ye.prototype,"spatialReference",void 0),e([m({type:Boolean,readOnly:!0})],ye.prototype,"updating",null),ye=e([y("esri.views.3d.terrain.OverlayRenderer")],ye),function(e){e[e.Normal=0]="Normal",e[e.OccludedOnly=1]="OccludedOnly",e[e.ExcludeRasterImage=2]="ExcludeRasterImage"}(_e||(_e={}));class fe{constructor(e,r,t){this.overlayLayer=e,this.renderer=r,this.index=t}}const Re=[[1,.5,.5],[.5,.5,1]];function Te(e,r,t,s,i,a,o){const n={layerUid:a,graphicUid:o,triangleNr:r},h=r=>{r.set(B.OVERLAY,n,e.dist,e.normal,e.transformation,t,s)};if((null==i.results.min.drapedLayerOrder||t>=i.results.min.drapedLayerOrder)&&(null==i.results.min.dist||i.results.ground.dist<=i.results.min.dist)&&h(i.results.min),i.options.store!==N.MIN&&(null==i.results.max.drapedLayerOrder||t<i.results.max.drapedLayerOrder)&&(null==i.results.max.dist||i.results.ground.dist>i.results.max.dist)&&h(i.results.max),i.options.store===N.ALL){const e=W(i.ray);h(e),i.results.all.push(e)}}const be=new V;be.near=1,be.far=1e4,be.relativeElevation=null;const we=b(),ve=b(),xe=-2,Oe=k.OccludeAndTransparent;export{xe as DRAPED_Z,_e as DrawPassOption,ye as OverlayRenderer,Oe as overlayRenderOccludedFlag};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.23/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../chunks/tslib.es6.js";import t from"../../../Color.js";import i from"../../../core/Accessor.js";import{difference as r}from"../../../core/arrayUtils.js";import s from"../../../core/CollectionFlattener.js";import a from"../../../core/Evented.js";import n from"../../../core/Handles.js";import l from"../../../core/Logger.js";import{clamp as o}from"../../../core/mathUtils.js";import{releaseMaybe as h,destroyMaybe as d,isNone as u,isSome as p}from"../../../core/maybe.js";import c from"../../../core/ObjectPool.js";import _ from"../../../core/PooledArray.js";import{isAbortError as m,isAborted as g,createAbortError as y}from"../../../core/promiseUtils.js";import{watch as f,sync as T}from"../../../core/reactiveUtils.js";import{init as v}from"../../../core/watchUtils.js";import{aliasOf as w}from"../../../core/accessorSupport/decorators/aliasOf.js";import"../../../core/has.js";import"../../../core/accessorSupport/ensureType.js";import{property as S}from"../../../core/accessorSupport/decorators/property.js";import{subclass as L}from"../../../core/accessorSupport/decorators/subclass.js";import{m as x}from"../../../chunks/mat4.js";import{c as E}from"../../../chunks/mat4f64.js";import{g as D}from"../../../chunks/vec3.js";import{c as P}from"../../../chunks/vec3f64.js";import{c as C}from"../../../chunks/vec4f64.js";import{projectVectorToVector as R,projectPointToVector as U}from"../../../geometry/projection.js";import{getReferenceEllipsoid as j}from"../../../geometry/projectionEllipsoid.js";import{create as M,equals as b,intersection as I,containsPoint as A,empty as V,expand as O,intersectsSphere as k}from"../../../geometry/support/aaBoundingRect.js";import{create as q,copy as B}from"../../../geometry/support/frustum.js";import{isRefreshableLayer as N}from"../../../layers/mixins/RefreshableLayer.js";import{ElevationQueryTileCache as F}from"../../../layers/support/ElevationQueryTileCache.js";import{isBaseLayer as H}from"../../../layers/support/layerUtils.js";import{acquireDecoder as G}from"../../../layers/support/LercDecoder.js";import{printAllocations as W}from"../../2d/engine/vectorTiles/VectorTile.js";import Q from"../layers/ElevationLayerView3D.js";import{directionToHeadingTilt as X,scaleToZoom as z}from"../support/cameraUtils.js";import Y from"../support/debugFlags.js";import{toBoundingRect as $}from"../support/extentUtils.js";import{ClientType as K}from"../support/index.js";import{updatingProgress as J}from"../support/updatingProperties.js";import{ElevationBounds as Z}from"./ElevationBounds.js";import{sampleElevation as ee,ElevationData as te}from"./ElevationData.js";import{create as ie}from"./ExtentHelper.js";import{LODSnapping as re,TextureUpdate as se}from"./interfaces.js";import{LayerClass as ae,LayerClasses as ne}from"./LayerClass.js";import{OverlayManager as le}from"./OverlayManager.js";import{PlanarPatch as oe}from"./PlanarPatch.js";import{RenderOrder as he}from"./RenderOrder.js";import{SphericalPatch as de}from"./SphericalPatch.js";import{DEFAULT_TILE_BACKGROUND as ue,MAX_ROOT_TILES as pe,TOO_MANY_ROOT_TILES_AFTER_CHANGE_ERROR as ce,TOO_MANY_ROOT_TILES_FOR_LAYER_ERROR as _e,MAX_MEMORY_LOD_BIAS as me,ELEVATION_NODATA_VALUE as ge}from"./TerrainConst.js";import ye from"./TerrainRenderer.js";import fe from"./TerrainSurfacePerformanceInfo.js";import{weakAssert as Te,computeSkirtScale as ve,isSurfaceLayerView as we,isElevationLayerView as Se,isVectorTileLayerView as Le,useFetchTileForLayer as xe,isImageryTileLayerView as Ee,isTileLayerView as De,releaseTileData as Pe}from"./terrainUtils.js";import{SplitLimits as Ce,Tile as Re}from"./Tile.js";import{printAllocations as Ue}from"./TilePerLayerInfo.js";import{TileUpdate as je}from"./TileUpdate.js";import{IteratorPreorder as Me,IteratorPostorder as be,hasLoadableSiblings as Ie,sortTilesByPOI as Ae,sortTiles as Ve}from"./tileUtils.js";import{TilingSchemeLogic as Oe}from"./TilingSchemeLogic.js";import{UpsampleInfo as ke}from"./UpsampleInfo.js";import{RenderRequestType as qe}from"../webgl-engine/lib/basicInterfaces.js";import{ImmediateTask as Be,TaskPriority as Ne,noBudget as Fe}from"../../support/Scheduler.js";import{WatchUpdatingTracking as He}from"../../support/WatchUpdatingTracking.js";const Ge=l.getLogger("esri.views.3d.terrain.TerrainSurface"),We=.25;let Qe=class extends(a.EventedMixin(i)){constructor(e){super(e),this._elevationBounds=new Z,this._iteratorPool=new c(Me,(e=>e.remove=()=>this._iteratorPool.release(e))),this._postorderIterator=new be,this._hasPendingUpdates=!1,this._pendingUpdates=0,this._asyncWorkItems=0,this._allTilesDirty=!0,this._allTilesSorted=!0,this._visible=!1,this._usedMemory=Ke,this._performanceInfo=new fe,this._viewChanged=!1,this._inFrameTask=!1,this._viewChangeUpdateDirty=!1,this._eyePosRenderSR=P(),this._eyePosSurfaceSR=P(),this._splitLimits=new Ce,this._snapLevel=1/0,this._frustum=q(),this._viewProjectionMatrix=E(),this._layerViews=[new Array,new Array],this._layerIndexByUid=[new Map,new Map],this._basemapLayerViewHandles=new Map,this._handles=new n,this._watchUpdatingTracking=new He,this._frameTask=Be,this._allTiles=new _,this._upsampleInfoPool=new c(ke),this._rootTilesExtent=M(),this._maxNumUpdating=1,this.maxTextureScale=1.2,this.backgroundImage=ue,this.backgroundColor=null,this._layerViewsDirty=!1}initialize(){this._lercDecoder=G(this.view.resourceController),this._tilePool=this.view.state.isLocal?new c(oe):new c(de);const e=this.view.resourceController.memoryController;this._upsampleMapCache=e.newCache("esri.views.3d.terrain.upsample",(e=>e.unloadMapData())),this._elevationQueryCache=new F(e.newCache("elevation-query")),this._set("overlayManager",new le({surface:this})),this._handles.add([this.watch("overlayManager.hasHighlights",(e=>this._renderer.setNeedsHighlight(e))),this.watch("overlayManager.rendersOccluded",(e=>this._renderer.setRenderOccludedOverlay(e)))],"overlayManager"),this._renderer=new ye({overlayRenderer:this.overlayManager.renderer,ellipsoidRadius:j(this.view.spatialReference).radius,stage:this.view._stage,allTiles:this._allTiles}),this._handles.add([v(this,"baseOpacity",(e=>{this._handleLayerViewChanges(),this._updateBaseOpacity(e)}),!0),v(this,"_background",(()=>{this._handleLayerViewChanges(),this._renderer.setTileBackground(this._background)}),!0),this.view.watch("pointsOfInterest",(e=>{this._renderer.pointsOfInterest=e,this._watchUpdatingTracking.removeAll(),e&&this._watchUpdatingTracking.add(e.focus,"renderLocation",(()=>()=>this._allTilesSorted=!1))})),v(Y,"TERRAIN_TILE_TREE_SHOW_TILES",(e=>{e&&!this._treeDebugger?import("../layers/support/TerrainTileTree3DDebugger.js").then((({TerrainTileTree3DDebugger:e})=>{!this._treeDebugger&&Y.TERRAIN_TILE_TREE_SHOW_TILES&&(this._treeDebugger=new e({view:this.view}))})):e||(this._treeDebugger=d(this._treeDebugger))}))]),this._extentHelper=ie(this.viewingMode,{layers:this.view.map.allLayers,layerViews:this.view.allLayerViews,viewSpatialReference:this.view.spatialReference});const t=this.view.defaultsFromMap?new s({getCollections:()=>{var e,t,i;return null==(e=this.view)||null==(t=e.defaultsFromMap)||null==(i=t.mapCollections)?void 0:i.map((({layers:e})=>e))},getChildrenFunction:e=>e&&"layers"in e?e.layers:null}):this.view.map.allLayers,i=new Oe({layers:t,extentHelper:this._extentHelper,viewingMode:this.viewingMode,viewSpatialReference:this.view.spatialReference});this._set("tilingSchemeLogic",i),this._updateTilingScheme(),this._elevationDataRequester=this.view.resourceController.createStreamDataRequester(K.ELEVATION),this._mapDataRequester=this.view.resourceController.createStreamDataRequester(K.BASEMAP);const r=this.view.resourceController.scheduler;this._frameTask=r.registerTask(Ne.TERRAIN_SURFACE,this),this.view.resourceController.memoryController.events.on("quality-changed",(()=>this._viewChangeUpdate())),this._handles.add([v(this._extentHelper,"stencilEnabledExtents",(e=>this._renderer.setStencilEnabledLayerExtents(e))),this.tilingSchemeLogic.watch("tilingScheme",(()=>this._updateTilingScheme()),!0),v(this,"extent",(()=>this._updateRootTiles())),this.view.on("resize",(()=>this._viewChangeUpdate())),this.view.watch("state.camera",(()=>this._viewChangeUpdate()),!0),this.view.watch("state.contentCamera",(()=>this.view.state.fixedContentCamera&&this._viewChangeUpdate()),!0),this.view.watch("qualitySettings.tiledSurface.lodBias",(()=>this._viewChangeUpdate())),v(this.view,"qualitySettings.tiledSurface.textureFadeDuration",(e=>this._renderer.textureFadingEnabled=e>0)),this.view.watch("lodSnapping",(()=>this._viewChangeUpdate())),f((()=>this._userClippingExtent),(()=>this._updateClippingExtent()),T)]),this._handles.add(this.view.allLayerViews.on("after-changes",(()=>this._layerViewsDirty=!0))),this._layerViewsDirty=!0,this._handleLayerViewChanges()}destroy(){this._frameTask.remove(),this._handles.destroy(),this._watchUpdatingTracking.destroy(),this._lercDecoder=h(this._lercDecoder),this._removeAllTiles(),this._upsampleMapCache=d(this._upsampleMapCache),this._elevationQueryCache=d(this._elevationQueryCache),this._set("tilingSchemeLogic",d(this.tilingSchemeLogic)),this._extentHelper=d(this._extentHelper),this._basemapLayerViewHandles.forEach(((e,t)=>this._unregisterTiledLayerView(t))),this._elevationDataRequester=null,this._mapDataRequester=null,this._set("overlayManager",d(this.overlayManager)),this._tilePool=d(this._tilePool),Re.prune(),this._treeDebugger&&(this._treeDebugger.destroy(),this._treeDebugger=null),this._renderer=d(this._renderer),this._iteratorPool=d(this._iteratorPool),this._set("view",null),this._upsampleInfoPool=d(this._upsampleInfoPool),W(),Ue()}get renderer(){return this._renderer}get frustum(){return this._frustum}get snapLevel(){var e,t;const i=null==(e=this.view.pointsOfInterest)||null==(t=e.contentCameraOnSurface)?void 0:t.scale;if(i){const e=this.view.state.contentCamera;let t=X(this.view,e.eye,e.viewForward,e.up).tilt;t>90&&(t=180-t);const r=2*(t/90)**2,s=z(this.view,i)-r;Math.abs(this._snapLevel-s)>We&&(Math.round(s)!==Math.round(this._snapLevel)&&(this._viewChanged=!0),this._snapLevel=s)}return Math.round(this._snapLevel)}get lodSnapping(){return this.view.qualitySettings.tiledSurface.reduceTileLevelDifferences?re.ON:re.OFF}get upsampleInfoPool(){return this._upsampleInfoPool}get upsampleMapCache(){return this._upsampleMapCache}get elevationQueryCache(){return this._elevationQueryCache}get mapTileRequester(){return this._mapDataRequester}get _userClippingExtent(){const{spatialReference:e}=this,{clippingArea:t}=this.view;if(u(t)||u(e))return null;const i=M(),r=$(t,i,e)?i:null,s=this._get("extent");return b(r,s)?s:r}get extent(){const e=I(this.groundExtent,this._userClippingExtent,M()),t=this._get("extent");return b(e,t)?t:e}get groundExtent(){return p(this._tilingSchemeExtent)?this._tilingSchemeExtent:this._rootTilesExtent}get _tilingSchemeExtent(){var e;return null==(e=this.tilingSchemeLogic)?void 0:e.extent}get updating(){return this._hasPendingUpdates||(this._maxNumUpdating=1),!!((this._watchUpdatingTracking.updating||this._hasPendingUpdates||this._viewChanged||this._allTilesDirty||this._asyncWorkItems>0||!this._allTilesSorted||this._renderer.updating||this._layerViewsDirty)&&this.ready&&!this.suspended||this.overlayManager.updating||this._frameTask.updating)}get updatingProgressValue(){return this._maxNumUpdating=Math.max(this._pendingUpdates,this._maxNumUpdating),1-this._pendingUpdates/this._maxNumUpdating}get viewingMode(){return this.view.state.viewingMode}get ready(){return p(this.rootTiles)}set renderOrder(e){this._renderer.renderOrder=e,this._set("renderOrder",e)}set skirtScale(e){this._renderer.skirtScale=e}get skirtScale(){return this._renderer.skirtScale}get spatialReference(){var e,t;return null!=(e=null==(t=this.tilingScheme)?void 0:t.spatialReference)?e:null}get _background(){return null!=this.backgroundColor?this.backgroundColor:this.backgroundImage}set slicePlaneEnabled(e){var t,i;this._renderer.slicePlaneEnabled=e,this._set("slicePlaneEnabled",e),null==(t=this.view)||null==(i=t._stage)||i.renderView.setRenderParameters({opaqueTerrain:this.opaque})}set velvetOverground(e){e!==this.velvetOverground&&(this._renderer.velvetOverground=e),this._set("velvetOverground",e)}set visible(e){e!==this._visible&&(this._visible=e,this._renderer.setVisibility(e),this.suspended=!e)}get opaque(){return this._renderer.opaque}set suspended(e){this._set("suspended",e),this._viewChangeUpdate()}intersect(e,t,i,r){this._renderer.intersect(e,t,i,r)}getElevation(e,t,i,r){const s=this.getTileWithElevation(e,t,i,r,Je);return u(s)?null:ee(Je[0],Je[1],s.renderData.geometryState.samplerData)}getTileWithElevation(e,t,i,r,s=Je){var a;const n=this.rootTiles;if(u(n)||!n.length)return null;if(0===n[0].layerInfo[ae.ELEVATION].length)return null;if(s[0]=e,s[1]=t,s[2]=i,!R(s,r,s,null==(a=this.tilingScheme)?void 0:a.spatialReference))return Ge.error("TerrainSurface.getElevation(): could not project given point to tiling scheme coordinate system"),null;for(let l of n){if(!l.containsPoint(s))continue;for(;l&&!l.rendered&&!l.isLeaf;){let e=0;s[0]>.5*(l.extent[0]+l.extent[2])&&(e+=1),s[1]<.5*(l.extent[1]+l.extent[3])&&(e+=2),l=l.children[e]}const e=l.renderData;return(e?e.geometryState.samplerData:null)?l:null}return null}get elevationBounds(){return this._elevationBounds}getScale(e){if(this.tilingScheme){if(!U(e,Je,this.spatialReference))return Ge.error("TerrainSurface.getScale(): could not project given point to tiling scheme coordinate system"),null;const t=this.rootTiles;if(p(t))for(let e of t)if(e.containsPoint(Je)){for(;null!=e.children[0];){let t=0;Je[0]>e.children[0].extent[2]&&(t+=1),Je[1]<e.children[0].extent[1]&&(t+=2),e=e.children[t]}return this._getLodBiasCorrectedScale(e.level)}}return 1e100}getSphereScale(e,t){if(!this.tilingScheme)return null;if(!U(e,Je,this.spatialReference))return Ge.error("TerrainSurface.getSphereScale(): could not project given point to tiling scheme coordinate system"),null;Je[3]=t;let i=null;const r=e=>{if(e&&k(e.extent,Je))if(null!=e.children[0])for(const t of e.children)r(t);else{const t=this._getLodBiasCorrectedScale(e.level);i=null==i?t:Math.min(i,t)}},s=this.rootTiles;if(p(s))for(const a of s)r(a);return i}queryVisibleScaleRange(e,t,i,r){const s=t?this.tilingScheme.levelAtScale(t):0,a=i?this.tilingScheme.levelAtScale(i):1/0,n=this.lodBias;this._renderer.queryVisibleLevelRange(e,s+n,a+n,r)}_updateBaseOpacity(e){const t=this._renderer.opaque;this._renderer.opaque=e>=1,this._renderer.isTransparent=this._allTransparentSurfaceLayers();const i=t===this._renderer.opaque?se.UNFADED:se.IMMEDIATE;var r,s;i===se.IMMEDIATE&&(null==(r=this.view)||null==(s=r._stage)||s.renderView.setRenderParameters({opaqueTerrain:this.opaque}));this._updateTileTextures(i)}_updateTilingScheme(){const e=this.tilingSchemeLogic.tilingScheme;e!==this.tilingScheme&&(Te(!!e,"tiling scheme cannot be reset to undefined"),this.tilingScheme&&this._removeAllTiles(),this._set("tilingScheme",e),this._updateClippingExtent(),e&&(this._updateTiledLayers(),this._renderer.setTileSize(e.pixelSize),this.overlayManager.setSpatialReference(e.spatialReference),this._updateRootTiles()))}_acquireTile(e,t,i,r){const s=this._tilePool.acquire();return et[0]=e,et[1]=t,et[2]=i,s.init(et,r,this),s}_updateRootTiles(){const{extent:e,tilingScheme:t}=this;if(!t)return;const i=Ze;let s=t.rootTilesInExtent(e,i,5*pe);if(p(this.rootTiles)){if(s.length>pe)return void Ge.warn(ce);const e=this.rootTiles.map((e=>e.lij)),t=r(e,s,ze);if(t.removed.length>0||t.added.length>0){const e=this.rootTiles.filter((e=>!(t.removed.findIndex((t=>ze(t,e.lij)))>-1)||(this._purgeTile(e),!1)));t.added.forEach((t=>e.push(this._newRootTile(t)))),this._setRootTiles(e)}}else s.length>pe&&(Ge.warn(_e),s=t.rootTilesInExtent(e,i,pe)),this._setRootTiles(s.map((e=>this._newRootTile(e))));b(i,this._rootTilesExtent)||(this._rootTilesExtent=M(i)),this.visible=!0,this._viewChangeUpdate(),this.overlayManager.setPlacementDirty(),this.notifyChange("ready")}_newRootTile(e){const t=this._acquireTile(0,e[1],e[2],null);return t.shouldSplit(this._splitLimits,this._eyePosRenderSR,this.lodSnapping)===je.SPLIT&&t.setPendingUpdate(je.SPLIT),this._loadTile(t),t}_setRootTiles(e){if(this._set("rootTiles",e),this._allTiles.clear(),p(e)){const t=this._iteratorPool.acquire();for(t.reset(e);!t.done;)this._allTiles.push(t.next());t.remove()}this._renderer.setRootTiles(this.rootTiles),this._updateTilesVisibility(e)}_runViewChangeUpdateIfDirty(){this._viewChangeUpdateDirty&&(this._viewChangeUpdateDirty=!1,this._viewChangeUpdate())}_viewChangeUpdate(){this.view&&!this.suspended&&this.tilingScheme&&this._visible&&(this._inFrameTask?this._viewChangeUpdateDirty=!0:(this._viewChangeUpdateDirty=!1,this._updateViewDependentParameters(),this._updateSkirts(),this._updateTilesVisibility(this.rootTiles)))}_updateClippingStatus(e){e.updateClippingStatus(this.extent)&&e.resetPendingUpdate(je.GEOMETRY)&&this._updateTileGeometry(e)}_updateTilesVisibility(e){if(u(e))return;const t=Ie(e);let i=t?this._elevationBounds.min:1/0,r=t?this._elevationBounds.max:-1/0;const s=this.view.state.fixedContentCamera,a=this.extent,n=this._viewProjectionMatrix;this.setTileTreeDirty();const l=this._iteratorPool.acquire();for(l.reset(e);!l.done;){const e=l.next();e.updateClippingStatus(a)&&e.resetPendingUpdate(je.GEOMETRY)&&this._updateTileGeometry(e),e.setPendingUpdate(je.RENDERDATA);const t=e.updateVisibilityNow();s||t?(e.updateScreenDepth(n),e.renderData&&(i=Math.min(e.elevationBounds[0],i),r=Math.max(e.elevationBounds[1],r))):l.skipSubtree()}l.remove(),this._viewChanged=!0,this._allTilesDirty=!0,isFinite(i)&&isFinite(r)&&(this._elevationBounds.min===i&&this._elevationBounds.max===r||(this._elevationBounds.min=i,this._elevationBounds.max=r,this.emit("elevation-bounds-change",null)))}_updateViewDependentParameters(){const e=this.view.state.camera,t=this.view.state.contentCamera,i=Math.tan(.5*t.fovX),r=Math.tan(.5*t.fovY),s=this.tilingScheme.pixelSize,a=2**-this.lodBias*e.pixelRatio;this._splitLimits.aboveGround=e.aboveGround,this._splitLimits.fovX=i,this._splitLimits.fovY=r,this._splitLimits.relativeWidthLimit=s/e.width*this.maxTextureScale*a,this._splitLimits.relativeHeightLimit=s/e.height*this.maxTextureScale*a,this._splitLimits.maxLod=this.tilingScheme.getMaxLod(),this._splitLimits.angledSplitBias=this.view.qualitySettings.tiledSurface.angledSplitBias,this.view.state.fixedContentCamera?(u(this._splitLimits.frustum)&&(this._splitLimits.frustum=q()),B(t.frustum,this._splitLimits.frustum)):this._splitLimits.frustum=null,B(e.frustum,this._frustum),x(this._viewProjectionMatrix,t.projectionMatrix,t.viewMatrix),D(this._eyePosRenderSR,t.eye),R(e.eye,this.view.renderSpatialReference,this._eyePosSurfaceSR,this.spatialReference)}_updateSkirts(){const e=this.view.state.camera,t=this.view.state.constraints.collision.enabled?0:1.11*e.near;this.skirtScale=ve(this,this._eyePosSurfaceSR,t)}_updateRenderData(e){e.rendered&&!e.shouldLoad&&(Ye(e)?this._loadChildren(e):$e(e)&&this._loadParent(e))}_updateTileGeometry(e){e.updateVisibility(),this._renderer.updateTileGeometry(e),this._elevationUpdate(e),this._usedMemory=Ke}_updateTileTexture(e,t){const i=e.resetPendingUpdate(je.TEXTURE_FADING)?je.TEXTURE_FADING:!!e.resetPendingUpdate(je.TEXTURE_NOFADING)&&je.TEXTURE_NOFADING;i&&(this._renderer.updateTileTexture(e,i),this._usedMemory=Ke,t.madeProgress())}_elevationUpdate(e){it.spatialReference=this.spatialReference,it.tile=e,it.extent=e.extent,this.emit("elevation-change",it),A(e.extent,this._eyePosSurfaceSR)&&this._updateSkirts()}get running(){return this.updating&&this.ready&&!this.suspended}runTask(e){this._handleLayerViewChanges(e),this._frameTask.processQueue(e),this._inFrameTask=!0,this._pendingUpdates=0,this._hasPendingUpdates=!1,this._updateTileStatus(e),this._sortTiles(e);const t=!this.view.state.fixedContentCamera;this._mergeAndSplit(e,t),e.run((()=>this._updateElevation(e))),e.run((()=>this._updateTextures(e))),t||this._mergeAndSplit(e,!0),this._inFrameTask=!1,this._runViewChangeUpdateIfDirty(),e.done&&this.requestUpdate(),this.notifyChange("updatingProgressValue")}_updateTileStatus(e){if(!this._viewChanged||!this.rootTiles||e.done)return;this._viewChanged=!1;const t=this._iteratorPool.acquire();for(t.reset(this.rootTiles);!t.done;){const e=t.next();if(e.loadable){const i=e.shouldSplit(this._splitLimits,this._eyePosRenderSR,this.lodSnapping);if(i===je.SPLIT){e.resetPendingUpdate(je.MERGE),e.isLeaf&&(e.setPendingUpdate(je.SPLIT),t.skipSubtree());continue}e.resetPendingUpdate(je.SPLIT)&&e.updateAgentSuspension(),i===je.VSPLITMERGE&&e.updateAgents(ae.ELEVATION)}if(t.skipSubtree(),!e.isLeaf){e.setPendingUpdate(je.MERGE),e.resetPendingUpdate(je.SPLIT);const t=this._iteratorPool.acquire();t.resetOne(e);for(let e=t.next();!t.done;e=t.next())this._updateClippingStatus(e),e.updateVisibility(),e.loadable&&e.updateScreenDepth(this._viewProjectionMatrix);t.remove()}}t.remove(),this.requestUpdate(),e.madeProgress()}_sortTiles(e){e.done||this._allTilesSorted||(Ae(this._allTiles,this.view.pointsOfInterest.focus.renderLocation),this._allTilesSorted=!0,this._treeDebugger&&this._treeDebugger.update(),e.madeProgress())}_mergeAndSplit(e,t){if(this.suspended||e.done||!this._allTilesDirty)return;this._allTilesDirty=!1,this.requestUpdate();let i=0;for(;!e.done;){let r=!1;i=0;const s=!this._allTiles.some((s=>{if(i+=s.usedMemory,s.resetPendingUpdate(je.MERGE)){if(!t)return s.setPendingUpdate(je.MERGE),e.done;this._mergeTile(s),r=!0,e.madeProgress()}else s.resetPendingUpdate(je.SPLIT)&&(this._splitTile(s),r=!0,e.madeProgress());return!e.done&&s.resetPendingUpdate(je.RENDERDATA)&&(this._updateRenderData(s),e.madeProgress()),e.done}));if(r&&(this._allTilesSorted=!1,this._allTilesDirty=!0),s){if(this._usedMemory=i,!r)break;this._updateTilesVisibility(this.rootTiles)}else this._allTilesDirty=!0}0===i&&(this._allTilesDirty=!0),this._sortTiles(e)}_updateElevation(e){return this._allTiles.some((t=>(t.resetPendingUpdate(je.GEOMETRY)&&(this._updateTileGeometry(t),this._updateTileTexture(t,e),e.madeProgress()),e.done))),e.hasProgressed}_updateTextures(e){return this._allTiles.some((t=>(this._updateTileTexture(t,e),e.done))),e.hasProgressed}_updateClippingExtent(){this.spatialReference&&(this.updateTileOverlayParams(qe.UPDATE),this.overlayManager.setPlacementDirty(),this._updateRootTiles())}get lodBias(){const e=this.view.resourceController.memoryController.memoryFactor;return this.view.qualitySettings.tiledSurface.lodBias-(1-e)*me}_getLodBiasCorrectedScale(e){const t=this.tilingScheme.levels,i=o(e-this.lodBias,0,t.length-1),r=i-Math.floor(i);return t[Math.floor(i)].scale*(1-r)+t[Math.ceil(i)].scale*r}_removeAllTiles(){p(this.rootTiles)&&(this.rootTiles.forEach((e=>this._purgeTile(e))),this._setRootTiles(null),this.notifyChange("ready")),this._allTiles.clear(),this.visible=!1}_purgeChildTiles(e){if(e.isLeaf)return!1;let t=this._purgeTile(e.children[0]);return t=this._purgeTile(e.children[1])||t,t=this._purgeTile(e.children[2])||t,t=this._purgeTile(e.children[3])||t,e.unsetChildren(),t}_purgeTile(e){const t=this._purgeChildTiles(e)||e.rendered;return this._allTiles.removeUnordered(e),e.unload(this._renderer),this._tilePool.release(e),t}_splitTile(e){Te(e.isLeaf,"tile that is already split should not be split again!");const t=e.level+1,i=2*e.lij[1],r=2*e.lij[2];e.setChildren(this._createTile(t,i,r,e),this._createTile(t,i,r+1,e),this._createTile(t,i+1,r,e),this._createTile(t,i+1,r+1,e)),e.setPendingUpdate(je.RENDERDATA),e.updateAgentSuspension(),this._allTiles.pushArray(e.children),this._allTilesDirty=!0,this._emitTileScaleChange(e,t),++this._performanceInfo.numSplit}_emitTileScaleChange(e,t=e.level){rt.spatialReference=this.spatialReference,rt.extent=e.extent,rt.scale=this._getLodBiasCorrectedScale(t),this.emit("scale-change",rt)}_createTile(e,t,i,r){Te(!!r,"_createTile sanity check");const s=this._acquireTile(e,t,i,r);return s.updateClippingStatus(this.extent),s.loadable&&(s.updateScreenDepth(this._viewProjectionMatrix),s.shouldSplit(this._splitLimits,this._eyePosRenderSR,this.lodSnapping)===je.SPLIT&&s.setPendingUpdate(je.SPLIT)),s}_mergeTile(e){Te(!e.hasPendingUpdate(je.SPLIT),"_mergeTile sanity check"),this._purgeChildTiles(e)&&(Te(!e.renderData,"_mergeTile sanity check"),this._loadTile(e)),this._allTilesDirty=!0,++this._performanceInfo.numMerged,this._emitTileScaleChange(e)}_loadChildren(e){Te(e.rendered,"parent should be rendered"),e.unload(this._renderer),this._loadTile(e.children[0]),this._loadTile(e.children[1]),this._loadTile(e.children[2]),this._loadTile(e.children[3])}_loadParent(e){const t=e.parent;this._unloadChildren(t),this._loadTile(t)}_unloadChildren(e){e.isLeaf||(this._unloadChildren(e.children[0]),e.children[0].unload(this._renderer),this._unloadChildren(e.children[1]),e.children[1].unload(this._renderer),this._unloadChildren(e.children[2]),e.children[2].unload(this._renderer),this._unloadChildren(e.children[3]),e.children[3].unload(this._renderer))}_loadTile(e){e.load(this._renderer),e.setPendingUpdate(je.RENDERDATA),this.requestUpdate(),this._allTilesDirty=!0,this.overlayManager&&this.overlayManager.hasOverlays&&this.overlayManager.setTileParameters(e),this._elevationUpdate(e)}_elevationDataArrived(e,t,i){const r=new te(e.lij,e.extent,i);e.dataArrived(t,ae.ELEVATION,r);const s=[e],a=e.level,n=this._iteratorPool.acquire();for(n.reset(s);!n.done;){const e=n.next();e.findElevationBoundsForLayer(t,a),e.computeElevationBounds()}n.remove(),this._updateTilesVisibility(s)}_handleLayerViewChanges(e=Fe){if(!this._layerViewsDirty)return;this._layerViewsDirty=!1;let t=!1;const i=new Set;let r=-1;for(const s of this.view.allLayerViews.items)if(i.add(s.uid),we(s))if(this._basemapLayerViewHandles.has(s.uid)){const e=this._layerClassFromLayerView(s),i=this._layerIndexByUid[e].get(s.uid);i<r&&(t=!0),r=i}else this._registerTiledLayerView(s),s.layer.loaded&&(t=!0);this._basemapLayerViewHandles.forEach(((e,r)=>{i.has(r)||(this._unregisterTiledLayerView(r),t=!0)})),t&&this._updateTiledLayers(),this._renderer.isTransparent=this._allTransparentSurfaceLayers(),e.madeProgress()}_allTransparentSurfaceLayers(){let e=0===this.view.map.ground.opacity;for(const t of this.view.allLayerViews.items)if(we(t)&&!Se(t)&&!H(t.layer)&&0!==t.fullOpacity)return e=!1,e;return e}_layerClassFromLayerView(e){return Se(e)?ae.ELEVATION:ae.MAP}_registerTiledLayerView(e){const t=[],i=this._layerClassFromLayerView(e);t.push(e.watch("suspended",(()=>this._updateTiledLayers()))),t.push(e.watch("fullOpacity",(()=>this._updateTileTextures(se.UNFADED)))),t.push(e.layer.watch("effectiveScaleRange",(()=>this._restartAllAgents(i)))),e.on("data-changed",(()=>{const t=this._layerIndexByUid[i].get(e.uid);null!=t&&this._invalidateLayerData(t,i)})),this._basemapLayerViewHandles.set(e.uid,t)}_unregisterTiledLayerView(e){const t=this._basemapLayerViewHandles.get(e);if(t){for(let e=0;e<t.length;e++)t[e].remove();this._basemapLayerViewHandles.delete(e)}}_updateTiledLayers(){if(!this.tilingScheme||this.view.suspended)return;const e=this.view.allLayerViews,t=[[],[]];let i=null;const r=V();e.forEach((e=>{const s=e.layer;if(!s||e.suspended||!we(e))return;const a=e.fullExtent;if(!a)return void Ge.warn("Terrain: Map or elevation layer does not have fullExtent: "+s.id);if(!this.tilingScheme.compatibleWith(e.tileInfo))return void Ge.warn("Terrain: tiling scheme of layer "+s.id+" is incompatible with other tiled layers, will not be drawn");O(r,a,r);const n=this._layerClassFromLayerView(e);if(n===ae.MAP){const t=e.displayLevelRange;t.maxLevel!==1/0&&(null===i||t.maxLevel>i)&&(i=t.maxLevel)}t[n].push(e)}));for(const s of ne){const e=this._layerViews[s],i=t[s];i.reverse();const r=i.length;let a=e.length!==r;const n=new Array(r),l=new Array(e.length);this._layerIndexByUid[s].clear();for(let t=0;t<r;t++){const r=i[t].uid;this._layerIndexByUid[s].set(r,t);const o=e.indexOf(i[t]);n[t]=o,t!==o&&(a=!0),o>-1&&(l[o]=t)}if(a){const e=this._postorderIterator;for(e.reset(this.rootTiles);!e.done;)e.next().modifyLayers(l,n,s);this._layerViews[s]=i,this._restartAllAgents(s),this._updateTilesVisibility(this.rootTiles)}}this.tilingScheme.ensureMaxLod(i)&&this._viewChangeUpdate()}_restartAllAgents(e){const t=this._postorderIterator;for(t.reset(this.rootTiles);!t.done;){const i=t.next();i.restartAgents(e),e===ae.ELEVATION&&i.computeElevationBounds()}}layerViewByIndex(e,t){return this._layerViews[t][e]}numLayers(e){return this._layerViews[e].length}_updateTileTextures(e){this._allTiles.forAll((t=>{t.updateAgents(ae.MAP),e===se.IMMEDIATE?this.renderer.updateTileTexture(t,je.TEXTURE_NOFADING):t.updateRenderData(ae.MAP,e)})),this._renderer.isTransparent=this._allTransparentSurfaceLayers()}_invalidateLayerData(e,t){this._allTiles.forAll((i=>i.removeLayerAgent(e,t))),this._allTiles.forAll((i=>i.invalidateLayerData(e,t)))}setTileTreeDirty(){this._allTilesDirty=!0}requestRender(e=qe.UPDATE){this.renderer.setNeedsRender(e)}requestUpdate(){1==++this._pendingUpdates&&(this._hasPendingUpdates=!0)}requestTileData(e,t,i,r){const s=this.layerViewByIndex(t,i),a=s.layer;return!a.tilemapCache||Le(s)?this._requestTileData(e,i,s,r):(++this._asyncWorkItems,a.tilemapCache.fetchAvailability(e.lij[0],e.lij[1],e.lij[2],{...r,timeout:6e3}).then((()=>--this._asyncWorkItems)).catch((t=>{throw--this._asyncWorkItems,m(t)||this._dataMissing(e,i,s,{notInTilemap:!0}),t})).then((()=>this._frameTask.schedule((()=>this._requestTileData(e,i,s,r)),r.signal))))}_requestTileData(e,t,i,r){return t===ae.ELEVATION?this._requestElevationTileData(e,i,r):this._requestMapTileData(e,i,r)}_requestElevationTileData(e,t,i){if(!Se(t))return void Te(!1,"_requestElevationTileData can only be called for elevation layer views");const r=r=>{if(--this._asyncWorkItems,g(i))return;const s=this._layerIndexByUid[ae.ELEVATION].get(t.uid);null!=s?(this._usedMemory=Ke,this.requestUpdate(),this._elevationDataArrived(e,s,r)):Ge.warn("TerrainSurface: received data from unknown layer %d %s",ae.ELEVATION,e.lij.toString())},s=i=>{--this._asyncWorkItems,m(i)||(this._dataMissing(e,ae.ELEVATION,t,i),this.requestUpdate())};if(++this._asyncWorkItems,xe(t.layer))return t.layer.fetchTile(e.lij[0],e.lij[1],e.lij[2],{noDataValue:ge,signal:i.signal}).then((e=>{if(g(i))return Ge.warnOnce("A call to fetchTile resolved even though the request was aborted. fetchTile should not resolve if options.signal.aborted is true."),void s(y());this._frameTask.schedule((()=>r(e)),i.signal,s)}),s);const a=t.getTileUrl(e.lij[0],e.lij[1],e.lij[2]);return this._elevationDataRequester.request(a,"binary",i).then((e=>this._lercDecoder.decode(e,{noDataValue:ge},i.signal))).then((e=>{r({values:e.pixelData,width:e.width,height:e.height,noDataValue:e.noDataValue,minValue:e.minValue,maxValue:e.maxValue})}),s)}_requestMapTileData(e,t,i){if(t instanceof Q)return Promise.reject();++this._asyncWorkItems;const r=(r,s)=>{--this._asyncWorkItems,Pe(s),g(i)||(this._dataMissing(e,ae.MAP,t,r),this.requestUpdate())},s=e=>t=>r(t,e),a=r=>this._frameTask.schedule((()=>{--this._asyncWorkItems,this.requestUpdate(),g(i)?Pe(r):this._mapTileDataArrived(e,t,r)}),i.signal,s(r)).catch(s(r)),n=(e,t=null)=>this._frameTask.schedule((()=>r(e,t)));if(Le(t)){const r=t.schemaHelper.getLevelRowColumn(e.lij);return t.fetchTile(r[0],r[1],r[2],i).then(a,n)}if(Ee(t))return t.fetchTile(e.lij[0],e.lij[1],e.lij[2],i).then(a,n);if(De(t)&&xe(t.layer))return t.layer.fetchTile(e.lij[0],e.lij[1],e.lij[2],i).then((e=>{if(g(i))return Ge.warnOnce("A call to fetchTile resolved even though the request was aborted. fetchTile should not resolve if options.signal.aborted is true."),void n(y());a(e)}),n);let l=t.getTileUrl(e.lij[0],e.lij[1],e.lij[2]);N(t.layer)&&t.layer.refreshTimestamp&&(l+=`${l.includes("?")?"&":"?"}_ts=${t.layer.refreshTimestamp}`);const o=t.hasMixedImageFormats?"image+type":"image";return this._mapDataRequester.request(l,o,i).then(a,n)}_mapTileDataArrived(e,t,i){const r=this._layerIndexByUid[ae.MAP].get(t.uid);null!=r?e.dataArrived(r,ae.MAP,i):(Pe(i),Ge.warn("TerrainSurface: received data from unknown layer"))}_dataMissing(e,t,i,r){const s=this._layerIndexByUid[t].get(i.uid);null!=s?e.dataMissing(s,t,r):Ge.warn("TerrainSurface: received data from unknown layer")}updateTileOverlayParams(e){this.rootTiles&&this.overlayManager&&(this._allTiles.forAll((e=>{e.renderData&&this.overlayManager.setTileParameters(e)})),this._renderer.setNeedsRender(e))}get performanceInfo(){const e=this._performanceInfo;return e.numNodes=this._allTiles.length,e.numLeaves=e.numVisible=e.numRendered=e.numLoadedPerLevel.length=e.numRenderedPerLevel.length=0,this._allTiles.forAll((t=>{t.isLeaf&&e.numLeaves++;const i=t.level;t.renderData&&(e.numLoadedPerLevel[i]=(e.numLoadedPerLevel[i]||0)+1),t.visible&&(e.numVisible++,t.rendered&&(e.numRenderedPerLevel[i]=(e.numRenderedPerLevel[i]||0)+1,e.numRendered++))})),e}getUsedMemory(){return this.tilingScheme?(this._usedMemory===Ke&&(this._usedMemory=0,this._allTiles.forAll((e=>this._usedMemory+=e.usedMemory))),this._usedMemory):0}getUsedMemoryForLayerView(e){let t=0;const i=this._layerClassFromLayerView(e),r=this._layerIndexByUid[i].get(e.uid);return this._allTiles.forAll((e=>t+=e.getUsedMemoryForLayer(i,r))),t}getTile(e){if(u(e)||u(this.rootTiles))return null;const t=e.split("/").map((e=>+e));if(0===t[0])return this.rootTiles.find((e=>e.lij[1]===t[1]&&e.lij[2]===t[2]));const i=2**t[0],r=Math.floor(t[1]/i),s=Math.floor(t[2]/i);let a;if(this.rootTiles.some((e=>e.lij[1]===r&&e.lij[2]===s&&(a=e,!0))),a){let e=1<<t[0]-1;for(;a.lij[0]<t[0];){let i=t[1]&e?2:0;if((t[2]&e)>0&&i++,!a.children[i])return null;a=a.children[i],e>>=1}return Te(a.lij[0]===t[0]&&a.lij[1]===t[1]&&a.lij[2]===t[2],"not the right tile?"),a}return null}get test(){const e=this;return{renderer:e._renderer,lercDecoder:e._lercDecoder,forceReload:()=>{p(e.rootTiles)&&(e._mergeTile(e.rootTiles[0]),e._viewChangeUpdate())},getTiles:()=>e._allTiles.toArray(),getRenderedTiles(){tt.clear(),e._allTiles.forAll((e=>{e.visible&&e.rendered&&tt.push(e)}));const t=tt.toArray();return Ve(e.renderOrder,t),t},lockTilingScheme(t,i){e._extentHelper.defaultTiledLayersExtent=i,e.tilingSchemeLogic.test.lockTilingScheme(t)}}}};e([S()],Qe.prototype,"_renderer",void 0),e([S()],Qe.prototype,"_hasPendingUpdates",void 0),e([S()],Qe.prototype,"_asyncWorkItems",void 0),e([S()],Qe.prototype,"_allTilesDirty",void 0),e([S()],Qe.prototype,"_allTilesSorted",void 0),e([S()],Qe.prototype,"_viewChanged",void 0),e([S({readOnly:!0})],Qe.prototype,"_watchUpdatingTracking",void 0),e([S()],Qe.prototype,"_frameTask",void 0),e([S({readOnly:!0})],Qe.prototype,"snapLevel",null),e([S({readOnly:!0})],Qe.prototype,"lodSnapping",null),e([S({constructOnly:!0})],Qe.prototype,"view",void 0),e([S()],Qe.prototype,"_userClippingExtent",null),e([S()],Qe.prototype,"_rootTilesExtent",void 0),e([S({readOnly:!0})],Qe.prototype,"extent",null),e([S({readOnly:!0})],Qe.prototype,"groundExtent",null),e([S({readOnly:!0})],Qe.prototype,"_tilingSchemeExtent",null),e([S({readOnly:!0})],Qe.prototype,"updating",null),e([S(J)],Qe.prototype,"updatingProgress",void 0),e([S({readOnly:!0})],Qe.prototype,"updatingProgressValue",null),e([S()],Qe.prototype,"_maxNumUpdating",void 0),e([S({aliasOf:"view.map.ground.opacity"})],Qe.prototype,"baseOpacity",void 0),e([S({readOnly:!0})],Qe.prototype,"overlayManager",void 0),e([S({readOnly:!0})],Qe.prototype,"viewingMode",null),e([S()],Qe.prototype,"maxTextureScale",void 0),e([S({readOnly:!0})],Qe.prototype,"ready",null),e([S({value:he.FRONT_TO_BACK})],Qe.prototype,"renderOrder",null),e([S({readOnly:!0})],Qe.prototype,"rootTiles",void 0),e([S({readOnly:!0})],Qe.prototype,"spatialReference",null),e([S()],Qe.prototype,"backgroundImage",void 0),e([S({type:t,aliasOf:"view.map.ground.surfaceColor"})],Qe.prototype,"backgroundColor",void 0),e([S()],Qe.prototype,"_background",null),e([S({value:!1})],Qe.prototype,"slicePlaneEnabled",null),e([S({readOnly:!0})],Qe.prototype,"tilingScheme",void 0),e([S({readOnly:!0,aliasOf:"tilingSchemeLogic.tilingSchemeLocked"})],Qe.prototype,"tilingSchemeLocked",void 0),e([S({readOnly:!0,aliasOf:"tilingSchemeLogic.tilingSchemeDone"})],Qe.prototype,"tilingSchemeDone",void 0),e([S({readOnly:!0})],Qe.prototype,"tilingSchemeLogic",void 0),e([S({value:!0})],Qe.prototype,"velvetOverground",null),e([w("_renderer.wireframe")],Qe.prototype,"wireframe",void 0),e([S({value:!1})],Qe.prototype,"suspended",null),e([S({readOnly:!0,aliasOf:"view.qualitySettings.tiledSurface.textureFadeDuration"})],Qe.prototype,"textureFadeDuration",void 0),e([S()],Qe.prototype,"_layerViewsDirty",void 0),e([w("_renderer.renderPatchBorders")],Qe.prototype,"renderPatchBorders",void 0),e([w("_renderer.renderingDisabled")],Qe.prototype,"renderingDisabled",void 0),Qe=e([L("esri.views.3d.terrain.TerrainSurface")],Qe);const Xe=Qe;function ze(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function Ye(e){return!e.isLeaf&&(e.children[0].shouldLoad||e.children[1].shouldLoad||e.children[2].shouldLoad||e.children[3].shouldLoad||Ye(e.children[0])||Ye(e.children[1])||Ye(e.children[2])||Ye(e.children[3]))}function $e(e){return e.isLeaf&&e.parent&&e.parent.shouldLoad}const Ke=-1,Je=C(),Ze=M(),et=[0,0,0],tt=new _,it={spatialReference:null,tile:null,extent:null,context:"ground"},rt={spatialReference:null,extent:null,scale:0};export{Xe as default};
5
+ import{_ as e}from"../../../chunks/tslib.es6.js";import t from"../../../Color.js";import i from"../../../core/Accessor.js";import{difference as r}from"../../../core/arrayUtils.js";import s from"../../../core/CollectionFlattener.js";import a from"../../../core/Evented.js";import n from"../../../core/Handles.js";import l from"../../../core/Logger.js";import{clamp as o}from"../../../core/mathUtils.js";import{releaseMaybe as h,destroyMaybe as d,isNone as u,isSome as p}from"../../../core/maybe.js";import c from"../../../core/ObjectPool.js";import _ from"../../../core/PooledArray.js";import{isAbortError as m,isAborted as g,createAbortError as y}from"../../../core/promiseUtils.js";import{watch as f,sync as T}from"../../../core/reactiveUtils.js";import{init as v}from"../../../core/watchUtils.js";import{aliasOf as w}from"../../../core/accessorSupport/decorators/aliasOf.js";import"../../../core/has.js";import"../../../core/accessorSupport/ensureType.js";import{property as S}from"../../../core/accessorSupport/decorators/property.js";import{subclass as L}from"../../../core/accessorSupport/decorators/subclass.js";import{m as x}from"../../../chunks/mat4.js";import{c as E}from"../../../chunks/mat4f64.js";import{g as D}from"../../../chunks/vec3.js";import{c as P}from"../../../chunks/vec3f64.js";import{c as C}from"../../../chunks/vec4f64.js";import{projectVectorToVector as R,projectPointToVector as U}from"../../../geometry/projection.js";import{getReferenceEllipsoid as j}from"../../../geometry/projectionEllipsoid.js";import{create as M,equals as b,intersection as I,containsPoint as A,empty as V,expand as O,intersectsSphere as k}from"../../../geometry/support/aaBoundingRect.js";import{create as q,copy as B}from"../../../geometry/support/frustum.js";import{isRefreshableLayer as N}from"../../../layers/mixins/RefreshableLayer.js";import{ElevationQueryTileCache as F}from"../../../layers/support/ElevationQueryTileCache.js";import{isBaseLayer as H}from"../../../layers/support/layerUtils.js";import{acquireDecoder as G}from"../../../layers/support/LercDecoder.js";import{printAllocations as W}from"../../2d/engine/vectorTiles/VectorTile.js";import Q from"../layers/ElevationLayerView3D.js";import{directionToHeadingTilt as X,scaleToZoom as z}from"../support/cameraUtils.js";import Y from"../support/debugFlags.js";import{toBoundingRect as $}from"../support/extentUtils.js";import{ClientType as K}from"../support/index.js";import{updatingProgress as J}from"../support/updatingProperties.js";import{ElevationBounds as Z}from"./ElevationBounds.js";import{sampleElevation as ee,ElevationData as te}from"./ElevationData.js";import{create as ie}from"./ExtentHelper.js";import{LODSnapping as re,TextureUpdate as se}from"./interfaces.js";import{LayerClass as ae,LayerClasses as ne}from"./LayerClass.js";import{OverlayManager as le}from"./OverlayManager.js";import{PlanarPatch as oe}from"./PlanarPatch.js";import{RenderOrder as he}from"./RenderOrder.js";import{SphericalPatch as de}from"./SphericalPatch.js";import{DEFAULT_TILE_BACKGROUND as ue,MAX_ROOT_TILES as pe,TOO_MANY_ROOT_TILES_AFTER_CHANGE_ERROR as ce,TOO_MANY_ROOT_TILES_FOR_LAYER_ERROR as _e,MAX_MEMORY_LOD_BIAS as me,ELEVATION_NODATA_VALUE as ge}from"./TerrainConst.js";import ye from"./TerrainRenderer.js";import fe from"./TerrainSurfacePerformanceInfo.js";import{weakAssert as Te,computeSkirtScale as ve,isSurfaceLayerView as we,isElevationLayerView as Se,isVectorTileLayerView as Le,useFetchTileForLayer as xe,isImageryTileLayerView as Ee,isTileLayerView as De,releaseTileData as Pe}from"./terrainUtils.js";import{SplitLimits as Ce,Tile as Re}from"./Tile.js";import{printAllocations as Ue}from"./TilePerLayerInfo.js";import{TileUpdate as je}from"./TileUpdate.js";import{IteratorPreorder as Me,IteratorPostorder as be,hasLoadableSiblings as Ie,sortTilesByPOI as Ae,sortTiles as Ve}from"./tileUtils.js";import{TilingSchemeLogic as Oe}from"./TilingSchemeLogic.js";import{UpsampleInfo as ke}from"./UpsampleInfo.js";import{RenderRequestType as qe}from"../webgl-engine/lib/basicInterfaces.js";import{ImmediateTask as Be,TaskPriority as Ne,noBudget as Fe}from"../../support/Scheduler.js";import{WatchUpdatingTracking as He}from"../../support/WatchUpdatingTracking.js";const Ge=l.getLogger("esri.views.3d.terrain.TerrainSurface"),We=.25;let Qe=class extends(a.EventedMixin(i)){constructor(e){super(e),this._elevationBounds=new Z,this._iteratorPool=new c(Me,(e=>e.remove=()=>this._iteratorPool.release(e))),this._postorderIterator=new be,this._hasPendingUpdates=!1,this._pendingUpdates=0,this._asyncWorkItems=0,this._allTilesDirty=!0,this._allTilesSorted=!0,this._visible=!1,this._usedMemory=Ke,this._performanceInfo=new fe,this._viewChanged=!1,this._inFrameTask=!1,this._viewChangeUpdateDirty=!1,this._eyePosRenderSR=P(),this._eyePosSurfaceSR=P(),this._splitLimits=new Ce,this._snapLevel=1/0,this._frustum=q(),this._viewProjectionMatrix=E(),this._layerViews=[new Array,new Array],this._layerIndexByUid=[new Map,new Map],this._basemapLayerViewHandles=new Map,this._handles=new n,this._watchUpdatingTracking=new He,this._frameTask=Be,this._allTiles=new _,this._upsampleInfoPool=new c(ke),this._rootTilesExtent=M(),this._maxNumUpdating=1,this.maxTextureScale=1.2,this.backgroundImage=ue,this.backgroundColor=null,this._layerViewsDirty=!1}initialize(){this._lercDecoder=G(this.view.resourceController),this._tilePool=this.view.state.isLocal?new c(oe):new c(de);const e=this.view.resourceController.memoryController;this._upsampleMapCache=e.newCache("esri.views.3d.terrain.upsample",(e=>e.unloadMapData())),this._elevationQueryCache=new F(e.newCache("elevation-query")),this._set("overlayManager",new le({surface:this})),this._handles.add([this.watch("overlayManager.hasHighlights",(e=>this._renderer.setNeedsHighlight(e))),this.watch("overlayManager.rendersOccluded",(e=>this._renderer.setRenderOccludedOverlay(e)))],"overlayManager"),this._renderer=new ye({overlayRenderer:this.overlayManager.renderer,ellipsoidRadius:j(this.view.spatialReference).radius,stage:this.view._stage,allTiles:this._allTiles}),this._handles.add([v(this,"baseOpacity",(e=>{this._handleLayerViewChanges(),this._updateBaseOpacity(e)}),!0),v(this,"_background",(()=>{this._handleLayerViewChanges(),this._renderer.setTileBackground(this._background)}),!0),this.view.watch("pointsOfInterest",(e=>{this._renderer.pointsOfInterest=e,this._watchUpdatingTracking.removeAll(),e&&this._watchUpdatingTracking.add((()=>e.focus.renderLocation),(()=>()=>this._allTilesSorted=!1))})),v(Y,"TERRAIN_TILE_TREE_SHOW_TILES",(e=>{e&&!this._treeDebugger?import("../layers/support/TerrainTileTree3DDebugger.js").then((({TerrainTileTree3DDebugger:e})=>{!this._treeDebugger&&Y.TERRAIN_TILE_TREE_SHOW_TILES&&(this._treeDebugger=new e({view:this.view}))})):e||(this._treeDebugger=d(this._treeDebugger))}))]),this._extentHelper=ie(this.viewingMode,{layers:this.view.map.allLayers,layerViews:this.view.allLayerViews,viewSpatialReference:this.view.spatialReference});const t=this.view.defaultsFromMap?new s({getCollections:()=>{var e,t,i;return null==(e=this.view)||null==(t=e.defaultsFromMap)||null==(i=t.mapCollections)?void 0:i.map((({layers:e})=>e))},getChildrenFunction:e=>e&&"layers"in e?e.layers:null}):this.view.map.allLayers,i=new Oe({layers:t,extentHelper:this._extentHelper,viewingMode:this.viewingMode,viewSpatialReference:this.view.spatialReference});this._set("tilingSchemeLogic",i),this._updateTilingScheme(),this._elevationDataRequester=this.view.resourceController.createStreamDataRequester(K.ELEVATION),this._mapDataRequester=this.view.resourceController.createStreamDataRequester(K.BASEMAP);const r=this.view.resourceController.scheduler;this._frameTask=r.registerTask(Ne.TERRAIN_SURFACE,this),this.view.resourceController.memoryController.events.on("quality-changed",(()=>this._viewChangeUpdate())),this._handles.add([v(this._extentHelper,"stencilEnabledExtents",(e=>this._renderer.setStencilEnabledLayerExtents(e))),this.tilingSchemeLogic.watch("tilingScheme",(()=>this._updateTilingScheme()),!0),v(this,"extent",(()=>this._updateRootTiles())),this.view.on("resize",(()=>this._viewChangeUpdate())),this.view.watch("state.camera",(()=>this._viewChangeUpdate()),!0),this.view.watch("state.contentCamera",(()=>this.view.state.fixedContentCamera&&this._viewChangeUpdate()),!0),this.view.watch("qualitySettings.tiledSurface.lodBias",(()=>this._viewChangeUpdate())),v(this.view,"qualitySettings.tiledSurface.textureFadeDuration",(e=>this._renderer.textureFadingEnabled=e>0)),this.view.watch("lodSnapping",(()=>this._viewChangeUpdate())),f((()=>this._userClippingExtent),(()=>this._updateClippingExtent()),T)]),this._handles.add(this.view.allLayerViews.on("after-changes",(()=>this._layerViewsDirty=!0))),this._layerViewsDirty=!0,this._handleLayerViewChanges()}destroy(){this._frameTask.remove(),this._handles.destroy(),this._watchUpdatingTracking.destroy(),this._lercDecoder=h(this._lercDecoder),this._removeAllTiles(),this._upsampleMapCache=d(this._upsampleMapCache),this._elevationQueryCache=d(this._elevationQueryCache),this._set("tilingSchemeLogic",d(this.tilingSchemeLogic)),this._extentHelper=d(this._extentHelper),this._basemapLayerViewHandles.forEach(((e,t)=>this._unregisterTiledLayerView(t))),this._elevationDataRequester=null,this._mapDataRequester=null,this._set("overlayManager",d(this.overlayManager)),this._tilePool=d(this._tilePool),Re.prune(),this._treeDebugger&&(this._treeDebugger.destroy(),this._treeDebugger=null),this._renderer=d(this._renderer),this._iteratorPool=d(this._iteratorPool),this._set("view",null),this._upsampleInfoPool=d(this._upsampleInfoPool),W(),Ue()}get renderer(){return this._renderer}get frustum(){return this._frustum}get snapLevel(){var e,t;const i=null==(e=this.view.pointsOfInterest)||null==(t=e.contentCameraOnSurface)?void 0:t.scale;if(i){const e=this.view.state.contentCamera;let t=X(this.view,e.eye,e.viewForward,e.up).tilt;t>90&&(t=180-t);const r=2*(t/90)**2,s=z(this.view,i)-r;Math.abs(this._snapLevel-s)>We&&(Math.round(s)!==Math.round(this._snapLevel)&&(this._viewChanged=!0),this._snapLevel=s)}return Math.round(this._snapLevel)}get lodSnapping(){return this.view.qualitySettings.tiledSurface.reduceTileLevelDifferences?re.ON:re.OFF}get upsampleInfoPool(){return this._upsampleInfoPool}get upsampleMapCache(){return this._upsampleMapCache}get elevationQueryCache(){return this._elevationQueryCache}get mapTileRequester(){return this._mapDataRequester}get _userClippingExtent(){const{spatialReference:e}=this,{clippingArea:t}=this.view;if(u(t)||u(e))return null;const i=M(),r=$(t,i,e)?i:null,s=this._get("extent");return b(r,s)?s:r}get extent(){const e=I(this.groundExtent,this._userClippingExtent,M()),t=this._get("extent");return b(e,t)?t:e}get groundExtent(){return p(this._tilingSchemeExtent)?this._tilingSchemeExtent:this._rootTilesExtent}get _tilingSchemeExtent(){var e;return null==(e=this.tilingSchemeLogic)?void 0:e.extent}get updating(){return this._hasPendingUpdates||(this._maxNumUpdating=1),!!((this._watchUpdatingTracking.updating||this._hasPendingUpdates||this._viewChanged||this._allTilesDirty||this._asyncWorkItems>0||!this._allTilesSorted||this._renderer.updating||this._layerViewsDirty)&&this.ready&&!this.suspended||this.overlayManager.updating||this._frameTask.updating)}get updatingProgressValue(){return this._maxNumUpdating=Math.max(this._pendingUpdates,this._maxNumUpdating),1-this._pendingUpdates/this._maxNumUpdating}get viewingMode(){return this.view.state.viewingMode}get ready(){return p(this.rootTiles)}set renderOrder(e){this._renderer.renderOrder=e,this._set("renderOrder",e)}set skirtScale(e){this._renderer.skirtScale=e}get skirtScale(){return this._renderer.skirtScale}get spatialReference(){var e,t;return null!=(e=null==(t=this.tilingScheme)?void 0:t.spatialReference)?e:null}get _background(){return null!=this.backgroundColor?this.backgroundColor:this.backgroundImage}set slicePlaneEnabled(e){var t,i;this._renderer.slicePlaneEnabled=e,this._set("slicePlaneEnabled",e),null==(t=this.view)||null==(i=t._stage)||i.renderView.setRenderParameters({opaqueTerrain:this.opaque})}set velvetOverground(e){e!==this.velvetOverground&&(this._renderer.velvetOverground=e),this._set("velvetOverground",e)}set visible(e){e!==this._visible&&(this._visible=e,this._renderer.setVisibility(e),this.suspended=!e)}get opaque(){return this._renderer.opaque}set suspended(e){this._set("suspended",e),this._viewChangeUpdate()}intersect(e,t,i,r){this._renderer.intersect(e,t,i,r)}getElevation(e,t,i,r){const s=this.getTileWithElevation(e,t,i,r,Je);return u(s)?null:ee(Je[0],Je[1],s.renderData.geometryState.samplerData)}getTileWithElevation(e,t,i,r,s=Je){var a;const n=this.rootTiles;if(u(n)||!n.length)return null;if(0===n[0].layerInfo[ae.ELEVATION].length)return null;if(s[0]=e,s[1]=t,s[2]=i,!R(s,r,s,null==(a=this.tilingScheme)?void 0:a.spatialReference))return Ge.error("TerrainSurface.getElevation(): could not project given point to tiling scheme coordinate system"),null;for(let l of n){if(!l.containsPoint(s))continue;for(;l&&!l.rendered&&!l.isLeaf;){let e=0;s[0]>.5*(l.extent[0]+l.extent[2])&&(e+=1),s[1]<.5*(l.extent[1]+l.extent[3])&&(e+=2),l=l.children[e]}const e=l.renderData;return(e?e.geometryState.samplerData:null)?l:null}return null}get elevationBounds(){return this._elevationBounds}getScale(e){if(this.tilingScheme){if(!U(e,Je,this.spatialReference))return Ge.error("TerrainSurface.getScale(): could not project given point to tiling scheme coordinate system"),null;const t=this.rootTiles;if(p(t))for(let e of t)if(e.containsPoint(Je)){for(;null!=e.children[0];){let t=0;Je[0]>e.children[0].extent[2]&&(t+=1),Je[1]<e.children[0].extent[1]&&(t+=2),e=e.children[t]}return this._getLodBiasCorrectedScale(e.level)}}return 1e100}getSphereScale(e,t){if(!this.tilingScheme)return null;if(!U(e,Je,this.spatialReference))return Ge.error("TerrainSurface.getSphereScale(): could not project given point to tiling scheme coordinate system"),null;Je[3]=t;let i=null;const r=e=>{if(e&&k(e.extent,Je))if(null!=e.children[0])for(const t of e.children)r(t);else{const t=this._getLodBiasCorrectedScale(e.level);i=null==i?t:Math.min(i,t)}},s=this.rootTiles;if(p(s))for(const a of s)r(a);return i}queryVisibleScaleRange(e,t,i,r){const s=t?this.tilingScheme.levelAtScale(t):0,a=i?this.tilingScheme.levelAtScale(i):1/0,n=this.lodBias;this._renderer.queryVisibleLevelRange(e,s+n,a+n,r)}_updateBaseOpacity(e){const t=this._renderer.opaque;this._renderer.opaque=e>=1,this._renderer.isTransparent=this._allTransparentSurfaceLayers();const i=t===this._renderer.opaque?se.UNFADED:se.IMMEDIATE;var r,s;i===se.IMMEDIATE&&(null==(r=this.view)||null==(s=r._stage)||s.renderView.setRenderParameters({opaqueTerrain:this.opaque}));this._updateTileTextures(i)}_updateTilingScheme(){const e=this.tilingSchemeLogic.tilingScheme;e!==this.tilingScheme&&(Te(!!e,"tiling scheme cannot be reset to undefined"),this.tilingScheme&&this._removeAllTiles(),this._set("tilingScheme",e),this._updateClippingExtent(),e&&(this._updateTiledLayers(),this._renderer.setTileSize(e.pixelSize),this.overlayManager.setSpatialReference(e.spatialReference),this._updateRootTiles()))}_acquireTile(e,t,i,r){const s=this._tilePool.acquire();return et[0]=e,et[1]=t,et[2]=i,s.init(et,r,this),s}_updateRootTiles(){const{extent:e,tilingScheme:t}=this;if(!t)return;const i=Ze;let s=t.rootTilesInExtent(e,i,5*pe);if(p(this.rootTiles)){if(s.length>pe)return void Ge.warn(ce);const e=this.rootTiles.map((e=>e.lij)),t=r(e,s,ze);if(t.removed.length>0||t.added.length>0){const e=this.rootTiles.filter((e=>!(t.removed.findIndex((t=>ze(t,e.lij)))>-1)||(this._purgeTile(e),!1)));t.added.forEach((t=>e.push(this._newRootTile(t)))),this._setRootTiles(e)}}else s.length>pe&&(Ge.warn(_e),s=t.rootTilesInExtent(e,i,pe)),this._setRootTiles(s.map((e=>this._newRootTile(e))));b(i,this._rootTilesExtent)||(this._rootTilesExtent=M(i)),this.visible=!0,this._viewChangeUpdate(),this.overlayManager.setPlacementDirty(),this.notifyChange("ready")}_newRootTile(e){const t=this._acquireTile(0,e[1],e[2],null);return t.shouldSplit(this._splitLimits,this._eyePosRenderSR,this.lodSnapping)===je.SPLIT&&t.setPendingUpdate(je.SPLIT),this._loadTile(t),t}_setRootTiles(e){if(this._set("rootTiles",e),this._allTiles.clear(),p(e)){const t=this._iteratorPool.acquire();for(t.reset(e);!t.done;)this._allTiles.push(t.next());t.remove()}this._renderer.setRootTiles(this.rootTiles),this._updateTilesVisibility(e)}_runViewChangeUpdateIfDirty(){this._viewChangeUpdateDirty&&(this._viewChangeUpdateDirty=!1,this._viewChangeUpdate())}_viewChangeUpdate(){this.view&&!this.suspended&&this.tilingScheme&&this._visible&&(this._inFrameTask?this._viewChangeUpdateDirty=!0:(this._viewChangeUpdateDirty=!1,this._updateViewDependentParameters(),this._updateSkirts(),this._updateTilesVisibility(this.rootTiles)))}_updateClippingStatus(e){e.updateClippingStatus(this.extent)&&e.resetPendingUpdate(je.GEOMETRY)&&this._updateTileGeometry(e)}_updateTilesVisibility(e){if(u(e))return;const t=Ie(e);let i=t?this._elevationBounds.min:1/0,r=t?this._elevationBounds.max:-1/0;const s=this.view.state.fixedContentCamera,a=this.extent,n=this._viewProjectionMatrix;this.setTileTreeDirty();const l=this._iteratorPool.acquire();for(l.reset(e);!l.done;){const e=l.next();e.updateClippingStatus(a)&&e.resetPendingUpdate(je.GEOMETRY)&&this._updateTileGeometry(e),e.setPendingUpdate(je.RENDERDATA);const t=e.updateVisibilityNow();s||t?(e.updateScreenDepth(n),e.renderData&&(i=Math.min(e.elevationBounds[0],i),r=Math.max(e.elevationBounds[1],r))):l.skipSubtree()}l.remove(),this._viewChanged=!0,this._allTilesDirty=!0,isFinite(i)&&isFinite(r)&&(this._elevationBounds.min===i&&this._elevationBounds.max===r||(this._elevationBounds.min=i,this._elevationBounds.max=r,this.emit("elevation-bounds-change",null)))}_updateViewDependentParameters(){const e=this.view.state.camera,t=this.view.state.contentCamera,i=Math.tan(.5*t.fovX),r=Math.tan(.5*t.fovY),s=this.tilingScheme.pixelSize,a=2**-this.lodBias*e.pixelRatio;this._splitLimits.aboveGround=e.aboveGround,this._splitLimits.fovX=i,this._splitLimits.fovY=r,this._splitLimits.relativeWidthLimit=s/e.width*this.maxTextureScale*a,this._splitLimits.relativeHeightLimit=s/e.height*this.maxTextureScale*a,this._splitLimits.maxLod=this.tilingScheme.getMaxLod(),this._splitLimits.angledSplitBias=this.view.qualitySettings.tiledSurface.angledSplitBias,this.view.state.fixedContentCamera?(u(this._splitLimits.frustum)&&(this._splitLimits.frustum=q()),B(t.frustum,this._splitLimits.frustum)):this._splitLimits.frustum=null,B(e.frustum,this._frustum),x(this._viewProjectionMatrix,t.projectionMatrix,t.viewMatrix),D(this._eyePosRenderSR,t.eye),R(e.eye,this.view.renderSpatialReference,this._eyePosSurfaceSR,this.spatialReference)}_updateSkirts(){const e=this.view.state.camera,t=this.view.state.constraints.collision.enabled?0:1.11*e.near;this.skirtScale=ve(this,this._eyePosSurfaceSR,t)}_updateRenderData(e){e.rendered&&!e.shouldLoad&&(Ye(e)?this._loadChildren(e):$e(e)&&this._loadParent(e))}_updateTileGeometry(e){e.updateVisibility(),this._renderer.updateTileGeometry(e),this._elevationUpdate(e),this._usedMemory=Ke}_updateTileTexture(e,t){const i=e.resetPendingUpdate(je.TEXTURE_FADING)?je.TEXTURE_FADING:!!e.resetPendingUpdate(je.TEXTURE_NOFADING)&&je.TEXTURE_NOFADING;i&&(this._renderer.updateTileTexture(e,i),this._usedMemory=Ke,t.madeProgress())}_elevationUpdate(e){it.spatialReference=this.spatialReference,it.tile=e,it.extent=e.extent,this.emit("elevation-change",it),A(e.extent,this._eyePosSurfaceSR)&&this._updateSkirts()}get running(){return this.updating&&this.ready&&!this.suspended}runTask(e){this._handleLayerViewChanges(e),this._frameTask.processQueue(e),this._inFrameTask=!0,this._pendingUpdates=0,this._hasPendingUpdates=!1,this._updateTileStatus(e),this._sortTiles(e);const t=!this.view.state.fixedContentCamera;this._mergeAndSplit(e,t),e.run((()=>this._updateElevation(e))),e.run((()=>this._updateTextures(e))),t||this._mergeAndSplit(e,!0),this._inFrameTask=!1,this._runViewChangeUpdateIfDirty(),e.done&&this.requestUpdate(),this.notifyChange("updatingProgressValue")}_updateTileStatus(e){if(!this._viewChanged||!this.rootTiles||e.done)return;this._viewChanged=!1;const t=this._iteratorPool.acquire();for(t.reset(this.rootTiles);!t.done;){const e=t.next();if(e.loadable){const i=e.shouldSplit(this._splitLimits,this._eyePosRenderSR,this.lodSnapping);if(i===je.SPLIT){e.resetPendingUpdate(je.MERGE),e.isLeaf&&(e.setPendingUpdate(je.SPLIT),t.skipSubtree());continue}e.resetPendingUpdate(je.SPLIT)&&e.updateAgentSuspension(),i===je.VSPLITMERGE&&e.updateAgents(ae.ELEVATION)}if(t.skipSubtree(),!e.isLeaf){e.setPendingUpdate(je.MERGE),e.resetPendingUpdate(je.SPLIT);const t=this._iteratorPool.acquire();t.resetOne(e);for(let e=t.next();!t.done;e=t.next())this._updateClippingStatus(e),e.updateVisibility(),e.loadable&&e.updateScreenDepth(this._viewProjectionMatrix);t.remove()}}t.remove(),this.requestUpdate(),e.madeProgress()}_sortTiles(e){e.done||this._allTilesSorted||(Ae(this._allTiles,this.view.pointsOfInterest.focus.renderLocation),this._allTilesSorted=!0,this._treeDebugger&&this._treeDebugger.update(),e.madeProgress())}_mergeAndSplit(e,t){if(this.suspended||e.done||!this._allTilesDirty)return;this._allTilesDirty=!1,this.requestUpdate();let i=0;for(;!e.done;){let r=!1;i=0;const s=!this._allTiles.some((s=>{if(i+=s.usedMemory,s.resetPendingUpdate(je.MERGE)){if(!t)return s.setPendingUpdate(je.MERGE),e.done;this._mergeTile(s),r=!0,e.madeProgress()}else s.resetPendingUpdate(je.SPLIT)&&(this._splitTile(s),r=!0,e.madeProgress());return!e.done&&s.resetPendingUpdate(je.RENDERDATA)&&(this._updateRenderData(s),e.madeProgress()),e.done}));if(r&&(this._allTilesSorted=!1,this._allTilesDirty=!0),s){if(this._usedMemory=i,!r)break;this._updateTilesVisibility(this.rootTiles)}else this._allTilesDirty=!0}0===i&&(this._allTilesDirty=!0),this._sortTiles(e)}_updateElevation(e){return this._allTiles.some((t=>(t.resetPendingUpdate(je.GEOMETRY)&&(this._updateTileGeometry(t),this._updateTileTexture(t,e),e.madeProgress()),e.done))),e.hasProgressed}_updateTextures(e){return this._allTiles.some((t=>(this._updateTileTexture(t,e),e.done))),e.hasProgressed}_updateClippingExtent(){this.spatialReference&&(this.updateTileOverlayParams(qe.UPDATE),this.overlayManager.setPlacementDirty(),this._updateRootTiles())}get lodBias(){const e=this.view.resourceController.memoryController.memoryFactor;return this.view.qualitySettings.tiledSurface.lodBias-(1-e)*me}_getLodBiasCorrectedScale(e){const t=this.tilingScheme.levels,i=o(e-this.lodBias,0,t.length-1),r=i-Math.floor(i);return t[Math.floor(i)].scale*(1-r)+t[Math.ceil(i)].scale*r}_removeAllTiles(){p(this.rootTiles)&&(this.rootTiles.forEach((e=>this._purgeTile(e))),this._setRootTiles(null),this.notifyChange("ready")),this._allTiles.clear(),this.visible=!1}_purgeChildTiles(e){if(e.isLeaf)return!1;let t=this._purgeTile(e.children[0]);return t=this._purgeTile(e.children[1])||t,t=this._purgeTile(e.children[2])||t,t=this._purgeTile(e.children[3])||t,e.unsetChildren(),t}_purgeTile(e){const t=this._purgeChildTiles(e)||e.rendered;return this._allTiles.removeUnordered(e),e.unload(this._renderer),this._tilePool.release(e),t}_splitTile(e){Te(e.isLeaf,"tile that is already split should not be split again!");const t=e.level+1,i=2*e.lij[1],r=2*e.lij[2];e.setChildren(this._createTile(t,i,r,e),this._createTile(t,i,r+1,e),this._createTile(t,i+1,r,e),this._createTile(t,i+1,r+1,e)),e.setPendingUpdate(je.RENDERDATA),e.updateAgentSuspension(),this._allTiles.pushArray(e.children),this._allTilesDirty=!0,this._emitTileScaleChange(e,t),++this._performanceInfo.numSplit}_emitTileScaleChange(e,t=e.level){rt.spatialReference=this.spatialReference,rt.extent=e.extent,rt.scale=this._getLodBiasCorrectedScale(t),this.emit("scale-change",rt)}_createTile(e,t,i,r){Te(!!r,"_createTile sanity check");const s=this._acquireTile(e,t,i,r);return s.updateClippingStatus(this.extent),s.loadable&&(s.updateScreenDepth(this._viewProjectionMatrix),s.shouldSplit(this._splitLimits,this._eyePosRenderSR,this.lodSnapping)===je.SPLIT&&s.setPendingUpdate(je.SPLIT)),s}_mergeTile(e){Te(!e.hasPendingUpdate(je.SPLIT),"_mergeTile sanity check"),this._purgeChildTiles(e)&&(Te(!e.renderData,"_mergeTile sanity check"),this._loadTile(e)),this._allTilesDirty=!0,++this._performanceInfo.numMerged,this._emitTileScaleChange(e)}_loadChildren(e){Te(e.rendered,"parent should be rendered"),e.unload(this._renderer),this._loadTile(e.children[0]),this._loadTile(e.children[1]),this._loadTile(e.children[2]),this._loadTile(e.children[3])}_loadParent(e){const t=e.parent;this._unloadChildren(t),this._loadTile(t)}_unloadChildren(e){e.isLeaf||(this._unloadChildren(e.children[0]),e.children[0].unload(this._renderer),this._unloadChildren(e.children[1]),e.children[1].unload(this._renderer),this._unloadChildren(e.children[2]),e.children[2].unload(this._renderer),this._unloadChildren(e.children[3]),e.children[3].unload(this._renderer))}_loadTile(e){e.load(this._renderer),e.setPendingUpdate(je.RENDERDATA),this.requestUpdate(),this._allTilesDirty=!0,this.overlayManager&&this.overlayManager.hasOverlays&&this.overlayManager.setTileParameters(e),this._elevationUpdate(e)}_elevationDataArrived(e,t,i){const r=new te(e.lij,e.extent,i);e.dataArrived(t,ae.ELEVATION,r);const s=[e],a=e.level,n=this._iteratorPool.acquire();for(n.reset(s);!n.done;){const e=n.next();e.findElevationBoundsForLayer(t,a),e.computeElevationBounds()}n.remove(),this._updateTilesVisibility(s)}_handleLayerViewChanges(e=Fe){if(!this._layerViewsDirty)return;this._layerViewsDirty=!1;let t=!1;const i=new Set;let r=-1;for(const s of this.view.allLayerViews.items)if(i.add(s.uid),we(s))if(this._basemapLayerViewHandles.has(s.uid)){const e=this._layerClassFromLayerView(s),i=this._layerIndexByUid[e].get(s.uid);i<r&&(t=!0),r=i}else this._registerTiledLayerView(s),s.layer.loaded&&(t=!0);this._basemapLayerViewHandles.forEach(((e,r)=>{i.has(r)||(this._unregisterTiledLayerView(r),t=!0)})),t&&this._updateTiledLayers(),this._renderer.isTransparent=this._allTransparentSurfaceLayers(),e.madeProgress()}_allTransparentSurfaceLayers(){let e=0===this.view.map.ground.opacity;for(const t of this.view.allLayerViews.items)if(we(t)&&!Se(t)&&!H(t.layer)&&0!==t.fullOpacity)return e=!1,e;return e}_layerClassFromLayerView(e){return Se(e)?ae.ELEVATION:ae.MAP}_registerTiledLayerView(e){const t=[],i=this._layerClassFromLayerView(e);t.push(e.watch("suspended",(()=>this._updateTiledLayers()))),t.push(e.watch("fullOpacity",(()=>this._updateTileTextures(se.UNFADED)))),t.push(e.layer.watch("effectiveScaleRange",(()=>this._restartAllAgents(i)))),e.on("data-changed",(()=>{const t=this._layerIndexByUid[i].get(e.uid);null!=t&&this._invalidateLayerData(t,i)})),this._basemapLayerViewHandles.set(e.uid,t)}_unregisterTiledLayerView(e){const t=this._basemapLayerViewHandles.get(e);if(t){for(let e=0;e<t.length;e++)t[e].remove();this._basemapLayerViewHandles.delete(e)}}_updateTiledLayers(){if(!this.tilingScheme||this.view.suspended)return;const e=this.view.allLayerViews,t=[[],[]];let i=null;const r=V();e.forEach((e=>{const s=e.layer;if(!s||e.suspended||!we(e))return;const a=e.fullExtent;if(!a)return void Ge.warn("Terrain: Map or elevation layer does not have fullExtent: "+s.id);if(!this.tilingScheme.compatibleWith(e.tileInfo))return void Ge.warn("Terrain: tiling scheme of layer "+s.id+" is incompatible with other tiled layers, will not be drawn");O(r,a,r);const n=this._layerClassFromLayerView(e);if(n===ae.MAP){const t=e.displayLevelRange;t.maxLevel!==1/0&&(null===i||t.maxLevel>i)&&(i=t.maxLevel)}t[n].push(e)}));for(const s of ne){const e=this._layerViews[s],i=t[s];i.reverse();const r=i.length;let a=e.length!==r;const n=new Array(r),l=new Array(e.length);this._layerIndexByUid[s].clear();for(let t=0;t<r;t++){const r=i[t].uid;this._layerIndexByUid[s].set(r,t);const o=e.indexOf(i[t]);n[t]=o,t!==o&&(a=!0),o>-1&&(l[o]=t)}if(a){const e=this._postorderIterator;for(e.reset(this.rootTiles);!e.done;)e.next().modifyLayers(l,n,s);this._layerViews[s]=i,this._restartAllAgents(s),this._updateTilesVisibility(this.rootTiles)}}this.tilingScheme.ensureMaxLod(i)&&this._viewChangeUpdate()}_restartAllAgents(e){const t=this._postorderIterator;for(t.reset(this.rootTiles);!t.done;){const i=t.next();i.restartAgents(e),e===ae.ELEVATION&&i.computeElevationBounds()}}layerViewByIndex(e,t){return this._layerViews[t][e]}numLayers(e){return this._layerViews[e].length}_updateTileTextures(e){this._allTiles.forAll((t=>{t.updateAgents(ae.MAP),e===se.IMMEDIATE?this.renderer.updateTileTexture(t,je.TEXTURE_NOFADING):t.updateRenderData(ae.MAP,e)})),this._renderer.isTransparent=this._allTransparentSurfaceLayers()}_invalidateLayerData(e,t){this._allTiles.forAll((i=>i.removeLayerAgent(e,t))),this._allTiles.forAll((i=>i.invalidateLayerData(e,t)))}setTileTreeDirty(){this._allTilesDirty=!0}requestRender(e=qe.UPDATE){this.renderer.setNeedsRender(e)}requestUpdate(){1==++this._pendingUpdates&&(this._hasPendingUpdates=!0)}requestTileData(e,t,i,r){const s=this.layerViewByIndex(t,i),a=s.layer;return!a.tilemapCache||Le(s)?this._requestTileData(e,i,s,r):(++this._asyncWorkItems,a.tilemapCache.fetchAvailability(e.lij[0],e.lij[1],e.lij[2],{...r,timeout:6e3}).then((()=>--this._asyncWorkItems)).catch((t=>{throw--this._asyncWorkItems,m(t)||this._dataMissing(e,i,s,{notInTilemap:!0}),t})).then((()=>this._frameTask.schedule((()=>this._requestTileData(e,i,s,r)),r.signal))))}_requestTileData(e,t,i,r){return t===ae.ELEVATION?this._requestElevationTileData(e,i,r):this._requestMapTileData(e,i,r)}_requestElevationTileData(e,t,i){if(!Se(t))return void Te(!1,"_requestElevationTileData can only be called for elevation layer views");const r=r=>{if(--this._asyncWorkItems,g(i))return;const s=this._layerIndexByUid[ae.ELEVATION].get(t.uid);null!=s?(this._usedMemory=Ke,this.requestUpdate(),this._elevationDataArrived(e,s,r)):Ge.warn("TerrainSurface: received data from unknown layer %d %s",ae.ELEVATION,e.lij.toString())},s=i=>{--this._asyncWorkItems,m(i)||(this._dataMissing(e,ae.ELEVATION,t,i),this.requestUpdate())};if(++this._asyncWorkItems,xe(t.layer))return t.layer.fetchTile(e.lij[0],e.lij[1],e.lij[2],{noDataValue:ge,signal:i.signal}).then((e=>{if(g(i))return Ge.warnOnce("A call to fetchTile resolved even though the request was aborted. fetchTile should not resolve if options.signal.aborted is true."),void s(y());this._frameTask.schedule((()=>r(e)),i.signal,s)}),s);const a=t.getTileUrl(e.lij[0],e.lij[1],e.lij[2]);return this._elevationDataRequester.request(a,"binary",i).then((e=>this._lercDecoder.decode(e,{noDataValue:ge},i.signal))).then((e=>{r({values:e.pixelData,width:e.width,height:e.height,noDataValue:e.noDataValue,minValue:e.minValue,maxValue:e.maxValue})}),s)}_requestMapTileData(e,t,i){if(t instanceof Q)return Promise.reject();++this._asyncWorkItems;const r=(r,s)=>{--this._asyncWorkItems,Pe(s),g(i)||(this._dataMissing(e,ae.MAP,t,r),this.requestUpdate())},s=e=>t=>r(t,e),a=r=>this._frameTask.schedule((()=>{--this._asyncWorkItems,this.requestUpdate(),g(i)?Pe(r):this._mapTileDataArrived(e,t,r)}),i.signal,s(r)).catch(s(r)),n=(e,t=null)=>this._frameTask.schedule((()=>r(e,t)));if(Le(t)){const r=t.schemaHelper.getLevelRowColumn(e.lij);return t.fetchTile(r[0],r[1],r[2],i).then(a,n)}if(Ee(t))return t.fetchTile(e.lij[0],e.lij[1],e.lij[2],i).then(a,n);if(De(t)&&xe(t.layer))return t.layer.fetchTile(e.lij[0],e.lij[1],e.lij[2],i).then((e=>{if(g(i))return Ge.warnOnce("A call to fetchTile resolved even though the request was aborted. fetchTile should not resolve if options.signal.aborted is true."),void n(y());a(e)}),n);let l=t.getTileUrl(e.lij[0],e.lij[1],e.lij[2]);N(t.layer)&&t.layer.refreshTimestamp&&(l+=`${l.includes("?")?"&":"?"}_ts=${t.layer.refreshTimestamp}`);const o=t.hasMixedImageFormats?"image+type":"image";return this._mapDataRequester.request(l,o,i).then(a,n)}_mapTileDataArrived(e,t,i){const r=this._layerIndexByUid[ae.MAP].get(t.uid);null!=r?e.dataArrived(r,ae.MAP,i):(Pe(i),Ge.warn("TerrainSurface: received data from unknown layer"))}_dataMissing(e,t,i,r){const s=this._layerIndexByUid[t].get(i.uid);null!=s?e.dataMissing(s,t,r):Ge.warn("TerrainSurface: received data from unknown layer")}updateTileOverlayParams(e){this.rootTiles&&this.overlayManager&&(this._allTiles.forAll((e=>{e.renderData&&this.overlayManager.setTileParameters(e)})),this._renderer.setNeedsRender(e))}get performanceInfo(){const e=this._performanceInfo;return e.numNodes=this._allTiles.length,e.numLeaves=e.numVisible=e.numRendered=e.numLoadedPerLevel.length=e.numRenderedPerLevel.length=0,this._allTiles.forAll((t=>{t.isLeaf&&e.numLeaves++;const i=t.level;t.renderData&&(e.numLoadedPerLevel[i]=(e.numLoadedPerLevel[i]||0)+1),t.visible&&(e.numVisible++,t.rendered&&(e.numRenderedPerLevel[i]=(e.numRenderedPerLevel[i]||0)+1,e.numRendered++))})),e}getUsedMemory(){return this.tilingScheme?(this._usedMemory===Ke&&(this._usedMemory=0,this._allTiles.forAll((e=>this._usedMemory+=e.usedMemory))),this._usedMemory):0}getUsedMemoryForLayerView(e){let t=0;const i=this._layerClassFromLayerView(e),r=this._layerIndexByUid[i].get(e.uid);return this._allTiles.forAll((e=>t+=e.getUsedMemoryForLayer(i,r))),t}getTile(e){if(u(e)||u(this.rootTiles))return null;const t=e.split("/").map((e=>+e));if(0===t[0])return this.rootTiles.find((e=>e.lij[1]===t[1]&&e.lij[2]===t[2]));const i=2**t[0],r=Math.floor(t[1]/i),s=Math.floor(t[2]/i);let a;if(this.rootTiles.some((e=>e.lij[1]===r&&e.lij[2]===s&&(a=e,!0))),a){let e=1<<t[0]-1;for(;a.lij[0]<t[0];){let i=t[1]&e?2:0;if((t[2]&e)>0&&i++,!a.children[i])return null;a=a.children[i],e>>=1}return Te(a.lij[0]===t[0]&&a.lij[1]===t[1]&&a.lij[2]===t[2],"not the right tile?"),a}return null}get test(){const e=this;return{renderer:e._renderer,lercDecoder:e._lercDecoder,forceReload:()=>{p(e.rootTiles)&&(e._mergeTile(e.rootTiles[0]),e._viewChangeUpdate())},getTiles:()=>e._allTiles.toArray(),getRenderedTiles(){tt.clear(),e._allTiles.forAll((e=>{e.visible&&e.rendered&&tt.push(e)}));const t=tt.toArray();return Ve(e.renderOrder,t),t},lockTilingScheme(t,i){e._extentHelper.defaultTiledLayersExtent=i,e.tilingSchemeLogic.test.lockTilingScheme(t)}}}};e([S()],Qe.prototype,"_renderer",void 0),e([S()],Qe.prototype,"_hasPendingUpdates",void 0),e([S()],Qe.prototype,"_asyncWorkItems",void 0),e([S()],Qe.prototype,"_allTilesDirty",void 0),e([S()],Qe.prototype,"_allTilesSorted",void 0),e([S()],Qe.prototype,"_viewChanged",void 0),e([S({readOnly:!0})],Qe.prototype,"_watchUpdatingTracking",void 0),e([S()],Qe.prototype,"_frameTask",void 0),e([S({readOnly:!0})],Qe.prototype,"snapLevel",null),e([S({readOnly:!0})],Qe.prototype,"lodSnapping",null),e([S({constructOnly:!0})],Qe.prototype,"view",void 0),e([S()],Qe.prototype,"_userClippingExtent",null),e([S()],Qe.prototype,"_rootTilesExtent",void 0),e([S({readOnly:!0})],Qe.prototype,"extent",null),e([S({readOnly:!0})],Qe.prototype,"groundExtent",null),e([S({readOnly:!0})],Qe.prototype,"_tilingSchemeExtent",null),e([S({readOnly:!0})],Qe.prototype,"updating",null),e([S(J)],Qe.prototype,"updatingProgress",void 0),e([S({readOnly:!0})],Qe.prototype,"updatingProgressValue",null),e([S()],Qe.prototype,"_maxNumUpdating",void 0),e([S({aliasOf:"view.map.ground.opacity"})],Qe.prototype,"baseOpacity",void 0),e([S({readOnly:!0})],Qe.prototype,"overlayManager",void 0),e([S({readOnly:!0})],Qe.prototype,"viewingMode",null),e([S()],Qe.prototype,"maxTextureScale",void 0),e([S({readOnly:!0})],Qe.prototype,"ready",null),e([S({value:he.FRONT_TO_BACK})],Qe.prototype,"renderOrder",null),e([S({readOnly:!0})],Qe.prototype,"rootTiles",void 0),e([S({readOnly:!0})],Qe.prototype,"spatialReference",null),e([S()],Qe.prototype,"backgroundImage",void 0),e([S({type:t,aliasOf:"view.map.ground.surfaceColor"})],Qe.prototype,"backgroundColor",void 0),e([S()],Qe.prototype,"_background",null),e([S({value:!1})],Qe.prototype,"slicePlaneEnabled",null),e([S({readOnly:!0})],Qe.prototype,"tilingScheme",void 0),e([S({readOnly:!0,aliasOf:"tilingSchemeLogic.tilingSchemeLocked"})],Qe.prototype,"tilingSchemeLocked",void 0),e([S({readOnly:!0,aliasOf:"tilingSchemeLogic.tilingSchemeDone"})],Qe.prototype,"tilingSchemeDone",void 0),e([S({readOnly:!0})],Qe.prototype,"tilingSchemeLogic",void 0),e([S({value:!0})],Qe.prototype,"velvetOverground",null),e([w("_renderer.wireframe")],Qe.prototype,"wireframe",void 0),e([S({value:!1})],Qe.prototype,"suspended",null),e([S({readOnly:!0,aliasOf:"view.qualitySettings.tiledSurface.textureFadeDuration"})],Qe.prototype,"textureFadeDuration",void 0),e([S()],Qe.prototype,"_layerViewsDirty",void 0),e([w("_renderer.renderPatchBorders")],Qe.prototype,"renderPatchBorders",void 0),e([w("_renderer.renderingDisabled")],Qe.prototype,"renderingDisabled",void 0),Qe=e([L("esri.views.3d.terrain.TerrainSurface")],Qe);const Xe=Qe;function ze(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function Ye(e){return!e.isLeaf&&(e.children[0].shouldLoad||e.children[1].shouldLoad||e.children[2].shouldLoad||e.children[3].shouldLoad||Ye(e.children[0])||Ye(e.children[1])||Ye(e.children[2])||Ye(e.children[3]))}function $e(e){return e.isLeaf&&e.parent&&e.parent.shouldLoad}const Ke=-1,Je=C(),Ze=M(),et=[0,0,0],tt=new _,it={spatialReference:null,tile:null,extent:null,context:"ground"},rt={spatialReference:null,extent:null,scale:0};export{Xe as default};
@@ -2,7 +2,13 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.23/esri/copyright.txt for details.
4
4
  */
5
- import{glsl as e}from"../shaderModules/interfaces.js";function r(r,o){o.linearDepth?r.vertex.code.add(e`vec4 transformPositionWithDepth(mat4 proj, mat4 view, vec3 pos, vec2 nearFar, out float depth) {
5
+ import{glsl as e}from"../shaderModules/interfaces.js";function r(r,o){const t={hasModelTransformation:!1,...o};if(t.hasModelTransformation)return t.linearDepth?void r.vertex.code.add(e`vec4 transformPositionWithDepth(mat4 proj, mat4 view, mat4 model, vec3 pos, vec2 nearFar, out float depth) {
6
+ vec4 eye = view * (model * vec4(pos, 1.0));
7
+ depth = (-eye.z - nearFar[0]) / (nearFar[1] - nearFar[0]) ;
8
+ return proj * eye;
9
+ }`):void r.vertex.code.add(e`vec4 transformPosition(mat4 proj, mat4 view, mat4 model, vec3 pos) {
10
+ return proj * (view * (model * vec4(pos, 1.0)));
11
+ }`);t.linearDepth?r.vertex.code.add(e`vec4 transformPositionWithDepth(mat4 proj, mat4 view, vec3 pos, vec2 nearFar, out float depth) {
6
12
  vec4 eye = view * vec4(pos, 1.0);
7
13
  depth = (-eye.z - nearFar[0]) / (nearFar[1] - nearFar[0]) ;
8
14
  return proj * eye;
@@ -2,55 +2,59 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.23/esri/copyright.txt for details.
4
4
  */
5
- import{ShaderOutput as o}from"../ShaderOutputOptions.js";import{Slice as r}from"../Slice.glsl.js";import{Transform as e}from"../Transform.glsl.js";import{NormalAttribute as t}from"../attributes/NormalAttribute.glsl.js";import{TextureCoordinateAttribute as i}from"../attributes/TextureCoordinateAttribute.glsl.js";import{VertexNormal as a}from"../attributes/VertexNormal.glsl.js";import{OutputDepth as l}from"../output/OutputDepth.glsl.js";import{OutputHighlight as s}from"../output/OutputHighlight.glsl.js";import{VisualVariables as d}from"../shading/VisualVariables.glsl.js";import{DiscardOrAdjustAlpha as u}from"../util/AlphaDiscard.glsl.js";import{glsl as n}from"../../shaderModules/interfaces.js";function p(p,c){const m=p.vertex.code,v=p.fragment.code;c.output!==o.Depth&&c.output!==o.Shadow||(p.include(e,{linearDepth:!0}),p.include(i,c),p.include(d,c),p.include(l,c),p.include(r,c),p.vertex.uniforms.add("cameraNearFar","vec2"),p.varyings.add("depth","float"),c.hasColorTexture&&p.fragment.uniforms.add("tex","sampler2D"),m.add(n`void main(void) {
6
- vpos = calculateVPos();
7
- vpos = subtractOrigin(vpos);
8
- vpos = addVerticalOffset(vpos, localOrigin);
9
- gl_Position = transformPositionWithDepth(proj, view, vpos, cameraNearFar, depth);
10
- forwardTextureCoordinates();
11
- }`),p.include(u,c),v.add(n`
5
+ import{ShaderOutput as o}from"../ShaderOutputOptions.js";import{Slice as r}from"../Slice.glsl.js";import{Transform as e}from"../Transform.glsl.js";import{NormalAttribute as t}from"../attributes/NormalAttribute.glsl.js";import{TextureCoordinateAttribute as i}from"../attributes/TextureCoordinateAttribute.glsl.js";import{VertexNormal as a}from"../attributes/VertexNormal.glsl.js";import{OutputDepth as l}from"../output/OutputDepth.glsl.js";import{OutputHighlight as s}from"../output/OutputHighlight.glsl.js";import{VisualVariables as d}from"../shading/VisualVariables.glsl.js";import{DiscardOrAdjustAlpha as n}from"../util/AlphaDiscard.glsl.js";import{glsl as u}from"../../shaderModules/interfaces.js";function m(m,p){const c=m.vertex.code,v=m.fragment.code,f=p.hasModelTransformation;p.output!==o.Depth&&p.output!==o.Shadow||(m.include(e,{linearDepth:!0,hasModelTransformation:f}),m.include(i,p),m.include(d,p),m.include(l,p),m.include(r,p),m.vertex.uniforms.add("cameraNearFar","vec2"),m.varyings.add("depth","float"),p.hasColorTexture&&m.fragment.uniforms.add("tex","sampler2D"),c.add(u`
6
+ void main(void) {
7
+ vpos = calculateVPos();
8
+ vpos = subtractOrigin(vpos);
9
+ vpos = addVerticalOffset(vpos, localOrigin);
10
+ gl_Position = transformPositionWithDepth(proj, view, ${f?"model,":""} vpos, cameraNearFar, depth);
11
+ forwardTextureCoordinates();
12
+ }
13
+ `),m.include(n,p),v.add(u`
12
14
  void main(void) {
13
15
  discardBySlice(vpos);
14
- ${c.hasColorTexture?n`
16
+ ${p.hasColorTexture?u`
15
17
  vec4 texColor = texture2D(tex, vuv0);
16
18
  discardOrAdjustAlpha(texColor);`:""}
17
19
  outputDepth(depth);
18
20
  }
19
- `)),c.output===o.Normal&&(p.include(e,{linearDepth:!1}),p.include(t,c),p.include(a,c),p.include(i,c),p.include(d,c),c.hasColorTexture&&p.fragment.uniforms.add("tex","sampler2D"),p.vertex.uniforms.add("viewNormal","mat4"),p.varyings.add("vPositionView","vec3"),m.add(n`
21
+ `)),p.output===o.Normal&&(m.include(e,{linearDepth:!1,hasModelTransformation:f}),m.include(t,p),m.include(a,p),m.include(i,p),m.include(d,p),p.hasColorTexture&&m.fragment.uniforms.add("tex","sampler2D"),m.vertex.uniforms.add("viewNormal","mat4"),m.varyings.add("vPositionView","vec3"),c.add(u`
20
22
  void main(void) {
21
23
  vpos = calculateVPos();
22
24
  vpos = subtractOrigin(vpos);
23
- ${c.normalType===t.Type.Attribute?n`
25
+ ${p.normalType===t.Type.Attribute?u`
24
26
  vNormalWorld = dpNormalView(vvLocalNormal(normalModel()));`:""}
25
27
  vpos = addVerticalOffset(vpos, localOrigin);
26
- gl_Position = transformPosition(proj, view, vpos);
28
+ gl_Position = transformPosition(proj, view, ${f?"model,":""} vpos);
27
29
  forwardTextureCoordinates();
28
30
  }
29
- `),p.include(r,c),p.include(u,c),v.add(n`
31
+ `),m.include(r,p),m.include(n,p),v.add(u`
30
32
  void main() {
31
33
  discardBySlice(vpos);
32
- ${c.hasColorTexture?n`
34
+ ${p.hasColorTexture?u`
33
35
  vec4 texColor = texture2D(tex, vuv0);
34
36
  discardOrAdjustAlpha(texColor);`:""}
35
37
 
36
- ${c.normalType===t.Type.ScreenDerivative?n`
37
- vec3 normal = screenDerivativeNormal(vPositionView);`:n`
38
+ ${p.normalType===t.Type.ScreenDerivative?u`
39
+ vec3 normal = screenDerivativeNormal(vPositionView);`:u`
38
40
  vec3 normal = normalize(vNormalWorld);
39
41
  if (gl_FrontFacing == false) normal = -normal;`}
40
42
  gl_FragColor = vec4(vec3(0.5) + 0.5 * normal, 1.0);
41
43
  }
42
- `)),c.output===o.Highlight&&(p.include(e,{linearDepth:!1}),p.include(i,c),p.include(d,c),c.hasColorTexture&&p.fragment.uniforms.add("tex","sampler2D"),m.add(n`void main(void) {
43
- vpos = calculateVPos();
44
- vpos = subtractOrigin(vpos);
45
- vpos = addVerticalOffset(vpos, localOrigin);
46
- gl_Position = transformPosition(proj, view, vpos);
47
- forwardTextureCoordinates();
48
- }`),p.include(r,c),p.include(u,c),p.include(s),v.add(n`
44
+ `)),p.output===o.Highlight&&(m.include(e,{linearDepth:!1,hasModelTransformation:f}),m.include(i,p),m.include(d,p),p.hasColorTexture&&m.fragment.uniforms.add("tex","sampler2D"),c.add(u`
45
+ void main(void) {
46
+ vpos = calculateVPos();
47
+ vpos = subtractOrigin(vpos);
48
+ vpos = addVerticalOffset(vpos, localOrigin);
49
+ gl_Position = transformPosition(proj, view, ${f?"model,":""} vpos);
50
+ forwardTextureCoordinates();
51
+ }
52
+ `),m.include(r,p),m.include(n,p),m.include(s),v.add(u`
49
53
  void main() {
50
54
  discardBySlice(vpos);
51
- ${c.hasColorTexture?n`
55
+ ${p.hasColorTexture?u`
52
56
  vec4 texColor = texture2D(tex, vuv0);
53
57
  discardOrAdjustAlpha(texColor);`:""}
54
58
  outputHighlight();
55
59
  }
56
- `))}export{p as DefaultMaterialAuxiliaryPasses};
60
+ `))}export{m as DefaultMaterialAuxiliaryPasses};
@@ -2,21 +2,19 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.23/esri/copyright.txt for details.
4
4
  */
5
- import{RgbaFloatEncoding as e}from"../util/RgbaFloatEncoding.glsl.js";import{glsl as t}from"../../shaderModules/interfaces.js";function i(e,t){e.constants.add("stippleAlphaColorDiscard","float",.001),e.constants.add("stippleAlphaHighlightDiscard","float",.5),t.stippleEnabled?r(e,t):a(e)}function r(i,r){const a=!(r.draped&&r.stipplePreferContinuous);i.fragment.include(e),i.vertex.uniforms.add("stipplePatternPixelSize","float"),i.vertex.uniforms.add("pixelRatio","float"),r.draped?i.vertex.uniforms.add("worldToScreenRatio","float"):(i.vertex.uniforms.add("worldToScreenPerDistanceRatio","float"),i.vertex.uniforms.add("camPos","vec3"),i.vertex.code.add(t`float computeWorldToScreenRatio(vec3 segmentCenter) {
5
+ import{RgbaFloatEncoding as e}from"../util/RgbaFloatEncoding.glsl.js";import{glsl as t}from"../../shaderModules/interfaces.js";function i(e,t){e.constants.add("stippleAlphaColorDiscard","float",.001),e.constants.add("stippleAlphaHighlightDiscard","float",.5),t.stippleEnabled?r(e,t):o(e)}function r(i,r){const o=!(r.draped&&r.stipplePreferContinuous);i.fragment.include(e),i.vertex.uniforms.add("stipplePatternPixelSize","float"),i.vertex.uniforms.add("pixelRatio","float"),r.draped?i.vertex.uniforms.add("worldToScreenRatio","float"):(i.vertex.uniforms.add("worldToScreenPerDistanceRatio","float"),i.vertex.uniforms.add("camPos","vec3"),i.vertex.code.add(t`float computeWorldToScreenRatio(vec3 segmentCenter) {
6
6
  float segmentDistanceToCamera = length(segmentCenter - camPos);
7
7
  return worldToScreenPerDistanceRatio / segmentDistanceToCamera;
8
- }`)),i.varyings.add("vStippleDistance","float"),r.stippleRequiresClamp&&i.varyings.add("vStippleDistanceLimits","vec2"),i.vertex.code.add(t`
8
+ }`)),i.varyings.add("vStippleDistance","float"),r.stippleRequiresClamp&&i.varyings.add("vStippleDistanceLimits","vec2"),r.stippleRequiresStretchMeasure&&i.varyings.add("vStipplePatternStretch","float"),i.vertex.code.add(t`
9
9
  float discretizeWorldToScreenRatio(float worldToScreenRatio) {
10
- float step = ${l};
10
+ float step = ${a};
11
11
 
12
12
  float discreteWorldToScreenRatio = log(worldToScreenRatio);
13
13
  discreteWorldToScreenRatio = ceil(discreteWorldToScreenRatio / step) * step;
14
14
  discreteWorldToScreenRatio = exp(discreteWorldToScreenRatio);
15
15
  return discreteWorldToScreenRatio;
16
16
  }
17
- `),i.vertex.code.add(t`
18
- ${r.stippleRequiresStretchMeasure?t`vec3`:t`vec2`} computeStippleDistanceLimits(float startPseudoScreen, float segmentLengthPseudoScreen, float segmentLengthScreen, float patternLength) {
19
- `),a&&i.vertex.code.add(t`
17
+ `),i.vertex.code.add(t`vec2 computeStippleDistanceLimits(float startPseudoScreen, float segmentLengthPseudoScreen, float segmentLengthScreen, float patternLength) {`),o&&i.vertex.code.add(t`
20
18
  if (segmentLengthPseudoScreen >= patternLength) {
21
19
 
22
20
  // Round the screen length to get an integer number of pattern repetitions (minimum 1).
@@ -24,12 +22,17 @@ return worldToScreenPerDistanceRatio / segmentDistanceToCamera;
24
22
  float flooredRepetitions = max(1.0, floor(repetitions + 0.5));
25
23
  float segmentLengthScreenRounded = flooredRepetitions * patternLength;
26
24
 
27
- ${r.stippleRequiresStretchMeasure?t`return vec3(0.0, segmentLengthScreenRounded, repetitions / flooredRepetitions);`:t`return vec2(0.0, segmentLengthScreenRounded);`}
25
+ ${r.stippleRequiresStretchMeasure?t`
26
+ float stretch = repetitions / flooredRepetitions;
27
+
28
+ // We need to impose a lower bound on the stretch factor to prevent the dots from merging together when there is only 1 repetition.
29
+ // 0.75 is the lowest possible stretch value for flooredRepetitions > 1, so it makes sense as lower bound.
30
+ vStipplePatternStretch = max(0.75, stretch);`:""}
31
+
32
+ return vec2(0.0, segmentLengthScreenRounded);
28
33
  }
29
- `),i.vertex.code.add(t`
30
- ${r.stippleRequiresStretchMeasure?t`return vec3(startPseudoScreen, startPseudoScreen + segmentLengthPseudoScreen, 1.0)`:t`return vec2(startPseudoScreen, startPseudoScreen + segmentLengthPseudoScreen)`};
31
- }
32
- `),i.fragment.uniforms.add("stipplePatternTexture","sampler2D"),i.fragment.uniforms.add("stipplePatternSDFNormalizer","float"),i.fragment.uniforms.add("stipplePatternTextureSize","float"),i.fragment.uniforms.add("stipplePatternPixelSizeInv","float"),r.stippleOffColorEnabled&&i.fragment.uniforms.add("stippleOffColor","vec4"),i.fragment.code.add(t`float padTexture(float u) {
34
+ `),i.vertex.code.add(t`return vec2(startPseudoScreen, startPseudoScreen + segmentLengthPseudoScreen);
35
+ }`),i.fragment.uniforms.add("stipplePatternTexture","sampler2D"),i.fragment.uniforms.add("stipplePatternSDFNormalizer","float"),i.fragment.uniforms.add("stipplePatternTextureSize","float"),i.fragment.uniforms.add("stipplePatternPixelSizeInv","float"),r.stippleOffColorEnabled&&i.fragment.uniforms.add("stippleOffColor","vec4"),i.fragment.code.add(t`float padTexture(float u) {
33
36
  return (u * stipplePatternTextureSize + 1.0)/(stipplePatternTextureSize + 2.0);
34
37
  }`),i.fragment.code.add(t`
35
38
  float getStippleSDF(out bool isClamped) {
@@ -45,7 +48,9 @@ return (u * stipplePatternTextureSize + 1.0)/(stipplePatternTextureSize + 2.0);
45
48
  u = padTexture(fract(u));
46
49
 
47
50
  float encodedSDF = rgba2float(texture2D(stipplePatternTexture, vec2(u, 0.5)));
48
- return (encodedSDF * 2.0 - 1.0) * stipplePatternSDFNormalizer;
51
+ float sdf = (encodedSDF * 2.0 - 1.0) * stipplePatternSDFNormalizer;
52
+
53
+ ${r.stippleRequiresStretchMeasure?t`return (sdf - 0.5) * vStipplePatternStretch + 0.5;`:t`return sdf;`}
49
54
  }
50
55
 
51
56
  float getStippleSDF() {
@@ -63,6 +68,6 @@ return (u * stipplePatternTextureSize + 1.0)/(stipplePatternTextureSize + 2.0);
63
68
  }
64
69
  `),r.stippleOffColorEnabled?i.fragment.code.add(t`#define discardByStippleAlpha(stippleAlpha, threshold) {}
65
70
  #define blendStipple(color, stippleAlpha) mix(color, stippleOffColor, stippleAlpha)`):i.fragment.code.add(t`#define discardByStippleAlpha(stippleAlpha, threshold) if (stippleAlpha < threshold) { discard; }
66
- #define blendStipple(color, stippleAlpha) vec4(color.rgb, color.a * stippleAlpha)`)}function a(e){e.fragment.code.add(t`float getStippleAlpha() { return 1.0; }
71
+ #define blendStipple(color, stippleAlpha) vec4(color.rgb, color.a * stippleAlpha)`)}function o(e){e.fragment.code.add(t`float getStippleAlpha() { return 1.0; }
67
72
  #define discardByStippleAlpha(_stippleAlpha_, _threshold_) {}
68
- #define blendStipple(color, _stippleAlpha_) color`)}const l=t.float(.4);export{i as LineStipple};
73
+ #define blendStipple(color, _stippleAlpha_) color`)}const a=t.float(.4);export{i as LineStipple};
@@ -2,7 +2,7 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.23/esri/copyright.txt for details.
4
4
  */
5
- import{PiUtils as o}from"../shading/PiUtils.glsl.js";import{glsl as t}from"../../shaderModules/interfaces.js";function a(a){a.fragment.uniforms.add("anchorPosition","vec3").add("anchorPositionCrossFade","vec3").add("fadeInOutFactor","float").add("cloudsHeight","float").add("rotationMatrixClouds","mat4").add("rotationMatrixCloudsCrossFade","mat4").add("radiusCurvatureCorrectionFactor","float").add("radius","float").add("cameraPosition","vec3").add("totalFadeInOut","float").add("crossFade","int").add("crossFadeAnchorFactor","float").add("cloudVariables","vec2"),a.include(o),a.fragment.code.add(t`vec3 intersectWithCloudLayer(vec3 dir, vec3 camPos, vec3 spherePos, float radiusReduction)
5
+ import{glsl as o}from"../../shaderModules/interfaces.js";function t(t){t.fragment.uniforms.add("anchorPosition","vec3").add("anchorPositionCrossFade","vec3").add("fadeInOutFactor","float").add("cloudsHeight","float").add("rotationMatrixClouds","mat4").add("rotationMatrixCloudsCrossFade","mat4").add("radiusCurvatureCorrectionFactor","float").add("radius","float").add("cameraPosition","vec3").add("totalFadeInOut","float").add("crossFade","int").add("crossFadeAnchorFactor","float").add("cloudVariables","vec2").add("cubeMap","samplerCube"),t.fragment.code.add(o`vec3 intersectWithCloudLayer(vec3 dir, vec3 camPos, vec3 spherePos, float radiusReduction)
6
6
  {
7
7
  vec3 dirAnchor = normalize(spherePos);
8
8
  vec3 sphereOriginOffset = dirAnchor * radiusReduction;
@@ -14,21 +14,19 @@ float pointIntDist = max(0.0, 0.5 *(-B + sqrt(det)));
14
14
  vec3 intersectionPont = camPos + dir * pointIntDist;
15
15
  intersectionPont = intersectionPont - spherePos;
16
16
  return intersectionPont;
17
- }`),a.fragment.code.add(t`vec3 correctForPlanetCurvature(vec3 dir)
17
+ }`),t.fragment.code.add(o`vec3 correctForPlanetCurvature(vec3 dir)
18
18
  {
19
19
  dir.z = dir.z*(1.-radiusCurvatureCorrectionFactor) + radiusCurvatureCorrectionFactor;
20
20
  return dir;
21
- }`),a.fragment.code.add(t`vec3 rotateDirectionToAnchorPoint(mat4 rotMat, vec3 inVec)
21
+ }`),t.fragment.code.add(o`vec3 rotateDirectionToAnchorPoint(mat4 rotMat, vec3 inVec)
22
22
  {
23
23
  return (rotMat * vec4(inVec, 0.0)).xyz;
24
- }`),a.fragment.code.add(t`const float SUNSET_TRANSITION_FACTOR = 0.3;
24
+ }`),t.fragment.code.add(o`const float SUNSET_TRANSITION_FACTOR = 0.3;
25
25
  const vec3 RIM_COLOR = vec3(0.28, 0.175, 0.035);
26
26
  const float RIM_SCATTERING_FACTOR = 140.0;
27
27
  const float BACKLIGHT_FACTOR = 0.2;
28
28
  const float BACKLIGHT_SCATTERING_FACTOR = 10.0;
29
29
  const float BACKLIGHT_TRANSITION_FACTOR = 0.3;
30
- const float GAMMA_SRGB = 2.1;
31
- const float INV_GAMMA_SRGB = 0.4761904;
32
30
  vec3 calculateCloudColor(vec3 worldSpaceRay, vec4 clouds)
33
31
  {
34
32
  float upDotLight = dot(normalize(cameraPosition), normalize(lightingMainDirection));
@@ -37,20 +35,20 @@ float sunsetTransition = clamp(pow(max(upDotLight, 0.0), SUNSET_TRANSITION_FACTO
37
35
  vec3 ambientLight = calculateAmbientIrradiance(normalize(cameraPosition), 0.0);
38
36
  vec3 mainLight = evaluateMainLighting(normalize(cameraPosition), 0.0);
39
37
  vec3 combinedLight = clamp((lightingMainIntensity + ambientLight )/PI, vec3(0.0), vec3(1.0));
40
- vec3 baseCloudColor = pow(combinedLight * pow(clouds.xyz, vec3(GAMMA_SRGB)), vec3(INV_GAMMA_SRGB));
38
+ vec3 baseCloudColor = pow(combinedLight * pow(clouds.xyz, vec3(GAMMA)), vec3(INV_GAMMA));
41
39
  float scatteringMod = max(clouds.a < 0.5 ? clouds.a / 0.5 : - clouds.a / 0.5 + 2.0, 0.0);
42
40
  float rimLightIntensity = 0.5 + 0.5 *pow(max(upDotLight, 0.0), 0.35);
43
41
  vec3 directSunScattering = RIM_COLOR * rimLightIntensity * pow(dirDotLight, RIM_SCATTERING_FACTOR) * scatteringMod;
44
42
  float additionalLight = BACKLIGHT_FACTOR * pow(dirDotLight, BACKLIGHT_SCATTERING_FACTOR) * (1. - pow(sunsetTransition, BACKLIGHT_TRANSITION_FACTOR)) ;
45
43
  return vec3(baseCloudColor * (1. + additionalLight) + directSunScattering);
46
- }`),a.fragment.code.add(t`vec4 getCloudData(vec3 rayDir)
44
+ }`),t.fragment.code.add(o`vec4 getCloudData(vec3 rayDir)
47
45
  {
48
46
  vec4 cloudData = textureCube(cubeMap, rayDir);
49
47
  float mu = dot(rayDir, vec3(0, 0, 1));
50
48
  return mix(vec4(vec3(clamp(1.0 - cloudVariables.y, 0.6, 1.0)), 0.0), cloudData, smoothstep(-0.01, mix(0.0, 0.075, cloudVariables.x), abs(mu)));
51
- }`),a.fragment.code.add(t`vec4 renderCloud(vec3 worldRay)
49
+ }`),t.fragment.code.add(o`vec4 renderCloud(vec3 worldRay, vec3 position)
52
50
  {
53
- vec3 intersectionPoint = intersectWithCloudLayer(normalize(worldRay), cameraPosition, anchorPosition, 0.0);
51
+ vec3 intersectionPoint = intersectWithCloudLayer(normalize(worldRay), position, anchorPosition, 0.0);
54
52
  vec3 worldRayRotated = rotateDirectionToAnchorPoint(rotationMatrixClouds, normalize(intersectionPoint));
55
53
  vec3 worldRayRotatedCorrected = correctForPlanetCurvature(worldRayRotated);
56
54
  vec4 cloudData = getCloudData(worldRayRotatedCorrected);
@@ -59,14 +57,14 @@ if (length(cloudData.rgb) == 0.0) {
59
57
  totalTransmittance = 1.0;
60
58
  }
61
59
  return vec4(calculateCloudColor(normalize(-worldRay), cloudData), totalTransmittance);
62
- }`),a.fragment.code.add(t`vec4 renderCloudCrossFade(vec3 worldRay)
60
+ }`),t.fragment.code.add(o`vec4 renderCloudCrossFade(vec3 worldRay, vec3 position)
63
61
  {
64
- vec3 intersectionPoint = intersectWithCloudLayer(normalize(worldRay), cameraPosition, anchorPosition, 0.0);
62
+ vec3 intersectionPoint = intersectWithCloudLayer(normalize(worldRay), position, anchorPosition, 0.0);
65
63
  vec3 worldRayRotated = rotateDirectionToAnchorPoint(rotationMatrixClouds, normalize(intersectionPoint));
66
64
  vec3 worldRayRotatedCorrected = correctForPlanetCurvature(worldRayRotated);
67
65
  vec4 cloudData = getCloudData(worldRayRotatedCorrected);
68
66
  vec4 cloudColor = vec4(calculateCloudColor(normalize(-worldRay), cloudData), cloudData.a);
69
- intersectionPoint = intersectWithCloudLayer(normalize(worldRay), cameraPosition, anchorPositionCrossFade, 0.0);
67
+ intersectionPoint = intersectWithCloudLayer(normalize(worldRay), position, anchorPositionCrossFade, 0.0);
70
68
  worldRayRotated = rotateDirectionToAnchorPoint(rotationMatrixCloudsCrossFade, normalize(intersectionPoint));
71
69
  worldRayRotatedCorrected = correctForPlanetCurvature(worldRayRotated);
72
70
  cloudData = getCloudData(worldRayRotatedCorrected);
@@ -77,4 +75,4 @@ if (length(cloudColor.rgb) == 0.0) {
77
75
  totalTransmittance = 1.0;
78
76
  }
79
77
  return vec4(cloudColor.rgb, totalTransmittance);
80
- }`)}export{a as CloudsParallaxShading};
78
+ }`)}export{t as CloudsParallaxShading};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.23/esri/copyright.txt for details.
4
4
  */
5
- import{isSome as t}from"../../../../core/maybe.js";import{generateUID as i}from"../../../../core/uid.js";import{I as r}from"../../../../chunks/mat4f64.js";import{f as o}from"../../../../chunks/vec3.js";import{c as s}from"../../../../chunks/vec3f64.js";import{projectBuffer as e}from"../../../../geometry/projection.js";import{VertexAttribute as a,PrimitiveType as n}from"./basicInterfaces.js";import{Geometry as h}from"./Geometry.js";import{fromValues as c}from"./localOrigin.js";import{Object3D as m}from"./Object3D.js";import{WebGLLayer as d}from"./WebGLLayer.js";import{RibbonLineMaterial as g}from"../materials/RibbonLineMaterial.js";class f{constructor(t,r=125e4){this._originSR=t,this._gridSize=r,this._origins=new Map,this._objects=new Map,this._rootOriginId="root/"+i()}getOrigin(i){const r=this._origins.get(this._rootOriginId);if(null==r){if(t(_))return this._origins.set(this._rootOriginId,c(_[0],_[1],_[2],this._rootOriginId)),this.getOrigin(i);const r=c(i[0]+Math.random()-.5,i[1]+Math.random()-.5,i[2]+Math.random()-.5,this._rootOriginId);return this._origins.set(this._rootOriginId,r),r}const s=this._gridSize,e=Math.round(i[0]/s),a=Math.round(i[1]/s),n=Math.round(i[2]/s),h=`${e}/${a}/${n}`;let m=this._origins.get(h);const d=.5*s;if(o(j,i,r.vec3),j[0]=Math.abs(j[0]),j[1]=Math.abs(j[1]),j[2]=Math.abs(j[2]),j[0]<d&&j[1]<d&&j[2]<d){if(m){const t=Math.max(...j);o(j,i,m.vec3),j[0]=Math.abs(j[0]),j[1]=Math.abs(j[1]),j[2]=Math.abs(j[2]);if(Math.max(...j)<t)return m}return r}return m||(m=c(e*s,a*s,n*s,h),this._origins.set(h,m)),m}_drawOriginBox(t,i=[1,1,0,1]){const o=window.view,s=o._stage,c=i.toString();if(!this._objects.has(c)){this._material=new g({width:2,color:i}),s.add(this._material);const t=new d({isPickable:!1}),r=new m({castShadow:!1});s.add(r),t.add(r),s.add(t),this._objects.set(c,r)}const f=this._objects.get(c),_=[0,1,5,4,0,2,1,7,6,2,0,1,3,7,5,4,6,2,0],l=_.length,j=new Array(3*l),u=new Uint16Array(2*(l-1)),b=.5*this._gridSize;for(let r=0;r<l;r++)j[3*r+0]=t[0]+(1&_[r]?b:-b),j[3*r+1]=t[1]+(2&_[r]?b:-b),j[3*r+2]=t[2]+(4&_[r]?b:-b),r>0&&(u[2*r+0]=r-1,u[2*r+1]=r);e(j,this._originSR,0,j,o.renderSpatialReference,0,l);const p=new h([[a.POSITION,{size:3,data:j,exclusive:!0}]],[[a.POSITION,u]],n.Line);s.add(p),f.addGeometry(p,this._material,r)}}let _=null;function l(t){_=t}const j=s();export{f as GridLocalOriginFactory,l as default,l as setTestRootOrigin};
5
+ import{isSome as t}from"../../../../core/maybe.js";import{generateUID as i}from"../../../../core/uid.js";import{I as r}from"../../../../chunks/mat4f64.js";import{f as o}from"../../../../chunks/vec3.js";import{c as s}from"../../../../chunks/vec3f64.js";import{projectBuffer as e}from"../../../../geometry/projection.js";import{VertexAttribute as a,PrimitiveType as n}from"./basicInterfaces.js";import{Geometry as h}from"./Geometry.js";import{fromValues as c}from"./LocalOriginFactory.js";import{Object3D as m}from"./Object3D.js";import{WebGLLayer as d}from"./WebGLLayer.js";import{RibbonLineMaterial as g}from"../materials/RibbonLineMaterial.js";class f{constructor(t,r=125e4){this._originSR=t,this._gridSize=r,this._origins=new Map,this._objects=new Map,this._rootOriginId="root/"+i()}getOrigin(i){const r=this._origins.get(this._rootOriginId);if(null==r){if(t(_))return this._origins.set(this._rootOriginId,c(_[0],_[1],_[2],this._rootOriginId)),this.getOrigin(i);const r=c(i[0]+Math.random()-.5,i[1]+Math.random()-.5,i[2]+Math.random()-.5,this._rootOriginId);return this._origins.set(this._rootOriginId,r),r}const s=this._gridSize,e=Math.round(i[0]/s),a=Math.round(i[1]/s),n=Math.round(i[2]/s),h=`${e}/${a}/${n}`;let m=this._origins.get(h);const d=.5*s;if(o(j,i,r.vec3),j[0]=Math.abs(j[0]),j[1]=Math.abs(j[1]),j[2]=Math.abs(j[2]),j[0]<d&&j[1]<d&&j[2]<d){if(m){const t=Math.max(...j);o(j,i,m.vec3),j[0]=Math.abs(j[0]),j[1]=Math.abs(j[1]),j[2]=Math.abs(j[2]);if(Math.max(...j)<t)return m}return r}return m||(m=c(e*s,a*s,n*s,h),this._origins.set(h,m)),m}_drawOriginBox(t,i=[1,1,0,1]){const o=window.view,s=o._stage,c=i.toString();if(!this._objects.has(c)){this._material=new g({width:2,color:i}),s.add(this._material);const t=new d({isPickable:!1}),r=new m({castShadow:!1});s.add(r),t.add(r),s.add(t),this._objects.set(c,r)}const f=this._objects.get(c),_=[0,1,5,4,0,2,1,7,6,2,0,1,3,7,5,4,6,2,0],l=_.length,j=new Array(3*l),u=new Uint16Array(2*(l-1)),b=.5*this._gridSize;for(let r=0;r<l;r++)j[3*r+0]=t[0]+(1&_[r]?b:-b),j[3*r+1]=t[1]+(2&_[r]?b:-b),j[3*r+2]=t[2]+(4&_[r]?b:-b),r>0&&(u[2*r+0]=r-1,u[2*r+1]=r);e(j,this._originSR,0,j,o.renderSpatialReference,0,l);const p=new h([[a.POSITION,{size:3,data:j,exclusive:!0}]],[[a.POSITION,u]],n.Line);s.add(p),f.addGeometry(p,this._material,r)}}let _=null;function l(t){_=t}const j=s();export{f as GridLocalOriginFactory,l as default,l as setTestRootOrigin};
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/4.23/esri/copyright.txt for details.
4
+ */
5
+ class s{constructor(){this.visible=!0}}export{s as InstanceParameters};