@Override
public void foundShortcut(int u_fromNode, int w_toNode,
double existingDirectWeight, double existingDistSum,
EdgeIterator outgoingEdges,
int skippedEdge1, int incomingEdgeOrigCount) {
Shortcut sc = new Shortcut(u_fromNode, w_toNode, existingDirectWeight, existingDistSum);
if (shortcuts.containsKey(sc))
return;
Shortcut tmpSc = new Shortcut(w_toNode, u_fromNode, existingDirectWeight, existingDistSum);
Shortcut tmpRetSc = shortcuts.get(tmpSc);
if (tmpRetSc != null) {
if (tmpRetSc.skippedEdge2 == skippedEdge1 && tmpRetSc.skippedEdge1 == outgoingEdges.getEdge()) {
tmpRetSc.flags = PrepareEncoder.getScDirMask();
return;
}
}
Shortcut old = shortcuts.put(sc, sc);
if (old != null)
throw new IllegalStateException("Shortcut did not exist (" + sc + ") but was overwriting another one? " + old);
sc.skippedEdge1 = skippedEdge1;
sc.skippedEdge2 = outgoingEdges.getEdge();
sc.originalEdges = incomingEdgeOrigCount + getOrigEdgeCount(outgoingEdges.getEdge());
}
}