1 #include "libr2c2/blockiter.h"
2 #include "libr2c2/trackiter.h"
6 #include "trackcircuit.h"
13 TrackCircuit3D::TrackCircuit3D(Layout3D &l, TrackCircuit &tc):
17 Block *block = track_circuit.get_block();
18 TrackIter iter = BlockIter(block, 0).track_iter();
19 for(; (iter && &iter->get_block()==block); iter=iter.next())
21 Path3D *path = new Path3D(layout.get<Track3D>(*iter));
22 paths.push_back(path);
23 path->set_side(iter.entry()*2-1);
26 track_circuit.signal_state_changed.connect(sigc::mem_fun(this, &TrackCircuit3D::state_changed));
27 state_changed(track_circuit.get_state());
30 void TrackCircuit3D::state_changed(Sensor::State state)
33 if(state>=Sensor::ACTIVE)
34 color = GL::Color(0.3f, 0.8f, 0.0f);
35 else if(state>Sensor::INACTIVE)
36 color = GL::Color(0.6f, 0.5f, 0.0f);
38 color = GL::Color(0.0f, 0.3f, 0.6f);
40 for(list<Path3D *>::const_iterator i=paths.begin(); i!=paths.end(); ++i)
41 (*i)->set_color(color);