]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/tracktype.cpp
Make use of the geometry part of libmspmath
[r2c2.git] / source / libr2c2 / tracktype.cpp
index fbed4c1d8d6020b9b19ed4c234b1c002d43f8b64..fe3a54cd824d7471cb78c95b47b8ba9ceb33e8df 100644 (file)
@@ -1,4 +1,5 @@
 #include <cmath>
+#include <msp/geometry/union.h>
 #include "tracktype.h"
 
 using namespace std;
@@ -131,15 +132,6 @@ TrackPoint TrackType::get_nearest_point(const Vector &p) const
        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();
@@ -198,6 +190,13 @@ TrackType::Loader::Loader(TrackType &t):
 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()