aboutsummaryrefslogtreecommitdiffstats
path: root/src/ft_raycasting.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ft_raycasting.c')
-rw-r--r--src/ft_raycasting.c47
1 files changed, 22 insertions, 25 deletions
diff --git a/src/ft_raycasting.c b/src/ft_raycasting.c
index cbcda24..1a12c46 100644
--- a/src/ft_raycasting.c
+++ b/src/ft_raycasting.c
@@ -13,28 +13,27 @@
#include <libft.h>
#include <cub3d.h>
#include <stdint.h>
-#include <stdio.h>
#include <stdlib.h>
#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 +67,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 +77,17 @@ 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);
+ 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 +95,10 @@ 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_castray_loop(i, &cl->wlist, 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;
i++;
}
ft_floor_cast(cl);