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; }