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

51 lines
1.5 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "Graph/GraphVariableDetailsCustomization.h"
#include "FieldNotification/CustomizationHelper.h"
#include "DetailLayoutBuilder.h"
#include "BlueprintEditorModule.h"
#include "Engine/BlueprintGeneratedClass.h"
#include "WidgetBlueprint.h"
#define LOCTEXT_NAMESPACE "GraphVariableDetailsCustomization"
FGraphVariableDetailsCustomization::FGraphVariableDetailsCustomization(UWidgetBlueprint* InBlueprint)
: Helper(MakePimpl<UE::FieldNotification::FCustomizationHelper>(InBlueprint))
{}
TSharedPtr<IDetailCustomization> FGraphVariableDetailsCustomization::MakeInstance(TSharedPtr<IBlueprintEditor> InBlueprintEditor)
{
const TArray<UObject*>* Objects = (InBlueprintEditor.IsValid() ? InBlueprintEditor->GetObjectsCurrentlyBeingEdited() : nullptr);
if (Objects)
{
TOptional<UWidgetBlueprint*> FinalBlueprint;
for (UObject* Object : *Objects)
{
UWidgetBlueprint* Blueprint = Cast<UWidgetBlueprint>(Object);
if (Blueprint == nullptr)
{
return nullptr;
}
if (FinalBlueprint.IsSet() && FinalBlueprint.GetValue() != Blueprint)
{
return nullptr;
}
FinalBlueprint = Blueprint;
}
if (FinalBlueprint.IsSet())
{
return MakeShareable(new FGraphVariableDetailsCustomization(FinalBlueprint.GetValue()));
}
}
return nullptr;
}
void FGraphVariableDetailsCustomization::CustomizeDetails(IDetailLayoutBuilder& DetailLayout)
{
Helper->CustomizeVariableDetails(DetailLayout);
}
#undef LOCTEXT_NAMESPACE