//-- przejazd strzezony z rogatkami drewnianymi 4.5m o napedzie elektrycznym,
// sygnalizacja swietlna i dzwiekowa, linia dwutorowa. 

// p1 - nazwa przejazdu, p2,p3,p4-polozenie,p5-rotacja, p6,p7 - nazwy torow przebiegajacych przez przejazd

event (p1)_warning putvalues 10.0 none (p2) (p3) (p4) Warning_signal 1 2 endevent

origin (p2) (p3) (p4)
rotate 0 (p5) 0

//--- modele sygnalizacji przejazdowej 
node 800 0 (p1)_Syg1 model -8.0 0.0 4.0 90 PKP/SP2cc.t3d none Lights 1 0 endmodel
node 800 0 (p1)_Syg2 model 8.0 0.0 -4.0 -90 PKP/SP2cc.t3d none Lights 1 0 endmodel

node 800 0 (p1)_rog1 model -7.5 0.0 4.0 0 PKP/szlab_d_45.t3d none endmodel
node 800 0 (p1)_rog2 model 7.5 0.0 -4.0 180 PKP/szlab_d_45.t3d none endmodel

// uwaga na trik - jedno swiatlo ma zamienione nazwy On z Off, dzieki czemu beda migac na zmiane

//dzwieki dzwonu przejazdowego

//node 100 0 (p1)_dzwon1 sound -8.0 0.0 4.0 CrossingBell1.wav endsound
//node 100 0 (p1)_dzwon2 sound 8.0 0.0 -4.0 CrossingBell2.wav endsound

//--- komorka do wysylania informacji o predkosci dla samochodow
node -1 0 (p1)_syg_mem memcell 0.1 0.1 0.1 SetVelocity -1 -1 none endmemcell

//odczyt z drogi przed przejazdem
event (p1)_syg_info getvalues 1.0 (p1)_syg_mem endevent

//odczyt z drogi na przejezdzie (zeby uciekl)
event (p1)_syg_escapeinfo putvalues 1.0 none (p2) (p3) (p4) SetVelocity -1 -1 endevent



//elementarne zdarzenia:

//--- migajace lampki
event (p1)_0_sygn1 lights 0.8 (p1)_Syg1 2 2 endevent
event (p1)_0_sygn2 lights 0.8 (p1)_Syg2 2 2 endevent
//--- zgaszone lampki
event (p1)_1_sygn1 lights 0.8 (p1)_Syg1 1 0 endevent
event (p1)_1_sygn2 lights 0.8 (p1)_Syg2 1 0 endevent

//-- wlaczanie dzwiekow dzwonow przejazdowych
//event (p1)_bell1on sound 2.0 (p1)_dzwon1 -1 endevent
//event (p1)_bell2on sound 2.0 (p1)_dzwon2 -1 endevent
//-- wylaczanie dzwiekow dzwonow przejazdowych
//event (p1)_bell1off sound 0.0 (p1)_dzwon1 0 endevent
//event (p1)_bell2off sound 0.0 (p1)_dzwon2 0 endevent

//zamkniecie rogatek
event (p1)_rog1on animation 3 (p1)_rog1 rotate Ramie01 90.0 0.0 0.0 15 endevent
event (p1)_rog2on animation 3 (p1)_rog2 rotate Ramie01 90.0 0.0 0.0 15 endevent
//otwarcie rogatek
event (p1)_rog1off animation 1 (p1)_rog1 rotate Ramie01 0.0 0.0 0.0 15 endevent
event (p1)_rog2off animation 1 (p1)_rog2 rotate Ramie01 0.0 0.0 0.0 15 endevent


// wpisywanie informacji o tym ze przejazd zostal zamkniety:
//--- zatrzymywanie pojazdow drogowych 
event (p1)_stop updatevalues 10.0 (p1)_syg_mem SetVelocity 0 -1 endevent

//wpisywanie informacji o tym ze przejazd zostal otwarty:
event (p1)_go updatevalues 1.0 (p1)_syg_mem SetVelocity -1 -1 endevent

// globalne procedury sterujace:
//--- zamykanie przejazdu - musi byc podpiete jako event1 do torow (z kazdego kierunku) daleko przed przejazdem 
// oraz do toru na samym przejezdzie (zabezpieczenie na wypadek mijania sie 2 pociagow!)
event (p1)_zamykaj multiple 0.0 none (p1)_stop (p1)_0_sygn1 (p1)_0_sygn2 (p1)_rog1on (p1)_rog2on endevent

//---otwieranie przejazdu - zdarzenia musza byc podpiete jako event1 do torow tuz za przejazdem (dla kazdego kierunku)
event (p1)_otwieraj1 multiple 3.0 none (p1)_otwierajgdywolny1 endevent
event (p1)_otwieraj2 multiple 3.0 none (p1)_otwierajgdywolny2 endevent

event (p1)_otwierajgdywolny1 multiple 1.0 (p6) (p1)_go (p1)_1_sygn1 (p1)_1_sygn2 (p1)_rog1off (p1)_rog2off condition trackfree endevent
event (p1)_otwierajgdywolny2 multiple 2.0 (p7) (p1)_go (p1)_1_sygn1 (p1)_1_sygn2 (p1)_rog1off (p1)_rog2off condition trackfree endevent

// komentarz: ostatnie zdarzenia otwieraj* sa warunkowe (conditional) - wyzwalane jest przez najechanie pojazdu na tor
// za przejazdem ale tylko gdy tor o nazwie (p6) lub (p7) ktory jest na przejezdzie bedzie wolny.

rotate 0 0 0
endorigin