#ifndef RES_H #define RES_H #include "common.h" typedef struct { Shader sdr; map_t(int) uniforms; } FunShader; typedef enum { ASSET_TAG_INVALID, ASSET_TAG_MODEL, ASSET_TAG_TEXTURE, ASSET_TAG_SOUND, ASSET_TAG_FONT, } AssetTag; typedef struct { AssetTag tag; union { Model mdl; Texture tex; Sound snd; Font fnt; }; char *path; u32 path_strlen, ref_cnt; bool loaded; } Asset; void res_init(void); void res_exit(void); void res_update(void); char** asset_type_keys(AssetTag tag, int *count); Asset* asset_get(cstr key); FunShader* shader_get(cstr key); void fun_shader_create(cstr key, cstr vpath, cstr fpath); void fun_shader_delete(FunShader*); int fun_shader_uniform(cstr skey, cstr ukey); #endif