// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #if WITH_EDITOR #include "Graph/MovieGraphMP4EncoderNode.h" #include "DetailLayoutBuilder.h" #include "IDetailCustomization.h" #include "PropertyHandle.h" #define LOCTEXT_NAMESPACE "MovieRenderPipelineMP4Encoder" /** Customize how the MP4 Encoder node appears in the details panel. */ class FMovieGraphMP4EncoderNodeNodeCustomization : public IDetailCustomization { public: static TSharedRef MakeInstance() { return MakeShared(); } protected: //~ Begin IDetailCustomization interface virtual void CustomizeDetails(const TSharedPtr& DetailBuilder) override { CustomizeDetails(*DetailBuilder); } virtual void CustomizeDetails(IDetailLayoutBuilder& DetailBuilder) override { for (const TWeakObjectPtr& WeakMP4Node : DetailBuilder.GetObjectsOfTypeBeingCustomized()) { const TAttribute AverageBitrateVisibleAttr = TAttribute::Create([WeakMP4Node]() { if (const TStrongObjectPtr MP4NodePin = WeakMP4Node.Pin()) { return (MP4NodePin->EncodingRateControl == EMoviePipelineMP4EncodeRateControlMode::VariableBitRate) ? EVisibility::Visible : EVisibility::Collapsed; } return EVisibility::Collapsed; }); const TAttribute ConstantRateFactorVisibleAttr = TAttribute::Create([WeakMP4Node]() { if (const TStrongObjectPtr MP4NodePin = WeakMP4Node.Pin()) { return (MP4NodePin->EncodingRateControl == EMoviePipelineMP4EncodeRateControlMode::Quality) ? EVisibility::Visible : EVisibility::Collapsed; } return EVisibility::Collapsed; }); const TSharedRef AverageBitrateHandle = DetailBuilder.GetProperty(GET_MEMBER_NAME_CHECKED(UMovieGraphMP4EncoderNode, AverageBitrateInMbps)); DetailBuilder.EditDefaultProperty(AverageBitrateHandle) ->Visibility(AverageBitrateVisibleAttr); const TSharedRef ConstantRateFactorHandle = DetailBuilder.GetProperty(GET_MEMBER_NAME_CHECKED(UMovieGraphMP4EncoderNode, ConstantRateFactor)); DetailBuilder.EditDefaultProperty(ConstantRateFactorHandle) ->Visibility(ConstantRateFactorVisibleAttr); } } //~ End IDetailCustomization interface }; #undef LOCTEXT_NAMESPACE #endif // WITH_EDITOR