Files
PHY/Plugins/GMS/Source/GenericMovementSystem/Private/Locomotions/GMS_AnimState.cpp
2026-03-03 01:23:02 +08:00

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;
}