fix: Fixed undefined behaviors

This commit is contained in:
Theo Champion 2025-10-08 13:15:32 +02:00
parent ae66d62f75
commit 6957e84334

View file

@ -22,6 +22,8 @@
static void calculate_pos_and_transform(t_cub3d_data *data, t_sprite *sprite,
int i)
{
double tmp;
sprite->sprite_pos_x = data->sprite_list[data->sprite_order[i]]->x
- data->player.x;
sprite->sprite_pos_y = data->sprite_list[data->sprite_order[i]]->y
@ -33,24 +35,31 @@ static void calculate_pos_and_transform(t_cub3d_data *data, t_sprite *sprite,
sprite->transform_y = sprite->inv_det * (-data->player.plane_y
* sprite->sprite_pos_x
+ data->player.plane_x * sprite->sprite_pos_y);
sprite->sprite_screen_x = (int)((WIDTH / 2)
tmp = ((WIDTH / 2)
* (1 + sprite->transform_x / sprite->transform_y));
if (tmp < INFINITY && tmp > -INFINITY)
sprite->sprite_screen_x = (int)tmp;
}
static void sprite_calculate_pos_and_dist(t_cub3d_data *data, int i)
{
t_sprite *sprite;
double tmp;
sprite = data->sprite_list[i];
calculate_pos_and_transform(data, sprite, i);
sprite->sprite_height = (int)fabs((HEIGHT / sprite->transform_y));
tmp = fabs((HEIGHT / sprite->transform_y));
if (tmp < INFINITY && tmp > -INFINITY)
sprite->sprite_height = (int)tmp;
sprite->sprite_draw_start_y = -sprite->sprite_height / 2 + HEIGHT / 2;
if (sprite->sprite_draw_start_y < 0)
sprite->sprite_draw_start_y = 0;
sprite->sprite_draw_end_y = sprite->sprite_height / 2 + HEIGHT / 2;
if (sprite->sprite_draw_end_y >= HEIGHT)
sprite->sprite_draw_end_y = HEIGHT - 1;
sprite->sprite_width = (int)fabs((HEIGHT / sprite->transform_y));
tmp = fabs((HEIGHT / sprite->transform_y));
if (tmp < INFINITY && tmp > -INFINITY)
sprite->sprite_width = (int)tmp;
sprite->sprite_draw_start_x = -sprite->sprite_width / 2
+ sprite->sprite_screen_x;
if (sprite->sprite_draw_start_x < 0)