@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 2.15 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 r from"../../../../core/Accessor.js";import{watch as t}from"../../../../core/reactiveUtils.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 i}from"../../../../core/accessorSupport/decorators/subclass.js";import{splitRenderGeometryChangeSetByMaterial as o}from"./rendererUtils.js";import{MergedRenderer as a}from"../materials/renderers/MergedRenderer.js";let d=class extends r{constructor(e){super(e),this._renderers=new Map}destroy(){this._renderers.forEach((e=>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:d}=e;if(0===s.length&&0===i.length&&0===d.length)return!1;o(e).forEach(((e,s)=>{if(r.done)return;let i=this._renderers.get(s);null==i&&e.adds.length>0&&(i=new a({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 n=0;for(const o of this._renderers.values())o.drapedPriority=n++;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})],d.prototype,"stage",void 0),d=e([i("esri.views.3d.webgl-engine.lib.RendererBase")],d);export{d as RendererBase};