// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "Layout/Visibility.h" #include "Input/Reply.h" #include "IDetailCustomization.h" #include "GroomComponent.h" class IDetailLayoutBuilder; class IDetailCategoryBuilder; class IDetailChildrenBuilder; class IPropertyHandle; ////////////////////////////////////////////////////////////////////////// // FGroomComponentDetailsCustomization class FGroomComponentDetailsCustomization : 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& DetailLayout) override; // End of IDetailCustomization interface private: TWeakObjectPtr GroomComponentPtr; IDetailLayoutBuilder* MyDetailLayout; void CustomizeDescGroupProperties(IDetailLayoutBuilder& DetailLayout, IDetailCategoryBuilder& StrandsGroupFilesCategory); void OnGenerateElementForHairGroup(TSharedRef StructProperty, int32 GroupIndex, IDetailChildrenBuilder& ChildrenBuilder, IDetailLayoutBuilder* DetailLayout); bool CommonResetToDefault(TSharedPtr ChildHandle, int32 GroupIndex, bool bSetValue); bool ShouldResetToDefault(TSharedPtr ChildHandle, int32 GroupIndex); void ResetToDefault(TSharedPtr ChildHandle, int32 GroupIndex); void AddPropertyWithCustomReset(TSharedPtr& PropertyHandle, IDetailChildrenBuilder& Builder, int32 GroupIndex); void OnGroomAssetChanged(IDetailLayoutBuilder* LayoutBuilder); };