UNPKG

@doegis/core

Version:

DOE GIS API

3 lines (1 loc) 3.27 kB
import{_ as e}from"../../../chunks/tslib.es6.js";import t from"../../../core/Accessor.js";import{removeMaybe as r,destroyMaybe as s}from"../../../core/maybe.js";import{watch as o,sync as a}from"../../../core/reactiveUtils.js";import{addFrameTask as i}from"../../../core/scheduling.js";import{secondsFromMilliseconds as m}from"../../../core/time.js";import{property as l}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/accessorSupport/ensureType.js";import"../../../core/arrayUtils.js";import{subclass as d}from"../../../core/accessorSupport/decorators/subclass.js";import{maxDownloadSlots as n,downloadSlotsPerClient as h}from"./index.js";import{newMemoryController as u}from"./MemoryController.js";import{StreamDataLoader as p}from"./StreamDataLoader.js";import{ImmediateTask as _,newScheduler as c,TaskPriority as y}from"../../support/Scheduler.js";let g=class extends t{constructor(){super(...arguments),this.updating=!1}};function T(e){return new f({view:e})}e([l({readOnly:!0})],g.prototype,"updating",void 0),g=e([d("esri.views.3d.support.ResourceControllerMain")],g);let f=class extends g{constructor(){super(...arguments),this._immediateTask=_,this._normalTask=_,this._frameTask=null}get immediate(){return this._immediateTask}get normal(){return this._normalTask}initialize(){this._scheduler=c(),this._memoryController=u(this.view),this._streamDataLoader=new p,this._streamDataLoader.setup(n,h,this._scheduler),this.addHandles([o((()=>this.view.state?.mode),(e=>{null!=e&&(this._scheduler.state=e)}),a),o((()=>this.view.stationary),(()=>this._stationaryChangedHandler()))]),this._frameTask=i({update:e=>this._frame(e)}),this._immediateTask=this._scheduler.registerTask(y.RESOURCE_CONTROLLER_IMMEDIATE),this._normalTask=this._scheduler.registerTask(y.RESOURCE_CONTROLLER)}destroy(){this._immediateTask.remove(),this._normalTask.remove(),this._frameTask=r(this._frameTask),this._streamDataLoader=s(this._streamDataLoader),this._memoryController=s(this._memoryController),this._scheduler=s(this._scheduler)}get updating(){return!!(this._memoryController?.updating||this._streamDataLoader?.updating||this._immediateTask?.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)}}}_frame(e){this.view.suspended||this.view.stateManager&&(this.view.stateManager.step(m(e.deltaTime)),!this._scheduler)||(this._scheduler.updateBudget(e)?(this._memoryController.update(),this._scheduler.frame()):this._memoryController.updating&&this._memoryController.update())}_stationaryChangedHandler(){this.memoryController.resetStableQuality()}get test(){return{getQueueStats:e=>this._streamDataLoader.test.loadQueue.getStatsForType(e)}}};e([l({constructOnly:!0})],f.prototype,"view",void 0),e([l()],f.prototype,"_scheduler",void 0),e([l()],f.prototype,"_memoryController",void 0),e([l()],f.prototype,"_streamDataLoader",void 0),e([l()],f.prototype,"_immediateTask",void 0),e([l()],f.prototype,"_normalTask",void 0),e([l({readOnly:!0})],f.prototype,"updating",null),f=e([d("esri.views.3d.support.ResourceControllerImpl")],f);export{T as newResourceController};