Files
UnrealEngineUWP/Engine/Source/Runtime/LiveLinkAnimationCore/Public/LiveLinkInstance.h
henrik karlsson 5db685f97d [Engine]
* Moved dllexport from type to methods/staticvar in all Engine runtime code. This improves compile times, memory and performance in dll builds

[CL 26082269 by henrik karlsson in ue5-main branch]
2023-06-17 18:13:06 -04:00

69 lines
1.9 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "Animation/AnimInstanceProxy.h"
#include "Animation/AnimInstance.h"
#include "AnimNode_LiveLinkPose.h"
#include "LiveLinkInstance.generated.h"
class ULiveLinkRetargetAsset;
/** Proxy override for this UAnimInstance-derived class */
USTRUCT()
struct FLiveLinkInstanceProxy : public FAnimInstanceProxy
{
public:
friend struct FAnimNode_LiveLinkPose;
GENERATED_BODY()
FLiveLinkInstanceProxy()
{
}
FLiveLinkInstanceProxy(UAnimInstance* InAnimInstance)
: FAnimInstanceProxy(InAnimInstance)
{
}
LIVELINKANIMATIONCORE_API virtual void Initialize(UAnimInstance* InAnimInstance) override;
LIVELINKANIMATIONCORE_API virtual void PreUpdate(UAnimInstance* InAnimInstance, float DeltaSeconds) override;
LIVELINKANIMATIONCORE_API virtual bool Evaluate(FPoseContext& Output) override;
LIVELINKANIMATIONCORE_API virtual void UpdateAnimationNode(const FAnimationUpdateContext& InContext) override;
UPROPERTY(EditAnywhere, Category = Settings)
FAnimNode_LiveLinkPose PoseNode;
};
UCLASS(transient, NotBlueprintable, MinimalAPI)
class ULiveLinkInstance : public UAnimInstance
{
GENERATED_BODY()
public:
UFUNCTION(BlueprintCallable, Category="Animation|Live Link")
void SetSubject(FLiveLinkSubjectName SubjectName)
{
GetProxyOnGameThread<FLiveLinkInstanceProxy>().PoseNode.LiveLinkSubjectName = SubjectName;
}
UFUNCTION(BlueprintCallable, Category = "Animation|Live Link")
void SetRetargetAsset(TSubclassOf<ULiveLinkRetargetAsset> RetargetAsset)
{
GetProxyOnGameThread<FLiveLinkInstanceProxy>().PoseNode.RetargetAsset = RetargetAsset;
}
protected:
LIVELINKANIMATIONCORE_API virtual FAnimInstanceProxy* CreateAnimInstanceProxy() override;
LIVELINKANIMATIONCORE_API virtual void DestroyAnimInstanceProxy(FAnimInstanceProxy* InProxy) override;
// Cache for GC
UPROPERTY(transient)
TObjectPtr<ULiveLinkRetargetAsset> CurrentRetargetAsset;
friend FLiveLinkInstanceProxy;
};