Building / S3DB layers: simplify building element
This commit is contained in:
parent
25aa1329fc
commit
3a59a31ab3
@ -52,17 +52,15 @@ public class BuildingLayer extends Layer implements TileLoaderThemeHook {
|
|||||||
private static final Object BUILDING_DATA = BuildingLayer.class.getName();
|
private static final Object BUILDING_DATA = BuildingLayer.class.getName();
|
||||||
|
|
||||||
// Can be replaced with Multimap in Java 8
|
// Can be replaced with Multimap in Java 8
|
||||||
protected HashMap<Integer, List<BuildingElement>> mBuildings = new HashMap<>();
|
protected java.util.Map<Integer, List<BuildingElement>> mBuildings = new HashMap<>();
|
||||||
|
|
||||||
class BuildingElement {
|
class BuildingElement {
|
||||||
MapElement element;
|
MapElement element;
|
||||||
ExtrusionStyle style;
|
ExtrusionStyle style;
|
||||||
boolean isPart;
|
|
||||||
|
|
||||||
BuildingElement(MapElement element, ExtrusionStyle style, boolean isPart) {
|
BuildingElement(MapElement element, ExtrusionStyle style) {
|
||||||
this.element = element;
|
this.element = element;
|
||||||
this.style = style;
|
this.style = style;
|
||||||
this.isPart = isPart;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -110,7 +108,7 @@ public class BuildingLayer extends Layer implements TileLoaderThemeHook {
|
|||||||
mBuildings.put(tile.hashCode(), buildingElements);
|
mBuildings.put(tile.hashCode(), buildingElements);
|
||||||
}
|
}
|
||||||
element = new MapElement(element); // Deep copy, because element will be cleared
|
element = new MapElement(element); // Deep copy, because element will be cleared
|
||||||
buildingElements.add(new BuildingElement(element, extrusion, element.isBuildingPart()));
|
buildingElements.add(new BuildingElement(element, extrusion));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -168,7 +166,7 @@ public class BuildingLayer extends Layer implements TileLoaderThemeHook {
|
|||||||
List<BuildingElement> tileBuildings = mBuildings.get(tile.hashCode());
|
List<BuildingElement> tileBuildings = mBuildings.get(tile.hashCode());
|
||||||
Set<BuildingElement> rootBuildings = new HashSet<>();
|
Set<BuildingElement> rootBuildings = new HashSet<>();
|
||||||
for (BuildingElement partBuilding : tileBuildings) {
|
for (BuildingElement partBuilding : tileBuildings) {
|
||||||
if (!partBuilding.isPart)
|
if (!partBuilding.element.isBuildingPart())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
String refId = partBuilding.element.tags.getValue(Tag.KEY_REF); // #TagFromTheme
|
String refId = partBuilding.element.tags.getValue(Tag.KEY_REF); // #TagFromTheme
|
||||||
@ -178,7 +176,7 @@ public class BuildingLayer extends Layer implements TileLoaderThemeHook {
|
|||||||
|
|
||||||
// Search buildings which inherit parts
|
// Search buildings which inherit parts
|
||||||
for (BuildingElement rootBuilding : tileBuildings) {
|
for (BuildingElement rootBuilding : tileBuildings) {
|
||||||
if (rootBuilding.isPart
|
if (rootBuilding.element.isBuildingPart()
|
||||||
|| !(refId.equals(rootBuilding.element.tags.getValue(Tag.KEY_ID))))
|
|| !(refId.equals(rootBuilding.element.tags.getValue(Tag.KEY_ID))))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@ -159,7 +159,7 @@ public class S3DBLayer extends BuildingLayer {
|
|||||||
List<BuildingElement> tileBuildings = mBuildings.get(tile.hashCode());
|
List<BuildingElement> tileBuildings = mBuildings.get(tile.hashCode());
|
||||||
Set<BuildingElement> rootBuildings = new HashSet<>();
|
Set<BuildingElement> rootBuildings = new HashSet<>();
|
||||||
for (BuildingElement partBuilding : tileBuildings) {
|
for (BuildingElement partBuilding : tileBuildings) {
|
||||||
if (!partBuilding.isPart)
|
if (!partBuilding.element.isBuildingPart())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
TagSet partTags = partBuilding.element.tags;
|
TagSet partTags = partBuilding.element.tags;
|
||||||
@ -170,7 +170,7 @@ public class S3DBLayer extends BuildingLayer {
|
|||||||
|
|
||||||
// Search buildings which inherit parts
|
// Search buildings which inherit parts
|
||||||
for (BuildingElement rootBuilding : tileBuildings) {
|
for (BuildingElement rootBuilding : tileBuildings) {
|
||||||
if (rootBuilding.isPart
|
if (rootBuilding.element.isBuildingPart()
|
||||||
|| !(refId.equals(rootBuilding.element.tags.getValue(Tag.KEY_ID))))
|
|| !(refId.equals(rootBuilding.element.tags.getValue(Tag.KEY_ID))))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user