diff --git a/src/geometry/Building.cpp b/src/geometry/Building.cpp index 1305cd44be0641ad36e0c4b959e3e0d56db78c2a..a3b5d42a9aa911569fe7471717277303445f214a 100644 --- a/src/geometry/Building.cpp +++ b/src/geometry/Building.cpp @@ -678,17 +678,22 @@ Room* Building::GetRoom(string caption) const exit(EXIT_FAILURE); } -void Building::AddCrossing(Crossing* line) +bool Building::AddCrossing(Crossing* line) { - if (_crossings.count(line->GetID()) != 0) { - char tmp[CLENGTH]; - sprintf(tmp, - "ERROR: Duplicate index for crossing found [%d] in Routing::AddCrossing()", - line->GetID()); - Log->Write(tmp); - exit(EXIT_FAILURE); - } - _crossings[line->GetID()] = line; + int IDRoom = line->GetRoom1()->GetID(); + int IDLine = line->GetID(); + int IDCrossing = 1000 * IDRoom + IDLine; + if (_crossings.count(IDCrossing) != 0) + { + char tmp[CLENGTH]; + sprintf(tmp, + "ERROR: Duplicate index for crossing found [%d] in Routing::AddCrossing()", + IDCrossing); + Log->Write(tmp); + exit(EXIT_FAILURE); + } + _crossings[IDCrossing] = line; + return true; } void Building::AddTransition(Transition* line)