Generalized assets data.
This commit is contained in:
parent
d0e2dc99d2
commit
a8aacc04ef
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
Loading…
Reference in New Issue