You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
- Add new UModelingComponentsSettings which has settings for in-tool preview mesh rendering and emitted new mesh objects - Add ToolSetupUtil::ApplyRenderingConfigurationToPreview() utility functions, most Tools now call this function to configure UPreviewMesh/DynamicMeshComponents they create for mesh editing preview rendering (uses Settings to make setup decisions like RT on/off) - add PreviewMesh::NotifyWorldPathTracedOutputInvalidated(), forces invalidation of current path tracing result, call from various PreviewMesh internal functions - UCreateMeshObjectTypeProperties::ConfigureCreateMeshObjectParams() now configures new-mesh-object parameters with RT and Collision from UModelingComponentsSettings - DynamicMeshComponent now defaults to raytracing-enabled, usage in Editor is controlled by above settings #rb rinat.abdrashitov #rnx #jira none #preflight 615f376bf0ee840001cab0fc #ROBOMERGE-AUTHOR: ryan.schmidt #ROBOMERGE-SOURCE: CL 17753416 in //UE5/Release-5.0/... via CL 17758212 #ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v879-17706426) #ROBOMERGE[STARSHIP]: UE5-Main [CL 17758266 by ryan schmidt in ue5-release-engine-test branch]
54 lines
2.1 KiB
C++
54 lines
2.1 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "ToolActivities/PolyEditActivityUtil.h"
|
|
|
|
#include "Drawing/PolyEditPreviewMesh.h"
|
|
#include "InteractiveTool.h"
|
|
#include "Materials/MaterialInstanceDynamic.h"
|
|
#include "Materials/MaterialInterface.h"
|
|
#include "MeshOpPreviewHelpers.h"
|
|
#include "ToolActivities/PolyEditActivityContext.h"
|
|
#include "ToolSetupUtil.h"
|
|
|
|
using namespace UE::Geometry;
|
|
|
|
UPolyEditPreviewMesh* PolyEditActivityUtil::CreatePolyEditPreviewMesh(UInteractiveTool& Tool, const UPolyEditActivityContext& ActivityContext)
|
|
{
|
|
UPolyEditPreviewMesh* EditPreview = NewObject<UPolyEditPreviewMesh>(&Tool);
|
|
EditPreview->CreateInWorld(Tool.GetWorld(), FTransform::Identity);
|
|
ToolSetupUtil::ApplyRenderingConfigurationToPreview(EditPreview, nullptr);
|
|
UpdatePolyEditPreviewMaterials(Tool, ActivityContext, *EditPreview, EPreviewMaterialType::PreviewMaterial);
|
|
EditPreview->EnableWireframe(true);
|
|
|
|
return EditPreview;
|
|
}
|
|
|
|
void PolyEditActivityUtil::UpdatePolyEditPreviewMaterials(UInteractiveTool& Tool, const UPolyEditActivityContext& ActivityContext,
|
|
UPolyEditPreviewMesh& EditPreview, EPreviewMaterialType MaterialType)
|
|
{
|
|
if (MaterialType == EPreviewMaterialType::SourceMaterials)
|
|
{
|
|
TArray<UMaterialInterface*> Materials;
|
|
ActivityContext.Preview->PreviewMesh->GetMaterials(Materials);
|
|
|
|
EditPreview.ClearOverrideRenderMaterial();
|
|
EditPreview.SetMaterials(Materials);
|
|
}
|
|
else if (MaterialType == EPreviewMaterialType::PreviewMaterial)
|
|
{
|
|
EditPreview.ClearOverrideRenderMaterial();
|
|
EditPreview.SetMaterial(
|
|
ToolSetupUtil::GetSelectionMaterial(FLinearColor(0.8f, 0.75f, 0.0f), Tool.GetToolManager()));
|
|
}
|
|
else if (MaterialType == EPreviewMaterialType::UVMaterial)
|
|
{
|
|
UMaterial* CheckerMaterialBase = LoadObject<UMaterial>(nullptr, TEXT("/MeshModelingToolsetExp/Materials/CheckerMaterial"));
|
|
if (CheckerMaterialBase != nullptr)
|
|
{
|
|
UMaterialInstanceDynamic* CheckerMaterial = UMaterialInstanceDynamic::Create(CheckerMaterialBase, NULL);
|
|
CheckerMaterial->SetScalarParameterValue("Density", 1);
|
|
EditPreview.SetOverrideRenderMaterial(CheckerMaterial);
|
|
}
|
|
}
|
|
}
|