// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "IPropertyTypeCustomization.h" namespace ESelectInfo { enum Type : int; } static UEnum* GetStateEnumClass(const TSharedPtr& InProperty); class FPerSkeletonAnimationSharingSetupCustomization : public IPropertyTypeCustomization { public: static TSharedRef MakeInstance(); FPerSkeletonAnimationSharingSetupCustomization() {} virtual ~FPerSkeletonAnimationSharingSetupCustomization() {} /** Begin IPropertyTypeCustomization interface */ virtual void CustomizeHeader(TSharedRef PropertyHandle, FDetailWidgetRow& HeaderRow, IPropertyTypeCustomizationUtils& CustomizationUtils) override; virtual void CustomizeChildren(TSharedRef StructPropertyHandle, IDetailChildrenBuilder& StructBuilder, IPropertyTypeCustomizationUtils& StructCustomizationUtils) override; /** End IPropertyTypeCustomization interface */ protected: FText GetSkeletonName() const; TSharedPtr SkeletonPropertyHandle; }; class FAnimationStateEntryCustomization : public IPropertyTypeCustomization { public: static TSharedRef MakeInstance(); FAnimationStateEntryCustomization() : StatePropertyHandle(nullptr), ProcessorPropertyHandle(nullptr), CachedComboBoxEnumClass(nullptr) {} virtual ~FAnimationStateEntryCustomization() {} /** Begin IPropertyTypeCustomization interface */ virtual void CustomizeHeader(TSharedRef PropertyHandle, FDetailWidgetRow& HeaderRow, IPropertyTypeCustomizationUtils& CustomizationUtils) override; virtual void CustomizeChildren(TSharedRef StructPropertyHandle, IDetailChildrenBuilder& StructBuilder, IPropertyTypeCustomizationUtils& StructCustomizationUtils) override; /** End IPropertyTypeCustomization interface */ protected: FText GetStateName(TSharedPtr PropertyHandle) const; FDetailWidgetRow& CreateEnumSelectionWidget(TSharedRef ChildHandle, IDetailChildrenBuilder& StructBuilder); const TArray> GetComboBoxSourceItems() const; const TSharedPtr GetSelectedEnum(TSharedPtr PropertyHandle) const; void SelectedEnumChanged(TSharedPtr Selection, ESelectInfo::Type SelectInfo, TSharedRef PropertyHandle); void GenerateEnumComboBoxItems(); protected: TSharedPtr StatePropertyHandle; TSharedPtr ProcessorPropertyHandle; UEnum* CachedComboBoxEnumClass; TArray> ComboBoxItems; }; class FAnimationSetupCustomization : public IPropertyTypeCustomization { public: static TSharedRef MakeInstance(); FAnimationSetupCustomization() {} virtual ~FAnimationSetupCustomization() {} /** Begin IPropertyTypeCustomization interface */ virtual void CustomizeHeader(TSharedRef PropertyHandle, FDetailWidgetRow& HeaderRow, IPropertyTypeCustomizationUtils& CustomizationUtils) override; virtual void CustomizeChildren(TSharedRef StructPropertyHandle, IDetailChildrenBuilder& StructBuilder, IPropertyTypeCustomizationUtils& StructCustomizationUtils) override; /** End IPropertyTypeCustomization interface */ protected: FText GetAnimationName(TSharedPtr PropertyHandle) const; protected: TSharedPtr AnimSequencePropertyHandle; };