Files
UnrealEngineUWP/Engine/Plugins/Experimental/MeshModelingToolset/Source/MeshModelingTools/Private/Properties/MeshMaterialProperties.cpp

64 lines
1.8 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "Properties/MeshMaterialProperties.h"
#include "DynamicMesh/DynamicMesh3.h"
#include "DynamicMesh/DynamicMeshAttributeSet.h"
#include "DynamicMesh/MeshNormals.h"
#include "Components/DynamicMeshComponent.h"
#include "Materials/MaterialInstanceDynamic.h"
#define LOCTEXT_NAMESPACE "UMeshMaterialProperites"
UNewMeshMaterialProperties::UNewMeshMaterialProperties()
{
Material = CreateDefaultSubobject<UMaterialInterface>(TEXT("MATERIAL"));
}
void UExistingMeshMaterialProperties::RestoreProperties(UInteractiveTool* RestoreToTool, const FString& CacheIdentifier)
{
Super::RestoreProperties(RestoreToTool, CacheIdentifier);
Setup();
}
void UExistingMeshMaterialProperties::Setup()
{
UMaterial* CheckerMaterialBase = LoadObject<UMaterial>(nullptr, TEXT("/MeshModelingToolset/Materials/CheckerMaterial"));
if (CheckerMaterialBase != nullptr)
{
CheckerMaterial = UMaterialInstanceDynamic::Create(CheckerMaterialBase, NULL);
if (CheckerMaterial != nullptr)
{
CheckerMaterial->SetScalarParameterValue("Density", CheckerDensity);
CheckerMaterial->SetScalarParameterValue("UVChannel", (float)UVChannel);
}
}
}
void UExistingMeshMaterialProperties::UpdateMaterials()
{
if (CheckerMaterial != nullptr)
{
CheckerMaterial->SetScalarParameterValue("Density", CheckerDensity);
CheckerMaterial->SetScalarParameterValue("UVChannel", (float)UVChannel);
}
}
UMaterialInterface* UExistingMeshMaterialProperties::GetActiveOverrideMaterial() const
{
if (MaterialMode == ESetMeshMaterialMode::Checkerboard && CheckerMaterial != nullptr)
{
return CheckerMaterial;
}
if (MaterialMode == ESetMeshMaterialMode::Override && OverrideMaterial != nullptr)
{
return OverrideMaterial;
}
return nullptr;
}
#undef LOCTEXT_NAMESPACE