BuildingLayer: add getExtrusionRenderer (#633)

This commit is contained in:
Gustl22 2019-01-22 23:19:38 +01:00 committed by Emux
parent 929d1fc78b
commit cae68ffec9
No known key found for this signature in database
GPG Key ID: 64ED9980896038C3
2 changed files with 13 additions and 4 deletions

View File

@ -39,7 +39,6 @@ import org.oscim.layers.tile.buildings.BuildingLayer;
import org.oscim.layers.tile.buildings.S3DBTileLayer;
import org.oscim.layers.tile.vector.VectorTileLayer;
import org.oscim.layers.tile.vector.labeling.LabelLayer;
import org.oscim.renderer.ExtrusionRenderer;
import org.oscim.renderer.MapRenderer;
import org.oscim.theme.StreamRenderTheme;
import org.oscim.theme.VtmThemes;
@ -151,7 +150,7 @@ class GwtMap extends GdxMap {
if (!nobuildings && !s3db) {
mBuildingLayer = new BuildingLayer(mMap, l);
((ExtrusionRenderer) mBuildingLayer.getRenderer()).setZLimit((float) 65536 / 10);
mBuildingLayer.getExtrusionRenderer().setZLimit((float) 65536 / 10);
mMap.layers().add(mBuildingLayer);
}
@ -174,7 +173,7 @@ class GwtMap extends GdxMap {
return;
}
((ExtrusionRenderer) mBuildingLayer.getRenderer()).setZLimit((float) val / 10);
mBuildingLayer.getExtrusionRenderer().setZLimit((float) val / 10);
mMap.updateMap(true);
}

View File

@ -27,6 +27,7 @@ import org.oscim.layers.tile.ZoomLimiter;
import org.oscim.layers.tile.vector.VectorTileLayer;
import org.oscim.layers.tile.vector.VectorTileLayer.TileLoaderThemeHook;
import org.oscim.map.Map;
import org.oscim.renderer.ExtrusionRenderer;
import org.oscim.renderer.OffscreenRenderer;
import org.oscim.renderer.OffscreenRenderer.Mode;
import org.oscim.renderer.bucket.ExtrusionBuckets;
@ -65,6 +66,8 @@ public class BuildingLayer extends Layer implements TileLoaderThemeHook, ZoomLim
// Can be replaced with Multimap in Java 8
protected java.util.Map<Integer, List<BuildingElement>> mBuildings = new HashMap<>();
protected final ExtrusionRenderer mExtrusionRenderer;
private final ZoomLimiter mZoomLimiter;
protected final IRenderTheme mRenderTheme;
@ -103,7 +106,7 @@ public class BuildingLayer extends Layer implements TileLoaderThemeHook, ZoomLim
// Use zoomMin as zoomLimit to render buildings only once
mZoomLimiter = new ZoomLimiter(tileLayer.getManager(), zoomMin, zoomMax, zoomMin);
mRenderer = new BuildingRenderer(tileLayer.tileRenderer(), mZoomLimiter, mesh, TRANSLUCENT);
mRenderer = mExtrusionRenderer = new BuildingRenderer(tileLayer.tileRenderer(), mZoomLimiter, mesh, TRANSLUCENT);
if (POST_AA)
mRenderer = new OffscreenRenderer(Mode.SSAO_FXAA, mRenderer);
@ -243,6 +246,13 @@ public class BuildingLayer extends Layer implements TileLoaderThemeHook, ZoomLim
return ebs;
}
/**
* Get the ExtrusionRenderer for customization.
*/
public ExtrusionRenderer getExtrusionRenderer() {
return mExtrusionRenderer;
}
protected String getKeyOrDefault(String key) {
if (mRenderTheme == null)
return key;