BuildingLayer: add shadow parameter #575
This commit is contained in:
parent
7cfbe1c115
commit
f348296a8c
@ -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();
|
||||||
|
@ -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);
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -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() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user