#include "assetmgr.h" #include "tier2/ifilesystem.h" #include "tier2/fileformats/json.h" class CAssetManager: public IAssetManager { public: virtual FunnyModel_t *LoadModel( const char *szName ) override; virtual FunnyMaterial_t *LoadMaterial( const char *szName ) override; virtual void UnrefModel( FunnyModel_t *pModel ) override; virtual void UnrefMaterial( FunnyMaterial_t *pModel ) override; CUtlVector m_models; CUtlVector m_modelUsages; CUtlVector m_materials; CUtlVector m_materialUsages; FunnyModel_t *LoadModelFromParams( const char *szMesh, const char *szMaterial ); }; FunnyModel_t *CAssetManager::LoadModel( const char *szName ) { IFileHandle *pHandle = filesystem->Open(szName, FILEMODE_READ); CUtlString szProperties = filesystem->ReadString(pHandle); V_printf("%s\n", szProperties.GetString()); IJSONValue *pRoot = JSONManager()->ReadString(szProperties); IJSONObject *pMainObject; CUtlString szMeshData; IVertexBuffer *pVertices; switch (pRoot->GetType()) { case JSON_PARAMETER_OBJECT: { pMainObject = pRoot->GetObject(); if (!pMainObject) { V_printf("Failed to load properties\n"); return NULL; } IJSONValue *pMesh = pMainObject->GetValue("mesh"); IJSONValue *pMaterial = pMainObject->GetValue("material"); CUtlString szMesh = pMesh->GetStringValue(); CUtlString szMaterial = pMaterial->GetStringValue(); return NULL; } break; default: return NULL; } } void CAssetManager::UnrefModel( FunnyModel_t *pModel ) { } FunnyMaterial_t *CAssetManager::LoadMaterial( const char *szName ) { FunnyMaterial_t stMaterial = {}; } void CAssetManager::UnrefMaterial( FunnyMaterial_t *pModel ) { } FunnyModel_t *CAssetManager::LoadModelFromParams( const char *szMesh, const char *szMaterial ) { } static CAssetManager s_assetmgr; IAssetManager *g_pAssetManager = &s_assetmgr;