@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 1.64 kB
JavaScript
import{getAltitudeConstraintError as t,applyAltitudeConstraint as o}from"./constraintUtils/altitude.js";import{hasConstraintType as r}from"./constraintUtils/common.js";import{ConstraintTypes as i}from"./constraintUtils/ConstraintTypes.js";import{getDistanceConstraintError as n,applyDistanceConstraint as e}from"./constraintUtils/distance.js";import{InteractionType as s}from"./constraintUtils/InteractionType.js";import{applySurfaceCollisionConstraint as a,Mode as c}from"./constraintUtils/surfaceCollision.js";import{applyTiltConstraint as l,getTiltConstraintError as p}from"./constraintUtils/tilt.js";import{TiltMode as m}from"./constraintUtils/TiltMode.js";import{inOutCubic as f}from"../../animation/easing.js";function E(t,o,n=U,e=o){e!==o&&e.copyFrom(o),e.computeUp(t.state.viewingMode);let s=!1;for(let i=0;i<C;i++){let o=0;for(const i of N)if(r(n.selection,i.type)){const r=Math.abs(i.error(t,e,n));i.apply(t,e,n)&&(s=!0,o+=r)}if(0===o)break}const c=r(n.selection,i.COLLISION),l=u(n.interactionType,t);return c&&a(t,e,l)&&(s=!0),s&&e.computeUp(t.state.viewingMode),s}function u(t,o){switch(t){case s.PAN:return c.EYE_AND_CENTER;case s.ASCEND:return o.state.isGlobal?c.EYE_AND_CENTER_SCALE:c.EYE_AND_CENTER;default:return c.EYE}}function T(t){const o=Math.min(1,t/150);return f(o)}function y(t,o,r){return p(t,o,r)*o.distance}const N=[{type:i.TILT,error:y,apply:l},{type:i.ALTITUDE,error:t,apply:o},{type:i.DISTANCE,error:n,apply:e}],U={selection:i.ALL,interactionType:s.NONE,interactionFactor:0,interactionStartCamera:null,interactionDirection:null,tiltMode:m.TUMBLE},C=5;export{E as applyAll,T as pixelDistanceToInteractionFactor};