private TraverseResult doTraverse(State s0, TraverseOptions options, boolean back) { StreetVertex fromv = ((StreetVertex) this.fromv); if (!fromv.canTraverse(options)) { return tryWalkBike(s0, options, back); } Editor editor = s0.edit(); double time = fromv.getLength() / options.speed; double weight = fromv.computeWeight(s0, options, time); editor.incrementWalkDistance(fromv.getLength()); // time moves *backwards* when traversing an edge in the opposite direction editor.incrementTimeInSeconds((int) (back ? -time : time)); return new TraverseResult(weight, editor.createState(), this); }
@Override public void setElevationProfile(PackedCoordinateSequence elev) { ((StreetVertex) fromv).setElevationProfile(elev); }