DynamicMesh: Fix the conformal solve functionality in the DynamicMeshUVEditor when setting using existing UV flag to true. Old code was clearing UVs before processing and incorrectly tracking relationships between the internal solver and the final overlay.

#rb David.Hill
#rnx
#jira UE-131578

#ROBOMERGE-AUTHOR: nathan.mitchell
#ROBOMERGE-SOURCE: CL 17819290 in //UE5/Release-5.0/... via CL 17819303
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v881-17767770)
#ROBOMERGE[STARSHIP]: UE5-Main

[CL 17819315 by nathan mitchell in ue5-release-engine-test branch]
This commit is contained in:
nathan mitchell
2021-10-14 14:14:37 -04:00
parent ffca5e1275
commit ae4f4f4077
@@ -527,6 +527,11 @@ bool FDynamicMeshUVEditor::SetTriangleUVsFromFreeBoundaryConformal(const TArray<
if (ensure(UVOverlay) == false) return false;
if (Triangles.Num() == 0) return false;
if (!bUseExistingUVTopology)
{
ResetUVs(Triangles);
}
FDynamicMesh3 Submesh(EMeshComponents::None);
TMap<int32, int32> BaseToSubmeshV;
TArray<int32> SubmeshToBaseV;
@@ -548,7 +553,7 @@ bool FDynamicMeshUVEditor::SetTriangleUVsFromFreeBoundaryConformal(const TArray<
FVector3d Position = Mesh->GetVertex((bUseExistingUVTopology) ? UVOverlay->GetParentVertex(Triangle[j]) : Triangle[j]);
int32 NewVtxID = Submesh.AppendVertex(Position);
check(NewVtxID == SubmeshToBaseV.Num());
SubmeshToBaseV.Add(NewVtxID);
SubmeshToBaseV.Add(Triangle[j]);
BaseToSubmeshV.Add(Triangle[j], NewVtxID);
NewTriangle[j] = NewVtxID;
}
@@ -620,9 +625,6 @@ bool FDynamicMeshUVEditor::SetTriangleUVsFromFreeBoundaryConformal(const TArray<
}
else
{
// clear existing triangles
ResetUVs(Triangles);
// copy back to target UVOverlay
TArray<int32> VtxElementIDs;
TArray<int32> NewElementIDs;