diff options
| author | Charles <sircharlesaze@gmail.com> | 2020-02-04 03:40:05 +0100 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2020-02-04 03:40:05 +0100 |
| commit | c8de182e9fa0c8a2674bf2f13d2ed9f500607ebd (patch) | |
| tree | 57bee31b2c0d95b00aab160ed5c1ec7527a13d75 /src/sprite_sort.c | |
| parent | 6309d5ffd30d97af666ca306fb0df293645fc7e4 (diff) | |
| download | cub3d-c8de182e9fa0c8a2674bf2f13d2ed9f500607ebd.tar.gz cub3d-c8de182e9fa0c8a2674bf2f13d2ed9f500607ebd.tar.bz2 cub3d-c8de182e9fa0c8a2674bf2f13d2ed9f500607ebd.zip | |
Norming
Diffstat (limited to 'src/sprite_sort.c')
| -rw-r--r-- | src/sprite_sort.c | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/sprite_sort.c b/src/sprite_sort.c new file mode 100644 index 0000000..4227743 --- /dev/null +++ b/src/sprite_sort.c @@ -0,0 +1,51 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* sprite_sort.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/02/04 02:35:05 by cacharle #+# #+# */ +/* Updated: 2020/02/04 03:38:15 by cacharle ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "cub3d.h" + +static t_vector vector_sub(t_vector a, t_vector b) +{ + a.x -= b.x; + a.y -= b.y; + return (a); +} + +static int sprite_compar(const void *a, const void *b) +{ + const t_sprite *sprite_a; + const t_sprite *sprite_b; + + sprite_a = a; + sprite_b = b; + if (sprite_a->dist > sprite_b->dist) + return (-1); + if (sprite_a->dist < sprite_b->dist) + return (1); + return (0); +} + +static void sprites_dist(t_state *state) +{ + int i; + + i = -1; + while (++i < state->sprites_num) + state->sprites[i].dist = + vector_norm(vector_sub(state->sprites[i].pos, state->pos)); +} + +void sprite_sort(t_state *state) +{ + sprites_dist(state); + ft_qsort(state->sprites, state->sprites_num, + sizeof(t_sprite), sprite_compar); +} |
