diff --git a/vtm-android-example/src/org/oscim/android/test/ShadowActivity.java b/vtm-android-example/src/org/oscim/android/test/ShadowActivity.java index 544da3f3..da54e54e 100644 --- a/vtm-android-example/src/org/oscim/android/test/ShadowActivity.java +++ b/vtm-android-example/src/org/oscim/android/test/ShadowActivity.java @@ -1,5 +1,6 @@ /* * Copyright 2019 Gustl22 + * Copyright 2019 devemux86 * * This program is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free Software @@ -19,34 +20,25 @@ import android.view.View; import android.widget.SeekBar; import android.widget.ToggleButton; -import org.oscim.layers.tile.buildings.BuildingLayer; import org.oscim.renderer.ExtrusionRenderer; import org.oscim.renderer.light.Sun; public class ShadowActivity extends SimpleMapActivity implements SeekBar.OnSeekBarChangeListener { - public ShadowActivity() { - super(R.layout.activity_shadow); - } - private SeekBar mSeekBar; + public ShadowActivity() { + super(true, R.layout.activity_shadow); + } + @Override public void onCreate(Bundle savedInstanceState) { - BuildingLayer.SHADOW = true; - super.onCreate(savedInstanceState); + mSeekBar = findViewById(R.id.seekBarShadow); mSeekBar.setOnSeekBarChangeListener(this); } - @Override - protected void onDestroy() { - super.onDestroy(); - - BuildingLayer.SHADOW = false; - } - @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { int id = seekBar.getId(); diff --git a/vtm-android-example/src/org/oscim/android/test/SimpleMapActivity.java b/vtm-android-example/src/org/oscim/android/test/SimpleMapActivity.java index 6c843f86..9de50ea8 100644 --- a/vtm-android-example/src/org/oscim/android/test/SimpleMapActivity.java +++ b/vtm-android-example/src/org/oscim/android/test/SimpleMapActivity.java @@ -1,6 +1,6 @@ /* * Copyright 2013 Hannes Janetzek - * Copyright 2016-2018 devemux86 + * Copyright 2016-2019 devemux86 * Copyright 2019 Gustl22 * * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). @@ -41,14 +41,20 @@ public class SimpleMapActivity extends BaseMapActivity { private DefaultMapScaleBar mapScaleBar; BuildingLayer mBuildingLayer; - LabelLayer mLabelLayer; - - public SimpleMapActivity(int contentView) { - super(contentView); - } + private boolean mShadow; public SimpleMapActivity() { + this(false); + } + + public SimpleMapActivity(boolean shadow) { super(); + mShadow = shadow; + } + + public SimpleMapActivity(boolean shadow, int contentView) { + super(contentView); + mShadow = shadow; } @Override @@ -60,10 +66,9 @@ public class SimpleMapActivity extends BaseMapActivity { void createLayers() { GroupLayer groupLayer = new GroupLayer(mMap); - mBuildingLayer = new BuildingLayer(mMap, mBaseLayer); + mBuildingLayer = new BuildingLayer(mMap, mBaseLayer, false, mShadow); groupLayer.layers.add(mBuildingLayer); - mLabelLayer = new LabelLayer(mMap, mBaseLayer); - groupLayer.layers.add(mLabelLayer); + groupLayer.layers.add(new LabelLayer(mMap, mBaseLayer)); mMap.layers().add(groupLayer); mapScaleBar = new DefaultMapScaleBar(mMap); diff --git a/vtm-playground/src/org/oscim/test/MapsforgeTest.java b/vtm-playground/src/org/oscim/test/MapsforgeTest.java index 2e1620f4..5c7ef09b 100644 --- a/vtm-playground/src/org/oscim/test/MapsforgeTest.java +++ b/vtm-playground/src/org/oscim/test/MapsforgeTest.java @@ -68,8 +68,7 @@ public class MapsforgeTest extends GdxMapApp { VectorTileLayer l = mMap.setBaseMap(tileSource); loadTheme(null); - BuildingLayer.SHADOW = SHADOWS; - BuildingLayer buildingLayer = s3db ? new S3DBLayer(mMap, l) : new BuildingLayer(mMap, l); + BuildingLayer buildingLayer = s3db ? new S3DBLayer(mMap, l, SHADOWS) : new BuildingLayer(mMap, l, false, SHADOWS); mMap.layers().add(buildingLayer); if (poi3d) @@ -117,9 +116,6 @@ public class MapsforgeTest extends GdxMapApp { @Override public void dispose() { - if (SHADOWS) - BuildingLayer.SHADOW = false; - MapPreferences.saveMapPosition(mMap.getMapPosition()); super.dispose(); } diff --git a/vtm/src/org/oscim/layers/tile/buildings/BuildingLayer.java b/vtm/src/org/oscim/layers/tile/buildings/BuildingLayer.java index 03f61d55..7cdf806d 100644 --- a/vtm/src/org/oscim/layers/tile/buildings/BuildingLayer.java +++ b/vtm/src/org/oscim/layers/tile/buildings/BuildingLayer.java @@ -1,6 +1,6 @@ /* * Copyright 2013 Hannes Janetzek - * Copyright 2016-2018 devemux86 + * Copyright 2016-2019 devemux86 * Copyright 2016 Robin Boldt * Copyright 2017-2019 Gustl22 * @@ -60,11 +60,6 @@ public class BuildingLayer extends Layer implements TileLoaderThemeHook, ZoomLim */ public static boolean RAW_DATA = false; - /** - * Use shadow rendering. - */ - public static boolean SHADOW = false; - /** * Let vanish extrusions / meshes which are covered by others. * {@link org.oscim.renderer.bucket.RenderBucket#EXTRUSION}: roofs are always translucent. @@ -95,11 +90,11 @@ public class BuildingLayer extends Layer implements TileLoaderThemeHook, ZoomLim } public BuildingLayer(Map map, VectorTileLayer tileLayer) { - this(map, tileLayer, false); + this(map, tileLayer, false, false); } - public BuildingLayer(Map map, VectorTileLayer tileLayer, boolean mesh) { - this(map, tileLayer, MIN_ZOOM, map.viewport().getMaxZoomLevel(), mesh); + public BuildingLayer(Map map, VectorTileLayer tileLayer, boolean mesh, boolean shadow) { + this(map, tileLayer, MIN_ZOOM, map.viewport().getMaxZoomLevel(), mesh, shadow); } /** @@ -108,9 +103,9 @@ public class BuildingLayer extends Layer implements TileLoaderThemeHook, ZoomLim * @param zoomMin The minimum zoom at which the layer appears * @param zoomMax The maximum zoom at which the layer appears * @param mesh Declare if using mesh or polygon renderer + * @param shadow Declare if using shadow renderer */ - public BuildingLayer(Map map, VectorTileLayer tileLayer, int zoomMin, int zoomMax, boolean mesh) { - + public BuildingLayer(Map map, VectorTileLayer tileLayer, int zoomMin, int zoomMax, boolean mesh, boolean shadow) { super(map); tileLayer.addHook(this); @@ -119,8 +114,8 @@ public class BuildingLayer extends Layer implements TileLoaderThemeHook, ZoomLim mZoomLimiter = new ZoomLimiter(tileLayer.getManager(), zoomMin, zoomMax, zoomMin); mRenderer = mExtrusionRenderer = new BuildingRenderer(tileLayer.tileRenderer(), mZoomLimiter, mesh, TRANSLUCENT); - // TODO Allow SHADOW and POST_AA at same time - if (SHADOW) + // TODO Allow shadow and POST_AA at same time + if (shadow) mRenderer = new ShadowRenderer(mExtrusionRenderer); else if (POST_AA) mRenderer = new OffscreenRenderer(Mode.SSAO_FXAA, mRenderer); diff --git a/vtm/src/org/oscim/layers/tile/buildings/S3DBLayer.java b/vtm/src/org/oscim/layers/tile/buildings/S3DBLayer.java index 9279edca..be14fc41 100644 --- a/vtm/src/org/oscim/layers/tile/buildings/S3DBLayer.java +++ b/vtm/src/org/oscim/layers/tile/buildings/S3DBLayer.java @@ -1,6 +1,6 @@ /* * Copyright 2018 Gustl22 - * Copyright 2018 devemux86 + * Copyright 2018-2019 devemux86 * * This program is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free Software @@ -38,7 +38,7 @@ import java.util.Set; import static org.oscim.renderer.MapRenderer.COORD_SCALE; /** - * An experimental layer to display S3DB elements. + * A layer to display S3DB elements. */ public class S3DBLayer extends BuildingLayer { @@ -50,7 +50,11 @@ public class S3DBLayer extends BuildingLayer { private boolean mTransparent = true; public S3DBLayer(Map map, VectorTileLayer tileLayer) { - this(map, tileLayer, MIN_ZOOM, map.viewport().getMaxZoomLevel()); + this(map, tileLayer, false); + } + + public S3DBLayer(Map map, VectorTileLayer tileLayer, boolean shadow) { + this(map, tileLayer, MIN_ZOOM, map.viewport().getMaxZoomLevel(), shadow); } /** @@ -58,9 +62,10 @@ public class S3DBLayer extends BuildingLayer { * @param tileLayer The vector tile layer which contains the tiles and map elements * @param zoomMin The minimum zoom at which the layer appears * @param zoomMax The maximum zoom at which the layer appears + * @param shadow Declare if using shadow renderer */ - public S3DBLayer(Map map, VectorTileLayer tileLayer, int zoomMin, int zoomMax) { - super(map, tileLayer, zoomMin, zoomMax, true); + public S3DBLayer(Map map, VectorTileLayer tileLayer, int zoomMin, int zoomMax, boolean shadow) { + super(map, tileLayer, zoomMin, zoomMax, true, shadow); } public boolean isColored() {