// obrotnica o długości 21 metrow
// (p1) - nazwa własna, (p2) (p3) (p4) - wspólrzędne, (p5) - rotacja, (p6) - nawierzchnia

origin (p2) (p3) (p4)
rotate 0 (p5) 0
node -1 0 (p1) model 0 0 0 0 eng/obrotnica16m.t3d (p6) endmodel
rotate 0 0 0
endorigin

//zdarzenia zewnętrzne, ustawiające połączenia na 6 (12) torów, blokada ruchu, jeśli nie ma zmiany toru
event (p1)_tor1 multiple 0 (p1) else _(p1)_tor1 _(p1)_1 _(p1)_stop _(p1)_tor1rot condition memcompare * 1 * endevent
event (p1)_tor2 multiple 0 (p1) else _(p1)_tor2 _(p1)_1 _(p1)_stop _(p1)_tor2rot condition memcompare * 2 * endevent
event (p1)_tor3 multiple 0 (p1) else _(p1)_tor3 _(p1)_1 _(p1)_stop _(p1)_tor3rot condition memcompare * 3 * endevent
event (p1)_tor4 multiple 0 (p1) else _(p1)_tor4 _(p1)_1 _(p1)_stop _(p1)_tor4rot condition memcompare * 4 * endevent
event (p1)_tor5 multiple 0 (p1) else _(p1)_tor5 _(p1)_1 _(p1)_stop _(p1)_tor5rot condition memcompare * 5 * endevent
event (p1)_tor6 multiple 0 (p1) else _(p1)_tor6 _(p1)_1 _(p1)_stop _(p1)_tor6rot condition memcompare * 6 * endevent

//komórka blokująca uruchomienie nowej nastawy przed zakończeniem poprzedniej
//jeśli nastąpi zmiana toru docelowego, to raczej nie ma sensu kontynuowanie poprzedniego ustawienia
node -1 0 (p1)_com memcell (p2) (p3) (p4) ShuntVelocity 5 5 (p1) endmemcell //normalnie można jechać

//komórka zajętości toru (od wersji 423 tworzona automatycznie)
node -1 0 (p1) memcell (p2) (p3) (p4) none 2 0 none endmemcell

//zdarzenia wewnętrzne
event _(p1)_tor1 updatevalues 0 (p1) * 1 * endevent //informacja o torze docelowym
event _(p1)_tor2 updatevalues 0 (p1) * 2 * endevent
event _(p1)_tor3 updatevalues 0 (p1) * 3 * endevent
event _(p1)_tor4 updatevalues 0 (p1) * 4 * endevent
event _(p1)_tor5 updatevalues 0 (p1) * 5 * endevent
event _(p1)_tor6 updatevalues 0 (p1) * 6 * endevent

event _(p1)_1 switch 0 (p1) 1 endevent //blokada jazdy i odłączenie obrotnicy od reszty torów

event _(p1)_stop animation 0 (p1) rotate WZ1 0 0 0 100 endevent //pokazanie zakazu jazdy

event _(p1)_tor1rot animation 1 (p1) rotate dzwigar 0 0 160.165 2 endevent //kąty obrotu
event _(p1)_tor2rot animation 1 (p1) rotate dzwigar 0 0 137.444 2 endevent
event _(p1)_tor3rot animation 1 (p1) rotate dzwigar 0 0 127.75 2 endevent
event _(p1)_tor4rot animation 1 (p1) rotate dzwigar 0 0 123.869 2 endevent
event _(p1)_tor5rot animation 1 (p1) rotate dzwigar 0 0 119.457 2 endevent
event _(p1)_tor6rot animation 1 (p1) rotate dzwigar 0 0 62.691 2 endevent

//zdarzenie zakończenia animacji - podłączenie torów i zezwolenie na jazdę
event (p1):done switch 0 (p1) 0 endevent //ponowne dołączenie do znalezionych torów
event (p1).dzwigar:done switch 0 (p1) 0 endevent //wersja dla dowolnego animowanego modelu

//zdarzenie poprawnego podłączenia torów do obrotnicy
event (p1):joined animation 2 (p1) rotate WZ1 0 0 90 100 endevent //pokazanie zezwolenia na jazdę
