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,
|
static void calculate_pos_and_transform(t_cub3d_data *data, t_sprite *sprite,
|
||||||
int i)
|
int i)
|
||||||
{
|
{
|
||||||
|
double tmp;
|
||||||
|
|
||||||
sprite->sprite_pos_x = data->sprite_list[data->sprite_order[i]]->x
|
sprite->sprite_pos_x = data->sprite_list[data->sprite_order[i]]->x
|
||||||
- data->player.x;
|
- data->player.x;
|
||||||
sprite->sprite_pos_y = data->sprite_list[data->sprite_order[i]]->y
|
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->transform_y = sprite->inv_det * (-data->player.plane_y
|
||||||
* sprite->sprite_pos_x
|
* sprite->sprite_pos_x
|
||||||
+ data->player.plane_x * sprite->sprite_pos_y);
|
+ 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));
|
* (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)
|
static void sprite_calculate_pos_and_dist(t_cub3d_data *data, int i)
|
||||||
{
|
{
|
||||||
t_sprite *sprite;
|
t_sprite *sprite;
|
||||||
|
double tmp;
|
||||||
|
|
||||||
sprite = data->sprite_list[i];
|
sprite = data->sprite_list[i];
|
||||||
calculate_pos_and_transform(data, sprite, 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;
|
sprite->sprite_draw_start_y = -sprite->sprite_height / 2 + HEIGHT / 2;
|
||||||
if (sprite->sprite_draw_start_y < 0)
|
if (sprite->sprite_draw_start_y < 0)
|
||||||
sprite->sprite_draw_start_y = 0;
|
sprite->sprite_draw_start_y = 0;
|
||||||
sprite->sprite_draw_end_y = sprite->sprite_height / 2 + HEIGHT / 2;
|
sprite->sprite_draw_end_y = sprite->sprite_height / 2 + HEIGHT / 2;
|
||||||
if (sprite->sprite_draw_end_y >= HEIGHT)
|
if (sprite->sprite_draw_end_y >= HEIGHT)
|
||||||
sprite->sprite_draw_end_y = HEIGHT - 1;
|
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_draw_start_x = -sprite->sprite_width / 2
|
||||||
+ sprite->sprite_screen_x;
|
+ sprite->sprite_screen_x;
|
||||||
if (sprite->sprite_draw_start_x < 0)
|
if (sprite->sprite_draw_start_x < 0)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue