From fa353392c6ceac1e74cdf03336b347d99dc41440 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Tue, 27 Jan 2009 23:03:24 +0000 Subject: [PATCH] updating main/Scene to accept points back instead of distances from intersect() git-svn-id: svn://anubis/fart/trunk@57 7f9b0f55-74a9-4bce-be96-3c2cd072584d --- main/Scene.cc | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/main/Scene.cc b/main/Scene.cc index b41b596..6001c2a 100644 --- a/main/Scene.cc +++ b/main/Scene.cc @@ -179,27 +179,27 @@ vector Scene::getRayHits(const Ray & ray) it != m_shapes.end(); it++) { - Solver::Result intersections = (*it)->intersect(ray); + Shape::IntersectList intersections = (*it)->intersect(ray); - for (int i = 0; i < intersections.numResults; i++) + for (int i = 0, num_results = intersections.size(); + i < num_results; + i++) { - Vector normal = - (*it)->getNormalAt(ray[intersections.results[i]]); + Vector normal = (*it)->getNormalAt(intersections[i]); double dot = normal % ray.getDirection(); + double intersect_dist = (intersections[i] - ray.getOrigin()).mag(); if (dot < 0.0) /* cull back faces */ { double transparency = (*it)->getTransparency(); if (transparency == 0.0 && - (minSolidDist == 0.0 - || minSolidDist > intersections.results[i])) + (minSolidDist == 0.0 || minSolidDist > intersect_dist)) { - minSolidDist = intersections.results[i]; + minSolidDist = intersect_dist; } if (minSolidDist == 0.0 - || minSolidDist >= intersections.results[i]) + || minSolidDist >= intersect_dist) { - hits.push_back(ShapeDistance(*it, - intersections.results[i])); + hits.push_back(ShapeDistance(*it, intersect_dist)); } } }