This repository has been archived on 2023-01-29. You can view files and clone it, but cannot push or open issues or pull requests.
1weekendraytracer/code/target_list.h

34 lines
768 B
C++

#ifndef TARGETLIST_H
#define TARGETLIST_H
#include "target.h"
class target_list: public target
{
public:
target_list() {}
target_list(target **l, int n) { list = l; list_size = n; }
virtual bool hit(const ray &r, float t_min, float t_max, hit_record &rec) const;
target **list;
int list_size;
};
bool target_list::hit(const ray &r, float t_min, float t_max, hit_record &rec) const
{
hit_record temp_rec;
bool hit_anything = false;
double closest_so_far = t_max;
for (int i = 0; i < list_size; i++)
{
if (list[i]->hit(r, t_min, closest_so_far, temp_rec))
{
hit_anything = true;
closest_so_far = temp_rec.t;
rec = temp_rec;
}
}
return hit_anything;
}
#endif