//-- przejazd strzezony z rogatkami, sygnalizacja swietlna i dzwiekowa, linia 2 torowa. Zapory połówkowe. Oś X przejazdu w osi torów.
//Autor: @Stele
//INC przystosowany do przejazdu w stacji Leosin Topola na scenerii Tomaszewo

// p1 - nazwa przejazdu, p2,p3,p4-polozenie,p5-rotacja, p6-nazwa odcinka izolowanego zawierającego wszystkie tory przechodzące przez przejazd. Dodac do torów na przejeździe event1 i event2 (p1)_licznik-

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

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


//krzyże:
//node -1 0 (p1)_krz1 model -7.0 0.0 4.0 90 /przejazdy/g4_1.t3d none endmodel
//node -1 0 (p1)_krz2 model 7.0 0.0 -4.0 -90 /przejazdy/g4_1.t3d none endmodel
//modele sygnalizacji przejazdowej:
node -1 0 (p1)_syg1 model 6.3 0.0 14.0 180 przejazdy/_s2z_xx_d_bombardier.t3d none lights 0 0 endmodel
node -1 0 (p1)_syg2 model -6.3 0.0 -15.0 0 przejazdy/_s2z_xx_d_bombardier.t3d none lights 0 0 endmodel
//node -1 0 (p1)_spr model -8.3 0.0 -6.5 -90 przejazdy/bombardier_spr.t3d none endmodel
//modele rogatek
node -1 0 (p1)_rog1 model -6.35 0.0 13 90 przejazdy/szlab_6l_bombardier.t3d none endmodel
node -1 0 (p1)_rog2 model -6.35 0.0 -14 -90 przejazdy/szlab_6r_bombardier.t3d none endmodel
node -1 0 (p1)_rog3 model 6.35 0.0 13 90 przejazdy/szlab_6r_bombardier.t3d none endmodel
node -1 0 (p1)_rog4 model 6.35 0.0 -14 -90 przejazdy/szlab_6l_bombardier.t3d none endmodel
//dzwieki dzwonu przejazdowego
node 50 0 (p1)_dzwon1 sound 6.3 0.0 13.0 crossingbell1_bombardier1.wav endsound
node 50 0 (p1)_dzwon2 sound -6.3 0.0 -14.0 crossingbell2_bombardier1.wav endsound
//--- komorka do wysylania informacji o predkosci dla samochodow
node -1 0 (p1)_syg_mem1 memcell 5 0.0 13 SetVelocity -1 -1 none endmemcell
node -1 0 (p1)_syg_mem2 memcell -5 0.0 -14 SetVelocity -1 -1 none endmemcell
node -1 0 (p1)_mem_bell memcell 0 0 0 Off 0 0 none endmemcell

event (p1)_bell_work updatevalues 0 (p1)_mem_bell On * * endevent
event (p1)_bell_stop updatevalues 0 (p1)_mem_bell Off * * endevent

//odczyt z drogi przed przejazdem
event (p1)_syg_info1 getvalues 1.0 (p1)_syg_mem1 endevent
event (p1)_syg_info2 getvalues 1.0 (p1)_syg_mem2 endevent



//elementarne zdarzenia:

//--- migajace lampki
event (p1)_0_sygn1 lights 0.8 (p1)_syg1 1.35 -1.35 endevent
event (p1)_0_sygn2 lights 0.8 (p1)_syg2 1.35 -1.35 endevent
//--- zgaszone lampki
event (p1)_1_sygn1 lights 0.8 (p1)_syg1 0 0 endevent
event (p1)_1_sygn2 lights 0.8 (p1)_syg2 0 0 endevent
//-- 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
//zamkniecie rogatek
event (p1)_rog1on animation 10 (p1)_rog1 rotate ramie01 90.0 0.0 0.0 15 endevent
event (p1)_rog2on animation 5 (p1)_rog2 rotate ramie01 90.0 0.0 0.0 15 endevent
event (p1)_rog3on animation 5 (p1)_rog3 rotate ramie01 90.0 0.0 0.0 15 endevent
event (p1)_rog4on animation 10 (p1)_rog4 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
event (p1)_rog3off animation 1 (p1)_rog3 rotate ramie01 0.0 0.0 0.0 15 endevent
event (p1)_rog4off animation 1 (p1)_rog4 rotate ramie01 0.0 0.0 0.0 15 endevent

//--- zatrzymywanie pojazdow drogowych 
// wpisywanie informacji o tym ze przejazd zostal zamkniety:
event (p1)_slow1 updatevalues 0 (p1)_syg_mem1 SetVelocity 0.1 -1 endevent
event (p1)_slow2 updatevalues 0 (p1)_syg_mem2 SetVelocity 0.1 -1 endevent
event (p1)_stop1 updatevalues 5 (p1)_syg_mem1 SetVelocity 0 0 endevent
event (p1)_stop2 updatevalues 5 (p1)_syg_mem2 SetVelocity 0 0 endevent
//wpisywanie informacji o tym ze przejazd zostal otwarty:
event (p1)_go1 updatevalues 6 (p1)_syg_mem1 SetVelocity -1 -1 endevent
event (p1)_go2 updatevalues 6 (p1)_syg_mem2 SetVelocity -1 -1 endevent

// globalne procedury sterujace:
//licznik osi sprawdzający zajętość odcinków między zamykajkami a przejazdem:
node -1 0 (p1)_licznik memcell 0 0 0 none 0 0 none endmemcell
event (p1)_licznik+ addvalues 0 (p1)_licznik * 1 * endevent
event (p1)_licznik- addvalues 0 (p1)_licznik * -1 * endevent
//--- zamykanie przejazdu - musi byc podpiete jako event kierunkowy do torow (z kazdego kierunku) daleko przed przejazdem
event (p1)_zamykaj1 multiple 0 none (p1)_zamykaj (p1)_licznik+ endevent //przypisać do torów zawsze ze wszystkich stron
event (p1)_zamykaj multiple 0.0 none (p1)_slow1 (p1)_stop1 (p1)_slow2 (p1)_stop2 (p1)_0_sygn1 (p1)_0_sygn2 (p1)_rog1on (p1)_zamykajcd endevent //uzywać jako zamknięcie manualne przez dyżurnego dla ominięcia licznika
event (p1)_zamykajcd multiple 0.0 none (p1)_rog2on (p1)_rog3on (p1)_rog4on (p1)_bell1on (p1)_bell2on (p1)_bell_work (p1)_dzw_petla endevent
event (p6):busy multiple 3 none (p1)_bell1off (p1)_bell2off (p1)_bell_stop endevent
//---otwieranie przejazdu
event (p1)_otwieraj multiple 0.0 none (p1)_otwieraj1 (p1)_bell1off (p1)_bell2off (p1)_zeruj_licznik (p1)_bell_stop endevent
event (p1)_otwieraj1 multiple 1.0 none (p1)_go1 (p1)_go2 (p1)_1_sygn1 (p1)_1_sygn2 (p1)_rog1off (p1)_rog2off (p1)_rog3off (p1)_rog4off endevent
event (p1)_zeruj_licznik updatevalues 0 (p1)_licznik none 0 0 endevent
event (p6):free multiple 1.0 (p1)_licznik (p1)_otwieraj condition memcompare * 0 * endevent
event (p1)_dzw_petla multiple 5.0 none (p1)_petla_wyk endevent
event (p1)_petla_wyk multiple 0.0 (p1)_mem_bell (p1)_bell1on (p1)_bell2on (p1)_dzw_petla condition memcompare On * * endevent

rotate 0 0 0
endorigin
