clean up redundant hand animation code

This commit is contained in:
Mamadou Babaei
2023-03-28 10:39:48 +02:00
parent aef3f5afb0
commit b8cb528218
5 changed files with 23 additions and 151 deletions
@@ -40,31 +40,6 @@ USGVirtualHandAnimInstance::USGVirtualHandAnimInstance(const FObjectInitializer&
{
}
void USGVirtualHandAnimInstance::NativeInitializeAnimation()
{
Super::NativeInitializeAnimation();
}
void USGVirtualHandAnimInstance::NativeUpdateAnimation(const float DeltaSeconds)
{
Super::NativeUpdateAnimation(DeltaSeconds);
}
void USGVirtualHandAnimInstance::NativePostEvaluateAnimation()
{
Super::NativePostEvaluateAnimation();
}
void USGVirtualHandAnimInstance::NativeUninitializeAnimation()
{
Super::NativeUninitializeAnimation();
}
void USGVirtualHandAnimInstance::NativeBeginPlay()
{
Super::NativeBeginPlay();
}
FSGVirtualHandAnimInstanceProxy* USGVirtualHandAnimInstance::CreateAnimInstanceProxy()
{
return new FSGVirtualHandAnimInstanceProxy();
@@ -56,26 +56,6 @@ FSGVirtualHandAnimInstanceProxy::FSGVirtualHandAnimInstanceProxy(UAnimInstance*
{
}
void FSGVirtualHandAnimInstanceProxy::Initialize(UAnimInstance* InAnimInstance)
{
FAnimInstanceProxy::Initialize(InAnimInstance);
}
void FSGVirtualHandAnimInstanceProxy::Uninitialize(UAnimInstance* InAnimInstance)
{
FAnimInstanceProxy::Uninitialize(InAnimInstance);
}
void FSGVirtualHandAnimInstanceProxy::PreUpdate(UAnimInstance* InAnimInstance, const float DeltaSeconds)
{
FAnimInstanceProxy::PreUpdate(InAnimInstance, DeltaSeconds);
}
void FSGVirtualHandAnimInstanceProxy::Update(const float DeltaSeconds)
{
FAnimInstanceProxy::Update(DeltaSeconds);
}
void FSGVirtualHandAnimInstanceProxy::PreEvaluateAnimation(UAnimInstance* InAnimInstance)
{
FAnimInstanceProxy::PreEvaluateAnimation(InAnimInstance);
@@ -97,25 +77,25 @@ void FSGVirtualHandAnimInstanceProxy::PreEvaluateAnimation(UAnimInstance* InAnim
bool FSGVirtualHandAnimInstanceProxy::Evaluate(FPoseContext& Output)
{
USkeletalMeshComponent* HandMeshComponent = GetSkelMeshComponent();
USkeletalMeshComponent* HandMeshComponent{GetSkelMeshComponent()};
if (!IsValid(HandMeshComponent))
{
return FAnimInstanceProxy::Evaluate(Output);
}
const USkeletalMesh* HandMesh =
const USkeletalMesh* HandMesh{HandMeshComponent->
#if ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 1
HandMeshComponent->GetSkeletalMeshAsset();
GetSkeletalMeshAsset()
#else
HandMeshComponent->SkeletalMesh;
SkeletalMesh
#endif /* ENGINE_MAJOR_VERSION == 5 && ENGINE_MINOR_VERSION >= 1 */
};
if (!IsValid(HandMesh))
{
return FAnimInstanceProxy::Evaluate(Output);
}
const USkeleton* HandSkeleton = HandMesh->GetSkeleton();
const USkeleton* HandSkeleton{HandMesh->GetSkeleton()};
if (!IsValid(HandSkeleton))
{
return FAnimInstanceProxy::Evaluate(Output);
@@ -162,14 +142,4 @@ bool FSGVirtualHandAnimInstanceProxy::Evaluate(FPoseContext& Output)
}
return true;
}
void FSGVirtualHandAnimInstanceProxy::PostUpdate(UAnimInstance* InAnimInstance) const
{
FAnimInstanceProxy::PostUpdate(InAnimInstance);
}
void FSGVirtualHandAnimInstanceProxy::PostEvaluate(UAnimInstance* InAnimInstance)
{
FAnimInstanceProxy::PostEvaluate(InAnimInstance);
}
@@ -257,11 +257,11 @@ USkeletalMesh* ASGVirtualHand::GetHandMesh() const
{
ensureAlwaysMsgf(IsValid(Mesh), TEXT("Invalid Mesh object!"));
return
return Mesh->
#if ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 1
Mesh->GetSkeletalMeshAsset()
GetSkeletalMeshAsset()
#else
Mesh->SkeletalMesh
SkeletalMesh
#endif /* ENGINE_MAJOR_VERSION == 5 && ENGINE_MINOR_VERSION >= 1 */
;
}
@@ -273,46 +273,28 @@ void ASGVirtualHand::SetHandMesh(USkeletalMesh* VirtualHandMesh, const bool bRei
USkeleton* ASGVirtualHand::GetHandSkeleton() const
{
ensureAlwaysMsgf(IsValid(Mesh), TEXT("Invalid Mesh object!"));
USkeletalMesh* SkeletalMesh =
#if ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 1
Mesh->GetSkeletalMeshAsset()
#else
Mesh->SkeletalMesh
#endif /* ENGINE_MAJOR_VERSION == 5 && ENGINE_MINOR_VERSION >= 1 */
;
USkeletalMesh* SkeletalMesh{GetHandMesh()};
ensureAlwaysMsgf(IsValid(SkeletalMesh), TEXT("Invalid SkeletalMesh object!"));
return
return SkeletalMesh->
#if ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 1
SkeletalMesh->GetSkeleton()
GetSkeleton()
#else
SkeletalMesh->Skeleton
Skeleton
#endif /* ENGINE_MAJOR_VERSION == 5 && ENGINE_MINOR_VERSION >= 1 */
;
}
const FReferenceSkeleton& ASGVirtualHand::GetHandRefSkeleton() const
{
ensureAlwaysMsgf(IsValid(Mesh), TEXT("Invalid Mesh object!"));
USkeletalMesh* SkeletalMesh =
#if ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 1
Mesh->GetSkeletalMeshAsset()
#else
Mesh->SkeletalMesh
#endif /* ENGINE_MAJOR_VERSION == 5 && ENGINE_MINOR_VERSION >= 1 */
;
USkeletalMesh* SkeletalMesh{GetHandMesh()};
ensureAlwaysMsgf(IsValid(SkeletalMesh), TEXT("Invalid SkeletalMesh object!"));
return
return SkeletalMesh->
#if ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 1
SkeletalMesh->GetRefSkeleton()
GetRefSkeleton()
#else
SkeletalMesh->RefSkeleton
RefSkeleton
#endif /* ENGINE_MAJOR_VERSION == 5 && ENGINE_MINOR_VERSION >= 1 */
;
}
@@ -372,11 +354,11 @@ TMap<FName, FRotator> ASGVirtualHand::GetFingersBonesRotations()
return MoveTemp(Rotations);
}
const TArray<TArray<FVector>> HandAngles = HandPose->GetHandAngles();
const TArray<TArray<FVector>> HandAngles{HandPose->GetHandAngles()};
for (int32 FingerIndex = 0; FingerIndex < HandAngles.Num(); ++FingerIndex)
{
const TArray<FVector>& FingerJointAngles = HandAngles[FingerIndex];
const TArray<FVector>& FingerJointAngles{HandAngles[FingerIndex]};
for (int32 JointIndex = 0; JointIndex < FingerJointAngles.Num(); ++JointIndex)
{
@@ -444,26 +426,13 @@ FString ASGVirtualHand::FImpl::GetDefaultMeshPath() const
bool ASGVirtualHand::FImpl::IsUsingUserMesh() const
{
ensureAlwaysMsgf(IsValid(Owner->Mesh), TEXT("Invalid Mesh object!"));
if (!IsValid(
#if ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 1
Owner->Mesh->GetSkeletalMeshAsset()
#else
Owner->Mesh->SkeletalMesh
#endif /* ENGINE_MAJOR_VERSION == 5 && ENGINE_MINOR_VERSION >= 1 */
))
const USkeletalMesh* SkeletalMesh{Owner->GetHandMesh()};
if (!IsValid(SkeletalMesh))
{
return false;
}
const FString CurrentMeshPath(
#if ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 1
Owner->Mesh->GetSkeletalMeshAsset()->GetPathName()
#else
Owner->Mesh->SkeletalMesh->GetPathName()
#endif /* ENGINE_MAJOR_VERSION == 5 && ENGINE_MINOR_VERSION >= 1 */
);
const FString CurrentMeshPath(SkeletalMesh->GetPathName());
const FString LeftHandDefaultMeshPath(GetDefaultLeftHandMeshPath());
const FString LeftHandDefaultMeshPathOnly(GetDefaultLeftHandMeshPathOnly());
const FString RightHandDefaultMeshPath(GetDefaultRightHandMeshPath());
@@ -44,25 +44,7 @@
UCLASS(Transient, Blueprintable, BlueprintType, meta=(BlueprintThreadSafe), Within=SkeletalMeshComponent)
class SENSEGLOVE_API USGVirtualHandAnimInstance : public UAnimInstance
{
GENERATED_UCLASS_BODY()
public:
// the below functions are the native overrides for each phase
// Native initialization override point
virtual void NativeInitializeAnimation() override;
// Native update override point. It is usually a good idea to simply gather data in this step and
// for the bulk of the work to be done in NativeUpdateAnimation.
virtual void NativeUpdateAnimation(float DeltaSeconds) override;
// Native Post Evaluate override point
virtual void NativePostEvaluateAnimation() override;
// Native Uninitialize override point
virtual void NativeUninitializeAnimation() override;
// Executed when begin play is called on the owning component
virtual void NativeBeginPlay() override;
GENERATED_UCLASS_BODY()
protected:
virtual FSGVirtualHandAnimInstanceProxy* CreateAnimInstanceProxy() override;
@@ -54,31 +54,7 @@ public:
FSGVirtualHandAnimInstanceProxy(UAnimInstance* Instance);
protected:
/** Called when our anim instance is being initialized */
virtual void Initialize(UAnimInstance* InAnimInstance) override;
/** Called when our anim instance is being uninitialized */
virtual void Uninitialize(UAnimInstance* InAnimInstance) override;
/** Called before update so we can copy any data we need */
virtual void PreUpdate(UAnimInstance* InAnimInstance, float DeltaSeconds) override;
/** Update override point */
virtual void Update(float DeltaSeconds) override;
/** Called on the game thread pre-evaluate. */
virtual void PreEvaluateAnimation(UAnimInstance* InAnimInstance) override;
/**
* Evaluate override point
* @return true if this function is implemented, false otherwise.
* Note: the node graph will not be evaluated if this function returns true
*/
virtual bool Evaluate(FPoseContext& Output) override;
/** Called after update so we can copy any data we need */
virtual void PostUpdate(UAnimInstance* InAnimInstance) const override;
/** Called after evaluate so we can do any game thread work we need to */
virtual void PostEvaluate(UAnimInstance* InAnimInstance) override;
};