@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 1.81 kB
JavaScript
import{clamp as t}from"../../../../core/mathUtils.js";import{isSome as e}from"../../../../core/maybe.js";import{c as r,g as n}from"../../../../chunks/vec3.js";import{c as o}from"../../../../chunks/vec3f64.js";import{wrap as i}from"../../../../geometry/support/ray.js";import{interactionDirectionTowardsConstraintMinimization as s,defaultConstraintOptions as c,hasConstraintType as a,adjustRangeForInteraction as m}from"./common.js";import{ConstraintTypes as u}from"./ConstraintTypes.js";import{InteractionType as p}from"./InteractionType.js";import{closestPointOnRay as f}from"../../support/intersectionUtils.js";function d(t,n,o=c){const a=l(t,n,o);if(0===a)return!1;const m=t.renderCoordsHelper,u=m.getAltitude(n.eye)+a,p=s(n,o.interactionDirection,T(t,n,Math.sign(a),M),C),d=r(h,n.viewForward),y=m.intersectInfiniteManifold(i(n.eye,p),u,A);return n.eye=e(y)?y:m.setAltitude(A,u,n.eye),n.center=f(A,n.eye,d,n.center),!0}function l(e,r,n=c){if(!y(e,n)||!e.state.constraints.altitude)return 0;const o=x(e.state.constraints.altitude,g);j(e,n,o);const i=e.renderCoordsHelper.getAltitude(r.eye),s=t(i,o.min,o.max)-i;return Math.abs(s)<=1e-6?0:s}function y(t,e){const r=t.state.constraints.altitude;return!(!t.state.isGlobal||!r)&&(e.interactionType!==p.TUMBLE||!a(e.selection,u.TILT))}function j(t,e,r){const n=e.interactionType;if(n===p.NONE)return;const{min:o,max:i}=r,{interactionStartCamera:s,interactionFactor:c}=e;if(!s)return;const a=n===p.TUMBLE||n===p.ZOOM,u=l(t,s),f=0===u?0:t.renderCoordsHelper.getAltitude(s.eye);r.min=o,r.max=i;m(u,f,a,c,.05*f,r)}function T(t,e,r,o){return t.renderCoordsHelper.worldUpAtPosition(e.eye,o),n(o,o,r),o}function x(t,e){return e.min=t.min,e.max=t.max,e}const g={min:0,max:0},C=o(),M=o(),h=o(),A=o();export{d as applyAltitudeConstraint,l as getAltitudeConstraintError};