#include <cmath>
+#include <msp/geometry/union.h>
#include "tracktype.h"
using namespace std;
return result;
}
-bool TrackType::collide_ray(const Vector &start, const Vector &dir, float width) const
-{
- for(vector<TrackPart>::const_iterator i=parts.begin(); i!=parts.end(); ++i)
- if(i->collide_ray(start, dir, width))
- return true;
-
- return false;
-}
-
void TrackType::collect_endpoints()
{
endpoints.clear();
void TrackType::Loader::finish()
{
obj.collect_endpoints();
+ vector<const Shape *> shapes;
+ for(vector<TrackPart>::iterator i=obj.parts.begin(); i!=obj.parts.end(); ++i)
+ {
+ i->create_shape();
+ shapes.push_back(&i->get_shape());
+ }
+ obj.shape = Geometry::Union<float, 3>::from_iterator_range(shapes.begin(), shapes.end()).clone();
}
void TrackType::Loader::part()