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

@ -93,28 +93,33 @@ void platform_input() {
void debug_draw_spritesheet() {
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;
if(nk_button_label(game_ui, "Prev")){
spritesheet_frame_id-=10;
spritesheet_frame_id-=100;
}
if(nk_button_label(game_ui, "Next")){
spritesheet_frame_id+=10;
spritesheet_frame_id+=100;
}
static bool loaded = false;
static struct nk_image nuclear_image;
static int max_frames = 0;
if (!loaded) {
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);
for(size_t i = 0; i < 10; i++) {
nk_layout_row_static(game_ui, 32, 32, (int)(nk_window_get_size(game_ui).x / 32.f) -1);
for(int i = 0; i < 100; i++) {
int frame = spritesheet_frame_id + i;
frame %= max_frames;
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;
nuclear_image.region[0] = (nk_short)ox;