@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 1.62 kB
JavaScript
import{_ as e}from"../../../../chunks/tslib.es6.js";import r from"../../../../core/Handles.js";import{isSome as t}from"../../../../core/maybe.js";import{property as s}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import{subclass as o}from"../../../../core/accessorSupport/decorators/subclass.js";import{eyeWithinExtent as a}from"../../camera/intersectionUtils.js";import{applySurfaceCollisionConstraint as i,Mode as n}from"../../camera/constraintUtils/surfaceCollision.js";import{CameraController as l,State as c}from"./CameraController.js";let p=class extends l{set desiredCamera(e){this._set("desiredCamera",e.clone())}constructor(e){super(e),this._handles=new r}get canStop(){return!0}get constraintEnabled(){return this.view.state.constraints.collision.enabled}onControllerStart(){this.state=c.Running,this._handles.add(this.view.basemapTerrain.on("elevation-change",(e=>this._handleElevationChangeEvent(e)))),this._applyCorrection()}onControllerEnd(){this._handles.removeAll()}stepController(){}_handleElevationChangeEvent(e){t(e.spatialReference)&&!a(this.view,this.desiredCamera,e.extent,e.spatialReference)||this._applyCorrection()}_applyCorrection(){this.view.state.updateCamera((e=>{e.copyViewFrom(this.desiredCamera),i(this.view,e,n.EYE_AND_CENTER)||this.constraintEnabled||(this.state=c.Stopped)}))}};e([s({constructOnly:!0})],p.prototype,"desiredCamera",null),p=e([o("esri.views.3d.state.controllers.SurfaceCollisionCorrectionController")],p);export{p as SurfaceCollisionCorrectionController};