UNPKG

@arcgis/core

Version:

ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API

6 lines (5 loc) 1.61 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.33/esri/copyright.txt for details. */ import e from"../../../../Graphic.js";import{Tiles3DTarget as i}from"../i3s/Intersector.js";import{StoreResults as t}from"../../webgl-engine/lib/IntersectorInterfaces.js";import{IntersectorResult as r}from"../../webgl-engine/lib/IntersectorResult.js";import{IntersectorType as s}from"../../webgl-engine/lib/IntersectorType.js";import{MeshIntersectionOptions as n}from"../../webgl-engine/lib/RayIntersections.js";class o{constructor(e){this.type=s.TILES3D,this.slicePlaneEnabled=!1,this.isGround=!0,this.layerView=e,this.layerViewUid=e.uid}intersect(e,s,o,l,a,c){if(e.options.filteredLayerViewUids.includes(this.layerView.uid))return;const u=e.results,d=e.options.store===t.ALL,m=this.layerView.view.stage.renderView.componentObjectCollection,p=new n(c,e.options.normalRequired);this.layerView.objects.forEach((t=>{t.visible&&t.intersectionGeometry&&m.intersect(t,o,l,e.tolerance,null,p,((t,n,a,c)=>{if(n>=0){if(null!=s&&!s(o,l,n))return;const t=e=>{const t=new i(this.layerView.layer.uid,(()=>this._createTiles3DGraphic(this.layerView.layer,{})));e.set(this.type,t,n,a)};if(this.isGround&&(null==u.ground.distance||n<u.ground.distance)&&t(u.ground),e.options.isFiltered)return;if((null==u.min.distance||n<u.min.distance)&&t(u.min),(null==u.max.distance||n>u.max.distance)&&t(u.max),d){const i=new r(e.ray);t(i),e.results.all.push(i)}}}))}))}_createTiles3DGraphic(i,t){return new e({layer:i,sourceLayer:i,attributes:t})}}export{o as Tiles3DIntersectionHandler};