mirror of
https://codeberg.org/ACME-Corporation/cub3d.git
synced 2025-12-06 01:48:08 +01:00
fix: Fixed undefined behaviors
This commit is contained in:
parent
ae66d62f75
commit
6957e84334
1 changed files with 12 additions and 3 deletions
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue