Files
UnrealEngine/Engine/Source/Editor/UMGEditor/Private/Preview/PreviewMode.cpp
2025-05-18 13:04:45 +08:00

55 lines
1.2 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "Preview/PreviewMode.h"
#include "Blueprint/UserWidget.h"
namespace UE::UMG::Editor
{
void FPreviewMode::SetSelectedObject(TArray<TWeakObjectPtr<UObject>> Objects)
{
SelectedObjects = MoveTemp(Objects);
SelectedObjectChangedDelegate.Broadcast();
}
void FPreviewMode::SetSelectedObject(TArrayView<UObject*> Objects)
{
SelectedObjects.Reset(Objects.Num());
for (UObject* Obj : Objects)
{
SelectedObjects.Emplace(Obj);
}
SelectedObjectChangedDelegate.Broadcast();
}
TArray<UObject*> FPreviewMode::GetSelectedObjectList() const
{
TArray<UObject*> Result;
Result.Reset(SelectedObjects.Num());
for (TWeakObjectPtr<UObject> Obj : SelectedObjects)
{
if (UObject* Ptr = Obj.Get())
{
Result.Add(Ptr);
}
}
return Result;
}
void FPreviewMode::SetPreviewWidget(UUserWidget* Widget)
{
UUserWidget* Previous = PreviewWidget.Get();
if (Previous != Widget)
{
PreviewWidget = Widget;
PreviewWidgetChangedDelegate.Broadcast();
if (SelectedObjects.ContainsByPredicate([Previous](const TWeakObjectPtr<UObject>& Other){ return Other.Get() == Previous; }))
{
SelectedObjects.Reset();
SelectedObjectChangedDelegate.Broadcast();
}
}
}
} // namespace UE::UMG