Files
UnrealEngineUWP/Engine/Plugins/Runtime/MeshModelingToolset/Source/ModelingComponents/Private/PropertySets/PolygroupLayersProperties.cpp
michael balzer a49c74b915 MeshModelingToolset: Move ModelingOperators and ModelingOperatorsEditorOnly modules out of experimental plugin
#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]
2021-10-28 19:47:45 -04:00

75 lines
1.9 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "PropertySets/PolygroupLayersProperties.h"
#include "DynamicMesh/DynamicMesh3.h"
#include "DynamicMesh/DynamicMeshAttributeSet.h"
#include "Polygroups/PolygroupUtil.h"
using namespace UE::Geometry;
void UPolygroupLayersProperties::InitializeGroupLayers(const FDynamicMesh3* Mesh)
{
GroupLayersList.Reset();
GroupLayersList.Add(TEXT("Default")); // always have standard group
if (Mesh->Attributes())
{
for (int32 k = 0; k < Mesh->Attributes()->NumPolygroupLayers(); k++)
{
FName Name = Mesh->Attributes()->GetPolygroupLayer(k)->GetName();
GroupLayersList.Add(Name.ToString());
}
}
if (GroupLayersList.Contains(ActiveGroupLayer.ToString()) == false) // discard restored value if it doesn't apply
{
ActiveGroupLayer = FName(GroupLayersList[0]);
}
}
void UPolygroupLayersProperties::InitializeGroupLayers(const TSet<FName>& LayerNames)
{
GroupLayersList.Reset();
GroupLayersList.Add(TEXT("Default")); // always have standard group
for (const FName& Name : LayerNames)
{
GroupLayersList.Add(Name.ToString());
}
if (GroupLayersList.Contains(ActiveGroupLayer.ToString()) == false) // discard restored value if it doesn't apply
{
ActiveGroupLayer = FName(GroupLayersList[0]);
}
}
bool UPolygroupLayersProperties::HasSelectedPolygroup() const
{
return ActiveGroupLayer != FName(GroupLayersList[0]);
}
void UPolygroupLayersProperties::SetSelectedFromPolygroupIndex(int32 Index)
{
if (Index < 0)
{
ActiveGroupLayer = FName(GroupLayersList[0]);
}
else
{
ActiveGroupLayer = FName(GroupLayersList[Index+1]);
}
}
UE::Geometry::FPolygroupLayer UPolygroupLayersProperties::GetSelectedLayer(const FDynamicMesh3& FromMesh)
{
if (HasSelectedPolygroup() == false)
{
return FPolygroupLayer::Default();
}
else
{
int32 Index = UE::Geometry::FindPolygroupLayerIndexByName(FromMesh, ActiveGroupLayer);
return (Index >= 0) ? FPolygroupLayer::Layer(Index) : FPolygroupLayer::Default();
}
}