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; 
}