// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "Containers/Set.h" #include "IDetailCustomization.h" #include "Styling/SlateTypes.h" #include "Templates/SharedPointer.h" #include "UObject/WeakObjectPtr.h" #include "UObject/WeakObjectPtrTemplates.h" class IDetailLayoutBuilder; class UAnimStateAliasNode; class UAnimStateNodeBase; class FAnimStateAliasNodeDetails : public IDetailCustomization { public: /** Makes a new instance of this detail layout class for a specific detail view requesting it */ static TSharedRef MakeInstance(); /** IDetailCustomization interface */ virtual void CustomizeDetails( IDetailLayoutBuilder& DetailBuilder ) override; private: void GetReferenceableStates(const UAnimStateAliasNode& OwningNode, TSet>& OutStates) const; bool IsGlobalAlias() const; void OnPropertyAliasAllStatesCheckboxChanged(ECheckBoxState NewState); ECheckBoxState AreAllStatesAliased() const; void OnPropertyIsStateAliasedCheckboxChanged(ECheckBoxState NewState, const TWeakObjectPtr StateNodeWeak); ECheckBoxState IsStateAliased(const TWeakObjectPtr StateNodeWeak) const; void GenerateStatePickerDetails(UAnimStateAliasNode& AliasNode, IDetailLayoutBuilder& DetailBuilder); TWeakObjectPtr StateAliasNodeWeak; TSet> ReferenceableStates; };