ModelingTools: Initialize triangle groups at the call site and disable compute of group mappings unless requested.

#rb ryan.schmidt
#rnx
#jira UE-137576
#preflight 61de464fb97cb66880a054df

#ROBOMERGE-AUTHOR: lonnie.li
#ROBOMERGE-SOURCE: CL 18587641 in //UE5/Release-5.0/... via CL 18587793 via CL 18587824
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Test -> Main) (v899-18417669)

[CL 18587891 by lonnie li in ue5-main branch]
This commit is contained in:
lonnie li
2022-01-12 14:28:31 -05:00
parent 6b637bfdaa
commit c71e1de0f9
2 changed files with 24 additions and 13 deletions
@@ -1929,11 +1929,7 @@ void FDynamicMeshEditor::AppendTriangles(const FDynamicMesh3* SourceMesh, const
ResultOut.Reset();
IndexMaps.Initialize(Mesh);
if (SourceMesh->HasTriangleGroups())
{
Mesh->EnableTriangleGroups();
}
int DefaultGroupID = FDynamicMesh3::InvalidID;
for (int SourceTriangleID : SourceTriangles)
{
check(SourceMesh->IsTriangle(SourceTriangleID));
@@ -1946,19 +1942,33 @@ void FDynamicMeshEditor::AppendTriangles(const FDynamicMesh3* SourceMesh, const
// FindOrCreateDuplicateGroup
int NewGroupID = FDynamicMesh3::InvalidID;
if (SourceMesh->HasTriangleGroups())
if (Mesh->HasTriangleGroups())
{
int SourceGroupID = SourceMesh->GetTriangleGroup(SourceTriangleID);
if (SourceGroupID >= 0)
if (SourceMesh->HasTriangleGroups())
{
NewGroupID = IndexMaps.GetNewGroup(SourceGroupID);
if (NewGroupID == IndexMaps.InvalidID())
int SourceGroupID = SourceMesh->GetTriangleGroup(SourceTriangleID);
if (SourceGroupID >= 0)
{
NewGroupID = Mesh->AllocateTriangleGroup();
IndexMaps.SetGroup(SourceGroupID, NewGroupID);
ResultOut.NewGroups.Add(NewGroupID);
NewGroupID = IndexMaps.GetNewGroup(SourceGroupID);
if (NewGroupID == IndexMaps.InvalidID())
{
NewGroupID = Mesh->AllocateTriangleGroup();
IndexMaps.SetGroup(SourceGroupID, NewGroupID);
ResultOut.NewGroups.Add(NewGroupID);
}
}
}
else
{
// If the source mesh does not have triangle groups, but the destination
// mesh does, create a default group for all triangles.
if (DefaultGroupID == FDynamicMesh3::InvalidID)
{
DefaultGroupID = Mesh->AllocateTriangleGroup();
ResultOut.NewGroups.Add(DefaultGroupID);
}
NewGroupID = DefaultGroupID;
}
}
// FindOrCreateDuplicateVertex