rework start inside roundabout, turnInstructionRoundabouts

This commit is contained in:
afischerdev 2023-05-04 12:28:05 +02:00
parent 2c707c977b
commit 43ea1ef054

View file

@ -60,6 +60,7 @@ public final class VoiceHintProcessor {
float roundAboutTurnAngle = 0.f; // sums up angles in roundabout
int roundaboutExit = 0;
int roundaboudStartIdx = -1;
for (int hintIdx = 0; hintIdx < inputs.size(); hintIdx++) {
VoiceHint input = inputs.get(hintIdx);
@ -77,7 +78,8 @@ public final class VoiceHintProcessor {
boolean isLink2Highway = input.oldWay.isLinktType() && !input.goodWay.isLinktType();
boolean isHighway2Link = !input.oldWay.isLinktType() && input.goodWay.isLinktType();
if (input.oldWay.isRoundabout()) {
if (explicitRoundabouts && input.oldWay.isRoundabout()) {
if (roundaboudStartIdx == -1) roundaboudStartIdx = hintIdx;
roundAboutTurnAngle += sumNonConsumedWithinCatchingRange(inputs, hintIdx);
boolean isExit = roundaboutExit == 0; // exit point is always exit
if (input.badWays != null) {
@ -94,13 +96,15 @@ public final class VoiceHintProcessor {
}
if (roundaboutExit > 0) {
roundAboutTurnAngle += sumNonConsumedWithinCatchingRange(inputs, hintIdx);
double startTurn = (roundaboudStartIdx != -1 ? inputs.get(roundaboudStartIdx).goodWay.turnangle : turnAngle);
input.angle = roundAboutTurnAngle;
input.distanceToNext = distance;
input.roundaboutExit = turnAngle < 0 ? -roundaboutExit : roundaboutExit;
input.roundaboutExit = startTurn < 0 ? -roundaboutExit : roundaboutExit;
distance = 0.;
results.add(input);
roundAboutTurnAngle = 0.f;
roundaboutExit = 0;
roundaboudStartIdx = -1;
continue;
}
int maxPrioAll = -1; // max prio of all detours