Files
UnrealEngineUWP/Engine/Source/Editor/DetailCustomizations/Private/PerQualityLevelPropertyCustomization.h
aurel cordonnier 43fa62fcd8 Merge from Release-Engine-Test @ 16487383 to UE5/Main
This represents UE4/Main @ 16445039 and Dev-PerfTest @ 16444526

[CL 16488106 by aurel cordonnier in ue5-main branch]
2021-05-27 13:40:37 -04:00

45 lines
1.7 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "Widgets/SWidget.h"
#include "UnrealClient.h"
#include "IPropertyTypeCustomization.h"
#include "PerQualityLevelProperties.h"
class FDetailWidgetDecl;
/**
* Implements a details panel customization for the FPerQualityLevel structures.
*/
template<typename OverrideType>
class FPerQualityLevelPropertyCustomization : public IPropertyTypeCustomization
{
public:
FPerQualityLevelPropertyCustomization()
{}
// IPropertyTypeCustomization interface
virtual void CustomizeHeader(TSharedRef<IPropertyHandle> StructPropertyHandle, FDetailWidgetRow& HeaderRow, IPropertyTypeCustomizationUtils& StructCustomizationUtils) override;
virtual void CustomizeChildren(TSharedRef<IPropertyHandle> StructPropertyHandle, IDetailChildrenBuilder& StructBuilder, IPropertyTypeCustomizationUtils& StructCustomizationUtils) override {}
/**
* Creates a new instance.
*
* @return A new customization for FPerQualityLevel structs.
*/
static TSharedRef<IPropertyTypeCustomization> MakeInstance();
protected:
TSharedRef<SWidget> GetWidget(FName InQualityLevelName, TSharedRef<IPropertyHandle> StructPropertyHandle) const;
TArray<FName> GetOverrideNames(TSharedRef<IPropertyHandle> StructPropertyHandle) const;
bool AddOverride(FName InQualityLevelName, TSharedRef<IPropertyHandle> StructPropertyHandle);
bool RemoveOverride(FName InQualityLevelName, TSharedRef<IPropertyHandle> StructPropertyHandle);
float CalcDesiredWidth(TSharedRef<IPropertyHandle> StructPropertyHandle);
private:
/** Cached utils used for resetting customization when layout changes */
TWeakPtr<IPropertyUtilities> PropertyUtilities;
};