// Przejazd strzezony z sygnalizacja swietlna
// ustawiac urzadzenia mozna zaleznie od konfiguracji droga/tor
// p1 - nazwa przejazdu, 
// p2,p3,p4-polozenie,
// p5-rotacja, 
// p6 - nazwa odcinka izolowanego na przejezdzie

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

node -1 0 (p1)_state memcell 0.1 0.1 0.1 otwarty -1 -1 none endmemcell
event (p1)_zamkniety updatevalues 1.0 (p1)_state zamkniety 1 0 endevent
event (p1)_otwarty updatevalues 1.0 (p1)_state otwarty 1 0 endevent

//dzwieki dzwonu przejazdowego
node 400 0 (p1)_dzwon1 sound -3.5 0.0 6.0 CrossingBell1.wav endsound
node 400 0 (p1)_dzwon2 sound 3.5 0.0 -6.0 CrossingBell2.wav endsound

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

//elementarne zdarzenia:
//--- migajace lampki
event (p1)_0_sygn1 lights 0.8 (p1)R_Syg 2 2 endevent
event (p1)_0_sygn2 lights 0.8 (p1)L_Syg 2 2 endevent
//--- zgaszone lampki
event (p1)_1_sygn1 lights 0.8 (p1)R_Syg 1 0 endevent
event (p1)_1_sygn2 lights 0.8 (p1)L_Syg 1 0 endevent

// wpisywanie informacji o tym ze przejazd zostal zamkniety:
//--- zatrzymywanie pojazdow drogowych 
event (p1)R_slow updatevalues 0.0 (p1)R_syg_mem SetVelocity 0.1 0.1 endevent
event (p1)L_slow updatevalues 0.0 (p1)L_syg_mem SetVelocity 0.1 0.1 endevent

event (p1)R_stop updatevalues 5.0 (p1)R_syg_mem SetVelocity 0 0 endevent
event (p1)L_stop updatevalues 5.0 (p1)L_syg_mem SetVelocity 0 0 endevent

//wpisywanie informacji o tym ze przejazd zostal otwarty:
event (p1)R_go updatevalues 1.0 (p1)R_syg_mem SetVelocity -1 -1 endevent
event (p1)L_go updatevalues 1.0 (p1)L_syg_mem SetVelocity -1 -1 endevent

// globalne procedury sterujace:
//--- zamykanie przejazdu - musi byc podpiete jako event1 do torow (z kazdego kierunku) daleko przed przejazdem 
event (p1)_zamykaj multiple 0.0 (p1)_state (p1)_zamykaj_wspolne (p1)_zamkniety condition memcompare otwarty * * endevent
event (p1)_zamykaj_wspolne multiple 0.0 none (p1)R_slow (p1)L_slow (p1)R_stop (p1)L_stop (p1)_0_sygn1 (p1)_0_sygn2 (p1)_bell1on (p1)_bell2on endevent

//---otwieranie przejazdu - zdarzenia musza byc podpiete jako event1 do torow tuz za przejazdem (dla kazdego kierunku)
event (p6):free multiple 1.0 none (p1)R_go (p1)L_go (p1)_1_sygn1 (p1)_1_sygn2 (p1)_bell1off (p1)_bell2off (p1)_otwarty endevent
event (p1)_otwieraj multiple 5.0 none (p1)R_go (p1)L_go (p1)_1_sygn1 (p1)_1_sygn2 (p1)_bell1off (p1)_bell2off (p1)_otwarty endevent

rotate 0 0 0
endorigin