Refactored FeetPosition.

Addeed Blend profiles to stop -> start
This commit is contained in:
mrlee207 2025-07-29 15:50:33 +07:00
parent 9ec5388f4e
commit b4105ffb75
5 changed files with 26 additions and 23 deletions

View File

@ -60,20 +60,15 @@ void UOLSBaseLinkedLayerAnimInstance::NativeThreadSafeUpdateSkeletonControlData(
OrientationWarpingAlpha = GetCurveValue(EnableOrientationWarpingName);
bIsLeftFootFarFromTarget = UKismetAnimationLibrary::K2_DistanceBetweenTwoSocketsAndMapRange(
GetOwningComponent(), IKFootLeft, RTS_World,
IKTargetFootLeft, RTS_World, false,
GetOwningComponent(), FeetPositionSettings.IKFootLeft, RTS_World,
FeetPositionSettings.IKTargetFootLeft, RTS_World, false,
0.f, 0.f, 0.f, 0.f) > 8.0f;
bIsRightFootFarFromTarget = UKismetAnimationLibrary::K2_DistanceBetweenTwoSocketsAndMapRange(
GetOwningComponent(), IKFootRight, RTS_World,
IKTargetFootRight, RTS_World, false,
GetOwningComponent(), FeetPositionSettings.IKFootRight, RTS_World,
FeetPositionSettings.IKTargetFootRight, RTS_World, false,
0.f, 0.f, 0.f, 0.f) > 8.0f;
// const float feetPositionValue = GetCurveValue(FeetPositionCurveName);
// bIsRightFootPlanted = feetPositionValue > 0.5f;
// bIsLeftFootPlanted = FMath::Abs(feetPositionValue) > 0.5f;
// If neither foot is planted, use the last valid foot
if (!bIsRightFootFarFromTarget && !bIsLeftFootFarFromTarget)
{

View File

@ -262,20 +262,8 @@ protected:
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Settings|AnimSet|DistanceMatching")
FName JumpDistanceCurveName = NAME_None;
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Settings|AnimSet|FeetPosition")
FName FeetPositionCurveName = NAME_None;
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Settings|AnimSet|FeetPosition")
FName IKFootRight = NAME_None;
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Settings|AnimSet|FeetPosition")
FName IKTargetFootRight = NAME_None;
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Settings|AnimSet|FeetPosition")
FName IKFootLeft = NAME_None;
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Settings|AnimSet|FeetPosition")
FName IKTargetFootLeft = NAME_None;
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Settings|FeetPosition")
FOLSFeetPositionSettings FeetPositionSettings;
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Settings|StrideWarping")
float StrideWarpingBlendInDurationScaled = .2f;

View File

@ -9,6 +9,26 @@
#include "UObject/Object.h"
#include "OLSAnimationData.generated.h"
USTRUCT(BlueprintType)
struct FOLSFeetPositionSettings
{
GENERATED_BODY()
public:
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "FeetPositionSettings")
FName IKFootRight = NAME_None;
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "FeetPositionSettings")
FName IKTargetFootRight = NAME_None;
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "FeetPositionSettings")
FName IKFootLeft = NAME_None;
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "FeetPositionSettings")
FName IKTargetFootLeft = NAME_None;
};
USTRUCT(BlueprintType)
struct FOLSRotationMatchingData
{