UNPKG

@doegis/core

Version:

DOE GIS API

3 lines (1 loc) 2.08 kB
import{_ as e}from"../../../chunks/tslib.es6.js";import t from"../../../core/Accessor.js";import{isSome as r}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{TaskPriority as u,ImmediateTask as a}from"../../support/Scheduler.js";let n=class extends t{constructor(e,t){super({}),this._stage=e,this._textureRequests=new Map,this._frameTask=t?.registerTask(u.TEXTURE_UNLOAD)??a}normalizeCtorArgs(){return{}}destroy(){super.destroy(),this._frameTask.remove(),this._textureRequests.forEach((e=>this._releaseTextureRequest(e))),this._textureRequests.clear()}get updating(){return this._frameTask.updating}fromData(e,t,r){const s=this.makeUid(e);let o=this._textureRequests.get(s);if(!o){const e=t();o={referenceCount:0,texture:e,textureAsync:null,abortController:null,onRemove:r},this._stage&&(this._stage.add(e),this._stage.loadImmediate(e)),this._textureRequests.set(s,o)}return o.referenceCount++,{uid:s,texture:o.texture,release:()=>this._release(s)}}_release(e){const t=this._textureRequests.get(e);t?(t.referenceCount<1&&console.warn("TextureCollection: reference count is < 1 for "+e),t.referenceCount--,t.referenceCount<1&&this._frameTask.schedule((()=>this._releaseNow(e)))):console.warn(`TextureCollection: texture doesn't exist: '${e}'`)}get test(){return{textureRequests:this._textureRequests}}_releaseNow(e){if(!this._textureRequests)return;const t=this._textureRequests.get(e);!t||t.referenceCount>0||(this._releaseTextureRequest(t),this._textureRequests.delete(e))}_releaseTextureRequest(e){e.onRemove&&e.onRemove(),e.texture?this._stage?.remove(e.texture):e.abortController&&(e.abortController.abort(),e.abortController=null)}makeUid(e,t=null){return r(t)?`${e}.${t}px`:e}};e([s()],n.prototype,"_frameTask",void 0),e([s()],n.prototype,"updating",null),n=e([o("esri.views.3d.support.TextureCollection")],n);export{n as TextureCollection};