Files
2025-05-18 13:04:45 +08:00

35 lines
1.5 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "MuR/Platform.h"
namespace mu
{
class FMesh;
class FImage;
class FLayout;
/** Generate a classification list for which vertex of pBase is fully contained in pClipMesh */
extern void MeshClipMeshClassifyVertices(TBitArray<>& VertexInClipMesh, const FMesh* Base, const FMesh* ClipMesh);
/** */
extern void MeshClipWithMesh(FMesh* Result, const FMesh* Base, const FMesh* ClipMesh, bool& bOutSuccess);
/** Generate a mask mesh with the faces of the base mesh inside the clip mesh. */
extern void MeshMaskClipMesh(FMesh* Result, const FMesh* Base, const FMesh* ClipMesh, bool& bOutSuccess);
/** Generate a mask mesh with the faces of the base mesh that have all 3 vertices marked in the given mask. */
extern void MakeMeshMaskFromUVMask(FMesh* Result, const FMesh* Base, const FMesh* BaseForUVs, const FImage* Mask, uint8 LayoutIndex, bool& bOutSuccess);
/** Generate a mask mesh with the faces of the base mesh matching the fragment. */
extern void MeshMaskDiff(FMesh* Result, const FMesh* Base, const FMesh* Fragment, bool& bOutSuccess);
/** Generate a mask mesh with the faces of the base mesh that have all 3 vertices inside any block of the given layout. */
extern void MakeMeshMaskFromLayout(FMesh* Result, const FMesh* Base, const FMesh* BaseForUVs, const FLayout* Mask, uint8 LayoutIndex, bool& bOutSuccess);
/** Return true if the mesh is closed. Usually used to validate clipping meshes. */
extern bool IsMeshClosed(const FMesh* Mesh);
}