You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
13 lines
4.9 KiB
13 lines
4.9 KiB
// 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/tslib.es6 ../../../core/Accessor ../../../core/mathUtils ../../../core/reactiveUtils ../../../core/accessorSupport/decorators/property ../../../core/has ../../../core/Logger ../../../core/RandomLCG ../../../core/accessorSupport/decorators/subclass ../../ViewingMode ../camera/constraintUtils ../camera/intersectionUtils ../camera/constraintUtils/ConstraintOptions ../camera/constraintUtils/ConstraintTypes ../camera/constraintUtils/InteractionType ./NearFarHeuristic ./SurfaceCollisionConstraint".split(" "), |
|
function(d,e,l,f,c,g,v,w,x,m,h,n,p,q,k,r,t,u){d.ConstraintsManager=class extends l{constructor(a){super(a);this.nearFarHeuristic=t.createNearFarHeuristic(a.view.state.viewingMode,a.view.basemapTerrain,a.view.renderCoordsHelper.spatialReference)}initialize(){this.addHandles([c.watch(()=>[this.view.constraints?.clipDistance?.near,this.view.constraints?.clipDistance?.far],()=>this._clipDistanceNearFarChanged()),c.watch(()=>this.view.constraints?.clipDistance?.mode,()=>this._updateNearFar()),this.view.state.events.on("before-camera-change", |
|
a=>this._updateCameraNearFar(a)),c.watch(()=>this.view.renderDataExtent,()=>this._updateNearFar(),c.sync),c.watch(()=>[this.view.constraints?.altitude?.min,this.view.constraints?.altitude?.max],()=>this._updateAltitude(),c.sync),c.watch(()=>this.view.constraints?.tilt?.max,()=>this._updateTiltMax(),c.sync),c.watch(()=>this.view.constraints?.tilt?.mode,()=>this._updateTilt(),c.sync),c.watch(()=>this.view.state?.camera,()=>this._updateTiltAutoMax(),c.sync),c.watch(()=>[this.view.map?.ground?.navigationConstraint?.type, |
|
this.view.state?.constraints?.collision?.enabled],()=>this._updateCollision(),c.sync)]);this.view.state.isLocal&&this.addHandles(c.watch(()=>this.view.renderDataExtent,a=>this._updateLocalSurfaceDistance(a),c.initial));this._updateNearFar();this.view.state.viewingMode!==h.ViewingMode.Local&&this._updateAltitude();this._updateTilt();this._updateCollision();this._set("surfaceCollisionConstraint",new u.SurfaceCollisionConstraint({view:this.view}))}destroy(){this.surfaceCollisionConstraint&&(this.surfaceCollisionConstraint.destroy(), |
|
this._set("surfaceCollisionConstraint",null))}_clipDistanceNearFarChanged(){const a=this.view.constraints?.clipDistance;a&&"auto"!==a.mode&&this.view.state.updateCamera(b=>{a&&(b.near=a.near,b.far=a.far)})}_updateNearFar(){this.view.state.updateCamera(a=>this._updateCameraNearFar(a))}_updateCameraNearFar(a){const b=this.view.constraints&&this.view.constraints.clipDistance;"manual"===(b?b.mode:"auto")?b&&(a.near=b.near,a.far=b.far):this._updateCameraNearFarAuto(a,b)}_updateCameraNearFarAuto(a,b){this.nearFarHeuristic.compute(a.eye, |
|
a.center,this.view.renderDataExtent,p.surfaceElevationBelowRenderLocation(this.view,a.eye),a);b&&b.autoUpdate(a.near,a.far)}_updateCollision(){var a=this.view.map?.ground?.navigationConstraint?.type;a=a?"stay-above"===a:!0;const b=this.view.state.constraints.collision;a!==b.enabled&&((b.enabled=a)&&this._reapplyConstraints(k.ConstraintTypes.COLLISION),(a=this.view.constraints&&this.view.constraints.tilt)&&"auto"!==a.mode||this._updateTiltAuto())}_updateAltitude(){const a=this.view.constraints&&this.view.constraints.altitude; |
|
this.view.state.constraints.altitude=a&&this.view.state.viewingMode!==h.ViewingMode.Local?{min:a.min,max:a.max}:null;this._reapplyConstraints()}_updateTiltMax(){const a=this.view.constraints&&this.view.constraints.tilt;a&&"auto"!==a.mode&&(this._updateTiltManual(a),this._reapplyConstraints())}_updateTilt(){const a=this.view.constraints&&this.view.constraints.tilt;"manual"===(a?a.mode:"auto")?this._updateTiltManual(a):this._updateTiltAuto();this._reapplyConstraints()}_updateTiltManual(a){const b=this.view.state.constraints; |
|
b.tilt=b.createConstantMaxTilt(f.deg2rad(a.max))}_updateTiltAuto(){const a=this.view.state.constraints;a.tilt=a.createDefaultTilt();this._updateTiltAutoMax()}_updateTiltAutoMax(){const a=this.view.constraints&&this.view.constraints.tilt;if(a&&"auto"===a.mode){var b=this.view.state.constraints;b.tilt&&(b=b.tilt(this.view.state.camera.distance).max,a.autoUpdate(f.rad2deg(b)))}}_updateLocalSurfaceDistance(a){if(null!=a){var b=Math.max(a.width,a.height);0>=b||(null!=a.zmax&&null!=a.zmin&&(b=Math.max(b, |
|
a.zmax-a.zmin)),a=this.view.state,b=3*b/Math.atan(a.camera.fov/2),b!==a.constraints.distance&&(a.constraints.distance=b))}}_reapplyConstraints(a=k.ConstraintTypes.ALL){this.view.state.updateCamera(b=>n.applyAll(this.view,b,new q.ConstraintOptions(a,r.InteractionType.NONE,null)))}};e.__decorate([g.property({constructOnly:!0})],d.ConstraintsManager.prototype,"view",void 0);e.__decorate([g.property({readOnly:!0})],d.ConstraintsManager.prototype,"surfaceCollisionConstraint",void 0);d.ConstraintsManager= |
|
e.__decorate([m.subclass("esri.views.3d.state.ConstraintsManager")],d.ConstraintsManager);Object.defineProperty(d,Symbol.toStringTag,{value:"Module"})}); |