www.pudn.com > notWow.rar > ModelMgr.h
#pragma once #include #include #include #include using namespace std; #include "Model.h" #ifndef SAFE_RELEASE #define SAFE_RELEASE(p) { if((p) != NULL) { (p)->Release(); (p) = NULL; } } #endif extern ResLoader ResLdr; class ModelsManager { LPDIRECT3DDEVICE9 m_pd3dDevice; vector m_Models; vector m_RefCounters; map m_NameMap; int m_nModels; int m_MinPos; public: // Initialize the Mgr void Init(LPDIRECT3DDEVICE9 pd3dDevice); // Free the Mgr finally void Free(); // recreate managed-pool resource // this method could only be called after OnDestoty bool OnCreate(); // OnDestory almost like Free() // However,it releases the resource to recreate in OnCreate void OnDestory(); // recreate default-pool resource bool OnReset(); // invalidate default-pool resource void OnLost(); // Add a Model and Init it ModelID AddModel(ObjectID id); ModelID AddModel(const char* name,MODELTYPE type); // Delete a specified Model void Delete(ModelID id); // Get a Model pointer inline IModel* GetModel(ModelID id); }; IModel* ModelsManager::GetModel(ModelID id) { if(id >= 0 && id < m_Models.size()) return m_Models[id]; return NULL; }