Files
UnrealEngine/Engine/Plugins/MovieScene/MovieRenderPipeline/Source/MovieRenderPipelineMP4Encoder/Private/Graph/MovieGraphMP4EncoderNodeCustomization.h
Brandyn / Techy fcc1b09210 init
2026-04-04 15:40:51 -05:00

69 lines
2.4 KiB
C++

// 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<IDetailCustomization> MakeInstance()
{
return MakeShared<FMovieGraphMP4EncoderNodeNodeCustomization>();
}
protected:
//~ Begin IDetailCustomization interface
virtual void CustomizeDetails(const TSharedPtr<IDetailLayoutBuilder>& DetailBuilder) override
{
CustomizeDetails(*DetailBuilder);
}
virtual void CustomizeDetails(IDetailLayoutBuilder& DetailBuilder) override
{
for (const TWeakObjectPtr<UMovieGraphMP4EncoderNode>& WeakMP4Node : DetailBuilder.GetObjectsOfTypeBeingCustomized<UMovieGraphMP4EncoderNode>())
{
const TAttribute<EVisibility> AverageBitrateVisibleAttr = TAttribute<EVisibility>::Create([WeakMP4Node]()
{
if (const TStrongObjectPtr<UMovieGraphMP4EncoderNode> MP4NodePin = WeakMP4Node.Pin())
{
return (MP4NodePin->EncodingRateControl == EMoviePipelineMP4EncodeRateControlMode::VariableBitRate) ? EVisibility::Visible : EVisibility::Collapsed;
}
return EVisibility::Collapsed;
});
const TAttribute<EVisibility> ConstantRateFactorVisibleAttr = TAttribute<EVisibility>::Create([WeakMP4Node]()
{
if (const TStrongObjectPtr<UMovieGraphMP4EncoderNode> MP4NodePin = WeakMP4Node.Pin())
{
return (MP4NodePin->EncodingRateControl == EMoviePipelineMP4EncodeRateControlMode::Quality) ? EVisibility::Visible : EVisibility::Collapsed;
}
return EVisibility::Collapsed;
});
const TSharedRef<IPropertyHandle> AverageBitrateHandle = DetailBuilder.GetProperty(GET_MEMBER_NAME_CHECKED(UMovieGraphMP4EncoderNode, AverageBitrateInMbps));
DetailBuilder.EditDefaultProperty(AverageBitrateHandle)
->Visibility(AverageBitrateVisibleAttr);
const TSharedRef<IPropertyHandle> ConstantRateFactorHandle = DetailBuilder.GetProperty(GET_MEMBER_NAME_CHECKED(UMovieGraphMP4EncoderNode, ConstantRateFactor));
DetailBuilder.EditDefaultProperty(ConstantRateFactorHandle)
->Visibility(ConstantRateFactorVisibleAttr);
}
}
//~ End IDetailCustomization interface
};
#undef LOCTEXT_NAMESPACE
#endif // WITH_EDITOR