@arcgis/core 4.25.0-next.20220920 → 4.25.0-next.20220921
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/AggregateGraphic.js +1 -1
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/{9f31ab2247c9defb882c.js → 01ac91fc0bc6b4d4e3c6.js} +1 -1
- package/assets/esri/core/workers/chunks/{8588cbecb8e808f451fe.js → 249e32af1f2d433fae4c.js} +1 -1
- package/assets/esri/core/workers/chunks/{5b16b30ac3166f33e81e.js → 26690f4ec1f3cb8099c2.js} +1 -1
- package/assets/esri/core/workers/chunks/{be93b0cef85665446944.js → 274b4cdf6c8d77e8a2e6.js} +1 -1
- package/assets/esri/core/workers/chunks/{d5650f455ce5ba15ad10.js → 2cae0ec5f60ab42a49aa.js} +1 -1
- package/assets/esri/core/workers/chunks/{f436c86f86236ea7ea04.js → 4641e10e0e8e9d257521.js} +1 -1
- package/assets/esri/core/workers/chunks/{7a45333de9ded92619c2.js → 466008f793c2e11e854c.js} +1 -1
- package/assets/esri/core/workers/chunks/{c9d655675552dcf6cef7.js → 4a699b41072ee88f0956.js} +1 -1
- package/assets/esri/core/workers/chunks/{14ea96e398f4842abe4e.js → 4fdd18f5cdaa0d82ebc1.js} +1 -1
- package/assets/esri/core/workers/chunks/{9662da3e1e37f3445186.js → 562b9619b8ee13734813.js} +1 -1
- package/assets/esri/core/workers/chunks/{8bab21bc6164a593278f.js → 771b92e524802de840ba.js} +1 -1
- package/assets/esri/core/workers/chunks/{4969b64dc17378d7781f.js → 7ce250cc6fbe68aef50d.js} +3 -3
- package/assets/esri/core/workers/chunks/{2c4938512dd726a177dd.js → 7fab18074b130b71a648.js} +1 -1
- package/assets/esri/core/workers/chunks/{f67357b3c6c591c9da5e.js → 872f1cb3596fb80e387f.js} +1 -1
- package/assets/esri/core/workers/chunks/{31de71018575457155e5.js → 8ee3da8677255b8c8709.js} +1 -1
- package/assets/esri/core/workers/chunks/{2e44aee22e70857b893c.js → 93631b10452b0e0189b3.js} +1 -1
- package/assets/esri/core/workers/chunks/{cb2dc84d972469445da6.js → 95cd9edca50ea163d50f.js} +1 -1
- package/assets/esri/core/workers/chunks/{d31bbb13af45ce8e45dc.js → acf9f753741b677afb44.js} +1 -1
- package/assets/esri/core/workers/chunks/{1455944edeba1560eb07.js → afdafa77f5ca1b9e3acc.js} +1 -1
- package/assets/esri/core/workers/chunks/{cf3e1ac63580bc495ea6.js → b4da35f1093f3731f9ac.js} +1 -1
- package/assets/esri/core/workers/chunks/bb0d86937faf0cd7d16d.js +1 -0
- package/assets/esri/core/workers/chunks/bf3e80023e156d5906c7.js +1 -0
- package/assets/esri/core/workers/chunks/{8ba83fee56dd4f306d87.js → c2a6ac7046134f725cf3.js} +1 -1
- package/assets/esri/core/workers/chunks/{5d3fabe66e1bce1b30fb.js → cc7569489b572b8b3b53.js} +1 -1
- package/assets/esri/core/workers/chunks/{fddd4ea487788e003fb1.js → d09f06eb4157a7c2c8ab.js} +1 -1
- package/assets/esri/core/workers/chunks/e064035f959d68e9603f.js +1 -0
- package/assets/esri/core/workers/chunks/{d92975e56a1290255252.js → e09df62cf35d636b0975.js} +1 -1
- package/assets/esri/core/workers/chunks/{674fa5b93704ef08c9e8.js → e0c763e05feb1c2093ba.js} +1 -1
- package/assets/esri/core/workers/chunks/{51289d2f5277af4023e9.js → ed33e019bc7775db2e50.js} +1 -1
- package/assets/esri/core/workers/chunks/ef95d6ab7b1c032ab4ad.js +1 -0
- package/assets/esri/core/workers/chunks/{169f4354a375db5de121.js → ffcbcb928b6cb8c596ad.js} +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_bs.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_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-HK.json +1 -1
- package/assets/esri/t9n/common_zh-TW.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_ar.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_bg.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_bs.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_ca.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_cs.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_da.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_de.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_el.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_es.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_et.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_fi.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_fr.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_he.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_hr.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_hu.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_id.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_it.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_ja.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_ko.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_lt.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_lv.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_nb.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_nl.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_pl.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_pt-BR.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_pt-PT.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_ro.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_ru.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_sk.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_sl.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_sr.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_sv.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_th.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_tr.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_uk.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_vi.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_zh-CN.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_zh-HK.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_zh-TW.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_ar.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_bg.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_bs.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_ca.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_cs.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_da.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_de.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_el.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_es.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_et.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_fi.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_fr.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_he.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_hr.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_hu.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_id.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_it.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_ja.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_ko.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_lt.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_lv.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_nb.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_nl.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_pl.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_pt-BR.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_pt-PT.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_ro.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_ru.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_sk.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_sl.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_sr.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_sv.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_th.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_tr.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_uk.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_vi.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_zh-CN.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_zh-HK.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_zh-TW.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_ar.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_bg.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_bs.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_ca.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_cs.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_da.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_de.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_el.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_es.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_et.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_fi.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_fr.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_he.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_hr.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_hu.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_id.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_it.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_ja.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_ko.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_lt.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_lv.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_nb.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_nl.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_pl.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_pt-BR.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_pt-PT.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_ro.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_ru.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_sk.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_sl.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_sr.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_sv.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_th.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_tr.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_uk.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_vi.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_zh-CN.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_zh-HK.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_zh-TW.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_ar.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_bg.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_bs.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_ca.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_cs.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_da.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_de.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_el.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_es.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_et.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_fi.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_fr.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_he.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_hr.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_hu.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_id.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_it.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_ja.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_ko.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_lt.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_lv.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_nb.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_nl.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_pl.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_pt-BR.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_pt-PT.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_ro.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_ru.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_sk.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_sl.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_sr.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_sv.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_th.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_tr.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_uk.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_vi.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_zh-CN.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_zh-HK.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_zh-TW.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_ar.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_bg.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_bs.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_ca.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_cs.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_da.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_de.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_el.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_es.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_et.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_fi.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_fr.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_he.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_hr.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_hu.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_id.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_it.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_ja.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_ko.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_lt.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_lv.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_nb.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_nl.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_pl.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_pt-BR.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_pt-PT.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_ro.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_ru.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_sk.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_sl.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_sr.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_sv.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_th.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_tr.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_uk.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_vi.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_zh-CN.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_zh-HK.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_zh-TW.json +1 -1
- package/chunks/Compositing.glsl.js +4 -19
- package/chunks/HUDCompositing.glsl.js +7 -0
- package/chunks/Laserlines.glsl.js +5 -5
- package/chunks/OITCompositing.glsl.js +13 -0
- package/chunks/OverlayCompositing.glsl.js +8 -0
- package/chunks/Precipitation.glsl.js +1 -1
- package/chunks/ShadowHighlight.glsl.js +1 -1
- package/chunks/boundedPlane.js +1 -1
- package/chunks/cameraUtilsPlanar.js +1 -1
- package/chunks/cameraUtilsSpherical.js +1 -1
- package/chunks/mat3.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/vec3.js +1 -1
- package/chunks/vec3f32.js +1 -1
- package/chunks/vec4f64.js +1 -1
- package/core/VectorStack.js +1 -1
- package/core/libs/gl-matrix-2/factories/quatf64.js +1 -1
- package/core/libs/gl-matrix-2/factories/vec3f32.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/quat.js +1 -1
- package/core/libs/gl-matrix-2/math/vec3.js +1 -1
- package/core/perspectiveUtils.js +1 -1
- package/geohash/GeohashTree.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/lineSegment.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/projection.js +1 -1
- package/geometry/support/meshUtils/rotate.js +1 -1
- package/geometry/support/plane.js +1 -1
- package/interfaces.d.ts +70 -0
- package/layers/buildingSublayers/BuildingComponentSublayer.js +1 -1
- package/layers/graphics/featureConversionUtils.js +1 -1
- package/layers/mixins/EditBusLayer.js +1 -1
- package/layers/support/AggregateField.js +1 -1
- package/layers/support/ControlPointsGeoreference.js +1 -1
- package/layers/support/OutStatistic.js +1 -1
- package/layers/support/VoxelVolume.js +1 -1
- package/layers/support/voxelPlaneUtils.js +1 -1
- package/package.json +1 -1
- package/rest/support/AggregateFeatureSet.js +5 -0
- package/support/revision.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/VectorTile.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/layers/FeatureLayerView2D.js +1 -1
- package/views/2d/layers/features/controllers/FeatureController2D.js +1 -1
- package/views/2d/layers/features/schemaUtils.js +1 -1
- package/views/2d/layers/features/support/BinStore.js +1 -1
- package/views/2d/layers/features/support/ClusterStore.js +1 -1
- package/views/2d/layers/graphics/GraphicBoundsRenderer.js +1 -1
- package/views/2d/layers/support/DebugOverlay.js +1 -1
- package/views/2d/layers/support/FeatureLayerProxy.js +1 -1
- package/views/2d/layers/support/clusterUtils.js +1 -1
- package/views/3d/analysis/AreaMeasurement/support/MeasurementData.js +1 -1
- package/views/3d/analysis/Dimensioning/LengthDimensionSubTool.js +1 -1
- package/views/3d/analysis/Dimensioning/LengthDimensionVisualization.js +1 -1
- package/views/3d/analysis/Dimensioning/lengthDimensionUtils.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightController.js +1 -1
- package/views/3d/analysis/Slice/SliceTool.js +1 -1
- package/views/3d/analysis/Slice/sliceToolConfig.js +1 -1
- package/views/3d/analysis/Slice/sliceToolUtils.js +1 -1
- package/views/3d/camera/constraintUtils/distance.js +1 -1
- package/views/3d/camera/constraintUtils/tilt.js +1 -1
- package/views/3d/environment/PanoramicAtmosphere.js +1 -1
- package/views/3d/environment/SceneViewEnvironmentManager.js +1 -1
- package/views/3d/environment/SimpleAtmosphere.js +1 -1
- package/views/3d/glTF/internal/Resource.js +1 -1
- package/views/3d/interactive/Manipulator3D.js +1 -1
- package/views/3d/interactive/editingTools/reshapeGraphic/edgeOffsetUtils.js +1 -1
- package/views/3d/interactive/editingTools/settings.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/manipulatorUtils.js +1 -1
- package/views/3d/interactive/visualElements/ExtendedLineVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/LineVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/ParallelLineVisualElement.js +1 -1
- package/views/3d/layers/BuildingComponentSublayerView3D.js +1 -1
- package/views/3d/layers/I3SMeshView3D.js +1 -1
- package/views/3d/layers/PointCloudLayerView3D.js +1 -1
- package/views/3d/layers/PointCloudWorker.js +1 -1
- package/views/3d/layers/SceneLayerGraphicsView3D.js +1 -1
- package/views/3d/layers/graphics/Deconflictor.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/Graphics3DFeatureProcessor.js +1 -1
- package/views/3d/layers/graphics/Graphics3DLodInstanceGraphicLayer.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/objectResourceUtils.js +1 -1
- package/views/3d/layers/i3s/I3SElevationProvider.js +1 -1
- package/views/3d/layers/i3s/I3SIndex.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/PointRenderer.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/edgeUtils.js +1 -1
- package/views/3d/layers/support/uvUtils.js +1 -1
- package/views/3d/state/Frustum.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/local/PinchAndPanController.js +1 -1
- package/views/3d/state/controllers/local/ZoomController.js +1 -1
- package/views/3d/state/controllers/momentum/ZoomPlanarMomentumController.js +1 -1
- package/views/3d/state/utils/navigationUtils.js +1 -1
- package/views/3d/support/FrustumExtentIntersection.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/PointsOfInterest.js +1 -1
- package/views/3d/support/sunUtils.js +1 -1
- package/views/3d/terrain/OverlayRenderer.js +1 -1
- package/views/3d/terrain/PatchRenderData.js +1 -1
- package/views/3d/terrain/TerrainSurface.js +1 -1
- package/views/3d/terrain/Tile.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/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/VertexPosition.glsl.js +2 -2
- package/views/3d/webgl-engine/core/shaderTechnique/ShaderTechniqueRepository.js +1 -1
- package/views/3d/webgl-engine/core/util/TwoVectorPosition.js +1 -1
- package/views/3d/webgl-engine/lib/Camera.js +1 -1
- package/views/3d/webgl-engine/lib/CompositingHelper.js +1 -1
- package/views/3d/webgl-engine/lib/GeometryRecord.js +1 -1
- package/views/3d/webgl-engine/lib/GeometryUtil.js +1 -1
- package/views/3d/webgl-engine/lib/Highlight.js +1 -1
- package/views/3d/webgl-engine/lib/Intersector.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/OffscreenRendering.js +1 -1
- package/views/3d/webgl-engine/lib/RenderGeometry.js +1 -1
- package/views/3d/webgl-engine/lib/ShadowMap.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/EdgeView.js +1 -1
- package/views/3d/webgl-engine/lib/edgeRendering/edgePreprocessing.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/pathGeometryUtils.js +1 -1
- package/views/3d/webgl-engine/lib/verticalOffsetUtils.js +1 -1
- package/views/3d/webgl-engine/lighting/SphericalHarmonics.js +1 -1
- package/views/3d/webgl-engine/materials/HUDMaterial.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/RibbonLineMaterial.js +1 -1
- package/views/3d/webgl-engine/shaders/Compositing.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/CompositingTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/CompositingTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/shaders/HUDCompositing.glsl.js +5 -0
- package/views/3d/webgl-engine/shaders/HUDCompositingTechnique.js +5 -0
- package/views/3d/webgl-engine/shaders/OITCompositing.glsl.js +5 -0
- package/views/3d/webgl-engine/shaders/OITCompositingTechnique.js +5 -0
- package/views/3d/webgl-engine/shaders/OverlayCompositing.glsl.js +5 -0
- package/views/3d/webgl-engine/shaders/OverlayCompositingTechnique.js +5 -0
- package/views/draw/support/surfaceCoordinateSystems.js +1 -1
- package/views/interactive/coordinateHelper.js +1 -1
- package/views/interactive/editGeometry/operations/OffsetEdgeVertex.js +1 -1
- package/views/interactive/editGeometry/support/editPlaneUtils.js +1 -1
- package/views/interactive/snapping/RightAngleSnapper.js +1 -1
- package/views/interactive/snapping/featureSources/sceneLayerSource/SceneLayerSnappingSourceWorker.js +1 -1
- package/views/layers/FeatureLayerView.js +1 -1
- package/views/navigation/PanSphericalMomentumEstimator.js +1 -1
- package/views/support/Scheduler.js +1 -1
- package/views/support/euclideanAreaMeasurementUtils.js +1 -1
- package/views/support/geometry3dUtils.js +1 -1
- package/widgets/ElevationProfile/support/ProfileLines3D.js +1 -1
- package/widgets/ElevationProfile/support/constants.js +1 -1
- package/widgets/Feature/FeatureRelationship/FeatureRelationshipViewModel.js +1 -1
- package/widgets/Feature/FeatureRelationship.js +1 -1
- package/assets/esri/core/workers/chunks/0059699bf824f851d51c.js +0 -1
- package/assets/esri/core/workers/chunks/36dd5654df5c7f00406d.js +0 -1
- package/assets/esri/core/workers/chunks/de128d8a643b4297940b.js +0 -1
- package/assets/esri/core/workers/chunks/e00327925ca82b63fded.js +0 -1
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.25/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as t}from"../../../../chunks/tslib.es6.js";import{neverReached as e}from"../../../../core/compilerUtils.js";import{clamp as i,acosClamped as a,deg2rad as r}from"../../../../core/mathUtils.js";import{isSome as o}from"../../../../core/maybe.js";import{property as s}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as n}from"../../../../core/accessorSupport/decorators/subclass.js";import{v as c,e as m,i as l}from"../../../../chunks/mat4.js";import{c as p}from"../../../../chunks/mat4f64.js";import{b as h,m as d,a as u,g as _,c as f,o as v,l as C,s as g,n as y,f as w,e as O,i as b,r as S}from"../../../../chunks/vec3.js";import{c as j}from"../../../../chunks/vec3f64.js";import{getReferenceEllipsoid as x}from"../../../../geometry/projectionEllipsoid.js";import{wrap as M}from"../../../../geometry/support/ray.js";import{b as T,e as L,t as A}from"../../../../chunks/sphere.js";import{sv3d as z}from"../../../../geometry/support/vectorStacks.js";import{applyAll as E}from"../../camera/constraintUtils.js";import{ConstraintTypes as D}from"../../camera/constraintUtils/ConstraintTypes.js";import{InteractionType as I}from"../../camera/constraintUtils/InteractionType.js";import{TiltMode as U}from"../../camera/constraintUtils/TiltMode.js";import{TiltDefault as R}from"../Constraints.js";import{InteractiveController as k}from"./InteractiveController.js";import{panMotionToRotationMatrix as H,onSurfaceTiltToEyeTiltGlobal as N,offSurfaceTiltToEyeTiltGlobal as F}from"../utils/navigationUtils.js";import{viewAngle as P}from"../utils/viewUtils.js";import{headingTiltToDirectionUp as G}from"../../support/cameraUtils.js";import{createDirectionUp as V}from"../../support/cameraUtilsInternal.js";import{Camera as B}from"../../webgl-engine/lib/Camera.js";import{extractTransformation as K,isZeroTransformation as X,extractTransformationKeyboard as Z}from"../../../navigation/gamepadAndKeyboardUtils.js";let q=class extends k{constructor(t){super(t),this._transformation={translation:[0,0,0],heading:0,tilt:0,zoom:0},this._keysButtonState=[0,0,0,0,0,0,0,0,0,0,0,0],this._tmpCamera=new B,this._constraintOptions={selection:D.ALL,interactionType:I.NONE,interactionStartCamera:new B,interactionFactor:0,interactionDirection:null,tiltMode:U.LOOK_AROUND}}handleEventGamepad(t){const e=K(t,this.view.navigation.gamepad,this._transformation);("end"===t.action||X(e))&&this.finishController()}activateDirection(t){this._keysButtonState[t]=1,Z(this._keysButtonState,this._transformation)}deactivateDirection(t){this._keysButtonState[t]=0;const e=Z(this._keysButtonState,this._transformation);X(e)&&this.finishController()}onControllerStart(t){this._filteredSurfaceElevation=this.view.pointsOfInterest.cameraOnSurface.location.z,this._headingStart=this.view.camera.heading,super.onControllerStart(t)}_updateFilteredSurfaceElevation(t){const e=this.view.pointsOfInterest.cameraOnSurface.location.z,i=1;this._filteredSurfaceElevation+=i*(e-this._filteredSurfaceElevation)*t}stepController(t,e){this._updateStartHeading(),this._updateFilteredSurfaceElevation(t),this.currentCamera.copyViewFrom(e),this._updateCameraCenter(),this._constraintOptions.interactionStartCamera.copyFrom(this.currentCamera),this._calculateControlTransformation(t,this.currentCamera,it),this._applyDisabledMovementTypes(it),this._applyPan(it.pan),this._applyRotate(it.rotate),this._applyZoom(it.zoom),this._applyAscend(it.ascend),this._constraintOptions.interactionType=I.NONE,this._constraintOptions.selection=D.COLLISION,E(this.view,this.currentCamera,this._constraintOptions),super.stepController(t,e)}_updateStartHeading(){0!==this._transformation.heading&&(this._headingStart=this.view.camera.heading)}_applyRotate(t){if(!t.enabled)return;const e=this.currentCamera;h(at,e.center,e.eye),d(at,at,t.matrix),e.center=u(at,at,e.eye),e.up=d(at,e.up,t.matrix),this._constraintOptions.interactionType=I.LOOK_AROUND,this._constraintOptions.selection=D.ALL_EXCEPT_COLLISION,E(this.view,e,this._constraintOptions)}_applyPan(t,e=this.currentCamera){if(!t.enabled)return;e.eye=d(at,e.eye,t.matrix),e.center=d(at,e.center,t.matrix);this.view.state.isGlobal&&(e.up=d(at,e.up,t.matrix)),this._constraintOptions.interactionType=I.PAN,this._constraintOptions.selection=D.ALL,E(this.view,e,this._constraintOptions)}_applyZoom(t){if(!t)return;const e=this.currentCamera.viewForward;this.currentCamera.eye=u(at,this.currentCamera.eye,_(z.get(),e,t)),f(rt,e),v(rt,rt),this._constraintOptions.interactionDirection=rt,this._constraintOptions.interactionType=I.ZOOM,this._constraintOptions.selection=D.ALL_EXCEPT_COLLISION,E(this.view,this.currentCamera,this._constraintOptions),this._constraintOptions.interactionDirection=null}_applyAscend(t){if(!t)return;const e=this.view.renderCoordsHelper.worldUpAtPosition(this.currentCamera.eye,z.get());this._constraintOptions.interactionDirection=f(rt,e);if(this.view.state.isGlobal){const e=C(this.currentCamera.eye),i=(e+t)/e;this.currentCamera.eye=_(at,this.currentCamera.eye,i),this.currentCamera.center=_(at,this.currentCamera.center,i)}else{const i=_(z.get(),e,t);this.currentCamera.eye=u(at,this.currentCamera.eye,i),this.currentCamera.center=u(at,this.currentCamera.center,i)}this._updateCameraCenter(),this._constraintOptions.interactionType=I.ASCEND,this._constraintOptions.selection=D.COLLISION,E(this.view,this.currentCamera,this._constraintOptions)&&this._updateCameraCenter(),this._constraintOptions.selection=D.ALL_EXCEPT_COLLISION,E(this.view,this.currentCamera,this._constraintOptions),this._constraintOptions.interactionDirection=null}_calculateControlTransformation(t,e,i){st(i);const a=this._computeVelocities(t);this.view.state.isLocal?this._calculateControlTransformationLocal(a,e,i):this._calculateControlTransformationGlobal(a,e,i)}_updateCameraCenter(){const t=this.view.pointsOfInterest.centerOnSurfaceFrequent.estimatedSurfaceAltitude,e=this.view.renderCoordsHelper,i=this.currentCamera.ray;this.currentCamera.center=e.intersectManifoldClosestSilhouette(i,t,at)}_calculateControlTransformationLocal(t,a,r){const{viewRight:o,viewForward:s}=a,n=this._transformation,l=this.view.navigation.gamepad,p=g(z.get(),s[0],s[1],0);y(p,p);const h=n.translation[0]*t.pan;if(0!==h){const t=_(z.get(),o,h);c(r.pan.matrix,r.pan.matrix,t),r.pan.enabled=!0}switch(l.mode){case"pan":{const e=-n.translation[1]*t.pan;if(0!==e){const t=_(z.get(),p,e);c(r.pan.matrix,r.pan.matrix,t),r.pan.enabled=!0}r.zoom=n.zoom*t.zoom;break}case"zoom":r.zoom=(-n.translation[1]+n.zoom)*t.zoom;break;default:e(l.mode)}const d=n.translation[2]*t.ascend;r.ascend=d;const u=-n.heading*t.rotate;0!==u&&(m(r.rotate.matrix,r.rotate.matrix,u,this.view.renderCoordsHelper.worldUpAtPosition(a.eye,z.get())),r.rotate.enabled=!0);const f=n.tilt*t.rotate,v=P(this.view.renderCoordsHelper,a.center,a.eye),C=i(v+f,R.min,R.max)-v;C&&(m(r.rotate.matrix,r.rotate.matrix,C,o),r.rotate.enabled=!0)}_calculateControlTransformationGlobal(t,e,i){const{eye:a,viewRight:r}=e,o=this._transformation,s=this.view.navigation.gamepad,n=w(z.get(),r,a);y(n,n),v(n,n),H(this.startCamera,e,o,t,this.view.camera.heading,this._headingStart,this.view.camera.tilt,i,s),this._tmpCamera.copyFrom(this.currentCamera),this._applyPan(it.pan,this._tmpCamera);const c=this.view.pointsOfInterest.centerOnSurfaceFrequent.estimatedSurfaceAltitude,l=o.translation[2]*t.ascend;i.ascend=l;const p=-o.heading*t.rotate;0!==p&&(m(i.rotate.matrix,i.rotate.matrix,p,this._tmpCamera.eye),i.rotate.enabled=!0);const h=o.tilt*t.rotate,d=this._clampTiltDeltaGlobalToValidRange(h,e.ray,c);0!==d&&(m(i.rotate.matrix,i.rotate.matrix,d,this._tmpCamera.viewRight),i.rotate.enabled=!0),i.zoom+=o.zoom*t.zoom}_clampTiltDeltaGlobalToValidRange(t,e,r){const o=x(this.view.spatialReference),s=N(R.min,e.origin,r,o);let n=0,c=0;const m=z.get();if(this.view.renderCoordsHelper.intersectManifold(e,r,m)){const t=P(this.view.renderCoordsHelper,m,e.origin);n=N(t,e.origin,r,o),c=N(R.max,e.origin,r,o)}else{T(L(A,r+o.radius),e,m);const t=a(-O(e.direction,y(m,m)));n=F(t,e.origin,r,o),c=F(R.max,e.origin,r,o)}return i(n+t,s,c)-n}_getPointAbsoluteSurfaceElevation(t,e,i){const{renderCoordsHelper:a}=this.view,r=a.getAltitude(t),o=e+Math.abs(r-e);return a.setAltitude(i,o,t),o}_clampedDistanceToSurface(t,e){const{renderCoordsHelper:i}=this.view,{camera:a}=this.view.state,{direction:r}=G(this.view,e,0,Q,ot),o=i.intersectManifoldClosestSilhouette(M(e,r),t,z.get()),s=b(e,o),n=i.intersectManifoldClosestSilhouette(M(e,S(z.get(),e,a.center)),t,z.get()),c=b(e,n);return Math.min(s,c)}_computeHeadingRotateRadius(t){const{renderCoordsHelper:e,state:i}=this.view,{camera:r,isGlobal:o}=i,s=e.intersectManifoldClosestSilhouette(r.ray,this._filteredSurfaceElevation,z.get());if(o){const e=h(z.get(),t,s),i=C(e);_(e,e,1/i);const r=y(z.get(),t),o=a(O(r,e));return i*Math.sin(Math.min(W,o))}{const i=f(z.get(),t);return e.setAltitude(i,this._filteredSurfaceElevation),b(s,i)}}_minimumAscendVelocity(){return this.view.state.constraints.collision.enabled?0:$}_computeVelocities(t){const e=this._filteredSurfaceElevation,a=e+x(this.view.spatialReference).radius,{camera:r,isGlobal:o}=this.view.state,s=z.get(),n=this._getPointAbsoluteSurfaceElevation(r.eye,e,s),c=this._clampedDistanceToSurface(e,s),m=r.width/2,l=Y*r.width,p=Y*r.width,h=c*Math.tan(.5*r.fovX)/m,d=h/a,u=h/this._computeHeadingRotateRadius(s),_=n-e;return{pan:(o?d:h)*l*t,ascend:Math.max(this._minimumAscendVelocity()*t,2**(l*t/m)*_-_),zoom:2**(l*t/m)*c-c,rotate:i(u*p,tt,et)*t}}_applyDisabledMovementTypes(t){!o(this.disableMovements)||void 0!==this.disableMovements.mode&&this.view.state.viewingMode!==this.disableMovements.mode||(t.zoom=this.disableMovements.zoom?0:t.zoom,t.ascend=this.disableMovements.ascend?0:t.ascend,t.pan.enabled=!this.disableMovements.pan,this.disableMovements.pan&&l(t.pan.matrix),t.rotate.enabled=!this.disableMovements.rotate,this.disableMovements.rotate&&l(t.rotate.matrix))}static activatesFor(t,e){const i=K(e,t.navigation.gamepad,J);return!("end"===e.action||X(i))}};t([s({constructOnly:!0})],q.prototype,"gamepadDevice",void 0),t([s({constructOnly:!0})],q.prototype,"disableMovements",void 0),q=t([n("esri.views.3d.state.controllers.GamepadKeyboardController")],q);const J={translation:[0,0,0],heading:0,tilt:0,zoom:0},Q=80,W=r(Q),Y=.75,$=5,tt=r(30),et=r(80),it={zoom:0,ascend:0,pan:{enabled:!1,matrix:p()},rotate:{enabled:!1,matrix:p()}},at=j(),rt=j(),ot=V();function st(t){t.zoom=0,t.ascend=0,t.pan.enabled=!1,l(t.pan.matrix),t.rotate.enabled=!1,l(t.rotate.matrix)}export{q as GamepadKeyboardController};
|
|
5
|
+
import{_ as t}from"../../../../chunks/tslib.es6.js";import{neverReached as e}from"../../../../core/compilerUtils.js";import{clamp as i,acosClamped as a,deg2rad as r}from"../../../../core/mathUtils.js";import{isSome as o}from"../../../../core/maybe.js";import{property as s}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as n}from"../../../../core/accessorSupport/decorators/subclass.js";import{v as c,e as m,i as l}from"../../../../chunks/mat4.js";import{c as p}from"../../../../chunks/mat4f64.js";import{b as h,v as d,a as u,g as _,c as f,x as v,l as C,s as g,n as y,f as w,e as O,i as b,A as S}from"../../../../chunks/vec3.js";import{c as j}from"../../../../chunks/vec3f64.js";import{getReferenceEllipsoid as x}from"../../../../geometry/projectionEllipsoid.js";import{wrap as M}from"../../../../geometry/support/ray.js";import{b as T,e as L,t as A}from"../../../../chunks/sphere.js";import{sv3d as z}from"../../../../geometry/support/vectorStacks.js";import{applyAll as E}from"../../camera/constraintUtils.js";import{ConstraintTypes as D}from"../../camera/constraintUtils/ConstraintTypes.js";import{InteractionType as I}from"../../camera/constraintUtils/InteractionType.js";import{TiltMode as U}from"../../camera/constraintUtils/TiltMode.js";import{TiltDefault as R}from"../Constraints.js";import{InteractiveController as k}from"./InteractiveController.js";import{panMotionToRotationMatrix as H,onSurfaceTiltToEyeTiltGlobal as N,offSurfaceTiltToEyeTiltGlobal as F}from"../utils/navigationUtils.js";import{viewAngle as P}from"../utils/viewUtils.js";import{headingTiltToDirectionUp as G}from"../../support/cameraUtils.js";import{createDirectionUp as V}from"../../support/cameraUtilsInternal.js";import{Camera as B}from"../../webgl-engine/lib/Camera.js";import{extractTransformation as K,isZeroTransformation as X,extractTransformationKeyboard as Z}from"../../../navigation/gamepadAndKeyboardUtils.js";let q=class extends k{constructor(t){super(t),this._transformation={translation:[0,0,0],heading:0,tilt:0,zoom:0},this._keysButtonState=[0,0,0,0,0,0,0,0,0,0,0,0],this._tmpCamera=new B,this._constraintOptions={selection:D.ALL,interactionType:I.NONE,interactionStartCamera:new B,interactionFactor:0,interactionDirection:null,tiltMode:U.LOOK_AROUND}}handleEventGamepad(t){const e=K(t,this.view.navigation.gamepad,this._transformation);("end"===t.action||X(e))&&this.finishController()}activateDirection(t){this._keysButtonState[t]=1,Z(this._keysButtonState,this._transformation)}deactivateDirection(t){this._keysButtonState[t]=0;const e=Z(this._keysButtonState,this._transformation);X(e)&&this.finishController()}onControllerStart(t){this._filteredSurfaceElevation=this.view.pointsOfInterest.cameraOnSurface.location.z,this._headingStart=this.view.camera.heading,super.onControllerStart(t)}_updateFilteredSurfaceElevation(t){const e=this.view.pointsOfInterest.cameraOnSurface.location.z,i=1;this._filteredSurfaceElevation+=i*(e-this._filteredSurfaceElevation)*t}stepController(t,e){this._updateStartHeading(),this._updateFilteredSurfaceElevation(t),this.currentCamera.copyViewFrom(e),this._updateCameraCenter(),this._constraintOptions.interactionStartCamera.copyFrom(this.currentCamera),this._calculateControlTransformation(t,this.currentCamera,it),this._applyDisabledMovementTypes(it),this._applyPan(it.pan),this._applyRotate(it.rotate),this._applyZoom(it.zoom),this._applyAscend(it.ascend),this._constraintOptions.interactionType=I.NONE,this._constraintOptions.selection=D.COLLISION,E(this.view,this.currentCamera,this._constraintOptions),super.stepController(t,e)}_updateStartHeading(){0!==this._transformation.heading&&(this._headingStart=this.view.camera.heading)}_applyRotate(t){if(!t.enabled)return;const e=this.currentCamera;h(at,e.center,e.eye),d(at,at,t.matrix),e.center=u(at,at,e.eye),e.up=d(at,e.up,t.matrix),this._constraintOptions.interactionType=I.LOOK_AROUND,this._constraintOptions.selection=D.ALL_EXCEPT_COLLISION,E(this.view,e,this._constraintOptions)}_applyPan(t,e=this.currentCamera){if(!t.enabled)return;e.eye=d(at,e.eye,t.matrix),e.center=d(at,e.center,t.matrix);this.view.state.isGlobal&&(e.up=d(at,e.up,t.matrix)),this._constraintOptions.interactionType=I.PAN,this._constraintOptions.selection=D.ALL,E(this.view,e,this._constraintOptions)}_applyZoom(t){if(!t)return;const e=this.currentCamera.viewForward;this.currentCamera.eye=u(at,this.currentCamera.eye,_(z.get(),e,t)),f(rt,e),v(rt,rt),this._constraintOptions.interactionDirection=rt,this._constraintOptions.interactionType=I.ZOOM,this._constraintOptions.selection=D.ALL_EXCEPT_COLLISION,E(this.view,this.currentCamera,this._constraintOptions),this._constraintOptions.interactionDirection=null}_applyAscend(t){if(!t)return;const e=this.view.renderCoordsHelper.worldUpAtPosition(this.currentCamera.eye,z.get());this._constraintOptions.interactionDirection=f(rt,e);if(this.view.state.isGlobal){const e=C(this.currentCamera.eye),i=(e+t)/e;this.currentCamera.eye=_(at,this.currentCamera.eye,i),this.currentCamera.center=_(at,this.currentCamera.center,i)}else{const i=_(z.get(),e,t);this.currentCamera.eye=u(at,this.currentCamera.eye,i),this.currentCamera.center=u(at,this.currentCamera.center,i)}this._updateCameraCenter(),this._constraintOptions.interactionType=I.ASCEND,this._constraintOptions.selection=D.COLLISION,E(this.view,this.currentCamera,this._constraintOptions)&&this._updateCameraCenter(),this._constraintOptions.selection=D.ALL_EXCEPT_COLLISION,E(this.view,this.currentCamera,this._constraintOptions),this._constraintOptions.interactionDirection=null}_calculateControlTransformation(t,e,i){st(i);const a=this._computeVelocities(t);this.view.state.isLocal?this._calculateControlTransformationLocal(a,e,i):this._calculateControlTransformationGlobal(a,e,i)}_updateCameraCenter(){const t=this.view.pointsOfInterest.centerOnSurfaceFrequent.estimatedSurfaceAltitude,e=this.view.renderCoordsHelper,i=this.currentCamera.ray;this.currentCamera.center=e.intersectManifoldClosestSilhouette(i,t,at)}_calculateControlTransformationLocal(t,a,r){const{viewRight:o,viewForward:s}=a,n=this._transformation,l=this.view.navigation.gamepad,p=g(z.get(),s[0],s[1],0);y(p,p);const h=n.translation[0]*t.pan;if(0!==h){const t=_(z.get(),o,h);c(r.pan.matrix,r.pan.matrix,t),r.pan.enabled=!0}switch(l.mode){case"pan":{const e=-n.translation[1]*t.pan;if(0!==e){const t=_(z.get(),p,e);c(r.pan.matrix,r.pan.matrix,t),r.pan.enabled=!0}r.zoom=n.zoom*t.zoom;break}case"zoom":r.zoom=(-n.translation[1]+n.zoom)*t.zoom;break;default:e(l.mode)}const d=n.translation[2]*t.ascend;r.ascend=d;const u=-n.heading*t.rotate;0!==u&&(m(r.rotate.matrix,r.rotate.matrix,u,this.view.renderCoordsHelper.worldUpAtPosition(a.eye,z.get())),r.rotate.enabled=!0);const f=n.tilt*t.rotate,v=P(this.view.renderCoordsHelper,a.center,a.eye),C=i(v+f,R.min,R.max)-v;C&&(m(r.rotate.matrix,r.rotate.matrix,C,o),r.rotate.enabled=!0)}_calculateControlTransformationGlobal(t,e,i){const{eye:a,viewRight:r}=e,o=this._transformation,s=this.view.navigation.gamepad,n=w(z.get(),r,a);y(n,n),v(n,n),H(this.startCamera,e,o,t,this.view.camera.heading,this._headingStart,this.view.camera.tilt,i,s),this._tmpCamera.copyFrom(this.currentCamera),this._applyPan(it.pan,this._tmpCamera);const c=this.view.pointsOfInterest.centerOnSurfaceFrequent.estimatedSurfaceAltitude,l=o.translation[2]*t.ascend;i.ascend=l;const p=-o.heading*t.rotate;0!==p&&(m(i.rotate.matrix,i.rotate.matrix,p,this._tmpCamera.eye),i.rotate.enabled=!0);const h=o.tilt*t.rotate,d=this._clampTiltDeltaGlobalToValidRange(h,e.ray,c);0!==d&&(m(i.rotate.matrix,i.rotate.matrix,d,this._tmpCamera.viewRight),i.rotate.enabled=!0),i.zoom+=o.zoom*t.zoom}_clampTiltDeltaGlobalToValidRange(t,e,r){const o=x(this.view.spatialReference),s=N(R.min,e.origin,r,o);let n=0,c=0;const m=z.get();if(this.view.renderCoordsHelper.intersectManifold(e,r,m)){const t=P(this.view.renderCoordsHelper,m,e.origin);n=N(t,e.origin,r,o),c=N(R.max,e.origin,r,o)}else{T(L(A,r+o.radius),e,m);const t=a(-O(e.direction,y(m,m)));n=F(t,e.origin,r,o),c=F(R.max,e.origin,r,o)}return i(n+t,s,c)-n}_getPointAbsoluteSurfaceElevation(t,e,i){const{renderCoordsHelper:a}=this.view,r=a.getAltitude(t),o=e+Math.abs(r-e);return a.setAltitude(i,o,t),o}_clampedDistanceToSurface(t,e){const{renderCoordsHelper:i}=this.view,{camera:a}=this.view.state,{direction:r}=G(this.view,e,0,Q,ot),o=i.intersectManifoldClosestSilhouette(M(e,r),t,z.get()),s=b(e,o),n=i.intersectManifoldClosestSilhouette(M(e,S(z.get(),e,a.center)),t,z.get()),c=b(e,n);return Math.min(s,c)}_computeHeadingRotateRadius(t){const{renderCoordsHelper:e,state:i}=this.view,{camera:r,isGlobal:o}=i,s=e.intersectManifoldClosestSilhouette(r.ray,this._filteredSurfaceElevation,z.get());if(o){const e=h(z.get(),t,s),i=C(e);_(e,e,1/i);const r=y(z.get(),t),o=a(O(r,e));return i*Math.sin(Math.min(W,o))}{const i=f(z.get(),t);return e.setAltitude(i,this._filteredSurfaceElevation),b(s,i)}}_minimumAscendVelocity(){return this.view.state.constraints.collision.enabled?0:$}_computeVelocities(t){const e=this._filteredSurfaceElevation,a=e+x(this.view.spatialReference).radius,{camera:r,isGlobal:o}=this.view.state,s=z.get(),n=this._getPointAbsoluteSurfaceElevation(r.eye,e,s),c=this._clampedDistanceToSurface(e,s),m=r.width/2,l=Y*r.width,p=Y*r.width,h=c*Math.tan(.5*r.fovX)/m,d=h/a,u=h/this._computeHeadingRotateRadius(s),_=n-e;return{pan:(o?d:h)*l*t,ascend:Math.max(this._minimumAscendVelocity()*t,2**(l*t/m)*_-_),zoom:2**(l*t/m)*c-c,rotate:i(u*p,tt,et)*t}}_applyDisabledMovementTypes(t){!o(this.disableMovements)||void 0!==this.disableMovements.mode&&this.view.state.viewingMode!==this.disableMovements.mode||(t.zoom=this.disableMovements.zoom?0:t.zoom,t.ascend=this.disableMovements.ascend?0:t.ascend,t.pan.enabled=!this.disableMovements.pan,this.disableMovements.pan&&l(t.pan.matrix),t.rotate.enabled=!this.disableMovements.rotate,this.disableMovements.rotate&&l(t.rotate.matrix))}static activatesFor(t,e){const i=K(e,t.navigation.gamepad,J);return!("end"===e.action||X(i))}};t([s({constructOnly:!0})],q.prototype,"gamepadDevice",void 0),t([s({constructOnly:!0})],q.prototype,"disableMovements",void 0),q=t([n("esri.views.3d.state.controllers.GamepadKeyboardController")],q);const J={translation:[0,0,0],heading:0,tilt:0,zoom:0},Q=80,W=r(Q),Y=.75,$=5,tt=r(30),et=r(80),it={zoom:0,ascend:0,pan:{enabled:!1,matrix:p()},rotate:{enabled:!1,matrix:p()}},at=j(),rt=j(),ot=V();function st(t){t.zoom=0,t.ascend=0,t.pan.enabled=!1,l(t.pan.matrix),t.rotate.enabled=!1,l(t.rotate.matrix)}export{q as GamepadKeyboardController};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.25/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as t}from"../../../../chunks/tslib.es6.js";import{acosClamped as i,clamp as s}from"../../../../core/mathUtils.js";import{isSome as r,unwrapOr as o,isNone as e}from"../../../../core/maybe.js";import{createScreenPointArray as a}from"../../../../core/screenUtils.js";import{property as n}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as p}from"../../../../core/accessorSupport/decorators/subclass.js";import{d as h,e as c}from"../../../../chunks/mat4.js";import{c as m}from"../../../../chunks/mat4f64.js";import{c as l}from"../../../../chunks/vec2.js";import{a as _}from"../../../../chunks/vec2f64.js";import{c as v,b as u,l as f,n as C,a as P,g as E,e as T,f as d,
|
|
5
|
+
import{_ as t}from"../../../../chunks/tslib.es6.js";import{acosClamped as i,clamp as s}from"../../../../core/mathUtils.js";import{isSome as r,unwrapOr as o,isNone as e}from"../../../../core/maybe.js";import{createScreenPointArray as a}from"../../../../core/screenUtils.js";import{property as n}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as p}from"../../../../core/accessorSupport/decorators/subclass.js";import{d as h,e as c}from"../../../../chunks/mat4.js";import{c as m}from"../../../../chunks/mat4f64.js";import{c as l}from"../../../../chunks/vec2.js";import{a as _}from"../../../../chunks/vec2f64.js";import{c as v,b as u,l as f,n as C,a as P,g as E,e as T,f as d,v as j}from"../../../../chunks/vec3.js";import{c as w}from"../../../../chunks/vec3f64.js";import{getReferenceEllipsoid as R}from"../../../../geometry/projectionEllipsoid.js";import{applyAll as y}from"../../camera/constraintUtils.js";import{ConstraintTypes as U}from"../../camera/constraintUtils/ConstraintTypes.js";import{InteractionType as M}from"../../camera/constraintUtils/InteractionType.js";import{TiltMode as O}from"../../camera/constraintUtils/TiltMode.js";import{TiltDefault as D}from"../Constraints.js";import{InteractiveController as x}from"./InteractiveController.js";import{normalizeCoordinate as N,decideNavigationMode as g,NavigationMode as k}from"../utils/navigationUtils.js";var A;!function(t){t[t.CENTER=0]="CENTER",t[t.EYE=1]="EYE"}(A||(A={}));const b=7,L=90;let V=class extends x{constructor(t){super(t),this.pivot=A.CENTER,this._lastPoint=_(),this._tmpWorldUp=w(),this._tmpViewDir=w(),this._tmpRotCurPoint=_(),this._tmpTransf=m(),this._tmpAxis=w(),this._tmpPivotPoint=w(),this._pivotPos=w(),this._constraintOptions={selection:U.ALL,interactionType:M.TUMBLE,interactionFactor:0,interactionStartCamera:null,interactionDirection:null,tiltMode:O.TUMBLE}}get _intersectionHelper(){return this.view.sceneIntersectionHelper}initialize(){this._rotScale=this.pivot===A.CENTER?3:1.5}begin(t){if(this.active){switch(this.pivot){case A.EYE:v(this._pivotPos,this.startCamera.eye),this._constraintOptions.interactionType=M.LOOK_AROUND,this._constraintOptions.tiltMode=O.LOOK_AROUND,this._constraintOptions.selection=U.NONE;break;case A.CENTER:{const i=this._intersectionHelper.intersectRayFreePointFallback(this.startCamera.ray,this._pivotPos);i||v(this._pivotPos,this.startCamera.center),this._constrainPivotPoint(t,i),this.startCamera.center=this._pivotPos,this._constraintOptions.interactionType=M.TUMBLE,this._constraintOptions.tiltMode=O.TUMBLE,this._constraintOptions.selection=U.ALL&~U.DISTANCE;break}}this._constraintOptions.interactionStartCamera=this.startCamera,N(this.startCamera,t,this._lastPoint)}}_constrainPivotPoint(t,i){const s=this.startCamera,n=w();u(n,this._pivotPos,s.eye);const p=f(n);let h=Math.min(p,b*Math.abs(this.view.camera.position.z));const c=R(this.view.spatialReference),m=a(s.width/s.pixelRatio*.5,s.height/s.pixelRatio*.5),l=g(this.startCamera,m,!0,c);let _=this.view._stage.renderView.getMinimalDepthForArea(this.view.voxelWasm,s.fullWidth/s.pixelRatio*.5,s.fullHeight/s.pixelRatio*.5,s,2.5*L,L),T=this.view._stage.renderView.getMinimalDepthForArea(this.view.voxelWasm,t[0],t[1],s,L);(r(_)||r(T))&&(_=o(_,T),T=e(T)||l===k.Horizontal?_:T,h=_>T?T:_,h=i?Math.min(h,p):h),C(n,n),v(this._pivotPos,P(this._tmpPivotPoint,s.eye,E(this._tmpPivotPoint,n,h)))}update(t){if(this.active){switch(this.pivot){case A.EYE:this.currentCamera.center=this._applyRotation(this.currentCamera,t,this.currentCamera.center,this._pivotPos);break;case A.CENTER:this.currentCamera.center=this._pivotPos,this.currentCamera.eye=this._applyRotation(this.currentCamera,t,this.currentCamera.eye,this._pivotPos)}y(this.view,this.currentCamera,this._constraintOptions),this.commitCamera()}}end(){this.active&&this.finishController()}_applyRotation(t,r,o,e){this.view.renderCoordsHelper.worldUpAtPosition(e,this._tmpWorldUp),N(t,r,this._tmpRotCurPoint);let a=(this._lastPoint[1]-this._tmpRotCurPoint[1])*this._rotScale,n=(this._tmpRotCurPoint[0]-this._lastPoint[0])*this._rotScale;u(this._tmpViewDir,o,e);const p=f(this._tmpViewDir),m=i(T(this._tmpViewDir,this._tmpWorldUp)/p);if(this.pivot===A.EYE){a*=-.5;const t=.5*Math.PI-m,i=.5*Math.PI*.99;a=t-Math.max(-i,Math.min(i,t+a))}return a=s(a+m,D.min,D.max)-m,d(this._tmpAxis,t.up,this._tmpViewDir),this.pivot===A.CENTER&&(n=-n),h(this._tmpTransf,n,this._tmpWorldUp),c(this._tmpTransf,this._tmpTransf,a,this._tmpAxis),j(this._tmpViewDir,this._tmpViewDir,this._tmpTransf),t.up=j(S,t.up,this._tmpTransf),P(S,e,this._tmpViewDir),l(this._lastPoint,this._tmpRotCurPoint),S}};t([n()],V.prototype,"pivot",void 0),V=t([p("esri.views.3d.state.controllers.RotateController")],V);const S=w();export{A as PivotPoint,V as RotateController};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.25/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as t}from"../../../../../chunks/tslib.es6.js";import{cyclicalPI as i}from"../../../../../core/Cyclical.js";import{deg2rad as e}from"../../../../../core/mathUtils.js";import{isNone as n,isSome as s}from"../../../../../core/maybe.js";import{createScreenPointArray as o,screenPointObjectToArray as r,createRenderScreenPointArray3 as a}from"../../../../../core/screenUtils.js";import"../../../../../core/Logger.js";import"../../../../../core/accessorSupport/ensureType.js";import"../../../../../core/arrayUtils.js";import"../../../../../core/has.js";import"../../../../../core/Error.js";import{subclass as m}from"../../../../../core/accessorSupport/decorators/subclass.js";import{c as h,d as c}from"../../../../../chunks/vec2.js";import{c as _,o as p,l,b as u,n as P,a as d,g,e as v}from"../../../../../chunks/vec3.js";import{c as C}from"../../../../../chunks/vec3f64.js";import{getReferenceEllipsoid as M}from"../../../../../geometry/projectionEllipsoid.js";import{wrapAxisAngle as S}from"../../../../../geometry/support/axisAngle.js";import{create as w,fromPositionAndNormal as b,normal as f}from"../../../../../geometry/support/plane.js";import{c as j}from"../../../../../chunks/sphere.js";import{pixelDistanceToInteractionFactor as E,applyAll as y}from"../../../camera/constraintUtils.js";import{ConstraintTypes as O}from"../../../camera/constraintUtils/ConstraintTypes.js";import{InteractionType as k}from"../../../camera/constraintUtils/InteractionType.js";import{TiltMode as A}from"../../../camera/constraintUtils/TiltMode.js";import{ExponentialFalloff as z}from"../../../input/util.js";import{InteractiveController as R}from"../InteractiveController.js";import{PanPlanarMomentumController as x}from"../momentum/PanPlanarMomentumController.js";import{PanSphericalMomentumController as T}from"../momentum/PanSphericalMomentumController.js";import{RotationMomentumController as H}from"../momentum/RotationMomentumController.js";import{ZoomPlanarMomentumController as F}from"../momentum/ZoomPlanarMomentumController.js";import{ZoomSphericalMomentumController as U}from"../momentum/ZoomSphericalMomentumController.js";import{NavigationMode as D,pickPointAndInitSphere as I,SpherePickPointFallback as L,decideNavigationMode as Z,sphereOrPlanePointFromScreenPoint as N,intersectPlaneFromScreenPointAtEye as B,applyZoomOnSphere as G,preserveHeadingThreshold as V,applyPanSphericalPreserveHeading as q,applyPanSphericalDirectRotation as J,normalizeRotationDelta as K,applyRotation as Q,applyPanPlanar as W,applyZoomToPoint as X}from"../../utils/navigationUtils.js";import{Camera as Y}from"../../../webgl-engine/lib/Camera.js";import{PanPlanarMomentumEstimator as $}from"../../../../navigation/PanPlanarMomentumEstimator.js";import{PanSphericalMomentumEstimator as tt}from"../../../../navigation/PanSphericalMomentumEstimator.js";import{RotationMomentumEstimator as it}from"../../../../navigation/RotationMomentumEstimator.js";import{ZoomMomentumEstimator as et}from"../../../../navigation/ZoomMomentumEstimator.js";let nt=class extends R{constructor(){super(...arguments),this._smoothRotation=new z(.05),this._rotationAxis=C(),this._panningPlane=w(),this._smoothScaling=new z(.05),this._zoomCenterScreen=o(),this._zoomMomentumEstimator=new et,this._rotationMomentumEstimator=new it,this._panSphericalMomentumEstimator=new tt,this._panPlanarMomentumEstimator=new $,this._adjustedSphere=j(),this._tmp3d=C(),this._tmpScreenPointArray=o(),this._beginScreenPoint=o(),this._beginScenePoint=C(),this._screenPickPoint=o(),this._mode=D.Horizontal,this._tmpInteractionDirection=C(),this._constraintOptions={selection:O.ALL,interactionType:k.NONE,interactionFactor:0,interactionStartCamera:new Y,interactionDirection:null,tiltMode:A.TUMBLE}}get _intersectionHelper(){return this.view.sceneIntersectionHelper}begin(t){if(!this.active)return;const s=this.view.navigation.momentumEnabled;this._zoomMomentumEstimator.enabled=s,this._rotationMomentumEstimator.enabled=s,this._panPlanarMomentumEstimator.enabled=s,this._panSphericalMomentumEstimator.enabled=s,this._beginHeading=-i.normalize(e(this.view.camera.heading)),this._beginRadius=t.radius,this._pointerCount=t.pointers.size,this._beginAngle=t.angle,this._smoothRotation.reset(),r(t.center,this._screenPickPoint),h(this._beginScreenPoint,this._screenPickPoint);const o=M(this.view.spatialReference),a=I(this._intersectionHelper,this.startCamera,this._screenPickPoint,o,L.Silhouette);n(a.scenePickPoint)||(this._scenePickPoint=a.scenePickPoint,this._sphere=a.sphere,_(this._beginScenePoint,this._scenePickPoint),this._mode=Z(this.startCamera,this._screenPickPoint,a.hasGeometryIntersection,o),this._mode===D.Vertical&&this._preparePlanarPanMode(t),this._constraintOptions.interactionStartCamera.copyFrom(this.startCamera))}update(t){if(!this.active)return;this.currentCamera.copyFrom(this.startCamera);const i=t.pointers.size>1;this._mode===D.Horizontal?(i&&this._zoomSpherical(t),this._panningSpherical(t),i&&this._rotateSpherical(t)):(i&&this._zoomPlanar(t),this._panningPlanar(t),i&&this._rotatePlanar(t)),this.commitCamera()}end(t){t.pointers.size===this._pointerCount&&this.update(t),this.finishController();const i=this._zoomMomentumEstimator.evaluateMomentum();if(i)return this._mode===D.Horizontal?new U({view:this.view,momentum:i,screenCenter:this._zoomCenterScreen,sceneCenter:this._beginScenePoint,radius:this._sphere[3]}):new F({view:this.view,momentum:i,zoomCenter:this._beginScenePoint});const e=this._rotationMomentumEstimator.evaluateMomentum();if(e)return new H({view:this.view,momentum:e,center:this._sphere,axis:this._rotationAxis});if(this._mode===D.Horizontal){const t=this._panSphericalMomentumEstimator.evaluateMomentum();if(t)return new T({view:this.view,momentum:t})}else{const t=this._panPlanarMomentumEstimator.evaluateMomentum();if(t)return new x({view:this.view,momentum:t})}return null}_preparePlanarPanMode(t){const i=p(this._tmp3d,this.startCamera.viewForward);b(this._scenePickPoint,i,this._panningPlane);const e=o(this._screenPickPoint[0],0),n=C(),m=l(this.startCamera.eye);this._adjustedSphere[3]=m<this._sphere[3]?m-100:this._sphere[3],N(this._adjustedSphere,this.startCamera,e,n);const h=a();this.startCamera.projectToRenderScreen(n,h);const c=.9*h[1];this._screenPickPoint[1]=Math.min(this._screenPickPoint[1],c);const M=this._intersectionHelper.intersectScreen(this._screenPickPoint,this._scenePickPoint);M&&b(this._scenePickPoint,f(this._panningPlane),this._panningPlane);const S=C(),w=C(),j=C(),E=80,y=5,O=50;u(S,this._scenePickPoint,this.currentCamera.eye);const k=l(S);P(S,S);const A=y*Math.max(Math.abs(this.view.camera.position.z),O),z=this.view._stage.renderView.getMinimalDepthForArea(null,this._screenPickPoint[0],this._screenPickPoint[1],this.view.state.camera,E);let R=s(z)?Math.min(z,A):A;R=M?Math.min(R,k):R,_(j,d(w,this.currentCamera.eye,g(w,S,R))),this._panningPlane[3]=-v(this._panningPlane,j),this.startCamera.center=d(w,this.startCamera.eye,g(w,this.startCamera.viewForward,R));const x=r(t.center,this._tmpScreenPointArray);B(this._panningPlane,this.startCamera,x,this._beginScenePoint)}_zoomSpherical(t){const i=this._beginRadius/t.radius,e=.001875*Math.min(Math.max(t.radius,40),120);this._smoothScaling.gain=e,this._smoothScaling.update(i),G(this._sphere,this.currentCamera,this._smoothScaling.value),r(t.center,this._zoomCenterScreen),this._zoomMomentumEstimator.add(this._smoothScaling.value,.001*t.timestamp),this._constraintOptions.interactionType=k.ZOOM,this._constraintOptions.interactionFactor=E(t.radius-this._beginRadius),y(this.view,this.currentCamera,this._constraintOptions)}_panningSpherical(t){const i=r(t.center,this._tmpScreenPointArray);N(this._sphere,this.currentCamera,i,this._tmp3d),V(this._beginScenePoint,v(this.currentCamera.up,this._beginScenePoint),this._sphere[3],this._beginHeading,this.view.camera.tilt,this.startCamera)?(q(this._sphere,this.currentCamera,this._beginScenePoint,this._tmp3d,this._beginHeading,this.view.camera.tilt,!1),this._panSphericalMomentumEstimator.addMomentumPreserveHeading(i,this._tmp3d,.001*t.timestamp,this.startCamera,this._sphere,this._beginHeading,this.view.camera.tilt)):(J(this._sphere,this.currentCamera,this._beginScenePoint,this._tmp3d,this.view.camera.tilt,!1),this._panSphericalMomentumEstimator.addMomentumDirectRotation(i,this._tmp3d,.001*t.timestamp,this.startCamera,this._sphere[3],this.view.camera.tilt)),this._constraintOptions.interactionType=k.PAN,this._constraintOptions.interactionFactor=E(c(this._screenPickPoint,i)),y(this.view,this.currentCamera,this._constraintOptions)}_rotateSpherical(t){P(this._rotationAxis,this._scenePickPoint),this.currentCamera.aboveGround||p(this._rotationAxis,this._rotationAxis);const i=this._smoothRotation.value,e=i+K(t.angle-i),n=.00125*Math.min(Math.max(t.radius,40),120);this._smoothRotation.gain=n,this._smoothRotation.update(e);const s=this._smoothRotation.value-this._beginAngle;this._rotationMomentumEstimator.add(s,.001*t.timestamp),Q(this.currentCamera,this._sphere,S(this._rotationAxis,s)),this._constraintOptions.interactionType=k.TUMBLE,this._constraintOptions.interactionFactor=E(t.radius*e),y(this.view,this.currentCamera,this._constraintOptions)}_panningPlanar(t){const i=r(t.center,this._tmpScreenPointArray);B(this._panningPlane,this.currentCamera,i,this._tmp3d)&&(W(this.currentCamera,this._beginScenePoint,this._tmp3d),this._panPlanarMomentumEstimator.add(i,this._tmp3d,.001*t.timestamp),this._constraintOptions.interactionType=k.PAN,this._constraintOptions.interactionFactor=E(c(this._beginScreenPoint,i)),this._constraintOptions.interactionDirection=this.view.renderCoordsHelper.worldUpAtPosition(this.currentCamera.eye,this._tmpInteractionDirection),y(this.view,this.currentCamera,this._constraintOptions),this._constraintOptions.interactionDirection=null)}_zoomPlanar(t){const i=this._beginRadius/t.radius,e=.001875*Math.min(Math.max(t.radius,40),120);this._smoothScaling.gain=e,this._smoothScaling.update(i),this._zoomMomentumEstimator.add(this._smoothScaling.value,.001*t.timestamp),X(this.currentCamera,this._beginScenePoint,this._smoothScaling.value,this.view.state.constraints.minimumPoiDistance),this._constraintOptions.interactionType=k.ZOOM,this._constraintOptions.interactionFactor=E(t.radius-this._beginRadius),y(this.view,this.currentCamera,this._constraintOptions)}_rotatePlanar(t){_(this._rotationAxis,this._beginScenePoint),this.currentCamera.aboveGround||p(this._rotationAxis,this._rotationAxis);const i=this._smoothRotation.value;let e=t.angle-i;e=K(e);const n=i+e,s=.00125*Math.min(Math.max(t.radius,40),120);this._smoothRotation.gain=s,this._smoothRotation.update(n);const o=this._smoothRotation.value-this._beginAngle;this._rotationMomentumEstimator.add(o,.001*t.timestamp),Q(this.currentCamera,this._sphere,S(this._rotationAxis,o)),this._constraintOptions.interactionType=k.TUMBLE,this._constraintOptions.interactionFactor=E(t.radius*o),y(this.view,this.currentCamera,this._constraintOptions)}};nt=t([m("esri.views.3d.state.controllers.global.PinchAndPanController")],nt);export{nt as PinchAndPanController};
|
|
5
|
+
import{_ as t}from"../../../../../chunks/tslib.es6.js";import{cyclicalPI as i}from"../../../../../core/Cyclical.js";import{deg2rad as e}from"../../../../../core/mathUtils.js";import{isNone as n,isSome as s}from"../../../../../core/maybe.js";import{createScreenPointArray as o,screenPointObjectToArray as r,createRenderScreenPointArray3 as a}from"../../../../../core/screenUtils.js";import"../../../../../core/Logger.js";import"../../../../../core/accessorSupport/ensureType.js";import"../../../../../core/arrayUtils.js";import"../../../../../core/has.js";import"../../../../../core/Error.js";import{subclass as m}from"../../../../../core/accessorSupport/decorators/subclass.js";import{c as h,d as c}from"../../../../../chunks/vec2.js";import{c as _,x as p,l,b as u,n as P,a as d,g,e as v}from"../../../../../chunks/vec3.js";import{c as C}from"../../../../../chunks/vec3f64.js";import{getReferenceEllipsoid as M}from"../../../../../geometry/projectionEllipsoid.js";import{wrapAxisAngle as S}from"../../../../../geometry/support/axisAngle.js";import{create as w,fromPositionAndNormal as b,normal as f}from"../../../../../geometry/support/plane.js";import{c as j}from"../../../../../chunks/sphere.js";import{pixelDistanceToInteractionFactor as E,applyAll as y}from"../../../camera/constraintUtils.js";import{ConstraintTypes as O}from"../../../camera/constraintUtils/ConstraintTypes.js";import{InteractionType as k}from"../../../camera/constraintUtils/InteractionType.js";import{TiltMode as A}from"../../../camera/constraintUtils/TiltMode.js";import{ExponentialFalloff as z}from"../../../input/util.js";import{InteractiveController as x}from"../InteractiveController.js";import{PanPlanarMomentumController as R}from"../momentum/PanPlanarMomentumController.js";import{PanSphericalMomentumController as T}from"../momentum/PanSphericalMomentumController.js";import{RotationMomentumController as H}from"../momentum/RotationMomentumController.js";import{ZoomPlanarMomentumController as F}from"../momentum/ZoomPlanarMomentumController.js";import{ZoomSphericalMomentumController as U}from"../momentum/ZoomSphericalMomentumController.js";import{NavigationMode as D,pickPointAndInitSphere as I,SpherePickPointFallback as L,decideNavigationMode as Z,sphereOrPlanePointFromScreenPoint as N,intersectPlaneFromScreenPointAtEye as B,applyZoomOnSphere as G,preserveHeadingThreshold as V,applyPanSphericalPreserveHeading as q,applyPanSphericalDirectRotation as J,normalizeRotationDelta as K,applyRotation as Q,applyPanPlanar as W,applyZoomToPoint as X}from"../../utils/navigationUtils.js";import{Camera as Y}from"../../../webgl-engine/lib/Camera.js";import{PanPlanarMomentumEstimator as $}from"../../../../navigation/PanPlanarMomentumEstimator.js";import{PanSphericalMomentumEstimator as tt}from"../../../../navigation/PanSphericalMomentumEstimator.js";import{RotationMomentumEstimator as it}from"../../../../navigation/RotationMomentumEstimator.js";import{ZoomMomentumEstimator as et}from"../../../../navigation/ZoomMomentumEstimator.js";let nt=class extends x{constructor(){super(...arguments),this._smoothRotation=new z(.05),this._rotationAxis=C(),this._panningPlane=w(),this._smoothScaling=new z(.05),this._zoomCenterScreen=o(),this._zoomMomentumEstimator=new et,this._rotationMomentumEstimator=new it,this._panSphericalMomentumEstimator=new tt,this._panPlanarMomentumEstimator=new $,this._adjustedSphere=j(),this._tmp3d=C(),this._tmpScreenPointArray=o(),this._beginScreenPoint=o(),this._beginScenePoint=C(),this._screenPickPoint=o(),this._mode=D.Horizontal,this._tmpInteractionDirection=C(),this._constraintOptions={selection:O.ALL,interactionType:k.NONE,interactionFactor:0,interactionStartCamera:new Y,interactionDirection:null,tiltMode:A.TUMBLE}}get _intersectionHelper(){return this.view.sceneIntersectionHelper}begin(t){if(!this.active)return;const s=this.view.navigation.momentumEnabled;this._zoomMomentumEstimator.enabled=s,this._rotationMomentumEstimator.enabled=s,this._panPlanarMomentumEstimator.enabled=s,this._panSphericalMomentumEstimator.enabled=s,this._beginHeading=-i.normalize(e(this.view.camera.heading)),this._beginRadius=t.radius,this._pointerCount=t.pointers.size,this._beginAngle=t.angle,this._smoothRotation.reset(),r(t.center,this._screenPickPoint),h(this._beginScreenPoint,this._screenPickPoint);const o=M(this.view.spatialReference),a=I(this._intersectionHelper,this.startCamera,this._screenPickPoint,o,L.Silhouette);n(a.scenePickPoint)||(this._scenePickPoint=a.scenePickPoint,this._sphere=a.sphere,_(this._beginScenePoint,this._scenePickPoint),this._mode=Z(this.startCamera,this._screenPickPoint,a.hasGeometryIntersection,o),this._mode===D.Vertical&&this._preparePlanarPanMode(t),this._constraintOptions.interactionStartCamera.copyFrom(this.startCamera))}update(t){if(!this.active)return;this.currentCamera.copyFrom(this.startCamera);const i=t.pointers.size>1;this._mode===D.Horizontal?(i&&this._zoomSpherical(t),this._panningSpherical(t),i&&this._rotateSpherical(t)):(i&&this._zoomPlanar(t),this._panningPlanar(t),i&&this._rotatePlanar(t)),this.commitCamera()}end(t){t.pointers.size===this._pointerCount&&this.update(t),this.finishController();const i=this._zoomMomentumEstimator.evaluateMomentum();if(i)return this._mode===D.Horizontal?new U({view:this.view,momentum:i,screenCenter:this._zoomCenterScreen,sceneCenter:this._beginScenePoint,radius:this._sphere[3]}):new F({view:this.view,momentum:i,zoomCenter:this._beginScenePoint});const e=this._rotationMomentumEstimator.evaluateMomentum();if(e)return new H({view:this.view,momentum:e,center:this._sphere,axis:this._rotationAxis});if(this._mode===D.Horizontal){const t=this._panSphericalMomentumEstimator.evaluateMomentum();if(t)return new T({view:this.view,momentum:t})}else{const t=this._panPlanarMomentumEstimator.evaluateMomentum();if(t)return new R({view:this.view,momentum:t})}return null}_preparePlanarPanMode(t){const i=p(this._tmp3d,this.startCamera.viewForward);b(this._scenePickPoint,i,this._panningPlane);const e=o(this._screenPickPoint[0],0),n=C(),m=l(this.startCamera.eye);this._adjustedSphere[3]=m<this._sphere[3]?m-100:this._sphere[3],N(this._adjustedSphere,this.startCamera,e,n);const h=a();this.startCamera.projectToRenderScreen(n,h);const c=.9*h[1];this._screenPickPoint[1]=Math.min(this._screenPickPoint[1],c);const M=this._intersectionHelper.intersectScreen(this._screenPickPoint,this._scenePickPoint);M&&b(this._scenePickPoint,f(this._panningPlane),this._panningPlane);const S=C(),w=C(),j=C(),E=80,y=5,O=50;u(S,this._scenePickPoint,this.currentCamera.eye);const k=l(S);P(S,S);const A=y*Math.max(Math.abs(this.view.camera.position.z),O),z=this.view._stage.renderView.getMinimalDepthForArea(null,this._screenPickPoint[0],this._screenPickPoint[1],this.view.state.camera,E);let x=s(z)?Math.min(z,A):A;x=M?Math.min(x,k):x,_(j,d(w,this.currentCamera.eye,g(w,S,x))),this._panningPlane[3]=-v(this._panningPlane,j),this.startCamera.center=d(w,this.startCamera.eye,g(w,this.startCamera.viewForward,x));const R=r(t.center,this._tmpScreenPointArray);B(this._panningPlane,this.startCamera,R,this._beginScenePoint)}_zoomSpherical(t){const i=this._beginRadius/t.radius,e=.001875*Math.min(Math.max(t.radius,40),120);this._smoothScaling.gain=e,this._smoothScaling.update(i),G(this._sphere,this.currentCamera,this._smoothScaling.value),r(t.center,this._zoomCenterScreen),this._zoomMomentumEstimator.add(this._smoothScaling.value,.001*t.timestamp),this._constraintOptions.interactionType=k.ZOOM,this._constraintOptions.interactionFactor=E(t.radius-this._beginRadius),y(this.view,this.currentCamera,this._constraintOptions)}_panningSpherical(t){const i=r(t.center,this._tmpScreenPointArray);N(this._sphere,this.currentCamera,i,this._tmp3d),V(this._beginScenePoint,v(this.currentCamera.up,this._beginScenePoint),this._sphere[3],this._beginHeading,this.view.camera.tilt,this.startCamera)?(q(this._sphere,this.currentCamera,this._beginScenePoint,this._tmp3d,this._beginHeading,this.view.camera.tilt,!1),this._panSphericalMomentumEstimator.addMomentumPreserveHeading(i,this._tmp3d,.001*t.timestamp,this.startCamera,this._sphere,this._beginHeading,this.view.camera.tilt)):(J(this._sphere,this.currentCamera,this._beginScenePoint,this._tmp3d,this.view.camera.tilt,!1),this._panSphericalMomentumEstimator.addMomentumDirectRotation(i,this._tmp3d,.001*t.timestamp,this.startCamera,this._sphere[3],this.view.camera.tilt)),this._constraintOptions.interactionType=k.PAN,this._constraintOptions.interactionFactor=E(c(this._screenPickPoint,i)),y(this.view,this.currentCamera,this._constraintOptions)}_rotateSpherical(t){P(this._rotationAxis,this._scenePickPoint),this.currentCamera.aboveGround||p(this._rotationAxis,this._rotationAxis);const i=this._smoothRotation.value,e=i+K(t.angle-i),n=.00125*Math.min(Math.max(t.radius,40),120);this._smoothRotation.gain=n,this._smoothRotation.update(e);const s=this._smoothRotation.value-this._beginAngle;this._rotationMomentumEstimator.add(s,.001*t.timestamp),Q(this.currentCamera,this._sphere,S(this._rotationAxis,s)),this._constraintOptions.interactionType=k.TUMBLE,this._constraintOptions.interactionFactor=E(t.radius*e),y(this.view,this.currentCamera,this._constraintOptions)}_panningPlanar(t){const i=r(t.center,this._tmpScreenPointArray);B(this._panningPlane,this.currentCamera,i,this._tmp3d)&&(W(this.currentCamera,this._beginScenePoint,this._tmp3d),this._panPlanarMomentumEstimator.add(i,this._tmp3d,.001*t.timestamp),this._constraintOptions.interactionType=k.PAN,this._constraintOptions.interactionFactor=E(c(this._beginScreenPoint,i)),this._constraintOptions.interactionDirection=this.view.renderCoordsHelper.worldUpAtPosition(this.currentCamera.eye,this._tmpInteractionDirection),y(this.view,this.currentCamera,this._constraintOptions),this._constraintOptions.interactionDirection=null)}_zoomPlanar(t){const i=this._beginRadius/t.radius,e=.001875*Math.min(Math.max(t.radius,40),120);this._smoothScaling.gain=e,this._smoothScaling.update(i),this._zoomMomentumEstimator.add(this._smoothScaling.value,.001*t.timestamp),X(this.currentCamera,this._beginScenePoint,this._smoothScaling.value,this.view.state.constraints.minimumPoiDistance),this._constraintOptions.interactionType=k.ZOOM,this._constraintOptions.interactionFactor=E(t.radius-this._beginRadius),y(this.view,this.currentCamera,this._constraintOptions)}_rotatePlanar(t){_(this._rotationAxis,this._beginScenePoint),this.currentCamera.aboveGround||p(this._rotationAxis,this._rotationAxis);const i=this._smoothRotation.value;let e=t.angle-i;e=K(e);const n=i+e,s=.00125*Math.min(Math.max(t.radius,40),120);this._smoothRotation.gain=s,this._smoothRotation.update(n);const o=this._smoothRotation.value-this._beginAngle;this._rotationMomentumEstimator.add(o,.001*t.timestamp),Q(this.currentCamera,this._sphere,S(this._rotationAxis,o)),this._constraintOptions.interactionType=k.TUMBLE,this._constraintOptions.interactionFactor=E(t.radius*o),y(this.view,this.currentCamera,this._constraintOptions)}};nt=t([m("esri.views.3d.state.controllers.global.PinchAndPanController")],nt);export{nt as PinchAndPanController};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.25/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as t}from"../../../../../chunks/tslib.es6.js";import{asinClamped as i}from"../../../../../core/mathUtils.js";import{isSome as e}from"../../../../../core/maybe.js";import{createScreenPointArray as n,screenPointObjectToArray as o}from"../../../../../core/screenUtils.js";import"../../../../../core/Logger.js";import"../../../../../core/accessorSupport/ensureType.js";import"../../../../../core/arrayUtils.js";import"../../../../../core/has.js";import"../../../../../core/Error.js";import{subclass as s}from"../../../../../core/accessorSupport/decorators/subclass.js";import{d as r}from"../../../../../chunks/vec2.js";import{
|
|
5
|
+
import{_ as t}from"../../../../../chunks/tslib.es6.js";import{asinClamped as i}from"../../../../../core/mathUtils.js";import{isSome as e}from"../../../../../core/maybe.js";import{createScreenPointArray as n,screenPointObjectToArray as o}from"../../../../../core/screenUtils.js";import"../../../../../core/Logger.js";import"../../../../../core/accessorSupport/ensureType.js";import"../../../../../core/arrayUtils.js";import"../../../../../core/has.js";import"../../../../../core/Error.js";import{subclass as s}from"../../../../../core/accessorSupport/decorators/subclass.js";import{d as r}from"../../../../../chunks/vec2.js";import{x as a,c as m,e as h,g as c,b as l,n as p,l as _,a as u}from"../../../../../chunks/vec3.js";import{c as d,f as C}from"../../../../../chunks/vec3f64.js";import{wrapAxisAngle as g}from"../../../../../geometry/support/axisAngle.js";import{create as M,fromNormalAndOffset as v,setOffsetFromPoint as f,negate as b,normal as w}from"../../../../../geometry/support/plane.js";import{pixelDistanceToInteractionFactor as j,applyAll as E}from"../../../camera/constraintUtils.js";import{ConstraintTypes as P}from"../../../camera/constraintUtils/ConstraintTypes.js";import{InteractionType as S}from"../../../camera/constraintUtils/InteractionType.js";import{TiltMode as V}from"../../../camera/constraintUtils/TiltMode.js";import{ExponentialFalloff as z}from"../../../input/util.js";import{InteractiveController as H}from"../InteractiveController.js";import{PanPlanarMomentumController as O}from"../momentum/PanPlanarMomentumController.js";import{RotationMomentumController as y}from"../momentum/RotationMomentumController.js";import{ZoomPlanarMomentumController as T}from"../momentum/ZoomPlanarMomentumController.js";import{NavigationMode as L,centroid as x,applyZoomToPoint as A,applyPanPlanar as F,normalizeRotationDelta as U,applyRotation as R,intersectPlaneFromScreenPointAtEye as D}from"../../utils/navigationUtils.js";import{Camera as N}from"../../../webgl-engine/lib/Camera.js";import{PanPlanarMomentumEstimator as k}from"../../../../navigation/PanPlanarMomentumEstimator.js";import{RotationMomentumEstimator as I}from"../../../../navigation/RotationMomentumEstimator.js";import{ZoomMomentumEstimator as G}from"../../../../navigation/ZoomMomentumEstimator.js";const Z=C(0,0,1),B={ELEVATION_THRESHOLD:3e4,ANGLE_THRESHOLD:16/180*Math.PI},W=80;let q=class extends H{constructor(){super(...arguments),this._rotationValueSmooth=new z(.05),this._scalingValueSmooth=new z(.05),this._planeHorizontal=M(),this._planeVertical=M(),this._rotationMomentumEstimator=new I,this._panMomentumEstimator=new k(300,12,.9),this._zoomMomentumEstimator=new G,this._beginCenter=d(),this._tmpPoints=[],this._beginCenterScreen=n(),this._tmpCentroid3d=d(),this._tmpCentroid2d=n(),this._tmp2d=n(),this._constraintOptions={selection:P.ALL,interactionType:S.NONE,interactionFactor:0,interactionStartCamera:new N,interactionDirection:null,tiltMode:V.TUMBLE}}begin(t){if(!this.active)return;const n=this.view.navigation.momentumEnabled;this._zoomMomentumEstimator.enabled=n,this._rotationMomentumEstimator.enabled=n,this._panMomentumEstimator.enabled=n,this._beginRadius=t.radius,this._pointerCount=t.pointers.size,this._beginAngle=t.angle,this._rotationValueSmooth.reset(),this._scalingValueSmooth.reset(),o(t.center,this._beginCenterScreen),v(Z,0,this._planeHorizontal);const s=d(),r=this._intersectionHelper.intersectScreenFreePointFallback(this._beginCenterScreen,s),C=d();a(C,this.startCamera.viewForward);const g=d();m(g,Z);const M=h(C,g),w=i(M<0?-M:M);if(this._panMode=w>=B.ANGLE_THRESHOLD?L.Horizontal:L.Vertical,f(this._planeHorizontal,this._planeHorizontal,s),this.startCamera.aboveGround||b(this._planeHorizontal,this._planeHorizontal),this._panMode===L.Vertical){c(g,g,M),l(this._planeVertical,C,g),p(this._planeVertical,this._planeVertical),f(this._planeVertical,this._planeVertical,s);const i=d(),n=d(),o=d();l(i,s,this.currentCamera.eye);const a=_(i);p(i,i);const v=5*Math.max(Math.abs(this.view.camera.position.z),50),b=this.view._stage.renderView.getMinimalDepthForArea(this.view.voxelWasm,this._beginCenterScreen[0],this._beginCenterScreen[1],this.view.state.camera,W);let w=e(b)?Math.min(b,v):v;w=r?Math.min(w,a):w,m(o,u(n,this.currentCamera.eye,c(n,i,w))),this._planeVertical[3]=-h(this._planeVertical,o),this._computePlanePoints(t.pointers,this._planeVertical,this.startCamera,this._tmpPoints),x(this._tmpPoints,this._beginCenter)}else this._computePlanePoints(t.pointers,this._planeHorizontal,this.startCamera,this._tmpPoints),x(this._tmpPoints,this._beginCenter);this._constraintOptions.interactionStartCamera.copyFrom(this.startCamera)}update(t){if(!this.active)return;this.currentCamera.copyFrom(this.startCamera);const i=t.pointers.size>1,e=this._panMode===L.Horizontal?this._planeHorizontal:this._planeVertical,n=this._beginCenter;if(i){const i=this._beginRadius/t.radius,e=.001875*Math.min(Math.max(t.radius,40),120);this._scalingValueSmooth.gain=e,this._scalingValueSmooth.update(i),A(this.currentCamera,n,this._scalingValueSmooth.value,this.view.state.constraints.minimumPoiDistance),this._zoomMomentumEstimator.add(this._scalingValueSmooth.value,.001*t.timestamp),this._constraintOptions.interactionType=S.ZOOM,this._constraintOptions.interactionFactor=j(Math.abs(t.radius-this._beginRadius)),E(this.view,this.currentCamera,this._constraintOptions)}if(this._computePlanePoints(t.pointers,e,this.currentCamera,this._tmpPoints),x(this._tmpPoints,this._tmpCentroid3d),o(t.center,this._tmpCentroid2d),F(this.currentCamera,n,this._tmpCentroid3d),this._panMomentumEstimator.add(this._tmpCentroid2d,this._tmpCentroid3d,.001*t.timestamp),this._constraintOptions.interactionType=S.PAN,this._constraintOptions.interactionFactor=j(r(this._beginCenterScreen,this._tmpCentroid2d)),E(this.view,this.currentCamera,this._constraintOptions),i){const i=this._planeHorizontal,e=n,o=this._rotationValueSmooth.value,s=o+U(t.angle-o),r=.00125*Math.min(Math.max(t.radius,40),120);this._rotationValueSmooth.gain=r,this._rotationValueSmooth.update(s);const a=this._rotationValueSmooth.value-this._beginAngle;this._rotationMomentumEstimator.add(a,.001*t.timestamp),R(this.currentCamera,e,g(i,a)),this._constraintOptions.interactionType=S.TUMBLE,this._constraintOptions.interactionFactor=j(Math.abs(t.radius*a)),E(this.view,this.currentCamera,this._constraintOptions)}this.commitCamera()}end(t){t.pointers.size===this._pointerCount&&this.update(t),this.finishController();const i=this._zoomMomentumEstimator.evaluateMomentum();if(i)return new T({view:this.view,momentum:i,zoomCenter:this._beginCenter});const e=this._rotationMomentumEstimator.evaluateMomentum();if(e)return new y({view:this.view,momentum:e,center:this._beginCenter,axis:w(this._planeHorizontal)});const n=this._panMomentumEstimator.evaluateMomentum();return n?new O({view:this.view,momentum:n}):null}_computePlanePoints(t,i,e,n){n.length=t.size;const o=this._tmp2d;let s=0;return t.forEach((t=>{o[0]=t.x,o[1]=t.y,void 0===n[s]&&(n[s]=d()),D(i,e,o,n[s]),s+=1})),n}get _intersectionHelper(){return this.view.sceneIntersectionHelper}};q=t([s("esri.views.3d.state.controllers.local.PinchAndPanController")],q);export{q as PinchAndPanController};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.25/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as t}from"../../../../../chunks/tslib.es6.js";import{clamp as i}from"../../../../../core/mathUtils.js";import{isSome as r}from"../../../../../core/maybe.js";import{createScreenPointArray as s}from"../../../../../core/screenUtils.js";import"../../../../../core/Logger.js";import"../../../../../core/accessorSupport/ensureType.js";import"../../../../../core/arrayUtils.js";import"../../../../../core/has.js";import"../../../../../core/Error.js";import{subclass as e}from"../../../../../core/accessorSupport/decorators/subclass.js";import{c as a,d as o}from"../../../../../chunks/vec2.js";import{a as n}from"../../../../../chunks/vec2f64.js";import{b as m,l as c,n as h,g as p,a as _,
|
|
5
|
+
import{_ as t}from"../../../../../chunks/tslib.es6.js";import{clamp as i}from"../../../../../core/mathUtils.js";import{isSome as r}from"../../../../../core/maybe.js";import{createScreenPointArray as s}from"../../../../../core/screenUtils.js";import"../../../../../core/Logger.js";import"../../../../../core/accessorSupport/ensureType.js";import"../../../../../core/arrayUtils.js";import"../../../../../core/has.js";import"../../../../../core/Error.js";import{subclass as e}from"../../../../../core/accessorSupport/decorators/subclass.js";import{c as a,d as o}from"../../../../../chunks/vec2.js";import{a as n}from"../../../../../chunks/vec2f64.js";import{b as m,l as c,n as h,g as p,a as _,x as l,c as u,h as C}from"../../../../../chunks/vec3.js";import{c as P}from"../../../../../chunks/vec3f64.js";import{create as f,fromPositionAndNormal as j}from"../../../../../geometry/support/plane.js";import{pixelDistanceToInteractionFactor as g,applyAll as v}from"../../../camera/constraintUtils.js";import{ConstraintTypes as y}from"../../../camera/constraintUtils/ConstraintTypes.js";import{InteractionType as D}from"../../../camera/constraintUtils/InteractionType.js";import{TiltMode as d}from"../../../camera/constraintUtils/TiltMode.js";import{InteractiveController as w}from"../InteractiveController.js";import{normalizeCoordinate as M,DISTANCE_CLAMP_VALUES as b,PIVOT_DISTANCE_MODIFIER as O,SCREEN_PIXEL_AREA as U,intersectPlaneFromScreenPoint as N}from"../../utils/navigationUtils.js";import{TERRAIN_ID as R}from"../../../webgl-engine/lib/verticalOffsetUtils.js";let k=class extends w{constructor(){super(...arguments),this._tmpP=P(),this._tmpDir=P(),this._tmpN=P(),this._tmpP0=n(),this._tmpPoi=P(),this._tmpRayDir=P(),this._dragBeginPoint=s(),this._normalizedAnchorPoint=n(),this._constraintOptions={selection:y.ALL,interactionType:D.ZOOM,interactionFactor:0,interactionStartCamera:null,interactionDirection:P(),tiltMode:d.TUMBLE},this._plane=f()}get _intersectionHelper(){return this.view.sceneIntersectionHelper}begin(t){if(!this.active)return;a(this._dragBeginPoint,t),M(this.startCamera,t,this._normalizedAnchorPoint);const s=this._intersectionHelper.intersectScreenFreePointFallback(t,this._tmpP,0===this.view.map.ground.opacity?A:{});m(this._tmpDir,this._tmpP,this.startCamera.eye);const e=c(this._tmpDir);let o;h(this._tmpDir,this._tmpDir),this.view.camera.position.hasZ&&(o=Math.abs(this.view.camera.position.z));let n=i(O*o,b[0],b[1]);const u=this.view._stage.renderView.getMinimalDepthForArea(this.view.voxelWasm,t[0],t[1],this.view.state.camera,U);n=r(u)?Math.min(n,u):n,n=s?Math.min(n,e):n,p(this._tmpDir,this._tmpDir,n),_(this._tmpP,this.startCamera.eye,this._tmpDir),m(this._tmpN,this.startCamera.eye,this.startCamera.center),h(this._tmpN,this._tmpN),this._tmpN[1]<0&&l(this._tmpN,this._tmpN),j(this._tmpP,this._tmpN,this._plane),this._constraintOptions.interactionStartCamera=this.startCamera}update(t){if(!this.active)return;N(this._plane,this.currentCamera,this._dragBeginPoint,this._tmpPoi)||u(this._tmpPoi,this.currentCamera.center),M(this.currentCamera,t,this._tmpP0);let i=4*(this._tmpP0[1]-this._normalizedAnchorPoint[1]);a(this._normalizedAnchorPoint,this._tmpP0),m(this._tmpRayDir,this._tmpPoi,this.currentCamera.eye);const r=c(this._tmpRayDir);let s=r*(1-i);u(this._constraintOptions.interactionDirection,this._tmpRayDir),p(this._constraintOptions.interactionDirection,this._constraintOptions.interactionDirection,Math.sign(i)/r);const e=this.view.state.constraints.minimumPoiDistance;i>=0&&s<e&&(s=e,i=-(s-r)/r),Math.abs(r-s)<1e-6||(p(this._tmpRayDir,this._tmpRayDir,i),this.currentCamera.eye=_(x,this.currentCamera.eye,this._tmpRayDir),C(x,this.currentCamera.center,this._tmpPoi,i),this._tmpPoi[2]>this.startCamera.center[2]?x[2]=Math.max(this.startCamera.center[2],x[2]):x[2]=Math.min(this.startCamera.center[2],x[2]),this.currentCamera.center=x,this._constraintOptions.interactionFactor=g(o(this._dragBeginPoint,t)),v(this.view,this.currentCamera,this._constraintOptions),this.commitCamera())}end(){this.active&&this.finishController()}};k=t([e("esri.views.3d.state.controllers.local.ZoomController")],k);const x=P(),A={exclude:new Set([R])};export{k as ZoomController};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.25/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as t}from"../../../../../chunks/tslib.es6.js";import{property as o}from"../../../../../core/accessorSupport/decorators/property.js";import"../../../../../core/arrayUtils.js";import"../../../../../core/has.js";import"../../../../../core/accessorSupport/ensureType.js";import{subclass as r}from"../../../../../core/accessorSupport/decorators/subclass.js";import{c as s,
|
|
5
|
+
import{_ as t}from"../../../../../chunks/tslib.es6.js";import{property as o}from"../../../../../core/accessorSupport/decorators/property.js";import"../../../../../core/arrayUtils.js";import"../../../../../core/has.js";import"../../../../../core/accessorSupport/ensureType.js";import{subclass as r}from"../../../../../core/accessorSupport/decorators/subclass.js";import{c as s,A as e}from"../../../../../chunks/vec3.js";import{c as i,a as n}from"../../../../../chunks/vec3f64.js";import{InteractionType as c}from"../../../camera/constraintUtils/InteractionType.js";import{MomentumController as m}from"./MomentumController.js";import{applyZoomToPoint as a}from"../../utils/navigationUtils.js";let p=class extends m{constructor(t){super(t),this.interactionType=c.ZOOM,this.constraintOptions.interactionDirection=i()}set zoomCenter(t){this._set("zoomCenter",n(t))}momentumStep(t,o){s(this.constraintOptions.interactionDirection,o.eye);const r=this.momentum.valueDelta(0,t);a(o,this.zoomCenter,r,this.view.state.constraints.minimumPoiDistance),this.constraintOptions.interactionDirection=e(this.constraintOptions.interactionDirection,o.eye,this.constraintOptions.interactionDirection)}};t([o({constructOnly:!0})],p.prototype,"momentum",void 0),t([o({constructOnly:!0})],p.prototype,"zoomCenter",null),p=t([r("esri.views.3d.state.controllers.momentum.ZoomPlanarMomentumController")],p);export{p as ZoomPlanarMomentumController};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.25/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{cyclicalPI as t}from"../../../../core/Cyclical.js";import{deg2rad as e,clamp as n,acosClamped as o,asinClamped as r}from"../../../../core/mathUtils.js";import{isNone as a}from"../../../../core/maybe.js";import{createScreenPointArray as i}from"../../../../core/screenUtils.js";import{d as s,j as c,m,e as l}from"../../../../chunks/mat4.js";import{I as u,c as p}from"../../../../chunks/mat4f64.js";import{s as f}from"../../../../chunks/vec2.js";import{a as h}from"../../../../chunks/vec2f64.js";import{b as M,
|
|
5
|
+
import{cyclicalPI as t}from"../../../../core/Cyclical.js";import{deg2rad as e,clamp as n,acosClamped as o,asinClamped as r}from"../../../../core/mathUtils.js";import{isNone as a}from"../../../../core/maybe.js";import{createScreenPointArray as i}from"../../../../core/screenUtils.js";import{d as s,j as c,m,e as l}from"../../../../chunks/mat4.js";import{I as u,c as p}from"../../../../chunks/mat4f64.js";import{s as f}from"../../../../chunks/vec2.js";import{a as h}from"../../../../chunks/vec2f64.js";import{b as M,v as y,a as g,l as d,g as b,h as j,s as v,n as z,e as x,d as P,c as I,f as k}from"../../../../chunks/vec3.js";import{c as w}from"../../../../chunks/vec3f64.js";import{create as E,axis as S,fromPoints as A,wrapAxisAngle as H}from"../../../../geometry/support/axisAngle.js";import{coordinateSystemFromOneAxisAndNormalVector as G,vectorCoordinates as U}from"../../../../geometry/support/coordinateSystem.js";import{create as V,intersectRay as q,fromNormalAndOffset as C}from"../../../../geometry/support/plane.js";import{b as F,i as R,c as T}from"../../../../chunks/sphere.js";import{angle as W}from"../../../../geometry/support/vector.js";import{sm4d as B,sv3d as D}from"../../../../geometry/support/vectorStacks.js";import{fromScreen as J,fromScreenAtEye as K}from"../../support/geometryUtils/ray.js";import{intersectScreen as L}from"../../support/geometryUtils/sphere.js";import{Camera as N}from"../../webgl-engine/lib/Camera.js";var O;!function(t){t[t.Ellipsoid=0]="Ellipsoid",t[t.Silhouette=1]="Silhouette"}(O||(O={}));const Q=30,X=[1,3e8],Y=70;function Z(t,e,n){return n[0]=e[0]/(t.fullWidth/t.pixelRatio),n[1]=e[1]/(t.fullHeight/t.pixelRatio),n}function $(t){for(;t>Math.PI;)t-=2*Math.PI;for(;t<-Math.PI;)t+=2*Math.PI;return t}function _(t,e,n){const o=s(B.get(),n[3],S(n));a(o)||c(o,u)||(M(Qt,t.eye,e),y(Qt,Qt,o),t.eye=g(Qt,Qt,e),M(Qt,t.center,e),y(Qt,Qt,o),t.center=g(Qt,Qt,e),t.up=y(Qt,t.up,o))}function tt(t,e,n,o){return q(t,J(e,n,_t),o)}function et(t,e,n,o){return q(t,K(e,n,_t),o)}function nt(t,e,n,o){const r=D.get();let a=1-n;M(r,e,t.eye);const i=d(r);let s=i*(1-a);a>=0&&s<o&&(s=o,a=-(s-i)/i),Math.abs(i-s)<1e-6||(b(r,r,a),t.eye=g(Qt,t.eye,r),t.center=j(Qt,t.center,e,a))}function ot(t,e,n){e.getScreenCenter(rt),L(t,e,rt,Qt)&&(e.center=Qt);const o=e.distance,r=o*n;if(Math.abs(o-r)<1e-6)return;const a=b(D.get(),e.viewForward,r);e.eye=M(Qt,e.center,a)}const rt=i();function at(t,e){v(e,0,0,0);for(const n of t)g(e,e,n);b(e,e,1/t.length)}function it(t,e,n,o){return Math.sin(t/d(e))*(n+o.radius)}function st(t,e,n,o){return it(Math.PI/2,e,n,o)+(t-Math.PI/2)}var ct;!function(t){t[t.Vertical=0]="Vertical",t[t.Horizontal=1]="Horizontal"}(ct||(ct={}));const mt={Elevation:3e4,Angle:e(6)},lt={Pole:.95,Angle:e(18),Tilt:45},ut=e(80);function pt(t,e,n,o,r,a){const i=w(),s=T();let c=!0,m=!0;return t.intersectScreen(n,i,a)?s[3]=d(i):(m=!1,e.aboveGround&&r!==O.Ellipsoid?s[3]=Math.max(d(e.center),.9*o.radius):s[3]=d(e.eye)-e.relativeElevation,r===O.Silhouette?yt(s,e,n,i):c=L(s,e,n,i)),{sphere:s,scenePickPoint:c?i:null,hasGeometryIntersection:m}}function ft(t,e,n,o){if(d(t.eye)-o.radius>mt.Elevation)return ct.Horizontal;if(!n)return ct.Vertical;K(t,e,te);return-Math.sign(t.relativeElevation)*(.5*Math.PI+W(t.eye,te.direction))<mt.Angle?ct.Vertical:ct.Horizontal}function ht(t,e,n){M(Mt,n,e),t.eye=M(Qt,t.eye,Mt),t.center=M(Qt,t.center,Mt)}const Mt=w();function yt(t,e,n,o){const r=K(e,n,_t);return!a(r)&&(F(t,r,gt),R(t,r,o)?!(P(gt,r.origin)<P(o,r.origin))||(I(o,gt),!1):(M(dt,e.eye,e.center),z(dt,dt),C(dt,-x(z(dt,dt),gt),bt),q(bt,r,o),!1))}const gt=w(),dt=w(),bt=V();function jt(a,i,s,c,m,l){let u=0;if(k(Zt,a,i),M(Xt,a,i),d(a)<=m||!c.aboveGround){k(s,Xt,c.eye);const p=x(a,i)/(d(a)*d(i));if(p<.9999)u=o(p);else{const t=d(k(w(),a,i))/(d(a)*d(i));u=r(t)}const f=Math.cos(n(t.normalize(e(l)),0,ut));u=-u-Math.max(0,d(i)-m)/(f*m)}else M(vt,c.eye,c.center),k(s,Xt,vt),u=-d(Xt)/m;return z(s,s),b(s,s,d(Zt)),u}const vt=w();function zt(r,a,i,s){let c,m;const l=Math.cos(n(t.normalize(e(s)),0,ut));return c=a>i?-(a-i)/(l*i):a<-i?Math.PI-(a+i)/(l*i):o(a/i),m=r>i?-(r-i)/(l*i):r<-i?Math.PI-(r+i)/(l*i):o(r/i),(m-c)*i}function xt(t,e,n,o,r,a,i,s,c,m){const l=zt(t[2],e[2],a[3],s),u=c?zt(t[0],e[0],a[3],180):e[0]-t[0],p=Math.sin(i)*u-Math.cos(i)*l,h=Math.cos(i)*u+Math.sin(i)*l;z(Qt,r);const M=c?p/Math.sqrt(Math.abs(a[3]**2-x(n,Qt)**2)):p/a[3],y=h/Math.sqrt(Math.abs(a[3]**2-x(n,o)**2));f(m,M,y)}function Pt(t,e,n,o,r,a,i,s,c,m){k(Zt,t,e),G(a.up,a.eye,Ft,Rt,Tt),G([0,0,1],a.eye,Vt,qt,Ct),I(n,qt),I(o,Vt),z(n,n),b(n,n,d(Zt)),U(t,z(Rt,Rt),z(Tt,Tt),z(Ft,Ft),Wt),U(e,Rt,Tt,Ft,Bt),xt(Wt,Bt,t,Vt,qt,i,s,c,m,r)}function It(t,e,n,o,r,a,i){s(Kt,r,o),s(Lt,i,a),m(Nt,Kt,Lt),M(e,t,n),y(e,e,Nt),g(e,e,n)}function kt(t,e,n,o,r,a){s(Kt,o,n),s(Lt,a,r),m(Nt,Kt,Lt),M(Qt,t.eye,e),y(Qt,Qt,Nt),t.eye=g(Qt,Qt,e),M(Qt,t.center,e),y(Qt,Qt,Nt),t.center=g(Qt,Qt,e),M(Qt,t.up,e),y(Qt,Qt,Nt),t.up=g(Qt,Qt,e)}function wt(t,e,n,o,r,a){return(Math.abs(o)>Math.PI-lt.Angle||Math.abs(o)<lt.Angle)&&(Math.abs(t[2])<n*lt.Pole||Math.abs(e)>n)&&a.aboveGround&&r<lt.Tilt}function Et(t,e,n,o,r,a){if(a)A(n,o,Jt),_(e,t,Jt);else{const a=jt(n,o,$t,e,t[3],r);_(e,t,H($t,a))}}function St(t,e,n,o,r,a,i){const s=i?20:1,c=1e-12;let m,l;I(Ot,o),Yt.copyFrom(e);for(let u=0;u<s&&P(n,Ot)>c&&(m=P(n,Ot),Pt(n,Ot,qt,Vt,Dt,Yt,t,r,a,i),kt(Yt,t,Vt,Dt[1],qt,Dt[0]),It(Ot,Ot,t,Vt,Dt[1],qt,Dt[0]),l=P(n,Ot),l<m||0===u);u++)e.copyFrom(Yt)}function At(n,o,r,a,i,s,c){wt(r,x(o.up,r),n[3],-t.normalize(e(i)),s,o)?St(n,o,r,a,-t.normalize(e(i)),s,c):Et(n,o,r,a,s,c)}function Ht(t,e,n,o,r,a){const{eye:i}=t;G([0,0,1],i,Vt,qt,Ct);const s=e.translation[0]*n.pan,c="zoom"===r.mode?0:e.translation[1]*n.pan,m=Math.max(Math.sqrt(Math.abs(1-x(t.center,Vt)**2/d(t.center)**2)),.5),u=(Math.sin(a)*c+Math.cos(a)*s)/m,p=-Math.cos(a)*c+Math.sin(a)*s;switch(l(o.pan.matrix,o.pan.matrix,u,Vt),o.pan.enabled=!0,r.mode){case"pan":l(o.pan.matrix,o.pan.matrix,p,qt),o.pan.enabled=!0;break;case"zoom":o.zoom=-e.translation[1]*n.zoom}}function Gt(t,e,n,o,r){const{eye:a,viewRight:i}=t,s=k(D.get(),i,a),c=e.translation[0]*n.pan;switch(0!==c&&(l(o.pan.matrix,o.pan.matrix,-c,s),o.pan.enabled=!0),r.mode){case"pan":{const t=e.translation[1]*n.pan;0!==t&&(l(o.pan.matrix,o.pan.matrix,t,i),o.pan.enabled=!0);break}case"zoom":o.zoom=-e.translation[1]*n.zoom}}function Ut(n,o,r,a,i,s,c,m,l){wt(n.center,x(n.up,n.center),d(n.center),-t.normalize(e(s)),c,o)?Ht(o,r,a,m,l,-t.normalize(e(i))):Gt(o,r,a,m,l)}const Vt=w(),qt=w(),Ct=w(),Ft=w(),Rt=w(),Tt=w(),Wt=w(),Bt=w(),Dt=h(),Jt=E(),Kt=p(),Lt=p(),Nt=p(),Ot=w(),Qt=w(),Xt=w(),Yt=new N,Zt=w(),$t=w(),_t={origin:w(),direction:w()},te={origin:w(),direction:w()};export{X as DISTANCE_CLAMP_VALUES,ct as NavigationMode,Q as PIVOT_DISTANCE_MODIFIER,lt as PreservingHeadingThreshold,Y as SCREEN_PIXEL_AREA,O as SpherePickPointFallback,ut as TiltThresholdPanningSpeed,mt as VerticalPanTresholds,ht as applyPanPlanar,Et as applyPanSphericalDirectRotation,St as applyPanSphericalPreserveHeading,_ as applyRotation,kt as applyRotationWithTwoAxes,ot as applyZoomOnSphere,nt as applyZoomToPoint,at as centroid,ft as decideNavigationMode,tt as intersectPlaneFromScreenPoint,et as intersectPlaneFromScreenPointAtEye,zt as lengthFromPoints,Z as normalizeCoordinate,$ as normalizeRotationDelta,st as offSurfaceTiltToEyeTiltGlobal,it as onSurfaceTiltToEyeTiltGlobal,Ut as panMotionToRotationMatrix,At as panToPosition,pt as pickPointAndInitSphere,wt as preserveHeadingThreshold,It as rotatePointAroundTwoAxes,jt as rotationAngleAndAxisDirectRotation,Pt as rotationAnglesAndAxesHeadingPreserving,xt as rotationAnglesHeadingPreserving,yt as sphereOrPlanePointFromScreenPoint};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.25/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{neverReached as t}from"../../../core/compilerUtils.js";import{lerp as e}from"../../../core/mathUtils.js";import{a as i}from"../../../chunks/mat4.js";import{c as r}from"../../../chunks/mat4f64.js";import{a as n,g as o,
|
|
5
|
+
import{neverReached as t}from"../../../core/compilerUtils.js";import{lerp as e}from"../../../core/mathUtils.js";import{a as i}from"../../../chunks/mat4.js";import{c as r}from"../../../chunks/mat4f64.js";import{a as n,g as o,A as s,v as a,s as c,e as l}from"../../../chunks/vec3.js";import{c as p}from"../../../chunks/vec3f64.js";import{computeTranslationToOriginAndRotation as h,projectVectorToVector as d,projectBoundingRect as _}from"../../../geometry/projection.js";import{getReferenceEllipsoid as m}from"../../../geometry/projectionEllipsoid.js";import{create as g,empty as u,expandWithVec3 as x}from"../../../geometry/support/aaBoundingBox.js";import{create as f,center as R}from"../../../geometry/support/aaBoundingRect.js";import{PlaneIndex as y}from"../../../geometry/support/frustum.js";import{create as j,fromPoints as A}from"../../../geometry/support/lineSegment.js";import{create as b,fromVectorsAndPoint as E,copy as S,negate as C,signedDistance as H}from"../../../geometry/support/plane.js";import{wrap as w}from"../../../geometry/support/ray.js";import{ViewingMode as B}from"../../ViewingMode.js";import{frustumLineSegment as G}from"./intersectionUtils.js";const M=.5*Math.PI,F=M/Math.PI*180;class N{constructor(t){this._renderCoordsHelper=t.renderCoordsHelper,this._extent=new Array(4),this._planes=new Array(6),this._maxSpan=0,this._center={origin:p(),direction:p()};for(let e=0;e<4;e++)this._extent[e]={origin:p(),direction:p(),cap:{next:null,direction:p()}},this._planes[e]=b();this._planes[y.NEAR]=b(),this._planes[y.FAR]=b(),this._planesWithoutFar=this._planes.slice(0,5)}update(t,e,i,r=!0){const a=this._extent;this._toRenderBoundingExtent(t,e,i),n(this._center.origin,a[0].origin,a[2].origin),o(this._center.origin,this._center.origin,.5),this._renderCoordsHelper.worldUpAtPosition(this._center.origin,this._center.direction),r||o(this._center.direction,this._center.direction,-1);for(let n=0;n<4;n++){const t=a[n];this._renderCoordsHelper.worldUpAtPosition(t.origin,t.direction);const e=a[3===n?0:n+1];t.cap.next=e.origin,s(t.cap.direction,t.origin,e.origin),E(t.direction,t.cap.direction,t.origin,this._planes[n]),r||o(t.direction,t.direction,-1)}E(a[0].cap.direction,a[1].cap.direction,a[0].origin,this._planes[y.NEAR]),r?C(this._planes[y.NEAR],this._planes[y.FAR]):(S(this._planes[y.FAR],this._planes[y.NEAR]),C(this._planes[y.NEAR],this._planes[y.NEAR])),this._maxSpan=Math.max(Math.abs(t[0]-t[2]),Math.abs(t[1]-t[3])),this._maxSpanSpatialReference=e,this._minGlobalAltitude=.9*m(this._maxSpanSpatialReference).radius}isVisibleInFrustum(t,e,i=!1){if(null==t)return!1;if(this._renderCoordsHelper.viewingMode===B.Global){const i=this._maxSpanSpatialReference.isGeographic?F:M*e;if(this._maxSpan>i)return!0;if(null!=t.altitude&&t.altitude>=this._minGlobalAltitude)return this._isVisibleInFrustumGlobal(t)}if(0===this._maxSpan){const e=this._extent[0];return!(i||!t.intersectsRay(w(e.origin,e.direction)))}for(let n=0;n<this._extent.length;n++){const e=this._extent[n];if(!i&&t.intersectsRay(w(e.origin,e.direction)))return!0;if(t.intersectsLineSegment(A(e.origin,e.cap.next,V),e.cap.direction))return!0}const r=i?this._planes:this._planesWithoutFar;for(let n=0;n<t.lines.length;n++){const e=t.lines[n];if(G(r,e.origin,e.endpoint,e.direction))return!0}return!1}_toRenderBoundingExtentGlobal(t,r,n){const o=5;R(t,v),v[2]=n,h(r,v,I,this._renderCoordsHelper.spatialReference),i(U,I),u(L);for(const{x0:i,x1:s,y0:c,y1:l}of k)for(let p=0;p<o;p++){const h=p/(o-1);v[0]=e(t[i],t[s],h),v[1]=e(t[c],t[l],h),v[2]=n,d(v,r,v,this._renderCoordsHelper.spatialReference),a(v,v,U),x(L,v)}c(this._extent[0].origin,L[0],L[1],L[2]),c(this._extent[1].origin,L[3],L[1],L[2]),c(this._extent[2].origin,L[3],L[4],L[2]),c(this._extent[3].origin,L[0],L[4],L[2]);for(let e=0;e<4;++e)a(this._extent[e].origin,this._extent[e].origin,I)}_toRenderBoundingExtentLocal(t,e,i){_(t,e,P,this._renderCoordsHelper.spatialReference),c(this._extent[0].origin,P[0],P[1],i),c(this._extent[1].origin,P[2],P[1],i),c(this._extent[2].origin,P[2],P[3],i),c(this._extent[3].origin,P[0],P[3],i)}_toRenderBoundingExtent(e,i,r){switch(this._renderCoordsHelper.viewingMode){case B.Global:this._toRenderBoundingExtentGlobal(e,i,r);break;case B.Local:this._toRenderBoundingExtentLocal(e,i,r);break;default:t(this._renderCoordsHelper.viewingMode)}}_isVisibleInFrustumGlobal(t){if(H(t.planes[y.NEAR],this._center.origin)<0&&l(this._center.direction,t.direction)<0)return!0;for(let e=0;e<4;e++){const i=this._extent[e];if(H(t.planes[y.NEAR],i.origin)<0&&l(i.direction,t.direction)<0)return!0}return!1}}const k=[{x0:0,y0:1,x1:2,y1:1},{x0:0,y0:3,x1:2,y1:3},{x0:0,y0:1,x1:0,y1:3},{x0:2,y0:1,x1:2,y1:3}],v=p(),I=r(),U=r(),L=g(),P=f(),V=j();export{N as FrustumExtentIntersection};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.25/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{
|
|
5
|
+
import{a as t,s as e}from"../../../chunks/mat3.js";import{c as a}from"../../../chunks/mat3f64.js";import{c as n,a as r}from"../../../chunks/quat.js";import{a as s,b as f}from"../../../chunks/quatf32.js";import{c as o}from"../../../chunks/quatf64.js";import{c as i,b as c,k as h,p as u,s as l,t as m,a as z,y as S}from"../../../chunks/vec3.js";import{c as b,a as M}from"../../../chunks/vec3f32.js";import{b as p,a as q,c as j}from"../../../chunks/vec3f64.js";import{t as k}from"../../../chunks/vec4.js";import{c as y}from"../../../chunks/vec4f64.js";import{create as v}from"../../../geometry/support/aaBoundingBox.js";import{signedDistance as x,normal as g}from"../../../geometry/support/plane.js";import{computeOBB as w}from"./dito.js";const A=o(),B=j(),d=j(),I=y(),C=a();class D{constructor(t){const e=56,a=0,n=24,r=36,f=t*e;this.buffer=new ArrayBuffer(f),this.obbs=new Array(t);for(let o=0;o<t;o++)this.obbs[o]={center:p(this.buffer,e*o+a),halfSize:b(this.buffer,e*o+n),quaternion:s(this.buffer,e*o+r)}}}function E(t=[0,0,0],e=[-1,-1,-1],a=[0,0,0,1]){return{center:q(t),halfSize:M(e),quaternion:f(a)}}function F(t){return E(t.center,t.halfSize,t.quaternion)}function G(t,e){i(e.center,t.center),i(e.halfSize,t.halfSize),n(e.quaternion,t.quaternion)}function H(t,e){return e=e||E(),w(t,e),e}function J(t,e){const a=x(e,t.center),n=U(t,g(e));return a>n?1:a<-n?-1:0}function K(e,a){a||(a=v());const n=t(C,e.quaternion),r=e.halfSize[0]*Math.abs(n[0])+e.halfSize[1]*Math.abs(n[3])+e.halfSize[2]*Math.abs(n[6]),s=e.halfSize[0]*Math.abs(n[1])+e.halfSize[1]*Math.abs(n[4])+e.halfSize[2]*Math.abs(n[7]),f=e.halfSize[0]*Math.abs(n[2])+e.halfSize[1]*Math.abs(n[5])+e.halfSize[2]*Math.abs(n[8]);return a[0]=e.center[0]-r,a[1]=e.center[1]-s,a[2]=e.center[2]-f,a[3]=e.center[0]+r,a[4]=e.center[1]+s,a[5]=e.center[2]+f,a}function L(t,e){return x(e,t.center)-U(t,g(e))}function N(t,e){return x(e,t.center)+U(t,g(e))}function O(t,e){return J(t,e[0])<=0&&J(t,e[1])<=0&&J(t,e[2])<=0&&J(t,e[3])<=0&&J(t,e[4])<=0&&J(t,e[5])<=0}function P(t,e,a,n=0){r(A,t.quaternion),c(B,e,t.center);const s=h(B,B,A),f=h(d,a,A);let o=-1/0,i=1/0;for(let r=0;r<3;r++)if(Math.abs(f[r])>1e-6){const e=(n+t.halfSize[r]-s[r])/f[r],a=(-n-t.halfSize[r]-s[r])/f[r];o=Math.max(o,Math.min(e,a)),i=Math.min(i,Math.max(e,a))}else if(s[r]>t.halfSize[r]+n||s[r]<-t.halfSize[r]-n)return!1;return o<=i}function Q(a,n,s,f,o){r(A,a.quaternion),u(B,n,a.center),h(B,B,A);const i=B[0]<-a.halfSize[0]?-1:B[0]>a.halfSize[0]?1:0,c=B[1]<-a.halfSize[1]?-1:B[1]>a.halfSize[1]?1:0,S=B[2]<-a.halfSize[2]?-1:B[2]>a.halfSize[2]?1:0,b=Math.abs(i)+Math.abs(c)+Math.abs(S);if(0===b)return 1/0;const M=1===b?4:6,p=6*(i+3*c+9*S+13);t(C,a.quaternion),e(C,C,a.halfSize);for(let t=0;t<M;t++){const e=T[p+t];l(B,((1&e)<<1)-1,(2&e)-1,((4&e)>>1)-1),m(B,B,C),z(I,a.center,B),I[3]=1,k(I,I,s);const n=1/Math.max(1e-6,I[3]);R[2*t]=I[0]*n,R[2*t+1]=I[1]*n}const q=2*M-2;let j=R[0]*(R[3]-R[q+1])+R[q]*(R[1]-R[q-1]);for(let t=2;t<q;t+=2)j+=R[t]*(R[t+3]-R[t-1]);return Math.abs(j)*f*o*.125}const R=[.1,.2,.3,.4,.5,.6,.7,.8,.9,1,1.1,1.2],T=(()=>{const t=new Int8Array(162);let e=0;const a=a=>{for(let n=0;n<a.length;n++)t[e+n]=a[n];e+=6};return a([6,2,3,1,5,4]),a([0,2,3,1,5,4]),a([0,2,3,7,5,4]),a([0,1,3,2,6,4]),a([0,1,3,2,0,0]),a([0,1,5,7,3,2]),a([0,1,3,7,6,4]),a([0,1,3,7,6,2]),a([0,1,5,7,6,2]),a([0,1,5,4,6,2]),a([0,1,5,4,0,0]),a([0,1,3,7,5,4]),a([0,2,6,4,0,0]),a([0,0,0,0,0,0]),a([1,3,7,5,0,0]),a([2,3,7,6,4,0]),a([2,3,7,6,0,0]),a([2,3,1,5,7,6]),a([0,1,5,7,6,2]),a([0,1,5,7,6,4]),a([0,1,3,7,6,4]),a([4,5,7,6,2,0]),a([4,5,7,6,0,0]),a([4,5,1,3,7,6]),a([0,2,3,7,5,4]),a([6,2,3,7,5,4]),a([6,2,3,1,5,4]),t})();function U(t,e){r(A,t.quaternion),h(B,e,A);const a=t.halfSize;return Math.abs(B[0]*a[0])+Math.abs(B[1]*a[1])+Math.abs(B[2]*a[2])}function V(t,e){for(let a=0;a<8;++a){const n=e[a];n[0]=1&a?-t.halfSize[0]:t.halfSize[0],n[1]=2&a?-t.halfSize[1]:t.halfSize[1],n[2]=4&a?-t.halfSize[2]:t.halfSize[2],h(n,n,t.quaternion),z(n,n,t.center)}}function W(t){return S(t.halfSize)}export{D as ObbArray,F as clone,H as compute,V as corners,E as create,P as intersectLine,J as intersectPlane,O as isVisible,N as maximumDistancePlane,L as minimumDistancePlane,Q as projectedArea,U as projectedRadius,W as radius,G as set,K as toAaBoundingBox};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.25/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as t}from"../../../../chunks/tslib.es6.js";import{isAbortError as e}from"../../../../core/promiseUtils.js";import{on as r}from"../../../../core/reactiveUtils.js";import{property as o}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as i}from"../../../../core/accessorSupport/decorators/subclass.js";import{i as s,
|
|
5
|
+
import{_ as t}from"../../../../chunks/tslib.es6.js";import{isAbortError as e}from"../../../../core/promiseUtils.js";import{on as r}from"../../../../core/reactiveUtils.js";import{property as o}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as i}from"../../../../core/accessorSupport/decorators/subclass.js";import{i as s,w as n,c as a}from"../../../../chunks/vec3.js";import{c as d}from"../../../../chunks/vec3f64.js";import l from"../../../../geometry/Point.js";import{ViewingMode as c}from"../../../ViewingMode.js";import{distanceToScale as p}from"../cameraUtils.js";import{PropertiesPool as h}from"../PropertiesPool.js";import{PointOfInterest as u}from"./PointOfInterest.js";const m=Array;let y=class extends u{constructor(t){super(t),this._dirty=!1,this._propertiesPool=new h({location:l,renderLocation:m},this),this._estimatedSurfaceAltitude=0,this._pendingElevationQueryController=null,this.cameraName="camera",this.renderLocation=d(),this._tmpPoint=new l}initialize(){if(this.scheduler&&this.handles.add(this.scheduler.registerTask(this.task,this)),this.runTask(),this.map){const t=()=>this._setDirty();this.handles.add(r((()=>this.map?.ground?.layers),"change",t,{onListenerAdd:t,onListenerRemove:t}))}this._updateRenderLocation()}destroy(){this._cancelPendingRequest(),this._propertiesPool.destroy(),this._propertiesPool=null}get _camera(){return this.state[this.cameraName]}get location(){const t=this._propertiesPool.get("location");return this.renderCoordsHelper.fromRenderCoords(this.renderLocation,t,this.state.spatialReference),t}get scale(){const t=this._camera,e=s(t.eye,this.renderLocation),r={renderCoordsHelper:this.renderCoordsHelper,state:{camera:t}};return p(r,e,0)}get updating(){return this._dirty||null!=this._pendingElevationQueryController}updateRenderLocation(){this._setDirty(),this._updateRenderLocation()}_setDirty(){this._dirty||(this._dirty=!0,this.notifyChange("updating"))}_cancelPendingRequest(){const t=this._pendingElevationQueryController;t&&(this._pendingElevationQueryController=null,t.abort(),this.notifyChange("updating"))}get running(){return!this._pendingElevationQueryController&&this._dirty}runTask(){if(this._cancelPendingRequest(),this._dirty=!1,this.notifyChange("updating"),!this.map||!this.map.ground)return void this._updateSurfaceAltitude(0);const t=this.state.spatialReference;this.renderCoordsHelper.fromRenderCoords(this._camera.eye,this._tmpPoint,t);const r=this._tmpPoint.z>g&&this.renderCoordsHelper.viewingMode===c.Global&&(t.isWGS84||t.isWebMercator);let o=new AbortController;this.map.ground.queryElevation(this._tmpPoint,{signal:o.signal,cache:this.cache,minDemResolution:r?f:0}).then((t=>this._updateSurfaceAltitude(t.geometry.z))).catch((t=>{e(t)||this._updateSurfaceAltitude(0)})).catch((()=>{})).then((()=>{this._pendingElevationQueryController===o&&(this._pendingElevationQueryController=null,this.notifyChange("updating")),o=null})),this._pendingElevationQueryController=o}_updateSurfaceAltitude(t){this._estimatedSurfaceAltitude!==t&&(this._estimatedSurfaceAltitude=t,this._updateRenderLocation())}_updateRenderLocation(){this.renderCoordsHelper.setAltitude(_,this._estimatedSurfaceAltitude,this._camera.eye),n(this._get("renderLocation"),_)||this._set("renderLocation",a(this._propertiesPool.get("renderLocation"),_))}};t([o({constructOnly:!0})],y.prototype,"scheduler",void 0),t([o({constructOnly:!0})],y.prototype,"cache",void 0),t([o({constructOnly:!0})],y.prototype,"task",void 0),t([o({constructOnly:!0})],y.prototype,"cameraName",void 0),t([o({readOnly:!0})],y.prototype,"location",null),t([o({constructOnly:!0})],y.prototype,"map",void 0),t([o({readOnly:!0})],y.prototype,"renderLocation",void 0),t([o({readOnly:!0})],y.prototype,"scale",null),t([o({readOnly:!0})],y.prototype,"updating",null),y=t([i("esri.views.3d.support.CameraOnSurface")],y);const _=d(),g=1e5,f=1e6;export{y as CameraOnSurface};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.25/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as t}from"../../../../chunks/tslib.es6.js";import{clamp as e}from"../../../../core/mathUtils.js";import{removeMaybe as r,destroyMaybe as s,isSome as i}from"../../../../core/maybe.js";import{property as o}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as a}from"../../../../core/accessorSupport/decorators/subclass.js";import{c,i as n,g as u,a as l,
|
|
5
|
+
import{_ as t}from"../../../../chunks/tslib.es6.js";import{clamp as e}from"../../../../core/mathUtils.js";import{removeMaybe as r,destroyMaybe as s,isSome as i}from"../../../../core/maybe.js";import{property as o}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as a}from"../../../../core/accessorSupport/decorators/subclass.js";import{c,i as n,g as u,a as l,w as d,z as p}from"../../../../chunks/vec3.js";import{c as h}from"../../../../chunks/vec3f64.js";import f from"../../../../geometry/Point.js";import{projectBoundingRect as m}from"../../../../geometry/projection.js";import{getReferenceEllipsoid as _}from"../../../../geometry/projectionEllipsoid.js";import{create as y}from"../../../../geometry/support/aaBoundingRect.js";import S from"../debugFlags.js";import{PropertiesPool as g}from"../PropertiesPool.js";import{PointOfInterest as A}from"./PointOfInterest.js";const j=Array;let v=class extends A{constructor(t){super(t),this._propertiesPool=new g({location:f,renderLocation:j},this),this._currentSurfaceAltitude=0,this._latestSurfaceAltitude=0,this.cameraName="camera",this.distance=0,this.renderLocation=h(),this.updating=!1}initialize(){this._frameWorker=this.scheduler.registerTask(this.task,this),this.runTask()}destroy(){this._frameWorker=r(this._frameWorker),this._propertiesPool=s(this._propertiesPool)}get _camera(){return this.state[this.cameraName]}get location(){const t=this._propertiesPool.get("location");return this.renderCoordsHelper.fromRenderCoords(this.renderLocation,t,this.state.spatialReference),t}updateRenderLocation(){this.updating=!0,this._updateRenderLocation()}get estimatedSurfaceAltitude(){return this._latestSurfaceAltitude}get running(){return this.updating}runTask(){this._latestSurfaceAltitude=this.estimateSurfaceAltitudeAtCenter(),this._updateRenderLocation(),this.updating=!1}_updateRenderLocation(){const t=k;let e=this._calculateSurfaceIntersection(this._currentSurfaceAltitude,t);const r=this._currentSurfaceAltitude!==this._latestSurfaceAltitude;!e&&r&&(e=this._calculateSurfaceIntersection(this._latestSurfaceAltitude,t),e&&(this._currentSurfaceAltitude=this._latestSurfaceAltitude));const s=C;e&&this._latestSurfaceAltitudeChangesDistanceSignificantly(t,s)&&(c(t,s),this._currentSurfaceAltitude=this._latestSurfaceAltitude),e?this.distance=n(this._camera.eye,t):(u(t,this._camera.viewForward,this._get("distance")),l(t,t,this._camera.eye)),d(this._get("renderLocation"),t)||this._set("renderLocation",c(this._propertiesPool.get("renderLocation"),t))}_calculateSurfaceIntersection(t,r){const s=this._camera;if(!this.renderCoordsHelper.intersectManifold(s.ray,t,r))return!1;if(this.state.isGlobal){const e=_(this.renderCoordsHelper.spatialReference).radius,i=e+t,o=p(s.eye),a=o<i*i,c=n(s.eye,r);if(a&&c>e/4){const t=i-Math.sqrt(o);return u(r,s.viewForward,t),l(r,r,s.eye),!0}}else{const t=this.surface.ready?this.surface.extent:null;i(t)&&m(t,this.surface.spatialReference,O,this.renderCoordsHelper.spatialReference)&&(r[0]=e(r[0],O[0],O[2]),r[1]=e(r[1],O[1],O[3]))}return!0}_latestSurfaceAltitudeChangesDistanceSignificantly(t,e){if(this._latestSurfaceAltitude===this._currentSurfaceAltitude||null==t)return!1;if(this._calculateSurfaceIntersection(this._latestSurfaceAltitude,e)){if(S.TESTS_DISABLE_OPTIMIZATIONS)return!0;const r=this._camera.eye,s=n(r,t),i=n(r,e);if(Math.abs(i-s)/s>L)return!0}return!1}};t([o({constructOnly:!0})],v.prototype,"scheduler",void 0),t([o({constructOnly:!0})],v.prototype,"task",void 0),t([o({constructOnly:!0})],v.prototype,"cameraName",void 0),t([o()],v.prototype,"distance",void 0),t([o({constructOnly:!0})],v.prototype,"estimateSurfaceAltitudeAtCenter",void 0),t([o({readOnly:!0})],v.prototype,"location",null),t([o({readOnly:!0})],v.prototype,"renderLocation",void 0),t([o()],v.prototype,"updating",void 0),v=t([a("esri.views.3d.support.CenterOnSurface")],v);const L=.05,k=h(),C=h(),O=y();export{v as CenterOnSurface};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.25/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../../../../chunks/tslib.es6.js";import t from"../../../../core/Accessor.js";import r from"../../../../core/Handles.js";import{unwrap as s,isNone as n}from"../../../../core/maybe.js";import{watch as i,sync as o,when as a,on as c,initial as u}from"../../../../core/reactiveUtils.js";import{property as h}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as d}from"../../../../core/accessorSupport/decorators/subclass.js";import{a as f,
|
|
5
|
+
import{_ as e}from"../../../../chunks/tslib.es6.js";import t from"../../../../core/Accessor.js";import r from"../../../../core/Handles.js";import{unwrap as s,isNone as n}from"../../../../core/maybe.js";import{watch as i,sync as o,when as a,on as c,initial as u}from"../../../../core/reactiveUtils.js";import{property as h}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as d}from"../../../../core/accessorSupport/decorators/subclass.js";import{a as f,w as p,c as _}from"../../../../chunks/vec3.js";import{c as m}from"../../../../chunks/vec3f64.js";import{create as l}from"../../../../geometry/support/ray.js";import C from"../debugFlags.js";import{PointGraphics as y}from"../debugUtils.js";import{PropertiesPool as O}from"../PropertiesPool.js";import{fromRenderAtEye as A}from"../geometryUtils/ray.js";import{CameraOnSurface as S}from"./CameraOnSurface.js";import{CenterOnSurface as w}from"./CenterOnSurface.js";import{ContentGeometryUpdates as g}from"./ContentGeometryUpdates.js";import{Focus as I}from"./Focus.js";import{StableSurfaceCenter as v}from"./StableSurfaceCenter.js";import{SurfaceGeometryUpdates as b}from"./SurfaceGeometryUpdates.js";import{newIntersector as T}from"../../webgl-engine/lib/Intersector.js";import{StoreResults as R}from"../../webgl-engine/lib/IntersectorInterfaces.js";import{TERRAIN_ID as P}from"../../webgl-engine/lib/verticalOffsetUtils.js";import{TaskPriority as j}from"../../../support/Scheduler.js";let E=class extends t{constructor(e){super(e),this._handles=new r,this._tmpRay=l(),this._centerRayDirty=!0,this._surfaceAltitudeAtCenter=0,this._surfaceAltitudeAtCenterDirty=!0,this._contentAltitudeAtCenter=0,this._contentAltitudeAtCenterDirty=!0,this._propertiesPool=new O({renderPointOfView:N},this),this.renderPointOfView=m(),this._pois=new Array,this._debugCenters=new Map}initialize(){const{state:e,basemapTerrain:t,renderCoordsHelper:r,map:n}=this.view;this._surfaceIntersector=T(e.viewingMode),e.isGlobal?this._surfaceIntersector.options.backfacesTerrain=!1:this._surfaceIntersector.options.backfacesTerrain=!0,this._surfaceIntersector.options.invisibleTerrain=!1,this._surfaceIntersector.options.store=R.MIN,this._contentIntersector=T(e.viewingMode);const h=()=>this._estimateSurfaceAltitudeAtCenter(),d=this.view.resourceController.scheduler,f=s(this.view.basemapTerrain?.elevationQueryCache),p={state:e,scheduler:d,surface:t,renderCoordsHelper:r};this._set("centerOnSurfaceInfrequent",new w({...p,task:j.POINT_OF_INTEREST_INFREQUENT,estimateSurfaceAltitudeAtCenter:h})),this._set("centerOnSurfaceFrequent",new w({...p,task:j.POINT_OF_INTEREST_FREQUENT,estimateSurfaceAltitudeAtCenter:h})),this._set("contentCenterOnSurface",new w({...p,task:j.POINT_OF_INTEREST_INFREQUENT,estimateSurfaceAltitudeAtCenter:h,cameraName:"contentCamera"})),this._set("centerOnContent",new w({...p,task:j.POINT_OF_INTEREST_FREQUENT,estimateSurfaceAltitudeAtCenter:()=>this._estimateContentAltitudeAtCenter()})),this._set("cameraOnSurface",new S({...p,cache:f,task:j.POINT_OF_INTEREST_INFREQUENT,map:n})),this._set("contentCameraOnSurface",new S({...p,cache:f,task:j.POINT_OF_INTEREST_INFREQUENT,map:n,cameraName:"contentCamera"})),this._set("surfaceGeometryUpdates",new b({...p,centerOnSurfaces:[this.centerOnSurfaceFrequent,this.centerOnContent,this.centerOnSurfaceInfrequent]})),this._set("contentGeometryUpdates",new g({contentLayerViews:this.view.allLayerViews,renderCoordsHelper:r})),this._set("surfaceOrigin",new v({cache:f,view:this.view})),this._set("focus",new I({state:e,scheduler:d,surface:t,renderCoordsHelper:r,centerOnSurface:this.contentCenterOnSurface,estimateSurfaceIntersectionAtRenderPoint:(e,t)=>this._estimateSurfaceIntersectionAtRenderPoint(e,this.view.state.contentCamera,t)})),this._pois.push(this.centerOnContent,this.centerOnSurfaceFrequent,this.centerOnSurfaceInfrequent,this.contentCenterOnSurface,this.cameraOnSurface,this.contentCameraOnSurface,this.focus);const _=this.view.graphics;this._debugCenters.set(this.centerOnContent,new y(_,"red","CenterOnContent")),this._debugCenters.set(this.centerOnSurfaceFrequent,new y(_,"red","CenterOnSurface")),this._debugCenters.set(this.centerOnSurfaceInfrequent,new y(_,"red","CenterOnSurface")),this._debugCenters.set(this.contentCenterOnSurface,new y(_,"red","ContentCenterOnSurface")),this._debugCenters.set(this.cameraOnSurface,new y(_,"blue","CameraOnSurface")),this._debugCenters.set(this.contentCameraOnSurface,new y(_,"blue","ContentCameraOnSurface")),this._debugCenters.set(this.focus,new y(_,"green","Focus")),this._handles.add([i((()=>e.camera),(e=>this._cameraChanged(e)),o),i((()=>t.extent),(()=>this._updateCenterPointsOfInterest())),a((()=>!t.updating),(()=>this._updateCenterPointsOfInterest()),o),c((()=>this.surfaceGeometryUpdates.events),"request-update",(()=>this._updateCenterPointsOfInterest())),c((()=>this.contentGeometryUpdates.events),"request-update",(()=>this._updateCenterOnContent())),a((()=>C.SHOW_POI),(e=>this._setDebug(e)),u)]),this._cameraChanged(this.view.state.camera);for(const s of this._pois)s.runTask()}destroy(){this._setDebug(!1),this._handles.destroy(),this._propertiesPool.destroy();for(const e of this._pois)e.destroy();this.surfaceOrigin.destroy()}get updating(){return!(!this.surfaceGeometryUpdates?.updating&&!this._pois.some((e=>e.updating)))}get _centerRay(){return this._centerRayDirty&&(this._centerRayCached=this.view.sceneIntersectionHelper.getCenterRayWithSubpixelOffset(this.view.state.camera,this._tmpRay),this._centerRayDirty=!1),this._centerRayCached}_estimateContentAltitudeAtCenter(){if(!this._contentAltitudeAtCenterDirty)return this._contentAltitudeAtCenter;this._contentAltitudeAtCenterDirty=!1;const e=this._centerRay;return n(e)||(this.view.sceneIntersectionHelper.intersectRay(e,this._contentIntersector,U,D)?this._contentAltitudeAtCenter=this.view.renderCoordsHelper.getAltitude(U):this._contentAltitudeAtCenter=this._estimateSurfaceAltitudeAtCenter()),this._contentAltitudeAtCenter}_estimateSurfaceAltitudeAtCenter(){if(!this.view.basemapTerrain)return 0;if(!this._surfaceAltitudeAtCenterDirty)return this._surfaceAltitudeAtCenter;this._surfaceAltitudeAtCenterDirty=!1;const e=this._centerRay;if(n(e))return this._surfaceAltitudeAtCenter;const t=e.origin,r=f(U,e.origin,e.direction);return this._surfaceIntersector.resetWithRay(e,this.view.state.camera),this.view.basemapTerrain.intersect(this._surfaceIntersector,null,t,r),this._surfaceIntersector.results.min.getIntersectionPoint(U)&&(this._surfaceAltitudeAtCenter=this.view.renderCoordsHelper.getAltitude(U)),this._surfaceAltitudeAtCenter}_estimateSurfaceIntersectionAtRenderPoint(e,t,r){const s=A(t,e,F);if(n(s))return null;const i=s.origin,o=f(U,s.origin,s.direction);return this._surfaceIntersector.resetWithRay(s,t),this.view.basemapTerrain.intersect(this._surfaceIntersector,null,i,o),this._surfaceIntersector.results.min.getIntersectionPoint(r)?r:null}_cameraChanged(e){this._updateCenterPointsOfInterest();const t=e.eye;p(this.renderPointOfView,t)||this._set("renderPointOfView",_(this._propertiesPool.get("renderPointOfView"),t))}_updateCenterPointsOfInterest(){this._centerRayDirty=!0,this._surfaceAltitudeAtCenterDirty=!0,this._contentAltitudeAtCenterDirty=!0;for(const e of this._pois)e.updateRenderLocation()}_updateCenterOnContent(){this._contentAltitudeAtCenterDirty=!0,this.centerOnContent.updateRenderLocation()}_setDebug(e){if(!e)return this._debugCenters.forEach((e=>e.hide())),void this._handles.remove("debug");for(const t of this._pois)this._handles.add(i((()=>t.renderLocation),(e=>this._debugCenters.get(t).show(e,t.renderCoordsHelper.spatialReference)),u),"debug")}get test(){return{update:()=>{this.surfaceGeometryUpdates.runTask();for(const e of this._pois)e.runTask()},surfaceGeometryUpdates:this.surfaceGeometryUpdates}}};e([h({readOnly:!0})],E.prototype,"centerOnContent",void 0),e([h({readOnly:!0})],E.prototype,"centerOnSurfaceFrequent",void 0),e([h({readOnly:!0})],E.prototype,"centerOnSurfaceInfrequent",void 0),e([h({readOnly:!0})],E.prototype,"contentCenterOnSurface",void 0),e([h({readOnly:!0})],E.prototype,"cameraOnSurface",void 0),e([h({readOnly:!0})],E.prototype,"contentCameraOnSurface",void 0),e([h({readOnly:!0})],E.prototype,"focus",void 0),e([h({readOnly:!0})],E.prototype,"renderPointOfView",void 0),e([h({readOnly:!0})],E.prototype,"surfaceOrigin",void 0),e([h({readOnly:!0})],E.prototype,"contentGeometryUpdates",void 0),e([h({readOnly:!0})],E.prototype,"surfaceGeometryUpdates",void 0),e([h({constructOnly:!0})],E.prototype,"view",void 0),e([h({readOnly:!0})],E.prototype,"updating",null),E=e([d("esri.views.3d.support.PointsOfInterest")],E);const N=Array,U=m(),F=l(),D={exclude:new Set([P])};export{E as PointsOfInterest};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.25/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{lerp as t,clamp as e}from"../../../core/mathUtils.js";import{isSome as i}from"../../../core/maybe.js";import{d as n,i as o,r as a,n as r,o as l}from"../../../chunks/mat4.js";import{c}from"../../../chunks/mat4f64.js";import{s,h as u,n as m,g as d,
|
|
5
|
+
import{lerp as t,clamp as e}from"../../../core/mathUtils.js";import{isSome as i}from"../../../core/maybe.js";import{d as n,i as o,r as a,n as r,o as l}from"../../../chunks/mat4.js";import{c}from"../../../chunks/mat4f64.js";import{s,h as u,n as m,g as d,v as g,a as h}from"../../../chunks/vec3.js";import{f as b,c as f,a as y}from"../../../chunks/vec3f64.js";import{ViewingMode as p}from"../../ViewingMode.js";import{S as A}from"../../../chunks/SunCalc.js";import{angle as w}from"./mathUtils.js";const N={local:{altitude:1500,ambientAtNight:.1,ambientAtNoon:.45,ambientAtTwilight:.2,directAtNoon:.65,directAtTwilight:.7},global:{altitude:8e5,ambient:.015,direct:.75},planarDirection:{localAltitude:1e4,globalAltitude:1e6,globalAngles:{azimuth:1.3*Math.PI,altitude:.6*Math.PI}}};function T(n,o,a,r,l,c){s(c.ambient.color,1,1,1),c.ambient.intensity=N.global.ambient,s(c.direct.color,1,1,1),c.direct.intensity=N.global.direct;const m=o[2],d=e((Math.abs(m)-N.local.altitude)/(N.global.altitude-N.local.altitude),0,1);let g;if(c.globalFactor=d,i(n)&&(g=A.getTimes(n,o[1],o[0])),d<1){let e;if(i(n))e=G(n,g,r);else{const t=E(r);e={direct:{intensity:N.local.directAtNoon*t.direct,color:b(1,1,1)},ambient:{intensity:N.local.ambientAtNoon*t.ambient,color:b(1,1,1)},timeOfDay:"early afternoon"}}u(c.ambient.color,e.ambient.color,c.ambient.color,d),c.ambient.intensity=t(e.ambient.intensity,c.ambient.intensity,d),u(c.direct.color,e.direct.color,c.direct.color,d),c.direct.intensity=t(e.direct.intensity,c.direct.intensity,d),c.specularStrength="rainy"===r||"snowy"===r||"foggy"===r?0:1,c.environmentStrength="rainy"===r?.7:"snowy"===r||"foggy"===r?.75:1}c.noonFactor=i(n)?D(n,g):1,i(n)?M(n,o,a,c.direct.directionToLightSource):v(l,a,c.direct.directionToLightSource)}function v(t,e,i){e===p.Global?m(L,t.eye):s(L,0,0,1),d(R,t.viewForward,-1);const o=w(R,L),a=Math.max(o-2*_,0),r=.85*a/(a+1),l=Math.max(_,o-_-r);n(F,-l,t.viewRight),g(i,R,F),h(i,i,d(U,t.viewRight,C)),m(i,i)}function M(t,i,n,c){const u=z,m=o(j);if(n===p.Global)A.getPosition(t,0,0,u),s(c,0,0,-1),a(m,m,-u.azimuth),r(m,m,-u.altitude),g(c,c,m);else{const n=N.planarDirection,o=n.globalAngles,r=i[2];let d=(Math.abs(r)-n.localAltitude)/(n.globalAltitude-n.localAltitude);d=e(d,0,1),d<1?(A.getPosition(t,i[1],i[0],u),u.azimuth=(1-d)*u.azimuth+d*o.azimuth,u.altitude=(1-d)*u.altitude+d*o.altitude):(u.azimuth=o.azimuth,u.altitude=o.altitude),s(c,0,-1,0),l(m,m,-u.azimuth),a(m,m,-u.altitude),g(c,c,m)}}function x(t,e){if(e===p.Global)return!0;const i=N.planarDirection;return Math.abs(t)<i.localAltitude}function S(t,e,i,n,o){const a=t.getTime(),r=e.getTime()-a,l=Math.floor(r/i)+1,c=new Array(l);for(let s=0;s<l;++s)k.setTime(a+i*s),c[s]=f(),M(k,n,o,c[s]);return c}const O=b(.5773502691896258,-.5773502691896258,.5773502691896258);class P{constructor(){this.ambient={color:b(1,1,1),intensity:.55},this.direct={color:b(1,1,1),intensity:.55,directionToLightSource:y(O)},this.noonFactor=.5,this.globalFactor=0,this.specularStrength=1,this.environmentStrength=1}}const j=c(),z={azimuth:0,altitude:0};function D(t,i){const n=t.valueOf();let o,a;i.polarException===A.PolarException.MIDNIGHT_SUN?(o=n-60*(t.getHours()+48)*60*1e3-60*t.getMinutes()*1e3,a=o+432e6):i.polarException===A.PolarException.POLAR_NIGHT?(o=n-2,a=n-1):(o=i.sunrise.valueOf(),a=i.sunset.valueOf());const r=o+(a-o)/2;return 1-e(Math.abs(n-r)/432e5,0,1)}function E(t){switch(t){case"disabled":case"sunny":case"cloudy":return{direct:1,ambient:1};case"rainy":return{direct:.4,ambient:1.2};case"snowy":return{direct:.5,ambient:1.3};case"foggy":return{direct:.2,ambient:1.6}}}function I(t,e){const i=(t[0]+t[1]+t[2])/3;for(let n=0;n<3;n++)t[n]=t[n]+(i-t[n])*e;return t}function G(t,e,i){const n=t.valueOf();let o,a;e.polarException===A.PolarException.MIDNIGHT_SUN?(o=n-60*(t.getHours()+48)*60*1e3-60*t.getMinutes()*1e3,a=o+432e6):e.polarException===A.PolarException.POLAR_NIGHT?(o=n-2,a=n-1):(o=e.sunrise.valueOf(),a=e.sunset.valueOf());const r=a-o,l=o+r/2,c=r/4,s=l-c,u=l+c,m=.06*r,d=o-m/2,g=o+m/2,h=a-m/2,f=a+m/2,y=N.local,p=[.01,y.ambientAtNight],w=[.8,.8,1],T=[.01,.01,.01],v=[y.directAtTwilight,y.ambientAtTwilight],M=[1,.6,.5],x=[.8,.8,1],S=[.9*y.directAtNoon,y.ambientAtNoon],O=[1,.98,.98],P=[.98,.98,1],j=[y.directAtNoon,y.ambientAtNoon],z=[1,1,1],D=[1,1,1],G=S,k=O,F=P,L=v,R=M,U=x;let _,C,V=[0,0],q=[0,0,0],B=[0,0,0];n<d||n>f?(V=p,q=T,B=w,C="night"):n<g?(_=g-d,V=H(n-d,_,p,v),q=H(n-d,_,T,M),B=H(n-d,_,w,x),C="sun rising"):n<s?(_=s-g,V=H(n-g,_,v,S),q=H(n-g,_,M,O),B=H(n-g,_,x,P),C="early morning"):n<l?(_=l-s,V=H(n-s,_,S,j),q=H(n-s,_,O,z),B=H(n-s,_,P,D),C="late morning"):n<u?(_=u-l,V=H(n-l,_,j,G),q=H(n-l,_,z,k),B=H(n-l,_,D,F),C="early afternoon"):n<h?(_=h-u,V=H(n-u,_,G,L),q=H(n-u,_,k,R),B=H(n-u,_,F,U),C="late afternoon"):n<f&&(_=f-h,V=H(n-h,_,L,p),q=H(n-h,_,R,T),B=H(n-h,_,U,w),C="sun setting");let J=0;switch(i){case"rainy":case"foggy":J=.9;case"snowy":J=.5}J>0&&(q=I(q,J),B=I(B,J));const K=b(q[0],q[1],q[2]),Q=b(B[0],B[1],B[2]),W=E(i);return{direct:{intensity:V[0]*W.direct,color:K},ambient:{intensity:V[1]*W.ambient,color:Q},timeOfDay:C}}function H(t,e,i,n){const o=[];for(let a=0;a<i.length;a++)o[a]=(n[a]-i[a])*t/e+i[a];return o}const k=new Date(0),F=c(),L=f(),R=f(),U=f(),_=.25,C=.2;export{P as ColorAndIntensity,T as computeColorAndIntensity,S as computeDirectionsOverTime,x as computeShadowsEnabled,v as computeVirtualLightDirection};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.25/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../../../chunks/tslib.es6.js";import r from"../../../core/Accessor.js";import t from"../../../core/Evented.js";import s from"../../../core/Handles.js";import{someMap as i}from"../../../core/MapUtils.js";import{releaseMaybe as o,disposeMaybe as a,isSome as n,isNone as h,unwrapOr as d}from"../../../core/maybe.js";import l from"../../../core/PooledArray.js";import{watch as c,syncAndInitial as p,on as u}from"../../../core/reactiveUtils.js";import{someSet as m}from"../../../core/SetUtils.js";import{property as _}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/arrayUtils.js";import"../../../core/has.js";import"../../../core/accessorSupport/ensureType.js";import{subclass as g}from"../../../core/accessorSupport/decorators/subclass.js";import{w as y,f as R}from"../../../chunks/mat4.js";import{s as f}from"../../../chunks/vec3.js";import{f as T}from"../../../chunks/vec3f64.js";import{ViewingMode as w}from"../../ViewingMode.js";import{DrapeTargetType as b,DrapeSourceType as v}from"../layers/interfaces.js";import x from"../support/debugFlags.js";import{OverlayIndex as O,RenderTargetType as S}from"./interfaces.js";import{Overlay as D}from"./Overlay.js";import{OverlayFramebufferObject as j}from"./OverlayFramebufferObject.js";import{OverlayRenderTarget as P}from"./OverlayRenderTarget.js";import{ShaderOutput as E}from"../webgl-engine/core/shaderLibrary/ShaderOutput.js";import{T as A}from"../../../chunks/TextureOnly.glsl.js";import{ShaderTechniqueRepository as C}from"../webgl-engine/core/shaderTechnique/ShaderTechniqueRepository.js";import{AutoDisposableMixin as F,autoDispose as q}from"../webgl-engine/lib/AutoDisposable.js";import{UpdatePolicy as M}from"../webgl-engine/lib/basicInterfaces.js";import{Camera as W}from"../webgl-engine/lib/Camera.js";import{GLMaterialRepository as U}from"../webgl-engine/lib/GLMaterialRepository.js";import{createEmptyDepthTexture as V,createQuadVAO as I}from"../webgl-engine/lib/glUtil3D.js";import{GridLocalOriginFactory as B}from"../webgl-engine/lib/GridLocalOriginFactory.js";import{RenderOccludedFlag as H}from"../webgl-engine/lib/Material.js";import{OverlayRenderContext as L}from"../webgl-engine/lib/RenderContext.js";import{RenderSlot as N}from"../webgl-engine/lib/RenderSlot.js";import{ShadowMap as G}from"../webgl-engine/lib/ShadowMap.js";import{SortedRenderGeometryRenderer as k}from"../webgl-engine/lib/SortedRenderGeometryRenderer.js";import{SSAOHelper as z}from"../webgl-engine/lib/SSAOHelper.js";import{TextureTechnique as Y}from"../webgl-engine/lib/TextureTechnique.js";import{TextureTechniqueConfiguration as X}from"../webgl-engine/lib/TextureTechniqueConfiguration.js";import{TransparencyPassType as J}from"../webgl-engine/lib/TransparencyPassType.js";import{AmbientLight as K}from"../webgl-engine/lighting/Lightsources.js";import{StippleTextureRepository as Q}from"../webgl-engine/materials/StippleTextureRepository.js";import{AlphaMode as Z,CompositingFunction as $}from"../webgl-engine/shaders/CompositingTechniqueConfiguration.js";import{TaskPriority as ee,noBudget as re}from"../../support/Scheduler.js";import{ClearBufferBit as te,PrimitiveType as se,TextureType as ie,PixelFormat as oe,PixelType as ae,TextureSamplingMode as ne}from"../../webgl/enums.js";import{Texture as he}from"../../webgl/Texture.js";import{vertexCount as de}from"../../webgl/Util.js";let le=class extends(F(r)){constructor(e){super(e),this._overlays=null,this._overlayRenderTarget=null,this._hasHighlights=!1,this._rendersOccluded=!1,this._hasWater=!1,this._handles=new s,this._renderers=new Map,this._sortedDrapeSourceRenderersDirty=!1,this._sortedRenderers=new l,this._passParameters=new A,this._rctx=null,this._materialRepository=null,this._screenToWorldRatio=1,this._localOriginFactory=null,this.worldToPCSRatio=1,this.events=new t,this.longitudeCyclical=null}get _bindParameters(){return this._renderContext.bindParameters}get rctx(){return this._rctx}get materialRepository(){return this._materialRepository}get screenToWorldRatio(){return this._screenToWorldRatio}get localOriginFactory(){return this._localOriginFactory}initialize(){const e=this.view._stage.renderView;this._rctx=e.renderingContext;const r=e.waterTextureRepository;this._stippleTextureRepository=new Q(e.renderingContext),this._shaderTechniqueRepository=new C({rctx:this._rctx,viewingMode:w.Local,stippleTextureRepository:this._stippleTextureRepository,waterTextureRepository:r}),this._renderContext=new L(this._rctx,new G(this._rctx,this.view.state.viewingMode),new z(this._shaderTechniqueRepository,this._rctx,(()=>{}))),this._handles.add([c((()=>r.updating),(()=>this.events.emit("content-changed")),p),c((()=>this.spatialReference),(e=>this._localOriginFactory=new B(e)),p),u((()=>this.view.allLayerViews),"after-changes",(()=>this._sortedDrapeSourceRenderersDirty=!0))]),this._materialRepository=new U(e.textureRepository,this._shaderTechniqueRepository,(e=>{(e.renderOccluded&ge)>0!==this._rendersOccluded&&this._updateRendersOccluded(),this.events.emit("content-changed"),this.notifyChange("updating")}),(()=>this.events.emit("content-changed"))),this._bindParameters.slot=N.DRAPED_MATERIAL,this._bindParameters.highlightDepthTexture=V(this._rctx),this._bindParameters.camera=me,this._bindParameters.transparencyPassType=J.NONE,this._bindParameters.newLighting.noonFactor=0,this._bindParameters.newLighting.globalFactor=0,this._bindParameters.newLighting.set([new K(T(1,1,1))]),this._handles.add(this.view.resourceController.scheduler.registerTask(ee.STAGE,this))}dispose(){this._handles.destroy(),this._renderers.forEach((e=>e.destroy())),this._renderers.clear(),this._debugTextureTechnique=o(this._debugTextureTechnique),this._passParameters.texture=a(this._passParameters.texture),this._bindParameters.highlightDepthTexture=a(this._bindParameters.highlightDepthTexture),this._shaderTechniqueRepository=a(this._shaderTechniqueRepository),this._temporaryFBO=a(this._temporaryFBO),this._quadVAO=a(this._quadVAO),this.disposeOverlays()}get updating(){return this._sortedDrapeSourceRenderersDirty||i(this._renderers,(e=>e.updating))}get hasOverlays(){return n(this._overlays)&&n(this._overlayRenderTarget)}get gpuMemoryUsage(){return n(this._overlayRenderTarget)?this._overlayRenderTarget.gpuMemoryUsage:0}createGeometryDrapeSourceRenderer(e){return this.createDrapeSourceRenderer(e,k)}createDrapeSourceRenderer(e,r,t){const s=this._renderers.get(e);n(s)&&s.destroy();const i=new r({...t,rendererContext:this,drapeSource:e});return this._renderers.set(e,i),this._sortedDrapeSourceRenderersDirty=!0,"fullOpacity"in e&&this._handles.add(c((()=>e.fullOpacity),(()=>this.events.emit("content-changed"))),e),i}removeDrapeSourceRenderer(e){if(h(e))return;const r=this._renderers.get(e);h(r)||(this._sortedDrapeSourceRenderersDirty=!0,this._renderers.delete(e),this._handles.remove(e),r.destroy())}collectUnusedRenderTargetMemory(e){let r=!1;if(n(this._overlayRenderTarget))for(const t of this._overlayRenderTarget.renderTargets){const s=this.overlays[0].validTargets[t.type]||!this.overlays[1].validTargets[t.type];r=this._overlayRenderTarget.validateUsageForTarget(s,t,e)||r}return r}get overlays(){return d(this._overlays,[])}ensureDrapeTargets(e){n(this._overlays)&&this._overlays.forEach((r=>r.hasTargetWithoutRasterImage=m(e,(e=>e.drapeTargetType===b.WithoutRasterImage))))}ensureDrapeSources(e){n(this._overlays)&&this._overlays.forEach((r=>{r.hasDrapedFeatureSource=m(e,(e=>e.drapeSourceType===v.Features)),r.hasDrapedRasterSource=m(e,(e=>e.drapeSourceType===v.RasterImage))}))}ensureOverlays(e,r){h(this._overlays)&&(this._overlayRenderTarget=new P(this._rctx),this._overlays=[new D(O.INNER,this._overlayRenderTarget),new D(O.OUTER,this._overlayRenderTarget)]),this.ensureDrapeTargets(e),this.ensureDrapeSources(r)}disposeOverlays(){this._overlays=null,this._overlayRenderTarget=a(this._overlayRenderTarget),this.events.emit("textures-disposed")}get running(){return this.updating}runTask(e){this._processDrapeSources(e,(()=>!0))}_processDrapeSources(e,r){let t=!1;for(const[s,i]of this._renderers){if(e.done)break;(s.destroyed||r(s))&&(i.commitChanges()&&(t=!0,e.madeProgress()))}this._updateSortedDrapeSourceRenderers(),t&&(n(this._overlays)&&0===this._renderers.size&&this.disposeOverlays(),this.notifyChange("updating"),this.events.emit("content-changed"),this._updateHasHighlights(),this._updateRendersOccluded(),this._updateHasWater())}processSyncDrapeSources(){this._processDrapeSources(re,(e=>e.updatePolicy===M.SYNC))}isEmpty(){if(x.OVERLAY_DRAW_DEBUG_TEXTURE)return!1;for(const e of this._renderers.values())if(!e.isEmpty)return!1;return!0}get hasHighlights(){return this._hasHighlights}get hasWater(){return this._hasWater}get rendersOccluded(){return this._rendersOccluded}updateAnimation(e){let r=!1;return this._renderers.forEach((t=>r=t.updateAnimation(e)||r)),r}updateDrapeSourceOrder(){this._sortedDrapeSourceRenderersDirty=!0}drawTarget(e,r,t){const s=e.canvasGeometries;if(0===s.numViews)return!1;this._screenToWorldRatio=t*e.mapUnitsPerPixel;const i=r.output;if(this.isEmpty()||i===E.Highlight&&!this.hasHighlights||i===E.Normal&&!this.hasWater||!e.hasSomeSizedView())return!1;const o=r.fbo;if(!o.isValid())return!1;const a=2*e.resolution,h=e.resolution;o.resize(a,h);const d=this._rctx;me.pixelRatio=e.pixelRatio*t,this._renderContext.output=i,this._bindParameters.screenToWorldRatio=this._screenToWorldRatio,this._bindParameters.screenToPCSRatio=this._screenToWorldRatio*this.worldToPCSRatio,this._bindParameters.slot=i===E.Normal?N.DRAPED_WATER:N.DRAPED_MATERIAL,e.applyViewport(this._rctx),o.bind(d),e.index===O.INNER&&(d.setClearColor(0,0,0,0),d.clearSafe(te.COLOR_BUFFER_BIT));const l=r.type===S.ColorNoRasterImage?ce.ExcludeRasterImage:r.type===S.Occluded?ce.OccludedOnly:ce.Normal;if(l===ce.OccludedOnly&&(this._renderContext.renderOccludedMask=ge),x.OVERLAY_DRAW_DEBUG_TEXTURE&&l!==ce.OccludedOnly)for(let n=0;n<s.numViews;n++)this._setViewParameters(s.extents[n],e,me),this._drawDebugTexture(e.resolution,ue[e.index]);return this._renderers.size>0&&this._sortedRenderers.forAll((({drapeSource:r,renderer:t})=>{if(l===ce.ExcludeRasterImage&&r.drapeSourceType===v.RasterImage)return;const{fullOpacity:c}=r,p=n(c)&&c<1&&i===E.Color;p&&(this.bindTemporaryFramebuffer(this._rctx,a,h),d.clearSafe(te.COLOR_BUFFER_BIT));for(let i=0;i<s.numViews;i++)this._setViewParameters(s.extents[i],e,me),t.render(this._renderContext,this._bindParameters);p&&n(this._temporaryFBO)&&(o.bind(d),this.view._stage.renderView.compositingHelper.composite(this._renderContext.bindParameters,this._temporaryFBO.getTexture(),Z.PremultipliedAlpha,c,$.OverlayWithTransparency,e.index))})),d.bindFramebuffer(null),o.generateMipMap(),this._renderContext.resetRenderOccludedMask(),!0}bindTemporaryFramebuffer(e,r,t){h(this._temporaryFBO)&&(this._temporaryFBO=new j(e,!1)),this._temporaryFBO.resize(r,t),this._temporaryFBO.bind(e)}async reloadShaders(){await this._shaderTechniqueRepository.reloadAll()}notifyContentChanged(){this.events.emit("content-changed")}intersect(e,r,t,s){let i=0;for(const o of this._renderers.values())i=o.intersect?.(e,r,t,s,i)??i}_updateSortedDrapeSourceRenderers(){if(!this._sortedDrapeSourceRenderersDirty)return;if(this._sortedDrapeSourceRenderersDirty=!1,this._sortedRenderers.clear(),0===this._renderers.size)return;const e=this.view.map.allLayers;this._renderers.forEach(((r,t)=>{const s=e.indexOf(t.layer);this._sortedRenderers.push(new pe(t,r,s<0?1/0:s))})),this._sortedRenderers.sort(((e,r)=>e.index-r.index))}_setViewParameters(e,r,t){t.viewport[0]=t.viewport[1]=0,t.viewport[2]=t.viewport[3]=r.resolution,y(t.projectionMatrix,0,e[2]-e[0],0,e[3]-e[1],t.near,t.far),R(t.viewMatrix,[-e[0],-e[1],0]),this._bindParameters.camera=t}_updateHasWater(){const e=i(this._renderers,(e=>e.hasWater));e!==this._hasWater&&(this._hasWater=e,this.events.emit("has-water",e))}_updateHasHighlights(){const e=i(this._renderers,(e=>e.hasHighlights));e!==this._hasHighlights&&(this._hasHighlights=e,this.events.emit("has-highlights",e))}_updateRendersOccluded(){const e=i(this._renderers,(e=>e.rendersOccluded));e!==this._rendersOccluded&&(this._rendersOccluded=e,this.events.emit("renders-occluded",e))}_drawDebugTexture(e,r){this._ensureDebugPatternResources(e,e,r);const t=this._rctx;t.bindTechnique(this._debugTextureTechnique,this._passParameters,null),t.bindVAO(this._quadVAO),t.drawArrays(se.TRIANGLE_STRIP,0,de(this._quadVAO,"geometry"))}_ensureDebugPatternResources(e,r,t){if(f(this._passParameters.color,t[0],t[1],t[2]),this._passParameters.texture)return;const s=new Uint8Array(e*r*4);let i=0;for(let a=0;a<r;a++)for(let t=0;t<e;t++){const o=Math.floor(t/10),n=Math.floor(a/10);o<2||n<2||10*o>e-20||10*n>r-20?(s[i++]=255,s[i++]=255,s[i++]=255,s[i++]=255):(s[i++]=255,s[i++]=255,s[i++]=255,s[i++]=1&o&&1&n?1&t^1&a?0:255:1&o^1&n?0:128)}this._passParameters.texture=new he(this._rctx,{target:ie.TEXTURE_2D,pixelFormat:oe.RGBA,dataType:ae.UNSIGNED_BYTE,samplingMode:ne.NEAREST,width:e,height:r},s);const o=new X;o.hasAlpha=!0,this._debugTextureTechnique=this._shaderTechniqueRepository.acquire(Y,o),this._quadVAO=I(this._rctx)}get test(){return{drapeSourceRenderers:this._renderers,getDrapeSourceRenderer:e=>this._renderers.get(e)}}};var ce;e([_()],le.prototype,"_sortedDrapeSourceRenderersDirty",void 0),e([q()],le.prototype,"_shaderTechniqueRepository",void 0),e([q()],le.prototype,"_stippleTextureRepository",void 0),e([_({constructOnly:!0})],le.prototype,"view",void 0),e([_()],le.prototype,"worldToPCSRatio",void 0),e([_()],le.prototype,"spatialReference",void 0),e([_({type:Boolean,readOnly:!0})],le.prototype,"updating",null),le=e([g("esri.views.3d.terrain.OverlayRenderer")],le),function(e){e[e.Normal=0]="Normal",e[e.OccludedOnly=1]="OccludedOnly",e[e.ExcludeRasterImage=2]="ExcludeRasterImage"}(ce||(ce={}));class pe{constructor(e,r,t){this.drapeSource=e,this.renderer=r,this.index=t}}const ue=[[1,.5,.5],[.5,.5,1]],me=new W;me.near=1,me.far=1e4,me.relativeElevation=null;const _e=-2,ge=H.OccludeAndTransparent;export{_e as DRAPED_Z,ce as DrawPassOption,le as OverlayRenderer,ge as overlayRenderOccludedFlag};
|
|
5
|
+
import{_ as e}from"../../../chunks/tslib.es6.js";import r from"../../../core/Accessor.js";import t from"../../../core/Evented.js";import s from"../../../core/Handles.js";import{someMap as i}from"../../../core/MapUtils.js";import{releaseMaybe as o,disposeMaybe as a,isSome as n,isNone as h,unwrapOr as d}from"../../../core/maybe.js";import l from"../../../core/PooledArray.js";import{watch as c,syncAndInitial as p,on as u}from"../../../core/reactiveUtils.js";import{someSet as _}from"../../../core/SetUtils.js";import{property as m}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/arrayUtils.js";import"../../../core/has.js";import"../../../core/accessorSupport/ensureType.js";import{subclass as g}from"../../../core/accessorSupport/decorators/subclass.js";import{w as y,f as R}from"../../../chunks/mat4.js";import{s as f}from"../../../chunks/vec3.js";import{f as T}from"../../../chunks/vec3f64.js";import{ViewingMode as w}from"../../ViewingMode.js";import{DrapeTargetType as b,DrapeSourceType as v}from"../layers/interfaces.js";import x from"../support/debugFlags.js";import{OverlayIndex as O,RenderTargetType as S}from"./interfaces.js";import{Overlay as D}from"./Overlay.js";import{OverlayFramebufferObject as j}from"./OverlayFramebufferObject.js";import{OverlayRenderTarget as P}from"./OverlayRenderTarget.js";import{ShaderOutput as E}from"../webgl-engine/core/shaderLibrary/ShaderOutput.js";import{T as A}from"../../../chunks/TextureOnly.glsl.js";import{ShaderTechniqueRepository as C}from"../webgl-engine/core/shaderTechnique/ShaderTechniqueRepository.js";import{AutoDisposableMixin as F,autoDispose as q}from"../webgl-engine/lib/AutoDisposable.js";import{UpdatePolicy as M}from"../webgl-engine/lib/basicInterfaces.js";import{Camera as U}from"../webgl-engine/lib/Camera.js";import{GLMaterialRepository as V}from"../webgl-engine/lib/GLMaterialRepository.js";import{createEmptyDepthTexture as W,createQuadVAO as I}from"../webgl-engine/lib/glUtil3D.js";import{GridLocalOriginFactory as B}from"../webgl-engine/lib/GridLocalOriginFactory.js";import{RenderOccludedFlag as H}from"../webgl-engine/lib/Material.js";import{OverlayRenderContext as L}from"../webgl-engine/lib/RenderContext.js";import{RenderSlot as N}from"../webgl-engine/lib/RenderSlot.js";import{ShadowMap as G}from"../webgl-engine/lib/ShadowMap.js";import{SortedRenderGeometryRenderer as k}from"../webgl-engine/lib/SortedRenderGeometryRenderer.js";import{SSAOHelper as z}from"../webgl-engine/lib/SSAOHelper.js";import{TextureTechnique as Y}from"../webgl-engine/lib/TextureTechnique.js";import{TextureTechniqueConfiguration as X}from"../webgl-engine/lib/TextureTechniqueConfiguration.js";import{TransparencyPassType as J}from"../webgl-engine/lib/TransparencyPassType.js";import{AmbientLight as K}from"../webgl-engine/lighting/Lightsources.js";import{StippleTextureRepository as Q}from"../webgl-engine/materials/StippleTextureRepository.js";import{TaskPriority as Z,noBudget as $}from"../../support/Scheduler.js";import{ClearBufferBit as ee,PrimitiveType as re,TextureType as te,PixelFormat as se,PixelType as ie,TextureSamplingMode as oe}from"../../webgl/enums.js";import{Texture as ae}from"../../webgl/Texture.js";import{vertexCount as ne}from"../../webgl/Util.js";let he=class extends(F(r)){constructor(e){super(e),this._overlays=null,this._overlayRenderTarget=null,this._hasHighlights=!1,this._rendersOccluded=!1,this._hasWater=!1,this._handles=new s,this._renderers=new Map,this._sortedDrapeSourceRenderersDirty=!1,this._sortedRenderers=new l,this._passParameters=new A,this._rctx=null,this._materialRepository=null,this._screenToWorldRatio=1,this._localOriginFactory=null,this.worldToPCSRatio=1,this.events=new t,this.longitudeCyclical=null}get _bindParameters(){return this._renderContext.bindParameters}get rctx(){return this._rctx}get materialRepository(){return this._materialRepository}get screenToWorldRatio(){return this._screenToWorldRatio}get localOriginFactory(){return this._localOriginFactory}initialize(){const e=this.view._stage.renderView;this._rctx=e.renderingContext;const r=e.waterTextureRepository;this._stippleTextureRepository=new Q(e.renderingContext),this._shaderTechniqueRepository=new C({rctx:this._rctx,viewingMode:w.Local,stippleTextureRepository:this._stippleTextureRepository,waterTextureRepository:r}),this._renderContext=new L(this._rctx,new G(this._rctx,this.view.state.viewingMode),new z(this._shaderTechniqueRepository,this._rctx,(()=>{}))),this._handles.add([c((()=>r.updating),(()=>this.events.emit("content-changed")),p),c((()=>this.spatialReference),(e=>this._localOriginFactory=new B(e)),p),u((()=>this.view.allLayerViews),"after-changes",(()=>this._sortedDrapeSourceRenderersDirty=!0))]),this._materialRepository=new V(e.textureRepository,this._shaderTechniqueRepository,(e=>{(e.renderOccluded&_e)>0!==this._rendersOccluded&&this._updateRendersOccluded(),this.events.emit("content-changed"),this.notifyChange("updating")}),(()=>this.events.emit("content-changed"))),this._bindParameters.slot=N.DRAPED_MATERIAL,this._bindParameters.highlightDepthTexture=W(this._rctx),this._bindParameters.camera=pe,this._bindParameters.transparencyPassType=J.NONE,this._bindParameters.newLighting.noonFactor=0,this._bindParameters.newLighting.globalFactor=0,this._bindParameters.newLighting.set([new K(T(1,1,1))]),this._handles.add(this.view.resourceController.scheduler.registerTask(Z.STAGE,this))}dispose(){this._handles.destroy(),this._renderers.forEach((e=>e.destroy())),this._renderers.clear(),this._debugTextureTechnique=o(this._debugTextureTechnique),this._passParameters.texture=a(this._passParameters.texture),this._bindParameters.highlightDepthTexture=a(this._bindParameters.highlightDepthTexture),this._shaderTechniqueRepository=a(this._shaderTechniqueRepository),this._temporaryFBO=a(this._temporaryFBO),this._quadVAO=a(this._quadVAO),this.disposeOverlays()}get updating(){return this._sortedDrapeSourceRenderersDirty||i(this._renderers,(e=>e.updating))}get hasOverlays(){return n(this._overlays)&&n(this._overlayRenderTarget)}get gpuMemoryUsage(){return n(this._overlayRenderTarget)?this._overlayRenderTarget.gpuMemoryUsage:0}createGeometryDrapeSourceRenderer(e){return this.createDrapeSourceRenderer(e,k)}createDrapeSourceRenderer(e,r,t){const s=this._renderers.get(e);n(s)&&s.destroy();const i=new r({...t,rendererContext:this,drapeSource:e});return this._renderers.set(e,i),this._sortedDrapeSourceRenderersDirty=!0,"fullOpacity"in e&&this._handles.add(c((()=>e.fullOpacity),(()=>this.events.emit("content-changed"))),e),i}removeDrapeSourceRenderer(e){if(h(e))return;const r=this._renderers.get(e);h(r)||(this._sortedDrapeSourceRenderersDirty=!0,this._renderers.delete(e),this._handles.remove(e),r.destroy())}collectUnusedRenderTargetMemory(e){let r=!1;if(n(this._overlayRenderTarget))for(const t of this._overlayRenderTarget.renderTargets){const s=this.overlays[0].validTargets[t.type]||!this.overlays[1].validTargets[t.type];r=this._overlayRenderTarget.validateUsageForTarget(s,t,e)||r}return r}get overlays(){return d(this._overlays,[])}ensureDrapeTargets(e){n(this._overlays)&&this._overlays.forEach((r=>r.hasTargetWithoutRasterImage=_(e,(e=>e.drapeTargetType===b.WithoutRasterImage))))}ensureDrapeSources(e){n(this._overlays)&&this._overlays.forEach((r=>{r.hasDrapedFeatureSource=_(e,(e=>e.drapeSourceType===v.Features)),r.hasDrapedRasterSource=_(e,(e=>e.drapeSourceType===v.RasterImage))}))}ensureOverlays(e,r){h(this._overlays)&&(this._overlayRenderTarget=new P(this._rctx),this._overlays=[new D(O.INNER,this._overlayRenderTarget),new D(O.OUTER,this._overlayRenderTarget)]),this.ensureDrapeTargets(e),this.ensureDrapeSources(r)}disposeOverlays(){this._overlays=null,this._overlayRenderTarget=a(this._overlayRenderTarget),this.events.emit("textures-disposed")}get running(){return this.updating}runTask(e){this._processDrapeSources(e,(()=>!0))}_processDrapeSources(e,r){let t=!1;for(const[s,i]of this._renderers){if(e.done)break;(s.destroyed||r(s))&&(i.commitChanges()&&(t=!0,e.madeProgress()))}this._updateSortedDrapeSourceRenderers(),t&&(n(this._overlays)&&0===this._renderers.size&&this.disposeOverlays(),this.notifyChange("updating"),this.events.emit("content-changed"),this._updateHasHighlights(),this._updateRendersOccluded(),this._updateHasWater())}processSyncDrapeSources(){this._processDrapeSources($,(e=>e.updatePolicy===M.SYNC))}isEmpty(){if(x.OVERLAY_DRAW_DEBUG_TEXTURE)return!1;for(const e of this._renderers.values())if(!e.isEmpty)return!1;return!0}get hasHighlights(){return this._hasHighlights}get hasWater(){return this._hasWater}get rendersOccluded(){return this._rendersOccluded}updateAnimation(e){let r=!1;return this._renderers.forEach((t=>r=t.updateAnimation(e)||r)),r}updateDrapeSourceOrder(){this._sortedDrapeSourceRenderersDirty=!0}drawTarget(e,r,t){const s=e.canvasGeometries;if(0===s.numViews)return!1;this._screenToWorldRatio=t*e.mapUnitsPerPixel;const i=r.output;if(this.isEmpty()||i===E.Highlight&&!this.hasHighlights||i===E.Normal&&!this.hasWater||!e.hasSomeSizedView())return!1;const o=r.fbo;if(!o.isValid())return!1;const a=2*e.resolution,h=e.resolution;o.resize(a,h);const d=this._rctx;pe.pixelRatio=e.pixelRatio*t,this._renderContext.output=i,this._bindParameters.screenToWorldRatio=this._screenToWorldRatio,this._bindParameters.screenToPCSRatio=this._screenToWorldRatio*this.worldToPCSRatio,this._bindParameters.slot=i===E.Normal?N.DRAPED_WATER:N.DRAPED_MATERIAL,e.applyViewport(this._rctx),o.bind(d),e.index===O.INNER&&(d.setClearColor(0,0,0,0),d.clearSafe(ee.COLOR_BUFFER_BIT));const l=r.type===S.ColorNoRasterImage?de.ExcludeRasterImage:r.type===S.Occluded?de.OccludedOnly:de.Normal;if(l===de.OccludedOnly&&(this._renderContext.renderOccludedMask=_e),x.OVERLAY_DRAW_DEBUG_TEXTURE&&l!==de.OccludedOnly)for(let n=0;n<s.numViews;n++)this._setViewParameters(s.extents[n],e,pe),this._drawDebugTexture(e.resolution,ce[e.index]);return this._renderers.size>0&&this._sortedRenderers.forAll((({drapeSource:r,renderer:t})=>{if(l===de.ExcludeRasterImage&&r.drapeSourceType===v.RasterImage)return;const{fullOpacity:c}=r,p=n(c)&&c<1&&i===E.Color;p&&(this.bindTemporaryFramebuffer(this._rctx,a,h),d.clearSafe(ee.COLOR_BUFFER_BIT));for(let i=0;i<s.numViews;i++)this._setViewParameters(s.extents[i],e,pe),t.render(this._renderContext,this._bindParameters);p&&n(this._temporaryFBO)&&(o.bind(d),this.view._stage.renderView.compositingHelper.compositeOverlay(this._renderContext.bindParameters,this._temporaryFBO.getTexture(),c,e.index))})),d.bindFramebuffer(null),o.generateMipMap(),this._renderContext.resetRenderOccludedMask(),!0}bindTemporaryFramebuffer(e,r,t){h(this._temporaryFBO)&&(this._temporaryFBO=new j(e,!1)),this._temporaryFBO.resize(r,t),this._temporaryFBO.bind(e)}async reloadShaders(){await this._shaderTechniqueRepository.reloadAll()}notifyContentChanged(){this.events.emit("content-changed")}intersect(e,r,t,s){let i=0;for(const o of this._renderers.values())i=o.intersect?.(e,r,t,s,i)??i}_updateSortedDrapeSourceRenderers(){if(!this._sortedDrapeSourceRenderersDirty)return;if(this._sortedDrapeSourceRenderersDirty=!1,this._sortedRenderers.clear(),0===this._renderers.size)return;const e=this.view.map.allLayers;this._renderers.forEach(((r,t)=>{const s=e.indexOf(t.layer);this._sortedRenderers.push(new le(t,r,s<0?1/0:s))})),this._sortedRenderers.sort(((e,r)=>e.index-r.index))}_setViewParameters(e,r,t){t.viewport[0]=t.viewport[1]=0,t.viewport[2]=t.viewport[3]=r.resolution,y(t.projectionMatrix,0,e[2]-e[0],0,e[3]-e[1],t.near,t.far),R(t.viewMatrix,[-e[0],-e[1],0]),this._bindParameters.camera=t}_updateHasWater(){const e=i(this._renderers,(e=>e.hasWater));e!==this._hasWater&&(this._hasWater=e,this.events.emit("has-water",e))}_updateHasHighlights(){const e=i(this._renderers,(e=>e.hasHighlights));e!==this._hasHighlights&&(this._hasHighlights=e,this.events.emit("has-highlights",e))}_updateRendersOccluded(){const e=i(this._renderers,(e=>e.rendersOccluded));e!==this._rendersOccluded&&(this._rendersOccluded=e,this.events.emit("renders-occluded",e))}_drawDebugTexture(e,r){this._ensureDebugPatternResources(e,e,r);const t=this._rctx;t.bindTechnique(this._debugTextureTechnique,this._passParameters,null),t.bindVAO(this._quadVAO),t.drawArrays(re.TRIANGLE_STRIP,0,ne(this._quadVAO,"geometry"))}_ensureDebugPatternResources(e,r,t){if(f(this._passParameters.color,t[0],t[1],t[2]),this._passParameters.texture)return;const s=new Uint8Array(e*r*4);let i=0;for(let a=0;a<r;a++)for(let t=0;t<e;t++){const o=Math.floor(t/10),n=Math.floor(a/10);o<2||n<2||10*o>e-20||10*n>r-20?(s[i++]=255,s[i++]=255,s[i++]=255,s[i++]=255):(s[i++]=255,s[i++]=255,s[i++]=255,s[i++]=1&o&&1&n?1&t^1&a?0:255:1&o^1&n?0:128)}this._passParameters.texture=new ae(this._rctx,{target:te.TEXTURE_2D,pixelFormat:se.RGBA,dataType:ie.UNSIGNED_BYTE,samplingMode:oe.NEAREST,width:e,height:r},s);const o=new X;o.hasAlpha=!0,this._debugTextureTechnique=this._shaderTechniqueRepository.acquire(Y,o),this._quadVAO=I(this._rctx)}get test(){return{drapeSourceRenderers:this._renderers,getDrapeSourceRenderer:e=>this._renderers.get(e)}}};var de;e([m()],he.prototype,"_sortedDrapeSourceRenderersDirty",void 0),e([q()],he.prototype,"_shaderTechniqueRepository",void 0),e([q()],he.prototype,"_stippleTextureRepository",void 0),e([m({constructOnly:!0})],he.prototype,"view",void 0),e([m()],he.prototype,"worldToPCSRatio",void 0),e([m()],he.prototype,"spatialReference",void 0),e([m({type:Boolean,readOnly:!0})],he.prototype,"updating",null),he=e([g("esri.views.3d.terrain.OverlayRenderer")],he),function(e){e[e.Normal=0]="Normal",e[e.OccludedOnly=1]="OccludedOnly",e[e.ExcludeRasterImage=2]="ExcludeRasterImage"}(de||(de={}));class le{constructor(e,r,t){this.drapeSource=e,this.renderer=r,this.index=t}}const ce=[[1,.5,.5],[.5,.5,1]],pe=new U;pe.near=1,pe.far=1e4,pe.relativeElevation=null;const ue=-2,_e=H.OccludeAndTransparent;export{ue as DRAPED_Z,de as DrawPassOption,he as OverlayRenderer,_e as overlayRenderOccludedFlag};
|