fix mem leak and improve spritesheet explorer

efd/v1
Dominik Madarász 2023-02-01 17:26:52 +01:00
parent bdd43143f8
commit 5aa90fc5af
1 changed files with 12 additions and 7 deletions

View File

@ -95,26 +95,31 @@ void debug_draw_spritesheet() {
if (nk_begin(game_ui, "Spritesheet debug", nk_rect(660, 100, 240, 800), if (nk_begin(game_ui, "Spritesheet debug", nk_rect(660, 100, 240, 800),
NK_WINDOW_BORDER|NK_WINDOW_MOVABLE|NK_WINDOW_SCALABLE|NK_WINDOW_TITLE)) NK_WINDOW_BORDER|NK_WINDOW_MOVABLE|NK_WINDOW_SCALABLE|NK_WINDOW_TITLE))
{ {
nk_layout_row_dynamic(game_ui, 0, 1); nk_layout_row_dynamic(game_ui, 0, 2);
static int spritesheet_frame_id = 0; static int spritesheet_frame_id = 0;
if(nk_button_label(game_ui, "Prev")){ if(nk_button_label(game_ui, "Prev")){
spritesheet_frame_id-=10; spritesheet_frame_id-=100;
} }
if(nk_button_label(game_ui, "Next")){ if(nk_button_label(game_ui, "Next")){
spritesheet_frame_id+=10; spritesheet_frame_id+=100;
} }
static bool loaded = false; static bool loaded = false;
static struct nk_image nuclear_image; static struct nk_image nuclear_image;
static int max_frames = 0;
if (!loaded) { if (!loaded) {
nuclear_image = TextureToNuklear(main_sprite_sheet.texture); nuclear_image = TextureToNuklear(main_sprite_sheet.texture);
max_frames = nuclear_image.w*nuclear_image.h / (32*32);
zpl_printf("pica %d\n", max_frames);
loaded = true;
} }
nk_layout_row_static(game_ui, 32, 32, 6); nk_layout_row_static(game_ui, 32, 32, (int)(nk_window_get_size(game_ui).x / 32.f) -1);
for(size_t i = 0; i < 10; i++) { for(int i = 0; i < 100; i++) {
int frame = spritesheet_frame_id + i; int frame = spritesheet_frame_id + i;
frame %= max_frames;
float ox = (frame % main_sprite_sheet.framesWide) * main_sprite_sheet.frameSize.x; float ox = (frame % main_sprite_sheet.framesWide) * main_sprite_sheet.frameSize.x;
float oy = (int)(frame / main_sprite_sheet.framesWide) * main_sprite_sheet.frameSize.y; float oy = (int)(frame / main_sprite_sheet.framesWide) * main_sprite_sheet.frameSize.y;
nuclear_image.region[0] = (nk_short)ox; nuclear_image.region[0] = (nk_short)ox;