in modules/geo-layers/src/tile-3d-layer/tile-3d-layer.js [244:278]
renderLayers() {
const {tileset3d, layerMap} = this.state;
if (!tileset3d) {
return null;
}
return tileset3d.tiles
.map(tile => {
let layer = layerMap[tile.id] && layerMap[tile.id].layer;
// render selected tiles
if (tile.selected) {
// create layer
if (!layer) {
layer = this._create3DTileLayer(tile);
layerMap[tile.id] = {layer, tile};
}
// update layer visibility
if (layer && layer.props && !layer.props.visible) {
// Still has GPU resource but visibility is turned off so turn it back on so we can render it.
layer = layer.clone({visible: true});
layerMap[tile.id].layer = layer;
}
return layer;
}
// hide non-selected tiles
if (layer && layer.props && layer.props.visible) {
// Still in tileset cache but doesn't need to render this frame. Keep the GPU resource bound but don't render it.
layer = layer.clone({visible: false});
layerMap[tile.id].layer = layer;
}
return layer;
})
.filter(Boolean);
}