package org.osm2world.viewer.view.debug; import java.awt.Color; import org.osm2world.core.map_elevation.data.GroundState; import org.osm2world.core.math.PolygonXYZ; import org.osm2world.core.target.jogl.JOGLTarget; import org.osm2world.core.world.data.AreaWorldObject; import org.osm2world.core.world.data.TerrainBoundaryWorldObject; import org.osm2world.core.world.data.WaySegmentWorldObject; /** * draws terrain boundaries defined by world objects */ public class TerrainBoundaryDebugView extends DebugView { private static final Color NODE_BOUNDARY_COLOR = Color.YELLOW; private static final Color WAY_BOUNDARY_COLOR = Color.GREEN; private static final Color AREA_BOUNDARY_COLOR = Color.BLUE; @Override public String getDescription() { return "draws terrain boundaries defined by world objects"; } @Override public boolean canBeUsed() { return map != null; } @Override public void fillTarget(JOGLTarget target) { /* draw terrain boundaries */ for (TerrainBoundaryWorldObject terrainBoundary : map.getWorldObjects(TerrainBoundaryWorldObject.class)) { if (terrainBoundary.getGroundState() == GroundState.ON) { Color color = NODE_BOUNDARY_COLOR; if (terrainBoundary instanceof WaySegmentWorldObject) { color = WAY_BOUNDARY_COLOR; } else if (terrainBoundary instanceof AreaWorldObject) { color = AREA_BOUNDARY_COLOR; } PolygonXYZ outlinePolygon = terrainBoundary.getOutlinePolygon(); if (outlinePolygon != null) { target.drawLineLoop(color, 1, outlinePolygon.getVertices()); } } } } }