#include "materials.h" #include "tier0/lib.h" BEGIN_DATADESC_NOBASE(CBaseMaterial) END_DATADESC() static CFunnyMaterialRegistry *s_pMaterials = NULL; CFunnyMaterialRegistry::CFunnyMaterialRegistry( InstantiateMaterialFn fn, const char *szName ) { m_CreateFn = fn; m_szName = szName; m_pNext = s_pMaterials; s_pMaterials = this; } CBaseMaterial *CreateMaterial( const char *szName ) { CFunnyMaterialRegistry *pRegistry = s_pMaterials; while (pRegistry) { if (!V_strcmp(szName, pRegistry->m_szName)) return pRegistry->m_CreateFn(); pRegistry = pRegistry->m_pNext; } return NULL; }