74 lines
3.7 KiB
C++
74 lines
3.7 KiB
C++
// Copyright 2025 https://yuewu.dev/en All Rights Reserved.
|
|
|
|
|
|
#include "Locomotions/GMS_AnimState.h"
|
|
|
|
#include "AnimationWarpingLibrary.h"
|
|
#include "Animation/AnimSequenceBase.h"
|
|
#include "Animation/AnimSequence.h"
|
|
#include "Utility/GMS_Constants.h"
|
|
|
|
#include UE_INLINE_GENERATED_CPP_BY_NAME(GMS_AnimState)
|
|
|
|
|
|
void FGMS_AnimState_Layering::ApplyValueFromSequence(const UAnimSequence* InSequence, float ExplicitTime)
|
|
{
|
|
UAnimationWarpingLibrary::GetCurveValueFromAnimation(InSequence, "LayerHead", ExplicitTime, HeadBlendAmount);
|
|
UAnimationWarpingLibrary::GetCurveValueFromAnimation(InSequence, "LayerHeadAdditive", ExplicitTime, HeadAdditiveBlendAmount);
|
|
UAnimationWarpingLibrary::GetCurveValueFromAnimation(InSequence, "LayerHeadSlot", ExplicitTime, HeadSlotBlendAmount);
|
|
|
|
UAnimationWarpingLibrary::GetCurveValueFromAnimation(InSequence, "LayerArmLeft", ExplicitTime, ArmLeftBlendAmount);
|
|
UAnimationWarpingLibrary::GetCurveValueFromAnimation(InSequence, "LayerArmLeftAdditive", ExplicitTime, ArmLeftAdditiveBlendAmount);
|
|
UAnimationWarpingLibrary::GetCurveValueFromAnimation(InSequence, "LayerArmLeftSlot", ExplicitTime, ArmLeftSlotBlendAmount);
|
|
UAnimationWarpingLibrary::GetCurveValueFromAnimation(InSequence, "LayerArmLeftLocalSpace", ExplicitTime, ArmLeftLocalSpaceBlendAmount);
|
|
ArmLeftMeshSpaceBlendAmount = 1 - ArmLeftLocalSpaceBlendAmount;
|
|
|
|
UAnimationWarpingLibrary::GetCurveValueFromAnimation(InSequence, "LayerArmRight", ExplicitTime, ArmRightBlendAmount);
|
|
UAnimationWarpingLibrary::GetCurveValueFromAnimation(InSequence, "LayerArmRightAdditive", ExplicitTime, ArmRightAdditiveBlendAmount);
|
|
UAnimationWarpingLibrary::GetCurveValueFromAnimation(InSequence, "LayerArmRightSlot", ExplicitTime, ArmRightSlotBlendAmount);
|
|
UAnimationWarpingLibrary::GetCurveValueFromAnimation(InSequence, "LayerArmRightLocalSpace", ExplicitTime, ArmRightLocalSpaceBlendAmount);
|
|
ArmRightMeshSpaceBlendAmount = 1 - ArmRightLocalSpaceBlendAmount;
|
|
|
|
UAnimationWarpingLibrary::GetCurveValueFromAnimation(InSequence, "LayerHandLeft", ExplicitTime, HandLeftBlendAmount);
|
|
UAnimationWarpingLibrary::GetCurveValueFromAnimation(InSequence, "LayerHandRight", ExplicitTime, HandRightBlendAmount);
|
|
UAnimationWarpingLibrary::GetCurveValueFromAnimation(InSequence, "LayerSpine", ExplicitTime, SpineBlendAmount);
|
|
UAnimationWarpingLibrary::GetCurveValueFromAnimation(InSequence, "LayerSpineAdditive", ExplicitTime, SpineAdditiveBlendAmount);
|
|
UAnimationWarpingLibrary::GetCurveValueFromAnimation(InSequence, "LayerSpineSlot", ExplicitTime, SpineSlotBlendAmount);
|
|
UAnimationWarpingLibrary::GetCurveValueFromAnimation(InSequence, "LayerPelvis", ExplicitTime, PelvisBlendAmount);
|
|
UAnimationWarpingLibrary::GetCurveValueFromAnimation(InSequence, "LayerPelvisSlot", ExplicitTime, PelvisSlotBlendAmount);
|
|
UAnimationWarpingLibrary::GetCurveValueFromAnimation(InSequence, "LayerLegs", ExplicitTime, LegsBlendAmount);
|
|
UAnimationWarpingLibrary::GetCurveValueFromAnimation(InSequence, "LayerLegsSlot", ExplicitTime, LegsSlotBlendAmount);
|
|
}
|
|
|
|
void FGMS_AnimState_Layering::ZeroOut()
|
|
{
|
|
HeadBlendAmount = 0.0f;
|
|
HeadAdditiveBlendAmount = 0.0f;
|
|
HeadSlotBlendAmount = 0.0f;
|
|
|
|
ArmLeftBlendAmount = 0.0f;
|
|
ArmLeftAdditiveBlendAmount = 0.0f;
|
|
ArmLeftSlotBlendAmount = 0.0f;
|
|
ArmLeftLocalSpaceBlendAmount = 0.0f;
|
|
ArmLeftMeshSpaceBlendAmount = 0.0f;
|
|
|
|
ArmRightBlendAmount = 0.0f;
|
|
ArmRightAdditiveBlendAmount = 0.0f;
|
|
ArmRightSlotBlendAmount = 0.0f;
|
|
ArmRightLocalSpaceBlendAmount = 0.0f;
|
|
ArmRightMeshSpaceBlendAmount = 0.0f;
|
|
|
|
HandLeftBlendAmount = 0.0f;
|
|
HandRightBlendAmount = 0.0f;
|
|
|
|
SpineBlendAmount = 0.0f;
|
|
SpineAdditiveBlendAmount = 0.0f;
|
|
SpineSlotBlendAmount = 0.0f;
|
|
|
|
PelvisBlendAmount = 0.0f;
|
|
PelvisSlotBlendAmount = 0.0f;
|
|
|
|
LegsBlendAmount = 0.0f;
|
|
LegsSlotBlendAmount = 0.0f;
|
|
}
|