void loop_cones(t_env *env, t_cone *co, float *hit, float *t) { (void)t; while (co) { *hit = 200000.0f; if (cone_intersect(&env->r, co, hit) == 1) { reset_colour(&env->c, co->m.diffuse.r, \ co->m.diffuse.g, co->m.diffuse.b); } co = co->next; } }
bool cone_ray_intersect(t_obj const *obj, t_vertex const *ray, bool both, t_intersect *intersect) { t_vec2 dist; bool base[2]; if (!cone_intersect(&dist, base, ray) || (dist.x < 0.f && dist.y < 0.f)) return (false); if (both) { load_intersect(base[0], false, dist.x, ray, &intersect[0]); load_intersect(base[1], true, dist.y, ray, &intersect[1]); } else if (dist.x < 0.f) load_intersect(base[1], true, dist.y, ray, intersect); else load_intersect(base[0], false, dist.x, ray, intersect); return (true); (void)obj; }