Exemple #1
0
HRESULT MeshEntity::CreateMeshFromFile_Serial(RenderDevicePtr pDev, const char* sFileName)
{
	// Load Texture sequentially
	asset_ptr<MeshEntity> my_asset(this);
	CMeshLoader loader_( my_asset, sFileName );
	CMeshLoader* pLoader = &loader_;
	CMeshProcessor processor_( my_asset );
	CMeshProcessor* pProcessor = &processor_;

	pProcessor->m_pDevice = pDev;
	
	void* pLocalData;
	int Bytes;
	if( SUCCEEDED(pLoader->Load()) && 
		SUCCEEDED(pLoader->Decompress( &pLocalData, &Bytes )) && 
		SUCCEEDED(pProcessor->Process( pLocalData, Bytes )) && 
		SUCCEEDED(pProcessor->LockDeviceObject()) && 
		SUCCEEDED(pProcessor->CopyToResource()) && 
		SUCCEEDED(pProcessor->UnLockDeviceObject()) )
	{
		m_bIsValid = true;
	}
	else
	{
		pProcessor->SetResourceError();
	}
	pProcessor->Destroy();
	pLoader->Destroy();
	return S_OK;
}