@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 1.56 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.32/esri/copyright.txt for details.
*/
import e from"../../../../Graphic.js";import{Tiles3DTarget as i}from"../i3s/Intersector.js";import{newIntersectorResult as t}from"../../webgl-engine/lib/Intersector.js";import{IntersectorType as r,StoreResults as s}from"../../webgl-engine/lib/IntersectorInterfaces.js";import{MeshIntersectionOptions as n}from"../../webgl-engine/lib/RayIntersections.js";class l{constructor(e){this.layerUid=[],this.type=r.TILES3D,this.slicePlaneEnabled=!1,this.isGround=!0,this.layerView=e,this.layerUid.push(e.layer.uid)}intersect(e,r,l,o,a,c){const u=e.results,d=e.options.store===s.ALL;if(e.options.filteredLayerUids.includes(this.layerView.layer.uid))return;const h=this.layerView.view._stage.renderView.componentObjectCollection,y=new n(c??!1,e.options.normalRequired);this.layerView.objects.forEach((s=>{s.visible&&s.intersectionGeometry&&h.intersect(s,l,o,e.tolerance,null,y,((s,n,a,c)=>{if(n>=0){if(null!=r&&!r(l,o,n))return;const s=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.dist||n<u.ground.dist)&&s(u.ground),e.options.isFiltered)return;if((null==u.min.dist||n<u.min.dist)&&s(u.min),(null==u.max.dist||n>u.max.dist)&&s(u.max),d){const i=t(e.ray);s(i),e.results.all.push(i)}}}))}))}_createTiles3DGraphic(i,t){return new e({layer:i,sourceLayer:i,attributes:t})}}export{l as Tiles3DIntersectionHandler};