Files
UnrealEngineUWP/Engine/Source/Developer/RigVMDeveloper/Public/RigVMModel/Nodes/RigVMFunctionReferenceNode.h
sara schvartzman 5da9c89ce8 Control Rig: Copy pasting a control rig into a new project with functions breaks function references
#jira UE-131954
#rb helge.mathee
#preflight 616e977dbd4df4000184c1e3

#ROBOMERGE-AUTHOR: sara.schvartzman
#ROBOMERGE-SOURCE: CL 17858658 in //UE5/Release-5.0/... via CL 17858673
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v883-17842818)
#ROBOMERGE[STARSHIP]: UE5-Main

[CL 17858675 by sara schvartzman in ue5-release-engine-test branch]
2021-10-19 06:29:19 -04:00

64 lines
1.9 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "RigVMModel/RigVMGraph.h"
#include "RigVMModel/Nodes/RigVMLibraryNode.h"
#include "RigVMFunctionReferenceNode.generated.h"
class URigVMFunctionLibrary;
/**
* The Function Reference Node is a library node which references
* a library node from a separate function library graph.
*/
UCLASS(BlueprintType)
class RIGVMDEVELOPER_API URigVMFunctionReferenceNode : public URigVMLibraryNode
{
GENERATED_BODY()
public:
// URigVMNode interface
virtual FString GetNodeTitle() const override;
virtual FLinearColor GetNodeColor() const override;
virtual FText GetToolTipText() const override;
// end URigVMNode interface
// URigVMLibraryNode interface
virtual FString GetNodeCategory() const override;
virtual FString GetNodeKeywords() const override;
virtual URigVMFunctionLibrary* GetLibrary() const override;
virtual URigVMGraph* GetContainedGraph() const override;
virtual TArray<FRigVMExternalVariable> GetExternalVariables() const override;
// end URigVMLibraryNode interface
URigVMLibraryNode* GetReferencedNode() const;
// Variable remapping
bool RequiresVariableRemapping() const;
bool IsFullyRemapped() const;
TArray<FRigVMExternalVariable> GetExternalVariables(bool bRemapped) const;
const TMap<FName, FName>& GetVariableMap() const { return VariableMap; }
FName GetOuterVariableName(const FName& InInnerVariableName) const;
// end Variable remapping
private:
virtual FText GetToolTipTextForPin(const URigVMPin* InPin) const override;
bool RequiresVariableRemappingInternal(TArray<FRigVMExternalVariable>& InnerVariables) const;
void SetReferencedNode(URigVMLibraryNode* InReferenceNode);
UPROPERTY(AssetRegistrySearchable)
mutable TSoftObjectPtr<URigVMLibraryNode> ReferencedNodePtr;
UPROPERTY()
TMap<FName, FName> VariableMap;
friend class URigVMController;
friend class FRigVMParserAST;
friend class UControlRigBlueprint;
};