@arcgis/core 5.2.0-next.87 → 5.2.0-next.89
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/Graphic.js +1 -1
- package/arcade/Dictionary.js +1 -1
- package/arcade/Feature.js +1 -1
- package/arcade/ImmutablePointArray.js +1 -1
- package/arcade/Pixel.js +1 -1
- package/arcade/Voxel.js +1 -1
- package/arcade/arcadeAsyncRuntime.js +1 -1
- package/arcade/arcadeCompiler.js +1 -1
- package/arcade/arcadeRuntime.js +1 -1
- package/arcade/containerUtils.js +1 -1
- package/arcade/debug.js +1 -1
- package/arcade/deepClone.js +1 -1
- package/arcade/featureset/actions/SpatialFilter.js +1 -1
- package/arcade/featureset/support/FeatureSet.js +1 -1
- package/arcade/functions/centroid.js +1 -1
- package/arcade/functions/date.js +1 -1
- package/arcade/functions/feature.js +1 -1
- package/arcade/functions/featuresetbase.js +1 -1
- package/arcade/functions/featuresetgeom.js +1 -1
- package/arcade/functions/featuresetstats.js +1 -1
- package/arcade/functions/featuresetstring.js +1 -1
- package/arcade/functions/fieldStats.js +1 -1
- package/arcade/functions/geomasync.js +1 -1
- package/arcade/functions/geometry.js +1 -1
- package/arcade/functions/geomsync.js +1 -1
- package/arcade/functions/knowledgegraph.js +1 -1
- package/arcade/functions/maths.js +1 -1
- package/arcade/functions/stats.js +1 -1
- package/arcade/functions/string.js +1 -1
- package/arcade/functions/track.js +1 -1
- package/arcade/geometry/adapters/accessor.js +2 -0
- package/arcade/geometry/adapters/dehydrated.js +2 -0
- package/arcade/geometry/adapters/gx.js +2 -0
- package/arcade/geometry/adapters/json.js +2 -0
- package/arcade/geometry/adapters/optimized.js +2 -0
- package/arcade/geometry/adapters/tuple.js +2 -0
- package/arcade/geometry/adapters/utils.js +2 -0
- package/arcade/geometry/arrayOfPointsConversions.js +2 -0
- package/arcade/geometry/constructors.js +1 -1
- package/arcade/geometry/functions.js +1 -1
- package/arcade/geometry/isSelfIntersecting.js +2 -0
- package/arcade/geometry/nearestCoordinate.js +2 -0
- package/arcade/geometry/nearestVertex.js +1 -1
- package/arcade/geometry/operators.js +1 -1
- package/arcade/geometry/operatorsWorker.js +1 -1
- package/arcade/geometry/rotate.js +1 -1
- package/arcade/geometry.js +2 -0
- package/arcade/languageUtils.js +1 -1
- package/arcade.js +1 -1
- package/arcgisGlobal.d.ts +1 -0
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/{0b8c9657975388f1e4c8.js → 00181785a180e934bf7c.js} +1 -1
- package/assets/esri/core/workers/chunks/{01e648b258efa6408070.js → 0336f4f8498a22347720.js} +1 -1
- package/assets/esri/core/workers/chunks/05393b23ab24126d4236.js +1 -0
- package/assets/esri/core/workers/chunks/07613ecf13c38ad58b79.js +1 -0
- package/assets/esri/core/workers/chunks/08263c07d92c48806834.js +1 -0
- package/assets/esri/core/workers/chunks/090ea7a131f8f60203ed.js +1 -0
- package/assets/esri/core/workers/chunks/09e01fd1c199be0c8e03.js +1 -0
- package/assets/esri/core/workers/chunks/{12d6d73ca1fa55640a4f.js → 0b4a7209b99227a842ad.js} +1 -1
- package/assets/esri/core/workers/chunks/0d95f72e1c07ab867d21.js +1 -0
- package/assets/esri/core/workers/chunks/0dbbac7a2378728571a7.js +1 -0
- package/assets/esri/core/workers/chunks/0f15468ffefd3e9a17b8.js +29 -0
- package/assets/esri/core/workers/chunks/13e92f6a9573a2818fb7.js +1 -0
- package/assets/esri/core/workers/chunks/159b16f47665f94a0305.js +1 -0
- package/assets/esri/core/workers/chunks/15f4f7e34e14e3cf52e6.js +1 -0
- package/assets/esri/core/workers/chunks/19e93d4d37018e3ee849.js +1 -0
- package/assets/esri/core/workers/chunks/{911f3a1b8dd4bc5c9782.js → 1bf5c0a4bc5a960a3fa2.js} +1 -1
- package/assets/esri/core/workers/chunks/1bf967c68d0c795d3fb4.js +1 -0
- package/assets/esri/core/workers/chunks/1c378d489c5402888f76.js +1 -0
- package/assets/esri/core/workers/chunks/1d1e8d8b1fcf2d9f3dfc.js +1 -0
- package/assets/esri/core/workers/chunks/{e5c8f9fef88ca33624e9.js → 1e087fb13b7b0a5d6fec.js} +1 -1
- package/assets/esri/core/workers/chunks/1e192ac0533a5c0b5a7a.js +1 -0
- package/assets/esri/core/workers/chunks/1f9d6180a96d557838e9.js +1 -0
- package/assets/esri/core/workers/chunks/1fe077f57a087c0e9119.js +1 -0
- package/assets/esri/core/workers/chunks/20f6e681ccd8bf884b77.js +1 -0
- package/assets/esri/core/workers/chunks/212222b64039d436b9a6.js +1 -0
- package/assets/esri/core/workers/chunks/22c94f9a69b2157f8dbd.js +1 -0
- package/assets/esri/core/workers/chunks/23addf8b11938e0c96e9.js +1 -0
- package/assets/esri/core/workers/chunks/25a2e02677a74834c8b5.js +1 -0
- package/assets/esri/core/workers/chunks/26ecc841396e5e719b6a.js +1 -0
- package/assets/esri/core/workers/chunks/27c0bed59626c7f64125.js +1 -0
- package/assets/esri/core/workers/chunks/2bc3e7f394386fa75447.js +1 -0
- package/assets/esri/core/workers/chunks/2c9783e3b44986e86797.js +1 -0
- package/assets/esri/core/workers/chunks/2ceb07b125c84b51f02a.js +1 -0
- package/assets/esri/core/workers/chunks/2cf2f2842c19be84ab4d.js +1 -0
- package/assets/esri/core/workers/chunks/2d07d5a9ec67c39ef10c.js +1 -0
- package/assets/esri/core/workers/chunks/{a7c715648a07ed70b122.js → 2ec44ebc48beeba11201.js} +1 -1
- package/assets/esri/core/workers/chunks/2f2d699b072472fa710e.js +1 -0
- package/assets/esri/core/workers/chunks/2f3bbc1f7d4abbbeec2f.js +1 -0
- package/assets/esri/core/workers/chunks/30af0f7c4cfa541c9efd.js +1 -0
- package/assets/esri/core/workers/chunks/30d816bdeea00f6fa1ca.js +1 -0
- package/assets/esri/core/workers/chunks/{39c0a3eb6a870953d530.js → 31a0620a6028e94c7532.js} +3 -3
- package/assets/esri/core/workers/chunks/32f11b4aeae1ef00e466.js +1 -0
- package/assets/esri/core/workers/chunks/37adb55d9f83faad1712.js +1 -0
- package/assets/esri/core/workers/chunks/3869dca884d7ca6488f5.js +1 -0
- package/assets/esri/core/workers/chunks/39b6a5222f45cb8dbc94.js +1 -0
- package/assets/esri/core/workers/chunks/3a9c6f58a1a065c14017.js +1 -0
- package/assets/esri/core/workers/chunks/3aceedec9abfb2fdfa18.js +1 -0
- package/assets/esri/core/workers/chunks/3b552afffaa78bf4fe18.js +1 -0
- package/assets/esri/core/workers/chunks/{fe06cc2f90b2d551e4c1.js → 3bbd2d4a19c3b7ad82e4.js} +1 -1
- package/assets/esri/core/workers/chunks/3de07326da4c47cd2aab.js +1 -0
- package/assets/esri/core/workers/chunks/3f5234120d3a14186c1c.js +1 -0
- package/assets/esri/core/workers/chunks/3f82410d9f701e7ad8eb.js +1 -0
- package/assets/esri/core/workers/chunks/{dbd6bbd3e834ff9d220e.js → 41cf6163758d28fb1968.js} +1 -1
- package/assets/esri/core/workers/chunks/45858d1c6487f4a98e40.js +1 -0
- package/assets/esri/core/workers/chunks/45c1c90ac6c14657f3ff.js +1 -0
- package/assets/esri/core/workers/chunks/46f8c7ae7fb356c3410d.js +1 -0
- package/assets/esri/core/workers/chunks/486f1a3b7269ce6c3911.js +1 -0
- package/assets/esri/core/workers/chunks/497c5a9c95e9a89ac217.js +1 -0
- package/assets/esri/core/workers/chunks/49d36e54644dc2966128.js +1 -0
- package/assets/esri/core/workers/chunks/4aefe6fd4d725a107758.js +1 -0
- package/assets/esri/core/workers/chunks/4b6f433022a6822706cb.js +1 -0
- package/assets/esri/core/workers/chunks/4c7264e3f4156f92d613.js +1 -0
- package/assets/esri/core/workers/chunks/4ee99e654dad6f09abee.js +1 -0
- package/assets/esri/core/workers/chunks/50525b617ef78086d3c7.js +1 -0
- package/assets/esri/core/workers/chunks/{a7727a2377470d586ff9.js → 51c9bd7c03d780fadebc.js} +1 -1
- package/assets/esri/core/workers/chunks/5235b9c21ac4156c2375.js +1 -0
- package/assets/esri/core/workers/chunks/52422500ca3d6cf2e596.js +1 -0
- package/assets/esri/core/workers/chunks/527b87fddf33bb5d519e.js +1 -0
- package/assets/esri/core/workers/chunks/{a4bae2396fae48b57047.js → 595edbc1e9bba47d5676.js} +1 -1
- package/assets/esri/core/workers/chunks/5af16937904c06fb06f6.js +1 -0
- package/assets/esri/core/workers/chunks/5bf65dbfd9c7a5ea187d.js +1 -0
- package/assets/esri/core/workers/chunks/5d7a5aa608ed6192b016.js +1 -0
- package/assets/esri/core/workers/chunks/5d9c92c4e60a4696fdad.js +1 -0
- package/assets/esri/core/workers/chunks/5ed7bc9e6cb7cdee92e2.js +1 -0
- package/assets/esri/core/workers/chunks/{272c8ccdbd3dcc14e99b.js → 5ed89c862eee1345e3af.js} +1 -1
- package/assets/esri/core/workers/chunks/5fbd7d8d8896a224fff3.js +1 -0
- package/assets/esri/core/workers/chunks/607acd9f615f87e14075.js +1 -0
- package/assets/esri/core/workers/chunks/62ee6c247f783acabb74.js +1 -0
- package/assets/esri/core/workers/chunks/64ce2d060ae7cdd412cf.js +1 -0
- package/assets/esri/core/workers/chunks/65f4ca7201e7267bfc81.js +1 -0
- package/assets/esri/core/workers/chunks/67efdd296007a809586c.js +1 -0
- package/assets/esri/core/workers/chunks/680557b8832fbdab7f46.js +1 -0
- package/assets/esri/core/workers/chunks/691434d4c6a38e63d819.js +1 -0
- package/assets/esri/core/workers/chunks/{ba67aaa08e4f11e1140a.js → 696cb3bf167327d5b0b9.js} +1 -1
- package/assets/esri/core/workers/chunks/69700ed16727ed0c4e3a.js +1 -0
- package/assets/esri/core/workers/chunks/6a2d890640b2cd6c5ccb.js +1 -0
- package/assets/esri/core/workers/chunks/6b84982dfaf084a61b93.js +1 -0
- package/assets/esri/core/workers/chunks/{7343a44a2382a1d68497.js → 6b9dbf43c0659e55c539.js} +1 -1
- package/assets/esri/core/workers/chunks/6de5c6af62776e1b9776.js +1 -0
- package/assets/esri/core/workers/chunks/71308dca3fd05687e7bd.js +1 -0
- package/assets/esri/core/workers/chunks/75bddfe2be64379db8fd.js +1 -0
- package/assets/esri/core/workers/chunks/777f2fdf1f4b9f243893.js +1 -0
- package/assets/esri/core/workers/chunks/78085f804969c9282700.js +1 -0
- package/assets/esri/core/workers/chunks/7aa9b61ca9b66f30449f.js +1 -0
- package/assets/esri/core/workers/chunks/7c56446184abcd14678b.js +1 -0
- package/assets/esri/core/workers/chunks/7e41cee4a0ae75e1490d.js +1 -0
- package/assets/esri/core/workers/chunks/7f55a150e4da02786311.js +1 -0
- package/assets/esri/core/workers/chunks/847b02d188ece9b563ad.js +1 -0
- package/assets/esri/core/workers/chunks/86c3d3c7015f1cd55fac.js +1 -0
- package/assets/esri/core/workers/chunks/87e0ceb1a64ab08e679a.js +1 -0
- package/assets/esri/core/workers/chunks/903c7bd079888f65fef1.js +1 -0
- package/assets/esri/core/workers/chunks/9226205850e35b7fc610.js +1 -0
- package/assets/esri/core/workers/chunks/94453d075ce02eff4844.js +1 -0
- package/assets/esri/core/workers/chunks/9474c913e53f69679197.js +1 -0
- package/assets/esri/core/workers/chunks/94ddfe165ac25aef8229.js +1 -0
- package/assets/esri/core/workers/chunks/{75a2c43311f5f9058f62.js → 94f62ff81cc6fb83e73f.js} +1 -1
- package/assets/esri/core/workers/chunks/95ccac3734ac70387b03.js +1 -0
- package/assets/esri/core/workers/chunks/97c7dfd29ad4c2966cb4.js +1 -0
- package/assets/esri/core/workers/chunks/{1354b8442c2c501238f1.js → 986c5024f22bbfc49aba.js} +1 -1
- package/assets/esri/core/workers/chunks/9b81bd62a2c72f592db1.js +1 -0
- package/assets/esri/core/workers/chunks/{62596065747abce1964d.js → 9b8e33985310f281f084.js} +1 -1
- package/assets/esri/core/workers/chunks/9e2b3754a76e0dd4a94a.js +1 -0
- package/assets/esri/core/workers/chunks/a03e7333e3328036f478.js +1 -0
- package/assets/esri/core/workers/chunks/a0565137027c83108953.js +1 -0
- package/assets/esri/core/workers/chunks/a176727a1148ca4fb432.js +1 -0
- package/assets/esri/core/workers/chunks/a3b403f8acb90af19adb.js +1 -0
- package/assets/esri/core/workers/chunks/a4596f028758649da099.js +1 -0
- package/assets/esri/core/workers/chunks/a46ac0be9aabc4cfedc7.js +1 -0
- package/assets/esri/core/workers/chunks/a4a22149077c7780481c.js +1 -0
- package/assets/esri/core/workers/chunks/a6ab627e965fe7e5bd52.js +1 -0
- package/assets/esri/core/workers/chunks/a6d4132a16c51323a38a.js +1 -0
- package/assets/esri/core/workers/chunks/a7954ad55a241af9064f.js +1 -0
- package/assets/esri/core/workers/chunks/a7e6382ecc91c876117f.js +1 -0
- package/assets/esri/core/workers/chunks/a88bf8ae93077e1b48cf.js +1 -0
- package/assets/esri/core/workers/chunks/a8b878c12cb1a6ea012b.js +1 -0
- package/assets/esri/core/workers/chunks/{ec0803cfa5051c4d300d.js → aa0ef4493a7e9bed159f.js} +1 -1
- package/assets/esri/core/workers/chunks/aa8ab28e0c1ae3b55ac0.js +1 -0
- package/assets/esri/core/workers/chunks/add834f867900a7091d2.js +1 -0
- package/assets/esri/core/workers/chunks/{bbf4c2ee4d56bb0f1a81.js → afa6b74d9ca9ed0154af.js} +1 -1
- package/assets/esri/core/workers/chunks/b0e25ccb5a1e57a82628.js +1 -0
- package/assets/esri/core/workers/chunks/b17a9853250ab626d58d.js +1 -0
- package/assets/esri/core/workers/chunks/b19cff0e43fab2632660.js +1 -0
- package/assets/esri/core/workers/chunks/b2e2234fdf8e05bc3312.js +1 -0
- package/assets/esri/core/workers/chunks/b6063d1755def00d4889.js +1 -0
- package/assets/esri/core/workers/chunks/bb56ab53c5a10c9518a6.js +1 -0
- package/assets/esri/core/workers/chunks/bd1a7e95a797e1ed4a7b.js +1 -0
- package/assets/esri/core/workers/chunks/bd2602195e265f8fdb15.js +1 -0
- package/assets/esri/core/workers/chunks/bdfffa5f88b559a4b42d.js +1 -0
- package/assets/esri/core/workers/chunks/{f762f0f6c83748d8e328.js → bee411f08e2a9499f8f5.js} +1 -1
- package/assets/esri/core/workers/chunks/bf11319138facf44752c.js +1 -0
- package/assets/esri/core/workers/chunks/bf357afbabaa8dec4d75.js +1 -0
- package/assets/esri/core/workers/chunks/bf7875fda48b15271a10.js +1 -0
- package/assets/esri/core/workers/chunks/bfa59005a9b191d18546.js +1 -0
- package/assets/esri/core/workers/chunks/bfb8fc6b940bd5510e29.js +1 -0
- package/assets/esri/core/workers/chunks/{b311658b8a223efe35d6.js → c0e073a77484b0dfd383.js} +1 -1
- package/assets/esri/core/workers/chunks/c13aa45ccd5efb662f88.js +1 -0
- package/assets/esri/core/workers/chunks/c176df477bbbbc9c6922.js +1 -0
- package/assets/esri/core/workers/chunks/{073224c6ac77dc9e97af.js → c23943e51734254d31e8.js} +1 -1
- package/assets/esri/core/workers/chunks/c35553d07ad169910742.js +1 -0
- package/assets/esri/core/workers/chunks/c4fef90cf08bbe4f0bb5.js +1 -0
- package/assets/esri/core/workers/chunks/c5c2fed38e0ccf84f1fa.js +1 -0
- package/assets/esri/core/workers/chunks/c80277a313205853a857.js +1 -0
- package/assets/esri/core/workers/chunks/c88bfa51d2a8a024fc24.js +1 -0
- package/assets/esri/core/workers/chunks/c91042f8bf886056a29c.js +1 -0
- package/assets/esri/core/workers/chunks/ca204c110438f7315790.js +1 -0
- package/assets/esri/core/workers/chunks/ca36d85a47179d95f2fc.js +1 -0
- package/assets/esri/core/workers/chunks/cb6fb04fe5c8d90d4196.js +1 -0
- package/assets/esri/core/workers/chunks/ccaeabc3be07f3c96f50.js +1 -0
- package/assets/esri/core/workers/chunks/{85f459297b0214141d43.js → cd02a6078443b8f63927.js} +1 -1
- package/assets/esri/core/workers/chunks/{3a36c132ceddef3d15c8.js → cdbcc4cd9145dd93db49.js} +1 -1
- package/assets/esri/core/workers/chunks/{e90feee1756a2209f93f.js → ce9fe1a89b474f9e7ee7.js} +1 -1
- package/assets/esri/core/workers/chunks/d0cf9ff48f051adbd455.js +1 -0
- package/assets/esri/core/workers/chunks/d119671a32a050517cca.js +1 -0
- package/assets/esri/core/workers/chunks/d26be8313526ecea9c68.js +1 -0
- package/assets/esri/core/workers/chunks/d270b49c037085503016.js +1 -0
- package/assets/esri/core/workers/chunks/{f5eee6e548bb24b5a003.js → d30a7fc8dab4ebb8893b.js} +1 -1
- package/assets/esri/core/workers/chunks/d344c3fd9f6b113bbcd7.js +1 -0
- package/assets/esri/core/workers/chunks/d36bbda9b7261534568f.js +1 -0
- package/assets/esri/core/workers/chunks/d4b0012ae1d3b8a9ba01.js +1 -0
- package/assets/esri/core/workers/chunks/d58d6b55b2749a535eb3.js +1 -0
- package/assets/esri/core/workers/chunks/d6f7aa280f1bd201d4ef.js +1 -0
- package/assets/esri/core/workers/chunks/{60f490afdbe299f89669.js → d871572997600930e017.js} +1 -1
- package/assets/esri/core/workers/chunks/da9aacdb0b4a04f42fb8.js +1 -0
- package/assets/esri/core/workers/chunks/daf7b647bd960d8bad56.js +1 -0
- package/assets/esri/core/workers/chunks/{10ac92dcd3738ec23dfb.js → db04c1bad40d068306ba.js} +1 -1
- package/assets/esri/core/workers/chunks/{3427f0c026301bcf7272.js → db180f8d25471cfa48af.js} +1 -1
- package/assets/esri/core/workers/chunks/ddf284648a73b6993737.js +1 -0
- package/assets/esri/core/workers/chunks/dfbe0efe453587ec5eb2.js +1 -0
- package/assets/esri/core/workers/chunks/e1682e94cc714197ebb4.js +1 -0
- package/assets/esri/core/workers/chunks/e2576c37cf13dc421f69.js +1 -0
- package/assets/esri/core/workers/chunks/e370a3337b3c90240e73.js +1 -0
- package/assets/esri/core/workers/chunks/e39bccc000c768120a32.js +1 -0
- package/assets/esri/core/workers/chunks/e40e08029325f43452d0.js +1 -0
- package/assets/esri/core/workers/chunks/e50adcfb392adfb3f79c.js +1 -0
- package/assets/esri/core/workers/chunks/{0d7d54e74b5639a0be6e.js → e707534a700a2de687ca.js} +1 -1
- package/assets/esri/core/workers/chunks/e823c9ccb7bc348d8824.js +1 -0
- package/assets/esri/core/workers/chunks/e88eee4c2fc4229c2a8b.js +1 -0
- package/assets/esri/core/workers/chunks/e9f29019aa78f07ace66.js +1 -0
- package/assets/esri/core/workers/chunks/ea75c23c44452f45a949.js +1 -0
- package/assets/esri/core/workers/chunks/ea91c57a0b31f3f65ee5.js +1 -0
- package/assets/esri/core/workers/chunks/eda04911553cf99fb99b.js +1 -0
- package/assets/esri/core/workers/chunks/ee77999df3785468b2b6.js +1 -0
- package/assets/esri/core/workers/chunks/ef851a2cff76fd211c07.js +1 -0
- package/assets/esri/core/workers/chunks/f106cc7f559856f69b9f.js +1 -0
- package/assets/esri/core/workers/chunks/f247f3c5148fa0237a7c.js +1 -0
- package/assets/esri/core/workers/chunks/{a26dc2647a15b830390e.js → f253875feb11883deb84.js} +1 -1
- package/assets/esri/core/workers/chunks/f3716ce04d09af31cfb1.js +1 -0
- package/assets/esri/core/workers/chunks/f3d57c5b9dffd12e45b4.js +1 -0
- package/assets/esri/core/workers/chunks/f3e53be08ab9dbdf17ae.js +1 -0
- package/assets/esri/core/workers/chunks/f43ae1c2f89e1c4396cc.js +1 -0
- package/assets/esri/core/workers/chunks/f60ed579981913d44675.js +1 -0
- package/assets/esri/core/workers/chunks/{147d1e7e2852a4197e5f.js → f665fb4c5633e0a459d8.js} +1 -1
- package/assets/esri/core/workers/chunks/f66e597e524b26e61cd3.js +1 -0
- package/assets/esri/core/workers/chunks/{bec140a69cfdb0519680.js → f74c7cbe4bd12f73ae90.js} +1 -1
- package/assets/esri/core/workers/chunks/{e6f6b38eda34708d61c5.js → f7f2102b16d201e5f531.js} +1 -1
- package/assets/esri/core/workers/chunks/f82ae237452b97cfc024.js +1 -0
- package/assets/esri/core/workers/chunks/f83c3597e9332bd991eb.js +1 -0
- package/assets/esri/core/workers/chunks/f8a6d8cdcabcd1d511b6.js +1 -0
- package/assets/esri/core/workers/chunks/f8f7b86bbd62106bc3d4.js +1 -0
- package/assets/esri/core/workers/chunks/f9a4387f850d85c44ca5.js +1 -0
- package/assets/esri/core/workers/chunks/fbc7576ed12964059da6.js +1 -0
- package/assets/esri/core/workers/chunks/fdd0e6d9927d3c43b0d3.js +1 -0
- package/assets/esri/core/workers/chunks/fddcb8be714ad18ad0c8.js +1 -0
- package/assets/esri/core/workers/chunks/{baa46edd87e97f922128.js → ffe749d790320dddfa74.js} +1 -1
- package/chunks/Bufferer-CclWhXVb.js +1 -1
- package/chunks/Distance2DCalculator-DjIp2uQi.js +1 -1
- package/chunks/Envelope.js +1 -1
- package/chunks/GeodeticDistanceCalculator-zRp89-dW.js +1 -1
- package/chunks/GeodeticUtils.js +1 -1
- package/chunks/GeographicTransformation.js +1 -1
- package/chunks/Geometry.js +1 -1
- package/chunks/GlowComposite.glsl.js +9 -7
- package/chunks/MultiPathImpl.js +1 -1
- package/chunks/OperatorCentroid2D.js +1 -1
- package/chunks/OperatorContains.js +2 -0
- package/chunks/OperatorCrosses.js +1 -1
- package/chunks/OperatorCut.js +1 -1
- package/chunks/OperatorDisjoint.js +2 -0
- package/chunks/OperatorDistance.js +2 -0
- package/chunks/OperatorEquals.js +2 -0
- package/chunks/OperatorGeodesicBuffer.js +1 -1
- package/chunks/OperatorGeodeticArea.js +1 -1
- package/chunks/OperatorGeodeticDensifyByLength.js +1 -1
- package/chunks/OperatorGeodeticLength.js +1 -1
- package/chunks/OperatorGraphicBuffer.js +1 -1
- package/chunks/OperatorIntegrate.js +1 -1
- package/chunks/OperatorIntersects.js +1 -1
- package/chunks/OperatorMultiPartToSinglePart.js +1 -1
- package/chunks/OperatorOverlaps.js +1 -1
- package/chunks/OperatorProximity.js +1 -1
- package/chunks/OperatorProximityGeodesic.js +1 -1
- package/chunks/OperatorRelate.js +2 -0
- package/chunks/OperatorShapePreservingLength.js +1 -1
- package/chunks/OperatorShapePreservingProject.js +1 -1
- package/chunks/OperatorSimplifyOGC.js +1 -1
- package/chunks/OperatorTouches.js +1 -1
- package/chunks/OperatorWithin.js +1 -1
- package/chunks/Point2D.js +1 -1
- package/chunks/ProjectionTransformation.js +1 -1
- package/chunks/SideCalculator2D-DX0718xq.js +1 -1
- package/chunks/UnitFactory.js +1 -1
- package/chunks/aiServices.js +1 -1
- package/chunks/array.js +1 -1
- package/chunks/boundedPlane.js +1 -1
- package/chunks/cameraUtilsSpherical.js +1 -1
- package/chunks/languageUtils.js +1 -1
- package/config.js +1 -1
- package/core/accessorSupport/Property.js +1 -1
- package/core/sql/TimeOnly.js +1 -1
- package/core/units.js +1 -1
- package/editing/sharedTemplates/executor/builders/bufferLineToPolygon.js +1 -1
- package/editing/sharedTemplates/executor/builders/bufferPointToPolygon.js +1 -1
- package/editing/sharedTemplates/executor/builders/bufferPolygonToPolygon.js +1 -1
- package/editing/sharedTemplates/executor/builders/pointAtIntersectionVerticesOfLine.js +1 -1
- package/editing/sharedTemplates/executor/builders/support/offsetUtils.js +1 -1
- package/form/elements/inputs/inputUtils.js +1 -1
- package/geometry/operators/areaOperator.js +1 -1
- package/geometry/operators/bufferOperator.js +1 -1
- package/geometry/operators/centroidOperator.js +1 -1
- package/geometry/operators/clipOperator.js +1 -1
- package/geometry/operators/containsOperator.js +1 -1
- package/geometry/operators/convexHullOperator.js +1 -1
- package/geometry/operators/crossesOperator.js +1 -1
- package/geometry/operators/cutOperator.js +1 -1
- package/geometry/operators/densifyOperator.js +1 -1
- package/geometry/operators/differenceOperator.js +1 -1
- package/geometry/operators/disjointOperator.js +1 -1
- package/geometry/operators/distanceOperator.js +1 -1
- package/geometry/operators/equalsOperator.js +1 -1
- package/geometry/operators/generalizeOperator.js +1 -1
- package/geometry/operators/geodesicBufferOperator.js +1 -1
- package/geometry/operators/geodeticAreaOperator.js +1 -1
- package/geometry/operators/geodeticDensifyOperator.js +1 -1
- package/geometry/operators/geodeticDistanceOperator.js +1 -1
- package/geometry/operators/geodeticLengthOperator.js +1 -1
- package/geometry/operators/gx/operatorAutoComplete.js +1 -1
- package/geometry/operators/gx/operatorBuffer.js +1 -1
- package/geometry/operators/gx/operatorDifference.js +1 -1
- package/geometry/operators/gx/operatorIntersection.js +1 -1
- package/geometry/operators/gx/operatorLabelPoint.js +1 -1
- package/geometry/operators/gx/operatorLinesToPolygons.js +1 -1
- package/geometry/operators/gx/operatorPolygonOverlay.js +1 -1
- package/geometry/operators/gx/operatorSimplify.js +1 -1
- package/geometry/operators/gx/operatorSymmetricDifference.js +1 -1
- package/geometry/operators/gx/operatorUnion.js +1 -1
- package/geometry/operators/intersectionOperator.js +1 -1
- package/geometry/operators/intersectsOperator.js +1 -1
- package/geometry/operators/json/containsOperator.js +1 -1
- package/geometry/operators/json/crossesOperator.js +1 -1
- package/geometry/operators/json/disjointOperator.js +1 -1
- package/geometry/operators/json/intersectsOperator.js +1 -1
- package/geometry/operators/json/overlapsOperator.js +1 -1
- package/geometry/operators/json/touchesOperator.js +1 -1
- package/geometry/operators/json/unionOperator.js +1 -1
- package/geometry/operators/json/withinOperator.js +1 -1
- package/geometry/operators/labelPointOperator.js +1 -1
- package/geometry/operators/lengthOperator.js +1 -1
- package/geometry/operators/multiPartToSinglePartOperator.js +1 -1
- package/geometry/operators/offsetOperator.js +1 -1
- package/geometry/operators/overlapsOperator.js +1 -1
- package/geometry/operators/proximityOperator.js +1 -1
- package/geometry/operators/relateOperator.js +1 -1
- package/geometry/operators/reshapeOperator.js +1 -1
- package/geometry/operators/simplifyOGCOperator.js +1 -1
- package/geometry/operators/simplifyOperator.js +1 -1
- package/geometry/operators/support/apiConverter.js +1 -1
- package/geometry/operators/support/jsonConverter.js +1 -1
- package/geometry/operators/support/projectionTransformation.js +1 -1
- package/geometry/operators/symmetricDifferenceOperator.js +1 -1
- package/geometry/operators/touchesOperator.js +1 -1
- package/geometry/operators/unionOperator.js +1 -1
- package/geometry/operators/withinOperator.js +1 -1
- package/geometry/support/convexPolyhedron.js +1 -1
- package/geometry/support/curves/circleUtils.js +1 -1
- package/geometry/support/curves/ellipticArc7Utils.js +1 -1
- package/geometry/support/frustum.js +1 -1
- package/geometry/support/plane.js +1 -1
- package/geometry/support/webMercatorUtils.js +1 -1
- package/kernel.js +1 -1
- package/layers/VectorTileLayer.js +1 -1
- package/layers/graphics/data/FlatFeatureStore.js +1 -1
- package/layers/graphics/data/QueryEngine.js +1 -1
- package/layers/graphics/hydratedFeatures.js +1 -1
- package/layers/mixins/DataSeriesLayer.js +1 -1
- package/layers/support/csvUtils.js +1 -1
- package/layers/support/fieldUtils.js +1 -1
- package/layers/video/VideoController.js +1 -1
- package/package.json +4 -4
- package/support/ArcadeExpression.js +1 -1
- package/support/arcadeUtils.js +1 -1
- package/support/loadArcade.js +1 -1
- package/support/revision.js +1 -1
- package/support/tests/serviceMockDependencies.js +1 -1
- package/views/2d/analysis/AreaMeasurement/AreaMeasurementController.js +1 -1
- package/views/2d/analysis/DistanceMeasurement/DistanceMeasurementController.js +1 -1
- package/views/2d/engine/vectorTiles/TileManager.js +1 -1
- package/views/2d/engine/webgl/util/Fader.js +1 -1
- package/views/2d/layers/features/support/FeatureSetReader.js +1 -1
- package/views/2d/layers/support/RouteLayerWaypointVisualization.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightConfiguration.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightManipulators.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightVisualization.js +1 -1
- package/views/3d/analysis/ShadowCastAnalysisView3D.js +1 -1
- package/views/3d/analysis/VolumeMeasurement/VolumeMeasurementController.js +1 -1
- package/views/3d/input/SceneInputManager.js +1 -1
- package/views/3d/input/handlers/RopePullNavigation.js +2 -0
- package/views/3d/layers/I3SMeshView3D.js +1 -1
- package/views/3d/layers/IntegratedMeshNormals.js +1 -1
- package/views/3d/layers/TiledLayerView3D.js +1 -1
- package/views/3d/layers/graphics/featureExpressionInfoUtils.js +1 -1
- package/views/3d/layers/i3s/I3SNode.js +1 -1
- package/views/3d/layers/i3s/I3SViewportQueries.js +1 -1
- package/views/3d/layers/i3s/SweptSphereVolume.js +1 -1
- package/views/3d/layers/support/FeatureTileVisibility3D.js +1 -1
- package/views/3d/layers/support/IntegratedMesh3DTilesVertexProcessing.js +1 -1
- package/views/3d/state/Frustum.js +1 -1
- package/views/3d/state/controllers/RopePullController.js +2 -0
- package/views/3d/state/utils/ropePullUtils.js +1 -1
- package/views/3d/support/ElevationAgnosticVisibility.js +1 -1
- package/views/3d/support/sphericalTileUtils.js +1 -1
- package/views/3d/terrain/PlanarPatch.js +1 -1
- package/views/3d/terrain/SphericalPatch.js +1 -1
- package/views/3d/terrain/Tile.js +1 -1
- package/views/3d/webgl-engine/effects/RenderPluginManager.js +1 -1
- package/views/3d/webgl-engine/lib/Geometry.js +1 -1
- package/views/3d/webgl-engine/lib/LineMaterial.js +2 -0
- package/views/3d/webgl-engine/lib/Material.js +1 -1
- package/views/3d/webgl-engine/lib/PointMaterial.js +2 -0
- package/views/3d/webgl-engine/lib/RenderGeometry.js +1 -1
- package/views/3d/webgl-engine/lib/SortedRenderGeometryRenderer.js +1 -1
- package/views/3d/webgl-engine/materials/HUDMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/HeatmapDensityMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/LineCalloutMaterial.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/SelectionManager.js +1 -1
- package/views/draw/DrawTool.js +1 -1
- package/views/draw/support/createUtils.js +1 -1
- package/views/interactive/editGeometry/operations/OffsetEdgeVertex.js +1 -1
- package/views/interactive/sketch/constraints.js +1 -1
- package/views/popupAdapter.js +1 -1
- package/views/support/GeometryWorker.js +1 -1
- package/views/support/geometry3dUtils.js +1 -1
- package/views/support/selectionUtils.js +1 -1
- package/widgets/AreaMeasurement2D/AreaMeasurement2DTool.js +1 -1
- package/widgets/BatchAttributeForm/expressions/ArcadeExecutorProvider.js +1 -1
- package/widgets/BatchAttributeForm/templates/FieldElementTemplate.js +1 -1
- package/widgets/BatchAttributeForm/templates/support/createBatchFormTemplate.js +1 -1
- package/widgets/BatchAttributeForm/templates/support/hashElementTemplate.js +1 -1
- package/widgets/DistanceMeasurement2D/DistanceMeasurement2DTool.js +1 -1
- package/widgets/FeatureTable/support/types.d.ts +3 -1
- package/widgets/OrientedImageryViewer/adapters/view/MapViewAdapter.js +1 -1
- package/widgets/OrientedImageryViewer/components/ImageViewerViewModel.js +1 -1
- package/widgets/OrientedImageryViewer/components/OrientedImageryVideoViewModel.js +1 -1
- package/widgets/OrientedImageryViewer/imageMeasurementUtils.js +1 -1
- package/widgets/OrientedImageryViewer/support/panConstraint.js +1 -1
- package/widgets/OrientedImageryViewer/support/superimposeUtils.js +1 -1
- package/widgets/OrientedImageryViewer/videoViewerUtils.js +1 -1
- package/widgets/UtilityNetworkTrace/support/GeometryHandler.js +1 -1
- package/widgets/support/SelectionList/selectionListUtils.d.ts +58 -0
- package/widgets/support/SelectionToolbar/SelectionToolbarViewModel.js +1 -1
- package/widgets/support/Selector2D/selectorUtils.js +1 -1
- package/arcade/kernel.js +0 -2
- package/assets/esri/core/workers/chunks/01b7babaefe6500fd6eb.js +0 -1
- package/assets/esri/core/workers/chunks/06e109e92de7fa0956e3.js +0 -1
- package/assets/esri/core/workers/chunks/0775d1e3034d5e7ef7bc.js +0 -1
- package/assets/esri/core/workers/chunks/0993e51d3a9701ed2198.js +0 -1
- package/assets/esri/core/workers/chunks/09a0a1e794ddff65aa08.js +0 -1
- package/assets/esri/core/workers/chunks/0e57d33bd202d0972207.js +0 -1
- package/assets/esri/core/workers/chunks/114ba901fd319ce87dc6.js +0 -1
- package/assets/esri/core/workers/chunks/12a3b55195ce3244259d.js +0 -1
- package/assets/esri/core/workers/chunks/151bac9e519a3b821baf.js +0 -1
- package/assets/esri/core/workers/chunks/156f85ac1885464f0072.js +0 -1
- package/assets/esri/core/workers/chunks/180eebd8b7badc2840c9.js +0 -1
- package/assets/esri/core/workers/chunks/19cb8963d5ec2246357b.js +0 -1
- package/assets/esri/core/workers/chunks/19d4ecee1c161ac0f33c.js +0 -1
- package/assets/esri/core/workers/chunks/19ece9f5313f53384cac.js +0 -1
- package/assets/esri/core/workers/chunks/1d770e8f0fe57d937daa.js +0 -1
- package/assets/esri/core/workers/chunks/1dd22b8df6a52277c64b.js +0 -1
- package/assets/esri/core/workers/chunks/1ede298ab815e9ad625c.js +0 -1
- package/assets/esri/core/workers/chunks/208bc524bd1e0d3aab79.js +0 -1
- package/assets/esri/core/workers/chunks/20a4ae83542c7d39cf0f.js +0 -1
- package/assets/esri/core/workers/chunks/21071ab3d7b2771406ae.js +0 -1
- package/assets/esri/core/workers/chunks/21bfa89363104f041101.js +0 -1
- package/assets/esri/core/workers/chunks/21d0a4d6639d32278f11.js +0 -1
- package/assets/esri/core/workers/chunks/22a75fdc6ba60213a870.js +0 -1
- package/assets/esri/core/workers/chunks/22e004ed97e06536ecef.js +0 -1
- package/assets/esri/core/workers/chunks/23942712a3f6290e0fdb.js +0 -1
- package/assets/esri/core/workers/chunks/242287de82586d42f0a4.js +0 -1
- package/assets/esri/core/workers/chunks/25cb5086eaa412f6820b.js +0 -1
- package/assets/esri/core/workers/chunks/26c8ed0aef59ed6d5267.js +0 -1
- package/assets/esri/core/workers/chunks/2742d62fceaf0736aef0.js +0 -1
- package/assets/esri/core/workers/chunks/276eba546dc8774076ee.js +0 -1
- package/assets/esri/core/workers/chunks/28e02b213da9e682d3dc.js +0 -29
- package/assets/esri/core/workers/chunks/2d8195231cb16247f198.js +0 -1
- package/assets/esri/core/workers/chunks/2db1227ecd421728630d.js +0 -1
- package/assets/esri/core/workers/chunks/2ddc9c9ff6ec243d85e2.js +0 -1
- package/assets/esri/core/workers/chunks/2e712154ebb895d96ba1.js +0 -1
- package/assets/esri/core/workers/chunks/2f2df51d4976ae65edae.js +0 -1
- package/assets/esri/core/workers/chunks/32d31fd4cffdf5a80acb.js +0 -1
- package/assets/esri/core/workers/chunks/33aaa5a49e396a0aca47.js +0 -1
- package/assets/esri/core/workers/chunks/35622088727e120c93b9.js +0 -1
- package/assets/esri/core/workers/chunks/3714cc26f446c4d9cc2c.js +0 -1
- package/assets/esri/core/workers/chunks/3722d40d161d60370936.js +0 -1
- package/assets/esri/core/workers/chunks/3ac4cfeb1af12a9dc27d.js +0 -1
- package/assets/esri/core/workers/chunks/3b009c05eaec5a7048a8.js +0 -1
- package/assets/esri/core/workers/chunks/3b376318df4ff8519370.js +0 -1
- package/assets/esri/core/workers/chunks/3bf37fd3280f4891c76b.js +0 -1
- package/assets/esri/core/workers/chunks/3d18a10a1ecfabe92db3.js +0 -1
- package/assets/esri/core/workers/chunks/3de20165796fa4f76728.js +0 -1
- package/assets/esri/core/workers/chunks/3fbd4c7e25440c4713f2.js +0 -1
- package/assets/esri/core/workers/chunks/407dba2be21255eb47fc.js +0 -1
- package/assets/esri/core/workers/chunks/414093fa4957d17bf551.js +0 -1
- package/assets/esri/core/workers/chunks/44b1a4e8a65221ad3808.js +0 -1
- package/assets/esri/core/workers/chunks/48b31b8534e7bfe42976.js +0 -1
- package/assets/esri/core/workers/chunks/48f6af09436723f2d861.js +0 -1
- package/assets/esri/core/workers/chunks/49e37f653b81f9e4f7cc.js +0 -1
- package/assets/esri/core/workers/chunks/4b4221a869b3f0d517fa.js +0 -1
- package/assets/esri/core/workers/chunks/4b86bcde5992eb752ab0.js +0 -1
- package/assets/esri/core/workers/chunks/4b9095e2bd060efd47c4.js +0 -1
- package/assets/esri/core/workers/chunks/5084de4d0d4961b63ab7.js +0 -1
- package/assets/esri/core/workers/chunks/51a8a47aac1d8d22ba9d.js +0 -1
- package/assets/esri/core/workers/chunks/5324e4feb78203204c0c.js +0 -1
- package/assets/esri/core/workers/chunks/5536cee0dfc183584a9b.js +0 -1
- package/assets/esri/core/workers/chunks/58d10928959ae1e2e8d9.js +0 -1
- package/assets/esri/core/workers/chunks/597a8e3d9e458298fdd3.js +0 -1
- package/assets/esri/core/workers/chunks/5a006ff759fad9fc25cb.js +0 -1
- package/assets/esri/core/workers/chunks/60be6de19c5659091d8f.js +0 -1
- package/assets/esri/core/workers/chunks/61a38237e163b39520e5.js +0 -1
- package/assets/esri/core/workers/chunks/61fcdba6f2097378dce5.js +0 -1
- package/assets/esri/core/workers/chunks/6561c01c67db1f4c546e.js +0 -1
- package/assets/esri/core/workers/chunks/65eff0ae773505495f21.js +0 -1
- package/assets/esri/core/workers/chunks/67452ba9e87962b9e01e.js +0 -1
- package/assets/esri/core/workers/chunks/68195277046861ed39a7.js +0 -1
- package/assets/esri/core/workers/chunks/68705692335d57522030.js +0 -1
- package/assets/esri/core/workers/chunks/6a2a4da3a1cd64ff576f.js +0 -1
- package/assets/esri/core/workers/chunks/6af1680771fd8ae8c7dc.js +0 -1
- package/assets/esri/core/workers/chunks/6c367de583e0e657ca3a.js +0 -1
- package/assets/esri/core/workers/chunks/6d2021a0f0c9a3c6a0e6.js +0 -1
- package/assets/esri/core/workers/chunks/6db4a4f9a9ce7cc738d0.js +0 -1
- package/assets/esri/core/workers/chunks/6f2a9259240769c7cd6e.js +0 -1
- package/assets/esri/core/workers/chunks/724260e36efea90585f4.js +0 -1
- package/assets/esri/core/workers/chunks/74ae1222787389d5fcaa.js +0 -1
- package/assets/esri/core/workers/chunks/74bfaa98da6c5d375f05.js +0 -1
- package/assets/esri/core/workers/chunks/7a68a16f7fea712b9fd6.js +0 -1
- package/assets/esri/core/workers/chunks/7b2174b19d06c16715f0.js +0 -1
- package/assets/esri/core/workers/chunks/7d8e59ad438fb34b476d.js +0 -1
- package/assets/esri/core/workers/chunks/7eb94fc75926bc739233.js +0 -1
- package/assets/esri/core/workers/chunks/80795118467fb31ea4ed.js +0 -1
- package/assets/esri/core/workers/chunks/820c530b8765ecb1f36e.js +0 -1
- package/assets/esri/core/workers/chunks/830daaca32352da6eebe.js +0 -1
- package/assets/esri/core/workers/chunks/852649460d664b0a1a1d.js +0 -1
- package/assets/esri/core/workers/chunks/85c538bf1209f0da1f8e.js +0 -1
- package/assets/esri/core/workers/chunks/8c2921081ca3e7fd0385.js +0 -1
- package/assets/esri/core/workers/chunks/8db3fd97e8eccd3ba1db.js +0 -1
- package/assets/esri/core/workers/chunks/8e225dd0319672103561.js +0 -1
- package/assets/esri/core/workers/chunks/8e79a84e224d05204e7d.js +0 -1
- package/assets/esri/core/workers/chunks/8e9aff66a2d4e2cc102b.js +0 -1
- package/assets/esri/core/workers/chunks/917318f8e186f466dc52.js +0 -1
- package/assets/esri/core/workers/chunks/9267f6a65c2245696eac.js +0 -1
- package/assets/esri/core/workers/chunks/9407db0584c730591161.js +0 -1
- package/assets/esri/core/workers/chunks/958e161634b5bfd50625.js +0 -1
- package/assets/esri/core/workers/chunks/9658b46a7111cda53b0d.js +0 -1
- package/assets/esri/core/workers/chunks/974bcaf2a059b8cfb153.js +0 -1
- package/assets/esri/core/workers/chunks/99881d0a6c2490a16268.js +0 -1
- package/assets/esri/core/workers/chunks/99980c944acb8ff88d6a.js +0 -1
- package/assets/esri/core/workers/chunks/9c227785f4454d3966ea.js +0 -1
- package/assets/esri/core/workers/chunks/9d61d9136f3d00aab530.js +0 -1
- package/assets/esri/core/workers/chunks/9df2685583393a87df2d.js +0 -1
- package/assets/esri/core/workers/chunks/9e840a71906c4deef776.js +0 -1
- package/assets/esri/core/workers/chunks/9ee6e8a6b9bfda758c21.js +0 -1
- package/assets/esri/core/workers/chunks/a03f4605bde69bfb6d41.js +0 -1
- package/assets/esri/core/workers/chunks/a327843cee2057ee76c0.js +0 -1
- package/assets/esri/core/workers/chunks/a557347fb313df6fcc79.js +0 -1
- package/assets/esri/core/workers/chunks/a8da0728a12fc46dca23.js +0 -1
- package/assets/esri/core/workers/chunks/a9ea28e0f22cfe3ccf92.js +0 -1
- package/assets/esri/core/workers/chunks/aae92f23b38ae22dd8bf.js +0 -1
- package/assets/esri/core/workers/chunks/ad3714da9c90d7471385.js +0 -1
- package/assets/esri/core/workers/chunks/b047f9e9ba26037657ed.js +0 -1
- package/assets/esri/core/workers/chunks/b1323800119bd5c1759b.js +0 -1
- package/assets/esri/core/workers/chunks/b18c35f25da18a3219d7.js +0 -1
- package/assets/esri/core/workers/chunks/b1f68ee65cce457d7b5b.js +0 -1
- package/assets/esri/core/workers/chunks/b2d6fd436981c890152f.js +0 -1
- package/assets/esri/core/workers/chunks/b3c518ca8679fbe16ece.js +0 -1
- package/assets/esri/core/workers/chunks/b4b4fe06364bea9b0750.js +0 -1
- package/assets/esri/core/workers/chunks/b61b7005edd9ced925e9.js +0 -1
- package/assets/esri/core/workers/chunks/b661aae7e3ce955a783e.js +0 -1
- package/assets/esri/core/workers/chunks/b66ebe53bd879aa9de57.js +0 -1
- package/assets/esri/core/workers/chunks/b8ca80134abfcc692244.js +0 -1
- package/assets/esri/core/workers/chunks/bbdf10d76d852072c878.js +0 -1
- package/assets/esri/core/workers/chunks/bbeb61d9302323bae9fb.js +0 -1
- package/assets/esri/core/workers/chunks/bbfd2b4af8e498b61af9.js +0 -1
- package/assets/esri/core/workers/chunks/bdafd4f03585351cecc3.js +0 -1
- package/assets/esri/core/workers/chunks/bddd5aa7a14cd45ff91c.js +0 -1
- package/assets/esri/core/workers/chunks/be31c2cb97f664a54306.js +0 -1
- package/assets/esri/core/workers/chunks/be4319827db91aa71bf5.js +0 -1
- package/assets/esri/core/workers/chunks/bef32acf368b4d5aba37.js +0 -1
- package/assets/esri/core/workers/chunks/c1568bcd3f04014152e1.js +0 -1
- package/assets/esri/core/workers/chunks/c1a7c475ce0c59ffa75a.js +0 -1
- package/assets/esri/core/workers/chunks/c229a4eedda468c914a9.js +0 -1
- package/assets/esri/core/workers/chunks/c2b2942456f1b10d0e96.js +0 -1
- package/assets/esri/core/workers/chunks/c308d8f419ba63c583e6.js +0 -1
- package/assets/esri/core/workers/chunks/c5dc2743c7116d0bc0d8.js +0 -1
- package/assets/esri/core/workers/chunks/c68cc3b9c170b8de22dc.js +0 -1
- package/assets/esri/core/workers/chunks/c6ef0636073e28350c91.js +0 -1
- package/assets/esri/core/workers/chunks/c71368cd64f240da1743.js +0 -1
- package/assets/esri/core/workers/chunks/cb2f27e5d465124b9868.js +0 -1
- package/assets/esri/core/workers/chunks/cee2f7f3b3f84688e49d.js +0 -1
- package/assets/esri/core/workers/chunks/d0942860a53b02371e94.js +0 -1
- package/assets/esri/core/workers/chunks/d13eeff678972a245d5d.js +0 -1
- package/assets/esri/core/workers/chunks/d3d7b4cd28a0dc2720d4.js +0 -1
- package/assets/esri/core/workers/chunks/d3ea7ac6fe71c95faa75.js +0 -1
- package/assets/esri/core/workers/chunks/d41e4498aaf4970f48b0.js +0 -1
- package/assets/esri/core/workers/chunks/d56603e1d0031f3c5f3b.js +0 -1
- package/assets/esri/core/workers/chunks/d7c8725ffb175cec5f8a.js +0 -1
- package/assets/esri/core/workers/chunks/d96fa373dcb621c2a869.js +0 -1
- package/assets/esri/core/workers/chunks/da233362b06b6db375f1.js +0 -1
- package/assets/esri/core/workers/chunks/dbc8f15a6be835f4897d.js +0 -1
- package/assets/esri/core/workers/chunks/e00d0036974aaec7d876.js +0 -1
- package/assets/esri/core/workers/chunks/e0c75ae3a211a8da10f7.js +0 -1
- package/assets/esri/core/workers/chunks/e474106292834633e7d4.js +0 -1
- package/assets/esri/core/workers/chunks/e557043f90c051e93925.js +0 -1
- package/assets/esri/core/workers/chunks/e5cbed6f19c743915c8e.js +0 -1
- package/assets/esri/core/workers/chunks/e5ecd93bd32e99bc99d1.js +0 -1
- package/assets/esri/core/workers/chunks/e64ccdb8328eb6514e59.js +0 -1
- package/assets/esri/core/workers/chunks/eb8c4f194bb66a27d418.js +0 -1
- package/assets/esri/core/workers/chunks/ebd8c77df5df63bd3efe.js +0 -1
- package/assets/esri/core/workers/chunks/f14347f5d63f5d102617.js +0 -1
- package/assets/esri/core/workers/chunks/f3c0280b6c87f2383a60.js +0 -1
- package/assets/esri/core/workers/chunks/f42c4dcb8f413ca1c6fd.js +0 -1
- package/assets/esri/core/workers/chunks/f5773321487ec248fa3b.js +0 -1
- package/assets/esri/core/workers/chunks/f76911f71540b058a881.js +0 -1
- package/assets/esri/core/workers/chunks/f988d5a6dcc15fe34797.js +0 -1
- package/assets/esri/core/workers/chunks/fa29b5064d6626cfc019.js +0 -1
- package/assets/esri/core/workers/chunks/fa882d0f4a9826533421.js +0 -1
- package/assets/esri/core/workers/chunks/fb2d43608006f588e3cb.js +0 -1
- package/assets/esri/core/workers/chunks/fbd02e8277fe2252ecd2.js +0 -1
- package/assets/esri/core/workers/chunks/fc1aeea22f8c9d63864a.js +0 -1
- package/assets/esri/core/workers/chunks/fc3c03cfa3d6bf3b37dc.js +0 -1
- package/assets/esri/core/workers/chunks/fcf7299e2ee904ab9882.js +0 -1
- package/assets/esri/core/workers/chunks/ff07d351553deb70b889.js +0 -1
- package/assets/esri/core/workers/chunks/ffee66699f5d26569baf.js +0 -1
- package/chunks/OperatorDefinitions.js +0 -2
- package/chunks/areaOperator.js +0 -2
- package/chunks/bufferOperator.js +0 -2
- package/chunks/centroidOperator.js +0 -2
- package/chunks/clipOperator.js +0 -2
- package/chunks/containsOperator.js +0 -2
- package/chunks/convexHullOperator.js +0 -2
- package/chunks/crossesOperator.js +0 -2
- package/chunks/cutOperator.js +0 -2
- package/chunks/densifyOperator.js +0 -2
- package/chunks/differenceOperator.js +0 -2
- package/chunks/disjointOperator.js +0 -2
- package/chunks/distanceOperator.js +0 -2
- package/chunks/equalsOperator.js +0 -2
- package/chunks/generalizeOperator.js +0 -2
- package/chunks/geodesicBufferOperator.js +0 -2
- package/chunks/geodeticAreaOperator.js +0 -2
- package/chunks/geodeticDensifyOperator.js +0 -2
- package/chunks/geodeticDistanceOperator.js +0 -2
- package/chunks/geodeticLengthOperator.js +0 -2
- package/chunks/intersectionOperator.js +0 -2
- package/chunks/intersectsOperator.js +0 -2
- package/chunks/labelPointOperator.js +0 -2
- package/chunks/lengthOperator.js +0 -2
- package/chunks/multiPartToSinglePartOperator.js +0 -2
- package/chunks/offsetOperator.js +0 -2
- package/chunks/overlapsOperator.js +0 -2
- package/chunks/proximityOperator.js +0 -2
- package/chunks/relateOperator.js +0 -2
- package/chunks/simplifyOperator.js +0 -2
- package/chunks/symmetricDifferenceOperator.js +0 -2
- package/chunks/touchesOperator.js +0 -2
- package/chunks/unionOperator.js +0 -2
- package/chunks/withinOperator.js +0 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import t from"../../../Color.js";import i from"../../../Graphic.js";import{removeUnordered as s,isSome as r}from"../../../core/arrayUtils.js";import has from"../../../core/has.js";import o from"../../../core/Logger.js";import{equals as n}from"../../../core/MapUtils.js";import{destroyMaybe as a}from"../../../core/maybe.js";import l from"../../../core/PooledArray.js";import{ignoreAbortErrors as d,isAbortError as h,throwIfAborted as c}from"../../../core/promiseUtils.js";import{initial as u,watch as g}from"../../../core/reactiveUtils.js";import{schedule as m}from"../../../core/scheduling.js";import{equals as _}from"../../../core/SetUtils.js";import{isArrayBuffer as f}from"../../../core/typedArrayUtil.js";import{property as p,subclass as y}from"../../../core/accessorSupport/decorators.js";import{fromMat4 as b,exactEquals as v,invert as I}from"../../../core/libs/gl-matrix-2/math/mat3.js";import{create as C,IDENTITY as M}from"../../../core/libs/gl-matrix-2/factories/mat3f64.js";import{multiply as x,getTranslation as w}from"../../../core/libs/gl-matrix-2/math/mat4.js";import{clone as E,create as R}from"../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{fromValues as O}from"../../../core/libs/gl-matrix-2/factories/quatf64.js";import{set as S,transformMat4 as j,transformMat3 as V,sub as F,add as A,scale as D,subtract as T}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{create as H}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{set as N}from"../../../core/libs/gl-matrix-2/math/vec4.js";import{fromValues as P}from"../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{UpdatingHandles as U}from"../../../core/support/UpdatingHandles.js";import{getSphericalPCPF as k}from"../../../geometry/spatialReferenceEllipsoidUtils.js";import{localLinearScaleFactors as G}from"../../../geometry/projection/localLinearScaleFactors.js";import{projectBoundingSphere as L}from"../../../geometry/projection/projectBoundingSphere.js";import{projectBuffer as B}from"../../../geometry/projection/projectBuffer.js";import{getProjectorName as q}from"../../../geometry/projection/projectors.js";import{projectVectorToVector as z}from"../../../geometry/projection/projectVectorToVector.js";import{create as $,fromBuffer as W,toRect as K}from"../../../geometry/support/aaBoundingBox.js";import{create as Q,intersects as J}from"../../../geometry/support/aaBoundingRect.js";import{newDoubleArray as Y,ensurePackedMat4f64 as X}from"../../../geometry/support/DoubleArray.js";import{compactFloatArray as Z}from"../../../geometry/support/FloatArray.js";import{compactIndices as ee}from"../../../geometry/support/Indices.js";import{Sphere as te}from"../../../geometry/support/sphere.js";import{newUByteArray as ie}from"../../../geometry/support/UByteArray.js";import{fallbackObjectIDAttribute as se}from"../../../layers/LayerConstants.js";import re from"../../../layers/graphics/controllers/I3SOnDemandController.js";import{fixFields as oe}from"../../../layers/support/fieldUtils.js";import{I3SExtractChanges as ne}from"../../../layers/support/I3SExtractChanges.js";import ae from"../../../layers/support/SceneModification.js";import{getColor as le,getOpacity as de}from"../../../renderers/visualVariables/support/visualVariableUtils.js";import{isBasemapLayerView as he}from"../../../support/basemapUtils.js";import{getElevationOffset as ce}from"../../../support/elevationInfoUtils.js";import{loadArcade as ue}from"../../../support/loadArcade.js";import ge from"../../../symbols/MeshSymbol3D.js";import me from"../../../symbols/SimpleFillSymbol.js";import{ContentGeometryUpdateEvent as _e}from"./ContentGeometryLayerView.js";import fe from"./I3SMeshViewLabeler.js";import{I3SMeshViewPerformanceInfo as pe}from"./I3SMeshViewPerformanceInfo.js";import{initialize as ye,setModificationsSync as be,filterObbsForModificationsSync as ve,interpretObbModificationResults as Ie}from"./SceneLayerWorker.js";import{SceneLayerWorkerHandle as Ce,toWasmModification as Me}from"./SceneLayerWorkerHandle.js";import{overrideColor as xe}from"./graphics/graphicUtils.js";import{areLabelsVisible as we}from"./graphics/Labeler.js";import Ee from"./i3s/Highlights.js";import{I3SAsyncElevationUpdater as Re}from"./i3s/I3SAsyncElevationUpdater.js";import{getCachedAttributeValue as Oe}from"./i3s/I3SBinaryReader.js";import{I3SCrossfadeHelper as Se,NodeCrossfadeMetaData as je}from"./i3s/I3SCrossfadeHelper.js";import{boundingBoxCornerPoints as Ve}from"./i3s/I3SGeometryUtil.js";import{I3SIntersectionHandler as Fe,TraversedIntersectionNode as Ae}from"./i3s/I3SIntersectionHandler.js";import{getSupportedEncodings as De,selectEncoding as Te,defaultMaterial as He,createTexture as Ne,configureMaterial as Pe}from"./i3s/I3SMaterialUtil.js";import{I3SOverrides as Ue}from"./i3s/I3SOverrides.js";import{computeGlobalTransformation as ke}from"./i3s/I3SProjectionUtil.js";import{rendererNeedsTextures as Ge,checkSceneLayerValid as Le,checkSceneLayerCompatibleWithView as Be,whenGraphicAttributes as qe,computeVisibilityObb as ze,filterInPlace as $e,intersectBoundingRectWithMbs as We,addWraparound as Ke,getSymbolInfo as Qe,transparentEdgeMaterial as Je,getClipRect as Ye}from"./i3s/I3SUtil.js";import{IDBCache as Xe}from"./i3s/IDBCache.js";import{IDBMockCache as Ze}from"./i3s/IDBMockCache.js";import{LayerElevationProvider as et}from"./i3s/LayerElevationProvider.js";import{SymbologyInfo as tt}from"./i3s/SymbologyInfo.js";import{attributeLookup as it}from"./support/attributeUtils.js";import{normalizeHighlightTarget as st,emptyHighlightHandle as rt}from"./support/highlightUtils.js";import{makeScheduleFunction as ot}from"./support/makeScheduleFunction.js";import{debugFlags as nt}from"../support/debugFlags.js";import{ElevationRange as at}from"../support/ElevationRange.js";import{toBoundingRect as lt}from"../support/extentUtils.js";import{Obb as dt,ensurePackedObbData as ht}from"../support/orientedBoundingBox.js";import{updatingProgress as ct}from"../support/updatingProperties.js";import{glLayout as ut}from"../support/buffer/glUtil.js";import{ObjectParameters as gt}from"../webgl-engine/collections/Component/ObjectParameters.js";import{createVertexBufferLayout as mt,ComponentGeometryParameters as _t,SourceGeometry as ft,VertexBufferLayoutCreationParameters as pt}from"../webgl-engine/collections/Component/SourceGeometry.js";import{Transform as yt}from"../webgl-engine/collections/Component/Transform.js";import{emissiveStrengthDefault as bt}from"../webgl-engine/core/shaderLibrary/output/getEmissions.glsl.js";import{loadBasisTranscoder as vt}from"../webgl-engine/lib/BasisUtil.js";import{getHighlightName as It}from"../../support/highlightOptionsUtils.js";import{TextureCompressionTracker as Ct}from"../../support/TextureCompressionTracker.js";import{alphaCutoff as Mt}from"../../../webscene/support/AlphaCutoff.js";const xt=[1,1,1,1];class wt extends je{constructor(e,t,i,s,r,o,n,a,l,d,h){super(),this.node=e,this.featureIds=t,this.objectHandle=i,this.cachedRendererVersion=s,this.attributeInfo=r,this.material=o,this.textures=n,this.anchorIds=a,this.anchors=l,this._elevationAlignmentRange=new at,this._geometryElevationRange=new at,this.cachedElevationAnchors=null,this.cachedEdgeMaterials=new Array,this.edgeMemoryUsage=0,this.cachedSymbologyStride=5,this.elevationAlignmentOffset=0,this._baseGeometryElevationRange=new at(d,h),this.updateGeometryElevationRange()}get geometryElevationRange(){return this._geometryElevationRange}updateGeometryElevationRange(){const e=this._baseGeometryElevationRange;if(!e.elevationRangeValid||e.isEmpty)return this._elevationAlignmentRange.invalidateElevationRange(),void this._geometryElevationRange.invalidateElevationRange();const t=this.elevationOffsets;if(!t||0===t.length){const t=this.elevationAlignmentOffset;return this._elevationAlignmentRange.setElevationRangeValues(t,t),void this._geometryElevationRange.setElevationRangeValues(e.minElevation+t,e.maxElevation+t)}let i=1/0,s=-1/0;for(let r=0;r<t.length;++r){const e=this.elevationAlignmentOffset+(t[r]??0);i=Math.min(i,e),s=Math.max(s,e)}this._elevationAlignmentRange.setElevationRangeValues(i,s),this._geometryElevationRange.setElevationRangeValues(e.minElevation+i,e.maxElevation+s)}get usedMemory(){return this.node.memory}get featureExtents(){return this._featureExtents??=new Float64Array(6*this.featureIds.length).fill(Number.POSITIVE_INFINITY),this._featureExtents}}const Et=28,Rt=104857600,Ot=t=>{const f=t;let te=class extends f{constructor(){super(...arguments),this._extractChanges=null,this._applySSAO=!0,this._imShading=!!has("enable-feature:im-shading"),this._imVertexNormals=!!has("enable-feature:im-vertex-normals"),this._updatingHandles=new U,this._highlights=null,this._nodeId2Meta=new Map,this._nodeId2MetaReloading=new Map,this._i3sWasmLoaded=!1,this._snappingSourcesTrackers=[],this._compressionTracker=new Ct,this._hasLoadedPBRTextures=!1,this._asyncModuleLoading=0,this._addTasks=new Map,this._currentRenderer=null,this._rendererVersion=0,this._colorVariable=null,this._opacityVariable=null,this._rendererFields=null,this._symbologyFields=null,this._symbologyOverride=null,this._symbologyOverrideFields=null,this._symbolInfos=new Map,this._visibleGeometryChangedSchedulerHandle=null,this._hasComponentData=!1,this._hasVertexColors=!1,this._nodeColorOverride=null,this.updating=!0,this.holeFilling="auto",this._hasColors=!1,this._hasTextures=!1,this._hasData=!1,this.slicePlaneEnabled=!1,this._modifications=new Array,this.ignoresMemoryFactor=!1,this._layerUrl="",this._cacheKeySuffix=null,this._meshUtilsImporterModule=null,this._meshUtilsImporterPromise=null,this._planetRadiusInGlobalMode=0,this._elevationTask=null,this._needFilterResolve=!1,this._filters=[],this._arcade=null,this._tmpAttributeOnlyGraphic=new i,this._crossfadeHelper=new Se(this)}get lodCrossfadeoutDuration(){return 0}get lodCrossfadeinDuration(){return 0}get lodCrossfadeUncoveredDuration(){return 0}get extractChanges(){return this._extractChanges?.layer!==this.layer&&(this._extractChanges?.destroy(),this._extractChanges=new ne({layer:this.layer})),this._extractChanges}get layerViewUid(){return this.uid}get layerId(){return this.layer.id}get sublayerId(){return null}get _isIntegratedMesh(){return"integrated-mesh"===this.layer.type}get contentVisible(){return!this.suspended&&this._controller?.rootNodeVisible&&this.fullOpacity>Mt}get legendEnabled(){return this.contentVisible&&!0===this.layer?.legendEnabled}get updatingProgressValue(){return this._controller?.updatingProgress??0}get hasTexturesOrVertexColors(){return this._hasData?this._hasTextures||this._hasColors?"yes":"probably-not":"unknown"}get rendererTextureUsage(){return Ge(this._currentRenderer)?this._usePBR||this._hasLoadedPBRTextures?63:53:this._usePBR||this._hasLoadedPBRTextures?44:36}get elevationOffset(){const e=this.layer?.elevationInfo;return"absolute-height"===e?.mode?ce(e,this.layer.spatialReference):0}get elevationInfo(){const e=this.layer?.elevationInfo;switch(e?.mode){case"absolute-height":return new Lt(0,ce(e,this.layer.spatialReference));case"relative-to-ground":return new Lt(1,ce(e,this.layer.spatialReference));case"on-the-ground":return new Lt(2,0);default:return new Lt(0,0)}}get supportedTextureEncodings(){return De(this.view.stage.renderView.capabilities)}get clientGeometry(){return this.i3sOverrides.geometryOverrides}get elevationRange(){const e=this._nodeId2Meta,t=new at;for(const i of e.values()){const e=i?.geometryElevationRange;e?.elevationRangeValid&&!e.isEmpty&&t.expandElevationRange(e)}return t.elevationRangeValid&&!t.isEmpty?t:null}get fullExtent(){return this.layer.fullExtent}initialize(){const e=has("enable-feature:idb-mock-cache");this._idbCache=e?new Ze(this.view,e):new Xe("esri-scenelayer-cache","geometries"),this._preLoadBasis(),this.addResolvingPromise(this.layer.indexInfo);const t=this.view.resourceController,i=t.memoryController;this.i3sOverrides=new Ue({view:this.view,layer:this.layer,memoryController:i,extractChanges:this.extractChanges}),this._workerHandle=new Ce(ot(t)),this.addResolvingPromise(this._workerHandle.promise),Le(this.layer),Be(this.layer,this.view);const s=this.layer.store.defaultGeometrySchema;if(this.addResolvingPromise(this._workerHandle.setLegacySchema(this.uid,s).catch(d)),this._layerUrl=this.layer.parsedUrl.path,this._controller=new re({layerView:this,worker:this._workerHandle}),this._gpuMemoryEstimate=0,this._texMemoryEstimate=0,this._geoMemoryEstimate=0,this._stage=this.view.stage,this._collection=this._stage.renderView.componentObjectCollection,this._isIntegratedMesh||!s)this._hasComponentData=!1;else{const e=s.featureAttributes;this._hasComponentData=!!(e&&e.faceRange&&e.id)}this._hasVertexColors=null!=(s?.vertexAttributes.color??null)&&!this.layer.cachedDrawingInfo?.color;const r=this.view.resourceController.memoryController.newCache(`sl-${this.uid}`,e=>this._deleteComponentObject(e));this._memCache=r;const n=this._controller,l=this._nodeId2Meta,h=this._nodeId2MetaReloading;function*c(e){const t=n.index;if(!t)return;const i=t.rootNode;if(!i)return;let s=null;for(const r of t.traverseValues(i,t=>{const i=l.get(t.index)||h.get(t.index);return s=i?.objectHandle??null,e(t,s)}))yield new Ae(r,s)}this._intersectionHandler=new Fe({layerViewUid:this.layerViewUid,sublayerId:this.sublayerId,collection:this._collection,slicePlaneEnabled:this.slicePlaneEnabled,isGround:this._isIntegratedMesh,traverseNodeHierarchy:c}),this._elevationProvider=new et({view:this.view,layerElevationSource:this,intersectionHandler:this._intersectionHandler}),this._hasLoadedPBRTextures=this._usePBR,this._updatingHandles.add(()=>this.view.clippingArea,()=>this._clippingAreaChanged(),u),this._updatingHandles.add(()=>this.fullOpacity,e=>this._opacityChange(e)),this._updatingHandles.add(()=>this.slicePlaneEnabled,e=>this._slicePlaneEnabledChange(e)),this._updatingHandles.add(()=>this.elevationOffset,(e,t)=>{this._reloadAll(t),this._controller.invalidateVisibilityObbs()}),this._updatingHandles.add(()=>this.elevationInfo,(e,t)=>this._elevationInfoChanged(e,t),u),this._updatingHandles.add(()=>!this.suspended&&0!==this.elevationInfo.mode,(e,t)=>{e?this.addHandles(this.view.groundView.on("elevation-change",({extent:e})=>this._ensureElevationTask().addExtent(e)),zt):t&&this.removeHandles(zt)},u),this._updatingHandles.add(()=>this._usePBR,e=>this._updatePBR(e));const m=()=>{this._reloadAll(),this.clearMemCache()};this._updatingHandles.add(()=>this.rendererTextureUsage,m),this._updatingHandles.add(()=>this.contentVisible,e=>this._contentVisibleChanged(e),u),this._updatingHandles.add(()=>this.layer.labelsVisible,()=>this._labelingChanged(),u),this._updatingHandles.add(()=>this.layer.labelingInfo,()=>this._labelingChanged(),u),this._updatingHandles.add(()=>this._modifications,()=>this._modificationsChanged(),u),this.addHandles([g(()=>nt.I3S_TREE_SHOW_TILES,e=>{if(e&&!this._treeDebugger){const e=this._controller.crsIndex;import("./support/I3STreeDebugger.js").then(({I3STreeDebugger:t})=>{!this._treeDebugger&&nt.I3S_TREE_SHOW_TILES&&(this._treeDebugger=new t({lv:this,view:this.view,nodeSR:e}))})}else e||nt.I3S_TREE_SHOW_TILES||(this._treeDebugger=a(this._treeDebugger))},u),g(()=>nt.I3S_SHOW_MODIFICATIONS,()=>this._showModifications(),u)]),this._cacheKeySuffix=this._getCacheKeySuffix(),this._idbCache.init().catch(e=>o.getLogger(this).warn(`Failed to initialize IndexedDB cache: ${e}`));const{view:_}=this,{viewingMode:f,renderCoordsHelper:p}=_;this._planetRadiusInGlobalMode="local"===f?0:p.referenceEllipsoid.radius}destroy(){this._clearAddTasks(),this._elevationTask=a(this._elevationTask),this.i3sOverrides=a(this.i3sOverrides),this._extractChanges=a(this._extractChanges),this._elevationProvider&&(this._elevationProvider.notifyObjectsChanged(this.getVisibleObbs()),this.view.elevationProvider.unregister(this._elevationProvider),this._elevationProvider=null),this._intersectionHandler&&(this._stage.view.sceneIntersectionHelper.removeIntersectionHandler(this._intersectionHandler),this._intersectionHandler=null);const e=this._workerHandle;e&&(e.destroyContextAndSelf(this.uid),this._workerHandle=null),this._removeAllNodeDataFromStage(),this._memCache=a(this._memCache),this._collection=null,this._stage=null,this._edgeView=null,this._labeler=a(this._labeler),this._treeDebugger=a(this._treeDebugger),this._controller=a(this._controller),this._highlights=a(this._highlights),this._nodeId2Meta.clear(),this._nodeId2MetaReloading.clear(),this._crossfadeHelper=a(this._crossfadeHelper),this.emit("visible-geometry-changed"),this._visibleGeometryChangedSchedulerHandle&&(this._visibleGeometryChangedSchedulerHandle.remove(),this._visibleGeometryChangedSchedulerHandle=null),this._updatingHandles=a(this._updatingHandles)}_memEstimateTextureAdded(e){const t=e.usedMemory;return this._gpuMemoryEstimate+=t,this._texMemoryEstimate+=t,t}_memEstimateTextureRemoved(e){if(null!=e){const t=e.usedMemory;this._gpuMemoryEstimate-=t,this._texMemoryEstimate-=t}}_memEstimateGeometryAdded(e){const t=this._collection.getObjectGPUMemoryUsage(e);return this._gpuMemoryEstimate+=t,this._geoMemoryEstimate+=t,t}_memEstimateGeometryRemoved(e){const t=this._collection.getObjectGPUMemoryUsage(e);this._gpuMemoryEstimate-=t,this._geoMemoryEstimate-=t}isNodeLoaded(e){return this._nodeId2Meta.has(e)}isNodeReloading(e){return this._nodeId2MetaReloading.has(e)}get usedMemory(){let e=null!=this._labeler?this._labeler.usedMemory:0;return this._nodeId2Meta.forEach(t=>e+=null!=t?t.node.memory:0),this._nodeId2MetaReloading.forEach(t=>e+=null!=t?t.node.memory:0),e}get unloadedMemory(){return(null!=this._controller?this._controller.unloadedMemoryEstimate:0)+(null!=this._labeler?this._labeler.unloadedMemoryEstimate:0)}_labelingChanged(){if(!(we(this.layer)&&this._supportsLabeling))return void(null!=this._labeler&&(this._labeler.destroy(),this._labeler=null));if(null!=this._labeler)return;const e=new fe({view:this.view,layer:this.layer,collection:this._collection,overrides:this.i3sOverrides,layerViewUid:this.uid});this._nodeId2Meta.forEach(t=>null!=t&&this._addMetaToLabeler(e,t)),this._labeler=e}_loadAsyncModule(e){return++this._asyncModuleLoading,e.then(e=>(--this._asyncModuleLoading,e),e=>{throw--this._asyncModuleLoading,e})}_modificationsChanged(){if(!this._i3sWasmLoaded&&this.hasModifications)return this._i3sWasmLoaded=ye().then(()=>{this._i3sWasmLoaded=!0,this._modificationsChanged(),this.notifyUpdate()},()=>{}),void this.notifyUpdate();if(!0!==this._i3sWasmLoaded)return;const e=e=>o.getLogger(this).error("set-modifications-error","Error when setting modifications:",e),t=this.uid,i=this.layer.spatialReference,s=i.isGeographic,r=Me(this._layerClippingArea,this._modifications,i,this.view.state.isGlobal);this._workerHandle.setModifications(t,r,s).catch(e);try{be({context:t,modifications:r,isGeodetic:s})}catch(a){e(a)}this._controller.modificationsChanged();const n=this.hasModifications?new l:null;this._nodeId2Meta.forEach((e,t)=>{null==e?(this._nodeId2Meta.delete(t),this._controller.updateLoadStatus(t,!1)):e.node.hasModifications?(this._updateFeatureIdCounts(e,-1),this._nodeId2Meta.delete(t),this._nodeId2MetaReloading.set(t,e)):null!=n&&n.push(e.node)}),this.notifyChange("elevationRange"),null!=n&&this._nodeId2MetaReloading.forEach(e=>n.push(e.node)),null!=n&&n.length>0&&(this.updateNodeModificationStatus(n),n.forAll(e=>{if(2!==e.imModificationImpact){const t=this._nodeId2Meta.get(e.index);this._controller.invalidateGeometryVisibility(e.index),null!=t?(this._updateFeatureIdCounts(t,-1),this._nodeId2Meta.delete(e.index),this._nodeId2MetaReloading.set(e.index,t),this.notifyChange("elevationRange")):this._nodeId2Meta.has(e.index)&&(this._nodeId2Meta.delete(e.index),this._controller.updateLoadStatus(e.index,!1))}})),this.clearMemCache(),this._controller.restartNodeLoading(),this._showModifications()}_showModifications(){if(null!=this._modificationGraphics&&(this.view.graphics.removeMany(this._modificationGraphics),this._modificationGraphics=null),!nt.I3S_SHOW_MODIFICATIONS||0===this._modifications.length)return;const e={clip:[227,227,79,.8],mask:[227,139,79,.8],replace:[139,227,79,.8]},t={outline:{color:[255,255,255],width:1}};this._modificationGraphics=[];for(const s of this._modifications){const r=s.geometry;r.spatialReference=this.layer.spatialReference;const o=new me({...t,color:e[s.type]});this._modificationGraphics.push(new i({geometry:r,symbol:o}))}this.view.graphics.addMany(this._modificationGraphics)}_addMetaToLabeler(e,t){e.addNodeMeta(t,(e,t)=>this._createAttributes(e,t))}_contentVisibleChanged(e){e?(this.view.elevationProvider.register(this._elevationContext,this._elevationProvider),this._stage.view.sceneIntersectionHelper.addIntersectionHandler(this._intersectionHandler)):(this._removeAllNodeDataFromStage(),this.view.elevationProvider&&this.view.elevationProvider.unregister(this._elevationProvider),this._stage.view.sceneIntersectionHelper.removeIntersectionHandler(this._intersectionHandler))}getLoadedAttributes(e){const t=this._nodeId2Meta.get(e);if(null!=t?.attributeInfo)return t.attributeInfo.loadedAttributes}getAttributeData(e){const t=this._nodeId2Meta.get(e);if(null!=t?.attributeInfo)return t.attributeInfo.attributeData}setAttributeData(e,t){const i=this._nodeId2Meta.get(e);null!=i?.attributeInfo&&(i.attributeInfo.attributeData=t,this._attributeValuesChanged(i))}async updateAttributes(e,t,i){const s=this._nodeId2Meta.get(e);null!=s&&(await this.i3sOverrides.applyAttributeOverrides(s.featureIds,t,i,this._controller.requiredAttributes),s.attributeInfo=t,this._controller.reschedule(()=>{this._nodeId2Meta.get(e)===s&&this._attributeValuesChanged(s)},i).catch(e=>{h(e)||o.getLogger(this).warn("Error while updating attribute values. Layer might not display correctly.",e)}))}_attributeValuesChanged(e){e.cachedRendererVersion=this._getInvalidRendererVersion(),e.appliedFilters=null,null!=this._labeler&&this._labeler.setNodeMetaAttributes(e,(e,t)=>this._createAttributes(e,t)),this._updateEngineObject(e)}clearMemCache(){null!=this._memCache&&this._memCache.clear(),this._addTasks.forEach(e=>e.allowMemCache=!1)}getVisibleNodes(){const e=new Array;return this._nodeId2Meta.forEach(t=>null!=t&&e.push(t.node)),e}getVisibleObbs(){const e=new Array;return this._nodeId2Meta.forEach(t=>t&&e.push(this._collection.getComponentObb(t.objectHandle))),e}getLoadedNodeIndices(e){this._nodeId2Meta.forEach((t,i)=>e.push(i)),this._nodeId2MetaReloading.forEach((t,i)=>e.push(i))}_preLoadBasis(){!has("disable-feature:i3s-basis")&&2&this.supportedTextureEncodings&&this.layer.textureSetDefinitions?.some(e=>e.formats.some(e=>"basis"===e.format||"ktx2"===e.format))&&vt()}_getVertexBufferLayout(e,t){return ut(mt(this._getGeometryParameters({hasTexture:Tt(e.params.material),hasNormals:t.normal,hasRegions:t.uvRegion})))}_getObjectIdField(){return this.layer.objectIdField||se}_getGlobalIdField(){return this.layer.globalIdField}_findGraphicNodeAndIndex(e){const t=it(this.layer.fieldsIndex,e.attributes,this._getObjectIdField());for(const i of this._nodeId2Meta.values()){const e=i?.featureIds.indexOf(t);if(null!=e&&e>=0)return{node:i.node,index:e}}return null}_getGraphicIndices(e,t){const i=this._nodeId2Meta.get(e.index);if(null==i)return[];const s=[],r=this._getObjectIdField(),o=this.layer.fieldsIndex;for(const n of t){const e=it(o,n.attributes,r),t=i.featureIds.indexOf(e);-1!==t&&s.push(t)}return s}whenGraphicBounds(e){const t=this._findGraphicNodeAndIndex(e);if(!t)return Promise.reject();const i=this.getAABB(t.node.index,t.index);return null==i?Promise.reject():Promise.resolve({boundingBox:i,screenSpaceObjects:[]})}getAABBFromIntersectorTarget(e){return null==e.nodeIndex||null==e.componentIndex?null:this.getAABB(e.nodeIndex,e.componentIndex)}getAABB(e,t){const i=this._nodeId2Meta.get(e);if(null==i?.featureIds||t>=i.featureIds.length)return null;const s=i.objectHandle,r=Ve(t,this._collection,s,Y(24),0),o=this.view.renderSpatialReference,n=this.view.spatialReference;return B(r,o,0,r,n,0)?W(r):null}whenGraphicAttributes(e,t){return qe(this.layer,e,this._getObjectIdField(),t,()=>this._nodeId2Meta.values().filter(r).toArray())}getGraphicFromIntersectorTarget(e,t){if(null==e.nodeIndex||null==e.componentIndex)return null;const i=this._nodeId2Meta.get(e.nodeIndex);if(null==i?.featureIds||e.componentIndex>=i.featureIds.length)return null;const s=this._createLayerGraphic(this._createAttributes(e.componentIndex,i));return s?this._meshUtilsImporterModule?(s.geometry=this._meshUtilsImporterModule.createMesh({layerView:this,nodeIndex:e.nodeIndex,featureIndex:e.componentIndex}),s):t.defer?(t.defer(async()=>(s.geometry=(await this._meshUtilsImporter).createMesh({layerView:this,nodeIndex:e.nodeIndex,featureIndex:e.componentIndex}),s)),null):s:null}_getCacheKey(e){return`${this._layerUrl}/v${Et}/${e}${this._cacheKeySuffix}`}get _meshUtilsImporter(){return this._meshUtilsImporterPromise||(this._meshUtilsImporterPromise=import("./i3s/meshUtils.js"),this._meshUtilsImporterPromise.then(e=>this._meshUtilsImporterModule=e,()=>{})),this._meshUtilsImporterPromise}_getCacheKeySuffix(){const e=this.view.renderSpatialReference;if(null==e)return Wt;if(e===k(e))return Kt;return this.layer.spatialReference.equals(e)?$t:null!=e.wkid?`@${e.wkid}`:null}_getMemCacheKey(e,t=this.elevationOffset){return e+"#"+t}get _idbCacheEnabled(){return!this._controller.disableIDBCache&&!this.hasModifications&&0===this.elevationOffset&&null!=this._cacheKeySuffix}loadCachedGPUData(e){return null!=this._memCache?this._memCache.pop(this._getMemCacheKey(e)):null}deleteCachedGPUData(e){null!=e&&this._deleteComponentObject(e)}_cacheGPUData(e,t=this.elevationOffset){if(null==this._memCache)return void this._deleteComponentObject(e);const i=this._controller.indexDepth-e.node.level;this._memCache.put(this._getMemCacheKey(e.node.index,t),e,i)}loadMissingTextures(e,t,i,s){const r=e?.filter((e,i)=>{if(0===(e.usage&this.rendererTextureUsage))return!1;if(null==t)return!0;const s=Te(e.encodings,this.supportedTextureEncodings),r=t[i];return!!(null==r?.data||s&&r.encoding!==s.encoding)})??[];return 0===r.length?Promise.resolve(!1):i(r,s).then(i=>{let s=0;for(let r=0;r<e.length;r++)s<i.length&&i[s].id===e[r].id&&(t[r]=i[s],s++);return!0})}loadCachedNodeData(e,t,i){return this._idbCacheEnabled?this._idbCache.get(this._getCacheKey(e.id),t).then(s=>null==s?null:(s.globalTrafo=X(s.globalTrafo),s.nodeVersion!==e.version?(this._idbCache.remove(this._getCacheKey(e.id)),null):(0===this.elevationInfo.mode&&(e.geometryObbInRenderSR=dt.fromData(s.geometryObbData)),this.loadMissingTextures(s.requiredTextures,s.textureData,i,t).then(i=>(i&&this._idbCache.initialized&&null!=s.textureData&&(s.byteSize=Pt(s.transformedGeometry,s.textureData),s.textureData.every(Nt)&&this._indexedDbSizeCheck(e,s)&&this._idbCache.put(this._getCacheKey(e.id),s).catch(t=>o.getLogger(this).warn(`Failed to update node with textures in IndexedDB cache: ${e.id}: ${t}`))),c(t),s))))):Promise.resolve(null)}addNode(e,t,i){return Ht(t)?null==t.geometryBuffer?(this._addNodeMeta(e.index,null),Promise.resolve()):this._addData(e,t.attributeDataInfo,()=>this._transformNode(e,t,i).then(s=>this._safeReschedule(()=>{if(null==s)return e.hasModifications=!1,this._addCachedNodeData(e,null,i);const{obb:r,componentOffsets:n,featureIds:a,anchorIds:l,anchors:d,transformedGeometry:h,geometryMinElevation:c,geometryMaxElevation:u}=s;e.hasModifications=h.hasModifications;const g=X(s.globalTrafo),m=S(Bt,r.center.x,r.center.y,r.center.z);j(m,m,g);const _=new dt(m,[r.extents.x,r.extents.y,r.extents.z],O(r.orientation.x,r.orientation.y,r.orientation.z,r.orientation.w));0===this.elevationInfo.mode&&(e.geometryObbInRenderSR=_),t.geometryData.componentOffsets=n,a&&(t.geometryData.featureIds=Array.from(a)),t.geometryData.anchorIds=l,t.geometryData.anchors=d;const f={nodeVersion:e.version,geometryData:t.geometryData,requiredTextures:t.requiredTextures,textureData:t.textureData,transformedGeometry:h,globalTrafo:g,geometryObbData:_.data,geometryMinElevation:c,geometryMaxElevation:u,byteSize:Pt(h,t.textureData)};if(this._idbCacheEnabled&&this._idbCache.initialized&&this._indexedDbSizeCheck(e,f)){const t=null!=f.textureData?f.textureData.map(e=>Nt(e)?e:null):null;this._idbCache.put(this._getCacheKey(e.id),{...f,textureData:t}).catch(t=>o.getLogger(this).warn(`Failed to store node in IndexedDB cache: ${e.id}: ${t}`))}return this._addCachedNodeData(e,f,i)},i))):Promise.reject()}getElevationRange(e){const t=new at,i=this._controller,{index:s}=i;if(!s)return t;const{rootNode:r}=s;if(!r)return t;const o=this._nodeId2Meta,n=i.viewportQueries,a=i=>{const{childrenLoaded:s}=i;if(0===s)return!1;const r=n.getAndUpdateVisibilityObbInRenderSR(i);let a=null;if(r){if(!r.intersectSphereWithMBS(e,r.radius))return!1}else if(a=n.calculateServiceMbsInRenderSRElevationAdjusted(i),a?.isValid&&!e.intersects(a))return!1;const l=o.get(i.index);if(l){const{geometryObbInRenderSR:s}=i;if(!s||s.intersectSphereWithMBS(e)){const e=l.geometryElevationRange;e.elevationRangeValid&&!e.isEmpty&&t.expandElevationRange(e)}}return s-(l?1:0)>0};return s.traverse(r,a),t}computeVisibilityObb(e){return ze(e,this.view.renderSpatialReference,this._controller.crsIndex,this.layer.spatialReference,this.elevationOffset,this._modifications,this.view.renderCoordsHelper.sphericalPCPF)}_transformNode(e,t,i){const s=t.geometryData.geometries??[],r=new Array(s.length);for(let f=0;f<s.length;++f)r[f]=this._getVertexBufferLayout(s[f],t.geometryDescriptor);const o=this.layer.normalReferenceFrame,n=t.normalReferenceFrame??o??"none",a=e.serviceMbsInIndexSR,l=this.elevationOffset,d=this._controller.crsIndex,h=this._controller.crsVertex,c=this.view.renderSpatialReference,u=ke(a,l,n,d,c),g=q(d,h),m=q(h,c);if(null==g||null==m)return Promise.resolve(null);const _={context:this.uid,geometryBuffer:t.geometryBuffer,geometryData:t.geometryData,geometryDescriptor:t.geometryDescriptor,layouts:r,globalTrafo:u,geometryElevationOffset:l,mbs:a.toJSON(),obbData:e.serviceObbInIndexSR?.data,elevationOffset:l,planetRadiusInGlobalMode:this._planetRadiusInGlobalMode,needNormals:this._controller.isMeshPyramid||this._imVertexNormals,computeNormals:this._isIntegratedMesh&&this._imVertexNormals,normalReferenceFrame:n,indexToVertexProjector:g,vertexToRenderProjector:m};return this._workerHandle.invoke(_,i)}get _supportsNodeCrossFading(){return!this.view?.stage?.renderer.shadowsEnabled}get nodeCrossfadingEnabled(){return this._supportsNodeCrossFading&&(this.lodCrossfadeinDuration>0||this.lodCrossfadeoutDuration>0||this.lodCrossfadeUncoveredDuration>0)}get nodeFadeoutEnabled(){return this._supportsNodeCrossFading&&this.lodCrossfadeoutDuration>0}_setNewNodeOpacity(e){const t=this.nodeCrossfadingEnabled?0:this.fullOpacity;this._setNodeOpacity(e,t)}addCachedGPUData(e,t,i){if(0===this.elevationInfo.mode&&(e.geometryObbInRenderSR=this._collection.getComponentObb(t.objectHandle).clone()),!this._controller.isGeometryVisible(e))return void this._cacheGPUData(t);const s=e.index;this._addNodeMeta(s,t),this.updateNodeState(s,i),this._collection.setObjectVisibility(t.objectHandle,!0),this._updateElevationOffsets(t),null!=this._labeler&&this._addMetaToLabeler(this._labeler,t),this._updateMaterial(t),this._setNewNodeOpacity(t),0!==this.elevationInfo.mode&&this._ensureElevationTask().schedule(s),this._updateEngineObject(t),this._highlights?.objectCreated(t),null!=this._treeDebugger&&this._treeDebugger.update()}addCachedNodeData(e,t,i,s){return this._addData(e,i,()=>this._addCachedNodeData(e,t,s))}async deleteCachedNodeData(e){if(this._idbCacheEnabled)return this._idbCache.remove(this._getCacheKey(e))}async _addCachedNodeData(e,t,i){if(!this.contentVisible||!this._controller.isGeometryVisible(e))return void this._removeNodeStageData(e.index,this.elevationOffset,this._nodeId2MetaReloading);if(null==t)return void this._addNodeMeta(e.index,null);const s=this._addTasks.get(e.index),{geometryData:r,transformedGeometry:n}=t;await this.i3sOverrides.applyAttributeOverrides(r.featureIds,s.attributeInfo,i,this._controller.requiredAttributes);const a=null!=t.textureData?t.textureData.filter(e=>null!=e&&0!==(e.usage&this.rendererTextureUsage)):[];!has("disable-feature:i3s-basis")&&a.some(e=>null!=e&&(2===e.encoding||1===e.encoding))&&await vt(),e.memory=0;const{componentOffsets:l,geometries:d,featureIds:h,anchorIds:c,anchors:u}=r,g=this._collection,m=d[0],{layout:_,indices:f,interleavedVertexData:p,positionData:y,hasColors:O}=n,{material:S,geometryParameters:j}=this._materialParameters(m,_),A=p.byteLength/_[0].stride,D=l||new Uint32Array([0,f?f.length:A]),T=m.transformation?E(m.transformation):R(),N=X(t.globalTrafo);x(T,N,T);const U=w(H(),T),k=b(C(),T),L=this._isIntegratedMesh?this._imShading?2:0:1,B=j.textureCoordinateType,q=!v(k,M),$=new _t(_,L,B,q?1:0),W=new ft({interleavedVertexData:p,vertexCount:A,indexData:f},{positions:Z(y.data),indices:ee(y.indices)},D,$),K=this.view.renderSpatialReference,Q=this.view.groundView.spatialReference,J=dt.fromData(ht(t.geometryObbData)).getCenter(Zt),Y=[1,1,1];G(J,K,Y,Q)||o.getLogger(this).errorOnce("Unsupported coordinate system for IM overlay");const te=H();z(J,K,te,Q);const ie=C();I(ie,k);const se=H();V(se,F(se,J,U),ie);const re=te[0]-se[0]*Y[0],oe=te[1]-se[1]*Y[1],ne=2===j.textureCoordinateType,{textures:ae,texturePromise:le,materialParameters:de}=this._initMaterialAndTextures(S,a,ne,e),he=g.createObject(new gt(P(re,oe,Y[0],Y[1]),new yt(U,k),dt.fromData(ht(t.geometryObbData)),W,!this._isIntegratedMesh),de);e.memory+=this._memEstimateGeometryAdded(he),e.memory+=ae.reduce((e,t)=>e+(null!=t?this._memEstimateTextureAdded(t):0),0);const ce=!!S.hasParametersFromSource,ue="blend"!==S.alphaMode&&S.metallicRoughness.baseColorFactor[3]>=1,ge=new wt(e,h,he,this._getInvalidRendererVersion(),s.attributeInfo,{hasParametersFromSource:ce,isOpaque:ue},ae,c,u,t.geometryMinElevation,t.geometryMaxElevation);s.meta=ge,this._hasTextures||=t.requiredTextures?.some(({usage:e})=>!!(19&e))||!!e.resources.texture,this._hasData=!0,this._hasColors||=O,this.notifyChange("hasTexturesOrVertexColors");const me=this.slicePlaneEnabled;return Promise.all([this._addOrUpdateEdgeRendering(ge),le]).then(([t,s])=>(this._addTasks.has(e.index)&&t?.updateObjectVisibility(ge.objectHandle,!1).catch(e=>this._logEdgeViewError(e,this.layer.title)),this._safeReschedule(()=>{const i=this._addTasks.get(e.index);if(!i)return;if(this._addNodeMeta(e.index,ge),i.meta=null,!this.contentVisible)return void this._removeNodeStageData(e.index,this.elevationOffset);g.setObjectVisibility(he,!0),t?.updateObjectVisibility(ge.objectHandle,!0).catch(e=>this._logEdgeViewError(e,this.layer.title)),ge.attributeInfo=i.attributeInfo;const s=ge.cachedRendererVersion!==this._rendererVersion,r=me!==this.slicePlaneEnabled;this._updateElevationOffsets(ge);const o=ge.elevationOffsets;this._updateComponentData(ge);const n=this._applyFiltersToNode(ge);(s||null!=t&&(r||n||o))&&this._addOrUpdateEdgeRendering(ge),null!=this._labeler&&this._addMetaToLabeler(this._labeler,ge),this._visibleGeometryChanged(ge,0),this._highlights?.objectCreated(ge),this._updateMaterial(ge),this._setNewNodeOpacity(ge),null!=this._treeDebugger&&this._treeDebugger.update()},i))).catch(e=>{const{meta:t,allowMemCache:i}=s;throw s.meta=null,t&&i?this._cacheGPUData(t):t&&this._deleteComponentObject(t),e})}_addNodeMeta(e,t){if(this._removeNodeStageData(e,this.elevationOffset,this._nodeId2MetaReloading),this._nodeId2Meta.has(e)){o.getLogger(this).error("Removing duplicated node");const t=this._nodeId2Meta.get(e);t&&(this._deleteComponentObject(t),this._updateFeatureIdCounts(t,-1))}else this._controller.updateLoadStatus(e,!0);t&&(t.lodCrossfadeProgress=null,this.nodeCrossfadingEnabled&&Gt(t.cachedEdgeMaterials,0),this._updateFeatureIdCounts(t,1)),this._nodeId2Meta.set(e,t),this.notifyChange("elevationRange")}_updateElevationOffsets(e){if(!e.node.serviceMbsInIndexSR)return;const{view:t,elevationInfo:i}=this,s=this._controller.crsIndex,{groundView:r,groundSpatialReference:o,renderSpatialReference:n}=t,a=i.mode;if(0===a)return e.elevationAlignmentOffset=i.offset,e.elevationOffsets=null,e.updateGeometryElevationRange(),void this.notifyChange("elevationRange");if(e.elevationAlignmentOffset=0,null==n||null==o)return e.elevationOffsets=null,e.updateGeometryElevationRange(),void this.notifyChange("elevationRange");const l=this._collection.getObjectTransform(e.objectHandle);e.elevationOffsets=e.elevationOffsets??[];const d=Bt,h=qt,c=2===a,u=this.view.renderCoordsHelper,g=e.featureIds.length,m=(()=>{if(e.cachedElevationAnchors)return e.cachedElevationAnchors;const t=Y(3*g);e.cachedElevationAnchors=t;const{center:i}=e.node.serviceMbsInIndexSR;for(let r=0;r<g;r++){const a=3*r,c=e.anchorIds?.indexOf(r)??-1;e.anchors&&c>=0?(S(d,e.anchors[3*c],e.anchors[3*c+1],e.anchors[3*c+2]),A(d,d,i),z(d,s,d,o),t[a]=d[0],t[a+1]=d[1],t[a+2]=u.getAltitude(d)):(this._collection.getComponentAabb(e.objectHandle,r,h,!0),S(d,(h[0]+h[3])/2,(h[1]+h[4])/2,h[2]),V(d,d,l.rotationScale),A(d,d,l.position),t[a+2]=u.getAltitude(d),z(d,n,d,o),t[a]=d[0],t[a+1]=d[1])}return t})(),_=i.offset,f=e.elevationOffsets,p=(e,t)=>{const i=c?m[3*e+2]:0;f[e]=_+(t??0)-i};r.getElevations(m,g,p),e.updateGeometryElevationRange(),this.notifyChange("elevationRange")}_ensureElevationTask(){return null!=this._elevationTask||(this._elevationTask=new Re(this.view.resourceController.scheduler,e=>this._controller.updateElevationChanged(e,this.view.groundView.spatialReference)?.filterInPlace(e=>null!=this._nodeId2Meta.get(e)),e=>this._nodeElevationAlignmentChanged(this._nodeId2Meta.get(e)),()=>this.elevationInfo?.mode)),this._elevationTask}_elevationInfoChanged(e,t){const i=0!==e.mode,s=!!t&&t!==e&&0!==t.mode;this._intersectionHandler.updateElevationAlignState(i,this.view.state.viewingMode),i&&!s&&this._controller.removeAllGeometryObbs(),this._nodeId2Meta.forEach(e=>this._nodeElevationAlignmentChanged(e))}_nodeElevationAlignmentChanged(e){null!=e&&(this._updateElevationOffsets(e),this._updateComponentData(e),this._updateEdgeRendering(e),null!=this._labeler&&this._labeler.updateLabelPositions(e),this._updateSnappingSources(e,2),this._elevationProvider.notifyObjectChanged(this._collection.getComponentObb(e.objectHandle)))}_safeReschedule(e,t){return c(t),this._controller.reschedule(e,t)}_materialParameters(e,t){const i=null!=e.params.material?e.params.material:He(),s=t.some(({name:e})=>"uvRegion"===e),r=t.some(({name:e})=>"normalCompressed"===e),o=Tt(i);return{geometryParameters:this._getGeometryParameters({hasTexture:o,hasNormals:r,hasRegions:s}),material:i}}_initMaterialAndTextures(e,t,i,s){const r=this._stage.renderView,o=e=>{this._gpuMemoryEstimate-=e,this._texMemoryEstimate-=e,s.memory-=e},n=t.map(t=>Ne(t,e,i,r,this._compressionTracker,o));this._stage.addTextures(n);const{materialParameters:a,texturePromise:l}=Pe(e,n,t,this.view.stage.renderView.textures,{rendererTextureUsage:this.rendererTextureUsage,usePBR:this._usePBR,isIntegratedMesh:this._isIntegratedMesh,slicePlaneEnabled:this.slicePlaneEnabled,viewSpatialReference:this.view.spatialReference,applySSAO:this._applySSAO});return{textures:n,texturePromise:l,materialParameters:a}}_getGeometryParameters(e){return new pt(this._hasVertexColors,e.hasNormals,e.hasTexture?e.hasRegions?2:1:0)}_addData(e,t,i){let s=this._addTasks.get(e.index);if(s)s.attributeInfo=t;else{const r=Promise.withResolvers();s=new kt(t,null,r.promise),this._addTasks.set(e.index,s),i().then(r.resolve,r.reject).then(()=>this._addTasks.delete(e.index)).catch(t=>{throw this._addTasks.delete(e.index),t})}return s.promise}_clearAddTasks(){this._addTasks.forEach(e=>{null!=e.meta&&(this._cacheGPUData(e.meta),e.meta=null)}),this._addTasks.clear()}_clippingAreaChanged(){const e=this.view.renderSpatialReference,t=this.layer.spatialReference,i=Q();this._renderClippingArea=lt(this.view.clippingArea,i,e)?i:null;const s=Q();this._layerClippingArea=lt(this.view.clippingArea,s,t)?s:null,this._filterChange(),this._controller&&this._controller.updateClippingArea(this.view.clippingArea),this._isIntegratedMesh&&this._modificationsChanged()}get hasGeometryFilter(){return!1}_geometryFilterChange(){const e=this.hasGeometryFilter;this._controller.geometryFilterChanged(e),this._applyFilters(e),this._assertFeatureIdNodeCounts(e)}_assertFeatureIdNodeCounts(e){e&&!this._featureIdCounts?(this._featureIdCounts=Xt(this._nodeId2Meta.values()),this._filteredIdCounts=Xt(this._nodeId2Meta.values(),1),this._weaklyRemovedIdCounts=Xt(this._nodeId2Meta.values(),2),this.addHandles(g(()=>this._controller.updating,e=>{!e&&this._needFilterResolve&&(this.multiGeometryFilterResolve(),this._needFilterResolve=!1,this.notifyUpdate())},{sync:!0}),"updateFinished")):!e&&this._featureIdCounts&&(this._featureIdCounts=null,this._filteredIdCounts=null,this._weaklyRemovedIdCounts=null,this._mismatchShow=null,this._mismatchHide=null,this.removeHandles("updateFinished"),this._needFilterResolve=!1,this.notifyUpdate())}_updateFeatureIdCounts(e,t){this._featureIdCounts&&(this._needFilterResolve=!0,Yt(this._featureIdCounts,e.featureIds,t),Yt(this._filteredIdCounts,e.filteredIds,t),Yt(this._weaklyRemovedIdCounts,e.weaklyRemovedIds,t))}_updateFilteredIdCounts(e,t,i){this._filteredIdCounts&&(this._needFilterResolve=!0,Yt(this._filteredIdCounts,t,-1),Yt(this._filteredIdCounts,e.filteredIds,1),Yt(this._weaklyRemovedIdCounts,i,-1),Yt(this._weaklyRemovedIdCounts,e.weaklyRemovedIds,1))}_checkFeatureIdNodeCountInvariant(){const e=null!=this._featureIdCounts;if(this.hasGeometryFilter!==e&&o.getLogger(this).error("checkFeatureIdNodeCountInvariant()","LayerView should have feature id node counts if and only if it has a geometry filter",{layerView:this,hasNodeCounts:e}),!this._featureIdCounts||!this._filteredIdCounts)return;const t=Xt(this._nodeId2Meta.values());n(this._featureIdCounts,t)||o.getLogger(this).error("checkFeatureIdNodeCountInvariant()","Incorrect _featureIdCounts",{layerView:this,counts:this._featureIdCounts,expected:t});const i=Xt(this._nodeId2Meta.values(),1);n(this._filteredIdCounts,i)||o.getLogger(this).error("checkFeatureIdNodeCountInvariant()","Incorrect _filteredIdCounts",{layerView:this,counts:this._filteredIdCounts,expected:i});const s=Xt(this._nodeId2Meta.values(),2);n(this._weaklyRemovedIdCounts,s)||o.getLogger(this).error("checkFeatureIdNodeCountInvariant()","Incorrect _weaklyRemovedIdCounts",{layerView:this,counts:this._weaklyRemovedIdCounts,expected:i})}multiGeometryFilterResolve(){if(!this._featureIdCounts||!this._filteredIdCounts)return;let e=null,t=null;for(const[i,s]of this._filteredIdCounts){const r=this._featureIdCounts.get(i);if(r!==s){s+(this._weaklyRemovedIdCounts?.get(i)??0)===r?(e??=new Set,e.add(i)):(t??=new Set,t.add(i))}}_(e,this._mismatchShow)&&_(t,this._mismatchHide)||(this._mismatchShow=e,this._mismatchHide=t,this._nodeId2Meta.forEach(e=>{if(!e?.filteredIds)return;const t=Jt(e,this._mismatchShow,this._mismatchHide);this._collection.setAllComponentVisibilities(e.objectHandle,t),this._visibleGeometryChanged(e,2)}))}_filterChange(){this._applyFilters(this.hasGeometryFilter)}_applyFilters(e){this._filters=this.getFilters(),e?this._controller&&this._controller.requestUpdate():this._nodeId2Meta.forEach(e=>{e&&this._applyFiltersToNode(e)&&(this._addOrUpdateEdgeRendering(e),this._visibleGeometryChanged(e,2))})}getFilters(){const e=[],t=this._renderClippingArea;return null!=t&&e.push((e,i)=>this._boundingRectFilter(e,i,t)),e}addSqlFilter(e,t,i){if(null!=t){const s=t.fieldNames;e.push((e,r)=>this._sqlFilter(e,r,t,s,i))}}_sqlFilter(e,t,i,s,r){const o={},n=this._createLayerGraphic(o);if(!n)return;const a=this.layer.objectIdField,l=t.featureIds,d=t.attributeInfo?.attributeData;s.every(e=>e===a||null!=d?.[e])&&$e(e,l,e=>{o[a]=l[e];for(const i of s)i!==a&&(o[i]=d?Oe(d[i],e):null);try{return i.testFeature(n)}catch(t){return r(t),!1}})}_boundingRectNodeTest(e,t){return L(e.node.serviceMbsInIndexSR,this._controller.crsIndex,Dt,this.view.renderSpatialReference),We(t,Dt)}_boundingRectFeatureTest(e,t,i){return this._collection.getComponentAabb(e.objectHandle,t,St),K(St,jt),J(i,jt)}_boundingRectFilter(e,t,i){const s=this._collection,r=this._boundingRectNodeTest(t,i);if(3===r)return;if(0===r)return void(e.length=0);const o=s.getComponentCount(t.objectHandle);if(o.invisible+o.visible!==t.featureIds.length)return;const n=this._transformClippingArea(Vt,i,t.objectHandle);$e(e,t.featureIds,e=>this._boundingRectFeatureTest(t,e,n))}_transformClippingArea(e,t,i){const s=this._collection.getObjectTransform(i),r=s.position,o=s.rotationScale;return e[0]=(t[0]-r[0])/o[0],e[1]=(t[1]-r[1])/o[4],e[2]=(t[2]-r[0])/o[0],e[3]=(t[3]-r[1])/o[4],e}async _addOrUpdateEdgeRendering(e,t=!0){const i=e.objectHandle,{hasEdges:s,perFeatureEdgeMaterials:r}=this._getFilteredEdgeMaterials(e);s&&!this._edgeView&&(this._edgeView=await this._stage.renderer.loadEdgeView());const o=this._edgeView;if(!o)return null;const n=o.hasObject(i);if(s){if(n){if(this.nodeCrossfadingEnabled){Gt(r,this.getNodeOpacity(e))}return o.updateAllComponentMaterials(i,r,this.slicePlaneEnabled,t).catch(e=>this._logEdgeViewError(e,this.layer.title)),o.updateObjectVisibility(i,!0).catch(e=>this._logEdgeViewError(e,this.layer.title)),o.updateAllVerticalOffsets(i,e.elevationOffsets).catch(e=>this._logEdgeViewError(e,this.layer.title)),o}const s=await this._collection.addEdges(i,o,r,this.slicePlaneEnabled,e.elevationOffsets);return e.edgeMemoryUsage=s,e.node.memory+=s,o}return n&&(e.node.memory-=e.edgeMemoryUsage,e.edgeMemoryUsage=0,o.removeObject(i)),null}_applyFiltersToNode(e){const{filteredIds:t,weaklyRemovedIds:i}=e,s=this._applyFiltersToNodeComponents(e);return this._updateFilteredIdCounts(e,t,i),s&&this._labeler?.applyFilterChange(e),s}_applyFiltersToNodeComponents(e){const t=this._collection,i=t.getComponentCount(e.objectHandle),s=null!=e.filteredIds,r=0===i.invisible;if(t.setAllComponentVisibilities(e.objectHandle,"all"),0===this._filters.length)return e.filteredIds=null,!r;if(null!=e.filteredIds&&e.appliedFilters===this._filters||(e.weaklyRemovedIds=null,e.filteredIds=Qt(e,this._filters),e.appliedFilters=this._filters),s&&e.filteredIds===e.featureIds&&(!this._mismatchHide||e.filteredIds.every(e=>!this._mismatchHide?.has(e))))return!r;const o=Jt(e,this._mismatchShow,this._mismatchHide);return t.setAllComponentVisibilities(e.objectHandle,o),!0}_removeAllNodeDataFromStage(e=this.elevationOffset){this._nodeId2Meta.forEach((t,i)=>this._removeNodeStageData(i,e)),this._nodeId2MetaReloading.forEach((t,i)=>this._removeNodeStageData(i,e,this._nodeId2MetaReloading)),this._elevationTask=a(this._elevationTask)}removeNode(e){const t=this.elevationOffset;this._removeNodeStageData(e,t),this._removeNodeStageData(e,t,this._nodeId2MetaReloading),null!=this._elevationTask&&this._elevationTask.remove(e)}_removeNodeStageData(e,t,i=this._nodeId2Meta){i.has(e)&&this._controller.updateLoadStatus(e,!1);const s=i.get(e);null!=s?(this._collection.setObjectVisibility(s.objectHandle,!1),null!=this._edgeView&&this._edgeView.hasObject(s.objectHandle)&&this._edgeView.updateObjectVisibility(s.objectHandle,!1).catch(e=>this._logEdgeViewError(e,this.layer.title)),this._visibleGeometryChanged(s,1),null!=this._labeler&&this._labeler.removeNodeMeta(s),i.delete(e),this._highlights?.objectDeleted(s),i===this._nodeId2Meta?(this._updateFeatureIdCounts(s,-1),this._cacheGPUData(s,t),this.nodeCrossfadingEnabled&&this._crossfadeHelper.stopNodeFading(s)):this._deleteComponentObject(s),null!=this._treeDebugger&&this._treeDebugger.update()):i.delete(e)}_deleteComponentObject(e){if(null!=this._edgeView&&this._edgeView.removeObject(e.objectHandle),this._memEstimateGeometryRemoved(e.objectHandle),this._collection.destroyObject(e.objectHandle),e.textures)for(const t of e.textures)this._memEstimateTextureRemoved(t),this._stage.removeTexture(t)}updateNodeState(e,t){const i=this._nodeId2Meta.get(e);null!=i&&i.objectHandle.updateMaterial({polygonOffset:0===t?1:0})}updateNodeIndex(e,t){if(this._nodeId2Meta.has(e)){const i=this._nodeId2Meta.get(e);this._nodeId2Meta.delete(e),this._nodeId2Meta.set(t,i),this.notifyChange("elevationRange")}const i=this._nodeId2MetaReloading.get(e);i&&(this._nodeId2MetaReloading.delete(e),this._nodeId2MetaReloading.set(t,i))}_invalidateAllSymbols(){this._rendererVersion=Ke(this._rendererVersion,1),this._controller?.requestUpdate()}_getInvalidRendererVersion(){return Ke(this._rendererVersion,-1)}async _rendererChange(e){if(this._currentRenderer=e,this.notifyChange("rendererTextureUsage"),this._rendererVersion=Ke(this._rendererVersion,1),this._rendererFields=null,this._colorVariable=null,this._opacityVariable=null,this._invalidateAllSymbols(),e&&(this._rendererFields=await e.getRequiredFields(this.layer.fieldsIndex)),this._updateSymbologyFields(),!this._arcade&&e&&"arcadeRequired"in e&&e.arcadeRequired&&(this._arcade=await ue()),e&&"visualVariables"in e&&e.visualVariables)for(const t of e.visualVariables)"color"===t.type?this._colorVariable=t:"opacity"===t.type?this._opacityVariable=t:o.getLogger(this).warn(`Unsupported visual variable type for 3D Object Scene Services: ${t.type}`);if(e)for(const t of e.symbols)"mesh-3d"!==t.type&&o.getLogger(this).error(`Symbols of type '${t.type}' are not supported for 3D Object Scene Services.`);this._controller&&this._controller.requestUpdate()}_getCachedEdgeMaterials(e){return this._hasComponentData&&e.cachedRendererVersion!==this._rendererVersion&&this._updateCachedRendererData(e),e.cachedEdgeMaterials}_getComponentParameters(e){this._hasComponentData&&e.cachedRendererVersion!==this._rendererVersion&&this._updateCachedRendererData(e);const t=e.cachedSymbology;return(i,s)=>{const r=i*e.cachedSymbologyStride;N(s.externalColor,t[r]/255,t[r+1]/255,t[r+2]/255,t[r+3]/255);const o=this._stage.renderView.olidRenderHelper;if(o){const t=e.featureIds[i],r=this.sublayerId?`${this.layerViewUid}_${this.sublayerId}`:this.layerViewUid,n=he(this.view,this.uid);o.setUidToObjectAndLayerId(t,t,this.layerId,r,this.layerPopupEnabledAndHasTemplate&&!n,e.node.resources.attributes,i,this.sublayerId),s.olidColor=o.getObjectAndLayerIdColor({graphicUid:t,layerViewUid:r})}s.externalColorMixMode=15&t[r+4],s.castShadows=!!(16&t[r+4]),s.pickable=!!(32&t[r+4]),s.elevationOffset=e.elevationOffsets?.[i]??0,s.emissiveStrength=e.emissiveStrengths?.[i]??1,s.emissiveSource=e.emissiveSources?.[i]??0}}_getSymbolInfo(e,t){const i=e?.getSymbol(t,{arcade:this._arcade});if(!(i instanceof ge))return null;const s=i.id;if(this._symbolInfos.has(s))return this._symbolInfos.get(s);const r=Qe(i);return this._symbolInfos.set(s,r),r}_setSymbologyOverride(e,t){this._symbologyOverride!==e&&(this._symbologyOverride=e,this._symbologyOverrideFields=t,this._invalidateAllSymbols(),this._updateSymbologyFields())}_updateSymbologyFields(){this._symbologyFields=null!=this._symbologyOverrideFields&&this._symbologyOverrideFields.length>0?null!=this._rendererFields&&this._rendererFields.length>0?oe(this.layer.fieldsIndex,[...this._rendererFields,...this._symbologyOverrideFields]):this._symbologyOverrideFields:this._rendererFields}_updateCachedRendererData(e){if(e.cachedRendererVersion=this._rendererVersion,!this._hasComponentData)return;const t=this._tmpAttributeOnlyGraphic,i={};t.attributes=i;const s=this._currentRenderer,r=e.attributeInfo?.attributeData,o=e.featureIds?this.layer.objectIdField:null,n=null!=r&&null!=this._symbologyFields&&this._symbologyFields.length>0;let a=null,l=null;if(n&&null!=this._symbologyFields){a=[],l=[];for(const e of this._symbologyFields){const t=r[e];t&&(a.push(e),l.push(t))}}e.cachedSymbology||(e.cachedSymbology=ie(e.featureIds.length*e.cachedSymbologyStride));const d=new tt,h=this.fullOpacity,c=this.nodeCrossfadingEnabled?this.getNodeOpacity(e):h;let u=null,g=1,m=Je,_=0;for(let f=0;f<e.featureIds.length;f++){if(null!=o&&(i[o]=e.featureIds[f]),n&&a)for(let e=0;e<a.length;e++)i[a[e]]=Oe(l[e],f);const r=s?this._getSymbolInfo(s,t):null;let h,p;if(d.pickable=!0,s&&"visualVariables"in s){if(this._colorVariable){const e=le(this._colorVariable,t,{color:At,arcade:this._arcade});e&&(h=d.color,h[0]=e.r/255,h[1]=e.g/255,h[2]=e.b/255,h[3]=e.a??1,this._opacityVariable||null===e.a||(p=e.a))}this._opacityVariable&&(p=de(this._opacityVariable,t,{arcade:this._arcade}))}if(r?.material){const e=r.material;h=null==h||null==p?xe(h,p,e.color,e.alpha,xt,d.color):xe(h,p,null,null,xt,d.color)}h??=N(d.color,1,1,1,1);const y=r?.material;if(d.colorMixMode=y?.colorMixMode??1,d.edgeMaterial=r?.edgeMaterial,this._symbologyOverride?.(t,d),null!=this._nodeColorOverride&&(this._nodeColorOverride(e.node,h),d.colorMixMode=3),d.pickable&&=h[3]>=Mt,d.castShadows=r?r.castShadows:d.pickable,null!=d.edgeMaterial){const t=h[3]>=1&&(e.material.isOpaque||3===d.colorMixMode)?1:0;d.edgeMaterial===u&&t===g||(m={...d.edgeMaterial,opacity:c,objectTransparency:t},u=d.edgeMaterial,g=t),e.cachedEdgeMaterials[f]=m}else e.cachedEdgeMaterials[f]=Je;e.cachedSymbology[_++]=Math.round(255*h[0]),e.cachedSymbology[_++]=Math.round(255*h[1]),e.cachedSymbology[_++]=Math.round(255*h[2]),e.cachedSymbology[_++]=Math.round(255*h[3]),e.cachedSymbology[_++]=d.colorMixMode|+d.castShadows<<4|+d.pickable<<5;const b=y?.emissive?.strength??bt;b===bt||e.emissiveStrengths||(e.emissiveStrengths=new Array(e.featureIds.length).fill(bt)),e.emissiveStrengths&&(e.emissiveStrengths[f]=b);const v=y?.emissive?.source||0;0===v||e.emissiveSources||(e.emissiveSources=new Array(e.featureIds.length).fill(0)),e.emissiveSources&&(e.emissiveSources[f]=v)}}_getFilteredEdgeMaterials(e){const t=this._getCachedEdgeMaterials(e);this.nodeCrossfadingEnabled||Gt(t,this.fullOpacity);const i=e.filteredIds;if(null==i){return{hasEdges:t.some(e=>e!==Je),perFeatureEdgeMaterials:t}}let s=0,r=!1;const o=t.map((t,o)=>e.featureIds[o]!==i[s]?Je:(r=r||t!==Je,s++,t));return{hasEdges:r,perFeatureEdgeMaterials:o}}_updateComponentData(e){if(!this._hasComponentData)return;const{objectHandle:t}=e,i=this._getComponentParameters(e);this._collection.setComponentData(t,i),this._stage.renderView.requestRender()}_reloadAll(e=this.elevationOffset){this._removeAllNodeDataFromStage(e),null!=this._controller&&this._controller.restartNodeLoading()}_opacityChange(e){this.nodeCrossfadingEnabled&&this._crossfadeHelper.stopAllNodeFading(),this._nodeId2Meta.forEach(t=>{null!=t&&(this._collection.updateObjectOpacity(t.objectHandle,e),Gt(t.cachedEdgeMaterials,e),this._updateEdgeRendering(t))})}_updateMaterial(e){e.objectHandle.updateMaterial({slicePlaneEnabled:this.slicePlaneEnabled,usePBR:this._usePBR})}_updateEngineObject(e){this._updateComponentData(e),this._applyFiltersToNode(e),this._addOrUpdateEdgeRendering(e),this._visibleGeometryChanged(e,2)}intersect(e,t,i,s){this._intersectionHandler.intersectRay(e,t,i,s,null,!1)}_slicePlaneEnabledChange(e){this._intersectionHandler&&(this._intersectionHandler.slicePlaneEnabled=e),null!=this._labeler&&(this._labeler.slicePlaneEnabled=e),this._foreachMeta(t=>{t.objectHandle.updateMaterial({slicePlaneEnabled:e}),this._updateEdgeRendering(t,!1)})}_updatePBR(e){this._foreachMeta(t=>t.objectHandle.updateMaterial({usePBR:e})),this._hasLoadedPBRTextures=!0}_foreachMeta(e){this._nodeId2Meta.forEach(t=>{null!=t&&e(t)})}get _usePBR(){return this._imShading&&this.view.qualitySettings.physicallyBasedRenderingEnabled}_updateEdgeRendering(e,t=!0){null!=this._edgeView&&this._edgeView.hasObject(e.objectHandle)&&this._addOrUpdateEdgeRendering(e,t)}_forAllNodes(e){this._nodeId2Meta.forEach(e)}_ignoreClientNodeOverriddenFeatures(e){return this.i3sOverrides.hasGeometryChanges?(t,i,s)=>s.node.index>=0&&this.i3sOverrides.featureHasGeometryChanges(t)?0:e(t,i,s):e}_forAllFeatures(e,t,i){for(const s of this._nodeId2Meta.values())if(!(null==s||t&&s.node.serviceMbsInIndexSR&&1===t(s.node.serviceMbsInIndexSR)))switch(i){case 1:this._forAllFeaturesOfNode(s,e);break;case 0:this._forAllVisibleFeaturesOfNode(s,e);break;case 2:this._forAllQueryableFeaturesOfNode(s,e)}}_forAllFeaturesOfNode(e,t){e.featureIds.forEach((i,s)=>t(i,s,e))}_forAllVisibleFeaturesOfNode(e,t){const i=e.featureIds;this._collection.forEachVisibleComponent(e.objectHandle,s=>0===t(i[s],s,e))}_forAllQueryableFeaturesOfNode(e,t){const i=this._ignoreClientNodeOverriddenFeatures(t);if(null==this._renderClippingArea)return this._forAllFeaturesOfNode(e,i);const s=this._boundingRectNodeTest(e,this._renderClippingArea);if(0===s)return;if(3===s)return this._forAllFeaturesOfNode(e,i);const r=e.featureIds,o=e.objectHandle,n=Ye(this._renderClippingArea,this._collection.getObjectTransform(o));for(let a=0;a<r.length;a++)this._boundingRectFeatureTest(e,a,n)&&i(r[a],a,e)}_createAttributes(e,t){const i={};null!=t.featureIds&&(i[this._getObjectIdField()]=t.featureIds[e]);const s=t.attributeInfo?.attributeData;if(null!=s)for(const r of Object.keys(s))i[r]=Oe(s[r],e);return i}_createGraphic(e,t){return this._createLayerGraphic(this._createAttributes(e,t))}highlight(e,t){const s=st(e);if(0===s.length)return rt;const r=It(t),o=s[0]instanceof i?this._featureIdsFromGraphics(s):"number"==typeof s[0]?s:null;if(!o)return rt;const n=this._ensureHighlights(),{set:a,handle:l}=n.acquireSet(r);return n.setFeatureIds(a,o),l}_featureIdsFromGraphics(e){const t=this.layer.fieldsIndex,i=this._getObjectIdField();return e.map(e=>it(t,e.attributes,i))}_ensureHighlights(){return this._highlights??=new Ee({collection:this._collection,forAllFeatures:e=>this._forAllFeatures(e,null,1),forAllFeaturesOfNode:(e,t)=>this._forAllFeaturesOfNode(e,t)}),this._highlights}resetHighlights(){this._highlights=a(this._highlights)}_visibleGeometryChanged(e,t){this._elevationProvider&&(null==this._visibleGeometryChangedSchedulerHandle&&(this._visibleGeometryChangedSchedulerHandle=m(()=>{const{node:t}=e,i=t.visibilityObbInRenderSR??t.geometryObbInRenderSR??t.serviceObbInRenderSR;if(null!=i){const e=$();i.toAaBoundingBox(e),this.emit("visible-geometry-changed",new _e(e))}else this.emit("visible-geometry-changed");this._visibleGeometryChangedSchedulerHandle=null})),this._updateSnappingSources(e,t),this._elevationProvider.notifyObjectChanged(this._collection.getComponentObb(e.objectHandle)))}get performanceInfo(){return new pe(this.usedMemory,this._nodeId2Meta.size,Math.round(this._gpuMemoryEstimate/1048576),Math.round(this._geoMemoryEstimate/1048576),Math.round(this._texMemoryEstimate/1048576),Math.round(this.unloadedMemory/1048576),this._idbCacheEnabled?Math.round(100*this._idbCache.getHitRate()):0)}checkInvariants(){}get test(){}getNodeOpacityByIndex(e){const t=this._nodeId2Meta.get(e);return this.getNodeOpacity(t)}getNodeOpacity(e){return null!=e?this._collection.getObjectOpacity(e.objectHandle):0}isNodeFullyFadedIn(e){return this._crossfadeHelper.isNodeFullyFadedIn(e)}getNodeCrossfadeMetaData(e){return this._nodeId2Meta.get(e)}getNodeComponentHandle(e){return this._nodeId2Meta.get(e)?.objectHandle}markNodeToRemove(e){this._controller&&this._controller.markNodeToRemove(e)}removeMarkedNodes(){this._controller&&this._controller.removeMarkedNodes()}foreachCrossfadeNode(e){this._nodeId2Meta.forEach(e)}fadeNode(e,t,i){if(!this.nodeCrossfadingEnabled)return;const s=this._nodeId2Meta.get(e);null!=s&&this._crossfadeHelper.fadeNode(e,s,t,i)}setNodeOpacityByIndex(e,t){const i=this._nodeId2Meta.get(e);null!=i&&this._setNodeOpacity(i,t)}_setNodeOpacity(e,t){this._collection.updateObjectOpacity(e.objectHandle,t),this._setNodeEdgeOpacity(e,t)}_setNodeEdgeOpacity(e,t){if(null==this._edgeView||!e.cachedEdgeMaterials)return;Gt(e.cachedEdgeMaterials,t);const i=e.objectHandle;this._edgeView.hasObject(i)&&this._edgeView.updateAllComponentOpacities(i,t).catch(e=>this._logEdgeViewError(e,this.layer.title))}get hasModifications(){return this._isIntegratedMesh&&null!=this._layerClippingArea||this._modifications&&this._modifications.length>0}updateNodeModificationStatus(e){const t=e.length;if(!this.hasModifications||t<=0||!0!==this._i3sWasmLoaded)return;const i=this.uid,s=Ut(e);if(s){const t={context:i,buffer:s.buffer};ve(t);const r=new Float64Array(s.buffer);e.forAll((e,t)=>{const i=r[t],s=Ie(i);e.imModificationImpact=s,0!==s&&this._controller.invalidateGeometryVisibility(e.index)})}}notifyUpdate(){this.notifyChange("updating")}notifyLODUpdate(){this._controller.notifyLODUpdate()}isUpdating(){return!(!this._controller||!this._controller.updating)||!!this._visibleGeometryChangedSchedulerHandle||null!=this._labeler&&this._labeler.updating||this._crossfadeHelper?.updating||this._i3sWasmLoaded instanceof Promise||this._asyncModuleLoading>0||null!=this._elevationTask&&this._elevationTask.readyToRun||this._needFilterResolve||this._compressionTracker.compressing}trackSnappingSources(e){const t={events:e,fetchEdgeLocations:async(e,t,i)=>{const s=this._nodeId2Meta.get(e);if(null==s)throw new Error("invalid-node");const{origin:r,buffer:o}=await this._collection.extractEdgeInformation(s.objectHandle,t,i);return this._snappingLocationsApplyElevation(s,o,r),{type:"components",objectIds:s.featureIds,locations:o,origin:r}},remove:()=>s(this._snappingSourcesTrackers,t)};return this._snappingSourcesTrackers.push(t),this._nodeId2Meta.forEach((t,i)=>{if(null==t)return;const s=this._controller.getRenderMbs(t.node);s&&e.add(i,s)}),t}_snappingLocationsApplyElevation(e,t,i){if(!e.elevationOffsets||0===this.elevationInfo.mode)return;const s=t.position0,r=t.position1,o=t.componentIndex,n=H(),a=H(),l=(e,t)=>{A(e,e,i),this.view.renderCoordsHelper.worldUpAtPosition(e,a),A(e,e,D(a,a,t)),T(e,e,i)};for(let d=0;d<s.count;d++){const t=e.elevationOffsets[o.get(d)];s.getVec(d,n),l(n,t),s.setVec(d,n),r.getVec(d,n),l(n,t),r.setVec(d,n)}}_updateSnappingSources(e,t){const{index:i}=e.node,s=this._controller.getRenderMbs(e.node);if(null!=s)for(const r of this._snappingSourcesTrackers)1!==t&&2!==t||r.events.remove(i),0!==t&&2!==t||r.events.add(i,s)}_logEdgeViewError(e,t){h(e)||o.getLogger(this).warn("Error while processing edges. Edges on this layer might not display correctly",t,e)}_indexedDbSizeCheck(e,t){return t.byteSize>Rt?(o.getLogger(this).warn(`Node is too big to store in IndexedDB cache: ${e.id} (${t.byteSize} bytes)`),!1):t.byteSize>0}get elevationProvider(){return this._elevationProvider}};return e([p()],te.prototype,"extractChanges",null),e([p()],te.prototype,"_hasLoadedPBRTextures",void 0),e([p()],te.prototype,"_asyncModuleLoading",void 0),e([p()],te.prototype,"_visibleGeometryChangedSchedulerHandle",void 0),e([p()],te.prototype,"view",void 0),e([p()],te.prototype,"layer",void 0),e([p()],te.prototype,"_controller",void 0),e([p()],te.prototype,"_labeler",void 0),e([p()],te.prototype,"updating",void 0),e([p()],te.prototype,"suspended",void 0),e([p()],te.prototype,"contentVisible",null),e([p({readOnly:!0})],te.prototype,"legendEnabled",null),e([p(ct)],te.prototype,"updatingProgress",void 0),e([p()],te.prototype,"updatingProgressValue",null),e([p()],te.prototype,"hasTexturesOrVertexColors",null),e([p()],te.prototype,"rendererTextureUsage",null),e([p()],te.prototype,"elevationOffset",null),e([p()],te.prototype,"elevationInfo",null),e([p({type:Boolean})],te.prototype,"slicePlaneEnabled",void 0),e([p()],te.prototype,"supportedTextureEncodings",null),e([p({type:[ae]})],te.prototype,"_modifications",void 0),e([p({readOnly:!0})],te.prototype,"clientGeometry",null),e([p()],te.prototype,"elevationRange",null),e([p()],te.prototype,"fullExtent",null),e([p()],te.prototype,"_elevationTask",void 0),e([p({readOnly:!0})],te.prototype,"_usePBR",null),te=e([y("esri.views.3d.layers.I3SMeshView3D")],te),te},St=$(),jt=Q(),Vt=Q(),Ft=new dt,At=new t([0,0,0,0]),Dt=new te(0,0,0,0);function Tt(e){if(null==e)return!1;const t=e.metallicRoughness;return t&&t.baseColorTextureId>=0||t&&t.metallicRoughnessTextureId>=0||e.normalTextureId>=0||e.emissiveTextureId>=0||e.occlusionTextureId>=0}function Ht(e){return"geometryData"in e}function Nt(e){return null!=e&&f(e.data)}function Pt(e,t){let i=1024+e.interleavedVertexData.byteLength+(e.indices?e.indices.byteLength:0)+e.positionData.data.byteLength+e.positionData.indices.byteLength;if(null!=t)for(const s of t)null!=s&&f(s.data)&&(i+=s.data.byteLength);return i}function Ut(e){if(0===e.length)return;const t=10*e.length,i=new Float64Array(t);let s=0;return e.forAll(e=>{let t=e.serviceObbInIndexSR;null==t&&(t=Ft,e.serviceMbsInIndexSR?(t.setCenter(e.serviceMbsInIndexSR.center),t.setHalfSizeFromValues(e.serviceMbsInIndexSR.radius,e.serviceMbsInIndexSR.radius,e.serviceMbsInIndexSR.radius)):t.invalidate());const r=t.data;i[s++]=r[0],i[s++]=r[1],i[s++]=r[2],i[s++]=r[3],i[s++]=r[4],i[s++]=r[5],i[s++]=r[6],i[s++]=r[7],i[s++]=r[8],i[s++]=r[9]}),i}class kt{constructor(e,t,i){this.attributeInfo=e,this.meta=t,this.promise=i,this.allowMemCache=!0}}function Gt(e,t){e.forEach(e=>e.opacity=t)}class Lt{constructor(e,t){this.mode=e,this.offset=t}}const Bt=H(),qt=$(),zt="elevation-change",$t="",Wt="@null",Kt="@ECEF";function Qt(e,t){const i=e.featureIds.slice();for(const s of t)if(s(i,e),0===i.length)break;return i.length===e.featureIds.length?e.featureIds:i}function Jt(e,t,i){const s=new Array,r=e.filteredIds;if(null==r||t?.size||i?.size){if(null!=r){let o=0;e.featureIds.forEach((e,n)=>{if(r[o]===e)++o;else if(!t?.has(e))return;i?.has(e)||s.push(n)})}}else e.featureIds.forEach((e,t)=>{r[s.length]===e&&s.push(t)});return s}function Yt(e,t,i){if(e&&t)for(const s of t){const t=(e.get(s)??0)+i;t>0?e.set(s,t):e.delete(s)}}function Xt(e,t=0){const i=new Map;for(const s of e){Yt(i,0===t?s?.featureIds:1===t?s?.filteredIds:s?.weaklyRemovedIds,1)}return i}const Zt=H();export{Ot as I3SMeshView3D};
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../../Color.js";import i from"../../../Graphic.js";import{removeUnordered as s,isSome as r}from"../../../core/arrayUtils.js";import has from"../../../core/has.js";import o from"../../../core/Logger.js";import{equals as n}from"../../../core/MapUtils.js";import{destroyMaybe as a}from"../../../core/maybe.js";import l from"../../../core/PooledArray.js";import{ignoreAbortErrors as d,isAbortError as h,throwIfAborted as c}from"../../../core/promiseUtils.js";import{initial as u,watch as g}from"../../../core/reactiveUtils.js";import{schedule as m}from"../../../core/scheduling.js";import{equals as _}from"../../../core/SetUtils.js";import{isArrayBuffer as f}from"../../../core/typedArrayUtil.js";import{property as p,subclass as y}from"../../../core/accessorSupport/decorators.js";import{fromMat4 as b,exactEquals as v,invert as I}from"../../../core/libs/gl-matrix-2/math/mat3.js";import{create as C,IDENTITY as M}from"../../../core/libs/gl-matrix-2/factories/mat3f64.js";import{multiply as x,getTranslation as w}from"../../../core/libs/gl-matrix-2/math/mat4.js";import{clone as E,create as R}from"../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{fromValues as O}from"../../../core/libs/gl-matrix-2/factories/quatf64.js";import{set as S,transformMat4 as j,transformMat3 as V,sub as F,add as A,scale as D,subtract as T}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{create as H}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{set as N}from"../../../core/libs/gl-matrix-2/math/vec4.js";import{fromValues as P}from"../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{UpdatingHandles as U}from"../../../core/support/UpdatingHandles.js";import{getSphericalPCPF as k}from"../../../geometry/spatialReferenceEllipsoidUtils.js";import{localLinearScaleFactors as G}from"../../../geometry/projection/localLinearScaleFactors.js";import{projectBoundingSphere as L}from"../../../geometry/projection/projectBoundingSphere.js";import{projectBuffer as B}from"../../../geometry/projection/projectBuffer.js";import{getProjectorName as q}from"../../../geometry/projection/projectors.js";import{projectVectorToVector as z}from"../../../geometry/projection/projectVectorToVector.js";import{create as $,fromBuffer as W,toRect as K}from"../../../geometry/support/aaBoundingBox.js";import{create as Q,intersects as J}from"../../../geometry/support/aaBoundingRect.js";import{newDoubleArray as Y,ensurePackedMat4f64 as X}from"../../../geometry/support/DoubleArray.js";import{compactFloatArray as Z}from"../../../geometry/support/FloatArray.js";import{compactIndices as ee}from"../../../geometry/support/Indices.js";import{Sphere as te}from"../../../geometry/support/sphere.js";import{newUByteArray as ie}from"../../../geometry/support/UByteArray.js";import{fallbackObjectIDAttribute as se}from"../../../layers/LayerConstants.js";import re from"../../../layers/graphics/controllers/I3SOnDemandController.js";import{fixFields as oe}from"../../../layers/support/fieldUtils.js";import{I3SExtractChanges as ne}from"../../../layers/support/I3SExtractChanges.js";import ae from"../../../layers/support/SceneModification.js";import{getColor as le,getOpacity as de}from"../../../renderers/visualVariables/support/visualVariableUtils.js";import{isBasemapLayerView as he}from"../../../support/basemapUtils.js";import{getElevationOffset as ce}from"../../../support/elevationInfoUtils.js";import{loadArcade as ue}from"../../../support/loadArcade.js";import ge from"../../../symbols/MeshSymbol3D.js";import me from"../../../symbols/SimpleFillSymbol.js";import{ContentGeometryUpdateEvent as _e}from"./ContentGeometryLayerView.js";import fe from"./I3SMeshViewLabeler.js";import{I3SMeshViewPerformanceInfo as pe}from"./I3SMeshViewPerformanceInfo.js";import{initialize as ye,setModificationsSync as be,filterObbsForModificationsSync as ve,interpretObbModificationResults as Ie}from"./SceneLayerWorker.js";import{SceneLayerWorkerHandle as Ce,toWasmModification as Me}from"./SceneLayerWorkerHandle.js";import{overrideColor as xe}from"./graphics/graphicUtils.js";import{areLabelsVisible as we}from"./graphics/Labeler.js";import Ee from"./i3s/Highlights.js";import{I3SAsyncElevationUpdater as Re}from"./i3s/I3SAsyncElevationUpdater.js";import{getCachedAttributeValue as Oe}from"./i3s/I3SBinaryReader.js";import{I3SCrossfadeHelper as Se,NodeCrossfadeMetaData as je}from"./i3s/I3SCrossfadeHelper.js";import{boundingBoxCornerPoints as Ve}from"./i3s/I3SGeometryUtil.js";import{I3SIntersectionHandler as Fe,TraversedIntersectionNode as Ae}from"./i3s/I3SIntersectionHandler.js";import{getSupportedEncodings as De,selectEncoding as Te,defaultMaterial as He,createTexture as Ne,configureMaterial as Pe}from"./i3s/I3SMaterialUtil.js";import{I3SOverrides as Ue}from"./i3s/I3SOverrides.js";import{computeGlobalTransformation as ke}from"./i3s/I3SProjectionUtil.js";import{rendererNeedsTextures as Ge,checkSceneLayerValid as Le,checkSceneLayerCompatibleWithView as Be,whenGraphicAttributes as qe,computeVisibilityObb as ze,filterInPlace as $e,intersectBoundingRectWithMbs as We,addWraparound as Ke,getSymbolInfo as Qe,transparentEdgeMaterial as Je,getClipRect as Ye}from"./i3s/I3SUtil.js";import{IDBCache as Xe}from"./i3s/IDBCache.js";import{IDBMockCache as Ze}from"./i3s/IDBMockCache.js";import{LayerElevationProvider as et}from"./i3s/LayerElevationProvider.js";import{SymbologyInfo as tt}from"./i3s/SymbologyInfo.js";import{attributeLookup as it}from"./support/attributeUtils.js";import{normalizeHighlightTarget as st,emptyHighlightHandle as rt}from"./support/highlightUtils.js";import{makeScheduleFunction as ot}from"./support/makeScheduleFunction.js";import{debugFlags as nt}from"../support/debugFlags.js";import{ElevationRange as at}from"../support/ElevationRange.js";import{toBoundingRect as lt}from"../support/extentUtils.js";import{Obb as dt,ensurePackedObbData as ht}from"../support/orientedBoundingBox.js";import{updatingProgress as ct}from"../support/updatingProperties.js";import{glLayout as ut}from"../support/buffer/glUtil.js";import{ObjectParameters as gt}from"../webgl-engine/collections/Component/ObjectParameters.js";import{createVertexBufferLayout as mt,ComponentGeometryParameters as _t,SourceGeometry as ft,VertexBufferLayoutCreationParameters as pt}from"../webgl-engine/collections/Component/SourceGeometry.js";import{Transform as yt}from"../webgl-engine/collections/Component/Transform.js";import{emissiveStrengthDefault as bt}from"../webgl-engine/core/shaderLibrary/output/getEmissions.glsl.js";import{loadBasisTranscoder as vt}from"../webgl-engine/lib/BasisUtil.js";import{getHighlightName as It}from"../../support/highlightOptionsUtils.js";import{TextureCompressionTracker as Ct}from"../../support/TextureCompressionTracker.js";import{alphaCutoff as Mt}from"../../../webscene/support/AlphaCutoff.js";const xt=[1,1,1,1];class wt extends je{constructor(e,t,i,s,r,o,n,a,l,d,h){super(),this.node=e,this.featureIds=t,this.objectHandle=i,this.cachedRendererVersion=s,this.attributeInfo=r,this.material=o,this.textures=n,this.anchorIds=a,this.anchors=l,this._elevationAlignmentRange=new at,this._geometryElevationRange=new at,this.cachedElevationAnchors=null,this.cachedEdgeMaterials=new Array,this.edgeMemoryUsage=0,this.cachedSymbologyStride=5,this.elevationAlignmentOffset=0,this._baseGeometryElevationRange=new at(d,h),this.updateGeometryElevationRange()}get geometryElevationRange(){return this._geometryElevationRange}updateGeometryElevationRange(){const e=this._baseGeometryElevationRange;if(!e.elevationRangeValid||e.isEmpty)return this._elevationAlignmentRange.invalidateElevationRange(),void this._geometryElevationRange.invalidateElevationRange();const t=this.elevationOffsets;if(!t||0===t.length){const t=this.elevationAlignmentOffset;return this._elevationAlignmentRange.setElevationRangeValues(t,t),void this._geometryElevationRange.setElevationRangeValues(e.minElevation+t,e.maxElevation+t)}let i=1/0,s=-1/0;for(let r=0;r<t.length;++r){const e=this.elevationAlignmentOffset+(t[r]??0);i=Math.min(i,e),s=Math.max(s,e)}this._elevationAlignmentRange.setElevationRangeValues(i,s),this._geometryElevationRange.setElevationRangeValues(e.minElevation+i,e.maxElevation+s)}get usedMemory(){return this.node.memory}get featureExtents(){return this._featureExtents??=new Float64Array(6*this.featureIds.length).fill(Number.POSITIVE_INFINITY),this._featureExtents}}const Et=29,Rt=104857600,Ot=t=>{const f=t;let te=class extends f{constructor(){super(...arguments),this._extractChanges=null,this._applySSAO=!0,this._imShading=!!has("enable-feature:im-shading"),this._imVertexNormals=!!has("enable-feature:im-vertex-normals"),this._updatingHandles=new U,this._highlights=null,this._nodeId2Meta=new Map,this._nodeId2MetaReloading=new Map,this._i3sWasmLoaded=!1,this._snappingSourcesTrackers=[],this._compressionTracker=new Ct,this._hasLoadedPBRTextures=!1,this._asyncModuleLoading=0,this._addTasks=new Map,this._currentRenderer=null,this._rendererVersion=0,this._colorVariable=null,this._opacityVariable=null,this._rendererFields=null,this._symbologyFields=null,this._symbologyOverride=null,this._symbologyOverrideFields=null,this._symbolInfos=new Map,this._visibleGeometryChangedSchedulerHandle=null,this._hasComponentData=!1,this._hasVertexColors=!1,this._nodeColorOverride=null,this.updating=!0,this.holeFilling="auto",this._hasColors=!1,this._hasTextures=!1,this._hasData=!1,this.slicePlaneEnabled=!1,this._modifications=new Array,this.ignoresMemoryFactor=!1,this._layerUrl="",this._cacheKeySuffix=null,this._meshUtilsImporterModule=null,this._meshUtilsImporterPromise=null,this._planetRadiusInGlobalMode=0,this._elevationTask=null,this._needFilterResolve=!1,this._filters=[],this._arcade=null,this._tmpAttributeOnlyGraphic=new i,this._crossfadeHelper=new Se(this)}get lodCrossfadeoutDuration(){return 0}get lodCrossfadeinDuration(){return 0}get lodCrossfadeUncoveredDuration(){return 0}get extractChanges(){return this._extractChanges?.layer!==this.layer&&(this._extractChanges?.destroy(),this._extractChanges=new ne({layer:this.layer})),this._extractChanges}get layerViewUid(){return this.uid}get layerId(){return this.layer.id}get sublayerId(){return null}get _isIntegratedMesh(){return"integrated-mesh"===this.layer.type}get contentVisible(){return!this.suspended&&this._controller?.rootNodeVisible&&this.fullOpacity>Mt}get legendEnabled(){return this.contentVisible&&!0===this.layer?.legendEnabled}get updatingProgressValue(){return this._controller?.updatingProgress??0}get hasTexturesOrVertexColors(){return this._hasData?this._hasTextures||this._hasColors?"yes":"probably-not":"unknown"}get rendererTextureUsage(){return Ge(this._currentRenderer)?this._usePBR||this._hasLoadedPBRTextures?63:53:this._usePBR||this._hasLoadedPBRTextures?44:36}get elevationOffset(){const e=this.layer?.elevationInfo;return"absolute-height"===e?.mode?ce(e,this.layer.spatialReference):0}get elevationInfo(){const e=this.layer?.elevationInfo;switch(e?.mode){case"absolute-height":return new Lt(0,ce(e,this.layer.spatialReference));case"relative-to-ground":return new Lt(1,ce(e,this.layer.spatialReference));case"on-the-ground":return new Lt(2,0);default:return new Lt(0,0)}}get supportedTextureEncodings(){return De(this.view.stage.renderView.capabilities)}get clientGeometry(){return this.i3sOverrides.geometryOverrides}get elevationRange(){const e=this._nodeId2Meta,t=new at;for(const i of e.values()){const e=i?.geometryElevationRange;e?.elevationRangeValid&&!e.isEmpty&&t.expandElevationRange(e)}return t.elevationRangeValid&&!t.isEmpty?t:null}get fullExtent(){return this.layer.fullExtent}initialize(){const e=has("enable-feature:idb-mock-cache");this._idbCache=e?new Ze(this.view,e):new Xe("esri-scenelayer-cache","geometries"),this._preLoadBasis(),this.addResolvingPromise(this.layer.indexInfo);const t=this.view.resourceController,i=t.memoryController;this.i3sOverrides=new Ue({view:this.view,layer:this.layer,memoryController:i,extractChanges:this.extractChanges}),this._workerHandle=new Ce(ot(t)),this.addResolvingPromise(this._workerHandle.promise),Le(this.layer),Be(this.layer,this.view);const s=this.layer.store.defaultGeometrySchema;if(this.addResolvingPromise(this._workerHandle.setLegacySchema(this.uid,s).catch(d)),this._layerUrl=this.layer.parsedUrl.path,this._controller=new re({layerView:this,worker:this._workerHandle}),this._gpuMemoryEstimate=0,this._texMemoryEstimate=0,this._geoMemoryEstimate=0,this._stage=this.view.stage,this._collection=this._stage.renderView.componentObjectCollection,this._isIntegratedMesh||!s)this._hasComponentData=!1;else{const e=s.featureAttributes;this._hasComponentData=!!(e&&e.faceRange&&e.id)}this._hasVertexColors=null!=(s?.vertexAttributes.color??null)&&!this.layer.cachedDrawingInfo?.color;const r=this.view.resourceController.memoryController.newCache(`sl-${this.uid}`,e=>this._deleteComponentObject(e));this._memCache=r;const n=this._controller,l=this._nodeId2Meta,h=this._nodeId2MetaReloading;function*c(e){const t=n.index;if(!t)return;const i=t.rootNode;if(!i)return;let s=null;for(const r of t.traverseValues(i,t=>{const i=l.get(t.index)||h.get(t.index);return s=i?.objectHandle??null,e(t,s)}))yield new Ae(r,s)}this._intersectionHandler=new Fe({layerViewUid:this.layerViewUid,sublayerId:this.sublayerId,collection:this._collection,slicePlaneEnabled:this.slicePlaneEnabled,isGround:this._isIntegratedMesh,traverseNodeHierarchy:c}),this._elevationProvider=new et({view:this.view,layerElevationSource:this,intersectionHandler:this._intersectionHandler}),this._hasLoadedPBRTextures=this._usePBR,this._updatingHandles.add(()=>this.view.clippingArea,()=>this._clippingAreaChanged(),u),this._updatingHandles.add(()=>this.fullOpacity,e=>this._opacityChange(e)),this._updatingHandles.add(()=>this.slicePlaneEnabled,e=>this._slicePlaneEnabledChange(e)),this._updatingHandles.add(()=>this.elevationOffset,(e,t)=>{this._reloadAll(t),this._controller.invalidateVisibilityObbs()}),this._updatingHandles.add(()=>this.elevationInfo,(e,t)=>this._elevationInfoChanged(e,t),u),this._updatingHandles.add(()=>!this.suspended&&0!==this.elevationInfo.mode,(e,t)=>{e?this.addHandles(this.view.groundView.on("elevation-change",({extent:e})=>this._ensureElevationTask().addExtent(e)),zt):t&&this.removeHandles(zt)},u),this._updatingHandles.add(()=>this._usePBR,e=>this._updatePBR(e));const m=()=>{this._reloadAll(),this.clearMemCache()};this._updatingHandles.add(()=>this.rendererTextureUsage,m),this._updatingHandles.add(()=>this.contentVisible,e=>this._contentVisibleChanged(e),u),this._updatingHandles.add(()=>this.layer.labelsVisible,()=>this._labelingChanged(),u),this._updatingHandles.add(()=>this.layer.labelingInfo,()=>this._labelingChanged(),u),this._updatingHandles.add(()=>this._modifications,()=>this._modificationsChanged(),u),this.addHandles([g(()=>nt.I3S_TREE_SHOW_TILES,e=>{if(e&&!this._treeDebugger){const e=this._controller.crsIndex;import("./support/I3STreeDebugger.js").then(({I3STreeDebugger:t})=>{!this._treeDebugger&&nt.I3S_TREE_SHOW_TILES&&(this._treeDebugger=new t({lv:this,view:this.view,nodeSR:e}))})}else e||nt.I3S_TREE_SHOW_TILES||(this._treeDebugger=a(this._treeDebugger))},u),g(()=>nt.I3S_SHOW_MODIFICATIONS,()=>this._showModifications(),u)]),this._cacheKeySuffix=this._getCacheKeySuffix(),this._idbCache.init().catch(e=>o.getLogger(this).warn(`Failed to initialize IndexedDB cache: ${e}`));const{view:_}=this,{viewingMode:f,renderCoordsHelper:p}=_;this._planetRadiusInGlobalMode="local"===f?0:p.referenceEllipsoid.radius}destroy(){this._clearAddTasks(),this._elevationTask=a(this._elevationTask),this.i3sOverrides=a(this.i3sOverrides),this._extractChanges=a(this._extractChanges),this._elevationProvider&&(this._elevationProvider.notifyObjectsChanged(this.getVisibleObbs()),this.view.elevationProvider.unregister(this._elevationProvider),this._elevationProvider=null),this._intersectionHandler&&(this._stage.view.sceneIntersectionHelper.removeIntersectionHandler(this._intersectionHandler),this._intersectionHandler=null);const e=this._workerHandle;e&&(e.destroyContextAndSelf(this.uid),this._workerHandle=null),this._removeAllNodeDataFromStage(),this._memCache=a(this._memCache),this._collection=null,this._stage=null,this._edgeView=null,this._labeler=a(this._labeler),this._treeDebugger=a(this._treeDebugger),this._controller=a(this._controller),this._highlights=a(this._highlights),this._nodeId2Meta.clear(),this._nodeId2MetaReloading.clear(),this._crossfadeHelper=a(this._crossfadeHelper),this.emit("visible-geometry-changed"),this._visibleGeometryChangedSchedulerHandle&&(this._visibleGeometryChangedSchedulerHandle.remove(),this._visibleGeometryChangedSchedulerHandle=null),this._updatingHandles=a(this._updatingHandles)}_memEstimateTextureAdded(e){const t=e.usedMemory;return this._gpuMemoryEstimate+=t,this._texMemoryEstimate+=t,t}_memEstimateTextureRemoved(e){if(null!=e){const t=e.usedMemory;this._gpuMemoryEstimate-=t,this._texMemoryEstimate-=t}}_memEstimateGeometryAdded(e){const t=this._collection.getObjectGPUMemoryUsage(e);return this._gpuMemoryEstimate+=t,this._geoMemoryEstimate+=t,t}_memEstimateGeometryRemoved(e){const t=this._collection.getObjectGPUMemoryUsage(e);this._gpuMemoryEstimate-=t,this._geoMemoryEstimate-=t}isNodeLoaded(e){return this._nodeId2Meta.has(e)}isNodeReloading(e){return this._nodeId2MetaReloading.has(e)}get usedMemory(){let e=null!=this._labeler?this._labeler.usedMemory:0;return this._nodeId2Meta.forEach(t=>e+=null!=t?t.node.memory:0),this._nodeId2MetaReloading.forEach(t=>e+=null!=t?t.node.memory:0),e}get unloadedMemory(){return(null!=this._controller?this._controller.unloadedMemoryEstimate:0)+(null!=this._labeler?this._labeler.unloadedMemoryEstimate:0)}_labelingChanged(){if(!(we(this.layer)&&this._supportsLabeling))return void(null!=this._labeler&&(this._labeler.destroy(),this._labeler=null));if(null!=this._labeler)return;const e=new fe({view:this.view,layer:this.layer,collection:this._collection,overrides:this.i3sOverrides,layerViewUid:this.uid});this._nodeId2Meta.forEach(t=>null!=t&&this._addMetaToLabeler(e,t)),this._labeler=e}_loadAsyncModule(e){return++this._asyncModuleLoading,e.then(e=>(--this._asyncModuleLoading,e),e=>{throw--this._asyncModuleLoading,e})}_modificationsChanged(){if(!this._i3sWasmLoaded&&this.hasModifications)return this._i3sWasmLoaded=ye().then(()=>{this._i3sWasmLoaded=!0,this._modificationsChanged(),this.notifyUpdate()},()=>{}),void this.notifyUpdate();if(!0!==this._i3sWasmLoaded)return;const e=e=>o.getLogger(this).error("set-modifications-error","Error when setting modifications:",e),t=this.uid,i=this.layer.spatialReference,s=i.isGeographic,r=Me(this._layerClippingArea,this._modifications,i,this.view.state.isGlobal);this._workerHandle.setModifications(t,r,s).catch(e);try{be({context:t,modifications:r,isGeodetic:s})}catch(a){e(a)}this._controller.modificationsChanged();const n=this.hasModifications?new l:null;this._nodeId2Meta.forEach((e,t)=>{null==e?(this._nodeId2Meta.delete(t),this._controller.updateLoadStatus(t,!1)):e.node.hasModifications?(this._updateFeatureIdCounts(e,-1),this._nodeId2Meta.delete(t),this._nodeId2MetaReloading.set(t,e)):null!=n&&n.push(e.node)}),this.notifyChange("elevationRange"),null!=n&&this._nodeId2MetaReloading.forEach(e=>n.push(e.node)),null!=n&&n.length>0&&(this.updateNodeModificationStatus(n),n.forAll(e=>{if(2!==e.imModificationImpact){const t=this._nodeId2Meta.get(e.index);this._controller.invalidateGeometryVisibility(e.index),null!=t?(this._updateFeatureIdCounts(t,-1),this._nodeId2Meta.delete(e.index),this._nodeId2MetaReloading.set(e.index,t),this.notifyChange("elevationRange")):this._nodeId2Meta.has(e.index)&&(this._nodeId2Meta.delete(e.index),this._controller.updateLoadStatus(e.index,!1))}})),this.clearMemCache(),this._controller.restartNodeLoading(),this._showModifications()}_showModifications(){if(null!=this._modificationGraphics&&(this.view.graphics.removeMany(this._modificationGraphics),this._modificationGraphics=null),!nt.I3S_SHOW_MODIFICATIONS||0===this._modifications.length)return;const e={clip:[227,227,79,.8],mask:[227,139,79,.8],replace:[139,227,79,.8]},t={outline:{color:[255,255,255],width:1}};this._modificationGraphics=[];for(const s of this._modifications){const r=s.geometry;r.spatialReference=this.layer.spatialReference;const o=new me({...t,color:e[s.type]});this._modificationGraphics.push(new i({geometry:r,symbol:o}))}this.view.graphics.addMany(this._modificationGraphics)}_addMetaToLabeler(e,t){e.addNodeMeta(t,(e,t)=>this._createAttributes(e,t))}_contentVisibleChanged(e){e?(this.view.elevationProvider.register(this._elevationContext,this._elevationProvider),this._stage.view.sceneIntersectionHelper.addIntersectionHandler(this._intersectionHandler)):(this._removeAllNodeDataFromStage(),this.view.elevationProvider&&this.view.elevationProvider.unregister(this._elevationProvider),this._stage.view.sceneIntersectionHelper.removeIntersectionHandler(this._intersectionHandler))}getLoadedAttributes(e){const t=this._nodeId2Meta.get(e);if(null!=t?.attributeInfo)return t.attributeInfo.loadedAttributes}getAttributeData(e){const t=this._nodeId2Meta.get(e);if(null!=t?.attributeInfo)return t.attributeInfo.attributeData}setAttributeData(e,t){const i=this._nodeId2Meta.get(e);null!=i?.attributeInfo&&(i.attributeInfo.attributeData=t,this._attributeValuesChanged(i))}async updateAttributes(e,t,i){const s=this._nodeId2Meta.get(e);null!=s&&(await this.i3sOverrides.applyAttributeOverrides(s.featureIds,t,i,this._controller.requiredAttributes),s.attributeInfo=t,this._controller.reschedule(()=>{this._nodeId2Meta.get(e)===s&&this._attributeValuesChanged(s)},i).catch(e=>{h(e)||o.getLogger(this).warn("Error while updating attribute values. Layer might not display correctly.",e)}))}_attributeValuesChanged(e){e.cachedRendererVersion=this._getInvalidRendererVersion(),e.appliedFilters=null,null!=this._labeler&&this._labeler.setNodeMetaAttributes(e,(e,t)=>this._createAttributes(e,t)),this._updateEngineObject(e)}clearMemCache(){null!=this._memCache&&this._memCache.clear(),this._addTasks.forEach(e=>e.allowMemCache=!1)}getVisibleNodes(){const e=new Array;return this._nodeId2Meta.forEach(t=>null!=t&&e.push(t.node)),e}getVisibleObbs(){const e=new Array;return this._nodeId2Meta.forEach(t=>t&&e.push(this._collection.getComponentObb(t.objectHandle))),e}getLoadedNodeIndices(e){this._nodeId2Meta.forEach((t,i)=>e.push(i)),this._nodeId2MetaReloading.forEach((t,i)=>e.push(i))}_preLoadBasis(){!has("disable-feature:i3s-basis")&&2&this.supportedTextureEncodings&&this.layer.textureSetDefinitions?.some(e=>e.formats.some(e=>"basis"===e.format||"ktx2"===e.format))&&vt()}_getVertexBufferLayout(e,t){return ut(mt(this._getGeometryParameters({hasTexture:Tt(e.params.material),hasNormals:t.normal,hasRegions:t.uvRegion})))}_getObjectIdField(){return this.layer.objectIdField||se}_getGlobalIdField(){return this.layer.globalIdField}_findGraphicNodeAndIndex(e){const t=it(this.layer.fieldsIndex,e.attributes,this._getObjectIdField());for(const i of this._nodeId2Meta.values()){const e=i?.featureIds.indexOf(t);if(null!=e&&e>=0)return{node:i.node,index:e}}return null}_getGraphicIndices(e,t){const i=this._nodeId2Meta.get(e.index);if(null==i)return[];const s=[],r=this._getObjectIdField(),o=this.layer.fieldsIndex;for(const n of t){const e=it(o,n.attributes,r),t=i.featureIds.indexOf(e);-1!==t&&s.push(t)}return s}whenGraphicBounds(e){const t=this._findGraphicNodeAndIndex(e);if(!t)return Promise.reject();const i=this.getAABB(t.node.index,t.index);return null==i?Promise.reject():Promise.resolve({boundingBox:i,screenSpaceObjects:[]})}getAABBFromIntersectorTarget(e){return null==e.nodeIndex||null==e.componentIndex?null:this.getAABB(e.nodeIndex,e.componentIndex)}getAABB(e,t){const i=this._nodeId2Meta.get(e);if(null==i?.featureIds||t>=i.featureIds.length)return null;const s=i.objectHandle,r=Ve(t,this._collection,s,Y(24),0),o=this.view.renderSpatialReference,n=this.view.spatialReference;return B(r,o,0,r,n,0)?W(r):null}whenGraphicAttributes(e,t){return qe(this.layer,e,this._getObjectIdField(),t,()=>this._nodeId2Meta.values().filter(r).toArray())}getGraphicFromIntersectorTarget(e,t){if(null==e.nodeIndex||null==e.componentIndex)return null;const i=this._nodeId2Meta.get(e.nodeIndex);if(null==i?.featureIds||e.componentIndex>=i.featureIds.length)return null;const s=this._createLayerGraphic(this._createAttributes(e.componentIndex,i));return s?this._meshUtilsImporterModule?(s.geometry=this._meshUtilsImporterModule.createMesh({layerView:this,nodeIndex:e.nodeIndex,featureIndex:e.componentIndex}),s):t.defer?(t.defer(async()=>(s.geometry=(await this._meshUtilsImporter).createMesh({layerView:this,nodeIndex:e.nodeIndex,featureIndex:e.componentIndex}),s)),null):s:null}_getCacheKey(e){return`${this._layerUrl}/v${Et}/${e}${this._cacheKeySuffix}`}get _meshUtilsImporter(){return this._meshUtilsImporterPromise||(this._meshUtilsImporterPromise=import("./i3s/meshUtils.js"),this._meshUtilsImporterPromise.then(e=>this._meshUtilsImporterModule=e,()=>{})),this._meshUtilsImporterPromise}_getCacheKeySuffix(){const e=this.view.renderSpatialReference;if(null==e)return Wt;if(e===k(e))return Kt;return this.layer.spatialReference.equals(e)?$t:null!=e.wkid?`@${e.wkid}`:null}_getMemCacheKey(e,t=this.elevationOffset){return e+"#"+t}get _idbCacheEnabled(){return!this._controller.disableIDBCache&&!this.hasModifications&&0===this.elevationOffset&&null!=this._cacheKeySuffix}loadCachedGPUData(e){return null!=this._memCache?this._memCache.pop(this._getMemCacheKey(e)):null}deleteCachedGPUData(e){null!=e&&this._deleteComponentObject(e)}_cacheGPUData(e,t=this.elevationOffset){if(null==this._memCache)return void this._deleteComponentObject(e);const i=this._controller.indexDepth-e.node.level;this._memCache.put(this._getMemCacheKey(e.node.index,t),e,i)}loadMissingTextures(e,t,i,s){const r=e?.filter((e,i)=>{if(0===(e.usage&this.rendererTextureUsage))return!1;if(null==t)return!0;const s=Te(e.encodings,this.supportedTextureEncodings),r=t[i];return!!(null==r?.data||s&&r.encoding!==s.encoding)})??[];return 0===r.length?Promise.resolve(!1):i(r,s).then(i=>{let s=0;for(let r=0;r<e.length;r++)s<i.length&&i[s].id===e[r].id&&(t[r]=i[s],s++);return!0})}loadCachedNodeData(e,t,i){return this._idbCacheEnabled?this._idbCache.get(this._getCacheKey(e.id),t).then(s=>null==s?null:(s.globalTrafo=X(s.globalTrafo),s.nodeVersion!==e.version?(this._idbCache.remove(this._getCacheKey(e.id)),null):(0===this.elevationInfo.mode&&(e.geometryObbInRenderSR=dt.fromData(s.geometryObbData)),this.loadMissingTextures(s.requiredTextures,s.textureData,i,t).then(i=>(i&&this._idbCache.initialized&&null!=s.textureData&&(s.byteSize=Pt(s.transformedGeometry,s.textureData),s.textureData.every(Nt)&&this._indexedDbSizeCheck(e,s)&&this._idbCache.put(this._getCacheKey(e.id),s).catch(t=>o.getLogger(this).warn(`Failed to update node with textures in IndexedDB cache: ${e.id}: ${t}`))),c(t),s))))):Promise.resolve(null)}addNode(e,t,i){return Ht(t)?null==t.geometryBuffer?(this._addNodeMeta(e.index,null),Promise.resolve()):this._addData(e,t.attributeDataInfo,()=>this._transformNode(e,t,i).then(s=>this._safeReschedule(()=>{if(null==s)return e.hasModifications=!1,this._addCachedNodeData(e,null,i);const{obb:r,componentOffsets:n,featureIds:a,anchorIds:l,anchors:d,transformedGeometry:h,geometryMinElevation:c,geometryMaxElevation:u}=s;e.hasModifications=h.hasModifications;const g=X(s.globalTrafo),m=S(Bt,r.center.x,r.center.y,r.center.z);j(m,m,g);const _=new dt(m,[r.extents.x,r.extents.y,r.extents.z],O(r.orientation.x,r.orientation.y,r.orientation.z,r.orientation.w));0===this.elevationInfo.mode&&(e.geometryObbInRenderSR=_),t.geometryData.componentOffsets=n,a&&(t.geometryData.featureIds=Array.from(a)),t.geometryData.anchorIds=l,t.geometryData.anchors=d;const f={nodeVersion:e.version,geometryData:t.geometryData,requiredTextures:t.requiredTextures,textureData:t.textureData,transformedGeometry:h,globalTrafo:g,geometryObbData:_.data,geometryMinElevation:c,geometryMaxElevation:u,byteSize:Pt(h,t.textureData)};if(this._idbCacheEnabled&&this._idbCache.initialized&&this._indexedDbSizeCheck(e,f)){const t=null!=f.textureData?f.textureData.map(e=>Nt(e)?e:null):null;this._idbCache.put(this._getCacheKey(e.id),{...f,textureData:t}).catch(t=>o.getLogger(this).warn(`Failed to store node in IndexedDB cache: ${e.id}: ${t}`))}return this._addCachedNodeData(e,f,i)},i))):Promise.reject()}getElevationRange(e){const t=new at,i=this._controller,{index:s}=i;if(!s)return t;const{rootNode:r}=s;if(!r)return t;const o=this._nodeId2Meta,n=i.viewportQueries,a=i=>{const{childrenLoaded:s}=i;if(0===s)return!1;const r=n.getAndUpdateVisibilityObbInRenderSR(i);let a=null;if(r){if(!r.intersectSphereWithMBS(e,r.radius))return!1}else if(a=n.calculateServiceMbsInRenderSRElevationAdjusted(i),a?.isValid&&!e.intersects(a))return!1;const l=o.get(i.index);if(l){const{geometryObbInRenderSR:s}=i;if(!s||s.intersectSphereWithMBS(e)){const e=l.geometryElevationRange;e.elevationRangeValid&&!e.isEmpty&&t.expandElevationRange(e)}}return s-(l?1:0)>0};return s.traverse(r,a),t}computeVisibilityObb(e){return ze(e,this.view.renderSpatialReference,this._controller.crsIndex,this.layer.spatialReference,this.elevationOffset,this._modifications,this.view.renderCoordsHelper.sphericalPCPF)}_transformNode(e,t,i){const s=t.geometryData.geometries??[],r=new Array(s.length);for(let f=0;f<s.length;++f)r[f]=this._getVertexBufferLayout(s[f],t.geometryDescriptor);const o=this.layer.normalReferenceFrame,n=t.normalReferenceFrame??o??"none",a=e.serviceMbsInIndexSR,l=this.elevationOffset,d=this._controller.crsIndex,h=this._controller.crsVertex,c=this.view.renderSpatialReference,u=ke(a,l,n,d,c),g=q(d,h),m=q(h,c);if(null==g||null==m)return Promise.resolve(null);const _={context:this.uid,geometryBuffer:t.geometryBuffer,geometryData:t.geometryData,geometryDescriptor:t.geometryDescriptor,layouts:r,globalTrafo:u,geometryElevationOffset:l,mbs:a.toJSON(),obbData:e.serviceObbInIndexSR?.data,elevationOffset:l,planetRadiusInGlobalMode:this._planetRadiusInGlobalMode,needNormals:this._controller.isMeshPyramid||this._imVertexNormals,computeNormals:this._isIntegratedMesh&&this._imVertexNormals,normalReferenceFrame:n,indexToVertexProjector:g,vertexToRenderProjector:m};return this._workerHandle.invoke(_,i)}get _supportsNodeCrossFading(){return!this.view?.stage?.renderer.shadowsEnabled}get nodeCrossfadingEnabled(){return this._supportsNodeCrossFading&&(this.lodCrossfadeinDuration>0||this.lodCrossfadeoutDuration>0||this.lodCrossfadeUncoveredDuration>0)}get nodeFadeoutEnabled(){return this._supportsNodeCrossFading&&this.lodCrossfadeoutDuration>0}_setNewNodeOpacity(e){const t=this.nodeCrossfadingEnabled?0:this.fullOpacity;this._setNodeOpacity(e,t)}addCachedGPUData(e,t,i){if(0===this.elevationInfo.mode&&(e.geometryObbInRenderSR=this._collection.getComponentObb(t.objectHandle).clone()),!this._controller.isGeometryVisible(e))return void this._cacheGPUData(t);const s=e.index;this._addNodeMeta(s,t),this.updateNodeState(s,i),this._collection.setObjectVisibility(t.objectHandle,!0),this._updateElevationOffsets(t),null!=this._labeler&&this._addMetaToLabeler(this._labeler,t),this._updateMaterial(t),this._setNewNodeOpacity(t),0!==this.elevationInfo.mode&&this._ensureElevationTask().schedule(s),this._updateEngineObject(t),this._highlights?.objectCreated(t),null!=this._treeDebugger&&this._treeDebugger.update()}addCachedNodeData(e,t,i,s){return this._addData(e,i,()=>this._addCachedNodeData(e,t,s))}async deleteCachedNodeData(e){if(this._idbCacheEnabled)return this._idbCache.remove(this._getCacheKey(e))}async _addCachedNodeData(e,t,i){if(!this.contentVisible||!this._controller.isGeometryVisible(e))return void this._removeNodeStageData(e.index,this.elevationOffset,this._nodeId2MetaReloading);if(null==t)return void this._addNodeMeta(e.index,null);const s=this._addTasks.get(e.index),{geometryData:r,transformedGeometry:n}=t;await this.i3sOverrides.applyAttributeOverrides(r.featureIds,s.attributeInfo,i,this._controller.requiredAttributes);const a=null!=t.textureData?t.textureData.filter(e=>null!=e&&0!==(e.usage&this.rendererTextureUsage)):[];!has("disable-feature:i3s-basis")&&a.some(e=>null!=e&&(2===e.encoding||1===e.encoding))&&await vt(),e.memory=0;const{componentOffsets:l,geometries:d,featureIds:h,anchorIds:c,anchors:u}=r,g=this._collection,m=d[0],{layout:_,indices:f,interleavedVertexData:p,positionData:y,hasColors:O}=n,{material:S,geometryParameters:j}=this._materialParameters(m,_),A=p.byteLength/_[0].stride,D=l||new Uint32Array([0,f?f.length:A]),T=m.transformation?E(m.transformation):R(),N=X(t.globalTrafo);x(T,N,T);const U=w(H(),T),k=b(C(),T),L=this._isIntegratedMesh?this._imShading?2:0:1,B=j.textureCoordinateType,q=!v(k,M),$=new _t(_,L,B,q?1:0),W=new ft({interleavedVertexData:p,vertexCount:A,indexData:f},{positions:Z(y.data),indices:ee(y.indices)},D,$),K=this.view.renderSpatialReference,Q=this.view.groundView.spatialReference,J=dt.fromData(ht(t.geometryObbData)).getCenter(Zt),Y=[1,1,1];G(J,K,Y,Q)||o.getLogger(this).errorOnce("Unsupported coordinate system for IM overlay");const te=H();z(J,K,te,Q);const ie=C();I(ie,k);const se=H();V(se,F(se,J,U),ie);const re=te[0]-se[0]*Y[0],oe=te[1]-se[1]*Y[1],ne=2===j.textureCoordinateType,{textures:ae,texturePromise:le,materialParameters:de}=this._initMaterialAndTextures(S,a,ne,e),he=g.createObject(new gt(P(re,oe,Y[0],Y[1]),new yt(U,k),dt.fromData(ht(t.geometryObbData)),W,!this._isIntegratedMesh),de);e.memory+=this._memEstimateGeometryAdded(he),e.memory+=ae.reduce((e,t)=>e+(null!=t?this._memEstimateTextureAdded(t):0),0);const ce=!!S.hasParametersFromSource,ue="blend"!==S.alphaMode&&S.metallicRoughness.baseColorFactor[3]>=1,ge=new wt(e,h,he,this._getInvalidRendererVersion(),s.attributeInfo,{hasParametersFromSource:ce,isOpaque:ue},ae,c,u,t.geometryMinElevation,t.geometryMaxElevation);s.meta=ge,this._hasTextures||=t.requiredTextures?.some(({usage:e})=>!!(19&e))||!!e.resources.texture,this._hasData=!0,this._hasColors||=O,this.notifyChange("hasTexturesOrVertexColors");const me=this.slicePlaneEnabled;return Promise.all([this._addOrUpdateEdgeRendering(ge),le]).then(([t,s])=>(this._addTasks.has(e.index)&&t?.updateObjectVisibility(ge.objectHandle,!1).catch(e=>this._logEdgeViewError(e,this.layer.title)),this._safeReschedule(()=>{const i=this._addTasks.get(e.index);if(!i)return;if(this._addNodeMeta(e.index,ge),i.meta=null,!this.contentVisible)return void this._removeNodeStageData(e.index,this.elevationOffset);g.setObjectVisibility(he,!0),t?.updateObjectVisibility(ge.objectHandle,!0).catch(e=>this._logEdgeViewError(e,this.layer.title)),ge.attributeInfo=i.attributeInfo;const s=ge.cachedRendererVersion!==this._rendererVersion,r=me!==this.slicePlaneEnabled;this._updateElevationOffsets(ge);const o=ge.elevationOffsets;this._updateComponentData(ge);const n=this._applyFiltersToNode(ge);(s||null!=t&&(r||n||o))&&this._addOrUpdateEdgeRendering(ge),null!=this._labeler&&this._addMetaToLabeler(this._labeler,ge),this._visibleGeometryChanged(ge,0),this._highlights?.objectCreated(ge),this._updateMaterial(ge),this._setNewNodeOpacity(ge),null!=this._treeDebugger&&this._treeDebugger.update()},i))).catch(e=>{const{meta:t,allowMemCache:i}=s;throw s.meta=null,t&&i?this._cacheGPUData(t):t&&this._deleteComponentObject(t),e})}_addNodeMeta(e,t){if(this._removeNodeStageData(e,this.elevationOffset,this._nodeId2MetaReloading),this._nodeId2Meta.has(e)){o.getLogger(this).error("Removing duplicated node");const t=this._nodeId2Meta.get(e);t&&(this._deleteComponentObject(t),this._updateFeatureIdCounts(t,-1))}else this._controller.updateLoadStatus(e,!0);t&&(t.lodCrossfadeProgress=null,this.nodeCrossfadingEnabled&&Gt(t.cachedEdgeMaterials,0),this._updateFeatureIdCounts(t,1)),this._nodeId2Meta.set(e,t),this.notifyChange("elevationRange")}_updateElevationOffsets(e){if(!e.node.serviceMbsInIndexSR)return;const{view:t,elevationInfo:i}=this,s=this._controller.crsIndex,{groundView:r,groundSpatialReference:o,renderSpatialReference:n}=t,a=i.mode;if(0===a)return e.elevationAlignmentOffset=i.offset,e.elevationOffsets=null,e.updateGeometryElevationRange(),void this.notifyChange("elevationRange");if(e.elevationAlignmentOffset=0,null==n||null==o)return e.elevationOffsets=null,e.updateGeometryElevationRange(),void this.notifyChange("elevationRange");const l=this._collection.getObjectTransform(e.objectHandle);e.elevationOffsets=e.elevationOffsets??[];const d=Bt,h=qt,c=2===a,u=this.view.renderCoordsHelper,g=e.featureIds.length,m=(()=>{if(e.cachedElevationAnchors)return e.cachedElevationAnchors;const t=Y(3*g);e.cachedElevationAnchors=t;const{center:i}=e.node.serviceMbsInIndexSR;for(let r=0;r<g;r++){const a=3*r,c=e.anchorIds?.indexOf(r)??-1;e.anchors&&c>=0?(S(d,e.anchors[3*c],e.anchors[3*c+1],e.anchors[3*c+2]),A(d,d,i),z(d,s,d,o),t[a]=d[0],t[a+1]=d[1],t[a+2]=u.getAltitude(d)):(this._collection.getComponentAabb(e.objectHandle,r,h,!0),S(d,(h[0]+h[3])/2,(h[1]+h[4])/2,h[2]),V(d,d,l.rotationScale),A(d,d,l.position),t[a+2]=u.getAltitude(d),z(d,n,d,o),t[a]=d[0],t[a+1]=d[1])}return t})(),_=i.offset,f=e.elevationOffsets,p=(e,t)=>{const i=c?m[3*e+2]:0;f[e]=_+(t??0)-i};r.getElevations(m,g,p),e.updateGeometryElevationRange(),this.notifyChange("elevationRange")}_ensureElevationTask(){return null!=this._elevationTask||(this._elevationTask=new Re(this.view.resourceController.scheduler,e=>this._controller.updateElevationChanged(e,this.view.groundView.spatialReference)?.filterInPlace(e=>null!=this._nodeId2Meta.get(e)),e=>this._nodeElevationAlignmentChanged(this._nodeId2Meta.get(e)),()=>this.elevationInfo?.mode)),this._elevationTask}_elevationInfoChanged(e,t){const i=0!==e.mode,s=!!t&&t!==e&&0!==t.mode;this._intersectionHandler.updateElevationAlignState(i,this.view.state.viewingMode),i&&!s&&this._controller.removeAllGeometryObbs(),this._nodeId2Meta.forEach(e=>this._nodeElevationAlignmentChanged(e))}_nodeElevationAlignmentChanged(e){null!=e&&(this._updateElevationOffsets(e),this._updateComponentData(e),this._updateEdgeRendering(e),null!=this._labeler&&this._labeler.updateLabelPositions(e),this._updateSnappingSources(e,2),this._elevationProvider.notifyObjectChanged(this._collection.getComponentObb(e.objectHandle)))}_safeReschedule(e,t){return c(t),this._controller.reschedule(e,t)}_materialParameters(e,t){const i=null!=e.params.material?e.params.material:He(),s=t.some(({name:e})=>"uvRegion"===e),r=t.some(({name:e})=>"normalCompressed"===e),o=Tt(i);return{geometryParameters:this._getGeometryParameters({hasTexture:o,hasNormals:r,hasRegions:s}),material:i}}_initMaterialAndTextures(e,t,i,s){const r=this._stage.renderView,o=e=>{this._gpuMemoryEstimate-=e,this._texMemoryEstimate-=e,s.memory-=e},n=t.map(t=>Ne(t,e,i,r,this._compressionTracker,o));this._stage.addTextures(n);const{materialParameters:a,texturePromise:l}=Pe(e,n,t,this.view.stage.renderView.textures,{rendererTextureUsage:this.rendererTextureUsage,usePBR:this._usePBR,isIntegratedMesh:this._isIntegratedMesh,slicePlaneEnabled:this.slicePlaneEnabled,viewSpatialReference:this.view.spatialReference,applySSAO:this._applySSAO});return{textures:n,texturePromise:l,materialParameters:a}}_getGeometryParameters(e){return new pt(this._hasVertexColors,e.hasNormals,e.hasTexture?e.hasRegions?2:1:0)}_addData(e,t,i){let s=this._addTasks.get(e.index);if(s)s.attributeInfo=t;else{const r=Promise.withResolvers();s=new kt(t,null,r.promise),this._addTasks.set(e.index,s),i().then(r.resolve,r.reject).then(()=>this._addTasks.delete(e.index)).catch(t=>{throw this._addTasks.delete(e.index),t})}return s.promise}_clearAddTasks(){this._addTasks.forEach(e=>{null!=e.meta&&(this._cacheGPUData(e.meta),e.meta=null)}),this._addTasks.clear()}_clippingAreaChanged(){const e=this.view.renderSpatialReference,t=this.layer.spatialReference,i=Q();this._renderClippingArea=lt(this.view.clippingArea,i,e)?i:null;const s=Q();this._layerClippingArea=lt(this.view.clippingArea,s,t)?s:null,this._filterChange(),this._controller&&this._controller.updateClippingArea(this.view.clippingArea),this._isIntegratedMesh&&this._modificationsChanged()}get hasGeometryFilter(){return!1}_geometryFilterChange(){const e=this.hasGeometryFilter;this._controller.geometryFilterChanged(e),this._applyFilters(e),this._assertFeatureIdNodeCounts(e)}_assertFeatureIdNodeCounts(e){e&&!this._featureIdCounts?(this._featureIdCounts=Xt(this._nodeId2Meta.values()),this._filteredIdCounts=Xt(this._nodeId2Meta.values(),1),this._weaklyRemovedIdCounts=Xt(this._nodeId2Meta.values(),2),this.addHandles(g(()=>this._controller.updating,e=>{!e&&this._needFilterResolve&&(this.multiGeometryFilterResolve(),this._needFilterResolve=!1,this.notifyUpdate())},{sync:!0}),"updateFinished")):!e&&this._featureIdCounts&&(this._featureIdCounts=null,this._filteredIdCounts=null,this._weaklyRemovedIdCounts=null,this._mismatchShow=null,this._mismatchHide=null,this.removeHandles("updateFinished"),this._needFilterResolve=!1,this.notifyUpdate())}_updateFeatureIdCounts(e,t){this._featureIdCounts&&(this._needFilterResolve=!0,Yt(this._featureIdCounts,e.featureIds,t),Yt(this._filteredIdCounts,e.filteredIds,t),Yt(this._weaklyRemovedIdCounts,e.weaklyRemovedIds,t))}_updateFilteredIdCounts(e,t,i){this._filteredIdCounts&&(this._needFilterResolve=!0,Yt(this._filteredIdCounts,t,-1),Yt(this._filteredIdCounts,e.filteredIds,1),Yt(this._weaklyRemovedIdCounts,i,-1),Yt(this._weaklyRemovedIdCounts,e.weaklyRemovedIds,1))}_checkFeatureIdNodeCountInvariant(){const e=null!=this._featureIdCounts;if(this.hasGeometryFilter!==e&&o.getLogger(this).error("checkFeatureIdNodeCountInvariant()","LayerView should have feature id node counts if and only if it has a geometry filter",{layerView:this,hasNodeCounts:e}),!this._featureIdCounts||!this._filteredIdCounts)return;const t=Xt(this._nodeId2Meta.values());n(this._featureIdCounts,t)||o.getLogger(this).error("checkFeatureIdNodeCountInvariant()","Incorrect _featureIdCounts",{layerView:this,counts:this._featureIdCounts,expected:t});const i=Xt(this._nodeId2Meta.values(),1);n(this._filteredIdCounts,i)||o.getLogger(this).error("checkFeatureIdNodeCountInvariant()","Incorrect _filteredIdCounts",{layerView:this,counts:this._filteredIdCounts,expected:i});const s=Xt(this._nodeId2Meta.values(),2);n(this._weaklyRemovedIdCounts,s)||o.getLogger(this).error("checkFeatureIdNodeCountInvariant()","Incorrect _weaklyRemovedIdCounts",{layerView:this,counts:this._weaklyRemovedIdCounts,expected:i})}multiGeometryFilterResolve(){if(!this._featureIdCounts||!this._filteredIdCounts)return;let e=null,t=null;for(const[i,s]of this._filteredIdCounts){const r=this._featureIdCounts.get(i);if(r!==s){s+(this._weaklyRemovedIdCounts?.get(i)??0)===r?(e??=new Set,e.add(i)):(t??=new Set,t.add(i))}}_(e,this._mismatchShow)&&_(t,this._mismatchHide)||(this._mismatchShow=e,this._mismatchHide=t,this._nodeId2Meta.forEach(e=>{if(!e?.filteredIds)return;const t=Jt(e,this._mismatchShow,this._mismatchHide);this._collection.setAllComponentVisibilities(e.objectHandle,t),this._visibleGeometryChanged(e,2)}))}_filterChange(){this._applyFilters(this.hasGeometryFilter)}_applyFilters(e){this._filters=this.getFilters(),e?this._controller&&this._controller.requestUpdate():this._nodeId2Meta.forEach(e=>{e&&this._applyFiltersToNode(e)&&(this._addOrUpdateEdgeRendering(e),this._visibleGeometryChanged(e,2))})}getFilters(){const e=[],t=this._renderClippingArea;return null!=t&&e.push((e,i)=>this._boundingRectFilter(e,i,t)),e}addSqlFilter(e,t,i){if(null!=t){const s=t.fieldNames;e.push((e,r)=>this._sqlFilter(e,r,t,s,i))}}_sqlFilter(e,t,i,s,r){const o={},n=this._createLayerGraphic(o);if(!n)return;const a=this.layer.objectIdField,l=t.featureIds,d=t.attributeInfo?.attributeData;s.every(e=>e===a||null!=d?.[e])&&$e(e,l,e=>{o[a]=l[e];for(const i of s)i!==a&&(o[i]=d?Oe(d[i],e):null);try{return i.testFeature(n)}catch(t){return r(t),!1}})}_boundingRectNodeTest(e,t){return L(e.node.serviceMbsInIndexSR,this._controller.crsIndex,Dt,this.view.renderSpatialReference),We(t,Dt)}_boundingRectFeatureTest(e,t,i){return this._collection.getComponentAabb(e.objectHandle,t,St),K(St,jt),J(i,jt)}_boundingRectFilter(e,t,i){const s=this._collection,r=this._boundingRectNodeTest(t,i);if(3===r)return;if(0===r)return void(e.length=0);const o=s.getComponentCount(t.objectHandle);if(o.invisible+o.visible!==t.featureIds.length)return;const n=this._transformClippingArea(Vt,i,t.objectHandle);$e(e,t.featureIds,e=>this._boundingRectFeatureTest(t,e,n))}_transformClippingArea(e,t,i){const s=this._collection.getObjectTransform(i),r=s.position,o=s.rotationScale;return e[0]=(t[0]-r[0])/o[0],e[1]=(t[1]-r[1])/o[4],e[2]=(t[2]-r[0])/o[0],e[3]=(t[3]-r[1])/o[4],e}async _addOrUpdateEdgeRendering(e,t=!0){const i=e.objectHandle,{hasEdges:s,perFeatureEdgeMaterials:r}=this._getFilteredEdgeMaterials(e);s&&!this._edgeView&&(this._edgeView=await this._stage.renderer.loadEdgeView());const o=this._edgeView;if(!o)return null;const n=o.hasObject(i);if(s){if(n){if(this.nodeCrossfadingEnabled){Gt(r,this.getNodeOpacity(e))}return o.updateAllComponentMaterials(i,r,this.slicePlaneEnabled,t).catch(e=>this._logEdgeViewError(e,this.layer.title)),o.updateObjectVisibility(i,!0).catch(e=>this._logEdgeViewError(e,this.layer.title)),o.updateAllVerticalOffsets(i,e.elevationOffsets).catch(e=>this._logEdgeViewError(e,this.layer.title)),o}const s=await this._collection.addEdges(i,o,r,this.slicePlaneEnabled,e.elevationOffsets);return e.edgeMemoryUsage=s,e.node.memory+=s,o}return n&&(e.node.memory-=e.edgeMemoryUsage,e.edgeMemoryUsage=0,o.removeObject(i)),null}_applyFiltersToNode(e){const{filteredIds:t,weaklyRemovedIds:i}=e,s=this._applyFiltersToNodeComponents(e);return this._updateFilteredIdCounts(e,t,i),s&&this._labeler?.applyFilterChange(e),s}_applyFiltersToNodeComponents(e){const t=this._collection,i=t.getComponentCount(e.objectHandle),s=null!=e.filteredIds,r=0===i.invisible;if(t.setAllComponentVisibilities(e.objectHandle,"all"),0===this._filters.length)return e.filteredIds=null,!r;if(null!=e.filteredIds&&e.appliedFilters===this._filters||(e.weaklyRemovedIds=null,e.filteredIds=Qt(e,this._filters),e.appliedFilters=this._filters),s&&e.filteredIds===e.featureIds&&(!this._mismatchHide||e.filteredIds.every(e=>!this._mismatchHide?.has(e))))return!r;const o=Jt(e,this._mismatchShow,this._mismatchHide);return t.setAllComponentVisibilities(e.objectHandle,o),!0}_removeAllNodeDataFromStage(e=this.elevationOffset){this._nodeId2Meta.forEach((t,i)=>this._removeNodeStageData(i,e)),this._nodeId2MetaReloading.forEach((t,i)=>this._removeNodeStageData(i,e,this._nodeId2MetaReloading)),this._elevationTask=a(this._elevationTask)}removeNode(e){const t=this.elevationOffset;this._removeNodeStageData(e,t),this._removeNodeStageData(e,t,this._nodeId2MetaReloading),null!=this._elevationTask&&this._elevationTask.remove(e)}_removeNodeStageData(e,t,i=this._nodeId2Meta){i.has(e)&&this._controller.updateLoadStatus(e,!1);const s=i.get(e);null!=s?(this._collection.setObjectVisibility(s.objectHandle,!1),null!=this._edgeView&&this._edgeView.hasObject(s.objectHandle)&&this._edgeView.updateObjectVisibility(s.objectHandle,!1).catch(e=>this._logEdgeViewError(e,this.layer.title)),this._visibleGeometryChanged(s,1),null!=this._labeler&&this._labeler.removeNodeMeta(s),i.delete(e),this._highlights?.objectDeleted(s),i===this._nodeId2Meta?(this._updateFeatureIdCounts(s,-1),this._cacheGPUData(s,t),this.nodeCrossfadingEnabled&&this._crossfadeHelper.stopNodeFading(s)):this._deleteComponentObject(s),null!=this._treeDebugger&&this._treeDebugger.update()):i.delete(e)}_deleteComponentObject(e){if(null!=this._edgeView&&this._edgeView.removeObject(e.objectHandle),this._memEstimateGeometryRemoved(e.objectHandle),this._collection.destroyObject(e.objectHandle),e.textures)for(const t of e.textures)this._memEstimateTextureRemoved(t),this._stage.removeTexture(t)}updateNodeState(e,t){const i=this._nodeId2Meta.get(e);null!=i&&i.objectHandle.updateMaterial({polygonOffset:0===t?1:0})}updateNodeIndex(e,t){if(this._nodeId2Meta.has(e)){const i=this._nodeId2Meta.get(e);this._nodeId2Meta.delete(e),this._nodeId2Meta.set(t,i),this.notifyChange("elevationRange")}const i=this._nodeId2MetaReloading.get(e);i&&(this._nodeId2MetaReloading.delete(e),this._nodeId2MetaReloading.set(t,i))}_invalidateAllSymbols(){this._rendererVersion=Ke(this._rendererVersion,1),this._controller?.requestUpdate()}_getInvalidRendererVersion(){return Ke(this._rendererVersion,-1)}async _rendererChange(e){if(this._currentRenderer=e,this.notifyChange("rendererTextureUsage"),this._rendererVersion=Ke(this._rendererVersion,1),this._rendererFields=null,this._colorVariable=null,this._opacityVariable=null,this._invalidateAllSymbols(),e&&(this._rendererFields=await e.getRequiredFields(this.layer.fieldsIndex)),this._updateSymbologyFields(),!this._arcade&&e&&"arcadeRequired"in e&&e.arcadeRequired&&(this._arcade=await ue()),e&&"visualVariables"in e&&e.visualVariables)for(const t of e.visualVariables)"color"===t.type?this._colorVariable=t:"opacity"===t.type?this._opacityVariable=t:o.getLogger(this).warn(`Unsupported visual variable type for 3D Object Scene Services: ${t.type}`);if(e)for(const t of e.symbols)"mesh-3d"!==t.type&&o.getLogger(this).error(`Symbols of type '${t.type}' are not supported for 3D Object Scene Services.`);this._controller&&this._controller.requestUpdate()}_getCachedEdgeMaterials(e){return this._hasComponentData&&e.cachedRendererVersion!==this._rendererVersion&&this._updateCachedRendererData(e),e.cachedEdgeMaterials}_getComponentParameters(e){this._hasComponentData&&e.cachedRendererVersion!==this._rendererVersion&&this._updateCachedRendererData(e);const t=e.cachedSymbology;return(i,s)=>{const r=i*e.cachedSymbologyStride;N(s.externalColor,t[r]/255,t[r+1]/255,t[r+2]/255,t[r+3]/255);const o=this._stage.renderView.olidRenderHelper;if(o){const t=e.featureIds[i],r=this.sublayerId?`${this.layerViewUid}_${this.sublayerId}`:this.layerViewUid,n=he(this.view,this.uid);o.setUidToObjectAndLayerId(t,t,this.layerId,r,this.layerPopupEnabledAndHasTemplate&&!n,e.node.resources.attributes,i,this.sublayerId),s.olidColor=o.getObjectAndLayerIdColor({graphicUid:t,layerViewUid:r})}s.externalColorMixMode=15&t[r+4],s.castShadows=!!(16&t[r+4]),s.pickable=!!(32&t[r+4]),s.elevationOffset=e.elevationOffsets?.[i]??0,s.emissiveStrength=e.emissiveStrengths?.[i]??1,s.emissiveSource=e.emissiveSources?.[i]??0}}_getSymbolInfo(e,t){const i=e?.getSymbol(t,{arcade:this._arcade});if(!(i instanceof ge))return null;const s=i.id;if(this._symbolInfos.has(s))return this._symbolInfos.get(s);const r=Qe(i);return this._symbolInfos.set(s,r),r}_setSymbologyOverride(e,t){this._symbologyOverride!==e&&(this._symbologyOverride=e,this._symbologyOverrideFields=t,this._invalidateAllSymbols(),this._updateSymbologyFields())}_updateSymbologyFields(){this._symbologyFields=null!=this._symbologyOverrideFields&&this._symbologyOverrideFields.length>0?null!=this._rendererFields&&this._rendererFields.length>0?oe(this.layer.fieldsIndex,[...this._rendererFields,...this._symbologyOverrideFields]):this._symbologyOverrideFields:this._rendererFields}_updateCachedRendererData(e){if(e.cachedRendererVersion=this._rendererVersion,!this._hasComponentData)return;const t=this._tmpAttributeOnlyGraphic,i={};t.attributes=i;const s=this._currentRenderer,r=e.attributeInfo?.attributeData,o=e.featureIds?this.layer.objectIdField:null,n=null!=r&&null!=this._symbologyFields&&this._symbologyFields.length>0;let a=null,l=null;if(n&&null!=this._symbologyFields){a=[],l=[];for(const e of this._symbologyFields){const t=r[e];t&&(a.push(e),l.push(t))}}e.cachedSymbology||(e.cachedSymbology=ie(e.featureIds.length*e.cachedSymbologyStride));const d=new tt,h=this.fullOpacity,c=this.nodeCrossfadingEnabled?this.getNodeOpacity(e):h;let u=null,g=1,m=Je,_=0;for(let f=0;f<e.featureIds.length;f++){if(null!=o&&(i[o]=e.featureIds[f]),n&&a)for(let e=0;e<a.length;e++)i[a[e]]=Oe(l[e],f);const r=s?this._getSymbolInfo(s,t):null;let h,p;if(d.pickable=!0,s&&"visualVariables"in s){if(this._colorVariable){const e=le(this._colorVariable,t,{color:At,arcade:this._arcade});e&&(h=d.color,h[0]=e.r/255,h[1]=e.g/255,h[2]=e.b/255,h[3]=e.a??1,this._opacityVariable||null===e.a||(p=e.a))}this._opacityVariable&&(p=de(this._opacityVariable,t,{arcade:this._arcade}))}if(r?.material){const e=r.material;h=null==h||null==p?xe(h,p,e.color,e.alpha,xt,d.color):xe(h,p,null,null,xt,d.color)}h??=N(d.color,1,1,1,1);const y=r?.material;if(d.colorMixMode=y?.colorMixMode??1,d.edgeMaterial=r?.edgeMaterial,this._symbologyOverride?.(t,d),null!=this._nodeColorOverride&&(this._nodeColorOverride(e.node,h),d.colorMixMode=3),d.pickable&&=h[3]>=Mt,d.castShadows=r?r.castShadows:d.pickable,null!=d.edgeMaterial){const t=h[3]>=1&&(e.material.isOpaque||3===d.colorMixMode)?1:0;d.edgeMaterial===u&&t===g||(m={...d.edgeMaterial,opacity:c,objectTransparency:t},u=d.edgeMaterial,g=t),e.cachedEdgeMaterials[f]=m}else e.cachedEdgeMaterials[f]=Je;e.cachedSymbology[_++]=Math.round(255*h[0]),e.cachedSymbology[_++]=Math.round(255*h[1]),e.cachedSymbology[_++]=Math.round(255*h[2]),e.cachedSymbology[_++]=Math.round(255*h[3]),e.cachedSymbology[_++]=d.colorMixMode|+d.castShadows<<4|+d.pickable<<5;const b=y?.emissive?.strength??bt;b===bt||e.emissiveStrengths||(e.emissiveStrengths=new Array(e.featureIds.length).fill(bt)),e.emissiveStrengths&&(e.emissiveStrengths[f]=b);const v=y?.emissive?.source||0;0===v||e.emissiveSources||(e.emissiveSources=new Array(e.featureIds.length).fill(0)),e.emissiveSources&&(e.emissiveSources[f]=v)}}_getFilteredEdgeMaterials(e){const t=this._getCachedEdgeMaterials(e);this.nodeCrossfadingEnabled||Gt(t,this.fullOpacity);const i=e.filteredIds;if(null==i){return{hasEdges:t.some(e=>e!==Je),perFeatureEdgeMaterials:t}}let s=0,r=!1;const o=t.map((t,o)=>e.featureIds[o]!==i[s]?Je:(r=r||t!==Je,s++,t));return{hasEdges:r,perFeatureEdgeMaterials:o}}_updateComponentData(e){if(!this._hasComponentData)return;const{objectHandle:t}=e,i=this._getComponentParameters(e);this._collection.setComponentData(t,i),this._stage.renderView.requestRender()}_reloadAll(e=this.elevationOffset){this._removeAllNodeDataFromStage(e),null!=this._controller&&this._controller.restartNodeLoading()}_opacityChange(e){this.nodeCrossfadingEnabled&&this._crossfadeHelper.stopAllNodeFading(),this._nodeId2Meta.forEach(t=>{null!=t&&(this._collection.updateObjectOpacity(t.objectHandle,e),Gt(t.cachedEdgeMaterials,e),this._updateEdgeRendering(t))})}_updateMaterial(e){e.objectHandle.updateMaterial({slicePlaneEnabled:this.slicePlaneEnabled,usePBR:this._usePBR})}_updateEngineObject(e){this._updateComponentData(e),this._applyFiltersToNode(e),this._addOrUpdateEdgeRendering(e),this._visibleGeometryChanged(e,2)}intersect(e,t,i,s){this._intersectionHandler.intersectRay(e,t,i,s,null,!1)}_slicePlaneEnabledChange(e){this._intersectionHandler&&(this._intersectionHandler.slicePlaneEnabled=e),null!=this._labeler&&(this._labeler.slicePlaneEnabled=e),this._foreachMeta(t=>{t.objectHandle.updateMaterial({slicePlaneEnabled:e}),this._updateEdgeRendering(t,!1)})}_updatePBR(e){this._foreachMeta(t=>t.objectHandle.updateMaterial({usePBR:e})),this._hasLoadedPBRTextures=!0}_foreachMeta(e){this._nodeId2Meta.forEach(t=>{null!=t&&e(t)})}get _usePBR(){return this._imShading&&this.view.qualitySettings.physicallyBasedRenderingEnabled}_updateEdgeRendering(e,t=!0){null!=this._edgeView&&this._edgeView.hasObject(e.objectHandle)&&this._addOrUpdateEdgeRendering(e,t)}_forAllNodes(e){this._nodeId2Meta.forEach(e)}_ignoreClientNodeOverriddenFeatures(e){return this.i3sOverrides.hasGeometryChanges?(t,i,s)=>s.node.index>=0&&this.i3sOverrides.featureHasGeometryChanges(t)?0:e(t,i,s):e}_forAllFeatures(e,t,i){for(const s of this._nodeId2Meta.values())if(!(null==s||t&&s.node.serviceMbsInIndexSR&&1===t(s.node.serviceMbsInIndexSR)))switch(i){case 1:this._forAllFeaturesOfNode(s,e);break;case 0:this._forAllVisibleFeaturesOfNode(s,e);break;case 2:this._forAllQueryableFeaturesOfNode(s,e)}}_forAllFeaturesOfNode(e,t){e.featureIds.forEach((i,s)=>t(i,s,e))}_forAllVisibleFeaturesOfNode(e,t){const i=e.featureIds;this._collection.forEachVisibleComponent(e.objectHandle,s=>0===t(i[s],s,e))}_forAllQueryableFeaturesOfNode(e,t){const i=this._ignoreClientNodeOverriddenFeatures(t);if(null==this._renderClippingArea)return this._forAllFeaturesOfNode(e,i);const s=this._boundingRectNodeTest(e,this._renderClippingArea);if(0===s)return;if(3===s)return this._forAllFeaturesOfNode(e,i);const r=e.featureIds,o=e.objectHandle,n=Ye(this._renderClippingArea,this._collection.getObjectTransform(o));for(let a=0;a<r.length;a++)this._boundingRectFeatureTest(e,a,n)&&i(r[a],a,e)}_createAttributes(e,t){const i={};null!=t.featureIds&&(i[this._getObjectIdField()]=t.featureIds[e]);const s=t.attributeInfo?.attributeData;if(null!=s)for(const r of Object.keys(s))i[r]=Oe(s[r],e);return i}_createGraphic(e,t){return this._createLayerGraphic(this._createAttributes(e,t))}highlight(e,t){const s=st(e);if(0===s.length)return rt;const r=It(t),o=s[0]instanceof i?this._featureIdsFromGraphics(s):"number"==typeof s[0]?s:null;if(!o)return rt;const n=this._ensureHighlights(),{set:a,handle:l}=n.acquireSet(r);return n.setFeatureIds(a,o),l}_featureIdsFromGraphics(e){const t=this.layer.fieldsIndex,i=this._getObjectIdField();return e.map(e=>it(t,e.attributes,i))}_ensureHighlights(){return this._highlights??=new Ee({collection:this._collection,forAllFeatures:e=>this._forAllFeatures(e,null,1),forAllFeaturesOfNode:(e,t)=>this._forAllFeaturesOfNode(e,t)}),this._highlights}resetHighlights(){this._highlights=a(this._highlights)}_visibleGeometryChanged(e,t){this._elevationProvider&&(null==this._visibleGeometryChangedSchedulerHandle&&(this._visibleGeometryChangedSchedulerHandle=m(()=>{const{node:t}=e,i=t.visibilityObbInRenderSR??t.geometryObbInRenderSR??t.serviceObbInRenderSR;if(null!=i){const e=$();i.toAaBoundingBox(e),this.emit("visible-geometry-changed",new _e(e))}else this.emit("visible-geometry-changed");this._visibleGeometryChangedSchedulerHandle=null})),this._updateSnappingSources(e,t),this._elevationProvider.notifyObjectChanged(this._collection.getComponentObb(e.objectHandle)))}get performanceInfo(){return new pe(this.usedMemory,this._nodeId2Meta.size,Math.round(this._gpuMemoryEstimate/1048576),Math.round(this._geoMemoryEstimate/1048576),Math.round(this._texMemoryEstimate/1048576),Math.round(this.unloadedMemory/1048576),this._idbCacheEnabled?Math.round(100*this._idbCache.getHitRate()):0)}checkInvariants(){}get test(){}getNodeOpacityByIndex(e){const t=this._nodeId2Meta.get(e);return this.getNodeOpacity(t)}getNodeOpacity(e){return null!=e?this._collection.getObjectOpacity(e.objectHandle):0}isNodeFullyFadedIn(e){return this._crossfadeHelper.isNodeFullyFadedIn(e)}getNodeCrossfadeMetaData(e){return this._nodeId2Meta.get(e)}getNodeComponentHandle(e){return this._nodeId2Meta.get(e)?.objectHandle}markNodeToRemove(e){this._controller&&this._controller.markNodeToRemove(e)}removeMarkedNodes(){this._controller&&this._controller.removeMarkedNodes()}foreachCrossfadeNode(e){this._nodeId2Meta.forEach(e)}fadeNode(e,t,i){if(!this.nodeCrossfadingEnabled)return;const s=this._nodeId2Meta.get(e);null!=s&&this._crossfadeHelper.fadeNode(e,s,t,i)}setNodeOpacityByIndex(e,t){const i=this._nodeId2Meta.get(e);null!=i&&this._setNodeOpacity(i,t)}_setNodeOpacity(e,t){this._collection.updateObjectOpacity(e.objectHandle,t),this._setNodeEdgeOpacity(e,t)}_setNodeEdgeOpacity(e,t){if(null==this._edgeView||!e.cachedEdgeMaterials)return;Gt(e.cachedEdgeMaterials,t);const i=e.objectHandle;this._edgeView.hasObject(i)&&this._edgeView.updateAllComponentOpacities(i,t).catch(e=>this._logEdgeViewError(e,this.layer.title))}get hasModifications(){return this._isIntegratedMesh&&null!=this._layerClippingArea||this._modifications&&this._modifications.length>0}updateNodeModificationStatus(e){const t=e.length;if(!this.hasModifications||t<=0||!0!==this._i3sWasmLoaded)return;const i=this.uid,s=Ut(e);if(s){const t={context:i,buffer:s.buffer};ve(t);const r=new Float64Array(s.buffer);e.forAll((e,t)=>{const i=r[t],s=Ie(i);e.imModificationImpact=s,0!==s&&this._controller.invalidateGeometryVisibility(e.index)})}}notifyUpdate(){this.notifyChange("updating")}notifyLODUpdate(){this._controller.notifyLODUpdate()}isUpdating(){return!(!this._controller||!this._controller.updating)||!!this._visibleGeometryChangedSchedulerHandle||null!=this._labeler&&this._labeler.updating||this._crossfadeHelper?.updating||this._i3sWasmLoaded instanceof Promise||this._asyncModuleLoading>0||null!=this._elevationTask&&this._elevationTask.readyToRun||this._needFilterResolve||this._compressionTracker.compressing}trackSnappingSources(e){const t={events:e,fetchEdgeLocations:async(e,t,i)=>{const s=this._nodeId2Meta.get(e);if(null==s)throw new Error("invalid-node");const{origin:r,buffer:o}=await this._collection.extractEdgeInformation(s.objectHandle,t,i);return this._snappingLocationsApplyElevation(s,o,r),{type:"components",objectIds:s.featureIds,locations:o,origin:r}},remove:()=>s(this._snappingSourcesTrackers,t)};return this._snappingSourcesTrackers.push(t),this._nodeId2Meta.forEach((t,i)=>{if(null==t)return;const s=this._controller.getRenderMbs(t.node);s&&e.add(i,s)}),t}_snappingLocationsApplyElevation(e,t,i){if(!e.elevationOffsets||0===this.elevationInfo.mode)return;const s=t.position0,r=t.position1,o=t.componentIndex,n=H(),a=H(),l=(e,t)=>{A(e,e,i),this.view.renderCoordsHelper.worldUpAtPosition(e,a),A(e,e,D(a,a,t)),T(e,e,i)};for(let d=0;d<s.count;d++){const t=e.elevationOffsets[o.get(d)];s.getVec(d,n),l(n,t),s.setVec(d,n),r.getVec(d,n),l(n,t),r.setVec(d,n)}}_updateSnappingSources(e,t){const{index:i}=e.node,s=this._controller.getRenderMbs(e.node);if(null!=s)for(const r of this._snappingSourcesTrackers)1!==t&&2!==t||r.events.remove(i),0!==t&&2!==t||r.events.add(i,s)}_logEdgeViewError(e,t){h(e)||o.getLogger(this).warn("Error while processing edges. Edges on this layer might not display correctly",t,e)}_indexedDbSizeCheck(e,t){return t.byteSize>Rt?(o.getLogger(this).warn(`Node is too big to store in IndexedDB cache: ${e.id} (${t.byteSize} bytes)`),!1):t.byteSize>0}get elevationProvider(){return this._elevationProvider}};return e([p()],te.prototype,"extractChanges",null),e([p()],te.prototype,"_hasLoadedPBRTextures",void 0),e([p()],te.prototype,"_asyncModuleLoading",void 0),e([p()],te.prototype,"_visibleGeometryChangedSchedulerHandle",void 0),e([p()],te.prototype,"view",void 0),e([p()],te.prototype,"layer",void 0),e([p()],te.prototype,"_controller",void 0),e([p()],te.prototype,"_labeler",void 0),e([p()],te.prototype,"updating",void 0),e([p()],te.prototype,"suspended",void 0),e([p()],te.prototype,"contentVisible",null),e([p({readOnly:!0})],te.prototype,"legendEnabled",null),e([p(ct)],te.prototype,"updatingProgress",void 0),e([p()],te.prototype,"updatingProgressValue",null),e([p()],te.prototype,"hasTexturesOrVertexColors",null),e([p()],te.prototype,"rendererTextureUsage",null),e([p()],te.prototype,"elevationOffset",null),e([p()],te.prototype,"elevationInfo",null),e([p({type:Boolean})],te.prototype,"slicePlaneEnabled",void 0),e([p()],te.prototype,"supportedTextureEncodings",null),e([p({type:[ae]})],te.prototype,"_modifications",void 0),e([p({readOnly:!0})],te.prototype,"clientGeometry",null),e([p()],te.prototype,"elevationRange",null),e([p()],te.prototype,"fullExtent",null),e([p()],te.prototype,"_elevationTask",void 0),e([p({readOnly:!0})],te.prototype,"_usePBR",null),te=e([y("esri.views.3d.layers.I3SMeshView3D")],te),te},St=$(),jt=Q(),Vt=Q(),Ft=new dt,At=new t([0,0,0,0]),Dt=new te(0,0,0,0);function Tt(e){if(null==e)return!1;const t=e.metallicRoughness;return t&&t.baseColorTextureId>=0||t&&t.metallicRoughnessTextureId>=0||e.normalTextureId>=0||e.emissiveTextureId>=0||e.occlusionTextureId>=0}function Ht(e){return"geometryData"in e}function Nt(e){return null!=e&&f(e.data)}function Pt(e,t){let i=1024+e.interleavedVertexData.byteLength+(e.indices?e.indices.byteLength:0)+e.positionData.data.byteLength+e.positionData.indices.byteLength;if(null!=t)for(const s of t)null!=s&&f(s.data)&&(i+=s.data.byteLength);return i}function Ut(e){if(0===e.length)return;const t=10*e.length,i=new Float64Array(t);let s=0;return e.forAll(e=>{let t=e.serviceObbInIndexSR;null==t&&(t=Ft,e.serviceMbsInIndexSR?(t.setCenter(e.serviceMbsInIndexSR.center),t.setHalfSizeFromValues(e.serviceMbsInIndexSR.radius,e.serviceMbsInIndexSR.radius,e.serviceMbsInIndexSR.radius)):t.invalidate());const r=t.data;i[s++]=r[0],i[s++]=r[1],i[s++]=r[2],i[s++]=r[3],i[s++]=r[4],i[s++]=r[5],i[s++]=r[6],i[s++]=r[7],i[s++]=r[8],i[s++]=r[9]}),i}class kt{constructor(e,t,i){this.attributeInfo=e,this.meta=t,this.promise=i,this.allowMemCache=!0}}function Gt(e,t){e.forEach(e=>e.opacity=t)}class Lt{constructor(e,t){this.mode=e,this.offset=t}}const Bt=H(),qt=$(),zt="elevation-change",$t="",Wt="@null",Kt="@ECEF";function Qt(e,t){const i=e.featureIds.slice();for(const s of t)if(s(i,e),0===i.length)break;return i.length===e.featureIds.length?e.featureIds:i}function Jt(e,t,i){const s=new Array,r=e.filteredIds;if(null==r||t?.size||i?.size){if(null!=r){let o=0;e.featureIds.forEach((e,n)=>{if(r[o]===e)++o;else if(!t?.has(e))return;i?.has(e)||s.push(n)})}}else e.featureIds.forEach((e,t)=>{r[s.length]===e&&s.push(t)});return s}function Yt(e,t,i){if(e&&t)for(const s of t){const t=(e.get(s)??0)+i;t>0?e.set(s,t):e.delete(s)}}function Xt(e,t=0){const i=new Map;for(const s of e){Yt(i,0===t?s?.featureIds:1===t?s?.filteredIds:s?.weaklyRemovedIds,1)}return i}const Zt=H();export{Ot as I3SMeshView3D};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{transformMat3 as e}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{create as t}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{decompressNormal as r,compressNormal as n}from"../webgl-engine/lib/Normals.js";import{DataType as o}from"../../webgl/enums.js";import{VertexElementDescriptor as s}from"../../webgl/VertexElementDescriptor.js";class c{constructor(e,t){this.data=e,this.indices=t}}class
|
|
2
|
+
import{transformMat3 as e}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{create as t}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{decompressNormal as r,compressNormal as n}from"../webgl-engine/lib/Normals.js";import{DataType as o}from"../../webgl/enums.js";import{VertexElementDescriptor as s}from"../../webgl/VertexElementDescriptor.js";class c{constructor(e,t){this.data=e,this.indices=t}}class f{constructor(e,t,r,n,o){this.indices=e,this.packedNormals=t,this.appendedVertexToOriginal=r,this.outputVertexCount=n,this.appendedVertexCount=o}}function a(e,t,r,n,o){return!n||r.some(({name:e})=>"normal"===e||"normalCompressed"===e)?i(e,t,r,o):l(e,t,r,o)}function i(o,s,f,a){const i=new c(o.slice().buffer,s);if(!a)return i;const l=f[0].stride,d=i.data.byteLength/l;for(const c of f)if("normalCompressed"===c.name){const{offset:o}=c,s=new Int16Array(i.data),f=t();for(let t=0;t<d;++t)r(f,s,t,l/2,o/2),e(f,f,a),n(s,t,f[0],f[1],f[2],l/2,o/2)}else if("normal"===c.name){const{offset:r}=c,n=new Float32Array(i.data),o=t();for(let t=0;t<d;++t){const s=(t*l+r)/4;o[0]=n[s],o[1]=n[s+1],o[2]=n[s+2],e(o,o,a),n[s]=o[0],n[s+1]=o[1],n[s+2]=o[2]}}return i}function l(e,t,r,n){const c=r[0].stride,f=c/4,a=new Float32Array(e.buffer,e.byteOffset,e.byteLength/4),i=e.byteLength/c,l=1,m=l<r.length?r[l].offset/4:f,h=c+4;r.forEach((e,t)=>{e.stride=h,t>=l&&(e.offset+=4)}),r.splice(l,0,new s("normalCompressed",2,o.SHORT,12,h,!0));const y=d(t,a,f,n);return u(a,i,m,c,h,y)}function d(e,t,r,n){const o=e.length/3,s=t.length/r,{faceNormals:c,faceAreas:f,faceEdges:a,edgeFaces:i,vertexFaces:l,vertexFaceCountAndOffset:d}=w(t,r,s,e,o,n);return A(e,o,c,f,a,i),y(o,s,e,c,f,l,d)}function u(e,t,r,n,o,s){const f=n/4,a=o/4,i=s.outputVertexCount,l=new Float32Array(i*a),d=new Uint32Array(l.buffer),u=new Uint32Array(e.buffer,e.byteOffset,e.length);return m(d,a,r,u,f,t,s.packedNormals),h(d,a,r,u,f,t,i,s.appendedVertexToOriginal,s.packedNormals,!0),new c(l.buffer,s.indices)}function m(e,t,r,n,o,s,c){for(let f=0;f<s;++f){const s=f*o,a=f*t;for(let t=0;t<r;++t)e[a+t]=n[s+t];e[a+r]=c[f];for(let t=r;t<o;++t)e[a+t+1]=n[s+t]}}function h(e,t,r,n,o,s,c,f,a,i){for(let l=s;l<c;++l){const c=f[l-s]*o,d=l*t;for(let t=0;t<o;++t)e[d+t+(i&&t>=r?1:0)]=n[c+t];e[d+r]=a[l]}}function y(e,t,r,n,o,s,c){const a=3*e,i=new(a<256?Uint8Array:a<65536?Uint16Array:Uint32Array)(r);let l=t;const d=new(t<256?Uint8Array:t<65536?Uint16Array:Uint32Array)(a-t),u=new ArrayBuffer(4*a),m=new Int16Array(u),h=new Uint32Array(u);let y=0,w=0;const A=new Uint32Array(e);let g=0;const b=1-p;for(let f=0;f<t;++f){y=c[2*f+1],w=y+c[2*f];let e=f;for(;y<w;){{const t=s[--w],r=3*t,c=n[r],f=n[r+1],a=n[r+2];g=0,A[g++]=t;let i=y;for(;i<w;){const e=s[i],t=3*e;if(c*n[t]+f*n[t+1]+a*n[t+2]>b){A[g++]=e;const t=--w;if(i<t){s[i]=s[t];continue}}++i}let l=0,d=0,u=0;if(1===g)l=c,d=f,u=a;else{for(let t=0;t<g;++t){const e=A[t],r=o[e],s=3*e;l+=n[s]*r,d+=n[s+1]*r,u+=n[s+2]*r}const e=Math.sqrt(l*l+d*d+u*u)||1;l/=e,d/=e,u/=e}{const t=1/(Math.abs(l)+Math.abs(d)+Math.abs(u)),r=l*t,n=d*t;let o=r,s=n;u<=0&&(o=(r>=0?1:-1)*(1-Math.abs(n)),s=(n>=0?1:-1)*(1-Math.abs(r)));const c=2*e,f=Math.round(32767*o),a=Math.round(32767*s);m[c]=f<-32767?-32767:f>32767?32767:f,m[c+1]=a<-32767?-32767:a>32767?32767:a}}if(e!==f)for(let t=0;t<g;++t){const r=3*A[t];i[r]===f&&(i[r]=e),i[r+1]===f&&(i[r+1]=e),i[r+2]===f&&(i[r+2]=e)}if(y>=w)break;e=l++,d[e-t]=f}}return new f(i,h,d,l,l-t)}function w(e,t,r,n,o,s){const c=new Float32Array(3*o),f=new Float32Array(o),a=new Uint32Array(3*o),i=new Int32Array(2*(3*o)),l=3*o,d=new Uint32Array(l),u=new Uint32Array(2*r);for(let A=0;A<o;++A){const e=3*A;for(let t=0;t<3;++t){++u[2*n[e+t]]}}{let e=0;for(let t=0;t<r;++t){const r=2*t;u[r+1]=e;e+=u[r]}for(let t=0;t<o;++t){const e=3*t;for(let r=0;r<3;++r){d[u[2*n[e+r]+1]++]=t}}for(let t=0;t<r;++t)u[2*t+1]-=u[2*t]}let m=0;const h=new Uint32Array(2*l*2),y=new Uint32Array(2*r);for(let A=0;A<r;++A){const e=2*A,t=4*u[e+1];y[e]=t,y[e+1]=t}function w(e,t,r){const n=Math.min(e,t),o=Math.max(e,t),s=e<t?0:1,c=2*n,f=y[c],a=y[c+1];let l=-1;for(let i=f;i<a;i+=2)if(h[i]===o){l=h[i+1];break}return-1===l&&(l=m++,h[a]=o,h[a+1]=l,y[c+1]=a+2,i[2*l+(1-s)]=-1),i[2*l+s]=r,l}for(let A=0;A<n.length;A+=3){const r=n[A],o=r*t,i=e[o],l=e[o+1],d=e[o+2],u=n[A+1],m=u*t,h=e[m],y=e[m+1],g=e[m+2],b=n[A+2],x=b*t,p=i-h,$=l-y,U=d-g,v=i-e[x],F=l-e[x+1],M=d-e[x+2],E=$*M-U*F,C=U*v-p*M,O=p*F-$*v,I=Math.sqrt(E*E+C*C+O*O)||1,N=A/3;f[N]=.5*I;const V=1/I;if(s){const e=s[0]*E+s[3]*C+s[6]*O,t=s[1]*E+s[4]*C+s[7]*O,r=s[2]*E+s[5]*C+s[8]*O;c[3*N]=e*V,c[3*N+1]=t*V,c[3*N+2]=r*V}else c[3*N]=E*V,c[3*N+1]=C*V,c[3*N+2]=O*V;const j=w(r,u,N),k=w(u,b,N),q=w(b,r,N);a[3*N]=j,a[3*N+1]=k,a[3*N+2]=q}return{faceNormals:c,faceAreas:f,faceEdges:a,vertexFaces:d,vertexFaceCountAndOffset:u,edgeFaces:i}}function A(e,t,r,n,o,s){const c=new Uint8Array(t),f=new Uint32Array(t),a=new Uint32Array(3*t);let i=0;const l=new Uint32Array(t);let d=0;for(let u=0;u<e.length;u+=3){const e=u/3;if(1===c[e])continue;c[e]=1;const t=r[3*e],m=r[3*e+1],h=r[3*e+2];for(d=0,l[d++]=e,a[0]=o[3*e],a[1]=o[3*e+1],a[2]=o[3*e+2],i=3,f[e]=e+1;i>0;){const n=a[--i];for(let u=0;u<2;++u){const y=s[2*n+u];if(-1===y||f[y]===e+1)continue;f[y]=e+1;const w=r[3*y],A=r[3*y+1],g=r[3*y+2];if(Math.abs(1-(t*w+m*A+h*g))<x){l[d++]=y,c[y]=1;for(let e=0;e<3;++e){const t=o[3*y+e];t!==n&&(a[i++]=t)}}}}if(d>1){let e=0,t=0,o=0,s=0;for(let f=0;f<d;++f){const c=l[f],a=n[c];e+=a,t+=r[3*c]*a,o+=r[3*c+1]*a,s+=r[3*c+2]*a}const c=Math.sqrt(t*t+o*o+s*s)||1;t/=c,o/=c,s/=c;for(let f=0;f<d;++f){const c=l[f];r[3*c]=t,r[3*c+1]=o,r[3*c+2]=s,n[c]=e}}}}function g(e,t,r,n,o,s,c,f,a,i){const l=new Uint32Array(2*n);for(let d=0;d<r;++d){const e=a[2*d],t=a[2*d+1];for(let o=e;o<t;o+=2){const e=i[o],t=i[o+1];t>=n||t<0?console.error(`Invalid edge index ${t} for vertex ${d}`):e>=r||e<0||e<d?console.error(`Invalid vertex ${e} for edge ${t}`):(l[2*t]=d,l[2*t+1]=e)}}for(let d=0;d<t;++d){const t=[e[3*d],e[3*d+1],e[3*d+2]],r=[f[3*d],f[3*d+1],f[3*d+2]];for(const e of t){const t=o[2*e+1];b(s,t,t+o[2*e],1,d)||console.error(`Face ${d} not found in vertexFaces for vertex ${e}`)}for(const e of r){const t=c[2*e],r=c[2*e+1];-1!==t||-1!==r?d!==t&&d!==r&&console.error(`Edge ${e} of face ${d} does not list it as a face`):console.error(`Edge ${e} of face ${d} has no faces`)}}for(let d=0;d<n;++d){const e=c[2*d],t=c[2*d+1];if(-1===e&&-1===t){console.error(`Edge ${d} has no faces`);continue}for(const s of[e,t].filter(e=>-1!==e)){const e=f[3*s],t=f[3*s+1],r=f[3*s+2];d!==e&&d!==t&&d!==r&&console.error(`Edge ${d} not found in edgesPerFace for face ${s}`)}const r=l[2*d],n=l[2*d+1];r===n&&console.error(`Edge ${d} is degenerate with identical vertices ${r}`);const o=Math.min(r,n);b(i,a[2*o]+1,a[2*o+1],2,d)||console.error(`Edge ${d} not found in edgeMap for vertex ${o}`)}for(let d=0;d<r;++d){const r=o[2*d+1],n=o[2*d];for(let o=r;o<r+n;++o){const r=s[o];(r<0||r>=t)&&console.error(`Invalid face ${r} in vertexFaces for vertex ${d}`),b(e,3*r,3*r+3,1,d)||console.error(`Face ${r} in vertexFaces for vertex ${d} does not reference it in indices`)}}}function b(e,t,r,n,o){for(let s=t;s<r;s+=n)if(e[s]===o)return!0;return!1}const x=.04,p=.8;export{f as ComputedNormalData,c as NormalData,y as buildSmoothedIndexedNormalsData,w as calculateTopology,g as checkTopology,l as computeAndMaterializeNormals,d as computeNormals,A as mergeFaceNormals,i as packAndTransformNormals,a as processNormals,h as writeAddedVerticesAndNormals};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import t from"../../../core/Error.js";import{whenOnce as i}from"../../../core/reactiveUtils.js";import{property as
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../../core/Error.js";import{whenOnce as i}from"../../../core/reactiveUtils.js";import{property as a,subclass as r}from"../../../core/accessorSupport/decorators.js";import{LayerViewPerformanceInfo as l}from"./support/LayerViewPerformanceInfo.js";import{updatingProgress as s,updatingProgressValue as n}from"../support/updatingProperties.js";import{checkIfTileInfoSupportedForView as o}from"../terrain/terrainUtils.js";import{isScaleRangeActive as c,validateScaleRange as h}from"../../support/layerViewUtils.js";const m=m=>{const p=m;let u=class extends p{constructor(){super(...arguments),this.hasMixedImageFormats=!0}get imageFormatIsOpaque(){return!1}get fullExtent(){return this.layer.fullExtent}get isOpaque(){return this.fullOpacity>=1&&this.imageFormatIsOpaque}initialize(){this.addHandles(this.view.basemapTerrain.on("tile-data-changed",({layerClass:e,layerIndex:t})=>{1===e&&t===this.view.basemapTerrain.getLayerIndexByUID(1,this.uid)&&this.notifyChange("visibleAtCurrentScale")}))}tilesVisibleAtCurrentScale(){const{minScale:e,maxScale:t}=this.layer;if(!c(e,t))return!0;const{basemapTerrain:i}=this.view,a=i.getLayerIndexByUID(1,this.uid);if(null==a)return!1;const{tilingScheme:r}=i,l=e&&r.levelAtScale(e),s=t&&r.levelAtScale(t);return i.renderer.visibleTiles.some(e=>!!e.layerInfo[1][a]&&(!l||e.level>=l)&&(!s||e.level<=s))}get visibleAtCurrentScale(){return this.tilesVisibleAtCurrentScale()}get dataScaleRange(){const e=this.tileInfo.lods;let t=e[0].scale,i=e[e.length-1].scale;if("tilemapCache"in this.layer&&this.layer.tilemapCache){const{effectiveMinLOD:e,effectiveMaxLOD:a}=this.layer.tilemapCache;t=this.tileInfo.lodAt(e).scale,i=this.tileInfo.lodAt(a).scale}return{minScale:t,maxScale:i}}canResume(){const e=this.layer&&"effectiveScaleRange"in this.layer?this.layer.effectiveScaleRange:null;return this.visible&&this.layer?.loaded&&!this.parent?.suspended&&this.view?.ready&&h(e)&&this.visibleAtCurrentTimeExtent||!1}get dataLevelRange(){const{minScale:e,maxScale:t}=this.dataScaleRange;return this.levelRangeFromScaleRange(e,t)}get displayLevelRange(){const e=this.layer.minScale||this.dataScaleRange.minScale,t=this.layer.maxScale||this.dataScaleRange.maxScale,i=this.levelRangeFromScaleRange(e,t);return this.layer.maxScale&&i.maxLevel++,i}get performanceInfo(){return new l(this.view.basemapTerrain.getUsedMemoryForLayerView(this))}getTileUrl(e){return"getTileUrl"in this.layer?this.layer.getTileUrl(e[0],e[1],e[2]):null}_addTilingSchemeMatchPromise(){if(null==this.fullExtent)return this.addResolvingPromise(Promise.reject(new t("tilingscheme:extent-not-defined","This layer doesn't define a fullExtent.")));const e=this._getTileInfoSupportError(this.tileInfo,this.fullExtent);if(e)return this.addResolvingPromise(Promise.reject(e));this.addResolvingPromise(i(()=>this.view?.basemapTerrain?.tilingSchemeLocked).then(()=>{const e=this.view.basemapTerrain.tilingScheme,t="tilemapCache"in this.layer?this.layer.tilemapCache?.effectiveMaxLOD:void 0,i=this._getTileInfoCompatibilityError(this.tileInfo,e,t);if(i)throw i}))}_getTileInfoSupportError(e,i){const a=o(e,i,this.view.spatialReference,this.view.state.viewingMode,"tilemapCache"in this.layer?this.layer.tilemapCache?.effectiveMaxLOD:void 0);if(!a)return;const r={layer:this.layer,error:a};switch(a.name){case"tilingscheme:spatial-reference-mismatch":case"tilingscheme:global-unsupported-spatial-reference":case"tilingscheme:local-unsupported-spatial-reference":return new t("layerview:spatial-reference-incompatible","The spatial reference of this layer does not meet the requirements of the view",r);default:return new t("layerview:tiling-scheme-unsupported","The tiling scheme of this layer is not supported by SceneView",r)}}_getTileInfoCompatibilityError(e,i,a){return null!=e&&i.compatibleWith(e,a)?null:new t("layerview:tiling-scheme-incompatible","The tiling scheme of this layer is incompatible with the tiling scheme of the surface")}levelRangeFromScaleRange(e,t){const i={minLevel:0,maxLevel:1/0},a=this.view&&this.view.basemapTerrain&&this.view.basemapTerrain.tilingScheme;if(!a)return i;const r=a.levels[0],l=e=>{const t=Math.log(r.scale/e)/Math.LN2;return.5-Math.abs(.5-t%1)<1e-9?Math.round(t):Math.ceil(t)};return null!=e&&e>0&&(i.minLevel=Math.max(0,l(e))),null!=t&&t>0&&(i.maxLevel=Math.max(0,l(t))),i}isUpdating(){return!!(this.view&&this.view.basemapTerrain&&this.view.basemapTerrain.updating)}};return e([a({readOnly:!0})],u.prototype,"imageFormatIsOpaque",null),e([a({readOnly:!0})],u.prototype,"updating",void 0),e([a(s)],u.prototype,"updatingProgress",void 0),e([a(n)],u.prototype,"updatingProgressValue",void 0),e([a()],u.prototype,"hasMixedImageFormats",void 0),e([a()],u.prototype,"fullExtent",null),e([a({readOnly:!0})],u.prototype,"isOpaque",null),e([a({readOnly:!0})],u.prototype,"visibleAtCurrentScale",null),e([a()],u.prototype,"dataScaleRange",null),e([a({readOnly:!0})],u.prototype,"dataLevelRange",null),e([a({readOnly:!0})],u.prototype,"displayLevelRange",null),e([a()],u.prototype,"layer",void 0),u=e([r("esri.views.3d.layers.TiledLayerView3D")],u),u};export{m as TiledLayerView3D};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import e from"../../../../core/Logger.js";import{throwIfAborted as
|
|
2
|
+
import e from"../../../../core/Logger.js";import{throwIfAborted as r}from"../../../../core/promiseUtils.js";import{loadArcade as t}from"../../../../support/loadArcade.js";const n=()=>e.getLogger("esri.views.3d.layers.graphics.featureExpressionInfoUtils");function c(e){return{cachedResult:e.cachedResult,arcade:e.arcade?{func:e.arcade.func,context:e.arcade.modules.arcadeUtils.createExecContext(null,{sr:e.arcade.context.spatialReference}),modules:e.arcade.modules}:null}}function o(e){const r=e?.expression;if("string"==typeof r){const e=p(r);if(null!=e)return{cachedResult:e}}return null}async function u(e,n,c,o){const u=e?.expression;if("string"!=typeof u)return null;const a=p(u);if(null!=a)return{cachedResult:a};const s=await t();r(c);const l=s.arcadeUtils,i=l.createSyntaxTree(u);if(!i)return null;if(l.dependsOnView(i))return null!=o&&o.error("Expressions containing '$view' are not supported on ElevationInfo"),{cachedResult:0};const d=l.createFunction(i);if(!d)return null;return{arcade:{modules:s,func:d,context:l.createExecContext(null,{sr:n})}}}function a(e,r,t){return e.arcadeUtils.arcadeFeature.createFromGraphicLikeObject(e.arcadeUtils.createArcadeGeometryFromDehydratedGeometry(r.geometry),r.attributes,t,null)}function s(e,r){if(null!=e&&!f(e)){if(!r||!e.arcade)return void n().errorOncePerTick("Arcade support required but not provided");e.arcade.modules.arcadeUtils.updateExecContext(e.arcade.context,r)}}function l(e){if(null!=e){if(f(e))return e.cachedResult;const r=e.arcade;let t=r?.modules.arcadeUtils.executeFunction(r.func,r.context);return"number"!=typeof t&&(e.cachedResult=0,t=0),t}return 0}function i(e,r=!1){let t=e?.featureExpressionInfo;const n=t?.expression;return r||"0"===n||(t=null),t??null}const d={cachedResult:0};function f(e){return null!=e.cachedResult}function p(e){return"0"===e?0:null}export{c as clone,u as createContext,o as createContextWithoutExpressionSupport,a as createFeature,l as execute,i as extractExpressionInfo,s as setContextFeature,d as zeroContext};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{
|
|
2
|
+
import{create as e}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{Sphere as s}from"../../../../geometry/support/sphere.js";import{sphereIntersectsInfiniteRadialConeConservative as i,sphereIntersectsInfiniteVerticalCylinderConservative as t,finiteVerticalCylinderIntersectsFrustumConservative as n}from"../../support/ElevationAgnosticVisibility.js";import{ElevationRange as r}from"../../support/ElevationRange.js";class d extends r{constructor(e,i){super(NaN,NaN),this.id=e,this.serviceMbsInIndexSR=i,this._serviceMbsInRenderSRElevationAdjusted=new s(0,0,0,-1),this._serviceMbsInRenderSR=new s(0,0,0,-1),this._mbsConeInRenderSR=null}get serviceMbsInRenderSRElevationAdjusted(){return this._serviceMbsInRenderSRElevationAdjusted}updateServiceMbsInRenderSRElevationAdjusted(e){return this._serviceMbsInRenderSRElevationAdjusted.copyFrom(e),this._serviceMbsInRenderSRElevationAdjusted}get serviceMbsInRenderSR(){return this._serviceMbsInRenderSR}updateServiceMbsInRenderSR(e){return this._serviceMbsInRenderSR.copyFrom(e),this._serviceMbsInRenderSR}get mbsConeInRenderSR(){return this._mbsConeInRenderSR}updateMbsConeInRenderSR(e){return this._mbsConeInRenderSR=e.clone(),this._mbsConeInRenderSR}invalidateServiceBVsInRenderSR(){this._serviceMbsInRenderSRElevationAdjusted.invalidate(),this._serviceMbsInRenderSR.invalidate(),this._mbsConeInRenderSR=null,this.serviceObbInRenderSR?.invalidate()}shareServiceBVsInRenderSRWith(e){this.serviceObbInRenderSR=e.serviceObbInRenderSR,this._serviceMbsInRenderSRElevationAdjusted=e._serviceMbsInRenderSRElevationAdjusted,this._serviceMbsInRenderSR=e._serviceMbsInRenderSR,this._mbsConeInRenderSR=e._mbsConeInRenderSR}}class a extends d{constructor(e,s,i,t,n,r,d,a,o,h){super(e,i),this.index=s,this.childCount=t,this.level=n,this.resources=r,this.version=d,this.lodMetric=a,this.maxError=o,this.numFeatures=h,this.failed=!1,this.cacheState=0,this.vertexCount=0,this.memory=0,this.childrenLoaded=0,this.hasModifications=!1,this.imModificationImpact=4,this.elevationAgnosticBoundingVolume=new R}invalidateServiceBVsInRenderSR(){super.invalidateServiceBVsInRenderSR(),this.elevationAgnosticBoundingVolume.invalidate()}}class o{constructor(e,s,i,t){this.nodeHasLOD=e,this.isChosen=s,this.lodLevel=i,this.version=t}}class R{constructor(){this._data=[0,0,0,R.invalidRadius]}static{this.invalidRadius=-2}invalidate(){this._data[3]=R.invalidRadius}get valid(){return this._data[3]!==R.invalidRadius}get radius(){return this._data[3]}getAxis(e){return e[0]=this._data[0],e[1]=this._data[1],e[2]=this._data[2],e}set(e,s){this._data[0]=e[0],this._data[1]=e[1],this._data[2]=e[2],this._data[3]=s}intersectsFrustumConservative(e,s,r){if(!this.valid)return!0;const d=this.getAxis(h),{center:a,radius:o}=e.boundingSphere,R=o+r;return 1===s?this.radius>c||i(d,this.radius,a,R):t(d,this.radius,a,R)&&n(d,this.radius,a[2]-R,a[2]+R,e.planes)}}const h=e(),c=.9;export{R as ElevationAgnosticBoundingVolume,a as Node,d as NodeBoundingData,o as NodeTraversalState};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{normalize as e,sub as t,dot as i,scaleAndAdd as n,length as s,set as r,equals as o,subtract as a,len as c,sqrDist as l,copy as u,scale as d,dist as h,distance as m,squaredLength as p,squaredDistance as _,add as f}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as v}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{getReferenceEllipsoid as S}from"../../../../geometry/ellipsoidUtils.js";import{getSphericalPCPF as R}from"../../../../geometry/spatialReferenceEllipsoidUtils.js";import{projectBoundingSphere as g}from"../../../../geometry/projection/projectBoundingSphere.js";import{getProjector as C}from"../../../../geometry/projection/projectors.js";import{create as M,fromMatrix as b,intersectsSphere as x,createPoints as I}from"../../../../geometry/support/frustum.js";import{signedDistance as D,getNormal as P}from"../../../../geometry/support/plane.js";import{isPlateCarree as E}from"../../../../geometry/support/spatialReferenceUtils.js";import{Sphere as A}from"../../../../geometry/support/sphere.js";import{evaluateElevationAlignmentAtPoint as F}from"../graphics/elevationAlignmentUtils.js";import{ElevationContext as O}from"../graphics/ElevationContext.js";import{createContextWithoutExpressionSupport as V,extractExpressionInfo as w}from"../graphics/featureExpressionInfoUtils.js";import{intersectBoundingRectWithMbs as j}from"./I3SUtil.js";import{SweptSphereCylindricalVolume as L,SphereGlobal as B,SweptSphereConicalVolume as y}from"./SweptSphereVolume.js";import{Obb as T,computeOffsetObb as U}from"../../support/orientedBoundingBox.js";const H=1e5;class G{get _frustumMbsCenter(){return this._frustumMbs.center}get _frustumMbsRadius(){return this._frustumMbs.radius}get _frustumPlanes(){return this._frustum}constructor(e,t,i,n,s,r,o,a,c={}){this._indexSR=e,this._renderCoordsHelper=t,this._clippingArea=s,this._elevationProvider=r,this._viewingMode=o,this._options=c,this._frustum=M(),this._frustumMbs=new A,this._viewDirection=v(),this._useFrustumCulling=!1,this._poi=v(),this._cameraPOIDirection=v(),this._elevationContext=null,this.minCenterDistance=1/0,this.maxCenterDistance=0,this.maxLodLevel=2,this._screenspaceErrorBias=c.screenspaceErrorBias||1,this._progressiveLoadFactor=c.progressiveLoadFactor||1,this.updateCamera(i,n);const l=this._renderCoordsHelper.spatialReference;this._renderSR=l,this._renderSRSphericalPCPF=R(l),this._isGlobalMode=l===this._renderSRSphericalPCPF,this.updateElevationInfo(a),this._isECEFOBBInLocalMode=this._indexSR.isWGS84&&(l.isWebMercator||E(l)),this._indexSREllipsoidRadius=S(this._indexSR).radius,this._indexSRSphericalPCPF=R(e),this._projectorIndexSRToIndexSRSphericalPCPF=C(this._indexSR,this._indexSRSphericalPCPF)}updateElevationInfo(e){null!=e?(this._elevationContext=O.fromElevationInfo(e),this._elevationContext.setFeatureExpressionInfoContext(V(w(e,!1)))):this._elevationContext=null}updateCamera(s,r){if(this._useFrustumCulling=r,e(this._viewDirection,s.viewForward),r){b(s.viewMatrix,s.projectionMatrix,this._frustum,W);{const e=s.eye,r=q;t(r,W[4],e);const o=.5*i(r,r)/i(this._viewDirection,r),a=this._frustumMbs,c=a.center;n(c,e,this._viewDirection,o);const l=1+o;a.radius=l}}this._screenSizeFactor=1/(s.perScreenPixelRatio/2),this._camPos=s.eye,this._updateCameraPOIDirection(),this.minCenterDistance=1/0,this.maxCenterDistance=0}setPointOfInterest(e){this._poi=e,this._updateCameraPOIDirection()}updateScreenSpaceErrorBias(e){const t=this._screenspaceErrorBias;return this._screenspaceErrorBias=e,t}updateClippingArea(e){this._clippingArea=e}expandElevationRange(e,t,i){if(null==this._elevationContext)return;const n=e.serviceMbsInIndexSR;if(!n)return;const s="relative-to-scene"===this._elevationContext.mode?"scene":"ground",r=this._elevationProvider;if(r.getSphereElevationRange){const e=r.getSphereElevationRange(n,this._indexSR,s);if(e)return void i.expandElevationRange(e)}const[o,a,c]=n.center,l=r.getElevation(o,a,c,this._indexSR,s);l&&i.expandElevationRangeValues(l,l);const u=t?null:r.getRootElevationRange?.();u&&i.expandElevationRange(u)}calculateServiceMbsInRenderSR(e){const{serviceMbsInRenderSR:t}=e;if(t.isValid)return t;const{serviceMbsInIndexSR:i}=e;if(!i?.isValid)return t;const n=ne;return g(i,this._indexSR,n,this._renderSR),e.updateServiceMbsInRenderSR(n)}calculateServiceMbsInRenderSRElevationAdjusted(e){const{serviceMbsInRenderSRElevationAdjusted:t}=e;if(t.isValid)return t;const{serviceMbsInIndexSR:i}=e,n=this.calculateServiceMbsInRenderSR(e);if(!n.isValid||!i?.isValid)return t;const s=ne;s.copyFrom(n);const{_elevationContext:r}=this;if(r){const{minElevation:t}=e,{_renderCoordsHelper:n}=this,o=i.center;let a=0;if(Number.isFinite(t)){let i=0,c=0;const{maxElevation:l}=e,u=o[2];switch(r.mode){case"relative-to-ground":case"relative-to-scene":i=r.geometryZWithOffset(u,n)+t-u,c=l-t;break;case"on-the-ground":i=t-u,c=l-t}a=i+.5*c,s.radius+=.5*c}else s.radius<H&&(a=F(o,this._elevationProvider,r,n)-o[2]);a&&ce(s,a,this._viewingMode)}return e.updateServiceMbsInRenderSRElevationAdjusted(s)}_isGlobalMbsContainingPlanetCenter(e){return 1===this._viewingMode&&s(e.center)<=e.radius}calculateMbsConeInRenderSR(e){const{mbsConeInRenderSR:t}=e;if(t)return t;if(!e.elevationRangeValid)return null;let{minElevation:i,maxElevation:n}=e;if(!(Number.isFinite(i)&&i<n))return null;const s=this.calculateServiceMbsInRenderSR(e);if(!s.isValid)return null;const r=this._elevationContext;if("relative-to-ground"===r?.mode||"relative-to-scene"===r?.mode){const t=e.serviceMbsInIndexSR;if(!t?.isValid)return null;const s=t.center[2],o=r.geometryZWithOffset(s,this._renderCoordsHelper);if(2===this._viewingMode)i+=o,n+=o;else{const e=o-s;i+=e,n+=e}}const o=this._renderCoordsHelper.referenceEllipsoid.radius,a=2===this._viewingMode?new L(s,i,n):this._isGlobalMbsContainingPlanetCenter(s)?new B(s,o+i,o+n):new y(s,o+i,o+n);return e.updateMbsConeInRenderSR(a)}getAndUpdateVisibilityObbInRenderSR(e){{const t=e.visibilityObbInRenderSR;if(t)return t}const t=.01*this._indexSREllipsoidRadius,{serviceMbsInIndexSR:i,serviceObbInIndexSR:n}=e;if(null==n||!i||!n.isValid||this._isECEFOBBInLocalMode&&(n.halfSizeX>t||n.halfSizeY>t||n.halfSizeZ>t))return null;{let t=e.serviceObbInRenderSR;if(null==t)t=new T,e.serviceObbInRenderSR=t;else if(t.isValid)return t;const s=i.radius;let o=0,a=0;const c=n.centerZ,l=this._renderCoordsHelper,u=this._elevationContext;if(u&&e.elevationRangeValid){const{minElevation:t,maxElevation:i}=e;switch(u.mode){case"relative-to-ground":case"relative-to-scene":o=u.geometryZWithOffset(c,l)+t-c,a=i-t;break;case"on-the-ground":o=t-c,a=i-t}}else if(u&&s<H){const e=r(J,n.centerX,n.centerY,c);o=F(e,this._elevationProvider,u,l)-c}const d=a>0,h=d?Y:t;return n.transform(h,this._indexSR,this._renderSR,o,this._renderSRSphericalPCPF,this._indexSRSphericalPCPF,this._projectorIndexSRToIndexSRSphericalPCPF),d&&U(h,0,a,this._viewingMode,t),t}}getNodeObbInRenderSRIndependentOfElevationOffset(e){{const t=e.visibilityObbInRenderSR??e.serviceObbInRenderSR??null;if(t?.isValid)return t}const t=e.serviceObbInIndexSR;if(!t)return null;const i=.2;return 2===this._viewingMode&&Math.max(t.halfSizeX,t.halfSizeY,t.halfSizeZ)>i*this._indexSREllipsoidRadius?null:(t.transform(Y,this._indexSR,this._renderSR,void 0,this._renderSRSphericalPCPF,this._indexSRSphericalPCPF,this._projectorIndexSRToIndexSRSphericalPCPF),Y)}ensureElevationAgnosticBoundingVolume(e){return!e.elevationAgnosticBoundingVolume.valid&&e.level>0&&(1===this._viewingMode?this._updateElevationAgnosticBoundingVolumeGlobal(e):this._updateElevationAgnosticBoundingVolumeLocal(e)),e.elevationAgnosticBoundingVolume}_updateCameraPOIDirection(){o(this._poi,this._camPos)?this._cameraPOIDirection=this._viewDirection:(a(this._cameraPOIDirection,this._camPos,this._poi),e(this._cameraPOIDirection,this._cameraPOIDirection))}_updateElevationAgnosticBoundingVolumeGlobal(t){const n=this.getNodeObbInRenderSRIndependentOfElevationOffset(t),s=t.elevationAgnosticBoundingVolume;let r,o=-1;if(n){const t=J;n.getCenter(t),e(t,t),r=t,n.getCorners(K);for(const n of K){e(n,n);const r=i(n,t);if(r<=0)return void s.invalidate();const a=Math.sqrt(Math.max(0,1-r*r));o=Math.max(o,a)}}else{const i=t.serviceMbsInRenderSR;if(!i.isValid)return void s.invalidate();const{center:n,radius:a}=i,l=c(n);if(l<a)return void s.invalidate();o=a/l,r=e(ie,n)}s.set(r,o+fe)}_updateElevationAgnosticBoundingVolumeLocal(e){const t=e.elevationAgnosticBoundingVolume,i=this.getNodeObbInRenderSRIndependentOfElevationOffset(e);if(i){const e=i.getCenter(J);e[2]=0;let n=0;const s=Q;i.getCorners(K);for(const t of K){t[2]=0;const e=l(s,t);n=Math.max(n,e)}t.set(e,Math.sqrt(n))}else{const i=e.serviceMbsInRenderSR;if(i.isValid){const e=u(J,i.center);e[2]=0,t.set(e,i.radius)}}}isNodeVisible(e){if(!this._isMBSinClippingArea(this.calculateServiceMbsInRenderSR(e)))return!1;if(!this._useFrustumCulling)return!0;const t=this.getAndUpdateVisibilityObbInRenderSR(e);return t?t.intersectsFrustumConservativeApproximation(this._frustum):x(this._frustum,this.calculateServiceMbsInRenderSRElevationAdjusted(e))}isElevationAgnosticBoundingVolumeVisible(e){return!this._useFrustumCulling||(!e.valid||(1===this._viewingMode?this._isConeVisibleInFrustum(e):this._isCylinderVisibleInFrustum(e)))}_isConeVisibleInFrustum(s){if(!this._isConeVisibleInFrustumMbs(s)||!s.valid)return!1;const r=s.radius;if(r>pe)return!0;const o=this._frustumPlanes,a=this._frustumMbsCenter,c=s.getAxis(ie),l=i(c,a),u=this._frustumMbsRadius,h=l-u,m=l+u;if(h<=0)return!0;const p=d(Z,c,h),_=d(k,c,m),f=r/Math.sqrt(1-r*r);for(const v of o){const s=P(v),r=e(X,s),o=i(r,c);if(Math.abs(1-o)<_e)continue;const a=$;d(a,c,o),t(a,a,r),e(a,a);const l=ee;n(l,p,a,h*f);if(D(v,l)<=0)continue;n(l,_,a,m*f);if(D(v,l)<=0)continue;return!1}return!0}_isConeVisibleInFrustumMbs(e){const t=e.radius;if(t>pe)return!0;const n=this._frustumMbsRadius,s=this._frustumMbsCenter,r=c(s);if(r<=n)return!0;const o=e.getAxis(ie),a=i(o,s);{const e=d(N,o,a);if(h(e,s)<n)return!0}const l=a/r;if(a<=0){return-l<n}const u=Math.sqrt(1-l*l);if(u<t)return!0;const m=n/r;return u*Math.sqrt(1-m*m)-m*l<t}isObbVisibleIndependentOfElevation(e,t){if(!this._useFrustumCulling)return!0;if(!e.valid)return!0;const n=this._frustumMbsRadius,s=this._frustumMbsCenter,r=this._frustumPlanes,o=K;if(t.getCorners(o),1===this._viewingMode){const t=e.getAxis(ie),a=i(t,s),c=a-n,l=a+n;if(c<=0)return!0;for(const e of r){let n=!0;for(const s of o){const r=i(s,t),o=te;if(d(o,s,c/r),D(e,o)<=0){n=!1;break}const a=te;if(d(a,s,l/r),D(e,a)<=0){n=!1;break}}if(n)return!1}}else{const e=s[2]-n,t=s[2]+n;for(const i of r){let n=!0;const s=P(i),r=s[0],a=s[1],c=s[2],l=i[3];for(const i of o){const s=r*i[0]+a*i[1]+l;if(s+c*e<=0||s+c*t<=0){n=!1;break}}if(n)return!1}}return!0}_isCylinderVisibleInFrustum(e){const t=this._frustumMbsCenter,i=this._frustumMbsRadius,n=u(N,t);n[2]=0;const s=e.radius,r=e.getAxis(ie);return h(n,r)<=s+i}isGeometryVisible(e){if(!this._useFrustumCulling)return!0;const t=e.geometryObbInRenderSR;return t?.intersectsFrustumConservativeApproximation(this._frustum)??this.isNodeVisible(e)}_isMBSinClippingArea(e){return null==this._clippingArea||0!==j(this._clippingArea,e)}_screenSpaceDiameterMbs(e,t){const i=this.calcCameraDistanceToSurfaceAndUpdateMinmaxWithCenterDistance(e);return i<0?le:t/i*this._screenSizeFactor}calcCameraDistanceToSurfaceAndUpdateMinmaxWithCenterDistance(e){const t=this.calculateMbsConeInRenderSR(e);if(null==t)return this.calcCameraDistanceToSurfaceAndUpdateMinmaxWithSphere(e);const i=t.calculateSurfaceDistanceFromPoint(this._camPos),n=t.calculateCenterDistanceFromPoint(this._camPos);return this._updateMinMaxDistanceToCenter(n),i}calcCameraDistanceToSurfaceAndUpdateMinmaxWithSphere(e){return this.calcCameraDistanceToCenterAndUpdateMinmax(e)-this.calculateServiceMbsInRenderSRElevationAdjusted(e).radius}calcCameraDistanceToCenterAndUpdateMinmax(e){const t=this.calculateServiceMbsInRenderSRElevationAdjusted(e),i=m(t.center,this._camPos);return this._updateMinMaxDistanceToCenter(i),i}_calculateAngleDependentLoDForSphere(e,n){const r=t(Q,e,this._camPos),o=s(e),a=s(r);if(0===o||0===a)return 1;const c=(Math.abs(i(e,r))/o+n)/a;return Math.min(1,c)}calcAngleDependentLoD(e){const t=this.calculateMbsConeInRenderSR(e);if(null==t){const{center:t,radius:i}=this.calculateServiceMbsInRenderSRElevationAdjusted(e);return this._calculateAngleDependentLoDForSphere(t,i)}const{center:n,radius:r}=this.calculateServiceMbsInRenderSR(e);if(2===this._viewingMode)u(se,n),se[2]=t.lowerCenterHeight,u(re,n),re[2]=t.upperCenterHeight;else{const e=s(n);if(0===e)return 1;d(se,n,t.lowerCenterHeight/e),d(re,n,t.upperCenterHeight/e)}const o=this._calculateAngleDependentLoDForSphere(se,r),a=this._calculateAngleDependentLoDForSphere(re,r);if(2===this._viewingMode)u(oe,n),oe[2]=Math.max(t.lowerCenterHeight,Math.min(t.upperCenterHeight,this._camPos[2]));else{const e=s(n);if(0===e)return Math.max(o,a);const r=Math.max(t.lowerCenterHeight,Math.min(t.upperCenterHeight,i(this._camPos,n)/e));d(oe,n,r/e)}return Math.max(o,a,this._calculateAngleDependentLoDForSphere(oe,r))}hasLOD(e){return 0!==e.lodMetric}_getDistanceToSurfaceGlobeMode(e,t){const n=s(t.center),r=s(e)-n;d(se,e,i(e,t.center)/p(e));const o=_(t.center,se),c=t.radius;if(o<=c*c)return Math.abs(r);const l=d(se,t.center,1/n),u=d(re,l,n-c*c/(2*n)),h=a(oe,e,u),v=a(oe,h,d(ae,l,i(l,h))),S=f(oe,u,d(oe,v,c/s(v)));let R=m(e,S);if(r>=de){const t=a(re,e,S);let n=i(t,l)/s(t);n<he&&(n=me),R/=n}return R}_getDistanceToSurface(e,t){return this._isGlobalMode?this._getDistanceToSurfaceGlobeMode(e,t):z(e,t)}_applyGlobalFlatAngleCorrectionToConeDistance(e,t){t.calculateClosestCenterToPoint(this._camPos,ae);const n=s(ae);if(0===n)return e;if(s(this._camPos)-n<de)return e;const r=a(oe,this._camPos,ae),o=s(r);if(0===o)return e;const c=i(r,ae)/(o*n);return e/(c<he?me:c)}calculateScreenSpaceRelativeSphere(e){const t=this.calculateServiceMbsInRenderSRElevationAdjusted(e),i=this._getDistanceToSurface(this._camPos,t),n=i+t.radius;return this._updateMinMaxDistanceToCenter(n),2*i/this._screenSizeFactor}calculateScreenSpaceRelativeCone(e){const t=e.calculateCenterDistanceFromPoint(this._camPos);this._updateMinMaxDistanceToCenter(t);const i=e.calculateSurfaceDistanceFromPoint(this._camPos);return 2*(this._isGlobalMode?this._applyGlobalFlatAngleCorrectionToConeDistance(i,e):i)/this._screenSizeFactor}_updateMinMaxDistanceToCenter(e){e>0?(this.minCenterDistance=Math.min(this.minCenterDistance,e),this.maxCenterDistance=Math.max(this.maxCenterDistance,e)):(this.minCenterDistance=0,this.maxCenterDistance=Math.max(this.maxCenterDistance,-e))}getLodLevel(e){if(0===e.lodMetric)return 0;if(0===e.childCount)return this.maxLodLevel;if(this._useFrustumCulling&&this._progressiveLoadFactor<1){const t=this._progressiveLoadFactor*this._screenspaceErrorBias,i=this._screenspaceErrorBias;return this.evaluateLODmetric(e,t)?this.evaluateLODmetric(e,i)?2:1:0}return this.evaluateLODmetric(e,this._screenspaceErrorBias)?this.maxLodLevel:0}evaluateLODmetric(e,t){switch(e.lodMetric){case 1:{let i=this._screenSpaceDiameterMbs(e,(e.serviceMbsInIndexSR?.radius??0)*t);return this._options.angleDependentLoD&&(i*=this.calcAngleDependentLoD(e)),i<e.maxError}case 2:{const i=this.calculateMbsConeInRenderSR(e),n=i?this.calculateScreenSpaceRelativeCone(i):this.calculateScreenSpaceRelativeSphere(e);return e.maxError*t<=n}case 3:return this._screenSpaceDiameterMbs(e,e.maxError)*t<ue;case 4:return this.calcCameraDistanceToSurfaceAndUpdateMinmaxWithCenterDistance(e)>e.maxError*t}return!1}distToCameraPOIRay(e){if(null==e)return 0;const t=this.calculateServiceMbsInRenderSRElevationAdjusted(e),n=t.center,s=i(n,this._cameraPOIDirection),r=s*s,o=p(n)-r;return Math.sqrt(o)-t.radius}distCameraToPOI(){return m(this._camPos,this._poi)}}function z(e,t){const i=e[0]-t.center[0],n=e[1]-t.center[1],s=e[2]-t.center[2],r=i*i+n*n,o=t.radius;if(r<=o*o)return Math.abs(s);const a=Math.sqrt(r)-o;return Math.sqrt(s*s+a*a)}const W=I(),q=v(),N=v(),Z=v(),k=v(),X=v(),Y=new T,J=v(),K=[v(),v(),v(),v(),v(),v(),v(),v()],Q=v(),$=v(),ee=v(),te=v(),ie=v(),ne=new A,se=v(),re=v(),oe=v(),ae=v();function ce(e,t,i){if(2===i)e.center[2]+=t;else{const i=s(e.center);if(0===i)return void(e.radius+=Math.abs(t));d(e.center,e.center,1+t/i)}}const le=.5*Number.MAX_VALUE,ue=10,de=2e5,he=.08,me=1e-4,pe=.9,_e=.01,fe=.001;export{G as default};
|
|
2
|
+
import{normalize as e,length as t,set as i,equals as n,subtract as r,dot as s,len as o,sqrDist as a,copy as c,scale as l,sub as u,scaleAndAdd as d,distance as h,squaredLength as m,squaredDistance as p,add as _}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as f}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{getReferenceEllipsoid as v}from"../../../../geometry/ellipsoidUtils.js";import{getSphericalPCPF as S}from"../../../../geometry/spatialReferenceEllipsoidUtils.js";import{projectBoundingSphere as g}from"../../../../geometry/projection/projectBoundingSphere.js";import{getProjector as R}from"../../../../geometry/projection/projectors.js";import{intersectsSphere as C}from"../../../../geometry/support/frustum.js";import{signedDistance as b,getNormal as M}from"../../../../geometry/support/plane.js";import{isPlateCarree as x}from"../../../../geometry/support/spatialReferenceUtils.js";import{Sphere as I}from"../../../../geometry/support/sphere.js";import{evaluateElevationAlignmentAtPoint as D}from"../graphics/elevationAlignmentUtils.js";import{ElevationContext as P}from"../graphics/ElevationContext.js";import{createContextWithoutExpressionSupport as E,extractExpressionInfo as A}from"../graphics/featureExpressionInfoUtils.js";import{intersectBoundingRectWithMbs as F}from"./I3SUtil.js";import{SweptSphereCylindricalVolume as O,SphereGlobal as V,SweptSphereConicalVolume as j}from"./SweptSphereVolume.js";import{Frustum as w}from"../../state/Frustum.js";import{Obb as L,computeOffsetObb as B}from"../../support/orientedBoundingBox.js";const T=1e5,y=1;class U{get _frustumPlanes(){return this._frustum.planes}constructor(e,t,i,n,r,s,o,a,c={}){this._indexSR=e,this._renderCoordsHelper=t,this._clippingArea=r,this._elevationProvider=s,this._viewingMode=o,this._options=c,this._viewDirection=f(),this._useFrustumCulling=!1,this._poi=f(),this._cameraPOIDirection=f(),this._elevationContext=null,this.minCenterDistance=1/0,this.maxCenterDistance=0,this.maxLodLevel=2,this._screenspaceErrorBias=c.screenspaceErrorBias||1,this._progressiveLoadFactor=c.progressiveLoadFactor||1,this._frustum=new w(t),this.updateCamera(i,n);const l=this._renderCoordsHelper.spatialReference;this._renderSR=l,this._renderSRSphericalPCPF=S(l),this._isGlobalMode=l===this._renderSRSphericalPCPF,this.updateElevationInfo(a),this._isECEFOBBInLocalMode=this._indexSR.isWGS84&&(l.isWebMercator||x(l)),this._indexSREllipsoidRadius=v(this._indexSR).radius,this._indexSRSphericalPCPF=S(e),this._projectorIndexSRToIndexSRSphericalPCPF=R(this._indexSR,this._indexSRSphericalPCPF)}updateElevationInfo(e){null!=e?(this._elevationContext=P.fromElevationInfo(e),this._elevationContext.setFeatureExpressionInfoContext(E(A(e,!1)))):this._elevationContext=null}updateCamera(t,i){this._useFrustumCulling=i,e(this._viewDirection,t.viewForward),i&&this._frustum.update(t),this._screenSizeFactor=1/(t.perScreenPixelRatio/2),this._camPos=t.eye,this._updateCameraPOIDirection(),this.minCenterDistance=1/0,this.maxCenterDistance=0}setPointOfInterest(e){this._poi=e,this._updateCameraPOIDirection()}updateScreenSpaceErrorBias(e){const t=this._screenspaceErrorBias;return this._screenspaceErrorBias=e,t}updateClippingArea(e){this._clippingArea=e}expandElevationRange(e,t,i){if(null==this._elevationContext)return;const n=e.serviceMbsInIndexSR;if(!n)return;const r="relative-to-scene"===this._elevationContext.mode?"scene":"ground",s=this._elevationProvider;if(s.getSphereElevationRange){const e=s.getSphereElevationRange(n,this._indexSR,r);if(e)return void i.expandElevationRange(e)}const[o,a,c]=n.center,l=s.getElevation(o,a,c,this._indexSR,r);l&&i.expandElevationRangeValues(l,l);const u=t?null:s.getRootElevationRange?.();u&&i.expandElevationRange(u)}calculateServiceMbsInRenderSR(e){const{serviceMbsInRenderSR:t}=e;if(t.isValid)return t;const{serviceMbsInIndexSR:i}=e;if(!i?.isValid)return t;const n=Q;return g(i,this._indexSR,n,this._renderSR),e.updateServiceMbsInRenderSR(n)}calculateServiceMbsInRenderSRElevationAdjusted(e){const{serviceMbsInRenderSRElevationAdjusted:t}=e;if(t.isValid)return t;const{serviceMbsInIndexSR:i}=e,n=this.calculateServiceMbsInRenderSR(e);if(!n.isValid||!i?.isValid)return t;const r=Q;r.copyFrom(n);const{_elevationContext:s}=this;if(s){const{minElevation:t}=e,{_renderCoordsHelper:n}=this,o=i.center;let a=0;if(Number.isFinite(t)){let i=0,c=0;const{maxElevation:l}=e,u=o[2];switch(s.mode){case"relative-to-ground":case"relative-to-scene":i=s.geometryZWithOffset(u,n)+t-u,c=l-t;break;case"on-the-ground":i=t-u,c=l-t}a=i+.5*c,r.radius+=.5*c}else r.radius<T&&(a=D(o,this._elevationProvider,s,n)-o[2]);a&&ne(r,a,this._viewingMode)}return e.updateServiceMbsInRenderSRElevationAdjusted(r)}_isGlobalMbsContainingPlanetCenter(e){return 1===this._viewingMode&&t(e.center)<=e.radius}calculateMbsConeInRenderSR(e){const{mbsConeInRenderSR:t}=e;if(t)return t;if(!e.elevationRangeValid)return null;let{minElevation:i,maxElevation:n}=e;if(!(Number.isFinite(i)&&i<n))return null;const r=this.calculateServiceMbsInRenderSR(e);if(!r.isValid)return null;const s=this._elevationContext;if("relative-to-ground"===s?.mode||"relative-to-scene"===s?.mode){const t=e.serviceMbsInIndexSR;if(!t?.isValid)return null;const r=t.center[2],o=s.geometryZWithOffset(r,this._renderCoordsHelper);if(2===this._viewingMode)i+=o,n+=o;else{const e=o-r;i+=e,n+=e}}const o=this._renderCoordsHelper.referenceEllipsoid.radius,a=2===this._viewingMode?new O(r,i,n):this._isGlobalMbsContainingPlanetCenter(r)?new V(r,o+i,o+n):new j(r,o+i,o+n);return e.updateMbsConeInRenderSR(a)}getAndUpdateVisibilityObbInRenderSR(e){{const t=e.visibilityObbInRenderSR;if(t)return t}const t=.01*this._indexSREllipsoidRadius,{serviceMbsInIndexSR:n,serviceObbInIndexSR:r}=e;if(null==r||!n||!r.isValid||this._isECEFOBBInLocalMode&&(r.halfSizeX>t||r.halfSizeY>t||r.halfSizeZ>t))return null;{let t=e.serviceObbInRenderSR;if(null==t)t=new L,e.serviceObbInRenderSR=t;else if(t.isValid)return t;const s=n.radius;let o=0,a=0;const c=r.centerZ,l=this._renderCoordsHelper,u=this._elevationContext;if(u&&e.elevationRangeValid){const{minElevation:t,maxElevation:i}=e;switch(u.mode){case"relative-to-ground":case"relative-to-scene":o=u.geometryZWithOffset(c,l)+t-c,a=i-t;break;case"on-the-ground":o=t-c,a=i-t}}else if(u&&s<T){const e=i(q,r.centerX,r.centerY,c);o=D(e,this._elevationProvider,u,l)-c}const d=a>0,h=d?N:t;return r.transform(h,this._indexSR,this._renderSR,o,this._renderSRSphericalPCPF,this._indexSRSphericalPCPF,this._projectorIndexSRToIndexSRSphericalPCPF),d&&B(h,0,a,this._viewingMode,t),t}}getNodeObbInRenderSRIndependentOfElevationOffset(e){{const t=e.visibilityObbInRenderSR??e.serviceObbInRenderSR??null;if(t?.isValid)return t}const t=e.serviceObbInIndexSR;if(!t)return null;const i=.2;return 2===this._viewingMode&&Math.max(t.halfSizeX,t.halfSizeY,t.halfSizeZ)>i*this._indexSREllipsoidRadius?null:(t.transform(N,this._indexSR,this._renderSR,void 0,this._renderSRSphericalPCPF,this._indexSRSphericalPCPF,this._projectorIndexSRToIndexSRSphericalPCPF),N)}ensureElevationAgnosticBoundingVolume(e){return!e.elevationAgnosticBoundingVolume.valid&&e.level>0&&(1===this._viewingMode?this._updateElevationAgnosticBoundingVolumeGlobal(e):this._updateElevationAgnosticBoundingVolumeLocal(e)),e.elevationAgnosticBoundingVolume}_updateCameraPOIDirection(){n(this._poi,this._camPos)?this._cameraPOIDirection=this._viewDirection:(r(this._cameraPOIDirection,this._camPos,this._poi),e(this._cameraPOIDirection,this._cameraPOIDirection))}_updateElevationAgnosticBoundingVolumeGlobal(t){const i=this.getNodeObbInRenderSRIndependentOfElevationOffset(t),n=t.elevationAgnosticBoundingVolume;let r,a=-1;if(i){const t=q;i.getCenter(t),e(t,t),r=t,i.getCorners(Z);for(const i of Z){e(i,i);const r=s(i,t);if(r<=0)return void n.invalidate();const o=Math.sqrt(Math.max(0,1-r*r));a=Math.max(a,o)}}else{const i=t.serviceMbsInRenderSR;if(!i.isValid)return void n.invalidate();const{center:s,radius:c}=i,l=o(s);if(l<c)return void n.invalidate();a=c/l,r=e(K,s)}n.set(r,a+de)}_updateElevationAgnosticBoundingVolumeLocal(e){const t=e.elevationAgnosticBoundingVolume,i=this.getNodeObbInRenderSRIndependentOfElevationOffset(e);if(i){const e=i.getCenter(q);e[2]=0;let n=0;const r=k;i.getCorners(Z);for(const t of Z){t[2]=0;const e=a(r,t);n=Math.max(n,e)}t.set(e,Math.sqrt(n))}else{const i=e.serviceMbsInRenderSR;if(i.isValid){const e=c(q,i.center);e[2]=0,t.set(e,i.radius)}}}isNodeVisible(e){if(!this._isMBSinClippingArea(this.calculateServiceMbsInRenderSR(e)))return!1;if(!this._useFrustumCulling)return!0;const t=this.getAndUpdateVisibilityObbInRenderSR(e);return t?t.intersectsFrustumConservativeApproximation(this._frustumPlanes):C(this._frustum.planes,this.calculateServiceMbsInRenderSRElevationAdjusted(e))}isElevationAgnosticBoundingVolumeVisible(e){return!this._useFrustumCulling||(!e.valid||!!e.intersectsFrustumConservative(this._frustum,this._viewingMode,y)&&(1!==this._viewingMode||this._isConeVisibleInFrustum(e)))}_isConeVisibleInFrustum(t){const i=t.radius;if(i>le)return!0;const n=this._frustumPlanes,{center:r,radius:o}=this._frustum.boundingSphere,a=t.getAxis(K),c=s(a,r),h=o+y,m=c-h,p=c+h;if(m<=0)return!0;const _=l(G,a,m),f=l(z,a,p),v=i/Math.sqrt(1-i*i);for(const S of n){const t=M(S),i=e(W,t),n=s(i,a);if(Math.abs(1-n)<ue)continue;const r=X;l(r,a,n),u(r,r,i),e(r,r);const o=Y;d(o,_,r,m*v);if(b(S,o)<=0)continue;d(o,f,r,p*v);if(b(S,o)<=0)continue;return!1}return!0}isObbVisibleIndependentOfElevation(e,t){if(!this._useFrustumCulling)return!0;if(!e.valid)return!0;const{center:i,radius:n}=this._frustum.boundingSphere,r=n+y,o=this._frustumPlanes,a=Z;if(t.getCorners(a),1===this._viewingMode){const t=e.getAxis(K),n=s(t,i),c=n-r,u=n+r;if(c<=0)return!0;for(const e of o){let i=!0;for(const n of a){const r=s(n,t),o=J;if(l(o,n,c/r),b(e,o)<=0){i=!1;break}const a=J;if(l(a,n,u/r),b(e,a)<=0){i=!1;break}}if(i)return!1}}else{const e=i[2]-r,t=i[2]+r;for(const i of o){let n=!0;const r=M(i),s=r[0],o=r[1],c=r[2],l=i[3];for(const i of a){const r=s*i[0]+o*i[1]+l;if(r+c*e<=0||r+c*t<=0){n=!1;break}}if(n)return!1}}return!0}isGeometryVisible(e){if(!this._useFrustumCulling)return!0;const t=e.geometryObbInRenderSR;return t?.intersectsFrustumConservativeApproximation(this._frustumPlanes)??this.isNodeVisible(e)}_isMBSinClippingArea(e){return null==this._clippingArea||0!==F(this._clippingArea,e)}_screenSpaceDiameterMbs(e,t){const i=this.calcCameraDistanceToSurfaceAndUpdateMinmaxWithCenterDistance(e);return i<0?re:t/i*this._screenSizeFactor}calcCameraDistanceToSurfaceAndUpdateMinmaxWithCenterDistance(e){const t=this.calculateMbsConeInRenderSR(e);if(null==t)return this.calcCameraDistanceToSurfaceAndUpdateMinmaxWithSphere(e);const i=t.calculateSurfaceDistanceFromPoint(this._camPos),n=t.calculateCenterDistanceFromPoint(this._camPos);return this._updateMinMaxDistanceToCenter(n),i}calcCameraDistanceToSurfaceAndUpdateMinmaxWithSphere(e){return this.calcCameraDistanceToCenterAndUpdateMinmax(e)-this.calculateServiceMbsInRenderSRElevationAdjusted(e).radius}calcCameraDistanceToCenterAndUpdateMinmax(e){const t=this.calculateServiceMbsInRenderSRElevationAdjusted(e),i=h(t.center,this._camPos);return this._updateMinMaxDistanceToCenter(i),i}_calculateAngleDependentLoDForSphere(e,i){const n=u(k,e,this._camPos),r=t(e),o=t(n);if(0===r||0===o)return 1;const a=(Math.abs(s(e,n))/r+i)/o;return Math.min(1,a)}calcAngleDependentLoD(e){const i=this.calculateMbsConeInRenderSR(e);if(null==i){const{center:t,radius:i}=this.calculateServiceMbsInRenderSRElevationAdjusted(e);return this._calculateAngleDependentLoDForSphere(t,i)}const{center:n,radius:r}=this.calculateServiceMbsInRenderSR(e);if(2===this._viewingMode)c($,n),$[2]=i.lowerCenterHeight,c(ee,n),ee[2]=i.upperCenterHeight;else{const e=t(n);if(0===e)return 1;l($,n,i.lowerCenterHeight/e),l(ee,n,i.upperCenterHeight/e)}const o=this._calculateAngleDependentLoDForSphere($,r),a=this._calculateAngleDependentLoDForSphere(ee,r);if(2===this._viewingMode)c(te,n),te[2]=Math.max(i.lowerCenterHeight,Math.min(i.upperCenterHeight,this._camPos[2]));else{const e=t(n);if(0===e)return Math.max(o,a);const r=Math.max(i.lowerCenterHeight,Math.min(i.upperCenterHeight,s(this._camPos,n)/e));l(te,n,r/e)}return Math.max(o,a,this._calculateAngleDependentLoDForSphere(te,r))}hasLOD(e){return 0!==e.lodMetric}_getDistanceToSurfaceGlobeMode(e,i){const n=t(i.center),o=t(e)-n;l($,e,s(e,i.center)/m(e));const a=p(i.center,$),c=i.radius;if(a<=c*c)return Math.abs(o);const u=l($,i.center,1/n),d=l(ee,u,n-c*c/(2*n)),f=r(te,e,d),v=r(te,f,l(ie,u,s(u,f))),S=_(te,d,l(te,v,c/t(v)));let g=h(e,S);if(o>=oe){const i=r(ee,e,S);let n=s(i,u)/t(i);n<ae&&(n=ce),g/=n}return g}_getDistanceToSurface(e,t){return this._isGlobalMode?this._getDistanceToSurfaceGlobeMode(e,t):H(e,t)}_applyGlobalFlatAngleCorrectionToConeDistance(e,i){i.calculateClosestCenterToPoint(this._camPos,ie);const n=t(ie);if(0===n)return e;if(t(this._camPos)-n<oe)return e;const o=r(te,this._camPos,ie),a=t(o);if(0===a)return e;const c=s(o,ie)/(a*n);return e/(c<ae?ce:c)}calculateScreenSpaceRelativeSphere(e){const t=this.calculateServiceMbsInRenderSRElevationAdjusted(e),i=this._getDistanceToSurface(this._camPos,t),n=i+t.radius;return this._updateMinMaxDistanceToCenter(n),2*i/this._screenSizeFactor}calculateScreenSpaceRelativeCone(e){const t=e.calculateCenterDistanceFromPoint(this._camPos);this._updateMinMaxDistanceToCenter(t);const i=e.calculateSurfaceDistanceFromPoint(this._camPos);return 2*(this._isGlobalMode?this._applyGlobalFlatAngleCorrectionToConeDistance(i,e):i)/this._screenSizeFactor}_updateMinMaxDistanceToCenter(e){e>0?(this.minCenterDistance=Math.min(this.minCenterDistance,e),this.maxCenterDistance=Math.max(this.maxCenterDistance,e)):(this.minCenterDistance=0,this.maxCenterDistance=Math.max(this.maxCenterDistance,-e))}getLodLevel(e){if(0===e.lodMetric)return 0;if(0===e.childCount)return this.maxLodLevel;if(this._useFrustumCulling&&this._progressiveLoadFactor<1){const t=this._progressiveLoadFactor*this._screenspaceErrorBias,i=this._screenspaceErrorBias;return this.evaluateLODmetric(e,t)?this.evaluateLODmetric(e,i)?2:1:0}return this.evaluateLODmetric(e,this._screenspaceErrorBias)?this.maxLodLevel:0}evaluateLODmetric(e,t){switch(e.lodMetric){case 1:{let i=this._screenSpaceDiameterMbs(e,(e.serviceMbsInIndexSR?.radius??0)*t);return this._options.angleDependentLoD&&(i*=this.calcAngleDependentLoD(e)),i<e.maxError}case 2:{const i=this.calculateMbsConeInRenderSR(e),n=i?this.calculateScreenSpaceRelativeCone(i):this.calculateScreenSpaceRelativeSphere(e);return e.maxError*t<=n}case 3:return this._screenSpaceDiameterMbs(e,e.maxError)*t<se;case 4:return this.calcCameraDistanceToSurfaceAndUpdateMinmaxWithCenterDistance(e)>e.maxError*t}return!1}distToCameraPOIRay(e){if(null==e)return 0;const t=this.calculateServiceMbsInRenderSRElevationAdjusted(e),i=t.center,n=s(i,this._cameraPOIDirection),r=n*n,o=m(i)-r;return Math.sqrt(o)-t.radius}distCameraToPOI(){return h(this._camPos,this._poi)}}function H(e,t){const i=e[0]-t.center[0],n=e[1]-t.center[1],r=e[2]-t.center[2],s=i*i+n*n,o=t.radius;if(s<=o*o)return Math.abs(r);const a=Math.sqrt(s)-o;return Math.sqrt(r*r+a*a)}const G=f(),z=f(),W=f(),N=new L,q=f(),Z=[f(),f(),f(),f(),f(),f(),f(),f()],k=f(),X=f(),Y=f(),J=f(),K=f(),Q=new I,$=f(),ee=f(),te=f(),ie=f();function ne(e,i,n){if(2===n)e.center[2]+=i;else{const n=t(e.center);if(0===n)return void(e.radius+=Math.abs(i));l(e.center,e.center,1+i/n)}}const re=.5*Number.MAX_VALUE,se=10,oe=2e5,ae=.08,ce=1e-4,le=.9,ue=.01,de=.001;export{U as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{distance as e,length as t,normalize as r,scale as s,dot as i}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{fromValues as a,create as n}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";
|
|
2
|
+
import{distance as e,length as t,normalize as r,scale as s,dot as i}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{fromValues as a,create as n}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";function h(e,t,r,a,n){const h=i(e,a),c=Math.max(t,Math.min(r,h));return s(n,e,c),n}function c(e,t,r,s,i){const a=Math.max(t,Math.min(r,s[2]));return i[0]=e[0],i[1]=e[1],i[2]=a,i}class o{constructor(e,t){if(this.lowerCenterHeight=e,this.upperCenterHeight=t,!(e<t))throw new Error(`Invalid elevated sphere: ${e}..${t}`)}}class l extends o{constructor(e,i,h){if(super(i,h),this.baseSphere=e,i<=0)throw new Error(`Invalid elevated sphere: ${i}..${h}`);const c=t(e.center);if(this._radialAxis=0===c?a(0,0,1):r(n(),e.center),0===c)return this._surfaceCenter=a(0,0,0),void(this._surfaceRadius=h+e.radius);this._surfaceCenter=s(n(),this._radialAxis,h),this._surfaceRadius=e.radius*h/c}clone(){return new l(this.baseSphere,this.lowerCenterHeight,this.upperCenterHeight)}calculateSurfaceDistanceFromPoint(t){return Math.max(0,e(this._surfaceCenter,t)-this._surfaceRadius)}calculateCenterDistanceFromPoint(t){return this.calculateClosestCenterToPoint(t,C),e(t,C)}calculateClosestCenterToPoint(e,r){return 0===t(this.baseSphere.center)?(r[0]=0,r[1]=0,r[2]=0,r):h(this._radialAxis,this.lowerCenterHeight,this.upperCenterHeight,e,r)}}class u extends o{constructor(e,s,i){if(super(s,i),this.baseSphere=e,s<=0)throw new Error(`Invalid elevated sphere: ${s}..${i}`);const a=t(e.center),h=e.radius;if(a<=h)throw new Error("Invalid sphere cone: base sphere contains the planet center");const c=s-a,o=i-a,l=a+h+Math.max(Math.abs(c),Math.abs(o));this._radialAxis=r(n(),e.center);const u=h/a,p=Math.sqrt(1-u**2),C=a+Math.min(c/(1-u),c/p),d=a+Math.max(o/(1+u),o/p);if(C<=0||C>=d)return this._lowerEnvelopeCenterHeight=s,this._upperEnvelopeCenterHeight=i,void(this._enclosingSphereRadius=l);this._lowerEnvelopeCenterHeight=C,this._upperEnvelopeCenterHeight=d,this._enclosingSphereRadius=null}clone(){return new u(this.baseSphere,this.lowerCenterHeight,this.upperCenterHeight)}calculateSurfaceDistanceFromPoint(r){const a=t(this.baseSphere.center),h=this.baseSphere.radius;if(null!=this._enclosingSphereRadius)return Math.max(0,t(r)-this._enclosingSphereRadius);const c=this._lowerEnvelopeCenterHeight,o=this._upperEnvelopeCenterHeight,l=this._radialAxis,u=h*c/a,p=h*o/a,C=a**2-h**2,d=C/a,f=d*(c/a),S=d*(o/a),g=i(l,r);if(g<=f-u)return this._calculateCapSphereSurfaceDistance(r,c,u);if(g>=S)return this._calculateCapSphereSurfaceDistance(r,o,p);const _=Math.sqrt(C),m=h*_/a,w=s(n(),l,g),x=e(w,r),H=m*g/d;if(x<=H)return 0;const M=_*(o/a),b=_*(g/d);return b<=_*(c/a)?this._calculateCapSphereSurfaceDistance(r,c,u):b>=M?this._calculateCapSphereSurfaceDistance(r,o,p):(x-H)*d/_}calculateCenterDistanceFromPoint(t){return this.calculateClosestCenterToPoint(t,C),e(t,C)}calculateClosestCenterToPoint(e,r){return 0===t(this.baseSphere.center)?(r[0]=0,r[1]=0,r[2]=0,r):h(this._radialAxis,this.lowerCenterHeight,this.upperCenterHeight,e,r)}_calculateCapSphereSurfaceDistance(t,r,i){const a=s(n(),this._radialAxis,r),h=e(a,t);return h<i?0:h-i}}class p extends o{constructor(e,t,r){super(t,r),this.baseSphere=e}clone(){return new p(this.baseSphere,this.lowerCenterHeight,this.upperCenterHeight)}calculateSurfaceDistanceFromPoint(e){const{center:t,radius:r}=this.baseSphere,s=e[2],i=(e[0]-t[0])**2+(e[1]-t[1])**2,{lowerCenterHeight:a,upperCenterHeight:n}=this;return s<=a?Math.max(0,Math.sqrt(i+(s-a)**2)-r):s>=n?Math.max(0,Math.sqrt(i+(s-n)**2)-r):Math.max(0,Math.sqrt(i)-r)}calculateCenterDistanceFromPoint(t){return this.calculateClosestCenterToPoint(t,C),e(t,C)}calculateClosestCenterToPoint(e,t){return c(this.baseSphere.center,this.lowerCenterHeight,this.upperCenterHeight,e,t)}}const C=n();export{l as SphereGlobal,u as SweptSphereConicalVolume,p as SweptSphereCylindricalVolume,o as SweptSphereVolume,h as calculateClosestCenterOnRadialRange,c as calculateClosestCenterOnVerticalRange};
|