get correct fade-time for proxy tiles
This commit is contained in:
parent
2995de938e
commit
51b2773ef2
@ -349,31 +349,41 @@ public abstract class TileRenderer extends LayerRenderer {
|
||||
}
|
||||
};
|
||||
|
||||
protected long getMinFade(MapTile t) {
|
||||
protected long getMinFade(MapTile t, int proxyLevel) {
|
||||
long minFade = MapRenderer.frametime - 50;
|
||||
if (proxyLevel <= 0) {
|
||||
for (int c = 0; c < 4; c++) {
|
||||
MapTile ci = t.node.child(c);
|
||||
if (ci == null)
|
||||
continue;
|
||||
|
||||
for (int c = 0; c < 4; c++) {
|
||||
MapTile ci = t.node.child(c);
|
||||
if (ci == null)
|
||||
continue;
|
||||
if (ci.fadeTime > 0 && ci.fadeTime < minFade)
|
||||
minFade = ci.fadeTime;
|
||||
|
||||
if (ci.state == READY || ci.fadeTime > 0)
|
||||
minFade = Math.min(minFade, ci.fadeTime);
|
||||
/* when drawing the parent of the current level
|
||||
* we also check if the children of current level
|
||||
* are visible */
|
||||
if (proxyLevel > -2) {
|
||||
long m = getMinFade(ci, proxyLevel - 1);
|
||||
if (m < minFade)
|
||||
minFade = m;
|
||||
}
|
||||
}
|
||||
}
|
||||
MapTile p = t.node.parent();
|
||||
|
||||
if (p == null)
|
||||
return minFade;
|
||||
if (p.state == READY || p.fadeTime > 0)
|
||||
minFade = Math.min(minFade, p.fadeTime);
|
||||
|
||||
p = p.node.parent();
|
||||
if (p == null)
|
||||
return minFade;
|
||||
|
||||
if (p.state == READY || p.fadeTime > 0)
|
||||
minFade = Math.min(minFade, p.fadeTime);
|
||||
if (proxyLevel >= -1) {
|
||||
MapTile p = t.node.parent();
|
||||
if (p != null) {
|
||||
if (p.fadeTime > 0 && p.fadeTime < minFade)
|
||||
minFade = p.fadeTime;
|
||||
|
||||
if (proxyLevel >= 0) {
|
||||
if ((p = p.node.parent()) != null) {
|
||||
if (p.fadeTime > 0 && p.fadeTime < minFade)
|
||||
minFade = p.fadeTime;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return minFade;
|
||||
}
|
||||
}
|
||||
|
@ -70,7 +70,7 @@ public class VectorTileRenderer extends TileRenderer {
|
||||
for (int i = 0; i < tileCnt; i++) {
|
||||
MapTile t = tiles[i];
|
||||
if (t.isVisible && t.state == READY)
|
||||
drawTile(t, v);
|
||||
drawTile(t, v, 0);
|
||||
|
||||
}
|
||||
|
||||
@ -111,7 +111,7 @@ public class VectorTileRenderer extends TileRenderer {
|
||||
|
||||
}
|
||||
|
||||
private void drawTile(MapTile tile, GLViewport v) {
|
||||
private void drawTile(MapTile tile, GLViewport v, int proxyLevel) {
|
||||
/* ensure to draw parents only once */
|
||||
if (tile.lastDraw == mDrawSerial)
|
||||
return;
|
||||
@ -188,7 +188,7 @@ public class VectorTileRenderer extends TileRenderer {
|
||||
}
|
||||
|
||||
if (t.fadeTime == 0)
|
||||
t.fadeTime = getMinFade(t);
|
||||
t.fadeTime = getMinFade(t, proxyLevel);
|
||||
|
||||
if (debugOverdraw) {
|
||||
if (t.zoomLevel > pos.zoomLevel)
|
||||
@ -219,7 +219,7 @@ public class VectorTileRenderer extends TileRenderer {
|
||||
MapTile c = tile.node.child(i);
|
||||
|
||||
if (c.state == READY) {
|
||||
drawTile(c, v);
|
||||
drawTile(c, v, 1);
|
||||
drawn++;
|
||||
}
|
||||
}
|
||||
@ -243,7 +243,7 @@ public class VectorTileRenderer extends TileRenderer {
|
||||
proxy = r.parent.item;
|
||||
if (proxy.state == READY) {
|
||||
//log.debug("1. draw parent " + proxy);
|
||||
drawTile(proxy, v);
|
||||
drawTile(proxy, v, -1);
|
||||
}
|
||||
}
|
||||
} else if ((tile.proxies & MapTile.PROXY_GRAMPA) != 0) {
|
||||
@ -256,7 +256,7 @@ public class VectorTileRenderer extends TileRenderer {
|
||||
|
||||
proxy = r.parent.parent.item;
|
||||
if (proxy.state == READY)
|
||||
drawTile(proxy, v);
|
||||
drawTile(proxy, v, -2);
|
||||
}
|
||||
} else {
|
||||
/* prefer drawing parent */
|
||||
@ -265,7 +265,7 @@ public class VectorTileRenderer extends TileRenderer {
|
||||
proxy = r.parent.item;
|
||||
if (proxy != null && proxy.state == READY) {
|
||||
//log.debug("2. draw parent " + proxy);
|
||||
drawTile(proxy, v);
|
||||
drawTile(proxy, v, -1);
|
||||
return;
|
||||
|
||||
}
|
||||
@ -285,7 +285,7 @@ public class VectorTileRenderer extends TileRenderer {
|
||||
|
||||
proxy = r.parent.parent.item;
|
||||
if (proxy.state == READY)
|
||||
drawTile(proxy, v);
|
||||
drawTile(proxy, v, -2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user