#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, Pack_File* f) = 0; virtual void unload(Asset* a) = 0; }; struct Asset_Arena { Pack* p; Arena* a, * s; 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