Files
UnrealEngineUWP/Engine/Plugins/Runtime/MeshModelingToolset/Source/ModelingComponents/Private/PropertySets/OnAcceptProperties.cpp
bryan sefcik 50d4fac9e0 Updated ../Engine/Plugins/... to inline gen.cpp files
Before:
3548 unity files
Total CPU Time: 47343.578125 s
Total time in Parallel executor: 494.60 seconds

After:
3445 unity files
Total CPU Time: 46044.671875 s
Total time in Parallel executor: 468.51 seconds

#jira
#preflight 63336159b20e73a098b7f24f

[CL 22218213 by bryan sefcik in ue5-main branch]
2022-09-28 01:06:15 -04:00

82 lines
2.2 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "PropertySets/OnAcceptProperties.h"
#include "GameFramework/Actor.h"
#include "UObject/UObjectGlobals.h"
#include "InteractiveToolManager.h"
#include UE_INLINE_GENERATED_CPP_BY_NAME(OnAcceptProperties)
#define LOCTEXT_NAMESPACE "UOnAcceptHandleSourcesProperties"
void UOnAcceptHandleSourcesPropertiesBase::ApplyMethod(const TArray<AActor*>& Actors, UInteractiveToolManager* ToolManager, const AActor* MustKeepActor)
{
const EHandleSourcesMethod HandleInputs = GetHandleInputs();
// Hide or destroy the sources
bool bKeepSources = HandleInputs == EHandleSourcesMethod::KeepSources;
if (Actors.Num() == 1 && (HandleInputs == EHandleSourcesMethod::KeepFirstSource || HandleInputs == EHandleSourcesMethod::KeepLastSource))
{
// if there's only one actor, keeping any source == keeping all sources
bKeepSources = true;
}
if (!bKeepSources)
{
bool bDelete = HandleInputs == EHandleSourcesMethod::DeleteSources
|| HandleInputs == EHandleSourcesMethod::KeepFirstSource
|| HandleInputs == EHandleSourcesMethod::KeepLastSource;
if (bDelete)
{
ToolManager->BeginUndoTransaction(LOCTEXT("RemoveSources", "Remove Inputs"));
}
else
{
#if WITH_EDITOR
ToolManager->BeginUndoTransaction(LOCTEXT("HideSources", "Hide Inputs"));
#endif
}
const int32 ActorIdxBegin = HandleInputs == EHandleSourcesMethod::KeepFirstSource ? 1 : 0;
const int32 ActorIdxEnd = HandleInputs == EHandleSourcesMethod::KeepLastSource ? Actors.Num() - 1 : Actors.Num();
for (int32 ActorIdx = ActorIdxBegin; ActorIdx < ActorIdxEnd; ActorIdx++)
{
AActor* Actor = Actors[ActorIdx];
if (Actor == MustKeepActor)
{
continue;
}
if (bDelete)
{
Actor->Destroy();
}
else
{
#if WITH_EDITOR
// Save the actor to the transaction buffer to support undo/redo, but do
// not call Modify, as we do not want to dirty the actor's package and
// we're only editing temporary, transient values
SaveToTransactionBuffer(Actor, false);
Actor->SetIsTemporarilyHiddenInEditor(true);
#endif
}
}
if (bDelete)
{
ToolManager->EndUndoTransaction();
}
else
{
#if WITH_EDITOR
ToolManager->EndUndoTransaction();
#endif
}
}
}
#undef LOCTEXT_NAMESPACE