From e32e720545327bc9357835e39f32e9a41d271359 Mon Sep 17 00:00:00 2001 From: Adam JOLY Date: Wed, 6 Nov 2024 12:35:35 +0100 Subject: [PATCH] =?UTF-8?q?=E3=80=8C=F0=9F=94=A8=E3=80=8D=20fix(DDA):=20fi?= =?UTF-8?q?xed=20when=20some=20wall=20where=20not=20visible?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- includes/game/dda.h | 3 ++- src/cub3d.c | 4 +--- src/raycasting/dda.c | 21 ++++++++++++++------- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/includes/game/dda.h b/includes/game/dda.h index 2388aac..25e48cc 100644 --- a/includes/game/dda.h +++ b/includes/game/dda.h @@ -6,7 +6,7 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/10/28 13:04:36 by adjoly #+# #+# */ -/* Updated: 2024/11/02 15:57:19 by adjoly ### ########.fr */ +/* Updated: 2024/11/06 12:30:52 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,6 +21,7 @@ typedef struct s_dda { bool h; + bool s; int i; t_vec2 map; t_vec2 vert; diff --git a/src/cub3d.c b/src/cub3d.c index 9bc8e64..c210ae7 100644 --- a/src/cub3d.c +++ b/src/cub3d.c @@ -6,7 +6,7 @@ /* By: madumerg +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/09/04 16:58:27 by madumerg #+# #+# */ -/* Updated: 2024/11/02 14:21:07 by adjoly ### ########.fr */ +/* Updated: 2024/11/06 11:50:38 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ @@ -48,8 +48,6 @@ int main(int ac, char **av) render.mlx = mlx_init(); render.win = mlx_new_window(render.mlx, WINDOW_W, WINDOW_H, "WTF"); render.img = mlx_new_image(render.mlx, WINDOW_W, WINDOW_H); - render_frame(&render); - mlx_put_image_to_window(render.mlx, render.win, render.img, 0, 0); (void)ac; (void)av; mlx_on_event(render.mlx, render.win, MLX_KEYDOWN, key_hook, &render); diff --git a/src/raycasting/dda.c b/src/raycasting/dda.c index fc0eb1a..a070334 100644 --- a/src/raycasting/dda.c +++ b/src/raycasting/dda.c @@ -6,7 +6,7 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/10/07 16:55:09 by adjoly #+# #+# */ -/* Updated: 2024/11/02 15:58:33 by adjoly ### ########.fr */ +/* Updated: 2024/11/06 12:34:58 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,8 +18,9 @@ void setup_dda_ver(t_player *play, t_ray *ray, t_dda *dda) { - dda->distance.x = 100000; + dda->s = true; dda->h = false; + dda->distance.x = 100000; ray->tan = tan(ray->angle); if (cos(ray->angle) < -0.001) { @@ -39,8 +40,9 @@ void setup_dda_ver(t_player *play, t_ray *ray, t_dda *dda) void setup_dda_hor(t_player *play, t_ray *ray, t_dda *dda) { - dda->distance.y = 100000; dda->h = true; + dda->s = true; + dda->distance.y = 100000; ray->tan = 1 / tan(ray->angle); if (sin(ray->angle) < -0.001) { @@ -56,14 +58,19 @@ void setup_dda_hor(t_player *play, t_ray *ray, t_dda *dda) ray->pos.y = (((int)play->coord.y >> 6) << 6) - 0.001; ray->pos.x = (play->coord.y - ray->pos.y) * ray->tan + play->coord.x; } + else + { + dda->s = false; + ray->pos.x = play->coord.x; + ray->pos.y = play->coord.y; + } } void dda_loop(t_dda *dda, t_ray *ray, t_map *map, t_player *play) { - while (dda->i) - { - dda->map.x = (int)((int)ray->pos.x / 64); - dda->map.y = (int)((int)ray->pos.y / 64); + while (dda->s && dda->i) { + dda->map.x = (ray->pos.x / 64); + dda->map.y = (ray->pos.y / 64); if (dda->map.x >= 0 && dda->map.x < map->size.x && dda->map.y >= 0 && \ dda->map.y < map->size.y && \ map->arr[(int)dda->map.y][(int)dda->map.x] == '1')