#include "ResourceManager.h" #include "Mesh.h" namespace GtpVisibilityPreprocessor { ResourceManager *ResourceManager::sResourceManager = NULL; ResourceManager *ResourceManager::GetSingleton() {Debug << "here1" << endl; if (!sResourceManager) { Debug << "here888" << endl; sResourceManager = new ResourceManager(); } Debug << "here999" << endl; return sResourceManager; } ResourceManager::ResourceManager() { } ResourceManager::~ResourceManager() { cout << "here839 " << mMeshes.size() << endl; MeshMap::iterator mit, mit_end = mMeshes.end(); for (mit = mMeshes.begin(); mit != mMeshes.end(); ++ mit) { cout << "mesh: " << (*mit).first << " " << (*mit).second << endl; DEL_PTR((*mit).second); } } void ResourceManager::DelSingleton() { cout << "here11" << endl; DEL_PTR(sResourceManager); } /*Mesh *ResourceManager::CreateMesh(const string meshName) { Mesh *mesh = new Mesh(); mMeshes[meshName] = mesh; return mesh; }*/ Mesh *ResourceManager::GetOrCreateMesh(const string meshName) {Debug << "here2" << endl; Mesh *mesh = NULL; if (!(mesh = FindMesh(meshName.c_str()))) { mesh = new Mesh(); mMeshes[meshName.c_str()] = mesh; } return mesh; } /* bool ResourceManager::InsertMesh(Mesh *mesh, const string meshName) { Mesh *mesh = NULL; if (FindMesh(meshName.c_str())) return false; mMeshes[meshName.c_str()] = mesh; return mesh; } */ Mesh *ResourceManager::FindMesh(const string &name) const {Debug << "here3" << endl; MeshMap::const_iterator mit = mMeshes.find(name.c_str()); if (mit != mMeshes.end()) { return (*mit).second; } return NULL; } bool ResourceManager::DestroyMesh(const string &meshName) { if (!FindMesh(meshName)) { Mesh *mesh = mMeshes[meshName.c_str()]; mMeshes.erase(meshName.c_str()); DEL_PTR(mesh); return true; } return false; } }