const set<Track *> <racks = layout.get_tracks();
for(set<Track *>::iterator i=ltracks.begin(); i!=ltracks.end(); ++i)
track_added(**i);
+ const set<Signal *> &lsignals = layout.get_signals();
+ for(set<Signal *>::iterator i=lsignals.begin(); i!=lsignals.end(); ++i)
+ signal_added(**i);
}
Layout3D::~Layout3D()
{
+ while(!signals.empty())
+ delete signals.begin()->second;
while(!tracks.empty())
delete tracks.begin()->second;
while(!vehicles.empty())
void Layout3D::get_bounds(Vector &minp, Vector &maxp) const
{
- minp = maxp = Vector();
+ Geometry::BoundingBox<float, 3> bbox;
for(TrackMap::const_iterator i=tracks.begin(); i!=tracks.end(); ++i)
- {
- Vector tmin;
- Vector tmax;
- i->second->get_bounds(0, tmin, tmax);
- minp.x = min(minp.x, tmin.x);
- minp.y = min(minp.y, tmin.y);
- maxp.x = max(maxp.x, tmax.x);
- maxp.y = max(maxp.y, tmax.y);
- }
+ bbox = bbox|i->second->get_track().get_type().get_shape()->get_axis_aligned_bounding_box();
+
+ minp = bbox.get_minimum_point();
+ maxp = bbox.get_maximum_point();
}
void Layout3D::add_track(Track3D &t)