You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
#jira UETOOL-3823 #rb lonnie.li #preflight 617b1aea5794a500014f544a #ROBOMERGE-AUTHOR: michael.balzer #ROBOMERGE-SOURCE: CL 17972239 in //UE5/Release-5.0/... via CL 17972248 #ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v885-17909292) #ROBOMERGE[STARSHIP]: UE5-Main [CL 17972256 by michael balzer in ue5-release-engine-test branch]
82 lines
2.1 KiB
C++
82 lines
2.1 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "Templates/PimplPtr.h"
|
|
#include "Changes/MeshChange.h"
|
|
#include "GeometryBase.h"
|
|
#include "Polygroups/PolygroupSet.h"
|
|
|
|
PREDECLARE_USE_GEOMETRY_CLASS(FDynamicMesh3);
|
|
|
|
/**
|
|
* FDynamicMeshGroupEdit stores a modification of polygroup IDs on a set of triangles
|
|
*/
|
|
class MODELINGCOMPONENTS_API FDynamicMeshGroupEdit
|
|
{
|
|
public:
|
|
/** GroupLayerIndex indicates which AttributeSet PolyGroup layer to apply the change to, or if -1, apply to the default on the Mesh */
|
|
int32 GroupLayerIndex = -1;
|
|
/** IDs of triangles that are modified */
|
|
TArray<int32> Triangles;
|
|
/** Old PolygroupID for each triangle */
|
|
TArray<int32> OldGroups;
|
|
/** New PolygroupID for each triangle */
|
|
TArray<int32> NewGroups;
|
|
|
|
virtual ~FDynamicMeshGroupEdit() {}
|
|
|
|
virtual void ApplyToMesh(FDynamicMesh3* Mesh, bool bRevert);
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
* FDynamicMeshGroupEditBuilder builds up a FDynamicMeshGroupEdit incrementally.
|
|
*/
|
|
class MODELINGCOMPONENTS_API FDynamicMeshGroupEditBuilder
|
|
{
|
|
public:
|
|
FDynamicMeshGroupEditBuilder(FDynamicMesh3* Mesh);
|
|
FDynamicMeshGroupEditBuilder(FDynamicMesh3* Mesh, int32 GroupLayer);
|
|
FDynamicMeshGroupEditBuilder(UE::Geometry::FPolygroupSet* PolygroupSet);
|
|
|
|
TUniquePtr<FDynamicMeshGroupEdit> ExtractResult() { return MoveTemp(Edit); }
|
|
|
|
void SaveTriangle(int32 TriangleID);
|
|
void SaveTriangle(int32 TriangleID, int32 OldGroup, int32 NewGroup);
|
|
|
|
template<typename EnumerableType>
|
|
void SaveTriangles(EnumerableType Enumerable)
|
|
{
|
|
for (int32 tid : Enumerable)
|
|
{
|
|
SaveTriangle(tid);
|
|
}
|
|
}
|
|
|
|
protected:
|
|
TPimplPtr<UE::Geometry::FPolygroupSet> PolygroupSet;
|
|
TUniquePtr<FDynamicMeshGroupEdit> Edit;
|
|
TMap<int32, int32> SavedIndexMap;
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
* FMeshPolygroupChange stores a change to Polygroup IDs on a set of triangles, as a FDynamicMeshGroupEdit.
|
|
*/
|
|
class MODELINGCOMPONENTS_API FMeshPolygroupChange : public FMeshChange
|
|
{
|
|
public:
|
|
FMeshPolygroupChange(TUniquePtr<FDynamicMeshGroupEdit>&& GroupEditIn);
|
|
|
|
TUniquePtr<FDynamicMeshGroupEdit> GroupEdit;
|
|
|
|
virtual void ApplyChangeToMesh(FDynamicMesh3* Mesh, bool bRevert) const override;
|
|
};
|
|
|