summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/tile_pyramid.cpp
diff options
context:
space:
mode:
authorChris Loer <chris.loer@gmail.com>2017-05-15 14:17:06 -0700
committerAnsis Brammanis <brammanis@gmail.com>2017-07-11 09:10:22 -0700
commit59df3a90f41461562a80688337ec53687e341124 (patch)
treeaae3e94ddc74134600494fce944a5b3ab764a41a /src/mbgl/renderer/tile_pyramid.cpp
parente364f24570f863044b9c464c2eb8c0fd75c5a80b (diff)
downloadqtlocation-mapboxgl-59df3a90f41461562a80688337ec53687e341124.tar.gz
[core] Improved label pitch-scaling: approximate collision box shapes based on tile distance from camera.
Diffstat (limited to 'src/mbgl/renderer/tile_pyramid.cpp')
-rw-r--r--src/mbgl/renderer/tile_pyramid.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/mbgl/renderer/tile_pyramid.cpp b/src/mbgl/renderer/tile_pyramid.cpp
index a8e6c128ba..57e7f6d375 100644
--- a/src/mbgl/renderer/tile_pyramid.cpp
+++ b/src/mbgl/renderer/tile_pyramid.cpp
@@ -175,11 +175,16 @@ void TilePyramid::update(const std::vector<Immutable<style::Layer::Impl>>& layer
removeStaleTiles(retain);
- const PlacementConfig config { parameters.transformState.getAngle(),
- parameters.transformState.getPitch(),
- parameters.debugOptions & MapDebugOptions::Collision };
-
for (auto& pair : tiles) {
+ // TODO: Calculating yStretch based on tile distance means we can no longer use the same collision tile for two wrapped
+ // copies of the same data tile. For now the assumption that we're always at "wrap = 0" means collision detection is broken
+ // for wrapped tiles.
+ const PlacementConfig config { parameters.transformState.getAngle(),
+ parameters.transformState.getPitch(),
+ parameters.transformState.getCameraToCenterDistance(),
+ parameters.transformState.getCameraToTileDistance(pair.first.unwrapTo(0)),
+ parameters.debugOptions & MapDebugOptions::Collision };
+
pair.second->setPlacementConfig(config);
}
}