Ading function for texture manager.
This commit is contained in:
parent
bc98f5040f
commit
61636892c5
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue