ResourceWeakPtr IResourceManager::CloneResource(const Resources::IResource* pSrcRes, xst_castring& strNewName, bool bFullClone) { m_ssTmpName.str( "" ); if( strNewName.empty() ) m_ssTmpName << XST::CTime::GetQPerfTickCount() << "_cloned"; else m_ssTmpName << strNewName; GroupWeakPtr pGroup = this->GetGroup( pSrcRes->GetResourceGroupHandle() ); xst_assert( pGroup != xst_null, "(IResourceManager::CloneResource)" ); ResourcePtr pNewRes = CreateResource( m_ssTmpName.str(), pGroup ); if( pNewRes == xst_null ) { return pNewRes; } /*if( XST_FAILED( PrepareResource( pNewRes ) ) ) { this->DestroyResource( pNewRes->GetResourceGroupHandle() ); return ResourcePtr(); }*/ Resources::IResource* pTmp = pNewRes.GetPtr(); if( XST_FAILED( _CloneResource( &pTmp, pSrcRes, bFullClone ) ) ) { this->DestroyResource( pNewRes->GetResourceGroupHandle() ); return ResourceWeakPtr(); } return pNewRes; }
void CMeshManager::_DestroyMeshBuffers(ResourcePtr pRes) { Resources::CMesh* pMesh = (Resources::CMesh*)pRes.GetPtr(); pMesh->DestroyBuffers(); }