// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "Containers/Array.h" #include "CoreMinimal.h" #include "LiveLinkController.h" #include "LiveLinkFrameInterpolationProcessor.h" #include "LiveLinkFramePreProcessor.h" #include "LiveLinkFrameTranslator.h" #include "LiveLinkRole.h" #include "LiveLinkTypes.h" #include "LiveLinkVirtualSubject.h" #include "Templates/SubclassOf.h" class ULiveLinkController; class ULiveLinkFrameInterpolationProcessor; class ULiveLinkFramePreProcessor; class ULiveLinkFrameTranslator; class ULiveLinkRole; class ULiveLinkVirtualSubject; class FLiveLinkRoleTrait { public: /** Get the list of all the LiveLinkRole. */ static LIVELINKINTERFACE_API TArray> GetRoles(); /** Get the list of all the Frame Interpolation Processor for the Role. */ static LIVELINKINTERFACE_API TArray> GetFrameInterpolationProcessorClasses(TSubclassOf Role); /** Get the list of all the Frame Pre Processor for the Role. */ static LIVELINKINTERFACE_API TArray> GetFramePreProcessorClasses(TSubclassOf Role); /** Get the list of all the Frame Translator to convert into a Role. */ static LIVELINKINTERFACE_API TArray> GetFrameTranslatorClassesTo(TSubclassOf Role); /** Get the list of all the Frame Translator to convert from a Role. */ static LIVELINKINTERFACE_API TArray> GetFrameTranslatorClassesFrom(TSubclassOf Role); /** Get the list of all the Frame Virtual Subject for a Role. */ static LIVELINKINTERFACE_API TArray> GetVirtualSubjectClasses(); static LIVELINKINTERFACE_API TArray> GetVirtualSubjectClasses(TSubclassOf Role); /** Get the Controller class for a Role. */ static LIVELINKINTERFACE_API TSubclassOf GetControllerClass(TSubclassOf Role); /** Return true if the StaticData matches the Role static data type. */ static LIVELINKINTERFACE_API bool Validate(TSubclassOf Role, const FLiveLinkStaticDataStruct& StaticData); /** Return true if the FrameData matches the Role frame data type. */ static LIVELINKINTERFACE_API bool Validate(TSubclassOf Role, const FLiveLinkFrameDataStruct& FrameData); };