FPS_UINT32 MaterialManager::CreateMaterial( const std::string &p_FileName, MD5_DIGEST &p_Digest ) { MD5_DIGEST Digest; MD5Zero( Digest ); Material *pNewMaterial = new Material( this ); if( pNewMaterial->CreateFromFile( p_FileName ) != FPS_OK ) { std::cout << "[FPS::MaterialManager::CreateMaterial] " "<ERROR> Failed to create material from file" << std::endl; SafeDelete< Material >( pNewMaterial ); return FPS_FAIL; } if( pNewMaterial->GetDigest( Digest ) != FPS_OK ) { std::cout << "[FPS::MaterialManager::CreateMaterial] " "<ERROR> Failed to obtain the material's MD5 digest" << std::endl; SafeDelete< Material >( pNewMaterial ); return FPS_FAIL; } std::pair< std::map< MD5_DIGEST, Material * >::iterator, bool > Insert; Insert = m_Materials.insert( std::pair< MD5_DIGEST, Material * >( Digest, pNewMaterial ) ); if( Insert.second == false ) { std::cout << "[FPS::MaterialManager::CreateMaterial] <INFO> " "Material already exists: " << MD5AsString( Digest ) << std::endl; SafeDelete< Material >( pNewMaterial ); } p_Digest = Digest; return FPS_OK; }