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)
|
inline void texture_manager_add_texture(texture_manager_t *texture_manager, texture_t *texture)
|
||||||
{
|
{
|
||||||
linked_list_push_back(&texture_manager->textures, 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*));
|
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)
|
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 */
|
@texture_manager Pointer to a texture manager */
|
||||||
void texture_manager_load_builtin_textures(texture_manager_t *);
|
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_add_texture(): Add a texture in the texture manager
|
||||||
|
|
||||||
@texture_manager Pointer to a texture manager
|
@texture_manager Pointer to a texture manager
|
||||||
|
|
Loading…
Reference in New Issue