// Copyright Voulz 2021-2025. All Rights Reserved. #pragma once #include "ArchVisMoviePipelineObjectIdUtils.h" #include "Graph/Nodes/MovieGraphImagePassBaseNode.h" #include "UObject/UObjectAnnotation.h" #include "MovieGraphArchVisObjectIdNode.generated.h" enum class EArchVisMoviePipelineObjectIdPassIdType : uint8; /** A node which outputs layers compatible with the Cryptomatte standard. */ // todo: UE 5.6 does not allow the MRG Object ID to be overriden, hopefully fixed in 5.7. The default Object ID pass should work UCLASS(BlueprintType, Deprecated) class UDEPRECATED_MovieGraphArchVisObjectIdNode : public UMovieGraphImagePassBaseNode { GENERATED_BODY() public: UDEPRECATED_MovieGraphArchVisObjectIdNode() = default; static FUObjectAnnotationSparse& GetManifestAnnotation(); // UMovieGraphImagePassBaseNode Interface virtual FEngineShowFlags GetShowFlags() const override; virtual EViewModeIndex GetViewModeIndex() const override; virtual bool GetAllowsShowFlagsCustomization() const override; // ~UMovieGraphImagePassBaseNode Interface // UMovieGraphNode Interface #if WITH_EDITOR virtual FText GetNodeTitle(const bool bGetDescriptive = false) const override; virtual FSlateIcon GetIconAndTint(FLinearColor& OutColor) const override; #endif // ~UMovieGraphNode Interface virtual void UpdateTelemetry(FMoviePipelineShotRenderTelemetry* InTelemetry) const override; protected: // UMovieGraphImagePassBaseNode Interface virtual TUniquePtr CreateInstance() const override; // ~UMovieGraphImagePassBaseNode Interface // UMovieGraphRenderPassNode Interface virtual FString GetRendererNameImpl() const override; virtual void SetupImpl(const FMovieGraphRenderPassSetupData& InSetupData) override; virtual void TeardownImpl() override; // ~UMovieGraphRenderPassNode Interface public: UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Overrides, meta = (InlineEditConditionToggle)) uint8 bOverride_IdType : 1; UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Overrides, meta = (InlineEditConditionToggle)) uint8 bOverride_bIncludeTranslucentObjects : 1; /** How objects are grouped together within the Cryptomatte. */ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Settings", DisplayName = "ID Type", meta = (EditCondition="bOverride_IdType")) EArchVisMoviePipelineObjectIdPassIdType IdType; /** If true, translucent objects will be included in the ObjectId pass (but as an opaque layer due to limitations). False will omit translucent objects. */ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Settings", meta = (EditCondition="bOverride_bIncludeTranslucentObjects")) bool bIncludeTranslucentObjects; private: /** * The prior value of the project's bAllowSelectTranslucent setting. This node will temporarily change the value of this property to the value * set in bIncludeTranslucentObjects while rendering. */ bool bPrevAllowSelectTranslucent; };