X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Ftracktype.cpp;fp=source%2Flibr2c2%2Ftracktype.cpp;h=fe3a54cd824d7471cb78c95b47b8ba9ceb33e8df;hb=bde934f7d5ba07a9442a305192e10024820d13ed;hp=fbed4c1d8d6020b9b19ed4c234b1c002d43f8b64;hpb=c6cd59c4d40706ccd0f894fee3dc11c48dd20a38;p=r2c2.git diff --git a/source/libr2c2/tracktype.cpp b/source/libr2c2/tracktype.cpp index fbed4c1..fe3a54c 100644 --- a/source/libr2c2/tracktype.cpp +++ b/source/libr2c2/tracktype.cpp @@ -1,4 +1,5 @@ #include +#include #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::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 shapes; + for(vector::iterator i=obj.parts.begin(); i!=obj.parts.end(); ++i) + { + i->create_shape(); + shapes.push_back(&i->get_shape()); + } + obj.shape = Geometry::Union::from_iterator_range(shapes.begin(), shapes.end()).clone(); } void TrackType::Loader::part()