@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
3 lines (2 loc) • 1.87 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */
import{__decorate as e}from"tslib";import r from"../../../../core/Accessor.js";import{watch as t}from"../../../../core/reactiveUtils.js";import{property as s,subclass as i}from"../../../../core/accessorSupport/decorators.js";import{splitRenderGeometryChangeSetByMaterial as d}from"./rendererUtils.js";import{MergedRenderer as o}from"../materials/renderers/MergedRenderer.js";let n=class extends r{constructor(e){super(e),this._renderers=new Map}destroy(){this._renderers.forEach(e=>!e.destroyed&&e.destroy()),this._renderers.clear()}initialize(){this.addHandles(t(()=>this.stage.view.state.highlights,()=>this.updateHighlights()))}getMaterialRenderer(e){return this._renderers.get(e)}updateHighlights(){this._renderers.forEach(e=>e.updateHighlights(this.stage.view.state.highlightOrderMap))}commit(e,r,t){const{adds:s,removes:i,updates:n}=e;if(0===s.length&&0===i.length&&0===n.length)return!1;d(e).forEach((e,s)=>{if(r.done)return;let i=this._renderers.get(s);null==i&&e.adds.length>0&&(i=new o({material:s,highlightOrderMap:this.stage.view.state.highlightOrderMap}),i.initializeRenderContext(t),this.rendererAdded(i),this._renderers.set(s,i)),i?(i.modify(e,r),i.updateHighlights(this.stage.view.state.highlightOrderMap),0===i.numGeometries&&(this._renderers.delete(i.material),this.rendererRemoved(i),i.destroy())):(e.clear(),r.madeProgress())});let a=0;for(const d of this._renderers.values())d.drapedPriority=a++;return!0}get canCompact(){for(const e of this._renderers.values())if(e.canCompact)return!0;return!1}compact(e){let r=!1;for(const t of this._renderers.values()){if(e.done)return r;r=t.compact(e)||r}return r}get renderers(){return this._renderers}};e([s({constructOnly:!0})],n.prototype,"stage",void 0),n=e([i("esri.views.3d.webgl-engine.lib.RendererBase")],n);export{n as RendererBase};