// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "IPropertyTypeCustomization.h" #include "Layout/Visibility.h" #include "Misc/Attribute.h" #include "Templates/SharedPointer.h" class IPropertyHandle; class FBaseAttenuationSettingsCustomization : public IPropertyTypeCustomization { public: //~ Begin IPropertyTypeCustomization virtual void CustomizeHeader( TSharedRef StructPropertyHandle, class FDetailWidgetRow& HeaderRow, IPropertyTypeCustomizationUtils& StructCustomizationUtils ) override; virtual void CustomizeChildren( TSharedRef StructPropertyHandle, class IDetailChildrenBuilder& ChildBuilder, IPropertyTypeCustomizationUtils& StructCustomizationUtils ) override; //~ End IPropertyTypeCustomization TAttribute IsAttenuationOverriddenAttribute() const; TAttribute IsAttenuationOverriddenVisibleAttribute() const; protected: EVisibility IsSphereSelected() const; EVisibility IsBoxSelected() const; EVisibility IsCapsuleSelected() const; EVisibility IsConeSelected() const; EVisibility IsNaturalSoundSelected() const; EVisibility IsCustomCurveSelected() const; TAttribute GetIsAttenuationEnabledAttribute() const; TAttribute GetIsFalloffModeEnabledAttribute() const; TSharedPtr GetOverrideAttenuationHandle(TSharedRef StructPropertyHandle); TSharedPtr bIsAttenuatedHandle; TSharedPtr AttenuationShapeHandle; TSharedPtr DistanceAlgorithmHandle; TSharedPtr DbAttenuationAtMaxHandle; TSharedPtr bOverrideAttenuationHandle; }; class FSoundAttenuationSettingsCustomization : public FBaseAttenuationSettingsCustomization { public: static TSharedRef MakeInstance(); //~ Begin IPropertyTypeCustomization virtual void CustomizeHeader(TSharedRef PropertyHandle, class FDetailWidgetRow& HeaderRow, IPropertyTypeCustomizationUtils& CustomizationUtils) override; virtual void CustomizeChildren( TSharedRef StructPropertyHandle, class IDetailChildrenBuilder& ChildBuilder, IPropertyTypeCustomizationUtils& StructCustomizationUtils ) override; //~ End IPropertyTypeCustomization protected: TSharedPtr bIsSpatializedHandle; TSharedPtr bIsAirAbsorptionEnabledHandle; TSharedPtr bIsFocusedHandle; TSharedPtr bIsOcclusionEnabledHandle; TSharedPtr bIsReverbSendEnabledHandle; TSharedPtr bIsPriorityAttenuationEnabledHandle; TSharedPtr bIsSubmixSendAttenuationEnabledHandle; TSharedPtr bIsSourceDataOverrideEnabledHandle; TSharedPtr bIsSendToAudioLinkEnabledHandle; TSharedPtr bEnableSourceDataOverrideHandle; TSharedPtr ReverbSendMethodHandle; TSharedPtr PriorityAttenuationMethodHandle; TSharedPtr AbsorptionMethodHandle; TAttribute IsFocusEnabledAttribute; TAttribute GetIsFocusEnabledAttribute() const; TAttribute GetIsOcclusionEnabledAttribute() const; TAttribute GetIsSpatializationEnabledAttribute() const; TAttribute GetIsAirAbsorptionEnabledAttribute() const; TAttribute GetIsReverbSendEnabledAttribute() const; TAttribute GetIsPriorityAttenuationEnabledAttribute() const; TAttribute GetIsSubmixSendAttenuationEnabledAttribute() const; EVisibility IsLinearMethodSelected() const; EVisibility IsCustomReverbSendCurveSelected() const; EVisibility IsLinearOrCustomReverbMethodSelected() const; EVisibility IsManualReverbSendSelected() const; EVisibility IsCustomAirAbsorptionCurveSelected() const; EVisibility IsPriorityAttenuationLinearMethodSelected() const; EVisibility IsCustomPriorityAttenuationCurveSelected() const; EVisibility IsLinearOrCustomPriorityAttenuationSelected() const; EVisibility IsManualPriorityAttenuationSelected() const; }; class FForceFeedbackAttenuationSettingsCustomization : public FBaseAttenuationSettingsCustomization { public: static TSharedRef MakeInstance(); //~ Begin IPropertyTypeCustomization virtual void CustomizeHeader(TSharedRef PropertyHandle, class FDetailWidgetRow& HeaderRow, IPropertyTypeCustomizationUtils& CustomizationUtils) override; virtual void CustomizeChildren(TSharedRef StructPropertyHandle, class IDetailChildrenBuilder& ChildBuilder, IPropertyTypeCustomizationUtils& StructCustomizationUtils) override; //~ End IPropertyTypeCustomization };