#ifndef ASSET_MANAGER_H #define ASSET_MANAGER_H #include "materialsystem/imaterialsystem.h" #include "worldrender.h" #include "datamap.h" #include "materials.h" #include "tier1/utlstring.h" struct FunnyMaterial_t { CUtlString m_szName; IShader *m_pShaders; IMaterial *m_pMaterial; CBaseMaterial *m_pLayout; }; struct FunnyModel_t { CUtlString m_szName; IMesh *m_pMesh; FunnyMaterial_t *m_pFunnyMaterial; CUtlString m_szParentName; }; class IAssetManager { public: virtual uint32_t LoadModel( const char *szName ) = 0; virtual uint32_t LoadMaterial( const char *szName ) = 0; virtual FunnyModel_t *GetModelByIndex( uint32_t uIndex ) = 0; virtual FunnyMaterial_t *GetMaterialByIndex( uint32_t uIndex ) = 0; virtual void UnrefModel( uint32_t uIndex ) = 0; virtual void UnrefMaterial( uint32_t uIndex ) = 0; }; extern IAssetManager *g_pAssetManager; #endif