Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
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;
	}
}