@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 3.57 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
*/
import{_ as e}from"../../../chunks/tslib.es6.js";import t from"../../../core/Accessor.js";import{makeHandle as r}from"../../../core/handleUtils.js";import"../../../core/has.js";import{removeMaybe as s,destroyMaybe as o}from"../../../core/maybe.js";import{watch as a,sync as i}from"../../../core/reactiveUtils.js";import{addFrameTask as m}from"../../../core/scheduling.js";import{signal as l}from"../../../core/signal.js";import{secondsFromMilliseconds as d}from"../../../core/time.js";import{property as n}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/Logger.js";import"../../../core/RandomLCG.js";import{subclass as h}from"../../../core/accessorSupport/decorators/subclass.js";import{maxDownloadSlots as u,downloadSlotsPerClient as p}from"./index.js";import{newMemoryController as c}from"./MemoryController.js";import{StreamDataLoader as _}from"./StreamDataLoader.js";import{ImmediateTask as g,newScheduler as y,TaskPriority as v}from"../../support/Scheduler.js";let f=class extends t{constructor(){super(...arguments),this.updating=!1}};function j(e){return new T({view:e})}e([n({readOnly:!0})],f.prototype,"updating",void 0),f=e([h("esri.views.3d.support.ResourceController.ResourceControllerMain")],f);let T=class extends f{constructor(){super(...arguments),this._immediateTask=g,this._normalTask=g,this._updatingObjects=l([]),this._frameTask=null}get immediate(){return this._immediateTask}get normal(){return this._normalTask}initialize(){this._scheduler=y(),this._memoryController=c(this.view),this._streamDataLoader=new _,this._streamDataLoader.setup(u,p,this._scheduler),this.addHandles([a((()=>this.view.state?.mode),(e=>{null!=e&&(this._scheduler.state=e)}),i),a((()=>this.view.stationary),(()=>this._stationaryChangedHandler()))]),this._frameTask=m({update:e=>this._frame(e)}),this._immediateTask=this._scheduler.registerTask(v.RESOURCE_CONTROLLER_IMMEDIATE),this._normalTask=this._scheduler.registerTask(v.RESOURCE_CONTROLLER)}destroy(){this._immediateTask.remove(),this._normalTask.remove(),this._frameTask=s(this._frameTask),this._streamDataLoader=o(this._streamDataLoader),this._memoryController=o(this._memoryController),this._scheduler=o(this._scheduler),this.view=null}get updating(){return!!(this._memoryController?.updating||this._streamDataLoader?.updating||this._immediateTask?.updating)||this._updatingObjects?.value.some((e=>e.updating))}get scheduler(){return this._scheduler}get memoryController(){return this._memoryController}createStreamDataRequester(e){const t=this._streamDataLoader;return{request:(r,s,o)=>t.request(r,s,e,o),get busy(){return!t.hasDownloadSlots(e)}}}addUpdatingObject(e){const t=this._updatingObjects;return t.value=[...t.value,e],r((()=>{t.value=t.value.filter((t=>t!==e))}))}_frame(e){this.view.suspended||this.view.stateManager&&(this.view.stateManager.step(d(e.deltaTime)),!this._scheduler)||(this._memoryController.update(),this._scheduler.frame(e))}_stationaryChangedHandler(){this.memoryController.resetStableQuality()}get test(){}};e([n()],T.prototype,"view",void 0),e([n()],T.prototype,"_scheduler",void 0),e([n()],T.prototype,"_memoryController",void 0),e([n()],T.prototype,"_streamDataLoader",void 0),e([n()],T.prototype,"_immediateTask",void 0),e([n()],T.prototype,"_normalTask",void 0),e([n({readOnly:!0})],T.prototype,"updating",null),T=e([h("esri.views.3d.support.ResourceController")],T);export{j as newResourceController};