UNPKG

@arcgis/core

Version:

ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API

6 lines (5 loc) 2 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.32/esri/copyright.txt for details. */ import{_ as t}from"../../../../chunks/tslib.es6.js";import e from"../../../../core/Accessor.js";import{property as s}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/has.js";import"../../../../core/Logger.js";import"../../../../core/RandomLCG.js";import{subclass as r}from"../../../../core/accessorSupport/decorators/subclass.js";import{ElevationMode as i}from"../II3SMeshView3D.js";import{ExtentSet as o}from"../graphics/ExtentSet.js";import{TaskPriority as n}from"../../../support/Scheduler.js";let a=class extends e{constructor(t,e,s,r){super({}),this._updateExtent=e,this._updateNode=s,this._getElevationMode=r,this.running=!1,this._extentSet=new o,this._nodeSet=new Set;const i=this._taskPriority,n=t.registerTask(this._taskPriority,this);this.addHandles(n),this._task=n,this._lastTaskPriority=i}get _taskPriority(){const t=this._getElevationMode();return t&&t===i.RelativeToGround?n.ELEVATION_ALIGNMENT_SCENE:n.ELEVATION_ALIGNMENT}_updateTaskPriority(){const t=this._taskPriority;t!==this._lastTaskPriority&&(this._task.priority=t,this._lastTaskPriority=t)}addExtent(t){this._extentSet.add(t),this._updateTaskPriority(),this.running=!0}schedule(t){this._nodeSet.add(t),this._updateTaskPriority(),this.running=!0}remove(t){this._nodeSet.delete(t),this._updateRunning()}runTask(t){const e=this._extentSet;for(t.run((()=>e.merge(t)));!e.empty&&!t.done;){const s=this._updateExtent(e.pop());null!=s&&s.forAll((t=>this.schedule(t))),t.madeProgress()}if(t.done)return;const s=this._nodeSet;for(const r of s)if(s.delete(r),this._updateNode(r),t.madeProgress(),t.done)break;this._updateRunning()}_updateRunning(){this.running=this._nodeSet.size>0||this._extentSet.size>0}};t([s()],a.prototype,"running",void 0),a=t([r("esri.views.3d.layers.i3s.I3SAsyncElevationUpdater")],a);export{a as I3SAsyncElevationUpdater};