CResource* CResourceManager::Load(CString strAbsPath, CString strResourceName) { for(auto pResource : m_resources) { if(pResource->GetName() == strResourceName) { if(pResource->HasChanged()) { pResource->Stop(); RemoveResource(pResource); delete pResource; break; } else return pResource; } } CResource* loadResource = new CResource(strAbsPath, strResourceName); if(!loadResource->IsLoaded()) { CLogFile::Printf("Loading of resource '%s' failed\n", strResourceName.Get()); SAFE_DELETE(loadResource); } else { CLogFile::Printf("Resource loaded (%s)", strResourceName.Get()); loadResource->SetCreateVMCallback(m_fnCreateVM); AddResource(loadResource); return loadResource; } return 0; }
void CResource::AddDependentHash( const Uint a_Hash ) { CResource* resource = CResourceManager::GetInstance()->GetResource( a_Hash ); m_DependentResources.insert( std::pair<Uint, CResource*>( a_Hash, resource ) ); if ( resource == NULL ) { ++m_DependenciesLeft; } else if ( resource->IsLoaded() == false ) { ++m_DependenciesLeft; } }