@arcgis/core 4.28.0-next.20230821 → 4.28.0-next.20230823
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Basemap.js +1 -1
- package/WebScene.js +1 -1
- package/arcade/functions/geomasync.js +1 -1
- package/arcade/portalUtils.js +1 -1
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/0746319459dbcd3ab6f7.js +1 -0
- package/assets/esri/core/workers/chunks/{587437526ea77f764986.js → 0759d4ab9695096d2bbd.js} +1 -1
- package/assets/esri/core/workers/chunks/{d0c4367a197b193e95d4.js → 10c014a6d8767ae8a666.js} +1 -1
- package/assets/esri/core/workers/chunks/{5ffabd1a90c5b08109aa.js → 196937631ac20795e0ae.js} +1 -1
- package/assets/esri/core/workers/chunks/{e05b54a0b834b4e4268e.js → 1c2b69dfcd0db58150e2.js} +1 -1
- package/assets/esri/core/workers/chunks/1c2f7c95825fdac790be.js +1 -0
- package/assets/esri/core/workers/chunks/1f9c80815f90fd0886d7.js +1 -0
- package/assets/esri/core/workers/chunks/217910f88fe2c03e6bdd.js +1 -0
- package/assets/esri/core/workers/chunks/238966b2fc6cc3dfcc05.js +1 -0
- package/assets/esri/core/workers/chunks/2c9f709d64954b3c1650.js +1 -0
- package/assets/esri/core/workers/chunks/35faede04d4539aab6e8.js +1 -0
- package/assets/esri/core/workers/chunks/3e3edcbacf8eaf275b97.js +1 -0
- package/assets/esri/core/workers/chunks/{b78dc6cbe14e5817b4d9.js → 4968018bc693c053fdd2.js} +1 -1
- package/assets/esri/core/workers/chunks/{c35b850fbfcb28133235.js → 49a1ba3e7ea204adeddb.js} +1 -1
- package/assets/esri/core/workers/chunks/{12b8fe0374fa9ab4ca09.js → 49cf3ae224f56f45f65b.js} +1 -1
- package/assets/esri/core/workers/chunks/5330040eeacc9c03fbdb.js +1 -0
- package/assets/esri/core/workers/chunks/54aaa21144431b29b6ed.js +1 -0
- package/assets/esri/core/workers/chunks/{6c40f16e6d10321295d8.js → 5b13d28cf5efc312a21c.js} +1 -1
- package/assets/esri/core/workers/chunks/{d6c96a20e9640b433719.js → 67c6618339d323460d45.js} +57 -57
- package/assets/esri/core/workers/chunks/{dd86f43505b636eb41c0.js → 7714c16f9c8860efd461.js} +1 -1
- package/assets/esri/core/workers/chunks/{752d389c7bdcbe7004dc.js → 83e0af5522a672c2c73b.js} +1 -1
- package/assets/esri/core/workers/chunks/{873111ddf4813cdd4903.js → 872d0d4bf364be43a92e.js} +1 -1
- package/assets/esri/core/workers/chunks/8a784ddd5607f1ddbb5b.js +1 -0
- package/assets/esri/core/workers/chunks/{0cad2b991d0d0fd07846.js → 8c9c4162617f31e3f5f2.js} +1 -1
- package/assets/esri/core/workers/chunks/8db3ee2931be5cca3f5e.js +1 -0
- package/assets/esri/core/workers/chunks/{fd3920159ab9748402a2.js → 92350664e2719a9e860e.js} +1 -1
- package/assets/esri/core/workers/chunks/{ff755962fd1c771f5be5.js → a3b461174984a1cb92b3.js} +1 -1
- package/assets/esri/core/workers/chunks/{dd4c6d000222798a0317.js → a47aff9c97c5ce52d0dc.js} +1 -1
- package/assets/esri/core/workers/chunks/{028534e3d4e13c9ea687.js → a645f08a7678f2ca037c.js} +1 -1
- package/assets/esri/core/workers/chunks/{d9fe6cfbc9ad2920ca9c.js → aca45e54ec925002df9a.js} +1 -1
- package/assets/esri/core/workers/chunks/{40ff0e7c948615b8bfc0.js → b07d32a60307d04391fc.js} +1 -1
- package/assets/esri/core/workers/chunks/{fdc703330bf194a48e0e.js → b086e798f43dacb0175f.js} +1 -1
- package/assets/esri/core/workers/chunks/bd0b9647880cbbec95e2.js +1 -0
- package/assets/esri/core/workers/chunks/{ab420bacdd63ee8fbd8b.js → bf9b5e2803a5444bd944.js} +1 -1
- package/assets/esri/core/workers/chunks/{c58ca2685eb7e559f428.js → c0a2a737a3085690afc5.js} +1 -1
- package/assets/esri/core/workers/chunks/{e04e8af4224fff8c3ec3.js → c34615c0b7ad83d1ad24.js} +1 -1
- package/assets/esri/core/workers/chunks/{05ab09713d599687afa3.js → d105ee2e394e2c48303c.js} +1 -1
- package/assets/esri/core/workers/chunks/{ef03b78659c72de93076.js → d183144fa504064d23d3.js} +1 -1
- package/assets/esri/core/workers/chunks/{4f5207abb034375927c7.js → d8495c6dcd4d9bec8dd6.js} +1 -1
- package/assets/esri/core/workers/chunks/{1a485d63330f5e7fe4e3.js → dba61fa8cbb57dde54b2.js} +1 -1
- package/assets/esri/core/workers/chunks/{8a306e3aa210861b8c17.js → deb0bd575c63d9dbcde5.js} +1 -1
- package/assets/esri/core/workers/chunks/{d0a2f9ca338b60f2ba2a.js → e302fe771d92ccf945a3.js} +1 -1
- package/assets/esri/core/workers/chunks/{cb0a5bc6deaa98026bb5.js → ed0dea88b2865fc6e06b.js} +1 -1
- package/assets/esri/core/workers/chunks/ed733eea5d065131b159.js +1 -0
- package/assets/esri/core/workers/chunks/{1c51c52fb2233153d7ae.js → f3ec53ee9567bb7e4d2f.js} +1 -1
- package/assets/esri/core/workers/chunks/{4922a0fed7cbc6895882.js → f701a5afa1b730c51a49.js} +1 -1
- package/assets/esri/t9n/common.json +1 -1
- package/assets/esri/t9n/common_ar.json +1 -1
- package/assets/esri/t9n/common_bg.json +1 -1
- package/assets/esri/t9n/common_ca.json +1 -1
- package/assets/esri/t9n/common_cs.json +1 -1
- package/assets/esri/t9n/common_da.json +1 -1
- package/assets/esri/t9n/common_de.json +1 -1
- package/assets/esri/t9n/common_el.json +1 -1
- package/assets/esri/t9n/common_en.json +1 -1
- package/assets/esri/t9n/common_es.json +1 -1
- package/assets/esri/t9n/common_et.json +1 -1
- package/assets/esri/t9n/common_fi.json +1 -1
- package/assets/esri/t9n/common_fr.json +1 -1
- package/assets/esri/t9n/common_he.json +1 -1
- package/assets/esri/t9n/common_hr.json +1 -1
- package/assets/esri/t9n/common_hu.json +1 -1
- package/assets/esri/t9n/common_id.json +1 -1
- package/assets/esri/t9n/common_it.json +1 -1
- package/assets/esri/t9n/common_ja.json +1 -1
- package/assets/esri/t9n/common_ko.json +1 -1
- package/assets/esri/t9n/common_lt.json +1 -1
- package/assets/esri/t9n/common_lv.json +1 -1
- package/assets/esri/t9n/common_nb.json +1 -1
- package/assets/esri/t9n/common_nl.json +1 -1
- package/assets/esri/t9n/common_pl.json +1 -1
- package/assets/esri/t9n/common_pt-BR.json +1 -1
- package/assets/esri/t9n/common_pt-PT.json +1 -1
- package/assets/esri/t9n/common_ro.json +1 -1
- package/assets/esri/t9n/common_ru.json +1 -1
- package/assets/esri/t9n/common_sk.json +1 -1
- package/assets/esri/t9n/common_sl.json +1 -1
- package/assets/esri/t9n/common_sr.json +1 -1
- package/assets/esri/t9n/common_sv.json +1 -1
- package/assets/esri/t9n/common_th.json +1 -1
- package/assets/esri/t9n/common_tr.json +1 -1
- package/assets/esri/t9n/common_uk.json +1 -1
- package/assets/esri/t9n/common_vi.json +1 -1
- package/assets/esri/t9n/common_zh-CN.json +1 -1
- package/assets/esri/t9n/common_zh-TW.json +1 -1
- package/assets/esri/themes/base/widgets/_OrientedImageryViewer.scss +10 -17
- package/assets/esri/themes/dark/main.css +1 -1
- package/assets/esri/themes/light/main.css +1 -1
- package/assets/esri/themes/light/view.css +1 -1
- package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_ar.json +1 -0
- package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_bg.json +1 -0
- package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_bs.json +1 -0
- package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_ca.json +1 -0
- package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_cs.json +1 -0
- package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_da.json +1 -0
- package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_de.json +1 -0
- package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_el.json +1 -0
- package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_es.json +1 -0
- package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_et.json +1 -0
- package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_fi.json +1 -0
- package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_fr.json +1 -0
- package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_he.json +1 -0
- package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_hr.json +1 -0
- package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_hu.json +1 -0
- package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_id.json +1 -0
- package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_it.json +1 -0
- package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_ja.json +1 -0
- package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_ko.json +1 -0
- package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_lt.json +1 -0
- package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_lv.json +1 -0
- package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_nb.json +1 -0
- package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_nl.json +1 -0
- package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_pl.json +1 -0
- package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_pt-BR.json +1 -0
- package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_pt-PT.json +1 -0
- package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_ro.json +1 -0
- package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_ru.json +1 -0
- package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_sk.json +1 -0
- package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_sl.json +1 -0
- package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_sr.json +1 -0
- package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_sv.json +1 -0
- package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_th.json +1 -0
- package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_tr.json +1 -0
- package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_uk.json +1 -0
- package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_vi.json +1 -0
- package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_zh-CN.json +1 -0
- package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_zh-HK.json +1 -0
- package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_zh-TW.json +1 -0
- package/assets/esri/widgets/Editor/t9n/Editor_ar.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_bg.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_bs.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_ca.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_cs.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_da.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_de.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_el.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_es.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_et.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_fi.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_fr.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_he.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_hr.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_hu.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_id.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_it.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_ja.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_ko.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_lt.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_lv.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_nb.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_nl.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_pl.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_pt-BR.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_pt-PT.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_ro.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_ru.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_sk.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_sl.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_sr.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_sv.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_th.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_tr.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_uk.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_vi.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_zh-CN.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_zh-HK.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_zh-TW.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_ar.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_bg.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_bs.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_ca.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_cs.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_da.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_de.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_el.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_es.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_et.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_fi.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_fr.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_he.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_hr.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_hu.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_id.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_it.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_ja.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_ko.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_lt.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_lv.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_nb.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_nl.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_pl.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_pt-BR.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_pt-PT.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_ro.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_ru.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_sk.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_sl.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_sr.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_sv.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_th.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_tr.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_uk.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_vi.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_zh-CN.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_zh-HK.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_zh-TW.json +1 -1
- package/chunks/ChapmanAtmosphere.glsl.js +1 -1
- package/chunks/Clouds.glsl.js +1 -1
- package/chunks/CloudsComposition.glsl.js +2 -2
- package/chunks/ComponentShader.glsl.js +36 -36
- package/chunks/Fog.glsl.js +1 -1
- package/chunks/LaserlinePath.glsl.js +1 -1
- package/chunks/Laserlines.glsl.js +1 -1
- package/chunks/LineSeries.js +1 -1
- package/chunks/NativeLine.glsl.js +8 -20
- package/chunks/PointRenderer.glsl.js +1 -1
- package/chunks/Precipitation.glsl.js +2 -2
- package/chunks/SSAOBlur.glsl.js +1 -1
- package/chunks/ShadowCastAccumulate.glsl.js +1 -1
- package/chunks/ShadowCastVisualize.glsl.js +2 -2
- package/chunks/ShadowHighlight.glsl.js +1 -1
- package/chunks/Stars.glsl.js +1 -1
- package/chunks/Terrain.glsl.js +35 -35
- package/chunks/TextureOnly.glsl.js +1 -1
- package/chunks/Theme.js +1 -1
- package/chunks/boundedPlane.js +1 -1
- package/chunks/cameraUtilsPlanar.js +1 -1
- package/chunks/cameraUtilsSpherical.js +1 -1
- package/chunks/chartUtilsAm5.js +1 -1
- package/chunks/mat3.js +1 -1
- package/chunks/mat3f64.js +1 -1
- package/chunks/mat4.js +1 -1
- package/chunks/mat4f64.js +1 -1
- package/chunks/quat.js +1 -1
- package/chunks/quat2.js +1 -1
- package/chunks/quatf64.js +1 -1
- package/chunks/sphere.js +1 -1
- package/chunks/terrainUtilsPlanar.js +1 -1
- package/chunks/vec3.js +1 -1
- package/chunks/vec3f64.js +1 -1
- package/chunks/vec4.js +1 -1
- package/chunks/vec4f64.js +1 -1
- package/core/VectorStack.js +1 -1
- package/core/accessorSupport/decorators/persistable.js +1 -1
- package/core/accessorSupport/testSupport.js +1 -1
- package/core/colorUtils.js +1 -1
- package/core/libs/gl-matrix-2/factories/mat3f64.js +1 -1
- package/core/libs/gl-matrix-2/factories/mat4f64.js +1 -1
- package/core/libs/gl-matrix-2/factories/quatf64.js +1 -1
- package/core/libs/gl-matrix-2/factories/vec3f64.js +1 -1
- package/core/libs/gl-matrix-2/factories/vec4f64.js +1 -1
- package/core/libs/gl-matrix-2/math/mat3.js +1 -1
- package/core/libs/gl-matrix-2/math/mat4.js +1 -1
- package/core/libs/gl-matrix-2/math/vec3.js +1 -1
- package/core/libs/gl-matrix-2/math/vec4.js +1 -1
- package/core/mathUtils.js +1 -1
- package/core/perspectiveUtils.js +1 -1
- package/form/elements/inputs/DatePickerInput.d.ts +4 -0
- package/form/elements/inputs/DatePickerInput.js +5 -0
- package/form/elements/inputs/DateTimeOffsetPickerInput.d.ts +4 -0
- package/form/elements/inputs/DateTimeOffsetPickerInput.js +5 -0
- package/form/elements/inputs/TimePickerInput.d.ts +4 -0
- package/form/elements/inputs/TimePickerInput.js +5 -0
- package/form/elements/support/inputs.js +1 -1
- package/geometry/projection/computeTranslationToOriginAndRotation.js +1 -1
- package/geometry/projection/projectDirection.js +1 -1
- package/geometry/support/MeshTransform.js +1 -1
- package/geometry/support/axisAngle.js +1 -1
- package/geometry/support/axisAngleDegrees.js +1 -1
- package/geometry/support/clipRay.js +1 -1
- package/geometry/support/coordinateSystem.js +1 -1
- package/geometry/support/frustum.js +1 -1
- package/geometry/support/lineSegment.js +1 -1
- package/geometry/support/meshUtils/centerAt.js +1 -1
- package/geometry/support/meshUtils/exporters/gltf/geometry.js +1 -1
- package/geometry/support/meshUtils/exporters/gltf/gltf.js +1 -1
- package/geometry/support/meshUtils/exporters/gltf/node.js +1 -1
- package/geometry/support/meshUtils/georeference.js +1 -1
- package/geometry/support/meshUtils/loadGLTFMesh.js +1 -1
- package/geometry/support/meshUtils/merge.js +1 -1
- package/geometry/support/meshUtils/offset.js +1 -1
- package/geometry/support/meshUtils/primitives.js +1 -1
- package/geometry/support/meshUtils/projection.js +1 -1
- package/geometry/support/meshUtils/rotate.js +1 -1
- package/geometry/support/meshUtils/scale.js +1 -1
- package/geometry/support/meshVertexSpaceUtils.js +1 -1
- package/geometry/support/plane.js +1 -1
- package/geometry/support/ray.js +1 -1
- package/geometry/support/triangle.js +1 -1
- package/geometry/support/vector.js +1 -1
- package/interfaces.d.ts +405 -7
- package/layers/VoxelWasmPerSceneView.js +1 -1
- package/layers/mixins/SceneService.js +1 -1
- package/layers/orientedImagery/core/ExposurePoint.js +1 -1
- package/layers/orientedImagery/core/coverageUtils.js +1 -1
- package/layers/orientedImagery/transformations/imageToGroundUtils.js +1 -1
- package/layers/orientedImagery/transformations/utils.js +1 -1
- package/layers/support/ControlPointsGeoreference.js +1 -1
- package/layers/support/ImageElement.js +1 -1
- package/layers/support/SceneFilter.js +1 -1
- package/layers/support/layerUtils.js +1 -1
- package/layers/video/VideoCameraSensorModel.js +1 -1
- package/layers/voxel/VoxelVolume.js +1 -1
- package/layers/voxel/voxelPlaneUtils.js +1 -1
- package/package.json +1 -1
- package/portal/support/resourceExtension.js +1 -1
- package/portal/support/resourceUtils.js +1 -1
- package/portal/support/utils.js +5 -0
- package/smartMapping/popup/support/utils.js +1 -1
- package/smartMapping/raster/renderers/classBreaks.js +1 -1
- package/smartMapping/raster/support/adapters/ImageryLayerAdapter.js +1 -1
- package/smartMapping/raster/support/adapters/ImageryTileLayerAdapter.js +1 -1
- package/smartMapping/raster/support/adapters/RasterLayerAdapter.js +1 -1
- package/support/revision.js +1 -1
- package/symbols/cim/CIMImageColorSubstitutionHelper.js +1 -1
- package/symbols/support/previewSymbol3D.js +1 -1
- package/views/2d/ViewState.js +1 -1
- package/views/2d/engine/flow/FlowDisplayObject.js +1 -1
- package/views/2d/engine/imagery/RasterVFTile.js +1 -1
- package/views/2d/engine/vectorTiles/VTLPainter3D.js +1 -1
- package/views/2d/engine/vectorTiles/VectorTile.js +1 -1
- package/views/2d/engine/vectorTiles/VectorTileRendererHelper3D.js +1 -1
- package/views/2d/engine/webgl/Overlay.js +1 -1
- package/views/2d/engine/webgl/OverlayContainer.js +1 -1
- package/views/2d/engine/webgl/TiledDisplayObject.js +1 -1
- package/views/2d/engine/webgl/WGLTile.js +1 -1
- package/views/2d/engine/webgl/WorldExtentClipRenderer.js +1 -1
- package/views/2d/engine/webgl/brushes/WGLBrushVTLSymbol.js +1 -1
- package/views/2d/interactive/editingTools/TransformTool.js +1 -1
- package/views/2d/interactive/editingTools/manipulations/RotateManipulation.js +1 -1
- package/views/2d/interactive/editingTools/manipulations/ScaleManipulation.js +1 -1
- package/views/2d/layers/graphics/GraphicBoundsRenderer.js +1 -1
- package/views/2d/layers/support/DebugOverlay.js +1 -1
- package/views/2d/navigation/actions/Pan.js +1 -1
- package/views/3d/analysis/AreaMeasurement/support/AreaMeasurementVisualization.js +1 -1
- package/views/3d/analysis/AreaMeasurement/support/MeasurementData.js +1 -1
- package/views/3d/analysis/Dimension/DimensionTool.js +1 -1
- package/views/3d/analysis/Dimension/LengthDimensionSubTool.js +1 -1
- package/views/3d/analysis/Dimension/lengthDimensionConstraintUtils.js +1 -1
- package/views/3d/analysis/Dimension/lengthDimensionManipulatorUtils.js +1 -1
- package/views/3d/analysis/Dimension/lengthDimensionUtils.js +1 -1
- package/views/3d/analysis/DirectLineMeasurement/DirectLineMeasurementController.js +1 -1
- package/views/3d/analysis/DirectLineMeasurement/DirectLineMeasurementVisualization.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightController.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightIntersectionResult.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightRayIntersector.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightVisualization.js +1 -1
- package/views/3d/analysis/Slice/SliceTool.js +1 -1
- package/views/3d/analysis/Slice/sliceToolUtils.js +1 -1
- package/views/3d/analysis/images/Factory.js +5 -0
- package/views/3d/analysis/support/measurementUtils.js +1 -1
- package/views/3d/analysis/support/viewUtils.js +1 -1
- package/views/3d/animation/pointToPoint/Animation.js +1 -1
- package/views/3d/animation/pointToPoint/Camera.js +1 -1
- package/views/3d/camera/constraintUtils/altitude.js +1 -1
- package/views/3d/camera/constraintUtils/common.js +1 -1
- package/views/3d/camera/constraintUtils/distance.js +1 -1
- package/views/3d/camera/constraintUtils/surfaceCollision.js +1 -1
- package/views/3d/camera/constraintUtils/tilt.js +1 -1
- package/views/3d/camera/intersectionUtils.js +1 -1
- package/views/3d/environment/ChapmanAtmosphere.js +1 -1
- package/views/3d/environment/CloudsGenerator.js +1 -1
- package/views/3d/environment/CloudsParameters.js +1 -1
- package/views/3d/environment/EnvironmentRenderer.js +1 -1
- package/views/3d/environment/Fog.js +1 -1
- package/views/3d/environment/LocalAtmosphere.js +1 -1
- package/views/3d/environment/MarsAtmosphere.js +1 -1
- package/views/3d/environment/SceneViewEnvironment.js +1 -1
- package/views/3d/environment/SceneViewEnvironmentManager.js +1 -1
- package/views/3d/environment/Stars.js +1 -1
- package/views/3d/environment/StarsTechnique.js +1 -1
- package/views/3d/externalRenderers.js +1 -1
- package/views/3d/glTF/internal/Resource.js +1 -1
- package/views/3d/interactive/Manipulator3D.js +1 -1
- package/views/3d/interactive/SnappingVisualizer3D.js +1 -1
- package/views/3d/interactive/editingTools/dragEventPipeline3D.js +1 -1
- package/views/3d/interactive/editingTools/lineGraphicVisualElementUtils.js +1 -1
- package/views/3d/interactive/editingTools/manipulations/MoveXYAxisManipulation.js +1 -1
- package/views/3d/interactive/editingTools/manipulations/MoveXYDiscManipulation.js +1 -1
- package/views/3d/interactive/editingTools/manipulations/MoveZManipulation.js +1 -1
- package/views/3d/interactive/editingTools/reshapeGraphic/ReshapeOperation.js +1 -1
- package/views/3d/interactive/editingTools/reshapeGraphic/edgeOffsetUtils.js +1 -1
- package/views/3d/interactive/editingTools/transformGraphic/ExtentTransformTool.js +1 -1
- package/views/3d/interactive/editingTools/transformGraphic/GraphicScaleRotateTransform.js +1 -1
- package/views/3d/interactive/editingTools/transformGraphic/ScaleRotateMeshAdapter.js +1 -1
- package/views/3d/interactive/editingTools/transformGraphic/undoRecords.js +1 -1
- package/views/3d/interactive/manipulatorUtils.js +1 -1
- package/views/3d/interactive/measurementTools/directLineMeasurement3D/DirectLineMeasurement3DView.js +1 -1
- package/views/3d/interactive/visualElements/ExtendedLineVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/LabelVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/LaserlineVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/LineVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/MarkerVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/MeasurementAreaVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/MeasurementArrowVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/Object3DVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/OutlineVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/ParallelLineVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/PointVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/RightAngleQuadVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/SlicePlaneVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/VerticesVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/VisualElementResources.js +1 -1
- package/views/3d/interactive/visualElements/support/Segment.js +1 -1
- package/views/3d/layers/DynamicLayerView3D.js +1 -1
- package/views/3d/layers/I3SMeshView3D.js +1 -1
- package/views/3d/layers/MediaLayerView3D.js +1 -1
- package/views/3d/layers/PointCloudLayerView3D.js +1 -1
- package/views/3d/layers/PointCloudWorker.js +1 -1
- package/views/3d/layers/VoxelLayerView3D.js +1 -1
- package/views/3d/layers/graphics/Deconflictor.js +1 -1
- package/views/3d/layers/graphics/ElevationAligners.js +1 -1
- package/views/3d/layers/graphics/Graphics3DCore.js +1 -1
- package/views/3d/layers/graphics/Graphics3DExtrudeSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DGraphic.js +1 -1
- package/views/3d/layers/graphics/Graphics3DIconSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DLodInstanceGraphicLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DMeshFillSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DMeshObject3DGraphicLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DObject3DGraphicLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DObjectSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DPathSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DTextSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/LabelParameters.js +1 -1
- package/views/3d/layers/graphics/elevationAlignmentUtils.js +1 -1
- package/views/3d/layers/graphics/graphicUtils.js +1 -1
- package/views/3d/layers/graphics/objectResourceUtils.js +1 -1
- package/views/3d/layers/graphics/wosrLoader.js +1 -1
- package/views/3d/layers/i3s/I3SClientNodeLoader.js +1 -1
- package/views/3d/layers/i3s/I3SElevationProvider.js +1 -1
- package/views/3d/layers/i3s/I3SGeometryUtil.js +1 -1
- package/views/3d/layers/i3s/I3SMeshViewFilter.js +1 -1
- package/views/3d/layers/i3s/I3SProjectionUtil.js +1 -1
- package/views/3d/layers/i3s/I3SUtil.js +1 -1
- package/views/3d/layers/i3s/I3SViewportQueries.js +1 -1
- package/views/3d/layers/i3s/LoDUtil.js +1 -1
- package/views/3d/layers/i3s/PointRenderer.js +1 -1
- package/views/3d/layers/support/FastSymbolUpdates.js +1 -1
- package/views/3d/layers/support/FeatureTileMeasurements3D.js +1 -1
- package/views/3d/layers/support/FeatureTileVisibility3D.js +1 -1
- package/views/3d/layers/support/I3STreeDebugger.js +1 -1
- package/views/3d/layers/support/StageLayerElevationProvider.js +1 -1
- package/views/3d/layers/support/edgeUtils.js +1 -1
- package/views/3d/layers/support/patternUtils.js +1 -1
- package/views/3d/layers/support/uvUtils.js +1 -1
- package/views/3d/state/Frustum.js +1 -1
- package/views/3d/state/NearFarHeuristic.js +1 -1
- package/views/3d/state/ViewStateManager.js +1 -1
- package/views/3d/state/controllers/GamepadKeyboardController.js +1 -1
- package/views/3d/state/controllers/RotateController.js +1 -1
- package/views/3d/state/controllers/global/PinchAndPanController.js +1 -1
- package/views/3d/state/controllers/global/ZoomController.js +1 -1
- package/views/3d/state/controllers/global/ZoomStepController.js +1 -1
- package/views/3d/state/controllers/local/PinchAndPanController.js +1 -1
- package/views/3d/state/controllers/local/ZoomController.js +1 -1
- package/views/3d/state/controllers/local/ZoomStepController.js +1 -1
- package/views/3d/state/controllers/momentum/PanPlanarMomentumController.js +1 -1
- package/views/3d/state/controllers/momentum/PanSphericalMomentumController.js +1 -1
- package/views/3d/state/controllers/momentum/RotationMomentumController.js +1 -1
- package/views/3d/state/controllers/momentum/ZoomPlanarMomentumController.js +1 -1
- package/views/3d/state/controllers/momentum/ZoomSphericalMomentumController.js +1 -1
- package/views/3d/state/helpers/SceneIntersectionHelper.js +1 -1
- package/views/3d/state/utils/navigationUtils.js +1 -1
- package/views/3d/state/utils/viewUtils.js +1 -1
- package/views/3d/support/FrustumExtentIntersection.js +1 -1
- package/views/3d/support/LaserLineRenderer.js +1 -1
- package/views/3d/support/LaserlinePathData.js +1 -1
- package/views/3d/support/RenderCoordsHelper.js +1 -1
- package/views/3d/support/StreamTextureCollection.js +1 -1
- package/views/3d/support/TextureCollection.js +1 -1
- package/views/3d/support/cameraUtils.js +1 -1
- package/views/3d/support/cameraUtilsInternal.js +1 -1
- package/views/3d/support/engineContent/sdfPrimitives.js +1 -1
- package/views/3d/support/geometryUtils/ray.js +1 -1
- package/views/3d/support/intersectionUtils.js +1 -1
- package/views/3d/support/mathUtils.js +1 -1
- package/views/3d/support/orientedBoundingBox.js +1 -1
- package/views/3d/support/pointsOfInterest/CameraOnSurface.js +1 -1
- package/views/3d/support/pointsOfInterest/CenterOnSurface.js +1 -1
- package/views/3d/support/pointsOfInterest/Focus.js +1 -1
- package/views/3d/support/pointsOfInterest/PointsOfInterest.js +1 -1
- package/views/3d/support/sunUtils.js +1 -1
- package/views/3d/support/viewpointUtils.js +1 -1
- package/views/3d/terrain/Overlay.js +1 -1
- package/views/3d/terrain/OverlayContent.js +5 -0
- package/views/3d/terrain/OverlayManager.js +1 -1
- package/views/3d/terrain/OverlayRenderTarget.js +1 -1
- package/views/3d/terrain/OverlayRenderer.js +1 -1
- package/views/3d/terrain/PatchGeometry.js +1 -1
- package/views/3d/terrain/PatchRenderData.js +1 -1
- package/views/3d/terrain/SphericalPatch.js +1 -1
- package/views/3d/terrain/TerrainRenderer.js +1 -1
- package/views/3d/terrain/TerrainSurface.js +1 -1
- package/views/3d/terrain/TextureReference.js +1 -1
- package/views/3d/terrain/Tile.js +1 -1
- package/views/3d/terrain/TileCompositor.js +1 -1
- package/views/3d/terrain/TileOverlayData.js +1 -1
- package/views/3d/terrain/TileRenderInfo.js +1 -1
- package/views/3d/terrain/interfaces.js +1 -1
- package/views/3d/terrain/support/MultiSizeFramebuffer.js +1 -1
- package/views/3d/webgl-engine/Stage.js +1 -1
- package/views/3d/webgl-engine/collections/Component/ComponentObjectCollection.js +1 -1
- package/views/3d/webgl-engine/collections/Component/DepthRange.js +1 -1
- package/views/3d/webgl-engine/collections/Component/Material/ComponentMaterial.js +1 -1
- package/views/3d/webgl-engine/collections/Component/Material/shader/ComponentShader.glsl.js +1 -1
- package/views/3d/webgl-engine/core/renderPasses/RenderPassManager.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/InstancedDoublePrecision.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexNormal.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexPosition.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlight.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js +32 -53
- package/views/3d/webgl-engine/core/shaderLibrary/terrain/Overlay.glsl.js +6 -6
- package/views/3d/webgl-engine/core/shaderLibrary/terrain/Terrain.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/terrain/TerrainTexture.glsl.js +9 -9
- package/views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js +1 -1
- package/views/3d/webgl-engine/core/util/TwoVectorPosition.js +1 -1
- package/views/3d/webgl-engine/effects/highlight/HighlightPassParameters.js +1 -1
- package/views/3d/webgl-engine/effects/highlight/ShadowHighlight.js +1 -1
- package/views/3d/webgl-engine/effects/highlight/ShadowHighlightTechnique.js +1 -1
- package/views/3d/webgl-engine/lib/BindParameters.js +1 -1
- package/views/3d/webgl-engine/lib/BoundingInfo.js +1 -1
- package/views/3d/webgl-engine/lib/Camera.js +1 -1
- package/views/3d/webgl-engine/lib/CascadeCamera.js +1 -1
- package/views/3d/webgl-engine/lib/ContentObject.js +1 -1
- package/views/3d/webgl-engine/lib/GLMaterialRepository.js +1 -1
- package/views/3d/webgl-engine/lib/GLTextureMaterial.js +1 -1
- package/views/3d/webgl-engine/lib/Geometry.js +1 -1
- package/views/3d/webgl-engine/lib/GeometryUtil.js +1 -1
- package/views/3d/webgl-engine/lib/GridLocalOriginFactory.js +1 -1
- package/views/3d/webgl-engine/lib/ITexture.js +5 -0
- package/views/3d/webgl-engine/lib/Intersector.js +1 -1
- package/views/3d/webgl-engine/lib/IntersectorTarget.js +1 -1
- package/views/3d/webgl-engine/lib/LocalOriginManager.js +1 -1
- package/views/3d/webgl-engine/lib/Object3D.js +1 -1
- package/views/3d/webgl-engine/lib/ObjectAndLayerIdRenderHelper.js +1 -1
- package/views/3d/webgl-engine/lib/Octree.js +1 -1
- package/views/3d/webgl-engine/lib/Path.js +1 -1
- package/views/3d/webgl-engine/lib/PathExtruder.js +1 -1
- package/views/3d/webgl-engine/lib/PathGeometryData.js +1 -1
- package/views/3d/webgl-engine/lib/PathVertex.js +1 -1
- package/views/3d/webgl-engine/lib/RenderGeometry.js +1 -1
- package/views/3d/webgl-engine/lib/Renderer.js +1 -1
- package/views/3d/webgl-engine/lib/ShadowAccumulator.js +1 -1
- package/views/3d/webgl-engine/lib/ShadowCastRenderer.js +1 -1
- package/views/3d/webgl-engine/lib/ShadowMap.js +1 -1
- package/views/3d/webgl-engine/lib/TextTextureAtlas.js +1 -1
- package/views/3d/webgl-engine/lib/Texture.js +1 -1
- package/views/3d/webgl-engine/lib/TextureRepository.js +1 -1
- package/views/3d/webgl-engine/lib/depthRangeUtils.js +1 -1
- package/views/3d/webgl-engine/lib/edgeRendering/EdgeRenderer.js +1 -1
- package/views/3d/webgl-engine/lib/edgeRendering/EdgeShaderParameters.js +1 -1
- package/views/3d/webgl-engine/lib/edgeRendering/EdgeView.js +1 -1
- package/views/3d/webgl-engine/lib/edgeRendering/edgeBufferWriters.js +1 -1
- package/views/3d/webgl-engine/lib/edgeRendering/edgePreprocessing.js +1 -1
- package/views/3d/webgl-engine/lib/geometryDataUtils.js +1 -1
- package/views/3d/webgl-engine/lib/intersectorUtils.js +1 -1
- package/views/3d/webgl-engine/lib/lodRendering/InstanceData.js +1 -1
- package/views/3d/webgl-engine/lib/lodRendering/InstanceOctree.js +1 -1
- package/views/3d/webgl-engine/lib/lodRendering/LodRenderer.js +1 -1
- package/views/3d/webgl-engine/lib/octreeUtils.js +1 -1
- package/views/3d/webgl-engine/lib/pathGeometryUtils.js +1 -1
- package/views/3d/webgl-engine/lib/verticalOffsetUtils.js +1 -1
- package/views/3d/webgl-engine/lighting/SceneLighting.js +1 -1
- package/views/3d/webgl-engine/lighting/SphericalHarmonics.js +1 -1
- package/views/3d/webgl-engine/materials/CheckerBoardMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/DefaultMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/HUDMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/LineDrawParameters.js +1 -1
- package/views/3d/webgl-engine/materials/LineMarkerMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/MeasurementArrowMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/NativeLineMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/PatternMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/ShadedColorMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/WaterMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/internal/MaterialUtil.js +1 -1
- package/views/3d/webgl-engine/materials/pbrUtils.js +1 -1
- package/views/3d/webgl-engine/materials/renderers/MergedRenderer.js +1 -1
- package/views/3d/webgl-engine/parts/Model.js +1 -1
- package/views/3d/webgl-engine/shaders/DefaultMaterialTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/NativeLine.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/NativeLineTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/NativeLineTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/shaders/RibbonLineTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/shaders/SlicePlaneMaterialTechnique.js +1 -1
- package/views/GroundView.js +1 -1
- package/views/SceneView.js +1 -1
- package/views/draw/DrawManipulator.js +1 -1
- package/views/draw/support/createUtils.js +1 -1
- package/views/draw/support/surfaceCoordinateSystems.js +1 -1
- package/views/interactive/GraphicManipulator.js +1 -1
- package/views/interactive/ManipulatorCollection.js +1 -1
- package/views/interactive/ToolViewManagerManipulatorState.js +1 -1
- package/views/interactive/coordinateHelper.js +1 -1
- package/views/interactive/dragEventPipeline.js +1 -1
- package/views/interactive/editGeometry/operations/OffsetEdgeVertex.js +1 -1
- package/views/interactive/editGeometry/support/editPlaneUtils.js +1 -1
- package/views/interactive/sketch/constraints.js +1 -1
- package/views/interactive/sketch/normalizedPoint.js +1 -1
- package/views/interactive/snapping/FeatureSnappingEngine.js +1 -1
- package/views/interactive/snapping/RightAngleSnapper.js +1 -1
- package/views/interactive/snapping/candidates/ParallelLineSnappingCandidate.js +1 -1
- package/views/interactive/snapping/candidates/RightAngleTriangleSnappingCandidate.js +1 -1
- package/views/interactive/snapping/featureSources/sceneLayerSource/SceneLayerSnappingSourceWorker.js +1 -1
- package/views/interactive/snapping/featureSources/sceneLayerSource/sceneLayerSnappingUtils.js +1 -1
- package/views/interactive/snapping/hints/IntersectionSnappingHint.js +1 -1
- package/views/interactive/snapping/hints/LineSnappingHint.js +1 -1
- package/views/interactive/snapping/hints/ParallelSnappingHint.js +1 -1
- package/views/interactive/snapping/hints/PointSnappingHint.js +1 -1
- package/views/interactive/snapping/hints/RightAngleSnappingHint.js +1 -1
- package/views/interactive/support/viewUtils.js +1 -1
- package/views/interactive/tooltip/constraintUtils.js +1 -1
- package/views/navigation/PanPlanarMomentumEstimator.js +1 -1
- package/views/navigation/PanSphericalMomentumEstimator.js +1 -1
- package/views/navigation/gamepadAndKeyboardUtils.js +1 -1
- package/views/support/euclideanAreaMeasurementUtils.js +1 -1
- package/views/support/euclideanLengthMeasurementUtils.js +1 -1
- package/views/support/geometry3dUtils.js +1 -1
- package/views/support/layerViewUtils.js +1 -1
- package/webdoc/support/saveUtils.js +1 -1
- package/webscene/Slide.js +1 -1
- package/widgets/Editor/CreateFeaturesWorkflow.js +1 -1
- package/widgets/Editor/CreateFeaturesWorkflowData.js +1 -1
- package/widgets/Editor/EditorViewModel.js +1 -1
- package/widgets/Editor/UpdateRecordWorkflow.js +1 -1
- package/widgets/Editor/UpdateRecordWorkflowData.js +1 -1
- package/widgets/Editor/UpdateWorkflow.js +1 -1
- package/widgets/Editor/workflowUtils.js +1 -1
- package/widgets/Editor.js +1 -1
- package/widgets/ElevationProfile/support/ProfileLines3D.js +1 -1
- package/widgets/ElevationProfile/support/constants.js +1 -1
- package/widgets/ElevationProfile/support/geometryUtils.js +1 -1
- package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
- package/widgets/OrientedImageryViewer.js +1 -1
- package/widgets/Sketch.js +1 -1
- package/widgets/smartMapping/BinaryColorSizeSlider/BinaryColorSizeSliderViewModel.d.ts +4 -0
- package/widgets/smartMapping/BinaryColorSizeSlider.d.ts +4 -0
- package/widgets/support/SelectionToolbar/SelectionToolbarViewModel.js +1 -1
- package/widgets/support/Selector2D/selectorUtils.js +1 -1
- package/widgets/support/templateUtils.js +5 -0
- package/assets/esri/core/workers/chunks/19857e5420cdf23c5f2e.js +0 -1
- package/assets/esri/core/workers/chunks/26289742b9280f0b5247.js +0 -1
- package/assets/esri/core/workers/chunks/46f6b77e586d78aeb75c.js +0 -1
- package/assets/esri/core/workers/chunks/4e39252f40bc57be9d12.js +0 -1
- package/assets/esri/core/workers/chunks/54513578f735d274a20e.js +0 -1
- package/assets/esri/core/workers/chunks/8dab0acdbbd5c282645a.js +0 -1
- package/assets/esri/core/workers/chunks/8e4b01a0cb8c8926f2b6.js +0 -1
- package/assets/esri/core/workers/chunks/a3a1d4f32e518e97d071.js +0 -1
- package/assets/esri/core/workers/chunks/b2d4a56197dcabdbae35.js +0 -1
- package/assets/esri/core/workers/chunks/be0565d923afba7ca300.js +0 -1
- package/assets/esri/core/workers/chunks/c99fa4189a114370b004.js +0 -1
- package/assets/esri/core/workers/chunks/daa79c14150c12d8bc3d.js +0 -1
- package/assets/esri/core/workers/chunks/ebd006fcd568a7731115.js +0 -1
- package/assets/esri/core/workers/chunks/f67388c4b7103fda6633.js +0 -1
- package/views/3d/analysis/Slice/images/Factory.js +0 -5
- /package/assets/esri/views/3d/analysis/{Slice/images → images}/heading-rotate.ts.svg +0 -0
- /package/assets/esri/views/3d/analysis/{Slice/images → images}/tilt-rotate.ts.svg +0 -0
- /package/views/3d/analysis/{Slice/images → images}/generateTextures.js +0 -0
- /package/views/3d/analysis/{Slice/images → images}/heading-rotate-svg.js +0 -0
- /package/views/3d/analysis/{Slice/images → images}/tilt-rotate-svg.js +0 -0
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../../../../chunks/tslib.es6.js";import"../../../../geometry.js";import{getFeatureId as t}from"../../../../analysis/featureReferenceUtils.js";import n from"../../../../core/Accessor.js";import{createTask as o}from"../../../../core/asyncUtils.js";import i from"../../../../core/Evented.js";import r from"../../../../core/Handles.js";import{handlesGroup as s,makeHandle as a}from"../../../../core/handleUtils.js";import l from"../../../../core/Logger.js";import{abortMaybe as u}from"../../../../core/maybe.js";import{ignoreAbortErrors as c}from"../../../../core/promiseUtils.js";import{initial as d}from"../../../../core/reactiveUtils.js";import{property as p}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as g}from"../../../../core/accessorSupport/decorators/subclass.js";import{i as h,h as m,g as v,n as f,b as _,e as b,j as y,A as C}from"../../../../chunks/vec3.js";import{c as I}from"../../../../chunks/vec3f64.js";import{UpdatingHandles as T}from"../../../../core/support/UpdatingHandles.js";import{projectOrLoad as P}from"../../../../geometry/projection.js";import{projectBoundingRect as O}from"../../../../geometry/projection/projectBoundingRect.js";import{empty as j,containsPointObject as S,intersectsSegment as R}from"../../../../geometry/support/aaBoundingRect.js";import{fromPoints as w,create as A}from"../../../../geometry/support/ray.js";import{zValueInAbsoluteHeightMode as E}from"../../../../support/elevationInfoUtils.js";import{LineOfSightAnalysisResult as H}from"../LineOfSightAnalysisResult.js";import{LineOfSightComputation as F}from"./LineOfSightComputation.js";import{LineOfSightRayIntersector as L}from"./LineOfSightRayIntersector.js";import{logFailedGeometryProjectionError as V}from"../support/projectionUtils.js";import{StoreResults as D}from"../../webgl-engine/lib/IntersectorInterfaces.js";import{toGraphic as x,hasLod as N,getIntersectedFeatureBSRadius as G}from"../../webgl-engine/lib/intersectorUtilsConversions.js";import{ImmediateTask as k,TaskPriority as z}from"../../../support/Scheduler.js";import U from"../../../../geometry/Point.js";const M="esri.views.3d.analysis.LineOfSight.LineOfSightController",Z=l.getLogger(M);let B=class extends(i.EventedMixin(n)){constructor(e){super(e),this.updateOnCameraChange=!0,this._observerGroundOffsetRenderSpace=0,this._effectiveObserverElevationMode="absolute-height",this._observerFeatureId=null,this._updatingHandles=new T,this._frameTask=k,this._computationHandles=new r,this._externalObserverUpdate=!0}initialize(){const e=this.view.resourceController?.scheduler;this._frameTask=e?e.registerTask(z.LINE_OF_SIGHT_TOOL):k,this._intersector=new L({view:this.view}),this.addHandles([this._connectObserver(),this._connectComputations(),this._connectTargets()])}destroy(){this._computationHandles.destroy(),this._computations.removeAll(),this._updatingHandles.destroy()}get updating(){return this._frameTask.updating||this._updatingHandles.updating}get priority(){return this._frameTask.priority}set priority(e){this._frameTask.priority=e}get _computations(){return this.analysisViewData.computations}get _elevationAlignedObserverPositionRenderSpace(){return this.analysisViewData.observerEngineLocation}set _elevationAlignedObserverPositionRenderSpace(e){this.analysisViewData.observerEngineLocation=e}get _screenPixelSize(){return this.view.state.camera.computeScreenPixelSizeAt(this._elevationAlignedObserverPositionRenderSpace)}_computeResult(e){const t=e.computation,{inputPoints:n,computationResult:o}=t,{observerAdjusted:i,targetAdjusted:r}=n,{start:s,end:a}=o;h(s,i),h(a,r);this._canCompute(t)?this._computeIntersection(e):this._interpolateIntersection(e),t.notifyResultChanged(),this.emit("result-changed",{target:e.computation.target,result:t.result})}_updateAdjustedPointsFromFeatures(e){const n=this.view,{sceneIntersectionHelper:o}=n,{inputPoints:i}=e,{observerAdjusted:r,observerFeatureId:s,targetFeatureId:a,targetAdjusted:l}=i;if(null==s&&null==a)return;const u=m(r,l),c=this._intersector.intersector,d=w(i.observer,i.target,K);c.options.store=D.ALL,o.intersectToolIntersectorRay(d,c);let p=null,g=null,h=null,v=null;for(const m of c.results.all){const e=x(m,this.view);if(null==e||null==m.distanceInRenderSpace)continue;const o=t(e);null!=o&&(null!=s&&o===s&&(null==p&&(p=this._getFeatureDistanceThreshold(m,n,u)),m.distanceInRenderSpace<p&&(h=m)),null!=a&&o===a&&(null==g&&(g=this._getFeatureDistanceThreshold(m,n,u)),null==v&&m.distanceInRenderSpace<u&&u-m.distanceInRenderSpace<g&&(v=m)))}null!=h&&h.getIntersectionPoint(r)&&(i.observerSurfaceNormal=h.getTransformedNormal(I())),null!=v&&v.getIntersectionPoint(l)&&(i.targetSurfaceNormal=v.getTransformedNormal(I()))}_getFeatureDistanceThreshold(e,t,n){if(N(e)){const o=G(e,t);if(null!=o)return Math.min(o*W,n)}return 1e-5*n}_adjustStartEndPositions(e){const t=this._screenPixelSize,n=this.view,{inputPoints:o}=e,{observer:i,observerSurfaceNormal:r,target:s,targetSurfaceNormal:a,observerAdjusted:l,targetAdjusted:u}=o,c=J;h(l,i),h(u,s),this._updateAdjustedPointsFromFeatures(e),null!=r?h(c,r):v(c,u,l);const d=t;f(c,c),_(c,c,Math.min(d,1)),b(l,l,c),null!=a?h(c,a):v(c,l,u);const p=n.state.camera.computeScreenPixelSizeAt(u);f(c,c),_(c,c,Math.min(p,1)),b(u,u,c)}_computeIntersection({computation:e,interpolationInfo:t}){const{view:n}=this,{sceneIntersectionHelper:o,renderCoordsHelper:i}=n;if(null==o)return;const r=this._intersector.intersector,{computationResult:s,inputPoints:a}=e,{observer:l,target:u}=a,{start:c,end:d}=s,p=w(c,d,K);r.options.store=D.MIN,o.intersectToolIntersectorRay(p,r);const g=r.results.min,m=s.intersection,v=J;let f=!0;if(null!=g&&g.getIntersectionPoint(m)){h(t.originalIntersection,m),h(t.originalObserver,c),h(t.originalTarget,d),i.fromRenderCoords(m,v,n.spatialReference);const e=1-y(d,u)/y(c,u);f=y(l,m)>=e*y(l,u)}const _=new U(v,n.spatialReference);{const{result:t,target:o}=e;null!=t?(t.target=o,t.intersectedGraphic=f?null:x(g,n),t.intersectedLocation=f?null:_,t.visible=f):e.result=new H({target:o,elevationAlignedTargetLocation:e.elevationAlignedTargetLocation,intersectedGraphic:f?null:x(g,n),intersectedLocation:f?null:_,visible:f})}s.isValid=a.isValid=!0,s.isTargetVisible=f}_interpolateIntersection({computation:e,interpolationInfo:t}){const{computationResult:n,inputPoints:o}=e,{start:i,end:r,intersection:s}=n,{originalIntersection:a,originalObserver:l,originalTarget:u}=t;if(h(s,a),o.isValid){const e=J,t=y(l,a)/y(l,u);C(e,i,l),_(e,e,1-t),b(s,s,e),C(e,r,u),_(e,e,t),b(s,s,e),n.isValid=!0}else e.result=null,n.isValid=!1,n.isTargetVisible=!1}_canCompute(e){const t=this.analysisViewData.elevationAlignedObserver,n=this.view.frustum;if(null==t||null==e.elevationAlignedTargetLocation||null==n)return!1;const{observerAdjusted:o,targetAdjusted:i}=e.inputPoints,r=n.intersectsPoint(o),s=n.intersectsPoint(i);return r&&s}_onObserverPositionChange(e,n,o,i,r){if(this._externalObserverUpdate=r,null==e)return this.analysisViewData.elevationAlignedObserver=null,void(this._observerFeatureId=null);if(null==n)return V(this.analysis,e.spatialReference,Z),void(this.analysisViewData.elevationAlignedObserver=null);const s=this._getEffectiveElevationInfo(n,o),{absoluteZ:a,elevation:l}=E(n.x,n.y,n.z,this.view.spatialReference,this.view,s),u=n.clone();u.z=a,this._effectiveObserverElevationMode=s.mode,this.analysisViewData.elevationAlignedObserver=u;const c=I();this.view.renderCoordsHelper.toRenderCoords(u,c),this._elevationAlignedObserverPositionRenderSpace=c,this._observerGroundOffsetRenderSpace=a-l,this._observerFeatureId=t(i),this.priority=z.LINE_OF_SIGHT_TOOL_INTERACTIVE}_onObserverRenderSpacePositionChangeForComputation(e,t,n,o,i){const{inputPoints:r}=e;switch(h(r.observer,t),r.observerFeatureId=i,r.observerSurfaceNormal=null,o){case"on-the-ground":case"relative-to-ground":{const e=this._intersector.updateFromGroundIntersection(r.observer,n,r.observer);null==r.observerFeatureId&&(r.observerSurfaceNormal=e)}}this._adjustStartEndPositions(e),e.notifyInputPointsChanged(),this.priority=z.LINE_OF_SIGHT_TOOL_INTERACTIVE}_onTargetPositionChange(e,n,o,i,r,s=!0){const a=e.inputPoints;if(s&&(a.isValid=!1),null==o)return null!=n&&V(this.analysis,n.spatialReference,Z),e.elevationAlignedTargetLocation=null,void e.notifyInputPointsChanged();const l=this._getEffectiveElevationInfo(o,i),{absoluteZ:u,elevation:c}=E(o.x,o.y,o.z,this.view.spatialReference,this.view,l),d=o.clone();switch(d.z=u,e.elevationAlignedTargetLocation=d,this.view.renderCoordsHelper.toRenderCoords(e.elevationAlignedTargetLocation,a.target),a.targetFeatureId=t(r),a.targetSurfaceNormal=null,l.mode){case"on-the-ground":case"relative-to-ground":{const e=this._intersector.updateFromGroundIntersection(a.target,u-c,a.target);null==a.targetFeatureId&&(a.targetSurfaceNormal=e)}}this._adjustStartEndPositions(e),e.notifyInputPointsChanged(),this.priority=z.LINE_OF_SIGHT_TOOL_INTERACTIVE}_connectComputationToTarget(e){return s([this._updatingHandles.add((()=>({computation:e,targetPosition:e.target.position,targetElevationInfo:e.target.elevationInfo,targetFeatureInfo:e.target.feature,projectedTargetPosition:P(e.target.position,this.view.spatialReference)})),(({computation:e,targetPosition:t,targetElevationInfo:n,targetFeatureInfo:o,projectedTargetPosition:i})=>{null==i.pending?this._onTargetPositionChange(e,t,i.geometry,n,o):this._updatingHandles.addPromise(i.pending)}),d)])}_connectComputationToObserver(e){return this._updatingHandles.add((()=>({computation:e,observer:this.analysisViewData.elevationAlignedObserver})),(({computation:e})=>{this._externalObserverUpdate&&(e.inputPoints.isValid=!1,e.notifyInputPointsChanged())}),d)}_connectComputationToRenderSpaceObserver(e){return this._updatingHandles.add((()=>({computation:e,observer:this._elevationAlignedObserverPositionRenderSpace,observerGroundOffset:this._observerGroundOffsetRenderSpace,observerElevationMode:this._effectiveObserverElevationMode,observerFeatureId:this._observerFeatureId})),(({computation:e,observer:t,observerGroundOffset:n,observerElevationMode:o,observerFeatureId:i})=>{this._onObserverRenderSpacePositionChangeForComputation(e,t,n,o,i)}),d)}_connectComputationToCamera(e){return this._updatingHandles.add((()=>({camera:this.view.state.camera,isDirty:this._isCameraDirty})),(({isDirty:t})=>{!this.updateOnCameraChange||e.inputPoints.isValid&&!t||e.notifyInputPointsChanged()}))}_connectComputationToSlicePlane(e){return this._updatingHandles.add((()=>this.view.slicePlane),(()=>{e.inputPoints.isValid=!1,e.notifyInputPointsChanged()}))}_connectComputationToElevation(e){const t=(n,o)=>{const i=this.analysis.observer,r=e.target;let s=null,a=null,l=null,u=null,c=null,d=null;if(null!=i&&null!=i.position){const e=P(i.position,this.view.spatialReference);if(null!=e.pending)return this._updatingHandles.addPromise(e.pending),void e.pending.finally((()=>t(n,o)));s=e.geometry,a=i.elevationInfo,l=i.feature}if(null!=r.position){const e=P(r.position,this.view.spatialReference);if(null!=e.pending)return this._updatingHandles.addPromise(e.pending),void e.pending.finally((()=>t(n,o)));u=e.geometry,c=r.elevationInfo,d=r.feature}null==s&&null==u||(O(n,o,Q,this.view.spatialReference),null!=s&&S(Q,s)&&this._onObserverPositionChange(null!=i?i.position:null,s,a,l,!1),null!=u&&S(Q,u)&&this._onTargetPositionChange(e,r.position,u,c,d,!1),null!=s&&null!=u&&R(Q,s,u)&&e.notifyInputPointsChanged())};return this.view.elevationProvider.on("elevation-change",(e=>t(e.extent,e.spatialReference)))}_connectComputationToTask(e){let t=null;const n={computation:e,interpolationInfo:{originalIntersection:I(),originalObserver:I(),originalTarget:I()}};return s([this._updatingHandles.add((()=>e.inputPoints),(()=>{t=u(t),t=o((async e=>{await c(this._frameTask.schedule((()=>this._computeResult(n)),e))}))}),{initial:!0,equals:()=>!1}),a((()=>t=u(t)))])}_connectComputation(e){const t=this._computationHandles;t.has(e)||t.add([this._connectComputationToTarget(e),this._connectComputationToObserver(e),this._connectComputationToRenderSpaceObserver(e),this._connectComputationToCamera(e),this._connectComputationToSlicePlane(e),this._connectComputationToElevation(e),this._connectComputationToTask(e)],e)}_disconnectComputation(e){this._computationHandles.remove(e)}_onComputationCollectionChange({added:e,removed:t}){for(const n of t)this._disconnectComputation(n);for(const n of e)this._connectComputation(n)}_onTargetCollectionChange({added:e,removed:t}){for(const n of t)this._removeTarget(n);for(const n of e)this._addTarget(n)}_onCursorTargetChange(e,t){null!=t&&this._removeTarget(t),null!=e&&this._addTarget(e)}_addTarget(e){this._computations.some((t=>t.target===e))||this._computations.add(new F({target:e}))}_removeTarget(e){const t=this._computations.findIndex((t=>t.target===e));this._computations.removeAt(t)}_connectObserver(){return s([this._updatingHandles.add((()=>({observerPosition:null!=this.analysis.observer?this.analysis.observer.position:null,projectedObserverPosition:P(null!=this.analysis.observer?this.analysis.observer.position:null,this.view.spatialReference),observerElevationInfo:null!=this.analysis.observer?this.analysis.observer.elevationInfo:null,observerFeatureInfo:null!=this.analysis.observer?this.analysis.observer.feature:null})),(({observerPosition:e,projectedObserverPosition:t,observerElevationInfo:n,observerFeatureInfo:o})=>{null==t.pending?this._onObserverPositionChange(e,t.geometry,n,o,!0):this._updatingHandles.addPromise(t.pending)}),d)])}_connectComputations(){return this._updatingHandles.addOnCollectionChange((()=>this._computations),(e=>this._onComputationCollectionChange(e)),{initial:!0,final:!0})}_connectTargets(){return s([this._updatingHandles.addOnCollectionChange((()=>this.analysis.targets),(e=>this._onTargetCollectionChange(e)),{initial:!0,final:!0}),this._updatingHandles.add((()=>this.analysisViewData.cursorTarget),((e,t)=>{this._onCursorTargetChange(e,t)}))])}get _isCameraDirty(){const e=this.analysisViewData.elevationAlignedObserver,{view:t}=this,{renderCoordsHelper:n}=t;if(null==e||null==n)return!1;const o=J;n.toRenderCoords(e,o);const i=t.state.camera.computeScreenPixelSizeAt(o);return Math.abs((i-this._screenPixelSize)/this._screenPixelSize)>q}_getEffectiveElevationInfo(e,t){return e.hasZ?t??{mode:"absolute-height",offset:0}:{mode:"on-the-ground",offset:0}}};e([p({constructOnly:!0})],B.prototype,"analysis",void 0),e([p({constructOnly:!0})],B.prototype,"analysisViewData",void 0),e([p({constructOnly:!0})],B.prototype,"view",void 0),e([p()],B.prototype,"updating",null),e([p()],B.prototype,"priority",null),e([p()],B.prototype,"updateOnCameraChange",void 0),e([p()],B.prototype,"_computations",null),e([p()],B.prototype,"_elevationAlignedObserverPositionRenderSpace",null),e([p()],B.prototype,"_observerGroundOffsetRenderSpace",void 0),e([p()],B.prototype,"_effectiveObserverElevationMode",void 0),e([p()],B.prototype,"_observerFeatureId",void 0),e([p()],B.prototype,"_screenPixelSize",null),e([p({readOnly:!0})],B.prototype,"_updatingHandles",void 0),e([p()],B.prototype,"_frameTask",void 0),e([p()],B.prototype,"_isCameraDirty",null),B=e([g(M)],B);const q=.1,J=I(),K=A(),Q=j(),W=.05;export{B as LineOfSightController};
|
|
5
|
+
import{_ as e}from"../../../../chunks/tslib.es6.js";import"../../../../geometry.js";import{getFeatureId as t}from"../../../../analysis/featureReferenceUtils.js";import n from"../../../../core/Accessor.js";import{createTask as o}from"../../../../core/asyncUtils.js";import i from"../../../../core/Evented.js";import r from"../../../../core/Handles.js";import{handlesGroup as s,makeHandle as a}from"../../../../core/handleUtils.js";import l from"../../../../core/Logger.js";import{abortMaybe as u}from"../../../../core/maybe.js";import{ignoreAbortErrors as c}from"../../../../core/promiseUtils.js";import{initial as d}from"../../../../core/reactiveUtils.js";import{property as p}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as g}from"../../../../core/accessorSupport/decorators/subclass.js";import{c as h,m,f as v,n as f,i as _,g as b,q as y,r as C}from"../../../../chunks/vec3.js";import{c as I}from"../../../../chunks/vec3f64.js";import{UpdatingHandles as T}from"../../../../core/support/UpdatingHandles.js";import{projectOrLoad as P}from"../../../../geometry/projection.js";import{projectBoundingRect as O}from"../../../../geometry/projection/projectBoundingRect.js";import{empty as S,containsPointObject as j,intersectsSegment as R}from"../../../../geometry/support/aaBoundingRect.js";import{fromPoints as w,create as A}from"../../../../geometry/support/ray.js";import{zValueInAbsoluteHeightMode as E}from"../../../../support/elevationInfoUtils.js";import{LineOfSightAnalysisResult as H}from"../LineOfSightAnalysisResult.js";import{LineOfSightComputation as F}from"./LineOfSightComputation.js";import{LineOfSightRayIntersector as L}from"./LineOfSightRayIntersector.js";import{logFailedGeometryProjectionError as V}from"../support/projectionUtils.js";import{StoreResults as D}from"../../webgl-engine/lib/IntersectorInterfaces.js";import{toGraphic as x,hasLod as N,getIntersectedFeatureBSRadius as G}from"../../webgl-engine/lib/intersectorUtilsConversions.js";import{ImmediateTask as k,TaskPriority as z}from"../../../support/Scheduler.js";import U from"../../../../geometry/Point.js";const M="esri.views.3d.analysis.LineOfSight.LineOfSightController",Z=l.getLogger(M);let q=class extends(i.EventedMixin(n)){constructor(e){super(e),this.updateOnCameraChange=!0,this._observerGroundOffsetRenderSpace=0,this._effectiveObserverElevationMode="absolute-height",this._observerFeatureId=null,this._updatingHandles=new T,this._frameTask=k,this._computationHandles=new r,this._externalObserverUpdate=!0}initialize(){const e=this.view.resourceController?.scheduler;this._frameTask=e?e.registerTask(z.LINE_OF_SIGHT_TOOL):k,this._intersector=new L({view:this.view}),this.addHandles([this._connectObserver(),this._connectComputations(),this._connectTargets()])}destroy(){this._computationHandles.destroy(),this._computations.removeAll(),this._updatingHandles.destroy()}get updating(){return this._frameTask.updating||this._updatingHandles.updating}get priority(){return this._frameTask.priority}set priority(e){this._frameTask.priority=e}get _computations(){return this.analysisViewData.computations}get _elevationAlignedObserverPositionRenderSpace(){return this.analysisViewData.observerEngineLocation}set _elevationAlignedObserverPositionRenderSpace(e){this.analysisViewData.observerEngineLocation=e}get _screenPixelSize(){return this.view.state.camera.computeScreenPixelSizeAt(this._elevationAlignedObserverPositionRenderSpace)}_computeResult(e){const t=e.computation,{inputPoints:n,computationResult:o}=t,{observerAdjusted:i,targetAdjusted:r}=n,{start:s,end:a}=o;h(s,i),h(a,r);this._canCompute(t)?this._computeIntersection(e):this._interpolateIntersection(e),t.notifyResultChanged(),this.emit("result-changed",{target:e.computation.target,result:t.result})}_updateAdjustedPointsFromFeatures(e){const n=this.view,{sceneIntersectionHelper:o}=n,{inputPoints:i}=e,{observerAdjusted:r,observerFeatureId:s,targetFeatureId:a,targetAdjusted:l}=i;if(null==s&&null==a)return;const u=m(r,l),c=this._intersector.intersector,d=w(i.observer,i.target,K);c.options.store=D.ALL,o.intersectToolIntersectorRay(d,c);let p=null,g=null,h=null,v=null;for(const m of c.results.all){const e=x(m,this.view);if(null==e||null==m.distanceInRenderSpace)continue;const o=t(e);null!=o&&(null!=s&&o===s&&(null==p&&(p=this._getFeatureDistanceThreshold(m,n,u)),m.distanceInRenderSpace<p&&(h=m)),null!=a&&o===a&&(null==g&&(g=this._getFeatureDistanceThreshold(m,n,u)),null==v&&m.distanceInRenderSpace<u&&u-m.distanceInRenderSpace<g&&(v=m)))}null!=h&&h.getIntersectionPoint(r)&&(i.observerSurfaceNormal=h.getTransformedNormal(I())),null!=v&&v.getIntersectionPoint(l)&&(i.targetSurfaceNormal=v.getTransformedNormal(I()))}_getFeatureDistanceThreshold(e,t,n){if(N(e)){const o=G(e,t);if(null!=o)return Math.min(o*W,n)}return 1e-5*n}_adjustStartEndPositions(e){const t=this._screenPixelSize,n=this.view,{inputPoints:o}=e,{observer:i,observerSurfaceNormal:r,target:s,targetSurfaceNormal:a,observerAdjusted:l,targetAdjusted:u}=o,c=J;h(l,i),h(u,s),this._updateAdjustedPointsFromFeatures(e),null!=r?h(c,r):v(c,u,l);const d=t;f(c,c),_(c,c,Math.min(d,1)),b(l,l,c),null!=a?h(c,a):v(c,l,u);const p=n.state.camera.computeScreenPixelSizeAt(u);f(c,c),_(c,c,Math.min(p,1)),b(u,u,c)}_computeIntersection({computation:e,interpolationInfo:t}){const{view:n}=this,{sceneIntersectionHelper:o,renderCoordsHelper:i}=n;if(null==o)return;const r=this._intersector.intersector,{computationResult:s,inputPoints:a}=e,{observer:l,target:u}=a,{start:c,end:d}=s,p=w(c,d,K);r.options.store=D.MIN,o.intersectToolIntersectorRay(p,r);const g=r.results.min,m=s.intersection,v=J;let f=!0;if(null!=g&&g.getIntersectionPoint(m)){h(t.originalIntersection,m),h(t.originalObserver,c),h(t.originalTarget,d),i.fromRenderCoords(m,v,n.spatialReference);const e=1-y(d,u)/y(c,u);f=y(l,m)>=e*y(l,u)}const _=new U(v,n.spatialReference);{const{result:t,target:o}=e;null!=t?(t.target=o,t.intersectedGraphic=f?null:x(g,n),t.intersectedLocation=f?null:_,t.visible=f):e.result=new H({target:o,elevationAlignedTargetLocation:e.elevationAlignedTargetLocation,intersectedGraphic:f?null:x(g,n),intersectedLocation:f?null:_,visible:f})}s.isValid=a.isValid=!0,s.isTargetVisible=f}_interpolateIntersection({computation:e,interpolationInfo:t}){const{computationResult:n,inputPoints:o}=e,{start:i,end:r,intersection:s}=n,{originalIntersection:a,originalObserver:l,originalTarget:u}=t;if(h(s,a),o.isValid){const e=J,t=y(l,a)/y(l,u);C(e,i,l),_(e,e,1-t),b(s,s,e),C(e,r,u),_(e,e,t),b(s,s,e),n.isValid=!0}else e.result=null,n.isValid=!1,n.isTargetVisible=!1}_canCompute(e){const t=this.analysisViewData.elevationAlignedObserver,n=this.view.frustum;if(null==t||null==e.elevationAlignedTargetLocation||null==n)return!1;const{observerAdjusted:o,targetAdjusted:i}=e.inputPoints,r=n.intersectsPoint(o),s=n.intersectsPoint(i);return r&&s}_onObserverPositionChange(e,n,o,i,r){if(this._externalObserverUpdate=r,null==e)return this.analysisViewData.elevationAlignedObserver=null,void(this._observerFeatureId=null);if(null==n)return V(this.analysis,e.spatialReference,Z),void(this.analysisViewData.elevationAlignedObserver=null);const s=this._getEffectiveElevationInfo(n,o),{absoluteZ:a,elevation:l}=E(n.x,n.y,n.z,this.view.spatialReference,this.view,s),u=n.clone();u.z=a,this._effectiveObserverElevationMode=s.mode,this.analysisViewData.elevationAlignedObserver=u;const c=I();this.view.renderCoordsHelper.toRenderCoords(u,c),this._elevationAlignedObserverPositionRenderSpace=c,this._observerGroundOffsetRenderSpace=a-l,this._observerFeatureId=t(i),this.priority=z.LINE_OF_SIGHT_TOOL_INTERACTIVE}_onObserverRenderSpacePositionChangeForComputation(e,t,n,o,i){const{inputPoints:r}=e;switch(h(r.observer,t),r.observerFeatureId=i,r.observerSurfaceNormal=null,o){case"on-the-ground":case"relative-to-ground":{const e=this._intersector.updateFromGroundIntersection(r.observer,n,r.observer);null==r.observerFeatureId&&(r.observerSurfaceNormal=e)}}this._adjustStartEndPositions(e),e.notifyInputPointsChanged(),this.priority=z.LINE_OF_SIGHT_TOOL_INTERACTIVE}_onTargetPositionChange(e,n,o,i,r,s=!0){const a=e.inputPoints;if(s&&(a.isValid=!1),null==o)return null!=n&&V(this.analysis,n.spatialReference,Z),e.elevationAlignedTargetLocation=null,void e.notifyInputPointsChanged();const l=this._getEffectiveElevationInfo(o,i),{absoluteZ:u,elevation:c}=E(o.x,o.y,o.z,this.view.spatialReference,this.view,l),d=o.clone();switch(d.z=u,e.elevationAlignedTargetLocation=d,this.view.renderCoordsHelper.toRenderCoords(e.elevationAlignedTargetLocation,a.target),a.targetFeatureId=t(r),a.targetSurfaceNormal=null,l.mode){case"on-the-ground":case"relative-to-ground":{const e=this._intersector.updateFromGroundIntersection(a.target,u-c,a.target);null==a.targetFeatureId&&(a.targetSurfaceNormal=e)}}this._adjustStartEndPositions(e),e.notifyInputPointsChanged(),this.priority=z.LINE_OF_SIGHT_TOOL_INTERACTIVE}_connectComputationToTarget(e){return s([this._updatingHandles.add((()=>({computation:e,targetPosition:e.target.position,targetElevationInfo:e.target.elevationInfo,targetFeatureInfo:e.target.feature,projectedTargetPosition:P(e.target.position,this.view.spatialReference)})),(({computation:e,targetPosition:t,targetElevationInfo:n,targetFeatureInfo:o,projectedTargetPosition:i})=>{null==i.pending?this._onTargetPositionChange(e,t,i.geometry,n,o):this._updatingHandles.addPromise(i.pending)}),d)])}_connectComputationToObserver(e){return this._updatingHandles.add((()=>({computation:e,observer:this.analysisViewData.elevationAlignedObserver})),(({computation:e})=>{this._externalObserverUpdate&&(e.inputPoints.isValid=!1,e.notifyInputPointsChanged())}),d)}_connectComputationToRenderSpaceObserver(e){return this._updatingHandles.add((()=>({computation:e,observer:this._elevationAlignedObserverPositionRenderSpace,observerGroundOffset:this._observerGroundOffsetRenderSpace,observerElevationMode:this._effectiveObserverElevationMode,observerFeatureId:this._observerFeatureId})),(({computation:e,observer:t,observerGroundOffset:n,observerElevationMode:o,observerFeatureId:i})=>{this._onObserverRenderSpacePositionChangeForComputation(e,t,n,o,i)}),d)}_connectComputationToCamera(e){return this._updatingHandles.add((()=>({camera:this.view.state.camera,isDirty:this._isCameraDirty})),(({isDirty:t})=>{!this.updateOnCameraChange||e.inputPoints.isValid&&!t||e.notifyInputPointsChanged()}))}_connectComputationToSlicePlane(e){return this._updatingHandles.add((()=>this.view.slicePlane),(()=>{e.inputPoints.isValid=!1,e.notifyInputPointsChanged()}))}_connectComputationToElevation(e){const t=(n,o)=>{const i=this.analysis.observer,r=e.target;let s=null,a=null,l=null,u=null,c=null,d=null;if(null!=i&&null!=i.position){const e=P(i.position,this.view.spatialReference);if(null!=e.pending)return this._updatingHandles.addPromise(e.pending),void e.pending.finally((()=>t(n,o)));s=e.geometry,a=i.elevationInfo,l=i.feature}if(null!=r.position){const e=P(r.position,this.view.spatialReference);if(null!=e.pending)return this._updatingHandles.addPromise(e.pending),void e.pending.finally((()=>t(n,o)));u=e.geometry,c=r.elevationInfo,d=r.feature}null==s&&null==u||(O(n,o,Q,this.view.spatialReference),null!=s&&j(Q,s)&&this._onObserverPositionChange(null!=i?i.position:null,s,a,l,!1),null!=u&&j(Q,u)&&this._onTargetPositionChange(e,r.position,u,c,d,!1),null!=s&&null!=u&&R(Q,s,u)&&e.notifyInputPointsChanged())};return this.view.elevationProvider.on("elevation-change",(e=>t(e.extent,e.spatialReference)))}_connectComputationToTask(e){let t=null;const n={computation:e,interpolationInfo:{originalIntersection:I(),originalObserver:I(),originalTarget:I()}};return s([this._updatingHandles.add((()=>e.inputPoints),(()=>{t=u(t),t=o((async e=>{await c(this._frameTask.schedule((()=>this._computeResult(n)),e))}))}),{initial:!0,equals:()=>!1}),a((()=>t=u(t)))])}_connectComputation(e){const t=this._computationHandles;t.has(e)||t.add([this._connectComputationToTarget(e),this._connectComputationToObserver(e),this._connectComputationToRenderSpaceObserver(e),this._connectComputationToCamera(e),this._connectComputationToSlicePlane(e),this._connectComputationToElevation(e),this._connectComputationToTask(e)],e)}_disconnectComputation(e){this._computationHandles.remove(e)}_onComputationCollectionChange({added:e,removed:t}){for(const n of t)this._disconnectComputation(n);for(const n of e)this._connectComputation(n)}_onTargetCollectionChange({added:e,removed:t}){for(const n of t)this._removeTarget(n);for(const n of e)this._addTarget(n)}_onCursorTargetChange(e,t){null!=t&&this._removeTarget(t),null!=e&&this._addTarget(e)}_addTarget(e){this._computations.some((t=>t.target===e))||this._computations.add(new F({target:e}))}_removeTarget(e){const t=this._computations.findIndex((t=>t.target===e));this._computations.removeAt(t)}_connectObserver(){return s([this._updatingHandles.add((()=>({observerPosition:null!=this.analysis.observer?this.analysis.observer.position:null,projectedObserverPosition:P(null!=this.analysis.observer?this.analysis.observer.position:null,this.view.spatialReference),observerElevationInfo:null!=this.analysis.observer?this.analysis.observer.elevationInfo:null,observerFeatureInfo:null!=this.analysis.observer?this.analysis.observer.feature:null})),(({observerPosition:e,projectedObserverPosition:t,observerElevationInfo:n,observerFeatureInfo:o})=>{null==t.pending?this._onObserverPositionChange(e,t.geometry,n,o,!0):this._updatingHandles.addPromise(t.pending)}),d)])}_connectComputations(){return this._updatingHandles.addOnCollectionChange((()=>this._computations),(e=>this._onComputationCollectionChange(e)),{initial:!0,final:!0})}_connectTargets(){return s([this._updatingHandles.addOnCollectionChange((()=>this.analysis.targets),(e=>this._onTargetCollectionChange(e)),{initial:!0,final:!0}),this._updatingHandles.add((()=>this.analysisViewData.cursorTarget),((e,t)=>{this._onCursorTargetChange(e,t)}))])}get _isCameraDirty(){const e=this.analysisViewData.elevationAlignedObserver,{view:t}=this,{renderCoordsHelper:n}=t;if(null==e||null==n)return!1;const o=J;n.toRenderCoords(e,o);const i=t.state.camera.computeScreenPixelSizeAt(o);return Math.abs((i-this._screenPixelSize)/this._screenPixelSize)>B}_getEffectiveElevationInfo(e,t){return e.hasZ?t??{mode:"absolute-height",offset:0}:{mode:"on-the-ground",offset:0}}};e([p({constructOnly:!0})],q.prototype,"analysis",void 0),e([p({constructOnly:!0})],q.prototype,"analysisViewData",void 0),e([p({constructOnly:!0})],q.prototype,"view",void 0),e([p()],q.prototype,"updating",null),e([p()],q.prototype,"priority",null),e([p()],q.prototype,"updateOnCameraChange",void 0),e([p()],q.prototype,"_computations",null),e([p()],q.prototype,"_elevationAlignedObserverPositionRenderSpace",null),e([p()],q.prototype,"_observerGroundOffsetRenderSpace",void 0),e([p()],q.prototype,"_effectiveObserverElevationMode",void 0),e([p()],q.prototype,"_observerFeatureId",void 0),e([p()],q.prototype,"_screenPixelSize",null),e([p({readOnly:!0})],q.prototype,"_updatingHandles",void 0),e([p()],q.prototype,"_frameTask",void 0),e([p()],q.prototype,"_isCameraDirty",null),q=e([g(M)],q);const B=.1,J=I(),K=A(),Q=S(),W=.05;export{q as LineOfSightController};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as r}from"../../../../chunks/tslib.es6.js";import o from"../../../../core/Accessor.js";import{equals as t}from"../../../../core/arrayUtils.js";import{clone as s}from"../../../../core/lang.js";import{equalsMaybe as e}from"../../../../core/maybe.js";import{property as i}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as p}from"../../../../core/accessorSupport/decorators/subclass.js";import{G as n}from"../../../../chunks/vec3.js";import{
|
|
5
|
+
import{_ as r}from"../../../../chunks/tslib.es6.js";import o from"../../../../core/Accessor.js";import{equals as t}from"../../../../core/arrayUtils.js";import{clone as s}from"../../../../core/lang.js";import{equalsMaybe as e}from"../../../../core/maybe.js";import{property as i}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as p}from"../../../../core/accessorSupport/decorators/subclass.js";import{G as n}from"../../../../chunks/vec3.js";import{g as c}from"../../../../chunks/vec3f64.js";import{equals as a}from"../../../../geometry/support/ray.js";var m;let y=m=class extends o{constructor(r){super(r)}clone(){return new m({type:this.type,id:s(this.id),mapPoint:s(this.mapPoint),renderPoint:c(this.renderPoint),normal:s(this.normal),ray:s(this.ray),graphic:this.graphic})}equals(r){return this.type===r.type&&this.id===r.id&&e(this.mapPoint,r.mapPoint)&&n(this.renderPoint,r.renderPoint)&&t(this.normal,r.normal)&&a(this.ray,r.ray)&&this.graphic===r.graphic}};r([i()],y.prototype,"type",void 0),r([i({constructOnly:!0})],y.prototype,"id",void 0),r([i({constructOnly:!0})],y.prototype,"mapPoint",void 0),r([i({constructOnly:!0})],y.prototype,"renderPoint",void 0),r([i({constructOnly:!0})],y.prototype,"normal",void 0),r([i({constructOnly:!0})],y.prototype,"graphic",void 0),r([i({constructOnly:!0})],y.prototype,"ray",void 0),y=m=r([p("esri.views.3d.analysis.LineOfSight.LineOfSightIntersectionResult")],y);export{y as LineOfSightIntersectionResult};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../../../../chunks/tslib.es6.js";import r from"../../../../core/Accessor.js";import{screenPointObjectToArray as t}from"../../../../core/screenUtils.js";import{property as s}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as o}from"../../../../core/accessorSupport/decorators/subclass.js";import{i,n,
|
|
5
|
+
import{_ as e}from"../../../../chunks/tslib.es6.js";import r from"../../../../core/Accessor.js";import{screenPointObjectToArray as t}from"../../../../core/screenUtils.js";import{property as s}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as o}from"../../../../core/accessorSupport/decorators/subclass.js";import{c as i,n,i as c,g as a}from"../../../../chunks/vec3.js";import{g as p,c as l}from"../../../../chunks/vec3f64.js";import{create as m,copy as u,fromPoints as d}from"../../../../geometry/support/ray.js";import{sv2d as h}from"../../../../geometry/support/vectorStacks.js";import{getObjectId as f}from"../../../../layers/graphics/dehydratedFeatures.js";import{LineOfSightIntersectionResult as y}from"./LineOfSightIntersectionResult.js";import{isI3sIntersectorResult as g}from"../../layers/i3s/Intersector.js";import{fromScreen as I}from"../../support/geometryUtils/ray.js";import{isTerrainIntersectorResult as j}from"../../terrain/Intersector.js";import{newIntersector as v}from"../../webgl-engine/lib/Intersector.js";import{StoreResults as w,IntersectorType as b}from"../../webgl-engine/lib/IntersectorInterfaces.js";import{toGraphic as P}from"../../webgl-engine/lib/intersectorUtilsConversions.js";let R=class extends r{constructor(e){super(e),this._terrainIntersectionOptionsLayerUids=new Set(["terrain"])}initialize(){this.intersector=v(this.view.state.viewingMode),this.intersector.options.hud=!1,this.intersector.options.store=w.MIN}getScreenPointIntersection(e){const r=t(e,h.get()),s=I(this.view.state.camera,r,L);return this._getRayIntersection(s)}_getRayIntersection(e,r){if(null==e||null==this.view.sceneIntersectionHelper)return null;this.intersector.options.store=w.MIN,this.view.sceneIntersectionHelper.intersectToolIntersectorRay(e,this.intersector,r);const t=this.intersector.results.min,s=l();if(!t.getIntersectionPoint(s))return null;const o=this.view.renderCoordsHelper.fromRenderCoords(s,this.view.spatialReference),i=p(t.normal);if(g(t))return new y({type:b.OBJECT,id:`${t.target.layerUid}/${t.target.nodeIndex}/${t.target.componentIndex}`,mapPoint:o,renderPoint:s,normal:i,ray:u(e),graphic:null});if(j(t))return new y({type:b.TERRAIN,id:t.target.lij.slice(),mapPoint:o,renderPoint:s,normal:i,ray:u(e),graphic:null});const n=P(t,this.view);if(null!=n){const r=n.layer,t=n.sourceLayer;let c;if(t)if("scene"===t.type)c=f(n,t.objectIdField);else c=n.uid;else c=n.uid;return new y({type:b.OBJECT,id:`${r?.uid}/${c}`,mapPoint:o,renderPoint:s,normal:i,ray:u(e),graphic:n})}return null}updateFromGroundIntersection(e,r,t){const s=S,o=U,l=O,m=C;i(o,e),this.view.renderCoordsHelper.worldUpAtPosition(o,l),n(l,l);const u=this.view.basemapTerrain.visibleElevationBounds,h=u?Math.abs(u.max-u.min):100,f=r>=0?1:-1;c(m,l,f*(h+Math.abs(r))),a(s,o,m),d(s,o,L);const y=this._getRayIntersection(L,{include:this._terrainIntersectionOptionsLayerUids});return null!=y?(c(m,l,f*r),a(t,y.renderPoint,m),p(y.normal)):(i(t,e),null)}};e([s()],R.prototype,"view",void 0),e([s()],R.prototype,"intersector",void 0),R=e([o("esri.views.3d.analysis.LineOfSight.LineOfSightRayIntersector")],R);const S=l(),U=l(),O=l(),C=l(),L=m();export{R as LineOfSightRayIntersector};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as i}from"../../../../chunks/tslib.es6.js";import e from"../../../../Color.js";import t from"../../../../core/Accessor.js";import n from"../../../../core/Handles.js";import{makeHandle as o}from"../../../../core/handleUtils.js";import{destroyMaybe as s}from"../../../../core/maybe.js";import{initial as r}from"../../../../core/reactiveUtils.js";import{property as a}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as l}from"../../../../core/accessorSupport/decorators/subclass.js";import{c}from"../../../../chunks/mat4f64.js";import{
|
|
5
|
+
import{_ as i}from"../../../../chunks/tslib.es6.js";import e from"../../../../Color.js";import t from"../../../../core/Accessor.js";import n from"../../../../core/Handles.js";import{makeHandle as o}from"../../../../core/handleUtils.js";import{destroyMaybe as s}from"../../../../core/maybe.js";import{initial as r}from"../../../../core/reactiveUtils.js";import{property as a}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as l}from"../../../../core/accessorSupport/decorators/subclass.js";import{a as c}from"../../../../chunks/mat4f64.js";import{f as u}from"../../../../chunks/vec3.js";import{e as d,c as m}from"../../../../chunks/vec3f64.js";import{UpdatingHandles as h}from"../../../../core/support/UpdatingHandles.js";import{LineOfSightVisualElement as p}from"./LineOfSightVisualElement.js";import{LineVisualElement as v}from"../../interactive/visualElements/LineVisualElement.js";import{PointVisualElement as g}from"../../interactive/visualElements/PointVisualElement.js";import{RenderOccludedFlag as f}from"../../webgl-engine/lib/Material.js";let b=class extends t{constructor(i){super(i),this._lineOfSightVisualElements=new Array,this._computationHandles=new n,this._updatingHandles=new h}initialize(){this.addHandles(this._connectComputations()),this._createObserverVisualization()}destroy(){this._updatingHandles=s(this._updatingHandles),this._computationHandles=s(this._computationHandles),this._observerVisualElement=s(this._observerVisualElement)}get visible(){return this.analysisViewData.visible}get updating(){return this._updatingHandles.updating}get interactiveAndEditable(){return this.analysisViewData.interactive&&this.analysisViewData.editable}get test(){return{disablePartialOcclusion:()=>{for(const i of this._lineOfSightVisualElements)i.visibleLineVisualElement.renderOccluded=f.Occlude,i.occludedLineVisualElement.renderOccluded=f.Occlude,i.undefinedLineVisualElement.renderOccluded=f.Occlude},visualizations:this._lineOfSightVisualElements}}get _configuration(){return this.analysisViewData.configuration}_createLineOfSightVisualization(){const i=this._configuration,t=this.view,n=this.isDecoration,o={view:t,attached:!0,width:i.outerWidth,innerWidth:i.innerWidth,isDecoration:n},s=e.toUnitRGBA(i.visibleOuterColor),r=e.toUnitRGBA(i.visibleInnerColor),a=e.toUnitRGBA(i.occludedOuterColor),l=e.toUnitRGBA(i.occludedInnerColor),c=e.toUnitRGBA(i.undefinedOuterColor),u=e.toUnitRGBA(i.undefinedInnerColor),d=new v({...o,color:s,innerColor:r}),m=new v({...o,color:a,innerColor:l}),h=new v({...o,color:c,innerColor:u}),f=new g({view:t,attached:!0,..._,size:8,isDecoration:n}),b=new p(d,m,h,f);return this._lineOfSightVisualElements.push(b),b}_destroyLineOfSightVisualization(i){i.destroy(),this._lineOfSightVisualElements.splice(this._lineOfSightVisualElements.indexOf(i),1)}_updateLineOfSightVisualization(i,t,n){const o=this._configuration,{computationResult:s,inputPoints:r}=i,{start:a,end:l,intersection:c,isValid:m,isTargetVisible:h}=s,{observer:p}=r,v=C;v[12]=p[0],v[13]=p[1],v[14]=p[2];const g=u(O,a,p),f=u(y,l,p),b=u(V,c,p),{visibleLineVisualElement:_,occludedLineVisualElement:E,undefinedLineVisualElement:w,targetVisualElement:A}=t,S=null==this.analysisViewData.elevationAlignedObserver||null==i.elevationAlignedTargetLocation,j=this.visible&&!S;_.visible=j,E.visible=j,w.visible=j,A.visible=j,A.attached=!n.interactiveAndEditable,j&&(_.geometry=null,E.geometry=null,w.geometry=null,A.geometry=i.elevationAlignedTargetLocation,m?h?(_.geometry=[[d(g),d(f)]],_.transform=v,_.color=e.toUnitRGBA(o.visibleOuterColor),A.color=e.toUnitRGBA(o.visibleInnerColor)):(_.geometry=[[d(g),d(b)]],_.transform=v,_.color=e.toUnitRGBA(o.occludedOuterColor),E.geometry=[[d(b),d(f)]],E.transform=v,A.color=e.toUnitRGBA(o.occludedInnerColor)):(w.geometry=[[d(g),d(f)]],w.transform=v,A.color=e.toUnitRGBA(o.undefinedInnerColor)))}_getLineOfSightVisualizationDependencies(i){const{computationResult:e}=i,{occludedOuterColor:t,visibleOuterColor:n}=this._configuration;return{computationResult:e,occludedOuterColor:t,visibleOuterColor:n,visible:this.visible,interactiveAndEditable:this.interactiveAndEditable}}_connectComputation(i){const e=this._computationHandles;if(e.has(i))return;const t=this._createLineOfSightVisualization();e.add([this._updatingHandles.add((()=>this._getLineOfSightVisualizationDependencies(i)),(e=>this._updateLineOfSightVisualization(i,t,e)),{initial:!0,equals:()=>!1}),o((()=>this._destroyLineOfSightVisualization(t)))],i)}_disconnectComputation(i){this._computationHandles.remove(i)}_connectComputations(){return this._updatingHandles.addOnCollectionChange((()=>this.analysisViewData.computations),(i=>this._onComputationsCollectionChange(i)),{initial:!0,final:!0})}_onComputationsCollectionChange({added:i,removed:e}){for(const t of e)this._disconnectComputation(t);for(const t of i)this._connectComputation(t)}_createObserverVisualization(){const i=e.toUnitRGBA(this._configuration.visibleInnerColor),t=new g({view:this.view,color:i,..._,isDecoration:this.isDecoration});this._observerVisualElement=t,this.addHandles(this._updatingHandles.add((()=>({observer:this.analysisViewData.elevationAlignedObserver,interactiveAndEditable:this.interactiveAndEditable,visible:this.visible})),(({observer:i,interactiveAndEditable:e,visible:n})=>{null!=i&&!e&&n?(t.geometry=i,this._observerVisualElement.attached=!0):t.attached=!1}),r))}};i([a({constructOnly:!0})],b.prototype,"analysis",void 0),i([a({constructOnly:!0})],b.prototype,"analysisViewData",void 0),i([a({constructOnly:!0})],b.prototype,"view",void 0),i([a({readOnly:!0})],b.prototype,"visible",null),i([a({constructOnly:!0})],b.prototype,"isDecoration",void 0),i([a()],b.prototype,"updating",null),i([a()],b.prototype,"interactiveAndEditable",null),i([a()],b.prototype,"test",null),i([a()],b.prototype,"_configuration",null),b=i([l("esri.views.3d.analysis.LineOfSight.LineOfSightVisualization")],b);const _={size:6,pixelSnappingEnabled:!1,primitive:"circle",elevationInfo:{mode:"absolute-height",offset:0},outlineSize:0},O=m(),y=m(),V=m(),C=c();export{b as LineOfSightVisualization};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as t}from"../../../../chunks/tslib.es6.js";import e from"../../../../Color.js";import i from"../../../../analysis/SlicePlane.js";import{clock as a}from"../../../../core/clock.js";import{releaseMaybe as s,destroyMaybe as n,removeMaybe as r}from"../../../../core/maybe.js";import{watch as l,sync as o,syncAndInitial as h}from"../../../../core/reactiveUtils.js";import{addFrameTask as p}from"../../../../core/scheduling.js";import{createScreenPoint as u,screenPointObjectToArray as c,createScreenPointArray as d}from"../../../../core/screenUtils.js";import{property as _}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as v}from"../../../../core/accessorSupport/decorators/subclass.js";import{d as P,E as y,m}from"../../../../chunks/mat4.js";import{d as g,l as w,i as f,b as M,e as T,m as D,n as V,s as b}from"../../../../chunks/vec3.js";import{a as k,c as E}from"../../../../chunks/vec3f64.js";import{Z as S}from"../../../../chunks/vec4f64.js";import{a as H,c as x,n as R,f as I}from"../../../../chunks/boundedPlane.js";import{signedDistance as C,create as j,intersectRay as O,normal as z}from"../../../../geometry/support/plane.js";import{create as G}from"../../../../geometry/support/ray.js";import{sv3d as U,sm4d as A,sv2d as L}from"../../../../geometry/support/vectorStacks.js";import{Settings as B}from"./settings.js";import{POINTER_MOVE_TIMER_MS as K,PLANE_PREVIEW_OUTLINE_WIDTH as F,forceVerticalModifier as N,forceHorizontalModifier as Z,PREVIEW_FADE_DOT_THRESHOLD as q,PREVIEW_FADE_DURATION_SECONDS as W,INITIAL_DEPTH_OFFSET_FRAC as J}from"./sliceToolConfig.js";import{createShiftManipulator as Q,OffsetMode as X,createRotateManipulator as Y,createResizeManipulator as $,createGridVisualElement as tt,createOutlineVisualElement as et,planeToShape as it,createRotatePlane as at,RotationAxis as st,resizePlane as nt,calculatePlaneHalfSize as rt,SliceOrientation as lt,createPlane as ot,DidPointerMoveRecentlyFlag as ht,calculateBoundedPlaneTranslateRotate as pt,updateShiftRestartHandle as ut,updateRotateHeadingHandle as ct,updateRotateTiltHandle as dt,updateResizeHandle as _t,createShiftPlane as vt}from"./sliceToolUtils.js";import{getRotateHeadingTexture as Pt,getTiltRotateTexture as yt}from"./images/Factory.js";import{calculateInputRotationTransform as mt}from"../../interactive/manipulatorUtils.js";import{screenToRenderPlane as gt}from"../../interactive/editingTools/dragEventPipeline3D.js";import{fromScreen as wt}from"../../support/geometryUtils/ray.js";import{newIntersector as ft}from"../../webgl-engine/lib/Intersector.js";import{StoreResults as Mt}from"../../webgl-engine/lib/IntersectorInterfaces.js";import{AnalysisToolBase as Tt}from"../../../interactive/AnalysisToolBase.js";import{createManipulatorDragEventPipeline as Dt}from"../../../interactive/dragEventPipeline.js";import{createScreenPointFromEvent as Vt}from"../../../support/screenUtils.js";var bt;let kt=bt=class extends Tt{constructor(t){super(t),this._clock=a,this._previewPlaneOpacity=1,this.removeIncompleteOnCancel=!1,this.layersMode="none",this.shiftManipulator=null,this.rotateHeadingManipulator=null,this.rotateTiltManipulator=null,this.resizeManipulators=null,this._frameTask=null,this._pointerMoveTimerMs=K,this._prevPointerMoveTimeout=null,this._previewPlaneGridVisualElement=null,this._previewPlaneOutlineVisualElement=null,this._startPlane=H(),this._previewPlane=null,this._activeKeyModifiers={},this._lastCursorPosition=u(),this._resizeHandles=[{direction:[1,0]},{direction:[1,1]},{direction:[0,1]},{direction:[-1,1]},{direction:[-1,0]},{direction:[-1,-1]},{direction:[0,-1]},{direction:[1,-1]}],this._intersector=ft(t.view.state.viewingMode),this._intersector.options.store=Mt.MIN}initialize(){if(null==this.analysis)throw new Error("SliceTool requires valid analysis, but null was provided.");this._settings=new B(this.view.effectiveTheme);const t=!this.view._stage?.renderView.renderingContext.driverTest.svgPremultipliesAlpha.result,e={accentColor:this._settings.rotateManipulators.color,contrastColor:this._settings.rotateManipulators.contrastColor,preMultiplyAlpha:t};this._rotateHeadingImage=Pt(this.view.toolViewManager.textures,e),this._rotateTiltImage=yt(this.view.toolViewManager.textures,e);const i=t=>{this._updateManipulatorsInteractive(t),t.grabbing||(null!=this.analysisViewData.plane&&x(this.analysisViewData.plane,this._startPlane),this.inputState=null)};this.shiftManipulator=Q(this.view,{offsetMode:X.CENTER_ON_ARROW,calloutColor:this._settings.callouts.color,color:this._settings.shiftManipulator.color,outlineColor:this._settings.shiftManipulator.outlineColor}),this.manipulators.add(this.shiftManipulator),this.shiftManipulator.events.on("grab-changed",(t=>{this._onShiftGrab(t),i(this.shiftManipulator)})),this.addHandles(this._createShiftDragPipeline(this.shiftManipulator)),this.rotateHeadingManipulator=Y(this.view,this._rotateHeadingImage.texture),this.manipulators.add(this.rotateHeadingManipulator),this.rotateHeadingManipulator.events.on("grab-changed",(t=>{this._onRotateHeadingGrab(t),i(this.rotateHeadingManipulator)})),this.addHandles(this._createRotateHeadingDragPipeline(this.rotateHeadingManipulator)),this.rotateTiltManipulator=Y(this.view,this._rotateTiltImage.texture),this.manipulators.add(this.rotateTiltManipulator),this.rotateTiltManipulator.events.on("grab-changed",(t=>{this._onRotateTiltGrab(t),i(this.rotateTiltManipulator)})),this.addHandles(this._createRotateTiltDragPipeline(this.rotateTiltManipulator)),this.resizeManipulators=this._resizeHandles.map(((t,e)=>{const a=$(this.view,t,{color:this._settings.resizeManipulators.color});return a.events.on("grab-changed",(t=>{this._onResizeGrab(t,e),i(a)})),this.addHandles(this._createResizeDragPipeline(a)),a})),this.manipulators.addMany(this.resizeManipulators),this._previewPlaneGridVisualElement=tt(this.view),this._previewPlaneOutlineVisualElement=et(this.view),this._previewPlaneOutlineVisualElement.width=F,this.addHandles(l((()=>[this.analysisViewData.plane,this.analysis.tiltEnabled]),(()=>this._updateManipulators()),o));const a=l((()=>this.state),(t=>{"sliced"===t&&this.finishToolCreation()}),h);this.addHandles([a,l((()=>this.view.state.camera),(()=>this._onCameraChange()))])}destroy(){this._rotateHeadingImage=s(this._rotateHeadingImage),this._rotateTiltImage=s(this._rotateTiltImage),this._removeFrameTask(),this._clearPointerMoveTimeout(),this._previewPlaneOutlineVisualElement=n(this._previewPlaneOutlineVisualElement),this._previewPlaneGridVisualElement=n(this._previewPlaneGridVisualElement)}get state(){const t=!!this.analysisViewData.plane,e=!!this.inputState;return t?t&&e?"slicing":t&&!e?"sliced":"ready":"ready"}get cursor(){return this._isPlacingSlicePlane||"exclude"===this.layersMode?"crosshair":null!=this._creatingPointerId?"grabbing":null}set analysis(t){if(null==t)throw new Error("SliceTool requires valid analysis, but null was provided.");this.removeHandles("analysis"),this._set("analysis",t)}get inputState(){return this._get("inputState")}set inputState(t){this._set("inputState",t),this.analysisViewData.showGrid=null!=t&&"resize"===t.type,this._updateMaterials()}get _isPlacingSlicePlane(){return!this.inputState&&!this.analysisViewData.plane&&this.active}get _creatingPointerId(){return null!=this.inputState&&"shift"===this.inputState.type?this.inputState.creatingPointerId:null}enterExcludeLayerMode(){null!=this.analysisViewData.plane&&(this._set("layersMode","exclude"),this.active||(this.view.activeTool=this))}exitExcludeLayerMode(){null!=this.analysisViewData.plane&&(this._set("layersMode","none"),this.active&&(this.view.activeTool=null))}onDeactivate(){this._set("layersMode","none"),this._updatePreviewPlane(null)}onShow(){this._updateVisibility(!0)}onHide(){this._updateVisibility(!1)}_updateVisibility(t){this._updateManipulators(),t||this._clearPointerMoveTimeout()}onInputEvent(t){switch(t.type){case"pointer-drag":if(!St(t))return;this._isPlacingSlicePlane?this._onClickPlacePlane(t)&&t.stopPropagation():this._onPointerDrag(t)&&t.stopPropagation();break;case"pointer-move":this._onPointerMove(t);break;case"pointer-up":this._onPointerUp(t)&&t.stopPropagation();break;case"immediate-click":if(!St(t))return;this._onClickPlacePlane(t)&&t.stopPropagation();break;case"click":if(!St(t))return;this._onClickExcludeLayer(t)&&t.stopPropagation();break;case"drag":this.inputState&&t.stopPropagation();break;case"key-down":this._onKeyDown(t)&&t.stopPropagation();break;case"key-up":this._onKeyUp(t)&&t.stopPropagation()}}onEditableChange(){this.analysisViewData.editable=this.internallyEditable}_onPointerDrag(t){const e=this.inputState;if(t.pointerId===this._creatingPointerId&&null!=e&&"shift"===e.type){const i=Vt(t);return this.shiftManipulator.events.emit("drag",{action:e.hasBeenDragged?"update":"start",pointerType:t.pointerType,start:i,screenPoint:i}),e.hasBeenDragged=!0,!0}return!1}_onPointerMove(t){this._lastCursorPosition.x=t.x,this._lastCursorPosition.y=t.y,this._resetPointerMoveTimeout(),"touch"!==t.pointerType&&this._updatePreviewPlane(Vt(t),this._activeKeyModifiers)}_onCameraChange(){this._updatePreviewPlane(this._lastCursorPosition,this._activeKeyModifiers),this._updateManipulators()}_onPointerUp(t){if(t.pointerId===this._creatingPointerId&&null!=this.analysisViewData.plane){const e=Vt(t);return this.shiftManipulator.events.emit("drag",{action:"end",start:e,screenPoint:e}),x(this.analysisViewData.plane,this._startPlane),this.inputState=null,!0}return!1}_onClickPlacePlane(t){if("exclude"===this.layersMode)return!1;if(this._isPlacingSlicePlane){const e=Vt(t),a=H();if(this._pickPlane(e,!1,this._activeKeyModifiers,a)){if("pointer-drag"===t.type){const i=this._calculatePickRay(e);this.inputState=Et(i,t.pointerId,a.origin,a)}return x(a,this._startPlane),this.analysis.shape=it(a,this.view,this.view.spatialReference,new i),!0}}return!1}_onClickExcludeLayer(t){return!("exclude"!==this.layersMode||!this.created)&&(this.view.hitTest(Vt(t)).then((t=>{if(t.results.length){const e=t.results[0],i="graphic"===e?.type&&e.graphic;if(i){const t=i.sourceLayer||i.layer;t&&this.analysis.excludedLayers.push(t)}}else t.ground.layer?this.analysis.excludedLayers.push(t.ground.layer):this.analysis.excludeGroundSurface=!0})),this._set("layersMode","none"),this.active&&(this.view.activeTool=null),!0)}_onKeyDown(t){return(t.key===N||t.key===Z)&&(this._activeKeyModifiers[t.key]=!0,null!=this._previewPlane&&this._updatePreviewPlane(this._lastCursorPosition,this._activeKeyModifiers),!0)}_onKeyUp(t){return!(t.key!==N&&t.key!==Z||!this._activeKeyModifiers[t.key])&&(delete this._activeKeyModifiers[t.key],null!=this._previewPlane&&this._updatePreviewPlane(this._lastCursorPosition,this._activeKeyModifiers),!0)}_onShiftGrab(t){if("start"!==t.action||null==this.analysisViewData.plane||!t.screenPoint)return;const e=this._calculatePickRay(t.screenPoint);x(this.analysisViewData.plane,this._startPlane),this.inputState=Et(e,null,this.shiftManipulator.renderLocation,this.analysisViewData.plane)}_createShiftDragPipeline(t){return Dt(t,((t,e,i)=>{const a=this.inputState;if(null==a||"shift"!==a.type)return;const s=null!=this.analysisViewData.plane?x(this.analysisViewData.plane,H()):null;e.next(gt(this.view,a.shiftPlane)).next(this._shiftDragAdjustSensitivity(a)).next(this._shiftDragUpdatePlane(a)),i.next((()=>{null!=s&&this._updateBoundedPlane(s)}))}))}_shiftDragAdjustSensitivity(t){return e=>{if(null==this.analysisViewData.plane)return null;const i=.001,a=Math.min((1-Math.abs(g(R(this.analysisViewData.plane),e.ray.direction)/w(e.ray.direction)))/i,1),s=-C(this._startPlane.plane,e.renderEnd),n=-C(this._startPlane.plane,t.startPoint);return t.depth=t.depth*(1-a)+s*a-n,e}}_shiftDragUpdatePlane(t){return()=>{if(null==this.analysisViewData.plane)return;const e=f(U.get(),this._startPlane.origin),i=f(U.get(),R(this._startPlane));M(i,i,-t.depth),T(i,i,e);const a=I(i,this.analysisViewData.plane.basis1,this.analysisViewData.plane.basis2,H());this._updateBoundedPlane(a)}}_onRotateHeadingGrab(t){if("start"!==t.action||null==this.analysisViewData.plane||!t.screenPoint)return;const e=at(this.analysisViewData.plane,this.view.renderCoordsHelper,st.HEADING,j()),i=this._calculatePickRay(t.screenPoint),a=E();O(e,i,a)&&(x(this.analysisViewData.plane,this._startPlane),this.inputState={type:"rotate",rotatePlane:e,startPoint:a})}_createRotateHeadingDragPipeline(t){return Dt(t,((t,e,i)=>{const a=this.inputState;if(null==a||"rotate"!==a.type)return;const s=null!=this.analysisViewData.plane?x(this.analysisViewData.plane,H()):null;e.next(gt(this.view,a.rotatePlane)).next(this._rotateDragRenderPlaneToRotate(a)).next(this._rotateDragUpdatePlaneFromRotate()),i.next((()=>{null!=s&&this._updateBoundedPlane(s)}))}))}_onRotateTiltGrab(t){if("start"!==t.action||null==this.analysisViewData.plane||!t.screenPoint)return;const e=at(this.analysisViewData.plane,this.view.renderCoordsHelper,st.TILT,j()),i=this._calculatePickRay(t.screenPoint),a=E();O(e,i,a)&&(x(this.analysisViewData.plane,this._startPlane),this.inputState={type:"rotate",rotatePlane:e,startPoint:a})}_createRotateTiltDragPipeline(t){return Dt(t,((t,e,i)=>{const a=this.inputState;if(null==a||"rotate"!==a.type)return;const s=null!=this.analysisViewData.plane?x(this.analysisViewData.plane,H()):null;e.next(gt(this.view,a.rotatePlane)).next(this._rotateDragRenderPlaneToRotate(a)).next(this._rotateDragUpdatePlaneFromRotate()),i.next((()=>{null!=s&&this._updateBoundedPlane(s)}))}))}_rotateDragRenderPlaneToRotate(t){return e=>{if(null==this.analysisViewData.plane)return null;const i=z(t.rotatePlane),a=mt(t.startPoint,e.renderEnd,this.analysisViewData.plane.origin,i);return{...e,rotateAxis:i,rotateAngle:a}}}_rotateDragUpdatePlaneFromRotate(){return t=>{if(null==this.analysisViewData.plane)return;const e=P(A.get(),t.rotateAngle,t.rotateAxis);if(null==e)return;const i=D(U.get(),this._startPlane.basis1,e),a=D(U.get(),this._startPlane.basis2,e),s=I(this.analysisViewData.plane.origin,i,a,H());this._updateBoundedPlane(s)}}_onResizeGrab(t,e){if("start"!==t.action||null==this.analysisViewData.plane||!t.screenPoint)return;const i=this._calculatePickRay(t.screenPoint),a=U.get();O(this.analysisViewData.plane.plane,i,a)&&(x(this.analysisViewData.plane,this._startPlane),this.inputState={type:"resize",activeHandleIdx:e,startPoint:k(a)})}_createResizeDragPipeline(t){return Dt(t,((t,e,i)=>{const a=this.inputState;if(null==a||"resize"!==a.type||null==this.analysisViewData.plane)return;const s=x(this.analysisViewData.plane,H());e.next(gt(this.view,this.analysisViewData.plane.plane)).next(this._resizeDragUpdatePlane(a)),i.next((()=>{this._updateBoundedPlane(s)}))}))}_resizeDragUpdatePlane(t){return e=>{if(null==this.analysisViewData.plane)return;const i=this._resizeHandles[t.activeHandleIdx],a=nt(i,t.startPoint,e.renderEnd,this.view.state.camera,this._startPlane,x(this.analysisViewData.plane));this._updateBoundedPlane(a)}}_updateBoundedPlane(t){const e=this.analysisViewData;if(null==e)throw new Error("valid internal object expected");e.plane=t}_updatePreviewPlane(t,e={}){let i=this._previewPlane;if(this._previewPlane=null,null==t)return this._removeFrameTask(),void this._updateManipulators();if(!this.analysisViewData.plane&&this.active){const a=null!=i?i:H();if(i=null!=i?x(i,Ht):null,this._pickPlane(t,!0,e,a)){const t=q;let e=!1;null!=i&&(e=g(i.plane,a.plane)<t||g(V(U.get(),i.basis1),V(U.get(),a.basis1))<t),e&&(this._previewPlaneOpacity=0),this._previewPlane=a}}null!=this._previewPlane&&null==this._frameTask&&0===this._previewPlaneOpacity?this._frameTask=p({update:({deltaTime:t})=>{this._previewPlaneOpacity=Math.min(this._previewPlaneOpacity+t/(1e3*W),1),this._updateManipulators(),1===this._previewPlaneOpacity&&this._removeFrameTask()}}):null==this._previewPlane&&null!=this._frameTask?this._removeFrameTask():null!=this._previewPlane&&this._updateManipulators()}_removeFrameTask(){this._frameTask=r(this._frameTask)}_calculatePickRay(t){const e=G(),i=c(t,xt);return wt(this.view.state.camera,i,e),V(e.direction,e.direction),e}_pickMinResult(t){const e=c(t,L.get());return this.view.sceneIntersectionHelper.intersectToolIntersectorScreen(e,this._intersector),this._intersector.results.min}_pickPlane(t,e,i,a){const s=this._pickMinResult(t),n=U.get();if(!s.getIntersectionPoint(n))return!1;const r=s.getTransformedNormal(U.get()),l=this.view.state.camera;g(r,l.viewForward)>0&&M(r,r,-1);const o=rt(n,l),h=(e?1:-1)*o*J,p=M(U.get(),r,h);T(p,p,n);const u=this.analysis.tiltEnabled?lt.TILTED:lt.HORIZONTAL_OR_VERTICAL,c=i[N]?lt.VERTICAL:i[Z]?lt.HORIZONTAL:u;return ot(p,r,o,o,l,c,this.view.renderCoordsHelper,a),!0}_clearPointerMoveTimeout(){this._prevPointerMoveTimeout=r(this._prevPointerMoveTimeout)}_resetPointerMoveTimeout(){this._clearPointerMoveTimeout(),this.shiftManipulator.state|=ht,this.rotateHeadingManipulator.state|=ht,this.rotateTiltManipulator.state|=ht,this._prevPointerMoveTimeout=this._clock.setTimeout((()=>{this.shiftManipulator.state&=~ht,this.rotateHeadingManipulator.state&=~ht,this.rotateTiltManipulator.state&=~ht}),this._pointerMoveTimerMs)}_updateManipulators(){if(bt.disableEngineLayers)return;let t,e=!1;if(null!=this.analysisViewData.plane)t=this.analysisViewData.plane,e=!1;else{if(null==this._previewPlane)return this.shiftManipulator.available=!1,this.rotateHeadingManipulator.available=!1,this.rotateTiltManipulator.available=!1,this.resizeManipulators.forEach((t=>t.available=!1)),this._previewPlaneOutlineVisualElement.visible=!1,void(this._previewPlaneGridVisualElement.visible=!1);t=this._previewPlane,e=!0}const i=pt(t,A.get());e?(this.shiftManipulator.available=!1,this.rotateHeadingManipulator.available=!1,this.rotateTiltManipulator.available=!1,this.resizeManipulators.forEach((t=>t.available=!1)),this._previewPlaneOutlineVisualElement.attached=!0,this._previewPlaneGridVisualElement.attached=!0,this._previewPlaneOutlineVisualElement.visible=!0,this._previewPlaneGridVisualElement.visible=!0):(this.shiftManipulator.available=!0,this.rotateHeadingManipulator.available=!0,this.rotateTiltManipulator.available=this.analysis.tiltEnabled,this.resizeManipulators.forEach((t=>t.available=!0)),ut(this.shiftManipulator,i,t,this.view.state.camera),ct(this.rotateHeadingManipulator,i,t,this.view.renderCoordsHelper),dt(this.rotateTiltManipulator,i,t),this.resizeManipulators.forEach(((e,a)=>_t(e,this._resizeHandles[a],i,t))),this._previewPlaneOutlineVisualElement.visible=!1,this._previewPlaneGridVisualElement.visible=!1);const a=b(U.get(),w(t.basis1),w(t.basis2),1),s=y(A.get(),a),n=m(s,i,s);this._previewPlaneOutlineVisualElement.transform=n,this._previewPlaneGridVisualElement.transform=n,this._updateMaterials()}_updateMaterials(){const t=e.toUnitRGBA(this._settings.plane.outlineColor);t[3]*=this._previewPlaneOpacity;const i=e.toUnitRGBA(this._settings.plane.color);i[3]*=this._previewPlaneOpacity,this._previewPlaneOutlineVisualElement.color=t,this._previewPlaneGridVisualElement.backgroundColor=i,this._previewPlaneGridVisualElement.gridColor=S}_updateManipulatorsInteractive(t){if(!t.grabbing)return this.shiftManipulator.interactive=!0,this.rotateHeadingManipulator.interactive=!0,this.rotateTiltManipulator.interactive=!0,void this.resizeManipulators.forEach((t=>{t.interactive=!0}));this.shiftManipulator.interactive=this.shiftManipulator===t,this.rotateHeadingManipulator.interactive=this.rotateHeadingManipulator===t,this.rotateTiltManipulator.interactive=this.rotateTiltManipulator===t,this.resizeManipulators.forEach((e=>{e.interactive=e===t}))}testData(){return{plane:this.analysisViewData.plane,setPointerMoveTimerMs:t=>{this._pointerMoveTimerMs=t}}}};function Et(t,e,i,a){const s=vt(i,R(a),t.direction,j()),n=E();return O(s,t,n)?{type:"shift",creatingPointerId:e,hasBeenDragged:!1,shiftPlane:s,depth:0,startPoint:n}:null}function St(t){return"mouse"!==t.pointerType||0===t.button}kt.disableEngineLayers=!1,t([_()],kt.prototype,"_clock",void 0),t([_({constructOnly:!0})],kt.prototype,"view",void 0),t([_()],kt.prototype,"analysisViewData",void 0),t([_({readOnly:!0})],kt.prototype,"state",null),t([_({readOnly:!0})],kt.prototype,"cursor",null),t([_()],kt.prototype,"analysis",null),t([_()],kt.prototype,"removeIncompleteOnCancel",void 0),t([_({readOnly:!0})],kt.prototype,"layersMode",void 0),t([_({value:null})],kt.prototype,"inputState",null),t([_()],kt.prototype,"_isPlacingSlicePlane",null),t([_()],kt.prototype,"_creatingPointerId",null),kt=bt=t([v("esri.views.3d.analysis.Slice.SliceTool")],kt);const Ht=H(),xt=d(),Rt=kt;export{Rt as default};
|
|
5
|
+
import{_ as t}from"../../../../chunks/tslib.es6.js";import e from"../../../../Color.js";import i from"../../../../analysis/SlicePlane.js";import{clock as a}from"../../../../core/clock.js";import{releaseMaybe as s,destroyMaybe as n,removeMaybe as r}from"../../../../core/maybe.js";import{watch as l,sync as o,syncAndInitial as h}from"../../../../core/reactiveUtils.js";import{addFrameTask as p}from"../../../../core/scheduling.js";import{createScreenPoint as u,screenPointObjectToArray as c,createScreenPointArray as d}from"../../../../core/screenUtils.js";import{property as _}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as v}from"../../../../core/accessorSupport/decorators/subclass.js";import{c as P,E as y,m as g}from"../../../../chunks/mat4.js";import{j as m,l as w,c as f,i as M,g as T,e as D,n as V,s as b}from"../../../../chunks/vec3.js";import{g as k,c as E}from"../../../../chunks/vec3f64.js";import{Z as S}from"../../../../chunks/vec4f64.js";import{a as H,c as x,n as R,f as I}from"../../../../chunks/boundedPlane.js";import{signedDistance as C,create as j,intersectRay as O,normal as z}from"../../../../geometry/support/plane.js";import{create as G}from"../../../../geometry/support/ray.js";import{sv3d as U,sm4d as A,sv2d as L}from"../../../../geometry/support/vectorStacks.js";import{getRotateHeadingTexture as B,getTiltRotateTexture as K}from"../images/Factory.js";import{Settings as F}from"./settings.js";import{POINTER_MOVE_TIMER_MS as N,PLANE_PREVIEW_OUTLINE_WIDTH as Z,forceVerticalModifier as q,forceHorizontalModifier as W,PREVIEW_FADE_DOT_THRESHOLD as J,PREVIEW_FADE_DURATION_SECONDS as Q,INITIAL_DEPTH_OFFSET_FRAC as X}from"./sliceToolConfig.js";import{createShiftManipulator as Y,OffsetMode as $,createRotateManipulator as tt,createResizeManipulator as et,createGridVisualElement as it,createOutlineVisualElement as at,planeToShape as st,createRotatePlane as nt,RotationAxis as rt,resizePlane as lt,calculatePlaneHalfSize as ot,SliceOrientation as ht,createPlane as pt,DidPointerMoveRecentlyFlag as ut,calculateBoundedPlaneTranslateRotate as ct,updateShiftRestartHandle as dt,updateRotateHeadingHandle as _t,updateRotateTiltHandle as vt,updateResizeHandle as Pt,createShiftPlane as yt}from"./sliceToolUtils.js";import{calculateInputRotationTransform as gt}from"../../interactive/manipulatorUtils.js";import{screenToRenderPlane as mt}from"../../interactive/editingTools/dragEventPipeline3D.js";import{fromScreen as wt}from"../../support/geometryUtils/ray.js";import{newIntersector as ft}from"../../webgl-engine/lib/Intersector.js";import{StoreResults as Mt}from"../../webgl-engine/lib/IntersectorInterfaces.js";import{AnalysisToolBase as Tt}from"../../../interactive/AnalysisToolBase.js";import{createManipulatorDragEventPipeline as Dt}from"../../../interactive/dragEventPipeline.js";import{createScreenPointFromEvent as Vt}from"../../../support/screenUtils.js";var bt;let kt=bt=class extends Tt{constructor(t){super(t),this._clock=a,this._previewPlaneOpacity=1,this.removeIncompleteOnCancel=!1,this.layersMode="none",this.shiftManipulator=null,this.rotateHeadingManipulator=null,this.rotateTiltManipulator=null,this.resizeManipulators=null,this._frameTask=null,this._pointerMoveTimerMs=N,this._prevPointerMoveTimeout=null,this._previewPlaneGridVisualElement=null,this._previewPlaneOutlineVisualElement=null,this._startPlane=H(),this._previewPlane=null,this._activeKeyModifiers={},this._lastCursorPosition=u(),this._resizeHandles=[{direction:[1,0]},{direction:[1,1]},{direction:[0,1]},{direction:[-1,1]},{direction:[-1,0]},{direction:[-1,-1]},{direction:[0,-1]},{direction:[1,-1]}],this._intersector=ft(t.view.state.viewingMode),this._intersector.options.store=Mt.MIN}initialize(){if(null==this.analysis)throw new Error("SliceTool requires valid analysis, but null was provided.");this._settings=new F(this.view.effectiveTheme);const t=!this.view._stage?.renderView.renderingContext.driverTest.svgPremultipliesAlpha.result,e={accentColor:this._settings.rotateManipulators.color,contrastColor:this._settings.rotateManipulators.contrastColor,preMultiplyAlpha:t};this._rotateHeadingImage=B(this.view.toolViewManager.textures,e),this._rotateTiltImage=K(this.view.toolViewManager.textures,e);const i=t=>{this._updateManipulatorsInteractive(t),t.grabbing||(null!=this.analysisViewData.plane&&x(this.analysisViewData.plane,this._startPlane),this.inputState=null)};this.shiftManipulator=Y(this.view,{offsetMode:$.CENTER_ON_ARROW,calloutColor:this._settings.callouts.color,color:this._settings.shiftManipulator.color,outlineColor:this._settings.shiftManipulator.outlineColor}),this.manipulators.add(this.shiftManipulator),this.shiftManipulator.events.on("grab-changed",(t=>{this._onShiftGrab(t),i(this.shiftManipulator)})),this.addHandles(this._createShiftDragPipeline(this.shiftManipulator)),this.rotateHeadingManipulator=tt(this.view,this._rotateHeadingImage.texture),this.manipulators.add(this.rotateHeadingManipulator),this.rotateHeadingManipulator.events.on("grab-changed",(t=>{this._onRotateHeadingGrab(t),i(this.rotateHeadingManipulator)})),this.addHandles(this._createRotateHeadingDragPipeline(this.rotateHeadingManipulator)),this.rotateTiltManipulator=tt(this.view,this._rotateTiltImage.texture),this.manipulators.add(this.rotateTiltManipulator),this.rotateTiltManipulator.events.on("grab-changed",(t=>{this._onRotateTiltGrab(t),i(this.rotateTiltManipulator)})),this.addHandles(this._createRotateTiltDragPipeline(this.rotateTiltManipulator)),this.resizeManipulators=this._resizeHandles.map(((t,e)=>{const a=et(this.view,t,{color:this._settings.resizeManipulators.color});return a.events.on("grab-changed",(t=>{this._onResizeGrab(t,e),i(a)})),this.addHandles(this._createResizeDragPipeline(a)),a})),this.manipulators.addMany(this.resizeManipulators),this._previewPlaneGridVisualElement=it(this.view),this._previewPlaneOutlineVisualElement=at(this.view),this._previewPlaneOutlineVisualElement.width=Z,this.addHandles(l((()=>[this.analysisViewData.plane,this.analysis.tiltEnabled]),(()=>this._updateManipulators()),o));const a=l((()=>this.state),(t=>{"sliced"===t&&this.finishToolCreation()}),h);this.addHandles([a,l((()=>this.view.state.camera),(()=>this._onCameraChange()))])}destroy(){this._rotateHeadingImage=s(this._rotateHeadingImage),this._rotateTiltImage=s(this._rotateTiltImage),this._removeFrameTask(),this._clearPointerMoveTimeout(),this._previewPlaneOutlineVisualElement=n(this._previewPlaneOutlineVisualElement),this._previewPlaneGridVisualElement=n(this._previewPlaneGridVisualElement)}get state(){const t=!!this.analysisViewData.plane,e=!!this.inputState;return t?t&&e?"slicing":t&&!e?"sliced":"ready":"ready"}get cursor(){return this._isPlacingSlicePlane||"exclude"===this.layersMode?"crosshair":null!=this._creatingPointerId?"grabbing":null}set analysis(t){if(null==t)throw new Error("SliceTool requires valid analysis, but null was provided.");this.removeHandles("analysis"),this._set("analysis",t)}get inputState(){return this._get("inputState")}set inputState(t){this._set("inputState",t),this.analysisViewData.showGrid=null!=t&&"resize"===t.type,this._updateMaterials()}get _isPlacingSlicePlane(){return!this.inputState&&!this.analysisViewData.plane&&this.active}get _creatingPointerId(){return null!=this.inputState&&"shift"===this.inputState.type?this.inputState.creatingPointerId:null}enterExcludeLayerMode(){null!=this.analysisViewData.plane&&(this._set("layersMode","exclude"),this.active||(this.view.activeTool=this))}exitExcludeLayerMode(){null!=this.analysisViewData.plane&&(this._set("layersMode","none"),this.active&&(this.view.activeTool=null))}onDeactivate(){this._set("layersMode","none"),this._updatePreviewPlane(null)}onShow(){this._updateVisibility(!0)}onHide(){this._updateVisibility(!1)}_updateVisibility(t){this._updateManipulators(),t||this._clearPointerMoveTimeout()}onInputEvent(t){switch(t.type){case"pointer-drag":if(!St(t))return;this._isPlacingSlicePlane?this._onClickPlacePlane(t)&&t.stopPropagation():this._onPointerDrag(t)&&t.stopPropagation();break;case"pointer-move":this._onPointerMove(t);break;case"pointer-up":this._onPointerUp(t)&&t.stopPropagation();break;case"immediate-click":if(!St(t))return;this._onClickPlacePlane(t)&&t.stopPropagation();break;case"click":if(!St(t))return;this._onClickExcludeLayer(t)&&t.stopPropagation();break;case"drag":this.inputState&&t.stopPropagation();break;case"key-down":this._onKeyDown(t)&&t.stopPropagation();break;case"key-up":this._onKeyUp(t)&&t.stopPropagation()}}onEditableChange(){this.analysisViewData.editable=this.internallyEditable}_onPointerDrag(t){const e=this.inputState;if(t.pointerId===this._creatingPointerId&&null!=e&&"shift"===e.type){const i=Vt(t);return this.shiftManipulator.events.emit("drag",{action:e.hasBeenDragged?"update":"start",pointerType:t.pointerType,start:i,screenPoint:i}),e.hasBeenDragged=!0,!0}return!1}_onPointerMove(t){this._lastCursorPosition.x=t.x,this._lastCursorPosition.y=t.y,this._resetPointerMoveTimeout(),"touch"!==t.pointerType&&this._updatePreviewPlane(Vt(t),this._activeKeyModifiers)}_onCameraChange(){this._updatePreviewPlane(this._lastCursorPosition,this._activeKeyModifiers),this._updateManipulators()}_onPointerUp(t){if(t.pointerId===this._creatingPointerId&&null!=this.analysisViewData.plane){const e=Vt(t);return this.shiftManipulator.events.emit("drag",{action:"end",start:e,screenPoint:e}),x(this.analysisViewData.plane,this._startPlane),this.inputState=null,!0}return!1}_onClickPlacePlane(t){if("exclude"===this.layersMode)return!1;if(this._isPlacingSlicePlane){const e=Vt(t),a=H();if(this._pickPlane(e,!1,this._activeKeyModifiers,a)){if("pointer-drag"===t.type){const i=this._calculatePickRay(e);this.inputState=Et(i,t.pointerId,a.origin,a)}return x(a,this._startPlane),this.analysis.shape=st(a,this.view,this.view.spatialReference,new i),!0}}return!1}_onClickExcludeLayer(t){return!("exclude"!==this.layersMode||!this.created)&&(this.view.hitTest(Vt(t)).then((t=>{if(t.results.length){const e=t.results[0],i="graphic"===e?.type&&e.graphic;if(i){const t=i.sourceLayer||i.layer;t&&this.analysis.excludedLayers.push(t)}}else t.ground.layer?this.analysis.excludedLayers.push(t.ground.layer):this.analysis.excludeGroundSurface=!0})),this._set("layersMode","none"),this.active&&(this.view.activeTool=null),!0)}_onKeyDown(t){return(t.key===q||t.key===W)&&(this._activeKeyModifiers[t.key]=!0,null!=this._previewPlane&&this._updatePreviewPlane(this._lastCursorPosition,this._activeKeyModifiers),!0)}_onKeyUp(t){return!(t.key!==q&&t.key!==W||!this._activeKeyModifiers[t.key])&&(delete this._activeKeyModifiers[t.key],null!=this._previewPlane&&this._updatePreviewPlane(this._lastCursorPosition,this._activeKeyModifiers),!0)}_onShiftGrab(t){if("start"!==t.action||null==this.analysisViewData.plane||!t.screenPoint)return;const e=this._calculatePickRay(t.screenPoint);x(this.analysisViewData.plane,this._startPlane),this.inputState=Et(e,null,this.shiftManipulator.renderLocation,this.analysisViewData.plane)}_createShiftDragPipeline(t){return Dt(t,((t,e,i)=>{const a=this.inputState;if(null==a||"shift"!==a.type)return;const s=null!=this.analysisViewData.plane?x(this.analysisViewData.plane,H()):null;e.next(mt(this.view,a.shiftPlane)).next(this._shiftDragAdjustSensitivity(a)).next(this._shiftDragUpdatePlane(a)),i.next((()=>{null!=s&&this._updateBoundedPlane(s)}))}))}_shiftDragAdjustSensitivity(t){return e=>{if(null==this.analysisViewData.plane)return null;const i=.001,a=Math.min((1-Math.abs(m(R(this.analysisViewData.plane),e.ray.direction)/w(e.ray.direction)))/i,1),s=-C(this._startPlane.plane,e.renderEnd),n=-C(this._startPlane.plane,t.startPoint);return t.depth=t.depth*(1-a)+s*a-n,e}}_shiftDragUpdatePlane(t){return()=>{if(null==this.analysisViewData.plane)return;const e=f(U.get(),this._startPlane.origin),i=f(U.get(),R(this._startPlane));M(i,i,-t.depth),T(i,i,e);const a=I(i,this.analysisViewData.plane.basis1,this.analysisViewData.plane.basis2,H());this._updateBoundedPlane(a)}}_onRotateHeadingGrab(t){if("start"!==t.action||null==this.analysisViewData.plane||!t.screenPoint)return;const e=nt(this.analysisViewData.plane,this.view.renderCoordsHelper,rt.HEADING,j()),i=this._calculatePickRay(t.screenPoint),a=E();O(e,i,a)&&(x(this.analysisViewData.plane,this._startPlane),this.inputState={type:"rotate",rotatePlane:e,startPoint:a})}_createRotateHeadingDragPipeline(t){return Dt(t,((t,e,i)=>{const a=this.inputState;if(null==a||"rotate"!==a.type)return;const s=null!=this.analysisViewData.plane?x(this.analysisViewData.plane,H()):null;e.next(mt(this.view,a.rotatePlane)).next(this._rotateDragRenderPlaneToRotate(a)).next(this._rotateDragUpdatePlaneFromRotate()),i.next((()=>{null!=s&&this._updateBoundedPlane(s)}))}))}_onRotateTiltGrab(t){if("start"!==t.action||null==this.analysisViewData.plane||!t.screenPoint)return;const e=nt(this.analysisViewData.plane,this.view.renderCoordsHelper,rt.TILT,j()),i=this._calculatePickRay(t.screenPoint),a=E();O(e,i,a)&&(x(this.analysisViewData.plane,this._startPlane),this.inputState={type:"rotate",rotatePlane:e,startPoint:a})}_createRotateTiltDragPipeline(t){return Dt(t,((t,e,i)=>{const a=this.inputState;if(null==a||"rotate"!==a.type)return;const s=null!=this.analysisViewData.plane?x(this.analysisViewData.plane,H()):null;e.next(mt(this.view,a.rotatePlane)).next(this._rotateDragRenderPlaneToRotate(a)).next(this._rotateDragUpdatePlaneFromRotate()),i.next((()=>{null!=s&&this._updateBoundedPlane(s)}))}))}_rotateDragRenderPlaneToRotate(t){return e=>{if(null==this.analysisViewData.plane)return null;const i=z(t.rotatePlane),a=gt(t.startPoint,e.renderEnd,this.analysisViewData.plane.origin,i);return{...e,rotateAxis:i,rotateAngle:a}}}_rotateDragUpdatePlaneFromRotate(){return t=>{if(null==this.analysisViewData.plane)return;const e=P(A.get(),t.rotateAngle,t.rotateAxis);if(null==e)return;const i=D(U.get(),this._startPlane.basis1,e),a=D(U.get(),this._startPlane.basis2,e),s=I(this.analysisViewData.plane.origin,i,a,H());this._updateBoundedPlane(s)}}_onResizeGrab(t,e){if("start"!==t.action||null==this.analysisViewData.plane||!t.screenPoint)return;const i=this._calculatePickRay(t.screenPoint),a=U.get();O(this.analysisViewData.plane.plane,i,a)&&(x(this.analysisViewData.plane,this._startPlane),this.inputState={type:"resize",activeHandleIdx:e,startPoint:k(a)})}_createResizeDragPipeline(t){return Dt(t,((t,e,i)=>{const a=this.inputState;if(null==a||"resize"!==a.type||null==this.analysisViewData.plane)return;const s=x(this.analysisViewData.plane,H());e.next(mt(this.view,this.analysisViewData.plane.plane)).next(this._resizeDragUpdatePlane(a)),i.next((()=>{this._updateBoundedPlane(s)}))}))}_resizeDragUpdatePlane(t){return e=>{if(null==this.analysisViewData.plane)return;const i=this._resizeHandles[t.activeHandleIdx],a=lt(i,t.startPoint,e.renderEnd,this.view.state.camera,this._startPlane,x(this.analysisViewData.plane));this._updateBoundedPlane(a)}}_updateBoundedPlane(t){const e=this.analysisViewData;if(null==e)throw new Error("valid internal object expected");e.plane=t}_updatePreviewPlane(t,e={}){let i=this._previewPlane;if(this._previewPlane=null,null==t)return this._removeFrameTask(),void this._updateManipulators();if(!this.analysisViewData.plane&&this.active){const a=null!=i?i:H();if(i=null!=i?x(i,Ht):null,this._pickPlane(t,!0,e,a)){const t=J;let e=!1;null!=i&&(e=m(i.plane,a.plane)<t||m(V(U.get(),i.basis1),V(U.get(),a.basis1))<t),e&&(this._previewPlaneOpacity=0),this._previewPlane=a}}null!=this._previewPlane&&null==this._frameTask&&0===this._previewPlaneOpacity?this._frameTask=p({update:({deltaTime:t})=>{this._previewPlaneOpacity=Math.min(this._previewPlaneOpacity+t/(1e3*Q),1),this._updateManipulators(),1===this._previewPlaneOpacity&&this._removeFrameTask()}}):null==this._previewPlane&&null!=this._frameTask?this._removeFrameTask():null!=this._previewPlane&&this._updateManipulators()}_removeFrameTask(){this._frameTask=r(this._frameTask)}_calculatePickRay(t){const e=G(),i=c(t,xt);return wt(this.view.state.camera,i,e),V(e.direction,e.direction),e}_pickMinResult(t){const e=c(t,L.get());return this.view.sceneIntersectionHelper.intersectToolIntersectorScreen(e,this._intersector),this._intersector.results.min}_pickPlane(t,e,i,a){const s=this._pickMinResult(t),n=U.get();if(!s.getIntersectionPoint(n))return!1;const r=s.getTransformedNormal(U.get()),l=this.view.state.camera;m(r,l.viewForward)>0&&M(r,r,-1);const o=ot(n,l),h=(e?1:-1)*o*X,p=M(U.get(),r,h);T(p,p,n);const u=this.analysis.tiltEnabled?ht.TILTED:ht.HORIZONTAL_OR_VERTICAL,c=i[q]?ht.VERTICAL:i[W]?ht.HORIZONTAL:u;return pt(p,r,o,o,l,c,this.view.renderCoordsHelper,a),!0}_clearPointerMoveTimeout(){this._prevPointerMoveTimeout=r(this._prevPointerMoveTimeout)}_resetPointerMoveTimeout(){this._clearPointerMoveTimeout(),this.shiftManipulator.state|=ut,this.rotateHeadingManipulator.state|=ut,this.rotateTiltManipulator.state|=ut,this._prevPointerMoveTimeout=this._clock.setTimeout((()=>{this.shiftManipulator.state&=~ut,this.rotateHeadingManipulator.state&=~ut,this.rotateTiltManipulator.state&=~ut}),this._pointerMoveTimerMs)}_updateManipulators(){if(bt.disableEngineLayers)return;let t,e=!1;if(null!=this.analysisViewData.plane)t=this.analysisViewData.plane,e=!1;else{if(null==this._previewPlane)return this.shiftManipulator.available=!1,this.rotateHeadingManipulator.available=!1,this.rotateTiltManipulator.available=!1,this.resizeManipulators.forEach((t=>t.available=!1)),this._previewPlaneOutlineVisualElement.visible=!1,void(this._previewPlaneGridVisualElement.visible=!1);t=this._previewPlane,e=!0}const i=ct(t,A.get());e?(this.shiftManipulator.available=!1,this.rotateHeadingManipulator.available=!1,this.rotateTiltManipulator.available=!1,this.resizeManipulators.forEach((t=>t.available=!1)),this._previewPlaneOutlineVisualElement.attached=!0,this._previewPlaneGridVisualElement.attached=!0,this._previewPlaneOutlineVisualElement.visible=!0,this._previewPlaneGridVisualElement.visible=!0):(this.shiftManipulator.available=!0,this.rotateHeadingManipulator.available=!0,this.rotateTiltManipulator.available=this.analysis.tiltEnabled,this.resizeManipulators.forEach((t=>t.available=!0)),dt(this.shiftManipulator,i,t,this.view.state.camera),_t(this.rotateHeadingManipulator,i,t,this.view.renderCoordsHelper),vt(this.rotateTiltManipulator,i,t),this.resizeManipulators.forEach(((e,a)=>Pt(e,this._resizeHandles[a],i,t))),this._previewPlaneOutlineVisualElement.visible=!1,this._previewPlaneGridVisualElement.visible=!1);const a=b(U.get(),w(t.basis1),w(t.basis2),1),s=y(A.get(),a),n=g(s,i,s);this._previewPlaneOutlineVisualElement.transform=n,this._previewPlaneGridVisualElement.transform=n,this._updateMaterials()}_updateMaterials(){const t=e.toUnitRGBA(this._settings.plane.outlineColor);t[3]*=this._previewPlaneOpacity;const i=e.toUnitRGBA(this._settings.plane.color);i[3]*=this._previewPlaneOpacity,this._previewPlaneOutlineVisualElement.color=t,this._previewPlaneGridVisualElement.backgroundColor=i,this._previewPlaneGridVisualElement.gridColor=S}_updateManipulatorsInteractive(t){if(!t.grabbing)return this.shiftManipulator.interactive=!0,this.rotateHeadingManipulator.interactive=!0,this.rotateTiltManipulator.interactive=!0,void this.resizeManipulators.forEach((t=>{t.interactive=!0}));this.shiftManipulator.interactive=this.shiftManipulator===t,this.rotateHeadingManipulator.interactive=this.rotateHeadingManipulator===t,this.rotateTiltManipulator.interactive=this.rotateTiltManipulator===t,this.resizeManipulators.forEach((e=>{e.interactive=e===t}))}testData(){return{plane:this.analysisViewData.plane,setPointerMoveTimerMs:t=>{this._pointerMoveTimerMs=t}}}};function Et(t,e,i,a){const s=yt(i,R(a),t.direction,j()),n=E();return O(s,t,n)?{type:"shift",creatingPointerId:e,hasBeenDragged:!1,shiftPlane:s,depth:0,startPoint:n}:null}function St(t){return"mouse"!==t.pointerType||0===t.button}kt.disableEngineLayers=!1,t([_()],kt.prototype,"_clock",void 0),t([_({constructOnly:!0})],kt.prototype,"view",void 0),t([_()],kt.prototype,"analysisViewData",void 0),t([_({readOnly:!0})],kt.prototype,"state",null),t([_({readOnly:!0})],kt.prototype,"cursor",null),t([_()],kt.prototype,"analysis",null),t([_()],kt.prototype,"removeIncompleteOnCancel",void 0),t([_({readOnly:!0})],kt.prototype,"layersMode",void 0),t([_({value:null})],kt.prototype,"inputState",null),t([_()],kt.prototype,"_isPlacingSlicePlane",null),t([_()],kt.prototype,"_creatingPointerId",null),kt=bt=t([v("esri.views.3d.analysis.Slice.SliceTool")],kt);const Ht=H(),xt=d(),Rt=kt;export{Rt as default};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import e from"../../../../Color.js";import"../../../../geometry.js";import t from"../../../../analysis/SlicePlane.js";import"../../../../core/has.js";import n from"../../../../core/Logger.js";import{rad2deg as o,deg2rad as i}from"../../../../core/mathUtils.js";import{castRenderScreenPointArray3 as r}from"../../../../core/screenUtils.js";import{o as s,b as a,k as c,m as l,r as u,i as d,w as m,F as g}from"../../../../chunks/mat4.js";import{c as p}from"../../../../chunks/mat4f64.js";import{r as f}from"../../../../chunks/quat.js";import{b,i as h,d as T,c as w,n as A,e as O,l as R,g as I,s as E,p as j,A as C}from"../../../../chunks/vec3.js";import{a as L,c as U,f as v}from"../../../../chunks/vec3f64.js";import{tryProjectWithZConversion as _}from"../../../../geometry/projection.js";import{Axis as M}from"../../../../geometry/support/Axis.js";import{r as P,f as N,i as V,a as y,n as S,u as G}from"../../../../chunks/boundedPlane.js";import{fromVectorsAndPoint as k,fromPositionAndNormal as D}from"../../../../geometry/support/plane.js";import{create as H}from"../../../../geometry/support/ray.js";import{angleAroundAxis as B}from"../../../../geometry/support/vector.js";import{sv3d as x,sm4d as F,sq4d as X}from"../../../../geometry/support/vectorStacks.js";import{CalloutStyle as Y,PlaneStyle as Z}from"./settings.js";import{VERTICAL_DOT_THRESHOLD as W,SMALL_ANGLE_DOT_THRESHOLD as q,PLANE_MIN_BASIS_SCREEN_LEN2 as z,INITIAL_PLANE_HALF_SIZE_VIEW_PROPORTION as $,SHIFT_RESTART_OFFSET_DISTANCE as J,RESIZE_HANDLE_EDGE_PADDING_FRAC as K,SHIFT_RESTART_TIP_RADIUS as Q,PLANE_OUTLINE_WIDTH as ee,RESIZE_HANDLE_CORNER_INPUT_RADIUS as te,RESIZE_HANDLE_EDGE_INPUT_RADIUS as ne,SHIFT_RESTART_TIP_LENGTH as oe,SHIFT_RESTART_ARROW_LENGTH as ie,SHIFT_RESTART_ARROW_OUTLINE_WIDTH as re,RESIZE_HANDLE_CORNER_WIDTH as se,RESIZE_HANDLE_EDGE_WIDTH as ae,DISPLAY_FOCUS_MULTIPLIER as ce,SHIFT_RESTART_TUBE_RADIUS as le,SHIFT_RESTART_TUBE_FOCUS_MULTIPLIER as ue,SHIFT_RESTART_TIP_FOCUS_MULTIPLIER as de}from"./sliceToolConfig.js";import{applyProjectionAndElevationAlignment as me}from"../support/projectionUtils.js";import{Manipulator3D as ge}from"../../interactive/Manipulator3D.js";import{calculateTranslateRotateFromBases as pe,createRotateManipulator as fe,worldScaledManipulatorSettings as be}from"../../interactive/manipulatorUtils.js";import{RenderObject as he}from"../../interactive/RenderObject.js";import{LineVisualElement as Te}from"../../interactive/visualElements/LineVisualElement.js";import{SlicePlaneVisualElement as we}from"../../interactive/visualElements/SlicePlaneVisualElement.js";import{RenderCoordsHelper as Ae}from"../../support/RenderCoordsHelper.js";import{fromRender as Oe}from"../../support/geometryUtils/ray.js";import{CullFaceOptions as Re}from"../../webgl-engine/lib/basicInterfaces.js";import{createPolylineGeometry as Ie,createConeGeometry as Ee,createPathExtrusionGeometry as je}from"../../webgl-engine/lib/GeometryUtil.js";import{RenderOccludedFlag as Ce}from"../../webgl-engine/lib/Material.js";import{ColorMaterial as Le}from"../../webgl-engine/materials/ColorMaterial.js";import{NativeLineMaterial as Ue}from"../../webgl-engine/materials/NativeLineMaterial.js";import{RibbonLineMaterial as ve}from"../../webgl-engine/materials/RibbonLineMaterial.js";import{ManipulatorStateCustomFlags as _e,ManipulatorStateFlags as Me}from"../../../interactive/interfaces.js";import Pe from"../../../../geometry/Extent.js";function Ne(e,t,n,o,i,r,s,a){return Ve(t,s.worldUpAtPosition(e,x.get()),i,r,a.basis1,a.basis2),b(a.basis1,a.basis1,n),b(a.basis2,a.basis2,o),h(a.origin,e),k(a.basis2,a.basis1,a.origin,a.plane),a}function Ve(e,t,n,o,i,r){const s=T(e,t),a=x.get(),c=x.get();switch(o===ft.HORIZONTAL_OR_VERTICAL?Math.abs(s)>W?ft.HORIZONTAL:ft.VERTICAL:o){case ft.VERTICAL:{const o=Math.abs(s)<=q?e:n.viewUp;w(a,o,t),h(c,t);break}case ft.HORIZONTAL:w(a,n.viewUp,t),w(c,t,a);break;case ft.TILTED:{const o=Math.abs(s)<=q?t:n.viewUp;w(a,o,e),w(c,e,a);break}}const l=w(x.get(),a,c);T(l,n.viewForward)>0&&b(c,c,-1),A(i,a),A(r,c)}function ye(e,t,n){const o=t.worldUpAtPosition(e.origin,x.get()),i=e.basis1,r=ct(e,o),s=Math.round(r/Tt)*Tt;return P(e,s-r,i,n)}function Se(e,t,n,o,i,r){const s=h(x.get(),i.origin);O(s,s,b(x.get(),i.basis1,e.direction[0]<0?1:-1)),O(s,s,b(x.get(),i.basis2,e.direction[1]<0?1:-1));const a=R(i.basis1),c=R(i.basis2),l=I(x.get(),n,s),u=I(x.get(),t,s);let d=0,m=0;if(Je(e)){const t=$e(i),n=$e(r);d=a-.5*e.direction[0]*T(i.basis1,u)/a,m=c-.5*e.direction[1]*T(i.basis2,u)/c;const o=n/t;d*=o,m*=o}const g=d+.5*e.direction[0]*T(i.basis1,l)/a,p=m+.5*e.direction[1]*T(i.basis2,l)/c,f=b(x.get(),i.basis1,g/a),w=b(x.get(),i.basis2,p/c);(g<=0||qe(r.origin,f,o)<=z)&&h(f,r.basis1),(p<=0||qe(r.origin,w,o)<=z)&&h(w,r.basis2);const A=h(x.get(),s);return O(A,A,b(x.get(),f,e.direction[0]<0?-1:1)),O(A,A,b(x.get(),w,e.direction[1]<0?-1:1)),N(A,f,w,r)}function Ge(e,t){return $*Math.min(t.width,t.height)*t.computeRenderPixelSizeAt(e)}function ke(e,t,n,o){const i=w(x.get(),t,n);return w(i,i,t),D(e,i,o)}function De(e,t){return pe(e.basis1,e.basis2,e.origin,t)}function He(e,t,n,o){const i=t.worldUpAtPosition(e.origin,x.get()),r=x.get();switch(n){case pt.HEADING:h(r,i);break;case pt.TILT:h(r,e.basis1)}return D(e.origin,r,o)}function Be(e,t,n,o){const i=We(n,Ze.NEGATIVE_X),a=F.get();s(a,t,i.edge*Math.PI/2);const c=A(x.get(),i.basis);let l=b(x.get(),c,i.direction*o.computeScreenPixelSizeAt(i.position)*J);O(l,l,i.position);const u=o.projectToRenderScreen(l,r(x.get())),d=xe(o,u);Oe(o,u,ht),A(ht.direction,ht.direction);const m=x.get();!d&&V(n,ht,m)&&(l=m),a[12]=0,a[13]=0,a[14]=0,e.modelTransform=a,e.renderLocation=L(l),d?e.state|=bt:e.state&=~bt}function xe(e,t){const[n,o,i,r]=e.viewport,s=Math.min(i,r)/16;let a=!0;return t[0]<n+s?(t[0]=n+s,a=!1):t[0]>n+i-s&&(t[0]=n+i-s,a=!1),t[1]<o+s?(t[1]=o+s,a=!1):t[1]>o+r-s&&(t[1]=o+r-s,a=!1),a}function Fe(e,t,n,o){const i=R(o.basis1),r=R(o.basis2),s=ze(o),u=$e(o),d=E(x.get(),0,0,0);O(d,b(x.get(),o.basis1,t.direction[0]),b(x.get(),o.basis2,t.direction[1])),O(d,o.origin,d);let m=0,g=1;if(Je(t))1===t.direction[0]&&-1===t.direction[1]?m=Tt:1===t.direction[0]&&1===t.direction[1]?m=Math.PI:-1===t.direction[0]&&1===t.direction[1]&&(m=3*Math.PI/2),g=u;else{const e=0!==t.direction[0]?1:2;m=1===e?Tt:0,g=(1===e?r:i)-s}const p=a(F.get(),m);c(p,p,E(x.get(),g,g,g)),l(p,n,p),p[12]=0,p[13]=0,p[14]=0,e.modelTransform=p,e.renderLocation=d}function Xe(e,t,n,o){const i=o.worldUpAtPosition(n.origin,x.get()),r=We(n,Ze.POSITIVE_X),s=a(F.get(),r.edge*Math.PI/2);u(s,s,-ct(n,i)),l(s,t,s),s[12]=0,s[13]=0,s[14]=0,e.modelTransform=s,e.renderLocation=r.position}function Ye(e,t,n){const o=We(n,Ze.POSITIVE_Y),i=a(F.get(),o.edge*Math.PI/2);u(i,i,Tt),l(i,t,i),i[12]=0,i[13]=0,i[14]=0,e.modelTransform=i,e.renderLocation=o.position}var Ze;function We(e,t){switch(t){case Ze.POSITIVE_X:return{basis:e.basis1,direction:1,position:O(x.get(),e.origin,e.basis1),edge:t};case Ze.POSITIVE_Y:return{basis:e.basis2,direction:1,position:O(x.get(),e.origin,e.basis2),edge:t};case Ze.NEGATIVE_X:return{basis:e.basis1,direction:-1,position:I(x.get(),e.origin,e.basis1),edge:t};case Ze.NEGATIVE_Y:return{basis:e.basis2,direction:-1,position:I(x.get(),e.origin,e.basis2),edge:t}}}function qe(e,t,n){const o=n.projectToRenderScreen(O(x.get(),e,t),r(x.get())),i=n.projectToRenderScreen(I(x.get(),e,t),r(x.get()));return j(I(o,o,i))}function ze(e){const t=R(e.basis1),n=R(e.basis2);return K*Math.min(t,n)}function $e(e){return ze(e)}function Je(e){return 0!==e.direction[0]&&0!==e.direction[1]}function Ke(t,n){const o=n.offsetMode===Ot.CENTER_ON_CALLOUT?J:0,i=[v(o,0,-ie/2),v(o,0,ie/2)],r=rt(i,!0),s=(e,t)=>ot(i,e,t,n),a=s(0,!1),c=s(re,!0),l=new Ue({color:e.toUnitRGBA(n.calloutColor),renderOccluded:Ce.OccludeAndTransparent,isDecoration:!0}),u=Ie(l,[[o,0,0],[o-J,0,0]]),d=Ie(l,[[o,0,0],[o-J,0,0]]);return new ge({view:t,renderObjects:[...a.normal.map((e=>new he(e,Me.Unfocused|gt))),...c.normal.map((e=>new he(e,Me.Unfocused|gt))),new he(u,Me.Unfocused|gt|bt),...a.focused.map((e=>new he(e,Me.Focused|gt))),...c.focused.map((e=>new he(e,Me.Focused|gt))),new he(d,Me.Focused|gt|bt)],autoScaleRenderObjects:!1,collisionType:{type:"line",paths:[r]},collisionPriority:1,radius:Q,state:gt})}function Qe(t,n){const o=new Y(t.effectiveTheme),i=fe(t,{calloutColor:e.toUnitRGBA(o.color),customStateMask:gt,texture:n});return i.state=gt,i}function et(t){const n=[[-1,-1,0],[1,-1,0],[1,1,0],[-1,1,0],[-1,-1,0]],o=new Z(t.effectiveTheme);return new Te({view:t,attached:!1,color:e.toUnitRGBA(o.outlineColor),width:ee,renderOccluded:Ce.OccludeAndTransparent,geometry:[n],isDecoration:!0})}function tt(t){const n=new Z(t.effectiveTheme);return new we({view:t,attached:!1,backgroundColor:e.toUnitRGBA(n.color),gridColor:e.toUnitRGBA(n.gridColor),gridWidth:4,renderOccluded:Ce.OccludeAndTransparent,isDecoration:!0})}function nt(t,n,o){const i=Je(n),r=i?[v(1,0,0),v(0,0,0),v(0,1,0)]:[v(1,0,0),v(-1,0,0)],s=e.toUnitRGBA(o.color),a=e=>new ve({color:s,width:e,renderOccluded:Ce.OccludeAndTransparent,isDecoration:!0}),c=()=>new Ue({color:s,renderOccluded:Ce.OccludeAndTransparent,isDecoration:!0}),l=i?se:ae,u=l*ce,d=ae,m=e=>e>1?a(e):c(),g=[new he(Ie(m(l),r),Me.Unfocused|wt),new he(Ie(m(u),r),Me.Focused|wt),new he(Ie(m(d),r),At)],p=new ge({view:t,renderObjects:g,collisionType:{type:"line",paths:[r]},radius:i?te:ne,...be});return p.state=wt,p}function ot(t,n,o,i){const r=e.blendColors(i.color,i.outlineColor,.4),s=e.blendColors(i.color,i.outlineColor,.14),a=new Le({color:e.toUnitRGBA(i.color),cullFace:Re.Back,renderOccluded:Ce.Opaque,isDecoration:!0}),u=new Le({color:e.toUnitRGBA(r),cullFace:Re.Back,renderOccluded:Ce.Opaque,isDecoration:!0}),h=new Le({color:e.toUnitRGBA(s),cullFace:Re.Back,renderOccluded:Ce.Opaque,isDecoration:!0}),T=new Le({color:e.toUnitRGBA(i.outlineColor),transparent:!0,writeDepth:!1,cullFace:Re.Front,renderOccluded:Ce.Transparent,isDecoration:!0}),w=e=>{const i=t.slice(0),r=I(x.get(),i[0],i[1]);A(r,r);const s=I(x.get(),i[i.length-1],i[i.length-2]);if(A(s,s),n>0){const e=b(U(),s,-n);i[i.length-1]=O(e,e,i[i.length-1]);const t=b(U(),r,-n);i[0]=O(t,t,i[0])}const w=e?de:1,R=oe*w,j=Q*w,C=d(F.get());if(n>0){const e=R/4,t=E(x.get(),0,e,0),o=1+n/e;m(C,C,t),c(C,C,E(x.get(),o,o,o)),m(C,C,b(t,t,-1/o))}const L=d(p()),_=v(0,1,0),M=g(p(),f(X.get(),_,s));M[12]=i[i.length-1][0],M[13]=i[i.length-1][1],M[14]=i[i.length-1][2],l(M,M,C);const P=it(le*(e?ue:1)+n,i,o?T:h);P.transformation=L;const N=[P],V=Ee(o?T:a,R,j,24,!1,!1,!0);V.transformation=M,N.push(V);const y=Ee(o?T:u,R,j,24,!1,!0,!1);y.transformation=M,N.push(y);const S=g(p(),f(X.get(),_,r));return S[12]=i[0][0],S[13]=i[0][1],S[14]=i[0][2],l(S,S,C),N.push(V.instantiate({transformation:S})),N.push(y.instantiate({transformation:S})),N};return{normal:w(!1),focused:w(!0)}}function it(e,t,n){const o=[],i=12;for(let r=0;r<i;r++){const t=r/i*2*Math.PI;o.push([Math.cos(t)*e,Math.sin(t)*e])}return je(n,o,t,[],[],!1)}function rt(e,t){const n=I(U(),e[e.length-1],e[e.length-2]);if(A(n,n),b(n,n,oe),O(n,n,e[e.length-1]),t){const t=I(U(),e[0],e[1]);return A(t,t),b(t,t,oe),O(t,t,e[0]),[t,...e,n]}return[...e,n]}function st(e,n,i,r=new t){if(null==e)return null;const{renderCoordsHelper:s}=n,a=s.fromRenderCoords(e.origin,n.spatialReference);if(null==a)return null;const c=_(a,i);if(null==c)return null;r.position=c;const l=2*R(e.basis1),u=2*R(e.basis2),d=Ae.renderUnitScaleFactor(n.spatialReference,i);r.width=l*d,r.height=u*d;const m=s.worldUpAtPosition(e.origin,x.get());return r.tilt=o(ct(e,m)),r.heading=s.headingAtPosition(e.origin,e.basis1)-90,r}function at(e,t,n){if(null==e)return null;const o=e.origin,i=x.get(),r=x.get(),s=x.get(),a=x.get();let c,l,u,d,m,g;O(i,o,e.basis1),O(i,i,e.basis2),O(r,o,e.basis1),C(r,r,e.basis2),C(s,o,e.basis1),C(s,s,e.basis2),C(a,o,e.basis1),O(a,a,e.basis2);for(const p of[i,r,s,a]){const e=t.fromRenderCoords(p,p,n);if(null==e)return null;c=null==c?e[0]:Math.min(c,e[0]),l=null==l?e[0]:Math.max(l,e[0]),u=null==u?e[1]:Math.min(u,e[1]),d=null==d?e[1]:Math.max(d,e[1]),m=null==m?e[2]:Math.min(m,e[2]),g=null==g?e[2]:Math.max(g,e[2])}return new Pe({xmin:c,xmax:l,ymin:u,ymax:d,zmin:m,zmax:g,spatialReference:n})}function ct(e,t){return B(t,e.basis2,e.basis1)+Tt}function lt(e,t,o,r,s,a,c=y()){return a.toRenderCoords(e,c.origin)?(a.worldBasisAtPosition(c.origin,M.X,c.basis1),a.worldBasisAtPosition(c.origin,M.Y,c.basis2),k(c.basis2,c.basis1,c.origin,c.plane),P(c,-i(t),S(c),c),P(c,i(o),c.basis1,c),b(c.basis1,c.basis1,r/2),b(c.basis2,c.basis2,s/2),G(c),c):(n.getLogger("esri.views.3d.analysis.Slice.sliceToolUtils").error(`Failed to project slice plane position, projection from ${e.spatialReference.wkid} is not supported`),null)}function ut(e,t){if(null==e||null==e.position)return null;const n=me(e.position,t.spatialReference,t.elevationProvider);if(null==n)return null;const o=Ae.renderUnitScaleFactor(e.position.spatialReference,t.spatialReference),i=e.width*o,r=e.height*o;return{position:n,heading:e.heading,tilt:e.tilt,renderWidth:i,renderHeight:r}}function dt(e,t,n,o=y()){const i=ut(e,t);return null==i?null:mt(i,t,n,o)}function mt(e,t,n,o=y()){if(null==e)return null;const i=lt(e.position,e.heading,e.tilt,e.renderWidth,e.renderHeight,t.renderCoordsHelper,o);return n.tiltEnabled||null==i||ye(i,t.renderCoordsHelper,i),i}!function(e){e[e.POSITIVE_X=0]="POSITIVE_X",e[e.POSITIVE_Y=1]="POSITIVE_Y",e[e.NEGATIVE_X=2]="NEGATIVE_X",e[e.NEGATIVE_Y=3]="NEGATIVE_Y"}(Ze||(Ze={}));const gt=_e.Custom1;var pt,ft;!function(e){e[e.HEADING=1]="HEADING",e[e.TILT=2]="TILT"}(pt||(pt={})),function(e){e[e.HORIZONTAL_OR_VERTICAL=0]="HORIZONTAL_OR_VERTICAL",e[e.HORIZONTAL=1]="HORIZONTAL",e[e.VERTICAL=2]="VERTICAL",e[e.TILTED=3]="TILTED"}(ft||(ft={}));const bt=_e.Custom2,ht=H(),Tt=Math.PI/2,wt=_e.Custom1,At=_e.Custom2;var Ot;function Rt(e){return null!=("building-scene-3d"===e.type?e:null)}!function(e){e[e.CENTER_ON_CALLOUT=0]="CENTER_ON_CALLOUT",e[e.CENTER_ON_ARROW=1]="CENTER_ON_ARROW"}(Ot||(Ot={}));export{gt as DidPointerMoveRecentlyFlag,bt as IsShiftEdgeOnScreenFlag,Ot as OffsetMode,pt as RotationAxis,ft as SliceOrientation,rt as addArrowTips,De as calculateBoundedPlaneTranslateRotate,$e as calculateDiagonalResizeHandleScale,Ge as calculatePlaneHalfSize,ze as calculateResizeHandlePadding,qe as calculateScreenSpaceBasisLength2,tt as createGridVisualElement,et as createOutlineVisualElement,Ne as createPlane,nt as createResizeManipulator,Qe as createRotateManipulator,He as createRotatePlane,Ke as createShiftManipulator,ke as createShiftPlane,ye as forceHorizontalOrVertical,Je as isDiagonalResizeHandle,Rt as isIBuildingSceneLayerView3D,Ve as normalToBases,at as planeToExtent,st as planeToShape,ut as projectAndElevationAlignShape,mt as projectedShapeToPlane,wt as resizeNormal,At as resizeOutlineOnly,Se as resizePlane,dt as shapeToPlane,Fe as updateResizeHandle,Xe as updateRotateHeadingHandle,Ye as updateRotateTiltHandle,Be as updateShiftRestartHandle};
|
|
5
|
+
import e from"../../../../Color.js";import"../../../../geometry.js";import t from"../../../../analysis/SlicePlane.js";import"../../../../core/has.js";import n from"../../../../core/Logger.js";import{rad2deg as o,deg2rad as i}from"../../../../core/mathUtils.js";import{castRenderScreenPointArray3 as r}from"../../../../core/screenUtils.js";import{o as s,j as a,b as c,m as l,r as u,g as d,w as m,F as g}from"../../../../chunks/mat4.js";import{a as p}from"../../../../chunks/mat4f64.js";import{r as f}from"../../../../chunks/quat.js";import{i as b,c as h,j as T,b as w,n as O,g as A,l as R,f as I,s as E,o as j,r as C}from"../../../../chunks/vec3.js";import{g as L,c as U,f as v}from"../../../../chunks/vec3f64.js";import{tryProjectWithZConversion as _}from"../../../../geometry/projection.js";import{Axis as M}from"../../../../geometry/support/Axis.js";import{r as P,f as N,i as V,a as y,n as S,u as G}from"../../../../chunks/boundedPlane.js";import{fromVectorsAndPoint as k,fromPositionAndNormal as D}from"../../../../geometry/support/plane.js";import{create as H}from"../../../../geometry/support/ray.js";import{angleAroundAxis as B}from"../../../../geometry/support/vector.js";import{sv3d as x,sm4d as F,sq4d as X}from"../../../../geometry/support/vectorStacks.js";import{CalloutStyle as Y,PlaneStyle as Z}from"./settings.js";import{VERTICAL_DOT_THRESHOLD as W,SMALL_ANGLE_DOT_THRESHOLD as q,PLANE_MIN_BASIS_SCREEN_LEN2 as z,INITIAL_PLANE_HALF_SIZE_VIEW_PROPORTION as $,SHIFT_RESTART_OFFSET_DISTANCE as J,RESIZE_HANDLE_EDGE_PADDING_FRAC as K,SHIFT_RESTART_TIP_RADIUS as Q,PLANE_OUTLINE_WIDTH as ee,RESIZE_HANDLE_CORNER_INPUT_RADIUS as te,RESIZE_HANDLE_EDGE_INPUT_RADIUS as ne,SHIFT_RESTART_TIP_LENGTH as oe,SHIFT_RESTART_ARROW_LENGTH as ie,SHIFT_RESTART_ARROW_OUTLINE_WIDTH as re,RESIZE_HANDLE_CORNER_WIDTH as se,RESIZE_HANDLE_EDGE_WIDTH as ae,DISPLAY_FOCUS_MULTIPLIER as ce,SHIFT_RESTART_TUBE_RADIUS as le,SHIFT_RESTART_TUBE_FOCUS_MULTIPLIER as ue,SHIFT_RESTART_TIP_FOCUS_MULTIPLIER as de}from"./sliceToolConfig.js";import{applyProjectionAndElevationAlignment as me}from"../support/projectionUtils.js";import{Manipulator3D as ge}from"../../interactive/Manipulator3D.js";import{calculateTranslateRotateFromBases as pe,createRotateManipulator as fe,worldScaledManipulatorSettings as be}from"../../interactive/manipulatorUtils.js";import{RenderObject as he}from"../../interactive/RenderObject.js";import{LineVisualElement as Te}from"../../interactive/visualElements/LineVisualElement.js";import{SlicePlaneVisualElement as we}from"../../interactive/visualElements/SlicePlaneVisualElement.js";import{RenderCoordsHelper as Oe}from"../../support/RenderCoordsHelper.js";import{fromRender as Ae}from"../../support/geometryUtils/ray.js";import{CullFaceOptions as Re}from"../../webgl-engine/lib/basicInterfaces.js";import{createPolylineGeometry as Ie,createConeGeometry as Ee,createPathExtrusionGeometry as je}from"../../webgl-engine/lib/GeometryUtil.js";import{RenderOccludedFlag as Ce}from"../../webgl-engine/lib/Material.js";import{ColorMaterial as Le}from"../../webgl-engine/materials/ColorMaterial.js";import{NativeLineMaterial as Ue}from"../../webgl-engine/materials/NativeLineMaterial.js";import{RibbonLineMaterial as ve}from"../../webgl-engine/materials/RibbonLineMaterial.js";import{ManipulatorStateCustomFlags as _e,ManipulatorStateFlags as Me}from"../../../interactive/interfaces.js";import Pe from"../../../../geometry/Extent.js";function Ne(e,t,n,o,i,r,s,a){return Ve(t,s.worldUpAtPosition(e,x.get()),i,r,a.basis1,a.basis2),b(a.basis1,a.basis1,n),b(a.basis2,a.basis2,o),h(a.origin,e),k(a.basis2,a.basis1,a.origin,a.plane),a}function Ve(e,t,n,o,i,r){const s=T(e,t),a=x.get(),c=x.get();switch(o===ft.HORIZONTAL_OR_VERTICAL?Math.abs(s)>W?ft.HORIZONTAL:ft.VERTICAL:o){case ft.VERTICAL:{const o=Math.abs(s)<=q?e:n.viewUp;w(a,o,t),h(c,t);break}case ft.HORIZONTAL:w(a,n.viewUp,t),w(c,t,a);break;case ft.TILTED:{const o=Math.abs(s)<=q?t:n.viewUp;w(a,o,e),w(c,e,a);break}}const l=w(x.get(),a,c);T(l,n.viewForward)>0&&b(c,c,-1),O(i,a),O(r,c)}function ye(e,t,n){const o=t.worldUpAtPosition(e.origin,x.get()),i=e.basis1,r=ct(e,o),s=Math.round(r/Tt)*Tt;return P(e,s-r,i,n)}function Se(e,t,n,o,i,r){const s=h(x.get(),i.origin);A(s,s,b(x.get(),i.basis1,e.direction[0]<0?1:-1)),A(s,s,b(x.get(),i.basis2,e.direction[1]<0?1:-1));const a=R(i.basis1),c=R(i.basis2),l=I(x.get(),n,s),u=I(x.get(),t,s);let d=0,m=0;if(Je(e)){const t=$e(i),n=$e(r);d=a-.5*e.direction[0]*T(i.basis1,u)/a,m=c-.5*e.direction[1]*T(i.basis2,u)/c;const o=n/t;d*=o,m*=o}const g=d+.5*e.direction[0]*T(i.basis1,l)/a,p=m+.5*e.direction[1]*T(i.basis2,l)/c,f=b(x.get(),i.basis1,g/a),w=b(x.get(),i.basis2,p/c);(g<=0||qe(r.origin,f,o)<=z)&&h(f,r.basis1),(p<=0||qe(r.origin,w,o)<=z)&&h(w,r.basis2);const O=h(x.get(),s);return A(O,O,b(x.get(),f,e.direction[0]<0?-1:1)),A(O,O,b(x.get(),w,e.direction[1]<0?-1:1)),N(O,f,w,r)}function Ge(e,t){return $*Math.min(t.width,t.height)*t.computeRenderPixelSizeAt(e)}function ke(e,t,n,o){const i=w(x.get(),t,n);return w(i,i,t),D(e,i,o)}function De(e,t){return pe(e.basis1,e.basis2,e.origin,t)}function He(e,t,n,o){const i=t.worldUpAtPosition(e.origin,x.get()),r=x.get();switch(n){case pt.HEADING:h(r,i);break;case pt.TILT:h(r,e.basis1)}return D(e.origin,r,o)}function Be(e,t,n,o){const i=We(n,Ze.NEGATIVE_X),a=F.get();s(a,t,i.edge*Math.PI/2);const c=O(x.get(),i.basis);let l=b(x.get(),c,i.direction*o.computeScreenPixelSizeAt(i.position)*J);A(l,l,i.position);const u=o.projectToRenderScreen(l,r(x.get())),d=xe(o,u);Ae(o,u,ht),O(ht.direction,ht.direction);const m=x.get();!d&&V(n,ht,m)&&(l=m),a[12]=0,a[13]=0,a[14]=0,e.modelTransform=a,e.renderLocation=L(l),d?e.state|=bt:e.state&=~bt}function xe(e,t){const[n,o,i,r]=e.viewport,s=Math.min(i,r)/16;let a=!0;return t[0]<n+s?(t[0]=n+s,a=!1):t[0]>n+i-s&&(t[0]=n+i-s,a=!1),t[1]<o+s?(t[1]=o+s,a=!1):t[1]>o+r-s&&(t[1]=o+r-s,a=!1),a}function Fe(e,t,n,o){const i=R(o.basis1),r=R(o.basis2),s=ze(o),u=$e(o),d=E(x.get(),0,0,0);A(d,b(x.get(),o.basis1,t.direction[0]),b(x.get(),o.basis2,t.direction[1])),A(d,o.origin,d);let m=0,g=1;if(Je(t))1===t.direction[0]&&-1===t.direction[1]?m=Tt:1===t.direction[0]&&1===t.direction[1]?m=Math.PI:-1===t.direction[0]&&1===t.direction[1]&&(m=3*Math.PI/2),g=u;else{const e=0!==t.direction[0]?1:2;m=1===e?Tt:0,g=(1===e?r:i)-s}const p=a(F.get(),m);c(p,p,E(x.get(),g,g,g)),l(p,n,p),p[12]=0,p[13]=0,p[14]=0,e.modelTransform=p,e.renderLocation=d}function Xe(e,t,n,o){const i=o.worldUpAtPosition(n.origin,x.get()),r=We(n,Ze.POSITIVE_X),s=a(F.get(),r.edge*Math.PI/2);u(s,s,-ct(n,i)),l(s,t,s),s[12]=0,s[13]=0,s[14]=0,e.modelTransform=s,e.renderLocation=r.position}function Ye(e,t,n){const o=We(n,Ze.POSITIVE_Y),i=a(F.get(),o.edge*Math.PI/2);u(i,i,Tt),l(i,t,i),i[12]=0,i[13]=0,i[14]=0,e.modelTransform=i,e.renderLocation=o.position}var Ze;function We(e,t){switch(t){case Ze.POSITIVE_X:return{basis:e.basis1,direction:1,position:A(x.get(),e.origin,e.basis1),edge:t};case Ze.POSITIVE_Y:return{basis:e.basis2,direction:1,position:A(x.get(),e.origin,e.basis2),edge:t};case Ze.NEGATIVE_X:return{basis:e.basis1,direction:-1,position:I(x.get(),e.origin,e.basis1),edge:t};case Ze.NEGATIVE_Y:return{basis:e.basis2,direction:-1,position:I(x.get(),e.origin,e.basis2),edge:t}}}function qe(e,t,n){const o=n.projectToRenderScreen(A(x.get(),e,t),r(x.get())),i=n.projectToRenderScreen(I(x.get(),e,t),r(x.get()));return j(I(o,o,i))}function ze(e){const t=R(e.basis1),n=R(e.basis2);return K*Math.min(t,n)}function $e(e){return ze(e)}function Je(e){return 0!==e.direction[0]&&0!==e.direction[1]}function Ke(t,n){const o=n.offsetMode===At.CENTER_ON_CALLOUT?J:0,i=[v(o,0,-ie/2),v(o,0,ie/2)],r=rt(i,!0),s=(e,t)=>ot(i,e,t,n),a=s(0,!1),c=s(re,!0),l=new Ue({color:e.toUnitRGBA(n.calloutColor),renderOccluded:Ce.OccludeAndTransparent,isDecoration:!0}),u=Ie(l,[[o,0,0],[o-J,0,0]]),d=Ie(l,[[o,0,0],[o-J,0,0]]);return new ge({view:t,renderObjects:[...a.normal.map((e=>new he(e,Me.Unfocused|gt))),...c.normal.map((e=>new he(e,Me.Unfocused|gt))),new he(u,Me.Unfocused|gt|bt),...a.focused.map((e=>new he(e,Me.Focused|gt))),...c.focused.map((e=>new he(e,Me.Focused|gt))),new he(d,Me.Focused|gt|bt)],autoScaleRenderObjects:!1,collisionType:{type:"line",paths:[r]},collisionPriority:1,radius:Q,state:gt})}function Qe(t,n){const o=new Y(t.effectiveTheme),i=fe(t,{calloutColor:e.toUnitRGBA(o.color),customStateMask:gt,texture:n});return i.state=gt,i}function et(t){const n=[[-1,-1,0],[1,-1,0],[1,1,0],[-1,1,0],[-1,-1,0]],o=new Z(t.effectiveTheme);return new Te({view:t,attached:!1,color:e.toUnitRGBA(o.outlineColor),width:ee,renderOccluded:Ce.OccludeAndTransparent,geometry:[n],isDecoration:!0})}function tt(t){const n=new Z(t.effectiveTheme);return new we({view:t,attached:!1,backgroundColor:e.toUnitRGBA(n.color),gridColor:e.toUnitRGBA(n.gridColor),gridWidth:4,renderOccluded:Ce.OccludeAndTransparent,isDecoration:!0})}function nt(t,n,o){const i=Je(n),r=i?[v(1,0,0),v(0,0,0),v(0,1,0)]:[v(1,0,0),v(-1,0,0)],s=e.toUnitRGBA(o.color),a=e=>new ve({color:s,width:e,renderOccluded:Ce.OccludeAndTransparent,isDecoration:!0}),c=()=>new Ue({color:s,renderOccluded:Ce.OccludeAndTransparent,isDecoration:!0}),l=i?se:ae,u=l*ce,d=ae,m=e=>e>1?a(e):c(),g=[new he(Ie(m(l),r),Me.Unfocused|wt),new he(Ie(m(u),r),Me.Focused|wt),new he(Ie(m(d),r),Ot)],p=new ge({view:t,renderObjects:g,collisionType:{type:"line",paths:[r]},radius:i?te:ne,...be});return p.state=wt,p}function ot(t,n,o,i){const r=e.blendColors(i.color,i.outlineColor,.4),s=e.blendColors(i.color,i.outlineColor,.14),a=new Le({color:e.toUnitRGBA(i.color),cullFace:Re.Back,renderOccluded:Ce.Opaque,isDecoration:!0}),u=new Le({color:e.toUnitRGBA(r),cullFace:Re.Back,renderOccluded:Ce.Opaque,isDecoration:!0}),h=new Le({color:e.toUnitRGBA(s),cullFace:Re.Back,renderOccluded:Ce.Opaque,isDecoration:!0}),T=new Le({color:e.toUnitRGBA(i.outlineColor),transparent:!0,writeDepth:!1,cullFace:Re.Front,renderOccluded:Ce.Transparent,isDecoration:!0}),w=e=>{const i=t.slice(0),r=I(x.get(),i[0],i[1]);O(r,r);const s=I(x.get(),i[i.length-1],i[i.length-2]);if(O(s,s),n>0){const e=b(U(),s,-n);i[i.length-1]=A(e,e,i[i.length-1]);const t=b(U(),r,-n);i[0]=A(t,t,i[0])}const w=e?de:1,R=oe*w,j=Q*w,C=d(F.get());if(n>0){const e=R/4,t=E(x.get(),0,e,0),o=1+n/e;m(C,C,t),c(C,C,E(x.get(),o,o,o)),m(C,C,b(t,t,-1/o))}const L=d(p()),_=v(0,1,0),M=g(p(),f(X.get(),_,s));M[12]=i[i.length-1][0],M[13]=i[i.length-1][1],M[14]=i[i.length-1][2],l(M,M,C);const P=it(le*(e?ue:1)+n,i,o?T:h);P.transformation=L;const N=[P],V=Ee(o?T:a,R,j,24,!1,!1,!0);V.transformation=M,N.push(V);const y=Ee(o?T:u,R,j,24,!1,!0,!1);y.transformation=M,N.push(y);const S=g(p(),f(X.get(),_,r));return S[12]=i[0][0],S[13]=i[0][1],S[14]=i[0][2],l(S,S,C),N.push(V.instantiate({transformation:S})),N.push(y.instantiate({transformation:S})),N};return{normal:w(!1),focused:w(!0)}}function it(e,t,n){const o=[],i=12;for(let r=0;r<i;r++){const t=r/i*2*Math.PI;o.push([Math.cos(t)*e,Math.sin(t)*e])}return je(n,o,t,[],[],!1)}function rt(e,t){const n=I(U(),e[e.length-1],e[e.length-2]);if(O(n,n),b(n,n,oe),A(n,n,e[e.length-1]),t){const t=I(U(),e[0],e[1]);return O(t,t),b(t,t,oe),A(t,t,e[0]),[t,...e,n]}return[...e,n]}function st(e,n,i,r=new t){if(null==e)return null;const{renderCoordsHelper:s}=n,a=s.fromRenderCoords(e.origin,n.spatialReference);if(null==a)return null;const c=_(a,i);if(null==c)return null;r.position=c;const l=2*R(e.basis1),u=2*R(e.basis2),d=Oe.renderUnitScaleFactor(n.spatialReference,i);r.width=l*d,r.height=u*d;const m=s.worldUpAtPosition(e.origin,x.get());return r.tilt=o(ct(e,m)),r.heading=s.headingAtPosition(e.origin,e.basis1)-90,r}function at(e,t,n){if(null==e)return null;const o=e.origin,i=x.get(),r=x.get(),s=x.get(),a=x.get();let c,l,u,d,m,g;A(i,o,e.basis1),A(i,i,e.basis2),A(r,o,e.basis1),C(r,r,e.basis2),C(s,o,e.basis1),C(s,s,e.basis2),C(a,o,e.basis1),A(a,a,e.basis2);for(const p of[i,r,s,a]){const e=t.fromRenderCoords(p,p,n);if(null==e)return null;c=null==c?e[0]:Math.min(c,e[0]),l=null==l?e[0]:Math.max(l,e[0]),u=null==u?e[1]:Math.min(u,e[1]),d=null==d?e[1]:Math.max(d,e[1]),m=null==m?e[2]:Math.min(m,e[2]),g=null==g?e[2]:Math.max(g,e[2])}return new Pe({xmin:c,xmax:l,ymin:u,ymax:d,zmin:m,zmax:g,spatialReference:n})}function ct(e,t){return B(t,e.basis2,e.basis1)+Tt}function lt(e,t,o,r,s,a,c=y()){return a.toRenderCoords(e,c.origin)?(a.worldBasisAtPosition(c.origin,M.X,c.basis1),a.worldBasisAtPosition(c.origin,M.Y,c.basis2),k(c.basis2,c.basis1,c.origin,c.plane),P(c,-i(t),S(c),c),P(c,i(o),c.basis1,c),b(c.basis1,c.basis1,r/2),b(c.basis2,c.basis2,s/2),G(c),c):(n.getLogger("esri.views.3d.analysis.Slice.sliceToolUtils").error(`Failed to project slice plane position, projection from ${e.spatialReference.wkid} is not supported`),null)}function ut(e,t){if(null==e||null==e.position)return null;const n=me(e.position,t.spatialReference,t.elevationProvider);if(null==n)return null;const o=Oe.renderUnitScaleFactor(e.position.spatialReference,t.spatialReference),i=e.width*o,r=e.height*o;return{position:n,heading:e.heading,tilt:e.tilt,renderWidth:i,renderHeight:r}}function dt(e,t,n,o=y()){const i=ut(e,t);return null==i?null:mt(i,t,n,o)}function mt(e,t,n,o=y()){if(null==e)return null;const i=lt(e.position,e.heading,e.tilt,e.renderWidth,e.renderHeight,t.renderCoordsHelper,o);return n.tiltEnabled||null==i||ye(i,t.renderCoordsHelper,i),i}!function(e){e[e.POSITIVE_X=0]="POSITIVE_X",e[e.POSITIVE_Y=1]="POSITIVE_Y",e[e.NEGATIVE_X=2]="NEGATIVE_X",e[e.NEGATIVE_Y=3]="NEGATIVE_Y"}(Ze||(Ze={}));const gt=_e.Custom1;var pt,ft;!function(e){e[e.HEADING=1]="HEADING",e[e.TILT=2]="TILT"}(pt||(pt={})),function(e){e[e.HORIZONTAL_OR_VERTICAL=0]="HORIZONTAL_OR_VERTICAL",e[e.HORIZONTAL=1]="HORIZONTAL",e[e.VERTICAL=2]="VERTICAL",e[e.TILTED=3]="TILTED"}(ft||(ft={}));const bt=_e.Custom2,ht=H(),Tt=Math.PI/2,wt=_e.Custom1,Ot=_e.Custom2;var At;function Rt(e){return null!=("building-scene-3d"===e.type?e:null)}!function(e){e[e.CENTER_ON_CALLOUT=0]="CENTER_ON_CALLOUT",e[e.CENTER_ON_ARROW=1]="CENTER_ON_ARROW"}(At||(At={}));export{gt as DidPointerMoveRecentlyFlag,bt as IsShiftEdgeOnScreenFlag,At as OffsetMode,pt as RotationAxis,ft as SliceOrientation,rt as addArrowTips,De as calculateBoundedPlaneTranslateRotate,$e as calculateDiagonalResizeHandleScale,Ge as calculatePlaneHalfSize,ze as calculateResizeHandlePadding,qe as calculateScreenSpaceBasisLength2,tt as createGridVisualElement,et as createOutlineVisualElement,Ne as createPlane,nt as createResizeManipulator,Qe as createRotateManipulator,He as createRotatePlane,Ke as createShiftManipulator,ke as createShiftPlane,ye as forceHorizontalOrVertical,Je as isDiagonalResizeHandle,Rt as isIBuildingSceneLayerView3D,Ve as normalToBases,at as planeToExtent,st as planeToShape,ut as projectAndElevationAlignShape,mt as projectedShapeToPlane,wt as resizeNormal,Ot as resizeOutlineOnly,Se as resizePlane,dt as shapeToPlane,Fe as updateResizeHandle,Xe as updateRotateHeadingHandle,Ye as updateRotateTiltHandle,Be as updateShiftRestartHandle};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/*
|
|
2
|
+
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
|
+
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
|
+
*/
|
|
5
|
+
import{generateStyledTexture as t}from"./generateTextures.js";import o from"./heading-rotate-svg.js";import r from"./tilt-rotate-svg.js";import{Texture as e}from"../../webgl-engine/lib/Texture.js";const a=64;function l(r,l){const{accentColor:n,contrastColor:c,preMultiplyAlpha:i}=l;return r.fromData(`heading-rotate:[accent:${n},contrast:${c},size:${a}]`,(()=>new e(t(o,{accentColor:n,contrastColor:c,size:a}),{mipmap:!0,reloadable:!0,preMultiplyAlpha:i})))}function n(o,l){const{accentColor:n,contrastColor:c,preMultiplyAlpha:i}=l;return o.fromData(`tilt-rotate:[accent:${n},contrast:${c},size:${a}]`,(()=>new e(t(r,{accentColor:n,contrastColor:c,size:a}),{mipmap:!0,reloadable:!0,preMultiplyAlpha:i})))}export{l as getRotateHeadingTexture,n as getTiltRotateTexture};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{s as t,e,
|
|
5
|
+
import{s as t,g as e,i as r,a as o,j as n,m as i,c as s,n as f,b as a}from"../../../../chunks/vec3.js";import{c}from"../../../../chunks/vec3f64.js";import{geodesicArea as m}from"../../../../geometry/geometryEngine.js";import u from"../../../../geometry/Polygon.js";import p from"../../../../geometry/SpatialReference.js";import{projectPointToVector as l}from"../../../../geometry/projection/projectPointToVector.js";import{projectPointToWGS84ComparableLonLat as g}from"../../../../geometry/projection/projectPointToWGS84ComparableLonLat.js";import{projectVectorToWGS84ComparableLonLat as h}from"../../../../geometry/projection/projectVectorToWGS84ComparableLonLat.js";import{InverseGeodeticSolverResult as j,inverseGeodeticSolver as y}from"../../../../geometry/support/geodesicUtils.js";import{planeFromPoints as P}from"../../support/mathUtils.js";function b(n,i){const s=i.center;t(s,0,0,0);for(let t=0;t<n.length;++t)e(s,s,n[t]);r(s,s,1/n.length);let f=0;for(let t=0;t<n.length;++t)f=Math.max(f,o(s,n[t]));i.radius=Math.sqrt(f)}function d(t,e){if(t.length<3)throw new Error("need at least 3 points to fit a plane");P(t[0],t[1],t[2],e)}function w(t,e){return n(t,e)+t[3]}function L(t,e,r){return l(t,k,r)&&l(e,q,r)?i(k,q):0}function S(t,e){if(!g(t,k)||!g(e,q))return 0;const r=new j;return y(r,[k[0],k[1]],[q[0],q[1]]),r.distance}function T(t,e,r){const o=new j;return y(o,[t[0],t[1]],[e[0],e[1]],r),o.distance}function G(t,e,r,o){const n=x;return h(t,o,k)&&h(e,o,q)&&h(r,o,v)?(n.setPoint(0,0,k),n.setPoint(0,1,q),n.setPoint(0,2,v),Math.abs(m(n,"square-meters"))):0}function M(r,o=null,i=!0){const c=1e-6,m=(t,e)=>{if(0===e[0]&&0===e[1]&&0===e[2])return!1;for(let r=0;r<t.length;++r)if(n(e,t[r])<-c)return!1;return!0};if(0===r.length)return!1;if(1===r.length)return o&&s(o,r[0]),!0;t(C,0,0,0);for(let t=0;t<r.length;++t)e(C,C,r[t]);if(f(C,C),m(r,C))return o&&s(o,C),!0;if(!i)return!1;for(let t=0;t<r.length;++t)for(let e=0;e<r.length;++e)if(t!==e&&(a(C,r[t],r[e]),f(C,C),m(r,C)))return o&&s(o,C),!0;return!1}function W(t){return"mouse"!==t.pointerType||0===t.button}const k=c(),q=c(),v=c(),x=new u({rings:[[k,q,v]],spatialReference:p.WGS84}),C=c();export{d as bestFitPlane,b as boundingSphere,M as fitHemisphere,W as isPrimaryPointerAction,w as planePointDistance,L as segmentLengthEuclidean,S as segmentLengthGeodesic,T as segmentLengthGeodesicVector,G as triangleAreaGeodesic};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{createRenderScreenPointArray3 as e}from"../../../../core/screenUtils.js";import{c as o,e as r}from"../../../../chunks/vec2.js";import{s as n,
|
|
5
|
+
import{createRenderScreenPointArray3 as e}from"../../../../core/screenUtils.js";import{c as o,e as r}from"../../../../chunks/vec2.js";import{s as n,g as c,i as s}from"../../../../chunks/vec3.js";function t(e,o){if(n(o,0,0,0),e.length>0){for(let r=0;r<e.length;++r)c(o,o,e[r]);s(o,o,1/e.length)}}function i(e,n,c,s){s.projectToRenderScreen(e,f),s.projectToRenderScreen(n,p),o(c,a,m),r(c,c)}const f=e(),m=f,p=e(),a=p;export{t as midpoint,i as screenSpaceTangent};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{Milliseconds as t,millisecondsFromSeconds as i}from"../../../../core/time.js";import{
|
|
5
|
+
import{Milliseconds as t,millisecondsFromSeconds as i}from"../../../../core/time.js";import{f as e,l as r,c as n}from"../../../../chunks/vec3.js";import{c as m}from"../../../../chunks/vec3f64.js";import s from"./Camera.js";import{Camera as a}from"../../webgl-engine/lib/Camera.js";import{Animation as o}from"../../../animation/pointToPoint/Animation.js";const c=m();class h{get finished(){return this.currentTime>=this._animation.time}get time(){return this._animation.time}constructor(i){this.currentTime=t(0),this._animation=new o((()=>new s(i))),this._current=new s(i)}update(i,m,s){const a=this._animation.definition.source,o=this._animation.definition.target,h=e(c,m.center,i.center),u=r(h);u>=1e-5?(h[0]/=u,h[1]/=u,h[2]/=u):(h[0]=0,h[1]=1,h[0]=0),n(a.lookAtDirection,h),n(o.lookAtDirection,h),a.copyFromRenderCamera(i),o.copyFromRenderCamera(m),this._current.copyFrom(a),this._animation.update(a,o,s),this.currentTime=t(0),i.almostEquals(m)&&(this.currentTime=this._animation.time)}cameraAt(t,i){return this._animation.cameraAt(t,this._current),i=i||new a,this._current.copyToRenderCamera(i),i}step(e,r){return this.finished||(this.currentTime=t(this.currentTime+i(e)),this.currentTime>=this.time&&(this.currentTime=this.time)),this.cameraAt(this.currentTime/this.time,r)}}export{h as Animation};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{lerp as t}from"../../../../core/mathUtils.js";import{t as e}from"../../../../chunks/mat3.js";import{
|
|
5
|
+
import{lerp as t}from"../../../../core/mathUtils.js";import{t as e}from"../../../../chunks/mat3.js";import{a as i}from"../../../../chunks/mat3f64.js";import{l as s,m as a,p as o,c as h,f as r,t as n,i as c,b as p,j as m,g as d,n as w}from"../../../../chunks/vec3.js";import{c as l,g as u,f as y}from"../../../../chunks/vec3f64.js";import{ViewingMode as M}from"../../../ViewingMode.js";import{angle as f,slerp as A}from"../../support/mathUtils.js";const g=l(),P=l(),_=l(),k=l(),v=l(),x=l(),z={upward:y(0,0,1),forward:y(0,1,0),sideway:y(1,0,0)},b=i();class T{constructor(t=M.Global){this.viewingMode=t,this.center=l(),this.pitch=0,this.yaw=0,this.distance=0,this.lookAtDirection=u(z.forward)}pixelsPerPanAtZoom(t){return this.size/2/(this._zoomToPanScale*t)}zoomAtPixelsPerPan(t){return this.size/2/(this._zoomToPanScale*t)}pixelsPerRotateAtZoom(){const t=Math.max(Math.cos(Math.abs(this.pitch)),.5);return this.size/2/t}compareTo(t,e){if(e||(e={pan:0,rotate:0,sourceZoom:0,targetZoom:0}),this.viewingMode===M.Global){const i=(s(this.center)+s(t.center))/2;e.pan=f(this.center,t.center)*i}else e.pan=a(this.center,t.center);let i=Math.abs(t.yaw-this.yaw);i>=Math.PI&&(i=2*Math.PI-i);const o=Math.abs(t.pitch-this.pitch);return e.rotate=Math.max(i,o),e.sourceZoom=this.distance,e.targetZoom=t.distance,e}interpolate(e,i,s){this.viewingMode===M.Global?A(e.center,i.center,s.pan,this.center):o(this.center,e.center,i.center,s.pan),this.distance=isFinite(i.distance)?t(e.distance,i.distance,s.zoom):e.distance,this.pitch=t(e.pitch,i.pitch,s.rotate);let a=e.yaw;const h=i.yaw;Math.abs(h-a)>=Math.PI&&(a+=2*(a<h?1:-1)*Math.PI),this.yaw=t(a,h,s.rotate)}copyFrom(t){h(this.center,t.center),this.pitch=t.pitch,this.yaw=t.yaw,this.distance=t.distance,h(this.lookAtDirection,t.lookAtDirection),this.size=t.size,this.copyFromCommon(t),this.viewingMode=t.viewingMode}copyFromRenderCamera(t){const e=this._lookAtOrientation(t.center,b);h(this.center,t.center),r(k,t.center,t.eye),n(k,k,e),n(v,t.up,e),this.distance=s(k),0!==this.distance&&(k[0]/=this.distance,k[1]/=this.distance,k[2]/=this.distance),this.pitch=this._eyeUpToPitch(k),this.yaw=this._eyeUpToYaw(k,v),this.size=Math.sqrt(t.width*t.width+t.height*t.height),this.copyFromCommon(t)}copyFromCommon(t){this.fov=t.fov,this._zoomToPanScale=Math.atan(.5*this.fov)}copyToRenderCamera(t){const i=this._lookAtOrientation(this.center,b);e(i,i),this._axisAngleVec3(z.sideway,this.pitch-Math.PI/2,z.forward,k),this._axisAngleVec3(z.upward,this.yaw,k),this._axisAngleVec3(z.sideway,this.pitch-Math.PI/2,z.upward,v),this._axisAngleVec3(z.upward,this.yaw,v),c(k,k,this.distance),n(k,k,i),n(v,v,i),t.center=this.center,t.eye=r(k,this.center,k),t.up=v}_axisAngleVec3(t,e,i,s=i){const a=Math.cos(e),o=Math.sin(e);return c(g,i,a),p(P,t,i),c(P,P,o),c(_,t,(1-a)*m(t,i)),d(s,d(s,g,P),_)}_lookAtOrientation(t,e=i()){return this._upAtLookAt(t,_),p(g,this.lookAtDirection,_),w(g,g),0===g[0]&&0===g[1]&&0===g[2]&&h(g,z.sideway),p(P,_,g),w(P,P),e[0]=g[0],e[1]=P[0],e[2]=_[0],e[3]=g[1],e[4]=P[1],e[5]=_[1],e[6]=g[2],e[7]=P[2],e[8]=_[2],e}_upAtLookAt(t,e){return this.viewingMode===M.Local?h(e,z.upward):w(e,t)}_eyeUpToPitch(t){return Math.PI-f(z.upward,t)}_eyeUpToYaw(t,e){const i=x;return Math.abs(e[2])<.5?(h(i,e),t[2]>0&&c(i,i,-1)):h(i,t),p(P,i,z.upward),w(P,P),f(z.sideway,P,z.upward)}}export{T as default};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{clamp as t}from"../../../../core/mathUtils.js";import{
|
|
5
|
+
import{clamp as t}from"../../../../core/mathUtils.js";import{c as e,i as r}from"../../../../chunks/vec3.js";import{c as n}from"../../../../chunks/vec3f64.js";import{wrap as o}from"../../../../geometry/support/ray.js";import{interactionDirectionTowardsConstraintMinimization as i,defaultConstraintOptions as s,hasConstraintType as c,adjustRangeForInteraction as a}from"./common.js";import{ConstraintTypes as m}from"./ConstraintTypes.js";import{InteractionType as u}from"./InteractionType.js";import{closestPointOnRay as p}from"../../support/intersectionUtils.js";function f(t,r,n=s){const c=l(t,r,n);if(0===c)return!1;const a=t.renderCoordsHelper,m=a.getAltitude(r.eye)+c,u=i(r,n.interactionDirection,j(t,r,Math.sign(c),M),C),f=e(g,r.viewForward),d=a.intersectInfiniteManifold(o(r.eye,u),m,h);return r.eye=null!=d?d:a.setAltitude(h,m,r.eye),r.center=p(h,r.eye,f,r.center),!0}function l(e,r,n=s){if(!d(e,n)||!e.state.constraints.altitude)return 0;const o=T(e.state.constraints.altitude,x);y(e,n,o);const i=e.renderCoordsHelper.getAltitude(r.eye),c=t(i,o.min,o.max)-i;return Math.abs(c)<=1e-6?0:c}function d(t,e){const r=t.state.constraints.altitude;return!(!t.state.isGlobal||!r)&&(e.interactionType!==u.TUMBLE||!c(e.selection,m.TILT))}function y(t,e,r){const n=e.interactionType;if(n===u.NONE)return;const{min:o,max:i}=r,{interactionStartCamera:s,interactionFactor:c}=e;if(!s)return;const m=n===u.TUMBLE||n===u.ZOOM,p=l(t,s),f=0===p?0:t.renderCoordsHelper.getAltitude(s.eye);r.min=o,r.max=i;a(p,f,m,c,.05*f,r)}function j(t,e,n,o){return t.renderCoordsHelper.worldUpAtPosition(e.eye,o),r(o,o,n),o}function T(t,e){return e.min=t.min,e.max=t.max,e}const x={min:0,max:0},C=n(),M=n(),g=n(),h=n();export{f as applyAltitudeConstraint,l as getAltitudeConstraintError};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{
|
|
5
|
+
import{c as t,i as n,j as a}from"../../../../chunks/vec3.js";import{ConstraintTypes as i}from"./ConstraintTypes.js";import{InteractionType as m}from"./InteractionType.js";import{TiltMode as o}from"./TiltMode.js";function r(t,n){return 0!=(t&n)}function e(t,n,a,i,m,o){0!==t&&(a?(o.min=Math.min(o.min,n),o.max=Math.max(o.max,n)):null!=i?(o.min-=Math.max(0,(n-o.min)*(1-i)),o.max+=Math.max(0,(n-o.max)*(1-i))):m&&(o.min-=Math.max(0,n-o.min-m),o.max+=Math.max(0,n-o.max-m)))}const c={selection:i.NONE,interactionType:m.NONE,interactionFactor:0,interactionStartCamera:null,interactionDirection:null,tiltMode:o.TUMBLE};function s(i,m,o,r){return m=m||i.viewForward,t(r,m),n(r,r,Math.sign(a(m,o))),r}export{e as adjustRangeForInteraction,c as defaultConstraintOptions,r as hasConstraintType,s as interactionDirectionTowardsConstraintMinimization};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{
|
|
5
|
+
import{c as n,f as e,g as r,m as t,C as o}from"../../../../chunks/vec3.js";import{c as i}from"../../../../chunks/vec3f64.js";import{wrap as c}from"../../../../geometry/support/ray.js";import{i as s,k as a}from"../../../../chunks/sphere.js";import{defaultConstraintOptions as f,interactionDirectionTowardsConstraintMinimization as m,adjustRangeForInteraction as u}from"./common.js";import{InteractionType as p}from"./InteractionType.js";function d(n,e,r=f){if(!n.state.isLocal)return 0;const t=n.state.constraints.distance;if(!n.pointsOfInterest.surfaceOrigin.renderLocation||t===1/0)return 0;g.min=0,g.max=t,O(n,r,g);const o=l(n,e),i=g.max-o;return i>=-1e-6?0:i}function y(t,o,i=f){const u=d(t,o,i);if(0===u)return!1;const p=t.pointsOfInterest.surfaceOrigin;if(!p.renderLocation)return!1;const y=l(t,o)+u,O=n(j,o.eye),g=m(o,i.interactionDirection,L(o,p.renderLocation,h),I);if(!s(a(p.renderLocation,y),c(o.eye,g),k))return!1;o.eye=k;const C=e(x,o.eye,O);o.center=r(k,o.center,C);const N=t.renderCoordsHelper.getAltitude(o.center),v=t.renderCoordsHelper.intersectInfiniteManifold(o.ray,N,k);return null!=v&&(o.center=v),!0}function O(n,e,r){const t=e.interactionType;if(t===p.NONE)return;const{min:o,max:i}=r,{interactionStartCamera:c,interactionFactor:s}=e;if(!c)return;const a=t===p.ZOOM||t===p.PAN,f=d(n,c),m=0===f?0:l(n,c);r.min=o,r.max=i;u(f,m,a,s,.05*m,r)}function l(n,e){const r=n.pointsOfInterest.surfaceOrigin;return r.renderLocation?t(e.eye,r.renderLocation):0}function L(n,e,r){return o(r,n.eye,e)}const g={min:0,max:0},j=i(),x=i(),I=i(),h=i(),k=i();export{y as applyDistanceConstraint,d as getDistanceConstraintError};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{l as e,
|
|
5
|
+
import{l as e,f as E,g as t,i as n}from"../../../../chunks/vec3.js";import{c as r}from"../../../../chunks/vec3f64.js";import{surfaceElevationBelowRenderLocation as s}from"../intersectionUtils.js";function o(r,o,l=i.EYE){const N=r.state.constraints;if(!N.collision.enabled)return!1;const a=s(r,o.eye),f=r.renderCoordsHelper.getAltitude(o.eye),A=a+N.collision.elevationMargin;if(f>=A)return!1;const C=e(o.eye);if(E(c,o.center,o.eye),o.eye=r.renderCoordsHelper.setAltitude(_,A,o.eye),l===i.EYE_AND_CENTER)o.center=t(c,o.eye,c);else if(l===i.EYE_AND_CENTER_SCALE){const e=(C-f+A)/C;o.center=n(c,o.center,e)}return!0}var i;!function(e){e[e.EYE=0]="EYE",e[e.EYE_AND_CENTER=1]="EYE_AND_CENTER",e[e.EYE_AND_CENTER_SCALE=2]="EYE_AND_CENTER_SCALE"}(i||(i={}));const c=r(),_=r();export{i as Mode,o as applySurfaceCollisionConstraint};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{neverReached as e}from"../../../../core/compilerUtils.js";import{clamp as t,acosClamped as n,asinClamped as r,deg2rad as i}from"../../../../core/mathUtils.js";import{
|
|
5
|
+
import{neverReached as e}from"../../../../core/compilerUtils.js";import{clamp as t,acosClamped as n,asinClamped as r,deg2rad as i}from"../../../../core/mathUtils.js";import{c as s}from"../../../../chunks/mat4.js";import{a}from"../../../../chunks/mat4f64.js";import{f as o,e as c,i as u,g as l,m,j as f,n as d,l as p,o as y}from"../../../../chunks/vec3.js";import{c as h}from"../../../../chunks/vec3f64.js";import{getReferenceEllipsoid as M}from"../../../../geometry/ellipsoidUtils.js";import{b as C,e as T,t as I}from"../../../../chunks/sphere.js";import{defaultConstraintOptions as O,hasConstraintType as A,adjustRangeForInteraction as D}from"./common.js";import{ConstraintTypes as S}from"./ConstraintTypes.js";import{InteractionType as R}from"./InteractionType.js";import{TiltMode as j}from"./TiltMode.js";import{viewAngle as w}from"../../state/utils/viewUtils.js";function x(t,n,r=O,i=!0){V.eyeCenterDistance=0,V.requiresTwoSteps=!1;const a=U(t,n,r,void 0,V);if(0===a)return!1;switch(s(_,-a,n.viewRight),r.tiltMode){case j.LOOK_AROUND:c(K,n.viewForward,_),u(K,K,V.eyeCenterDistance),n.center=l(z,n.eye,K);break;case j.TUMBLE:o(K,n.center,n.eye),c(K,K,_),n.eye=o(z,n.center,K);break;default:e(r.tiltMode)}return n.up=c(z,n.up,_),!V.requiresTwoSteps||!i||x(t,n,r,!1)}function U(e,t,n=O,r=O,i){if(!e.state.constraints.tilt)return 0;const s=t.distance,a=e.state.constraints.tilt(s,J);return N(e,n,a),r.interactionType===R.TUMBLE&&A(r.selection,S.ALTITUDE)&&B(e,r.interactionStartCamera,a),n.tiltMode===j.LOOK_AROUND||r.tiltMode===j.LOOK_AROUND?L(e,t,a,i):P(e,t,a)}function P(e,n,r){const i=w(e.renderCoordsHelper,n.center,n.eye),s=i-t(i,r.min,r.max);return H(s)?s:0}function L(e,t,n,r){switch(r&&(r.requiresTwoSteps=!1),e.viewingMode){case"global":return v(e,t,n,r);case"local":return q(e,t,n,r)}}function q(e,n,r,i){const s=w(e.renderCoordsHelper,n.center,n.eye),a=t(s,r.min,r.max),o=s-a;if(!H(o))return 0;if(i){const t=e.pointsOfInterest.centerOnSurfaceFrequent.estimatedSurfaceAltitude,r=e.renderCoordsHelper.getAltitude(n.eye)-t,s=Math.cos(a);Math.abs(s)>1e-4?i.eyeCenterDistance=r/s:i.eyeCenterDistance=n.distance}return o}function v(e,n,r,i){const s=k(e,n,Q),a=t(s.tiltAtCenter,r.min,r.max);if(!H(s.tiltAtCenter-a))return 0;let o,c;return s.centerIsOnSurface?(o=b(s),c=E(s,o)):(o=s.constraints.clampTilt(s.eyeCenterDistance,s.tiltAtCenter),i&&o<Math.PI/2&&(i.requiresTwoSteps=!0,o=Math.PI/2-1e-5),c=F(s,o)),i&&(i.eyeCenterDistance=g(s,o)),c}function k(e,t,r){const i=e.pointsOfInterest.centerOnSurfaceFrequent.estimatedSurfaceAltitude,s=i+M(e.spatialReference).radius,a=e.renderCoordsHelper.intersectManifold(t.ray,i,z);return r.eyeCenterDistance=t.distance,r.centerIsOnSurface=!1,null!=a?(r.eyeCenterDistance=m(t.eye,a),r.tiltAtCenter=w(e.renderCoordsHelper,a,t.eye),r.centerIsOnSurface=!0):e.state.isLocal?r.tiltAtCenter=w(e.renderCoordsHelper,t.center,t.eye):(C(T(I,s),t.ray,z),r.eyeCenterDistance=m(t.eye,z),r.tiltAtCenter=n(-f(t.viewForward,d(z,z)))),r.radius=s,r.eyeRadius=p(t.eye),r.constraints=e.state.constraints,r}function H(e){return Math.abs(e)>1e-9}function b(e){const{constraints:t,eyeCenterDistance:n,tiltAtCenter:r}=e;let i=r,s=t.clampTilt(n,r);const a=g(e,s);if(t.clampTilt(a,r)===s)return s;let o=0;for(;o<10&&H(s-i);){const n=(i+s)/2,r=g(e,n);H(t.clampTilt(r,n)-n)?i=n:s=n,o++}return s}function g(e,n){if(!e.centerIsOnSurface)return e.eyeCenterDistance;const i=Math.PI-t(n,0,Math.PI),s=r(e.radius/e.eyeRadius*Math.sin(i)),a=Math.PI-i-s,o=Math.sin(a)/Math.sin(i);if(e.eyeRadius<e.radius&&o>1){const t=Math.PI-s,n=Math.PI-i-t;return Math.sin(n)/Math.sin(i)*e.eyeRadius}return o*e.eyeRadius}function E(e,t){const n=r(e.radius/e.eyeRadius*Math.sin(e.tiltAtCenter)),i=r(e.radius/e.eyeRadius*Math.sin(t));return e.eyeRadius>e.radius?n-i:i-n}function F(e,t){return e.tiltAtCenter-Math.PI/2-(t-Math.PI/2)}function N(e,t,n){if(t.interactionType===R.NONE)return;const{interactionStartCamera:r,interactionFactor:i}=t;if(!r)return;const{min:s,max:a}=n,o=U(e,r,O,t),c=0===o?0:w(e.renderCoordsHelper,r.center,r.eye);n.min=s,n.max=a,t.interactionType===R.TUMBLE?(A(t.selection,S.ALTITUDE)&&B(e,r,n),D(o,c,!0,i,G,n)):D(o,c,!1,i,G,n)}function B(e,t,r){const i=e.state.constraints;if(e.state.isLocal||!i.altitude||!t)return;const s=y(t.center),a=Math.sqrt(s),o=t.distance,c=M(e.spatialReference).radius,u=i.altitude.min+c,l=i.altitude.max+c,m=(u*u-o*o-s)/(-2*a*o),f=(l*l-o*o-s)/(-2*a*o);r.min=Math.max(r.min,Math.min(Math.PI-n(f),r.max)),r.max=Math.min(r.max,Math.PI-n(m))}const K=h(),_=a(),z=h(),G=i(5),J={min:0,max:0},Q={constraints:null,radius:0,eyeRadius:0,centerIsOnSurface:!0,eyeCenterDistance:0,tiltAtCenter:0},V={eyeCenterDistance:0,requiresTwoSteps:!1};export{x as applyTiltConstraint,U as getTiltConstraintError};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{
|
|
5
|
+
import{c as e,a as r,i as n,f as t,g as i,j as o,l as s}from"../../../chunks/vec3.js";import{c as a}from"../../../chunks/vec3f64.js";import{getReferenceEllipsoid as c}from"../../../geometry/ellipsoidUtils.js";import{containsPoint as l}from"../../../geometry/support/aaBoundingRect.js";import{newIntersector as d}from"../webgl-engine/lib/Intersector.js";function u(e,r,n,t){return null!=e.renderCoordsHelper.fromRenderCoords(r.eye,M,t)&&l(n,M)}function f(e,r){return e.elevationProvider?e.elevationProvider.getElevation(r[0],r[1],r[2],e.renderCoordsHelper.spatialReference,"ground")??0:0}function g(o,s,a,c){const l=o.state.camera.clone();s&&a&&c&&(l.eye=s,l.center=a,l.up=c),m(o,l.ray,b)||e(b,l.center);const d=o.state.constraints,u=d.minimumPoiDistance;if(r(l.eye,b)<u){const r=d.collision.enabled;e(j,l.viewForward),n(j,j,u),r?l.eye=t(M,b,j):i(b,l.eye,j);const s=o.renderCoordsHelper,a=s.getAltitude(l.eye),c=d.collision.elevationMargin;r&&a<c&&(t(j,b,l.eye),l.eye=s.setAltitude(M,c,l.eye),i(b,l.eye,j))}return l.center=b,l}function p(e,n,t){if(!e.state.isGlobal||!e.stateManager.constraintsManager)return!1;const i=f(e,n),o=e.stateManager.constraintsManager.nearFarHeuristic,{far:s}=o.compute(n,t,e.renderDataExtent,i,w),a=s*s;return r(n,t)>a}function m(e,r,n){let t=v[e.viewingMode];t||(t=d(e.state.viewingMode),t.options.backfacesTerrain=!e.state.isGlobal,t.options.invisibleTerrain=!0,v[e.viewingMode]=t);const{isGlobal:i}=e.state;return!(!e.sceneIntersectionHelper.intersectRay(r,t,n)||p(e,r.origin,n))||(!(!e.renderCoordsHelper.intersectManifold(r,0,n)||p(e,r.origin,n))||!!i&&y(r,n,c(e.spatialReference).radius))}function y(e,r,t){const a=o(e.origin,e.origin)-t*t,c=a>0?Math.sqrt(a)/3:1;return n(r,e.direction,c/s(e.direction)),i(r,r,e.origin),!0}const v={},M=a(),b=a(),j=a(),w={near:0,far:0};export{g as cameraOnContentAlongViewDirection,u as eyeWithinExtent,f as surfaceElevationBelowRenderLocation};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{unitRGBAFromColor as e}from"../../../core/colorUtils.js";import t from"../../../core/Handles.js";import{clamp as s,lerp as i,smoothstep as r}from"../../../core/mathUtils.js";import{watch as a,syncAndInitial as o}from"../../../core/reactiveUtils.js";import{s as n}from"../../../chunks/vec2.js";import{s as h,l as m,
|
|
5
|
+
import{unitRGBAFromColor as e}from"../../../core/colorUtils.js";import t from"../../../core/Handles.js";import{clamp as s,lerp as i,smoothstep as r}from"../../../core/mathUtils.js";import{watch as a,syncAndInitial as o}from"../../../core/reactiveUtils.js";import{s as n}from"../../../chunks/vec2.js";import{s as h,l as m,o as d}from"../../../chunks/vec3.js";import{s as u}from"../../../chunks/vec4.js";import{Z as p}from"../../../chunks/vec4f64.js";import{earth as c}from"../../../geometry/support/Ellipsoid.js";import{AtmosphereType as l}from"./AtmosphereType.js";import{atmosphereHeight as _,innerAtmosphereDepth as f,computeInnerAltitudeFade as T}from"./atmosphereUtils.js";import{ChapmanAtmospherePassParameters as b,ChapmanAtmosphereTechnique as v}from"./ChapmanAtmosphereTechnique.js";import{ChapmanAtmosphereTechniqueConfiguration as w}from"./ChapmanAtmosphereTechniqueConfiguration.js";import{ColorFormat as x}from"../webgl-engine/core/FBOCache.js";import{Pos2Tex as g}from"../webgl-engine/lib/DefaultVertexBufferLayouts.js";import{createQuadVAO as R}from"../webgl-engine/lib/glUtil3D.js";import{applyTextureResizeModulo as q}from"../webgl-engine/lib/textureUtils.js";import{A as P}from"../../../chunks/AtmosphereCompositing.glsl.js";import{AtmosphereCompositingTechnique as j}from"../webgl-engine/shaders/AtmosphereCompositingTechnique.js";import{PrimitiveType as C}from"../../webgl/enums.js";import B from"../../../webscene/background/ColorBackground.js";class E{constructor(s,i){this._view=s,this._context=i,this.type=l.Realistic,this._handles=new t,this._atmosphereCompositionParameters=new P,this._atmosphereConfiguration=new w,this._passParameters=new b,this._rootTileElevationMin=NaN,this._lowerBoundEarthRadius=c.radius,this._fadeHaze=0,this._updateRadius(c.radius);const r=this._context.renderContext.rctx;this._updateRootTileElevationBounds(),this._handles.add([a((()=>this._view?.basemapTerrain?.rootTileElevationBounds),(()=>this._view?.basemapTerrain?this._updateRootTileElevationBounds():null)),a((()=>this._view?.basemapTerrain?.visibleElevationBounds),(()=>this._view?.basemapTerrain?this._updateVisibleElevationBounds():null)),a((()=>this._view?.environment.background),(t=>{const s=t instanceof B?e(t.color):p;h(this._passParameters.backgroundColor,s[0]*s[3],s[1]*s[3],s[2]*s[3])}),o)]);const n=new w;n.haze=!1,this._atmosphereTechnique=this._context.techniqueRepository.acquire(v,n),n.haze=!0,this._atmosphereHazeTechnique=this._context.techniqueRepository.acquire(v,n),n.reduced=!0,n.haze=!1,this._atmosphereReducedTechnique=this._context.techniqueRepository.acquire(v,n),n.haze=!0,this._atmosphereHazeReducedTechnique=this._context.techniqueRepository.acquire(v,n),this._vao=R(r,g)}destroy(){this._handles.destroy(),this._atmosphereTechnique.release(),this._atmosphereHazeTechnique.release(),this._atmosphereReducedTechnique.release(),this._atmosphereHazeReducedTechnique.release(),this._vao.dispose()}render(e,t){this._render(e,t?this._atmosphereTechnique:this._atmosphereReducedTechnique,e.offscreenRenderingHelper.depthTexture,t,!1)}renderHaze(e,t,s){this._fadeHaze=t,this._render(e,s?this._atmosphereHazeTechnique:this._atmosphereHazeReducedTechnique,e.bindParameters.linearDepth?.colorTexture,s,!0)}_render(e,t,s,r,a){if(null==s)return;const o=e.offscreenRenderingHelper;this._update(e.bindParameters.camera),this._passParameters.depthTexture=s;const n=e.rctx.bindTechnique(t,this._passParameters,e.bindParameters);if(r)o.renderDepthDetached((()=>this._renderCommon(n,e)));else{const t=e.rctx.getViewport(),r=m(e.bindParameters.camera.eye)-c.radius;let h;if(r<_){const e=Math.min(1,Math.max(0,r/_));h=a?i(.4,.5,e):i(.2,.3,e)}else{const e=Math.min(1,Math.max(0,(r-_)/(15*_)));h=a?i(.5,1,e):i(.3,.6,e)}const d=q(Math.round(h*e.bindParameters.camera.fullViewport[2])),u=q(Math.round(h*e.bindParameters.camera.fullViewport[3]));e.rctx.setViewport(0,0,d,u);const p=o.renderToCachedFBO(null,(()=>this._renderCommon(n,e)),[0,0,0,1],x.RGBA,null,d,u);e.rctx.setViewport(t.x,t.y,t.width,t.height),this._atmosphereCompositionParameters.color=p.colorTexture,this._atmosphereCompositionParameters.depth=s,this._atmosphereConfiguration.haze=a;const l=this._context.techniqueRepository.acquire(j,this._atmosphereConfiguration);e.rctx.bindTechnique(l,this._atmosphereCompositionParameters,e.bindParameters),o.renderDepthDetached((()=>e.rctx.screen.draw())),l.release(),p.release()}}_renderCommon(e,t){null!=this._vao&&(t.rctx.bindVAO(this._vao),e.assertCompatibleVertexAttributeLocations(this._vao),t.rctx.drawArrays(C.TRIANGLE_STRIP,0,4))}_adjustRadiusForTesselation(e){return e*Math.cos(Math.PI/16/16)}_updateRootTileElevationBounds(){const e=this._view.basemapTerrain.rootTileElevationBounds.min;e!==this._rootTileElevationMin&&(this._rootTileElevationMin=e,this._lowerBoundEarthRadius=c.radius,this._updateVisibleElevationBounds())}_updateVisibleElevationBounds(){const e=this._adjustRadiusForTesselation(c.radius+this._view.basemapTerrain.visibleElevationBounds.min);e<this._lowerBoundEarthRadius&&this._updateRadius(e)}_updateRadius(e){this._lowerBoundEarthRadius=e,n(this._passParameters.radii,e,e+_),this._passParameters.innerFadeDistance=2*Math.sqrt((2*e-f)*f)}_update(e){if(!e)return;const t=d(e.eye),a=Math.sqrt(t),o=t-this._passParameters.radii[1]*this._passParameters.radii[1],n=s((a-this._passParameters.radii[0])/_,0,1);u(this._passParameters.heightParameters,a,t,o,n),this._passParameters.altitudeFade=T(a-this._lowerBoundEarthRadius),this._passParameters.hazeStrength=i(i(.6,1,r(9500,10500,a-c.radius)),1,this._fadeHaze)}static isSupported(e){return e.renderContext.rctx.capabilities.depthTexture}}export{E as ChapmanAtmosphere};
|