Wie ihr sicher schon oft erlebt habt, kann das Bauen von Straßen, Gleisen, Bahnhöfen und anderen Objekten sehr nervig werden, wenn es in einem zugebauten Gebiet zu vielen Kollisionswarnungen kommt. Bei Assets/Constructions lässt sich die Meldung mittels skipCollision=true umgehen, man kann so trotz Kollision bauen, erhält aber auch keine Rückmeldung mehr. Für Straßen/Gleise ist dies bis dato nicht möglich.
Ich habe rausgefunden: Das muss nicht sein!
Bei jedem Bauvorgang, egal ob Straße, Asset oder Konstruktion (auch Upgrades oder Bulldozer), entstehen Proposal Daten, die man auslesen kann. Dies ist zB beim Track/Street Builder Info der Fall.
Gleichzeitig kann man mit der API über buildProposal nahezu beliebige von diesen "Bauvorschlägen" bauen. Die Möglichkeiten sind umfangreicher als bei einer "normalen" Konstruktion. So kann man mit ignoreErrors=true auch Proposals bauen, die normalerweise mit einer Fehlermeldung Kollision, zu große Steigung oder Krümmung angezeigt werden. Nur wenn das Bauvorhaben "critical" ist (alles rot, "Bau nicht möglich"), kann es gar nicht gebaut werden.
Die Daten mit denen über die API gebaut wird, haben fast dasselbe Format wie die, die man auslesen kann. Also dachte ich mir, warum nicht zwischenspeichern und mit diesen Daten dann das Proposal mit ignoreErrors=true bauen?
Dazu gibt es eine Schaltfläche, die ähnlich wie dem Tooltip von Track/Street Builder Info beim Bauen nahe der Mausposition erscheint. Neben Straßen und Schienen lassen sich auch alle Konstruktionen sowie Upgrades mit Kollision durchführen (zB wenn die neue Straße zu breit ist).
Dadurch ergeben sich völlig neue Möglichkeiten beim Schönbau. Außerdem muss man wegen der Rückfrage die Kollision nicht ausschalten oder die Parameter von Schienen ändern, sondern kann Probleme weiterhin erkennen, aber gezielt erlauben. Auch Schienen auf Straßen sind so möglich.
Logischerweise ist man für die Kollision von Verkehrswegen dann selbst verantwortlich.