From fe145d4c59886b857b0966f8e9b673cfacc0695f Mon Sep 17 00:00:00 2001 From: salaaad2 Date: Mon, 24 Feb 2020 22:20:33 +0100 Subject: found 2 infinit loops hehe --- src/ft_draw_sprite.c | 47 +++++++++++++++++++++++++---------------------- 1 file changed, 25 insertions(+), 22 deletions(-) (limited to 'src/ft_draw_sprite.c') diff --git a/src/ft_draw_sprite.c b/src/ft_draw_sprite.c index 9cd7dae..a3371b4 100644 --- a/src/ft_draw_sprite.c +++ b/src/ft_draw_sprite.c @@ -16,38 +16,41 @@ #include #include #include - +/* void ft_draw_verline_sprite(t_cub *cl, int x, int y, int tex_y) { if (cl->tlist[4].tex_x) - cl->img.ptr[x * 4 + (cl->img.sizeline * y)] = - (char)cl->tlist[4].ptr[cl->tlist[4].tex_x * 4 + 4 * - cl->tlist[4].img_h * tex_y]; - cl->img.ptr[x * 4 + (cl->img.sizeline * y) + 1] = - (char)cl->tlist[4].ptr[cl->tlist[4].tex_x * 4 + 4 * - cl->tlist[4].img_h * tex_y + 1]; - cl->img.ptr[x * 4 + (cl->img.sizeline * y) + 2] = - (char)cl->tlist[4].ptr[cl->tlist[4].tex_x * 4 + 4 * - cl->tlist[4].img_h * tex_y + 2]; - cl->img.ptr[x * 4 + cl->wlist->x_size * y + 3] = (char)0; } - +*/ void - ft_draw_sprite(t_cub *cl, int x) + ft_draw_sprite(t_cub *cl) { - int hor_it; + int itx; + int ity; int d; + int tex_x; int tex_y; - hor_it = cl->sp_list.s_start_y; - while (hor_it < cl->sp_list.s_end_y) + itx = cl->sp_list.s_start_x; + while (itx < cl->sp_list.s_end_x) { - d = hor_it * 256 - cl->wlist->y_size * 128 + cl->rlist.line_h * 128; - d = (d <= 0) ? (-d) : (d); - tex_y = ((d * cl->tlist[4].img_h) / cl->rlist.line_h) / 256; - (tex_y < 0) ? (tex_y = 0) : 0; - ft_draw_verline_sprite(cl, x, hor_it, tex_y); - hor_it++; + tex_x = (int)((itx - (-cl->sp_list.s_w / 2 + cl->sp_list.s_screen_x)) + * cl->tlist[4].img_w / cl->sp_list.s_w); + ity = cl->sp_list.s_start_y; + while (ity < cl->sp_list.s_end_y) + { + d = ity * 256 - cl->wlist->y_size * 128 + cl->sp_list.s_h * 128; + tex_y = ((d * cl->tlist[4].img_h) / cl->sp_list.s_h) / 256; + if (*(cl->tlist[4].ptr + tex_x + tex_y * cl->tlist[4].sizeline / 4)) + { + /*cl->img.ptr[tex_x * 4 + (cl->img.sizeline * tex_y)] =*/ + /*(char)cl->tlist[4].ptr[cl->tlist[4].tex_x * 4 + 4 **/ + /*cl->tlist[4].img_h * tex_y];*/ + /*puts("qwe");*/ + } + ity++; + } + itx++; } } -- cgit v1.2.3 From 3363be36b7ffe90fc335e07ebb1dae14366216e8 Mon Sep 17 00:00:00 2001 From: salaaad2 Date: Mon, 24 Feb 2020 23:14:16 +0100 Subject: gang --- src/ft_draw_sprite.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/ft_draw_sprite.c') diff --git a/src/ft_draw_sprite.c b/src/ft_draw_sprite.c index a3371b4..7e7114f 100644 --- a/src/ft_draw_sprite.c +++ b/src/ft_draw_sprite.c @@ -44,9 +44,9 @@ void tex_y = ((d * cl->tlist[4].img_h) / cl->sp_list.s_h) / 256; if (*(cl->tlist[4].ptr + tex_x + tex_y * cl->tlist[4].sizeline / 4)) { - /*cl->img.ptr[tex_x * 4 + (cl->img.sizeline * tex_y)] =*/ - /*(char)cl->tlist[4].ptr[cl->tlist[4].tex_x * 4 + 4 **/ - /*cl->tlist[4].img_h * tex_y];*/ + cl->img.ptr[tex_x * 4 + (cl->img.sizeline * tex_y)] = + (char)cl->tlist[4].ptr[cl->tlist[4].tex_x * 4 + 4 * + cl->tlist[4].img_h * tex_y]; /*puts("qwe");*/ } ity++; -- cgit v1.2.3 From cc85b0a701b558e18299822f7091fc2fd137b14b Mon Sep 17 00:00:00 2001 From: salaaad2 Date: Tue, 25 Feb 2020 16:43:54 +0100 Subject: bunch of garbage --- src/ft_draw_sprite.c | 30 +++++++++++------------------- 1 file changed, 11 insertions(+), 19 deletions(-) (limited to 'src/ft_draw_sprite.c') diff --git a/src/ft_draw_sprite.c b/src/ft_draw_sprite.c index 7e7114f..28ffb10 100644 --- a/src/ft_draw_sprite.c +++ b/src/ft_draw_sprite.c @@ -16,32 +16,24 @@ #include #include #include -/* -void - ft_draw_verline_sprite(t_cub *cl, int x, int y, int tex_y) -{ - if (cl->tlist[4].tex_x) -} -*/ + void ft_draw_sprite(t_cub *cl) { - int itx; - int ity; int d; int tex_x; int tex_y; - itx = cl->sp_list.s_start_x; - while (itx < cl->sp_list.s_end_x) + cl->sprites.x = cl->sprites.s_start_x; + while (cl->sprites.x < cl->sprites.s_end_x) { - tex_x = (int)((itx - (-cl->sp_list.s_w / 2 + cl->sp_list.s_screen_x)) - * cl->tlist[4].img_w / cl->sp_list.s_w); - ity = cl->sp_list.s_start_y; - while (ity < cl->sp_list.s_end_y) + tex_x = (int)((cl->sprites.x - (-cl->sprites.s_w / 2 + cl->sprites.s_screen_x)) + * cl->tlist[4].img_w / cl->sprites.s_w); + cl->sprites.y = cl->sprites.s_start_y; + while (cl->sprites.y < cl->sprites.s_end_y) { - d = ity * 256 - cl->wlist->y_size * 128 + cl->sp_list.s_h * 128; - tex_y = ((d * cl->tlist[4].img_h) / cl->sp_list.s_h) / 256; + d = cl->sprites.y * 256 - cl->wlist->y_size * 128 + cl->sprites.s_h * 128; + tex_y = ((d * cl->tlist[4].img_h) / cl->sprites.s_h) / 256; if (*(cl->tlist[4].ptr + tex_x + tex_y * cl->tlist[4].sizeline / 4)) { cl->img.ptr[tex_x * 4 + (cl->img.sizeline * tex_y)] = @@ -49,8 +41,8 @@ void cl->tlist[4].img_h * tex_y]; /*puts("qwe");*/ } - ity++; + cl->sprites.y++; } - itx++; + cl->sprites.x++; } } -- cgit v1.2.3 From 51dd3734caadd0c3b943da3410772c65558280cc Mon Sep 17 00:00:00 2001 From: salaaad2 Date: Tue, 25 Feb 2020 17:33:15 +0100 Subject: ??? --- src/ft_draw_sprite.c | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) (limited to 'src/ft_draw_sprite.c') diff --git a/src/ft_draw_sprite.c b/src/ft_draw_sprite.c index 28ffb10..03d3ca7 100644 --- a/src/ft_draw_sprite.c +++ b/src/ft_draw_sprite.c @@ -18,31 +18,31 @@ #include void - ft_draw_sprite(t_cub *cl) + ft_draw_sprite(t_cub *cl, t_sprite *sprite) { - int d; - int tex_x; - int tex_y; - - cl->sprites.x = cl->sprites.s_start_x; - while (cl->sprites.x < cl->sprites.s_end_x) + int32_t d; + sprite->x = sprite->drawstartx; + while (sprite->x < sprite->drawendx) { - tex_x = (int)((cl->sprites.x - (-cl->sprites.s_w / 2 + cl->sprites.s_screen_x)) - * cl->tlist[4].img_w / cl->sprites.s_w); - cl->sprites.y = cl->sprites.s_start_y; - while (cl->sprites.y < cl->sprites.s_end_y) - { - d = cl->sprites.y * 256 - cl->wlist->y_size * 128 + cl->sprites.s_h * 128; - tex_y = ((d * cl->tlist[4].img_h) / cl->sprites.s_h) / 256; - if (*(cl->tlist[4].ptr + tex_x + tex_y * cl->tlist[4].sizeline / 4)) + sprite->tex_x = (int32_t)((sprite->x - (-sprite->spritewidth / 2 + + sprite->spritescreenx)) * cl->tlist[4].img_w / sprite->spritewidth); + sprite->y = sprite->drawstarty; + if (sprite->transformy > 0 && sprite->x >= 0 && + sprite->x < (int32_t)cl->wlist->x_size) + while (sprite->y < sprite->drawendy) { - cl->img.ptr[tex_x * 4 + (cl->img.sizeline * tex_y)] = - (char)cl->tlist[4].ptr[cl->tlist[4].tex_x * 4 + 4 * - cl->tlist[4].img_h * tex_y]; - /*puts("qwe");*/ + d = (sprite->y) * 256 - cl->wlist->y_size * 128 + + sprite->spriteheight * 128; + sprite->tex_y = ((d * cl->tlist[4].img_h) / + sprite->spriteheight) / 256; + if (*(cl->tlist[4].ptr + sprite->tex_x + sprite->tex_y * + cl->tlist[4].sizeline / 4)) + *(cl->img.ptr + sprite->x + sprite->y * + cl->img.sizeline / 4) = + *(cl->tlist[4].ptr + sprite->tex_x + sprite->tex_y * cl->tlist[4].sizeline / 4); + sprite->y++; } - cl->sprites.y++; - } - cl->sprites.x++; + sprite->x++; } + } -- cgit v1.2.3 From 3f8b598e0a1b60475fdf8aa98c601b4513a24efa Mon Sep 17 00:00:00 2001 From: salaaad2 Date: Tue, 25 Feb 2020 18:09:57 +0100 Subject: gee --- src/ft_draw_sprite.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src/ft_draw_sprite.c') diff --git a/src/ft_draw_sprite.c b/src/ft_draw_sprite.c index 03d3ca7..701587f 100644 --- a/src/ft_draw_sprite.c +++ b/src/ft_draw_sprite.c @@ -21,6 +21,7 @@ void ft_draw_sprite(t_cub *cl, t_sprite *sprite) { int32_t d; + sprite->x = sprite->drawstartx; while (sprite->x < sprite->drawendx) { @@ -31,14 +32,15 @@ void sprite->x < (int32_t)cl->wlist->x_size) while (sprite->y < sprite->drawendy) { + puts("qwe"); d = (sprite->y) * 256 - cl->wlist->y_size * 128 + sprite->spriteheight * 128; sprite->tex_y = ((d * cl->tlist[4].img_h) / - sprite->spriteheight) / 256; + sprite->spriteheight) / 128; if (*(cl->tlist[4].ptr + sprite->tex_x + sprite->tex_y * cl->tlist[4].sizeline / 4)) - *(cl->img.ptr + sprite->x + sprite->y * - cl->img.sizeline / 4) = + cl->img.ptr[sprite->x + sprite->y * + cl->img.sizeline / 4] = *(cl->tlist[4].ptr + sprite->tex_x + sprite->tex_y * cl->tlist[4].sizeline / 4); sprite->y++; } -- cgit v1.2.3 From 903fe03f0f6b1f70faa3139b57db24cb6c51b0a6 Mon Sep 17 00:00:00 2001 From: salaaad2 Date: Wed, 26 Feb 2020 12:19:10 +0100 Subject: only one floating sprite, one line / 2 correct, start and end seems flawed --- src/ft_draw_sprite.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/ft_draw_sprite.c') diff --git a/src/ft_draw_sprite.c b/src/ft_draw_sprite.c index 701587f..c81e72b 100644 --- a/src/ft_draw_sprite.c +++ b/src/ft_draw_sprite.c @@ -22,6 +22,7 @@ void { int32_t d; + printf("start x : %d\nstart y : %d\nend x : %d\nend y : %d\n", sprite->drawstartx, sprite->drawstarty, sprite->drawendy, sprite->drawendy); sprite->x = sprite->drawstartx; while (sprite->x < sprite->drawendx) { @@ -32,7 +33,6 @@ void sprite->x < (int32_t)cl->wlist->x_size) while (sprite->y < sprite->drawendy) { - puts("qwe"); d = (sprite->y) * 256 - cl->wlist->y_size * 128 + sprite->spriteheight * 128; sprite->tex_y = ((d * cl->tlist[4].img_h) / @@ -40,7 +40,7 @@ void if (*(cl->tlist[4].ptr + sprite->tex_x + sprite->tex_y * cl->tlist[4].sizeline / 4)) cl->img.ptr[sprite->x + sprite->y * - cl->img.sizeline / 4] = + cl->img.sizeline] = *(cl->tlist[4].ptr + sprite->tex_x + sprite->tex_y * cl->tlist[4].sizeline / 4); sprite->y++; } -- cgit v1.2.3 From 859f84a4c6819e91d38b1cacdc39d94a7df71969 Mon Sep 17 00:00:00 2001 From: salaaad2 Date: Fri, 28 Feb 2020 10:57:51 +0100 Subject: on est al --- src/ft_draw_sprite.c | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) (limited to 'src/ft_draw_sprite.c') diff --git a/src/ft_draw_sprite.c b/src/ft_draw_sprite.c index c81e72b..45f9217 100644 --- a/src/ft_draw_sprite.c +++ b/src/ft_draw_sprite.c @@ -24,6 +24,10 @@ void printf("start x : %d\nstart y : %d\nend x : %d\nend y : %d\n", sprite->drawstartx, sprite->drawstarty, sprite->drawendy, sprite->drawendy); sprite->x = sprite->drawstartx; + /* sprite->drawstartx = 1000; */ + /* sprite->drawstarty = 200; */ + /* sprite->drawendx = 700; */ + /* sprite->drawendy = 1000; */ while (sprite->x < sprite->drawendx) { sprite->tex_x = (int32_t)((sprite->x - (-sprite->spritewidth / 2 + @@ -31,20 +35,22 @@ void sprite->y = sprite->drawstarty; if (sprite->transformy > 0 && sprite->x >= 0 && sprite->x < (int32_t)cl->wlist->x_size) - while (sprite->y < sprite->drawendy) - { - d = (sprite->y) * 256 - cl->wlist->y_size * 128 + - sprite->spriteheight * 128; - sprite->tex_y = ((d * cl->tlist[4].img_h) / - sprite->spriteheight) / 128; - if (*(cl->tlist[4].ptr + sprite->tex_x + sprite->tex_y * - cl->tlist[4].sizeline / 4)) - cl->img.ptr[sprite->x + sprite->y * - cl->img.sizeline] = - *(cl->tlist[4].ptr + sprite->tex_x + sprite->tex_y * cl->tlist[4].sizeline / 4); - sprite->y++; - } + while (sprite->y < sprite->drawendy) + { + d = (sprite->y) * 256 - cl->wlist->y_size * 128 + + sprite->spriteheight * 128; + sprite->tex_y = ((d * cl->tlist[4].img_h) / + sprite->spriteheight) / 128; + if (*(cl->tlist[4].ptr + sprite->tex_x + sprite->tex_y * + cl->tlist[4].sizeline / 4)) + { + cl->img.ptr[sprite->x + sprite->y * + cl->img.sizeline] = + *(cl->tlist[4].ptr + sprite->tex_x + sprite->tex_y * cl->tlist[4].sizeline / 4); + + } + sprite->y++; + } sprite->x++; } - } -- cgit v1.2.3 From 1073379d9815d1f463310e661d3aabcf53c594e2 Mon Sep 17 00:00:00 2001 From: salaaad2 Date: Fri, 28 Feb 2020 13:39:36 +0100 Subject: hooooooooooooooooooooo --- src/ft_draw_sprite.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) (limited to 'src/ft_draw_sprite.c') diff --git a/src/ft_draw_sprite.c b/src/ft_draw_sprite.c index 45f9217..d99e1be 100644 --- a/src/ft_draw_sprite.c +++ b/src/ft_draw_sprite.c @@ -24,10 +24,6 @@ void printf("start x : %d\nstart y : %d\nend x : %d\nend y : %d\n", sprite->drawstartx, sprite->drawstarty, sprite->drawendy, sprite->drawendy); sprite->x = sprite->drawstartx; - /* sprite->drawstartx = 1000; */ - /* sprite->drawstarty = 200; */ - /* sprite->drawendx = 700; */ - /* sprite->drawendy = 1000; */ while (sprite->x < sprite->drawendx) { sprite->tex_x = (int32_t)((sprite->x - (-sprite->spritewidth / 2 + @@ -37,20 +33,24 @@ void sprite->x < (int32_t)cl->wlist->x_size) while (sprite->y < sprite->drawendy) { - d = (sprite->y) * 256 - cl->wlist->y_size * 128 + + d = sprite->y * 256 - cl->wlist->y_size * 128 + sprite->spriteheight * 128; sprite->tex_y = ((d * cl->tlist[4].img_h) / sprite->spriteheight) / 128; - if (*(cl->tlist[4].ptr + sprite->tex_x + sprite->tex_y * - cl->tlist[4].sizeline / 4)) + if (cl->tlist[4].ptr[sprite->tex_x * 4 + 4 * cl->tlist[4].img_h * sprite->tex_y] != 0) { - cl->img.ptr[sprite->x + sprite->y * - cl->img.sizeline] = - *(cl->tlist[4].ptr + sprite->tex_x + sprite->tex_y * cl->tlist[4].sizeline / 4); - + cl->img.ptr[sprite->x * 4 + (sprite->y * + cl->img.sizeline)] = + cl->tlist[4].ptr[sprite->tex_x * 4 + 4 * cl->tlist[4].img_h * sprite->tex_y]; + cl->img.ptr[sprite->x * 4 + (sprite->y * + cl->img.sizeline) + 1] = + cl->tlist[4].ptr[sprite->tex_x * 4 + 4 * cl->tlist[4].img_h * sprite->tex_y + 1]; + cl->img.ptr[sprite->x * 4 + (sprite->y * + cl->img.sizeline) + 2] = + cl->tlist[4].ptr[sprite->tex_x * 4 + 4 * cl->tlist[4].img_h * sprite->tex_y + 2]; } sprite->y++; } - sprite->x++; - } + sprite->x++; + } } -- cgit v1.2.3 From b19155962b963cfa2ce7a7ff8ed5bf1ba662f799 Mon Sep 17 00:00:00 2001 From: salaaad2 Date: Fri, 28 Feb 2020 13:51:59 +0100 Subject: lets GOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO --- src/ft_draw_sprite.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/ft_draw_sprite.c') diff --git a/src/ft_draw_sprite.c b/src/ft_draw_sprite.c index d99e1be..875e527 100644 --- a/src/ft_draw_sprite.c +++ b/src/ft_draw_sprite.c @@ -35,9 +35,9 @@ void { d = sprite->y * 256 - cl->wlist->y_size * 128 + sprite->spriteheight * 128; - sprite->tex_y = ((d * cl->tlist[4].img_h) / + sprite->tex_y = ((d * cl->tlist[4].img_h / 2) / sprite->spriteheight) / 128; - if (cl->tlist[4].ptr[sprite->tex_x * 4 + 4 * cl->tlist[4].img_h * sprite->tex_y] != 0) + if (cl->tlist[4].ptr[sprite->tex_x * 4 + 4 * cl->tlist[4].img_h * sprite->tex_y] != (char)0) { cl->img.ptr[sprite->x * 4 + (sprite->y * cl->img.sizeline)] = -- cgit v1.2.3 From 8f852afcfa170070b6f0ac2e321546990d87e401 Mon Sep 17 00:00:00 2001 From: salaaad2 Date: Fri, 28 Feb 2020 15:30:53 +0100 Subject: gang --- src/ft_draw_sprite.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/ft_draw_sprite.c') diff --git a/src/ft_draw_sprite.c b/src/ft_draw_sprite.c index 875e527..0430e2f 100644 --- a/src/ft_draw_sprite.c +++ b/src/ft_draw_sprite.c @@ -22,7 +22,7 @@ void { int32_t d; - printf("start x : %d\nstart y : %d\nend x : %d\nend y : %d\n", sprite->drawstartx, sprite->drawstarty, sprite->drawendy, sprite->drawendy); + /* printf("start x : %d\nstart y : %d\nend x : %d\nend y : %d\n", sprite->drawstartx, sprite->drawstarty, sprite->drawendy, sprite->drawendy); */ sprite->x = sprite->drawstartx; while (sprite->x < sprite->drawendx) { @@ -37,7 +37,7 @@ void sprite->spriteheight * 128; sprite->tex_y = ((d * cl->tlist[4].img_h / 2) / sprite->spriteheight) / 128; - if (cl->tlist[4].ptr[sprite->tex_x * 4 + 4 * cl->tlist[4].img_h * sprite->tex_y] != (char)0) + if (cl->tlist[4].ptr[sprite->tex_x * 4 + 4 * cl->tlist[4].img_h * sprite->tex_y]) { cl->img.ptr[sprite->x * 4 + (sprite->y * cl->img.sizeline)] = -- cgit v1.2.3 From 82f823ceb63d76ce052db3bca74842fe37394eb4 Mon Sep 17 00:00:00 2001 From: salaaad2 Date: Thu, 5 Mar 2020 22:01:22 +0100 Subject: fuck --- src/ft_draw_sprite.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'src/ft_draw_sprite.c') diff --git a/src/ft_draw_sprite.c b/src/ft_draw_sprite.c index 0430e2f..82984d2 100644 --- a/src/ft_draw_sprite.c +++ b/src/ft_draw_sprite.c @@ -38,9 +38,7 @@ void sprite->tex_y = ((d * cl->tlist[4].img_h / 2) / sprite->spriteheight) / 128; if (cl->tlist[4].ptr[sprite->tex_x * 4 + 4 * cl->tlist[4].img_h * sprite->tex_y]) - { - cl->img.ptr[sprite->x * 4 + (sprite->y * - cl->img.sizeline)] = + {cl->img.ptr[sprite->x * 4 + (sprite->y * cl->img.sizeline)] = cl->tlist[4].ptr[sprite->tex_x * 4 + 4 * cl->tlist[4].img_h * sprite->tex_y]; cl->img.ptr[sprite->x * 4 + (sprite->y * cl->img.sizeline) + 1] = -- cgit v1.2.3 From 04658c5e9a019917c3f8ffeb84562c328da0a885 Mon Sep 17 00:00:00 2001 From: salaaad2 Date: Fri, 6 Mar 2020 18:40:56 +0100 Subject: ils se cachent (mal) --- src/ft_draw_sprite.c | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 85 insertions(+), 1 deletion(-) (limited to 'src/ft_draw_sprite.c') diff --git a/src/ft_draw_sprite.c b/src/ft_draw_sprite.c index 82984d2..29a8a46 100644 --- a/src/ft_draw_sprite.c +++ b/src/ft_draw_sprite.c @@ -17,6 +17,90 @@ #include #include +void + ft_sort_sprites(t_cub *cl) +{ + float dist_tab[4096]; + uint32_t tmp; + int32_t it; + + it = 0; + while (it < cl->mlist->sprite_nbr) + { + dist_tab[it] = ((cl->plist->pos_x - cl->sprites[it].s_pos_x) * + (cl->plist->pos_x - cl->sprites[it].s_pos_x) + + (cl->plist->pos_y - cl->sprites[it].s_pos_y) * + (cl->plist->pos_y - cl->sprites[it].s_pos_y)); + cl->mlist->sprite_order[it] = it; + it++; + } + it = 0; + while (it < cl->mlist->sprite_nbr) + { + if (dist_tab[it] > dist_tab[it + 1]) + { + tmp = dist_tab[it]; + dist_tab[it] = dist_tab[it + 1]; + dist_tab[it + 1] = tmp; + tmp = cl->mlist->sprite_order[it]; + cl->mlist->sprite_order[it] = cl->mlist->sprite_order[it + 1]; + cl->mlist->sprite_order[it + 1] = tmp; + it = 0; + } + } +} + +void + ft_sprite_height(t_cub *cl, t_sprite *sprite) +{ + sprite->spriteheight = abs((int)(cl->wlist->y_size / (sprite->transformy))); + sprite->drawstarty = -sprite->spriteheight / 2 + cl->wlist->y_size / 2; + if (sprite->drawstarty < 0) + sprite->drawstarty = 0; + sprite->drawendy = sprite->spriteheight / 2 + cl->wlist->y_size / 2; + if (sprite->drawendy >= (int)cl->wlist->y_size) + sprite->drawendy = cl->wlist->y_size; +} + +void + ft_sprite_width(t_cub *cl, t_sprite *sprite) +{ + sprite->spritewidth = abs((int)(cl->wlist->x_size / (sprite->transformy))); + sprite->drawstartx = -sprite->spritewidth / 2 + sprite->spritescreenx; + if (sprite->drawstartx < 0) + sprite->drawstartx = 0; + sprite->drawendx = sprite->spritewidth / 2 + sprite->spritescreenx; + if (sprite->drawendx >= (int)cl->wlist->x_size) + sprite->drawendx = cl->wlist->x_size; +} + +void + ft_calc_sprite(t_cub *cl) +{ + t_sprite sprite; + int i = 0; + + while (i < cl->mlist->sprite_nbr) + { + sprite = cl->sprites[i]; + sprite.spritex = sprite.s_pos_x - (cl->plist->pos_x - 0.5); + sprite.spritey = sprite.s_pos_y - (cl->plist->pos_y - 0.5); + sprite.invdet = 1.0 / (cl->plist->plane_x * + cl->plist->dir_y - cl->plist->dir_x * cl->plist->plane_y); + sprite.transformx = sprite.invdet * (cl->plist->dir_y * + sprite.spritey - cl->plist->dir_x * sprite.spritex); + sprite.transformy = sprite.invdet * + (-cl->plist->plane_y * sprite.spritex + cl->plist->plane_x * sprite.spritey); + printf("[%f] [%f] x [%f] y [%f] [%d]\n", sprite.spritex, sprite.spritey, sprite.transformx, sprite.transformy, i); + sprite.spritescreenx = (int)((cl->wlist->y_size / 2) * + (1 + sprite.transformx / sprite.transformy)); + ft_sprite_height(cl, &sprite); + ft_sprite_width(cl, &sprite); + ft_draw_sprite(cl, &sprite); + i++; + } +} + void ft_draw_sprite(t_cub *cl, t_sprite *sprite) { @@ -37,7 +121,7 @@ void sprite->spriteheight * 128; sprite->tex_y = ((d * cl->tlist[4].img_h / 2) / sprite->spriteheight) / 128; - if (cl->tlist[4].ptr[sprite->tex_x * 4 + 4 * cl->tlist[4].img_h * sprite->tex_y]) + if (cl->tlist[4].ptr[sprite->tex_x * 4 + 4 * cl->tlist[4].img_h * sprite->tex_y] && cl->rlist.wall_dist_tab[sprite->x] > cl->rlist.wall_dist) {cl->img.ptr[sprite->x * 4 + (sprite->y * cl->img.sizeline)] = cl->tlist[4].ptr[sprite->tex_x * 4 + 4 * cl->tlist[4].img_h * sprite->tex_y]; cl->img.ptr[sprite->x * 4 + (sprite->y * -- cgit v1.2.3 From f00d3d412bdbbe45c6a84930e9d392bf915a25b9 Mon Sep 17 00:00:00 2001 From: salaaad2 Date: Mon, 9 Mar 2020 15:50:02 +0100 Subject: start over n --- src/ft_draw_sprite.c | 56 +++++++++++++++++++++++++++------------------------- 1 file changed, 29 insertions(+), 27 deletions(-) (limited to 'src/ft_draw_sprite.c') diff --git a/src/ft_draw_sprite.c b/src/ft_draw_sprite.c index 29a8a46..b8d9506 100644 --- a/src/ft_draw_sprite.c +++ b/src/ft_draw_sprite.c @@ -59,19 +59,19 @@ void sprite->drawstarty = 0; sprite->drawendy = sprite->spriteheight / 2 + cl->wlist->y_size / 2; if (sprite->drawendy >= (int)cl->wlist->y_size) - sprite->drawendy = cl->wlist->y_size; + sprite->drawendy = cl->wlist->y_size - 1; } void ft_sprite_width(t_cub *cl, t_sprite *sprite) { - sprite->spritewidth = abs((int)(cl->wlist->x_size / (sprite->transformy))); - sprite->drawstartx = -sprite->spritewidth / 2 + sprite->spritescreenx; + sprite->spritewidth = abs((int)(cl->wlist->y_size / (sprite->transformy))); + sprite->drawstarty = -sprite->spritewidth / 2 + sprite->spritescreenx; if (sprite->drawstartx < 0) sprite->drawstartx = 0; - sprite->drawendx = sprite->spritewidth / 2 + sprite->spritescreenx; + sprite->drawendy = sprite->spritewidth / 2 + sprite->spritescreenx; if (sprite->drawendx >= (int)cl->wlist->x_size) - sprite->drawendx = cl->wlist->x_size; + sprite->drawendx = cl->wlist->x_size - 1; } void @@ -81,23 +81,22 @@ void int i = 0; while (i < cl->mlist->sprite_nbr) - { - sprite = cl->sprites[i]; - sprite.spritex = sprite.s_pos_x - (cl->plist->pos_x - 0.5); - sprite.spritey = sprite.s_pos_y - (cl->plist->pos_y - 0.5); - sprite.invdet = 1.0 / (cl->plist->plane_x * - cl->plist->dir_y - cl->plist->dir_x * cl->plist->plane_y); - sprite.transformx = sprite.invdet * (cl->plist->dir_y * - sprite.spritey - cl->plist->dir_x * sprite.spritex); - sprite.transformy = sprite.invdet * - (-cl->plist->plane_y * sprite.spritex + cl->plist->plane_x * sprite.spritey); - printf("[%f] [%f] x [%f] y [%f] [%d]\n", sprite.spritex, sprite.spritey, sprite.transformx, sprite.transformy, i); - sprite.spritescreenx = (int)((cl->wlist->y_size / 2) * - (1 + sprite.transformx / sprite.transformy)); - ft_sprite_height(cl, &sprite); - ft_sprite_width(cl, &sprite); - ft_draw_sprite(cl, &sprite); - i++; + { + sprite = cl->sprites[i]; + sprite.spritex = sprite.s_pos_x - (cl->plist->pos_x); + sprite.spritey = sprite.s_pos_y - (cl->plist->pos_y); + sprite.invdet = 1.0 / (cl->plist->plane_x * + cl->plist->dir_y - cl->plist->dir_x * cl->plist->plane_y); + sprite.transformx = sprite.invdet * (cl->plist->dir_y * + sprite.spritey - cl->plist->dir_x * sprite.spritex); + sprite.transformy = sprite.invdet * + (-cl->plist->plane_y * sprite.spritex + cl->plist->plane_x * sprite.spritey); + sprite.spritescreenx = (int)((cl->wlist->x_size / 2) * + (1 + sprite.transformx / sprite.transformy)); + ft_sprite_height(cl, &sprite); + ft_sprite_width(cl, &sprite); + ft_draw_sprite(cl, &sprite); + i++; } } @@ -106,23 +105,23 @@ void { int32_t d; - /* printf("start x : %d\nstart y : %d\nend x : %d\nend y : %d\n", sprite->drawstartx, sprite->drawstarty, sprite->drawendy, sprite->drawendy); */ sprite->x = sprite->drawstartx; + printf("y : [%d] [%d] x : [%d] [%d] x : [%f] y : [%f]\n", sprite->drawstarty, sprite->drawendy, sprite->drawstartx, sprite->drawendx, cl->plist->dir_x, cl->plist->dir_y); while (sprite->x < sprite->drawendx) { sprite->tex_x = (int32_t)((sprite->x - (-sprite->spritewidth / 2 + sprite->spritescreenx)) * cl->tlist[4].img_w / sprite->spritewidth); sprite->y = sprite->drawstarty; - if (sprite->transformy > 0 && sprite->x >= 0 && - sprite->x < (int32_t)cl->wlist->x_size) while (sprite->y < sprite->drawendy) { d = sprite->y * 256 - cl->wlist->y_size * 128 + sprite->spriteheight * 128; sprite->tex_y = ((d * cl->tlist[4].img_h / 2) / sprite->spriteheight) / 128; - if (cl->tlist[4].ptr[sprite->tex_x * 4 + 4 * cl->tlist[4].img_h * sprite->tex_y] && cl->rlist.wall_dist_tab[sprite->x] > cl->rlist.wall_dist) - {cl->img.ptr[sprite->x * 4 + (sprite->y * cl->img.sizeline)] = + if (cl->tlist[4].ptr[sprite->tex_x * 4 + 4 * cl->tlist[4].img_h * sprite->tex_y] + && cl->rlist.wall_dist_tab[sprite->x] > cl->rlist.wall_dist) + { + cl->img.ptr[sprite->x * 4 + (sprite->y * cl->img.sizeline)] = cl->tlist[4].ptr[sprite->tex_x * 4 + 4 * cl->tlist[4].img_h * sprite->tex_y]; cl->img.ptr[sprite->x * 4 + (sprite->y * cl->img.sizeline) + 1] = @@ -136,3 +135,6 @@ void sprite->x++; } } + + +/* printf("[%f] [%f] x [%f] y [%f] [%d]\n", sprite.spritex, sprite.spritey, sprite.transformx, sprite.transformy, i); */ -- cgit v1.2.3 From d5a3402121b64a9df97b4b7ebe49ef288f511763 Mon Sep 17 00:00:00 2001 From: salaaad2 Date: Mon, 9 Mar 2020 15:58:29 +0100 Subject: on est la --- src/ft_draw_sprite.c | 41 +++++++++++------------------------------ 1 file changed, 11 insertions(+), 30 deletions(-) (limited to 'src/ft_draw_sprite.c') diff --git a/src/ft_draw_sprite.c b/src/ft_draw_sprite.c index b8d9506..8c1b848 100644 --- a/src/ft_draw_sprite.c +++ b/src/ft_draw_sprite.c @@ -53,25 +53,11 @@ void void ft_sprite_height(t_cub *cl, t_sprite *sprite) { - sprite->spriteheight = abs((int)(cl->wlist->y_size / (sprite->transformy))); - sprite->drawstarty = -sprite->spriteheight / 2 + cl->wlist->y_size / 2; - if (sprite->drawstarty < 0) - sprite->drawstarty = 0; - sprite->drawendy = sprite->spriteheight / 2 + cl->wlist->y_size / 2; - if (sprite->drawendy >= (int)cl->wlist->y_size) - sprite->drawendy = cl->wlist->y_size - 1; } void ft_sprite_width(t_cub *cl, t_sprite *sprite) { - sprite->spritewidth = abs((int)(cl->wlist->y_size / (sprite->transformy))); - sprite->drawstarty = -sprite->spritewidth / 2 + sprite->spritescreenx; - if (sprite->drawstartx < 0) - sprite->drawstartx = 0; - sprite->drawendy = sprite->spritewidth / 2 + sprite->spritescreenx; - if (sprite->drawendx >= (int)cl->wlist->x_size) - sprite->drawendx = cl->wlist->x_size - 1; } void @@ -81,22 +67,17 @@ void int i = 0; while (i < cl->mlist->sprite_nbr) - { - sprite = cl->sprites[i]; - sprite.spritex = sprite.s_pos_x - (cl->plist->pos_x); - sprite.spritey = sprite.s_pos_y - (cl->plist->pos_y); - sprite.invdet = 1.0 / (cl->plist->plane_x * - cl->plist->dir_y - cl->plist->dir_x * cl->plist->plane_y); - sprite.transformx = sprite.invdet * (cl->plist->dir_y * - sprite.spritey - cl->plist->dir_x * sprite.spritex); - sprite.transformy = sprite.invdet * - (-cl->plist->plane_y * sprite.spritex + cl->plist->plane_x * sprite.spritey); - sprite.spritescreenx = (int)((cl->wlist->x_size / 2) * - (1 + sprite.transformx / sprite.transformy)); - ft_sprite_height(cl, &sprite); - ft_sprite_width(cl, &sprite); - ft_draw_sprite(cl, &sprite); - i++; + { + sprite = cl->sprites[i]; + sprite.spritex = sprite.s_pos_x - cl->plist->pos_x; + sprite.spritey = sprite.s_pos_y - cl->plist->pos_y; + sprite.invdet = 1.0 / (cl->plist.plane_x * cl->plist->dir_y - cl->plist->dir_x * cl->plist->plane_y); //required for correct matrix multiplication + sprite.transformx = sprite.invdet * (cl->plist->dir_y * sprite.spritex- cl->plist->dir_x* sprite.spritey); + sprite.transformy = invDet * (-cl->plist->plane_y* sprite.spritex + cl->plist->plane_x * sprite.spritey); + ft_sprite_height(cl, &sprite); + ft_sprite_width(cl, &sprite); + ft_draw_sprite(cl, &sprite); + i++; } } -- cgit v1.2.3 From afa0ac18607a421b154588aef7ceaa09bc1cf9a6 Mon Sep 17 00:00:00 2001 From: salaaad2 Date: Mon, 9 Mar 2020 16:39:35 +0100 Subject: sprites ont des jambes --- src/ft_draw_sprite.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) (limited to 'src/ft_draw_sprite.c') diff --git a/src/ft_draw_sprite.c b/src/ft_draw_sprite.c index 8c1b848..e412998 100644 --- a/src/ft_draw_sprite.c +++ b/src/ft_draw_sprite.c @@ -53,11 +53,24 @@ void void ft_sprite_height(t_cub *cl, t_sprite *sprite) { + sprite->spriteheight = abs((int)(cl->wlist->y_size / (sprite->transformy))); + sprite->drawstarty = -sprite->spriteheight / 2 + cl->wlist->y_size / 2; + if(sprite->drawstarty < 0) + sprite->drawstarty = 0; + sprite->drawendy = sprite->spriteheight / 2 + cl->wlist->y_size / 2; + if(sprite->drawendy >= (int)cl->wlist->y_size) + sprite->drawendy = cl->wlist->y_size - 1; } void ft_sprite_width(t_cub *cl, t_sprite *sprite) { + sprite->spritewidth = abs((int)(cl->wlist->x_size / (sprite->transformy))); + sprite->drawstartx = -sprite->spritewidth / 2 + sprite->spritescreenx; + if(sprite->drawstartx < 0) + sprite->drawstartx = 0; + sprite->drawendx = sprite->spritewidth / 2 + sprite->spritescreenx; + if(sprite->drawendx >= (int)cl->wlist->x_size) sprite->drawendx = cl->wlist->x_size - 1; } void @@ -69,11 +82,12 @@ void while (i < cl->mlist->sprite_nbr) { sprite = cl->sprites[i]; - sprite.spritex = sprite.s_pos_x - cl->plist->pos_x; - sprite.spritey = sprite.s_pos_y - cl->plist->pos_y; - sprite.invdet = 1.0 / (cl->plist.plane_x * cl->plist->dir_y - cl->plist->dir_x * cl->plist->plane_y); //required for correct matrix multiplication + sprite.spritey = sprite.s_pos_x - cl->plist->pos_x; + sprite.spritex = sprite.s_pos_y - cl->plist->pos_y; + sprite.invdet = 1.0 / (cl->plist->plane_x * cl->plist->dir_y - cl->plist->dir_x * cl->plist->plane_y); sprite.transformx = sprite.invdet * (cl->plist->dir_y * sprite.spritex- cl->plist->dir_x* sprite.spritey); - sprite.transformy = invDet * (-cl->plist->plane_y* sprite.spritex + cl->plist->plane_x * sprite.spritey); + sprite.transformy = sprite.invdet * (-cl->plist->plane_y* sprite.spritex + cl->plist->plane_x * sprite.spritey); + sprite.spritescreenx = (int)(cl->wlist->x_size / 2) * (1 + sprite.transformx / sprite.transformy); ft_sprite_height(cl, &sprite); ft_sprite_width(cl, &sprite); ft_draw_sprite(cl, &sprite); -- cgit v1.2.3 From 7d50a78eed9c6cfce3288c471b9f3e6367bfe040 Mon Sep 17 00:00:00 2001 From: salaaad2 Date: Mon, 9 Mar 2020 17:50:45 +0100 Subject: gang --- src/ft_draw_sprite.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) (limited to 'src/ft_draw_sprite.c') diff --git a/src/ft_draw_sprite.c b/src/ft_draw_sprite.c index e412998..ffc2d50 100644 --- a/src/ft_draw_sprite.c +++ b/src/ft_draw_sprite.c @@ -82,8 +82,8 @@ void while (i < cl->mlist->sprite_nbr) { sprite = cl->sprites[i]; - sprite.spritey = sprite.s_pos_x - cl->plist->pos_x; - sprite.spritex = sprite.s_pos_y - cl->plist->pos_y; + sprite.spritey = sprite.s_pos_x - (cl->plist->pos_x - 0.5); + sprite.spritex = sprite.s_pos_y - (cl->plist->pos_y - 0.5); sprite.invdet = 1.0 / (cl->plist->plane_x * cl->plist->dir_y - cl->plist->dir_x * cl->plist->plane_y); sprite.transformx = sprite.invdet * (cl->plist->dir_y * sprite.spritex- cl->plist->dir_x* sprite.spritey); sprite.transformy = sprite.invdet * (-cl->plist->plane_y* sprite.spritex + cl->plist->plane_x * sprite.spritey); @@ -101,7 +101,6 @@ void int32_t d; sprite->x = sprite->drawstartx; - printf("y : [%d] [%d] x : [%d] [%d] x : [%f] y : [%f]\n", sprite->drawstarty, sprite->drawendy, sprite->drawstartx, sprite->drawendx, cl->plist->dir_x, cl->plist->dir_y); while (sprite->x < sprite->drawendx) { sprite->tex_x = (int32_t)((sprite->x - (-sprite->spritewidth / 2 + @@ -114,7 +113,7 @@ void sprite->tex_y = ((d * cl->tlist[4].img_h / 2) / sprite->spriteheight) / 128; if (cl->tlist[4].ptr[sprite->tex_x * 4 + 4 * cl->tlist[4].img_h * sprite->tex_y] - && cl->rlist.wall_dist_tab[sprite->x] > cl->rlist.wall_dist) + && cl->rlist.wall_dist_tab[sprite->x] > sprite->transformy) { cl->img.ptr[sprite->x * 4 + (sprite->y * cl->img.sizeline)] = cl->tlist[4].ptr[sprite->tex_x * 4 + 4 * cl->tlist[4].img_h * sprite->tex_y]; @@ -130,6 +129,3 @@ void sprite->x++; } } - - -/* printf("[%f] [%f] x [%f] y [%f] [%d]\n", sprite.spritex, sprite.spritey, sprite.transformx, sprite.transformy, i); */ -- cgit v1.2.3