112 lines
2.9 KiB
C++
112 lines
2.9 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "CoreTypes.h"
|
|
#include "Math/Vector2D.h"
|
|
#include "Math/Vector4.h"
|
|
#include "CoreMinimal.h"
|
|
#include "Misc/Guid.h"
|
|
//#include "Math/Vector2D.h"
|
|
//#include "Math/Vector4.h"
|
|
|
|
namespace Lightmass
|
|
{
|
|
|
|
enum { MAX_TEXCOORDS=4 };
|
|
|
|
#if !PLATFORM_MAC && !PLATFORM_LINUX
|
|
#pragma pack(push, 1)
|
|
#endif
|
|
|
|
//----------------------------------------------------------------------------
|
|
// Helper definitions
|
|
//----------------------------------------------------------------------------
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
// Mesh export file header
|
|
//----------------------------------------------------------------------------
|
|
struct FMeshFileHeader
|
|
{
|
|
/** FourCC cookie: 'MESH' */
|
|
uint32 Cookie;
|
|
FGuid FormatVersion;
|
|
|
|
// These structs follow immediately after this struct.
|
|
//
|
|
// FBaseMeshData BaseMeshData;
|
|
// FStaticMeshData MeshData;
|
|
// StaticMeshLODAggregate MeshLODs[ MeshData.NumLODs ];
|
|
//
|
|
// Where:
|
|
//
|
|
// struct StaticMeshLODAggregate
|
|
// {
|
|
// FStaticMeshLODData LOD;
|
|
// FStaticMeshElementData MeshElements[ LOD.NumElements ];
|
|
// UINT16 Indices[ LOD.NumIndices ];
|
|
// FStaticMeshVertex Vertices[ LOD.NumVertices ];
|
|
// };
|
|
};
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
// Base mesh
|
|
//----------------------------------------------------------------------------
|
|
struct FBaseMeshData
|
|
{
|
|
FGuid Guid;
|
|
};
|
|
|
|
//----------------------------------------------------------------------------
|
|
// Static mesh, builds upon FBaseMeshData
|
|
//----------------------------------------------------------------------------
|
|
struct FStaticMeshData
|
|
{
|
|
uint32 LightmapCoordinateIndex;
|
|
uint32 NumLODs;
|
|
};
|
|
|
|
//----------------------------------------------------------------------------
|
|
// Static mesh LOD
|
|
//----------------------------------------------------------------------------
|
|
struct FStaticMeshLODData
|
|
{
|
|
uint32 NumElements;
|
|
/** Total number of triangles for all elements in the LOD. */
|
|
uint32 NumTriangles;
|
|
/** Total number of indices in the LOD. */
|
|
uint32 NumIndices;
|
|
/** Total number of vertices in the LOD. */
|
|
uint32 NumVertices;
|
|
};
|
|
|
|
//----------------------------------------------------------------------------
|
|
// Static mesh element
|
|
//----------------------------------------------------------------------------
|
|
struct FStaticMeshElementData
|
|
{
|
|
uint32 FirstIndex;
|
|
uint32 NumTriangles;
|
|
uint32 bEnableShadowCasting : 1;
|
|
};
|
|
|
|
//----------------------------------------------------------------------------
|
|
// Static mesh vertex
|
|
//----------------------------------------------------------------------------
|
|
struct FStaticMeshVertex
|
|
{
|
|
FVector4f Position;
|
|
FVector4f TangentX;
|
|
FVector4f TangentY;
|
|
FVector4f TangentZ;
|
|
FVector2f UVs[MAX_TEXCOORDS];
|
|
};
|
|
|
|
#if !PLATFORM_MAC && !PLATFORM_LINUX
|
|
#pragma pack(pop)
|
|
#endif
|
|
|
|
} // namespace Lightmass
|