build render order array once instead of recursing through lots of different objects

This commit is contained in:
Konstantin Käfer
2015-04-22 13:47:51 +02:00
parent c6be708623
commit 5f496d8f0c
11 changed files with 105 additions and 106 deletions

View File

@@ -55,23 +55,15 @@ void VectorTileData::parse() {
}
}
void VectorTileData::render(Painter &painter, const StyleLayer &layer_desc, const mat4 &matrix) {
if (state == State::parsed && layer_desc.bucket) {
auto databucket_it = buckets.find(layer_desc.bucket->name);
if (databucket_it != buckets.end()) {
assert(databucket_it->second);
databucket_it->second->render(painter, layer_desc, id, matrix);
Bucket* VectorTileData::getBucket(StyleLayer const& layer) {
if (state == State::parsed && layer.bucket) {
const auto it = buckets.find(layer.bucket->name);
if (it != buckets.end()) {
assert(it->second);
if (it->second->hasData()) {
return it->second.get();
}
}
}
}
bool VectorTileData::hasData(const StyleLayer &layer_desc) const {
if (state == State::parsed && layer_desc.bucket) {
auto databucket_it = buckets.find(layer_desc.bucket->name);
if (databucket_it != buckets.end()) {
assert(databucket_it->second);
return databucket_it->second->hasData();
}
}
return false;
return nullptr;
}