From c7c4f8f82c66cfe89b72d176ee51dab8bd30dc95 Mon Sep 17 00:00:00 2001 From: ladevieq Date: Sun, 20 Dec 2020 21:59:33 +0100 Subject: Add hittable interface and hit infos on hit --- src/hittable_list.cpp | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/hittable_list.cpp (limited to 'src/hittable_list.cpp') diff --git a/src/hittable_list.cpp b/src/hittable_list.cpp new file mode 100644 index 0000000..9140304 --- /dev/null +++ b/src/hittable_list.cpp @@ -0,0 +1,28 @@ +#include "hittable_list.hpp" + +hittable_list::hittable_list() {}; + +void hittable_list::add(std::shared_ptr hittable) { + hittables.push_back(hittable); +} + +void hittable_list::clear() { + hittables.clear(); +} + + +bool hittable_list::hit(const ray& r, double t_min, double t_max, struct hit_info& info) const { + struct hit_info temp_info; + bool hit_anything = false; + double closest_hit = t_max; + + for (auto& hittable: hittables) { + if (hittable->hit(r, t_min, closest_hit, temp_info)) { + hit_anything = true; + closest_hit = temp_info.t; + info = temp_info; + } + } + + return hit_anything; +} -- cgit v1.3