BuildingLayer: add shadow parameter #575

This commit is contained in:
Emux 2019-02-21 20:12:20 +02:00
parent 7cfbe1c115
commit f348296a8c
No known key found for this signature in database
GPG Key ID: 64ED9980896038C3
5 changed files with 39 additions and 46 deletions

View File

@ -1,5 +1,6 @@
/* /*
* Copyright 2019 Gustl22 * Copyright 2019 Gustl22
* Copyright 2019 devemux86
* *
* This program is free software: you can redistribute it and/or modify it under the * 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 * 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.SeekBar;
import android.widget.ToggleButton; import android.widget.ToggleButton;
import org.oscim.layers.tile.buildings.BuildingLayer;
import org.oscim.renderer.ExtrusionRenderer; import org.oscim.renderer.ExtrusionRenderer;
import org.oscim.renderer.light.Sun; import org.oscim.renderer.light.Sun;
public class ShadowActivity extends SimpleMapActivity implements SeekBar.OnSeekBarChangeListener { public class ShadowActivity extends SimpleMapActivity implements SeekBar.OnSeekBarChangeListener {
public ShadowActivity() {
super(R.layout.activity_shadow);
}
private SeekBar mSeekBar; private SeekBar mSeekBar;
public ShadowActivity() {
super(true, R.layout.activity_shadow);
}
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
BuildingLayer.SHADOW = true;
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
mSeekBar = findViewById(R.id.seekBarShadow); mSeekBar = findViewById(R.id.seekBarShadow);
mSeekBar.setOnSeekBarChangeListener(this); mSeekBar.setOnSeekBarChangeListener(this);
} }
@Override
protected void onDestroy() {
super.onDestroy();
BuildingLayer.SHADOW = false;
}
@Override @Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
int id = seekBar.getId(); int id = seekBar.getId();

View File

@ -1,6 +1,6 @@
/* /*
* Copyright 2013 Hannes Janetzek * Copyright 2013 Hannes Janetzek
* Copyright 2016-2018 devemux86 * Copyright 2016-2019 devemux86
* Copyright 2019 Gustl22 * Copyright 2019 Gustl22
* *
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org). * This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
@ -41,14 +41,20 @@ public class SimpleMapActivity extends BaseMapActivity {
private DefaultMapScaleBar mapScaleBar; private DefaultMapScaleBar mapScaleBar;
BuildingLayer mBuildingLayer; BuildingLayer mBuildingLayer;
LabelLayer mLabelLayer; private boolean mShadow;
public SimpleMapActivity(int contentView) {
super(contentView);
}
public SimpleMapActivity() { public SimpleMapActivity() {
this(false);
}
public SimpleMapActivity(boolean shadow) {
super(); super();
mShadow = shadow;
}
public SimpleMapActivity(boolean shadow, int contentView) {
super(contentView);
mShadow = shadow;
} }
@Override @Override
@ -60,10 +66,9 @@ public class SimpleMapActivity extends BaseMapActivity {
void createLayers() { void createLayers() {
GroupLayer groupLayer = new GroupLayer(mMap); GroupLayer groupLayer = new GroupLayer(mMap);
mBuildingLayer = new BuildingLayer(mMap, mBaseLayer); mBuildingLayer = new BuildingLayer(mMap, mBaseLayer, false, mShadow);
groupLayer.layers.add(mBuildingLayer); groupLayer.layers.add(mBuildingLayer);
mLabelLayer = new LabelLayer(mMap, mBaseLayer); groupLayer.layers.add(new LabelLayer(mMap, mBaseLayer));
groupLayer.layers.add(mLabelLayer);
mMap.layers().add(groupLayer); mMap.layers().add(groupLayer);
mapScaleBar = new DefaultMapScaleBar(mMap); mapScaleBar = new DefaultMapScaleBar(mMap);

View File

@ -68,8 +68,7 @@ public class MapsforgeTest extends GdxMapApp {
VectorTileLayer l = mMap.setBaseMap(tileSource); VectorTileLayer l = mMap.setBaseMap(tileSource);
loadTheme(null); loadTheme(null);
BuildingLayer.SHADOW = SHADOWS; BuildingLayer buildingLayer = s3db ? new S3DBLayer(mMap, l, SHADOWS) : new BuildingLayer(mMap, l, false, SHADOWS);
BuildingLayer buildingLayer = s3db ? new S3DBLayer(mMap, l) : new BuildingLayer(mMap, l);
mMap.layers().add(buildingLayer); mMap.layers().add(buildingLayer);
if (poi3d) if (poi3d)
@ -117,9 +116,6 @@ public class MapsforgeTest extends GdxMapApp {
@Override @Override
public void dispose() { public void dispose() {
if (SHADOWS)
BuildingLayer.SHADOW = false;
MapPreferences.saveMapPosition(mMap.getMapPosition()); MapPreferences.saveMapPosition(mMap.getMapPosition());
super.dispose(); super.dispose();
} }

View File

@ -1,6 +1,6 @@
/* /*
* Copyright 2013 Hannes Janetzek * Copyright 2013 Hannes Janetzek
* Copyright 2016-2018 devemux86 * Copyright 2016-2019 devemux86
* Copyright 2016 Robin Boldt * Copyright 2016 Robin Boldt
* Copyright 2017-2019 Gustl22 * Copyright 2017-2019 Gustl22
* *
@ -60,11 +60,6 @@ public class BuildingLayer extends Layer implements TileLoaderThemeHook, ZoomLim
*/ */
public static boolean RAW_DATA = false; public static boolean RAW_DATA = false;
/**
* Use shadow rendering.
*/
public static boolean SHADOW = false;
/** /**
* Let vanish extrusions / meshes which are covered by others. * Let vanish extrusions / meshes which are covered by others.
* {@link org.oscim.renderer.bucket.RenderBucket#EXTRUSION}: roofs are always translucent. * {@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) { public BuildingLayer(Map map, VectorTileLayer tileLayer) {
this(map, tileLayer, false); this(map, tileLayer, false, false);
} }
public BuildingLayer(Map map, VectorTileLayer tileLayer, boolean mesh) { public BuildingLayer(Map map, VectorTileLayer tileLayer, boolean mesh, boolean shadow) {
this(map, tileLayer, MIN_ZOOM, map.viewport().getMaxZoomLevel(), mesh); 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 zoomMin The minimum zoom at which the layer appears
* @param zoomMax The maximum 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 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); super(map);
tileLayer.addHook(this); tileLayer.addHook(this);
@ -119,8 +114,8 @@ public class BuildingLayer extends Layer implements TileLoaderThemeHook, ZoomLim
mZoomLimiter = new ZoomLimiter(tileLayer.getManager(), zoomMin, zoomMax, zoomMin); mZoomLimiter = new ZoomLimiter(tileLayer.getManager(), zoomMin, zoomMax, zoomMin);
mRenderer = mExtrusionRenderer = new BuildingRenderer(tileLayer.tileRenderer(), mZoomLimiter, mesh, TRANSLUCENT); mRenderer = mExtrusionRenderer = new BuildingRenderer(tileLayer.tileRenderer(), mZoomLimiter, mesh, TRANSLUCENT);
// TODO Allow SHADOW and POST_AA at same time // TODO Allow shadow and POST_AA at same time
if (SHADOW) if (shadow)
mRenderer = new ShadowRenderer(mExtrusionRenderer); mRenderer = new ShadowRenderer(mExtrusionRenderer);
else if (POST_AA) else if (POST_AA)
mRenderer = new OffscreenRenderer(Mode.SSAO_FXAA, mRenderer); mRenderer = new OffscreenRenderer(Mode.SSAO_FXAA, mRenderer);

View File

@ -1,6 +1,6 @@
/* /*
* Copyright 2018 Gustl22 * 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 * 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 * 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; 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 { public class S3DBLayer extends BuildingLayer {
@ -50,7 +50,11 @@ public class S3DBLayer extends BuildingLayer {
private boolean mTransparent = true; private boolean mTransparent = true;
public S3DBLayer(Map map, VectorTileLayer tileLayer) { 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 tileLayer The vector tile layer which contains the tiles and map elements
* @param zoomMin The minimum zoom at which the layer appears * @param zoomMin The minimum zoom at which the layer appears
* @param zoomMax The maximum 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) { public S3DBLayer(Map map, VectorTileLayer tileLayer, int zoomMin, int zoomMax, boolean shadow) {
super(map, tileLayer, zoomMin, zoomMax, true); super(map, tileLayer, zoomMin, zoomMax, true, shadow);
} }
public boolean isColored() { public boolean isColored() {