Generalized assets data.

This commit is contained in:
Ulysse Cura 2026-08-08 20:15:22 +02:00
parent d0e2dc99d2
commit a8aacc04ef
2 changed files with 7 additions and 17 deletions

View File

@ -29,7 +29,7 @@ int destroy_asset(asset_t *asset)
switch(asset->type)
{
case ASSET_TEXTURE:
SDL_DestroyTexture(asset->data.texture);
SDL_DestroyTexture(asset->data);
break;
default:
@ -197,8 +197,8 @@ static inline int load_texture(asset_t *asset, asset_header_def_t *asset_header_
return EXIT_FAILURE;
}
asset->data.texture = SDL_CreateTextureFromSurface(renderer, tmp_surface);
if(!asset->data.texture)
asset->data = SDL_CreateTextureFromSurface(renderer, tmp_surface);
if(!asset->data)
{
error_printf("Failed to create texture from temporary surface : %s", SDL_GetError());
SDL_DestroySurface(tmp_surface);
@ -292,7 +292,7 @@ int asset_manager_let_go_asset(asset_manager_t *asset_manager, const char *asset
return EXIT_SUCCESS;
}
texture_t *asset_manager_get_texture(asset_manager_t *asset_manager, const char *texture_name)
asset_t *asset_manager_get(asset_manager_t *asset_manager, const char *texture_name)
{
assert("Asset manager cannot be NULL" && asset_manager);
@ -303,13 +303,5 @@ texture_t *asset_manager_get_texture(asset_manager_t *asset_manager, const char
return NULL;
}
asset_t *asset = asset_elem->data;
if(asset->type != ASSET_TEXTURE)
{
error_printf("Asset \"%s\" isn't of type ASSET_TEXTURE.", texture_name);
return NULL;
}
return asset->data.texture;
return asset_elem->data;
}

View File

@ -16,9 +16,7 @@ typedef enum asset_type_t {
typedef struct asset_t {
char *name;
union {
texture_t *texture;
} data;
void *data;
size_t nb_refs;
@ -49,6 +47,6 @@ int asset_manager_collect_garbage(asset_manager_t *asset_manager);
int asset_manager_load_asset(asset_manager_t *asset_manager, const char *asset_name, asset_type_t asset_type);
int asset_manager_let_go_asset(asset_manager_t *asset_manager, const char *asset_name);
texture_t *asset_manager_get_texture(asset_manager_t *asset_manager, const char *asset_name);
asset_t *asset_manager_get(asset_manager_t *asset_manager, const char *asset_name);
#endif // ASSET_MANAGER_H