+void Layout3D::add_vehicle(Vehicle3D &v)
+{
+ if(vehicles.count(&v.get_vehicle()))
+ throw KeyError("Duplicate vehicle");
+
+ vehicles[&v.get_vehicle()] = &v;
+}
+
+void Layout3D::remove_vehicle(Vehicle3D &v)
+{
+ vehicles.erase(&v.get_vehicle());
+}
+
+Vehicle3D &Layout3D::get_vehicle(Vehicle &v) const
+{
+ VehicleMap::const_iterator i = vehicles.find(&v);
+ if(i==vehicles.end())
+ throw KeyError("Unknown vehicle");
+
+ return *i->second;
+}
+