@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 1.68 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
*/
import{applyAltitudeConstraint as t,getAltitudeConstraintError as o}from"./constraintUtils/altitude.js";import{hasConstraintType as r}from"./constraintUtils/common.js";import{ConstraintOptions as n}from"./constraintUtils/ConstraintOptions.js";import{ConstraintTypes as i}from"./constraintUtils/ConstraintTypes.js";import{applyDistanceConstraint as s,getDistanceConstraintError as e}from"./constraintUtils/distance.js";import{InteractionType as a}from"./constraintUtils/InteractionType.js";import{applySurfaceCollisionConstraint as c,Mode as p}from"./constraintUtils/surfaceCollision.js";import{applyTiltConstraint as m,getTiltConstraintError as l}from"./constraintUtils/tilt.js";import{inOutCubic as f}from"../../animation/easing.js";function E(t,o,n=C,s=o){s!==o&&s.copyFrom(o),s.computeUp(t.state.viewingMode);let e=!1;for(let i=0;i<N;i++){let o=0;for(const i of U)if(r(n.selection,i.type)){const r=Math.abs(i.error(t,s,n));i.apply(t,s,n)&&(e=!0,o+=r)}if(0===o)break}const a=r(n.selection,i.COLLISION),p=u(n.interactionType,t);return a&&c(t,s,p)&&(e=!0),e&&s.computeUp(t.state.viewingMode),e}function u(t,o){switch(t){case a.PAN:return p.EYE_AND_CENTER;case a.ASCEND:return o.state.isGlobal?p.EYE_AND_CENTER_SCALE:p.EYE_AND_CENTER;default:return p.EYE}}function y(t){const o=Math.min(1,t/150);return f(o)}function T(t,o,r){return l(t,o,r)*o.distance}const U=[{type:i.TILT,error:T,apply:m},{type:i.ALTITUDE,error:o,apply:t},{type:i.DISTANCE,error:e,apply:s}],C=new n,N=5;export{E as applyAll,y as pixelDistanceToInteractionFactor};