From 33404072c80c4a78ec33a0c1175cfd7142eedcaa Mon Sep 17 00:00:00 2001 From: Mamadou Babaei Date: Mon, 1 Jul 2024 23:10:11 +0200 Subject: [PATCH] make the virtual hand anim instance proxy safer --- .../Animation/SGVirtualHandAnimInstanceProxy.cpp | 16 ++++++++++++---- .../Animation/SGVirtualHandAnimInstanceProxy.h | 8 +++++++- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/Source/SenseGlove/Private/SenseGlove/Animation/SGVirtualHandAnimInstanceProxy.cpp b/Source/SenseGlove/Private/SenseGlove/Animation/SGVirtualHandAnimInstanceProxy.cpp index 0fc1b49e..2ac5829d 100644 --- a/Source/SenseGlove/Private/SenseGlove/Animation/SGVirtualHandAnimInstanceProxy.cpp +++ b/Source/SenseGlove/Private/SenseGlove/Animation/SGVirtualHandAnimInstanceProxy.cpp @@ -50,20 +50,29 @@ #include "SGLog/SGLog.h" FSGVirtualHandAnimInstanceProxy::FSGVirtualHandAnimInstanceProxy() - : FAnimInstanceProxy() + : FAnimInstanceProxy{} { - bIsVirtualHandVisible = false; VirtualHand = nullptr; HandMeshAsset = nullptr; HandSkeleton = nullptr; + + bIsVirtualHandVisible = false; bMarkRenderStateDirty = false; bShouldAnimationApplyBoneLocation = false; } FSGVirtualHandAnimInstanceProxy::FSGVirtualHandAnimInstanceProxy(UAnimInstance* Instance) - : FAnimInstanceProxy(Instance) + : FAnimInstanceProxy{Instance} { + VirtualHand = nullptr; + HandMeshAsset = nullptr; + HandSkeleton = nullptr; + + bIsVirtualHandVisible = false; + bMarkRenderStateDirty = false; + + bShouldAnimationApplyBoneLocation = false; } void FSGVirtualHandAnimInstanceProxy::PreEvaluateAnimation(UAnimInstance* InAnimInstance) @@ -200,7 +209,6 @@ bool FSGVirtualHandAnimInstanceProxy::Evaluate(FPoseContext& Output) } } - return true; } diff --git a/Source/SenseGlove/Public/SenseGlove/Animation/SGVirtualHandAnimInstanceProxy.h b/Source/SenseGlove/Public/SenseGlove/Animation/SGVirtualHandAnimInstanceProxy.h index 3645ada5..0b2748f9 100644 --- a/Source/SenseGlove/Public/SenseGlove/Animation/SGVirtualHandAnimInstanceProxy.h +++ b/Source/SenseGlove/Public/SenseGlove/Animation/SGVirtualHandAnimInstanceProxy.h @@ -55,10 +55,16 @@ struct SENSEGLOVE_API FSGVirtualHandAnimInstanceProxy : public FAnimInstanceProx GENERATED_USTRUCT_BODY() private: - bool bIsVirtualHandVisible; + UPROPERTY(Transient) USGVirtualHandComponent* VirtualHand; + + UPROPERTY(Transient) USkeletalMesh* HandMeshAsset; + + UPROPERTY(Transient) USkeleton* HandSkeleton; + + bool bIsVirtualHandVisible; bool bMarkRenderStateDirty; FXRMotionControllerData MotionControllerData;