renderLayers()

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);
  }