#ifndef asset_hpp #define asset_hpp struct Arena; struct Asset_Loader; struct Pack_File; struct Pack; struct Asset { Asset_Loader* loader; }; struct Asset_Loader { virtual Asset* load( Arena* a, Arena* s, const char* filename, Pack_File* f ) = 0; virtual void unload(Asset* a) = 0; }; struct Asset_Arena { Pack* p; Arena* a; struct Bucket { char* name; Asset* asset; }; Bucket* assets; int max_assets; void init(Arena* arena, const char* pack_name, int max); void destroy(); Asset* load(const char* name); int bucket(const char* name); }; void register_asset_loader( const char* magic, Asset_Loader* loader ); #endif