X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Flayout.cpp;h=c7dc346d61db45c652c3f553fc438c92e9f8576f;hb=e3f081a762c1bd21c051590540d21ec21e9b36b1;hp=ac7101dfcf4e49708f8571a0f62bc4a9df292db4;hpb=1ac853ffc606b29ffd88b923ed3551ee6282afb2;p=r2c2.git diff --git a/source/libr2c2/layout.cpp b/source/libr2c2/layout.cpp index ac7101d..c7dc346 100644 --- a/source/libr2c2/layout.cpp +++ b/source/libr2c2/layout.cpp @@ -188,12 +188,21 @@ template T *Layout::pick(const Ray &ray) { const set &objs = objects.get(); + T *closest = 0; + float distance = -1; for(set::const_iterator i=objs.begin(); i!=objs.end(); ++i) if(T *t = dynamic_cast(*i)) - if(t->collide_ray(ray)) - return t; - - return 0; + { + float d = -1; + if(t->collide_ray(ray, &d)) + if(!closest || d(const Ray &);