Ading function for texture manager.

This commit is contained in:
Ulysse Cura 2025-03-03 18:22:56 +01:00
parent bc98f5040f
commit 61636892c5
2 changed files with 27 additions and 2 deletions

View File

@ -40,6 +40,21 @@ void texture_manager_load_builtin_textures(texture_manager_t *texture_manager)
}
}
texture_t *texture_manager_load_builtin_texture(texture_manager_t *texture_manager, const char *name)
{
for(size_t i = 0; i < BUILTIN_TEXTURE_COUNT; i++)
{
if(!strcmp(builtin_textures[i].name, name))
{
texture_t *texture = create_texture((image_t *)builtin_textures[i].image, builtin_textures[i].name);
texture_manager_add_texture(texture_manager, texture);
return texture;
}
}
return NULL;
}
inline void texture_manager_add_texture(texture_manager_t *texture_manager, texture_t *texture)
{
linked_list_push_back(&texture_manager->textures, texture);
@ -52,9 +67,13 @@ static inline bool is_texture_name(elem_t *elem, va_list args)
return !strcmp(((texture_t *)elem->data)->name, va_arg(args, const char*));
}
inline texture_t *texture_manager_get_texture(const texture_manager_t *texture_manager, const char *name)
texture_t *texture_manager_get_texture(const texture_manager_t *texture_manager, const char *name)
{
return linked_list_get_if(&texture_manager->textures, is_texture_name, name);
texture_t *texture = linked_list_get_if(&texture_manager->textures, is_texture_name, name);
if(texture) return texture;
texture = texture_manager_load_builtin_texture(texture_manager, name);
return texture;
}
inline void texture_manager_remove_texture(texture_manager_t *texture_manager, const char *name)

View File

@ -51,6 +51,12 @@ void texture_manager_init(texture_manager_t *);
@texture_manager Pointer to a texture manager */
void texture_manager_load_builtin_textures(texture_manager_t *);
/* texture_manager_load_builtin_texture(): Load texture declared in "textures.h" wich have "name"
@texture_manager Pointer to a texture manager
@name Name of the texture to load */
void texture_manager_load_builtin_texture(texture_manager_t *, const char*);
/* texture_manager_add_texture(): Add a texture in the texture manager
@texture_manager Pointer to a texture manager