Files
UnrealEngineUWP/Engine/Plugins/Runtime/MeshModelingToolset/Source/MeshModelingTools/Private/Properties/MeshMaterialProperties.cpp
michael balzer 946b1c5d63 MeshModelingToolset: Cleanup UV Layout tool
#rb jimmy.andrews
#preflight 6196f777880616feb156f236

#ROBOMERGE-AUTHOR: michael.balzer
#ROBOMERGE-SOURCE: CL 18247882 in //UE5/Release-5.0/... via CL 18247896
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)

[CL 18247903 by michael balzer in ue5-release-engine-test branch]
2021-11-18 20:41:17 -05:00

74 lines
2.2 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "Properties/MeshMaterialProperties.h"
#include "DynamicMesh/DynamicMesh3.h"
#include "Materials/MaterialInstanceDynamic.h"
#define LOCTEXT_NAMESPACE "UMeshMaterialProperites"
UNewMeshMaterialProperties::UNewMeshMaterialProperties()
{
Material = CreateDefaultSubobject<UMaterialInterface>(TEXT("MATERIAL"));
}
const TArray<FString>& UExistingMeshMaterialProperties::GetUVChannelNamesFunc() const
{
return UVChannelNamesList;
}
void UExistingMeshMaterialProperties::RestoreProperties(UInteractiveTool* RestoreToTool, const FString& CacheIdentifier)
{
Super::RestoreProperties(RestoreToTool, CacheIdentifier);
Setup();
}
void UExistingMeshMaterialProperties::Setup()
{
UMaterial* CheckerMaterialBase = LoadObject<UMaterial>(nullptr, TEXT("/MeshModelingToolsetExp/Materials/CheckerMaterial"));
if (CheckerMaterialBase != nullptr)
{
CheckerMaterial = UMaterialInstanceDynamic::Create(CheckerMaterialBase, NULL);
if (CheckerMaterial != nullptr)
{
CheckerMaterial->SetScalarParameterValue("Density", CheckerDensity);
CheckerMaterial->SetScalarParameterValue("UVChannel", static_cast<float>(UVChannelNamesList.IndexOfByKey(UVChannel)));
}
}
}
void UExistingMeshMaterialProperties::UpdateMaterials()
{
if (CheckerMaterial != nullptr)
{
CheckerMaterial->SetScalarParameterValue("Density", CheckerDensity);
CheckerMaterial->SetScalarParameterValue("UVChannel", static_cast<float>(UVChannelNamesList.IndexOfByKey(UVChannel)));
}
}
UMaterialInterface* UExistingMeshMaterialProperties::GetActiveOverrideMaterial() const
{
if (MaterialMode == ESetMeshMaterialMode::Checkerboard && CheckerMaterial != nullptr)
{
return CheckerMaterial;
}
if (MaterialMode == ESetMeshMaterialMode::Override && OverrideMaterial != nullptr)
{
return OverrideMaterial;
}
return nullptr;
}
void UExistingMeshMaterialProperties::UpdateUVChannels(int32 UVChannelIndex, const TArray<FString>& UVChannelNames, bool bUpdateSelection)
{
UVChannelNamesList = UVChannelNames;
if (bUpdateSelection)
{
UVChannel = 0 <= UVChannelIndex && UVChannelIndex < UVChannelNames.Num() ? UVChannelNames[UVChannelIndex] : TEXT("");
}
}
#undef LOCTEXT_NAMESPACE