Files
UnrealEngineUWP/Engine/Source/Developer/RigVMDeveloper/Public/RigVMModel/Nodes/RigVMFunctionReferenceNode.h
Helge Mathee 4cf6dc7f35 Control Rig: Variable Remapping
#rb sara.schvartzman, jack.cai
#jira UEA-564

[CL 16122169 by Helge Mathee in ue5-main branch]
2021-04-27 03:19:42 -04:00

61 lines
1.7 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;
// 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:
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;
};