// All material copyright Esri, All Rights Reserved, unless otherwise specified. // See https://js.arcgis.com/4.30/esri/copyright.txt for details. //>>built define("exports ../../../chunks/vec32 ../../../core/libs/gl-matrix-2/factories/vec3f64 ../../../geometry/ellipsoidUtils ../../../geometry/support/aaBoundingRect ../webgl-engine/lib/Intersector".split(" "),function(k,f,m,r,t,u){function n(a,b){return a.elevationProvider?a.elevationProvider.getElevation(b[0],b[1],b[2],a.renderCoordsHelper.spatialReference,"ground")??0:0}function p(a,b,c){if(!a.state.isGlobal||!a.stateManager.constraintsManager)return!1;const g=n(a,b);({far:a}=a.stateManager.constraintsManager.nearFarHeuristic.compute(b, c,a.renderDataExtent,g,v));a*=a;return f.squaredDistance(b,c)>a}const q={},l=m.create(),e=m.create(),h=m.create(),v={near:0,far:0};k.cameraOnContentAlongViewDirection=function(a,b,c,g){const d=a.state.camera.clone();b&&c&&g&&(d.eye=b,d.center=c,d.up=g);b=d.ray;c=q[a.viewingMode];c||(c=u.newIntersector(a.state.viewingMode),c.options.backfacesTerrain=!a.state.isGlobal,c.options.invisibleTerrain=!0,q[a.viewingMode]=c);({isGlobal:g}=a.state);a.sceneIntersectionHelper.intersectRay(b,c,e)&&!p(a,b.origin, e)?b=!0:!a.renderCoordsHelper.intersectManifold(b,0,e)||p(a,b.origin,e)?g?(c=r.getReferenceEllipsoid(a.spatialReference).radius,c=f.dot(b.origin,b.origin)-c*c,f.scale(e,b.direction,(0