]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/object.cpp
Make use of the geometry part of libmspmath
[r2c2.git] / source / libr2c2 / object.cpp
index cc56edeb6af28883f6619dd7953c8e21925d9e15..e9e58abf97041c44351a7becd185895e95f79304 100644 (file)
@@ -77,4 +77,26 @@ void Object::break_links()
                break_link(i);
 }
 
+bool Object::collide_ray(const Ray &ray) const
+{
+       const Shape *shape = get_type().get_shape();
+       if(!shape)
+               return false;
+
+       Transform reverse_trans = Transform::rotation(rotation, Vector(0, 0, -1))*
+               Transform::translation(-position);
+       return shape->check_intersection(reverse_trans.transform(ray));
+}
+
+BoundingBox Object::get_bounding_box() const
+{
+       const Shape *shape = get_type().get_shape();
+       if(!shape)
+               return BoundingBox();
+
+       Transform trans = Transform::translation(position)*
+               Transform::rotation(rotation, Vector(0, 0, 1));
+       return trans.transform(shape->get_axis_aligned_bounding_box());
+}
+
 } // namespace R2C2