Datasmith: Add support for compressed mesh serialization

#preflight 6241ecd2c667881bf4cc5f18
#preflight 62471a74981a2c8eb49113d5

[CL 19589537 by Johan Duparc in ue5-main branch]
This commit is contained in:
Johan Duparc
2022-04-01 11:50:17 -04:00
parent e443b7fcc0
commit 429ce6d695
4 changed files with 172 additions and 28 deletions
@@ -280,15 +280,13 @@ bool FDatasmithMeshExporterImpl::WriteMeshFile( const FDatasmithMeshExporterOpti
int32 LegacyMeshCount = 0;
*Archive << LegacyMeshCount; // the legacy importer expect a mesh count on the first bytes. Just in case a new file would end up parsed by the legacy code...
*Archive << Pack;
OutHash = Pack.Serialize(*Archive);
OutHash = Pack.OutHash;
return !Archive->IsError();
}
TSharedPtr< IDatasmithMeshElement > FDatasmithMeshExporter::ExportToUObject(const TCHAR* Filepath, const TCHAR* Filename, FDatasmithMesh& Mesh, FDatasmithMesh* CollisionMesh, EDSExportLightmapUV LightmapUV, bool NewFormat/*=false */)
TSharedPtr< IDatasmithMeshElement > FDatasmithMeshExporter::ExportToUObject(const TCHAR* Filepath, const TCHAR* Filename, FDatasmithMesh& Mesh, FDatasmithMesh* CollisionMesh, EDSExportLightmapUV LightmapUV, bool NewFormat)
{
FString FullPath( GetMeshFilePath( Filepath, Filename ) );
@@ -306,12 +304,20 @@ TSharedPtr< IDatasmithMeshElement > FDatasmithMeshExporter::ExportToUObject(cons
return ExportedMeshElement;
}
bool FDatasmithMeshExporter::ExportToUObject( TSharedPtr< IDatasmithMeshElement >& MeshElement, const TCHAR* Filepath, FDatasmithMesh& Mesh, FDatasmithMesh* CollisionMesh, EDSExportLightmapUV LightmapUV )
bool FDatasmithMeshExporter::ExportToUObject( TSharedPtr< IDatasmithMeshElement >& MeshElement, const TCHAR* Filepath, FDatasmithMesh& Mesh, FDatasmithMesh* CollisionMesh, EDSExportLightmapUV LightmapUV, bool NewFormat )
{
FString FullPath( GetMeshFilePath( Filepath, MeshElement->GetName() ) );
FDatasmithMeshExporterOptions ExportOptions( FullPath, Mesh, LightmapUV, CollisionMesh );
return LegacyImpl->DoExport( MeshElement, ExportOptions );
if (NewFormat)
{
return Impl->DoExport( MeshElement, ExportOptions );
}
else
{
return LegacyImpl->DoExport( MeshElement, ExportOptions );
}
}
@@ -37,7 +37,7 @@ public:
*
* @return True if export was successful.
*/
bool ExportToUObject( TSharedPtr< IDatasmithMeshElement >& MeshElement, const TCHAR* Filepath, FDatasmithMesh& Mesh, FDatasmithMesh* CollisionMesh, EDSExportLightmapUV LightmapUV );
bool ExportToUObject( TSharedPtr< IDatasmithMeshElement >& MeshElement, const TCHAR* Filepath, FDatasmithMesh& Mesh, FDatasmithMesh* CollisionMesh, EDSExportLightmapUV LightmapUV, bool NewFormat=false );
/**
* @return The error that happened during the last export, if any