38 lines
796 B
JavaScript
38 lines
796 B
JavaScript
|
import {Container} from '@avocado/graphics';
|
||
|
|
||
|
import {LayerView} from './layer-view';
|
||
|
|
||
|
export class LayersView extends Container {
|
||
|
|
||
|
constructor(layers, renderer) {
|
||
|
super();
|
||
|
this.layers = layers;
|
||
|
this.layerViews = [];
|
||
|
this.renderer = renderer;
|
||
|
this.layers.on('layerAdded', (layer) => {
|
||
|
this.onLayerAdded(layer);
|
||
|
});
|
||
|
for (const layer of layers) {
|
||
|
this.onLayerAdded(layer);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
onLayerAdded(layer) {
|
||
|
const layerView = new LayerView(layer, this.renderer);
|
||
|
this.layerViews.push(layerView);
|
||
|
this.addChild(layerView);
|
||
|
}
|
||
|
|
||
|
onLayerRemoved(layer) {
|
||
|
const layerView = this.layerViews.find((layerView) => {
|
||
|
return layerView.layer === layer;
|
||
|
});
|
||
|
if (!layerView) {
|
||
|
return;
|
||
|
}
|
||
|
this.removeChild(layerView);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|