Files
UnrealEngine/Engine/Source/Programs/UnrealLightmass/Private/ImportExport/Mesh.cpp
2025-05-18 13:04:45 +08:00

69 lines
1.9 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "Mesh.h"
#include "Importer.h"
#include "UnrealLightmass.h"
namespace Lightmass
{
//----------------------------------------------------------------------------
// Mesh base class
//----------------------------------------------------------------------------
void FBaseMesh::Import( FLightmassImporter& Importer )
{
Importer.ImportData( (FBaseMeshData*)this );
}
//----------------------------------------------------------------------------
// Static mesh class
//----------------------------------------------------------------------------
void FStaticMesh::Import( FLightmassImporter& Importer )
{
// import super class
FBaseMesh::Import(Importer);
// import the shared data structure
Importer.ImportData( (FStaticMeshData*)this );
UE_LOG(LogLightmass, Verbose, TEXT("Importing a static mesh with %d LODs [%s]"), NumLODs, *Guid.ToString());
checkf(NumLODs > 0, TEXT("Imported a static mesh with 0 LODs. Uhoh"));
// create the LODs
LODs.Empty(NumLODs);
// import each of the LODs
for (uint32 LODIndex = 0; LODIndex < NumLODs; LODIndex++)
{
FStaticMeshLOD* LOD = new(LODs) FStaticMeshLOD;
// import each LOD separately
LOD->Import(Importer);
}
}
//----------------------------------------------------------------------------
// Static mesh LOD class
//----------------------------------------------------------------------------
void FStaticMeshLOD::Import( class FLightmassImporter& Importer )
{
// import the shared data structure
Importer.ImportData((FStaticMeshLODData*)this);
Importer.ImportArray(Elements, NumElements);
for (uint32 MeshElementIndex = 0; MeshElementIndex < NumElements; MeshElementIndex++)
{
// Only triangle lists are supported for now
check(Elements[MeshElementIndex].FirstIndex % 3 == 0);
}
Importer.ImportArray(Indices, NumIndices);
Importer.ImportArray(Vertices, NumVertices);
}
}