X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=addon.h;h=7db6588515526217f779ba8e8b7cdbfcc59af58b;hb=fdd41609e59c7df548682b25001f0015dc1acbea;hp=f1d466e10f7938237331c95a5e3d565e7af760e8;hpb=7b1e8a237acc3121c86fab9b5946da6a8d3bf6c4;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/addon.h b/addon.h index f1d466e..7db6588 100644 --- a/addon.h +++ b/addon.h @@ -4,9 +4,20 @@ #include "common.h" #include "vg/vg_steam_ugc.h" #include "workshop_types.h" -#define ADDON_MOUNTED_MAX 128 +#include "vg/vg_mem_pool.h" + +#include "world.h" +#include "player.h" + #define ADDON_FOLDERNAME_MAX 64 +/* total count that we have knowledge of */ +#define ADDON_MOUNTED_MAX 128 + +/* in memory and loaded stuffs */ +#define CACHE_BOARD_MAX 10 +#define CACHE_PLAYER_MAX 10 + typedef struct addon_reg addon_reg; struct { struct addon_reg{ @@ -32,6 +43,35 @@ struct { /* deffered: updates in main thread */ u32 registry_type_counts[k_workshop_file_type_max]; + + /* caches */ + struct cache_board{ + enum cache_board_state{ + k_cache_board_state_none, + k_cache_board_state_loaded, + k_cache_board_state_load_request + } + state; + struct player_board board; + u32 reg_index; + addon_reg *reg_ptr; + + vg_pool_node cachenode; + } + *boards; + vg_pool board_cache; + + struct cache_playermodel{ + enum cache_board_state state; + struct player_model model; + u32 reg_index; + addon_reg *reg_ptr; + vg_pool_node cachenode; + } + *playermodels; + vg_pool playermodel_cache; + + SDL_SpinLock sl_cache; } static addon_system;