+ if(const TrackType *tt = dynamic_cast<const TrackType *>(&ot))
+ {
+ objects[&ot] = new TrackType3D(*this, *tt);
+ const TrackAppearance &appearance = tt->get_appearance();
+ if(!endpoint_meshes.count(&appearance))
+ build_endpoint_mesh(appearance);
+ }
+ else if(const SignalType *st = dynamic_cast<const SignalType *>(&ot))
+ objects[&ot] = new SignalType3D(*this, *st);
+ else if(const VehicleType *vt = dynamic_cast<const VehicleType *>(&ot))
+ objects[&ot] = new VehicleType3D(*this, *vt);