aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/ft_raycasting.c48
1 files changed, 23 insertions, 25 deletions
diff --git a/src/ft_raycasting.c b/src/ft_raycasting.c
index cbcda24..7baac29 100644
--- a/src/ft_raycasting.c
+++ b/src/ft_raycasting.c
@@ -18,23 +18,23 @@
#include <math.h>
static void
- ft_calc_tex(t_cub *clist)
+ ft_calc_tex(t_cub *cl)
{
- if (clist->rlist.side == 0)
- clist->rlist.wall_hit_x = (clist->plist.pos_x) +
- clist->rlist.wall_dist * clist->rlist.y_ray_dir;
+ if (cl->rlist.side == 0)
+ cl->rlist.wall_hit_x = (cl->plist.pos_x) +
+ cl->rlist.wall_dist * cl->rlist.y_ray_dir;
else
- clist->rlist.wall_hit_x = (clist->plist.pos_y) +
- clist->rlist.wall_dist * clist->rlist.x_ray_dir;
- clist->rlist.wall_hit_x -= floor(clist->rlist.wall_hit_x);
- clist->tlist[clist->w_side].tex_x = (int)(clist->rlist.wall_hit_x *
- (double)clist->tlist[clist->w_side].img_w);
- if (clist->rlist.side == 0 && clist->rlist.x_ray_dir > 0)
- clist->tlist[clist->w_side].tex_x = clist->tlist[clist->w_side].img_w
- - clist->tlist[clist->w_side].tex_x - 1;
- else if (clist->rlist.side == 1 && clist->rlist.y_ray_dir < 0)
- clist->tlist[clist->w_side].tex_x = clist->tlist[clist->w_side].img_w
- - clist->tlist[clist->w_side].tex_x - 1;
+ cl->rlist.wall_hit_x = (cl->plist.pos_y) +
+ cl->rlist.wall_dist * cl->rlist.x_ray_dir;
+ cl->rlist.wall_hit_x -= floor(cl->rlist.wall_hit_x);
+ cl->tlist[cl->w_side].tex_x = (int)(cl->rlist.wall_hit_x *
+ (double)cl->tlist[cl->w_side].img_w);
+ if (cl->rlist.side == 0 && cl->rlist.x_ray_dir > 0)
+ cl->tlist[cl->w_side].tex_x = cl->tlist[cl->w_side].img_w
+ - cl->tlist[cl->w_side].tex_x - 1;
+ else if (cl->rlist.side == 1 && cl->rlist.y_ray_dir < 0)
+ cl->tlist[cl->w_side].tex_x = cl->tlist[cl->w_side].img_w
+ - cl->tlist[cl->w_side].tex_x - 1;
}
static void
@@ -68,7 +68,7 @@ static void
}
static void
- ft_castray_norme(uint16_t i, t_win *wl, t_cub *cl)
+ ft_castray_loop(uint16_t i, t_win *wl, t_cub *cl)
{
ft_initray(i, cl);
cl->rlist.line_h = (int16_t)(wl->y_size / cl->rlist.wall_dist);
@@ -78,15 +78,18 @@ static void
cl->rlist.wall_b = cl->rlist.line_h / 2 + wl->y_size / 2;
if (cl->rlist.wall_b >= (int16_t)wl->y_size)
cl->rlist.wall_b = wl->y_size - 1;
+ ft_choose_tex(cl);
+ ft_calc_tex(cl);
+ ft_draw_verline(cl, i, cl->rlist.wall_t, cl->rlist.wall_b);
+ cl->rlist.wall_bz[i] = cl->rlist.wall_b;
+ cl->rlist.wall_dist_tab[i] = cl->rlist.wall_dist;
}
void
ft_castray(t_cub *cl)
{
uint16_t i;
- t_win *wl;
- wl = &cl->wlist;
if (!(cl->rlist.wall_dist_tab =
(float*)malloc(sizeof(float) * cl->wlist.x_size)))
return ;
@@ -94,14 +97,9 @@ void
(int16_t*)malloc(cl->wlist.x_size * sizeof(int16_t))))
return ;
i = 0;
- while (i < wl->x_size)
+ while (i < cl->wlist.x_size)
{
- ft_castray_norme(i, wl, cl);
- ft_choose_tex(cl);
- ft_calc_tex(cl);
- ft_draw_verline(cl, i, cl->rlist.wall_t, cl->rlist.wall_b);
- cl->rlist.wall_bz[i] = cl->rlist.wall_b;
- cl->rlist.wall_dist_tab[i] = cl->rlist.wall_dist;
+ ft_castray_loop(i, &cl->wlist, cl);
i++;
}
ft_floor_cast(cl);