Bei rotiertem Rauch darf man nicht so genau hingucken
Leicht zu aendern ist, dass der Rauch aus dem richtigen Fabrikteil rauskommt.
Aber die Feinjustierung, dass der Rauch dann auch noch aus dem Schornstein und nicht, sagen wir mal aus dem Backofen kommt, ist schon gehobene Glueckssache Da muesste man die dat-Parameter um einen Smoke-Offset fuer jede Rotation ergaenzen.
Aber die x- und y-offsets in koord3d::rotate90() bringen alles durcheinander. Rotiere mal eine Karte mit Industrierauch. Der schon existierende Rauch ist dann teilweise mehrere Tiles von seiner urspruenglichen Position entfernt.
Eigentlich braeuchte man 3d-Offsets. Denn woher soll Simutrans wissen, ob zum Beispiel der Rauch in der hinteren Tileecke am Boden oder in der vorderen Tileecke aber oberhalb des Bodens erzeugt wird? Das Bild ist erst einmal dasselbe, aber nach der Rotation nicht mehr.
Oder man nimmt dem Programm die Rotation ab und laesst die Smoke-Offsets fuer jede Orientierung in der pak-Datei einstellen.
Wieso: Die basiskachel ist doch vorgebbar mit smoke_tile. Die müsste nur halt korrekt mitrotiert werden für die anderen layouts. Oder verwechsel ich was? Die Offsets im Tile müssen natürlich horizontal gespiegelt werden für ungerade Rotationen. SOllte alles machbar sein.
Du hast schon recht, es ist einfach, die richtige Kachel zu treffen, an der der Rauch ausgestossen wird.
Dann gibts es aber noch den Offset fuer die Feinpositionierung in der Kachel, den kriegt man nicht gescheit rotiert.
Und jede schon vorhandene Wolke hat auch so einen Offset, der in koord3d::rotate90() rotiert wird. Das fuehrt dann bei Franks Kohlegruben (xoff=5, yoff=-27) dazu, dass die Wolke total neben der Spur ist (xoff=54 - also fast eine Kachel daneben). Mein Versuch das zu bessern ist: