Files
UnrealEngine/Engine/Plugins/Runtime/RigVM/Source/RigVMDeveloper/Public/RigVMUserWorkflowRegistry.h
2025-05-18 13:04:45 +08:00

48 lines
1.4 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "Containers/Array.h"
#include "CoreMinimal.h"
#include "Delegates/Delegate.h"
#include "HAL/Platform.h"
#include "RigVMCore/RigVMUserWorkflow.h"
#include "RigVMModel/RigVMNode.h"
#include "Templates/Tuple.h"
#include "UObject/Object.h"
#include "UObject/ObjectMacros.h"
#include "UObject/UObjectGlobals.h"
#include "UObject/WeakObjectPtr.h"
#include "RigVMUserWorkflowRegistry.generated.h"
class UScriptStruct;
struct FFrame;
DECLARE_DYNAMIC_DELEGATE_RetVal_OneParam(TArray<FRigVMUserWorkflow>, FRigVMUserWorkflowProvider, const UObject*, InSubject);
UCLASS(BlueprintType)
class RIGVMDEVELOPER_API URigVMUserWorkflowRegistry : public UObject
{
GENERATED_BODY()
public:
UFUNCTION(BlueprintPure, Category = FRigVMUserWorkflowRegistry)
static URigVMUserWorkflowRegistry* Get();
UFUNCTION(BlueprintCallable, Category = FRigVMUserWorkflowRegistry)
int32 RegisterProvider(const UScriptStruct* InStruct, FRigVMUserWorkflowProvider InProvider);
UFUNCTION(BlueprintCallable, Category = FRigVMUserWorkflowRegistry)
void UnregisterProvider(int32 InHandle);
UFUNCTION(BlueprintPure, Category = FRigVMUserWorkflowRegistry)
TArray<FRigVMUserWorkflow> GetWorkflows(ERigVMUserWorkflowType InType, const UScriptStruct* InStruct, const UObject* InSubject) const;
private:
int32 MaxHandle = 0;
mutable TArray<TTuple<int32, const UScriptStruct*, FRigVMUserWorkflowProvider>> Providers;
};