/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* add_cone.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: gbrochar +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/02/07 21:42:11 by gbrochar #+# #+# */ /* Updated: 2019/02/21 17:11:56 by gbrochar ### ########.fr */ /* */ /* ************************************************************************** */ #include "rtv1.h" void init_cone(t_cone *cone, t_color *c) { cone->o = vec(0, 0, 0); cone->d = vec(0, 1, 0); cone->k = 0.15; *c = color(255, 255, 255); } int add_cone(char **data, t_env *e) { int i; t_cone *cone; t_color c; i = 0; ft_putendl("Adding cone"); if (!(cone = (t_cone *)ft_memalloc(sizeof(t_cone)))) return (FAILURE); init_cone(cone, &c); while (data[i] && i < 11) i++; if (i > 3) cone->o = vec(ft_atof(data[1]), ft_atof(data[2]), ft_atof(data[3])); if (i > 6) { cone->d = vec(ft_atof(data[4]), ft_atof(data[5]), ft_atof(data[6])); if (FAILURE == check_direction(cone->d)) return (FAILURE); normalize(&cone->d); } if (i > 7) cone->k = ft_atof(data[7]); if (i > 10) c = color(ft_atoi(data[8]), ft_atoi(data[9]), ft_atoi(data[10])); return (add_obj_node(e, (void *)cone, CONE, c)); }