Files
UnrealEngineUWP/Engine/Plugins/Animation/ControlRig/Source/ControlRigDeveloper/Public/AnimGraphNode_ControlRig.h
aurel cordonnier a12d56ff31 Merge from Release-Engine-Staging @ 17791557 to Release-Engine-Test
This represents UE4/Main @17774255, Release-5.0 @17791557 and Dev-PerfTest @17789485

[CL 17794212 by aurel cordonnier in ue5-release-engine-test branch]
2021-10-12 21:21:22 -04:00

58 lines
2.3 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "AnimGraphNode_CustomProperty.h"
#include "AnimNode_ControlRig.h"
#include "SSearchableComboBox.h"
#include "AnimGraphNode_ControlRig.generated.h"
struct FVariableMappingInfo;
UCLASS(MinimalAPI)
class UAnimGraphNode_ControlRig : public UAnimGraphNode_CustomProperty
{
GENERATED_UCLASS_BODY()
UPROPERTY(EditAnywhere, Category = Settings)
FAnimNode_ControlRig Node;
virtual void CustomizeDetails(IDetailLayoutBuilder& DetailBuilder) override;
virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
private:
// UEdGraphNode interface
virtual FText GetNodeTitle(ENodeTitleType::Type TitleType) const override;
virtual void CustomizePinData(UEdGraphPin* Pin, FName SourcePropertyName, int32 ArrayIndex) const override;
virtual FText GetTooltipText() const override;
virtual FAnimNode_CustomProperty* GetCustomPropertyNode() override { return &Node; }
virtual const FAnimNode_CustomProperty* GetCustomPropertyNode() const override { return &Node; }
// property related things
void GetVariables(bool bInput, TMap<FName, FRigVMExternalVariable>& OutParameters) const;
TMap<FName, FRigVMExternalVariable> InputVariables;
TMap<FName, FRigVMExternalVariable> OutputVariables;
void RebuildExposedProperties();
virtual void CreateCustomPins(TArray<UEdGraphPin*>* OldPins) override;
virtual void ValidateAnimNodeDuringCompilation(USkeleton* ForSkeleton, FCompilerResultsLog& MessageLog) override;
// pin option related
bool IsPropertyExposeEnabled(FName PropertyName) const;
ECheckBoxState IsPropertyExposed(FName PropertyName) const;
void OnPropertyExposeCheckboxChanged(ECheckBoxState NewState, FName PropertyName);
// SVariableMappingWidget related
void OnVariableMappingChanged(const FName& PathName, const FName& Curve, bool bInput);
FName GetVariableMapping(const FName& PathName, bool bInput);
void GetAvailableMapping(const FName& PathName, TArray<FName>& OutArray, bool bInput);
void CreateVariableMapping(const FString& FilteredText, TArray< TSharedPtr<FVariableMappingInfo> >& OutArray, bool bInput);
bool IsAvailableToMapToCurve(const FName& PropertyName, bool bInput) const;
bool IsInputProperty(const FName& PropertyName) const;
FRigControlElement* FindControlElement(const FName& InControlName) const;
};