package org.osm2world.viewer.view.debug;
import java.awt.Color;
import org.osm2world.core.map_data.data.MapNode;
import org.osm2world.core.map_data.data.MapWaySegment;
import org.osm2world.core.math.VectorXYZ;
import org.osm2world.core.math.VectorXZ;
import org.osm2world.core.target.jogl.JOGLTarget;
import org.osm2world.core.world.data.WorldObject;
import org.osm2world.core.world.network.NetworkWaySegmentWorldObject;
/**
* shows information about {@link NetworkWaySegmentWorldObject}s
*/
public class NetworkDebugView extends DebugView {
private static final Color OFFSET_COLOR = Color.PINK;
private static final Color CUT_COLOR = Color.ORANGE;
@Override
public boolean canBeUsed() {
return map != null;
}
@Override
public void fillTarget(JOGLTarget target) {
for (MapWaySegment line : map.getMapWaySegments()) {
for (WorldObject worldObject : line.getRepresentations()) {
if (worldObject instanceof NetworkWaySegmentWorldObject) {
NetworkWaySegmentWorldObject representation =
(NetworkWaySegmentWorldObject) worldObject;
/* draw lines */
// util.drawLineStrip(LINE_COLOR,
// line.getStartNode().getPos(), line.getEndNode().getPos());
/* draw offsets */
drawVectorAt(target, OFFSET_COLOR,
representation.getStartOffset(), line.getStartNode());
drawVectorAt(target, OFFSET_COLOR,
representation.getEndOffset(), line.getEndNode());
/* draw cuts */
drawVectorAt(target, CUT_COLOR,
representation.getStartCutVector(), line.getStartNode());
drawVectorAt(target, CUT_COLOR,
representation.getEndCutVector(), line.getEndNode());
}
}
}
}
private static void drawVectorAt(JOGLTarget target,
Color color, VectorXZ vector, MapNode start) {
VectorXYZ startV = start.getPos().xyz(0);
VectorXYZ endV = startV.add(vector);
drawArrow(target, color, 0.3f * (float)vector.length(), startV, endV);
}
}