// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "MovieSceneDirectorBlueprintEndpointCustomization.h" #include "IPropertyTypeCustomization.h" #include "Types/SlateEnums.h" class UK2Node; class UBlueprint; class UEdGraphPin; class IPropertyHandle; class FDetailWidgetRow; class SWidget; struct FMovieSceneDirectorBlueprintConditionData; enum class ECheckBoxState : uint8; /** * Customization for director blueprint condition endpoint picker */ class MOVIESCENETOOLS_API FMovieSceneDirectorBlueprintConditionCustomization : public FMovieSceneDirectorBlueprintEndpointCustomization { public: static TSharedRef MakeInstance(); static TSharedRef MakeInstance(UMovieScene* InMovieScene); static TSharedRef MakeInstance(UMovieScene* InMovieScene, TSharedPtr InPropertyHandle, TSharedPtr InPropertyUtilities); protected: virtual void GetPayloadVariables(UObject* EditObject, void* RawData, FPayloadVariableMap& OutPayloadVariables) const override; virtual bool SetPayloadVariable(UObject* EditObject, void* RawData, FName FieldName, const FMovieSceneDirectorBlueprintVariableValue& NewVariableValue) override; virtual UK2Node* FindEndpoint(UMovieSceneSequence* Sequence, UBlueprint* Blueprint, UObject* EditObject, void* RawData) const override; virtual void GetWellKnownParameterPinNames(UObject* EditObject, void* RawData, TArray& OutWellKnownParameters) const override; virtual void GetWellKnownParameterCandidates(UK2Node* Endpoint, TArray& OutCandidates) const override; virtual bool SetWellKnownParameterPinName(UObject* EditObject, void* RawData, int32 ParameterIndex, FName BoundPinName) override; virtual FMovieSceneDirectorBlueprintEndpointDefinition GenerateEndpointDefinition(UMovieSceneSequence* Sequence) override; virtual void OnCreateEndpoint(UMovieSceneSequence* Sequence, UBlueprint* Blueprint, const TArray EditObjects, const TArray RawData, const FMovieSceneDirectorBlueprintEndpointDefinition& EndpointDefinition, UK2Node* NewEndpoint) override; virtual void OnSetEndpoint(UMovieSceneSequence* Sequence, UBlueprint* Blueprint, const TArray EditObjects, const TArray RawData, const FMovieSceneDirectorBlueprintEndpointDefinition& EndpointDefinition, UK2Node* NewEndpoint) override; virtual void GetEditObjects(TArray& OutObjects) const override; virtual void OnCollectQuickBindActions(UBlueprint* Blueprint, FBlueprintActionMenuBuilder& MenuBuilder) override; virtual bool CreateNewCategoryForPayloadVariables() const override { return false; } private: void SetEndpointImpl(UMovieScene* MovieScene, FMovieSceneDirectorBlueprintConditionData* DynamicBinding, UBlueprint* Blueprint, UK2Node* NewEndpoint); void EnsureBlueprintExtensionCreated(UMovieScene* MovieScene, UBlueprint* Blueprint); void CollectConditionBindActions(UBlueprint* Blueprint, FBlueprintActionMenuBuilder& MenuBuilder, bool bIsRebinding); private: UMovieScene* EditedMovieScene; };