// semafor 4-komorowy z pomarańczowym pasem świetlnym
// parametry: p1=nazwa p2,p3,p4=lokacja, p5=rotacja p6=symbol 

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

// model semafora 4komorowego:
node 1000 0 (p1) model 0 0 0 0 sem/glowice/s4izcpb_dd.t3d tabl/(p6) lights  0 1 0 0 endmodel            //glowica 
node 200 0 none model 0 0 0 0 sem/slupy/s4ibl.t3d sem/slupy endmodel //slup
node 100 0 none model 0 0 0 0 sem/drabinki/d4i.t3d sem/slupy endmodel 
node 800 0 (p1)s model 0 0 0 0 sem/pasy/pp.t3d sem/slupy lights 0 endmodel  		 

node 700 200 none lines 100 50 20 100.0                                        //linia zeby byl maszt widoczny z daleka
0.0 0.0 0.0	0.0 4.5 0.0 
endline
rotate 0 0 0
endorigin

// odczyt z pamieci (zdarzenie przypisane do toru przy ktorym stoi semafor):
event (p1)_sem_info getvalues 1.0 (p1)_sem_mem endevent

// stany semafora:
event (p1)_s1 multiple 0 none (p1)_sem_ligh1 (p1)_sem_lighs1 (p1)_sem_info_stop (p7)_os1 endevent
event (p1)_s2 multiple 0 none (p1)_sem_ligh2 (p1)_sem_lighs1 (p1)_sem_info_vmax (p1)_sem_distinfo_vmax (p7)_os2 endevent
event (p1)_s10 multiple 0 none (p1)_sem_ligh10 (p1)_sem_lighs1 (p1)_sem_info_v40 (p1)_sem_distinfo_vmax (p7)_os4 endevent
event (p1)_s10a multiple 0 none (p1)_sem_ligh10 (p1)_sem_lighs2 (p1)_sem_info_v60 (p1)_sem_distinfo_vmax (p7)_os4 endevent
event (p1)_s11 multiple 0 none (p1)_sem_ligh11 (p1)_sem_lighs1 (p1)_sem_info_v40 (p1)_sem_distinfo_vmax (p7)_os4 endevent
event (p1)_s11a multiple 0 none (p1)_sem_ligh11 (p1)_sem_lighs2 (p1)_sem_info_v60 (p1)_sem_distinfo_vmax (p7)_os4 endevent
event (p1)_ms2 multiple 0 none (p1)_sem_lighm2 (p1)_sem_lighs1 (p1)_sem_info_Shunt25 endevent
event (p1)_m40 multiple 0 none (p1)_sem_lighm2 (p1)_sem_lighs1 (p1)_sem_info_Shunt40 endevent

event (p1)_sz1 multiple 0 none (p1)_sem_lighz1 (p1)_sem_lighs1 (p1)_sem_info_v40 endevent
event (p1)_wyg_sz multiple 90 (p1)_sem_mem (p1)_s1 condition memcompare SetVelocity 40 0 endevent

// memcell do pamietania predkosci:
node -1 0 (p1)_sem_mem memcell (p2) (p3) (p4) SetVelocity 0.0 0.0 none endmemcell

// zdarzenia wpisujace w memcell predkosci przy tym (info) i przy nastepnym (distinfo) semaforze:
event (p1)_sem_info_stop updatevalues 0.0 (p1)_sem_mem SetVelocity 0.0 0.0 endevent
event (p1)_sem_info_vmax updatevalues 1.0 (p1)_sem_mem SetVelocity -1 * endevent
event (p1)_sem_distinfo_vmax updatevalues 0.0 (p1)_sem_mem SetVelocity * -1 endevent
event (p1)_sem_info_v40 updatevalues 1.0 (p1)_sem_mem SetVelocity 40 * endevent
event (p1)_sem_info_v60 updatevalues 1.0 (p1)_sem_mem SetVelocity 60 * endevent
event (p1)_sem_info_v20 updatevalues 1.0 (p1)_sem_mem SetVelocity 20 0 endevent

event (p1)_sem_info_Shunt25 updatevalues 1.0 (p1)_sem_mem ShuntVelocity 25 0 endevent
event (p1)_sem_info_Shunt40 updatevalues 1.0 (p1)_sem_mem ShuntVelocity 40 0 endevent

// zdarzenia sterujace swiatlami:
event (p1)_sem_ligh0 lights 0.0 (p1) 0 0 0 0 endevent
event (p1)_sem_ligh1 lights 0.0 (p1) 0 1 0 0 endevent
event (p1)_sem_ligh2 lights 0.0 (p1) 1 0 0 0 endevent
event (p1)_sem_ligh10 lights 0.0 (p1) 1 0 1 0 endevent
event (p1)_sem_ligh11 lights 0.0 (p1) 2 0 1 0 endevent
event (p1)_sem_lighm2 lights 0.0 (p1) 0 0 0 1 endevent
event (p1)_sem_lighz1 lights 0.0 (p1) 0 1 0 2 endevent

event (p1)_sem_lighs1 lights 0.0 (p1)S 0 endevent
event (p1)_sem_lighs2 lights 0.0 (p1)S 1 endevent

// uszkodzony semafor - nieoswietlony:
event (p1)_uszk multiple 0 none (p1)_sem_ligh0 (p1)_sem_lighs1 (p1)_sem_info_stop endevent