void TerrainTileModelFactory::addPatchLayers(TerrainTileModel* model, const Map* map, const TileKey& key, const CreateTileModelFilter& filter, ProgressCallback* progress) { OE_START_TIMER(fetch_patch_layers); PatchLayerVector patchLayers; map->getLayers(patchLayers); for(PatchLayerVector::const_iterator i = patchLayers.begin(); i != patchLayers.end(); ++i ) { PatchLayer* layer = i->get(); if (!filter.accept(layer)) continue; if (!layer->getEnabled()) continue; if (layer->getAcceptCallback() == 0L || layer->getAcceptCallback()->acceptKey(key)) { PatchLayer::TileData* tileData = layer->createTileData(key); if (tileData) { TerrainTilePatchLayerModel* patchModel = new TerrainTilePatchLayerModel(); patchModel->setPatchLayer(layer); patchModel->setTileData(tileData); model->patchLayers().push_back(patchModel); } } } if (progress) progress->stats()["fetch_patches_time"] += OE_STOP_TIMER(fetch_patch_layers); }