// p1 - nazwa przejazdu, p2,p3,p4-polozenie,p5-rotacja, p6,p7 - nazwy torow przebiegajacych przez przejazd
//-- przejazd strzezony z rogatkami i sygnalizacja swietlna, linia dwutorowa.
// ustawiac urzadzenia mozna zaleznie od konfiguracji droga/tor
// uwaga - tu sa tylko procedury sterujace, modele rogatek i sygnalizacji trzeba wstawic samemu w/g instrukcji


//--- modele sygnalizacji przejazdowej szt.2
// nazwaprzejazdu_syg01 model przejazdy/_s2z_d_bombardier.t3d none lights 1 0
// nazwaprzejazdu_syg02 model przejazdy/_s2z_d_bombardier.t3d none lights 1 0
//--- modele rogatek szt.2, obrotwokol osi x:
// nazwaprzejazdu_rog01 model pkp/szlab_d_60.t3d none 
// nazwaprzejazdu_rog02 model pkp/szlab_d_60.t3d none 
// mozna dac inny model ale ramie rogatki musi sie nazywac ramie01.

//procedury sterujace:
// dla ai:
event (p1)_warning putvalues 10.0 none (p2) (p3) (p4) Warning_signal 1 2 endevent
// dac przy przy wskazniku w6a

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

//--- komorki 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
node -1 0 (p1)_syg_distmem memcell 0.1 0.1 0.1 SetProximityVelocity 500 40 none endmemcell

//zeby przejazd sie nie otwieral przy przejezdzie dwoch pociagow
node -1 0 (p1)_stan_mem memcell 0.1 0.1 0.1 otwarty 0 0 none endmemcell


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

//odczyt z drogi daleko przed przejazdem
event (p1)_syg_distinfo getvalues 1.0 (p1)_syg_distmem endevent

//elementy dla opcjonalnej tarczy ostrzegawczej przejazdowej
node -1 0 (p1)_sem_distmem memcell (p2) (p3) (p4) przejazd 0 1 none endmemcell
event (p1)_sem_distmem_vmax updatevalues 1.0 (p1)_sem_distmem przejazd 1 0 endevent
event (p1)_reset updatevalues 1.0 (p1)_sem_distmem przejazd 0 1 endevent


//elementarne zdarzenia:

//--- migajace lampki
event (p1)_0_sygn1 lights 0.8 (p1)_syg01 1.35 -1.35 endevent
event (p1)_0_sygn2 lights 0.8 (p1)_syg02 1.35 -1.35 endevent
//--- zgaszone lampki
event (p1)_1_sygn1 lights 0.8 (p1)_syg01 0 0 endevent
event (p1)_1_sygn2 lights 0.8 (p1)_syg02 0 0 endevent

//zamkniecie rogatek
event (p1)_rog1on animation 5 (p1)_rog01 rotate ramie01 -90.0 0.0 0.0 15 endevent
event (p1)_rog2on animation 5 (p1)_rog02 rotate ramie01 -90.0 0.0 0.0 15 endevent
//otwarcie rogatek
event (p1)_rog1off animation 1 (p1)_rog01 rotate ramie01 0.0 0.0 0.0 15 endevent
event (p1)_rog2off animation 1 (p1)_rog02 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 0 endevent
event (p1)_diststop updatevalues 10.0 (p1)_syg_distmem SetProximityVelocity 500 0 endevent

//wpisywanie informacji o tym ze przejazd zostal otwarty:
event (p1)_go updatevalues 1.0 (p1)_syg_mem SetVelocity -1 -1 endevent
event (p1)_distgo updatevalues 10.0 (p1)_syg_distmem SetProximityVelocity 500 40 endevent

event (p1)_stan_zamkniety updatevalues 1.0 (p1)_stan_mem * 1 1 endevent

event (p1)_stan_otwarty updatevalues 1.0 (p1)_stan_mem * 0 0 endevent

// globalne procedury sterujace:
//--- zamykanie przejazdu
event (p1)_zamykaj multiple 0.0 none (p1)_stop (p1)_diststop (p1)_0_sygn1 (p1)_0_sygn2 (p1)_rog1on (p1)_rog2on (p1)_sem_distmem_vmax (p1)_stan_zamkniety endevent

//---otwieranie przejazdu - zdarzenia musza byc podpiete jako eventall do torow tuz za przejazdem (dla kazdego kierunku)
event (p1)_otwieraj multiple 0 none (p1)_stan_otwarty (p1)_otwierajgdywolny condition trackfree endevent
event (p1)_otwierajgdywolny multiple 1 (p1)_stan_mem (p1)_go (p1)_distgo (p1)_1_sygn1 (p1)_1_sygn2 (p1)_rog1off (p1)_rog2off (p1)_reset condition memcompare * 0 0 endevent

rotate 0 0 0
endorigin
