// Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "Animation/AnimNodeBase.h" #include "Animation/AnimBlueprintGeneratedClass.h" #include "BVHAsset.h" #include "BoneMapInfo.h" #include "Runtime/Launch/Resources/Version.h" #include "Kismet/GameplayStatics.h" #include "Actor.h" #include "OPPORunTime.h" #include "AnimationRuntime.h" #include "Animation/AnimInstanceProxy.h" #include "OPPOMath.h" #include "Kismet/KismetMathLibrary.h" //#include "OPPOWorkManager.h" #include "AnimNode_PlayBVH.generated.h" USTRUCT(BlueprintType) struct OPPORUNTIME_API FAnimNode_PlayBVH :public FAnimNode_Base { GENERATED_USTRUCT_BODY() public: // Constructor FAnimNode_PlayBVH(); UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Links) FComponentSpacePoseLink BasePose; UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "BVH Settings") UBVHAsset *BVHAsset; UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "BVH Settings") bool isLoop; UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "BVH Settings") TEnumAsByte TranslationMode; virtual bool HasPreUpdate() const { return true; } //virtual void PreUpdate(const UAnimInstance* InAnimInstance) override; virtual void Initialize_AnyThread(const FAnimationInitializeContext& Context) override; virtual void CacheBones_AnyThread(const FAnimationCacheBonesContext& Context) override; virtual void Update_AnyThread(const FAnimationUpdateContext& Context) override; //virtual void Evaluate_AnyThread(FPoseContext& Output)override; virtual void EvaluateComponentSpace_AnyThread(FComponentSpacePoseContext& Output) override; virtual void GatherDebugData(FNodeDebugData& DebugData)override; //virtual void EvaluateComponentSpace_AnyThread(FComponentSpacePoseContext& Output)override; virtual void OnInitializeAnimInstance(const FAnimInstanceProxy* InProxy, const UAnimInstance* InAnimInstance) override; //AOPPOWorkManager* oppoManager = nullptr; AActor* OwningActor; TArray FrameData; TMap> BoneInfoList; int32 CurrentFrame = 0; bool isCanPlay = true; bool isFrameReady = true; FRotator ttt; /*UPROPERTY(transient) ULiveLinkRetargetAsset* CurrentRetargetAsset = nullptr;*/ };