diff --git a/.vsconfig b/.vsconfig index 3b919ea..b3c233d 100644 --- a/.vsconfig +++ b/.vsconfig @@ -1,12 +1,10 @@ { "version": "1.0", "components": [ - "Component.Unreal.Debugger", - "Component.Unreal.Ide", "Microsoft.Net.Component.4.6.2.TargetingPack", + "Microsoft.VisualStudio.Component.Unreal.Workspace", "Microsoft.VisualStudio.Component.VC.14.38.17.8.ATL", "Microsoft.VisualStudio.Component.VC.14.38.17.8.x86.x64", - "Microsoft.VisualStudio.Component.VC.Llvm.Clang", "Microsoft.VisualStudio.Component.VC.Tools.x86.x64", "Microsoft.VisualStudio.Component.Windows11SDK.22621", "Microsoft.VisualStudio.Workload.CoreEditor", diff --git a/Content/Characters/UEFN_Mannequin/AnimationLayers/ABP_UEFN_Base_New.uasset b/Content/Characters/UEFN_Mannequin/AnimationLayers/ABP_UEFN_Base_New.uasset index d2db97c..7a94ea1 100644 Binary files a/Content/Characters/UEFN_Mannequin/AnimationLayers/ABP_UEFN_Base_New.uasset and b/Content/Characters/UEFN_Mannequin/AnimationLayers/ABP_UEFN_Base_New.uasset differ diff --git a/Content/Characters/UEFN_Mannequin/AnimationLayers/ABP_UEFN_FullBody_Base_New.uasset b/Content/Characters/UEFN_Mannequin/AnimationLayers/ABP_UEFN_FullBody_Base_New.uasset index 2363336..501045a 100644 Binary files a/Content/Characters/UEFN_Mannequin/AnimationLayers/ABP_UEFN_FullBody_Base_New.uasset and b/Content/Characters/UEFN_Mannequin/AnimationLayers/ABP_UEFN_FullBody_Base_New.uasset differ diff --git a/Saved/AutoScreenshot.png b/Saved/AutoScreenshot.png index 108f6df..3c4416e 100644 Binary files a/Saved/AutoScreenshot.png and b/Saved/AutoScreenshot.png differ diff --git a/Source/OLSAnimation/Private/AnimInstances/OLSBaseLinkedLayerAnimInstance.cpp b/Source/OLSAnimation/Private/AnimInstances/OLSBaseLinkedLayerAnimInstance.cpp index eaacde1..f07efb5 100644 --- a/Source/OLSAnimation/Private/AnimInstances/OLSBaseLinkedLayerAnimInstance.cpp +++ b/Source/OLSAnimation/Private/AnimInstances/OLSBaseLinkedLayerAnimInstance.cpp @@ -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) { @@ -164,7 +159,8 @@ UAnimSequence* UOLSBaseLinkedLayerAnimInstance::SelectStartCycleAnimation(const if (isAiming) { return GetGaitAnimSets(isCrouching, gait).GaitAnimSet_CameraFacing.GetStartCycleFromHipDirection(hipDirection). - GetMovementAnimationByCardinalDirection(velocityDirection); + GetMovementAnimByCardinalDirection( + velocityDirection, bIsRightFootFarFromTarget); } return GetGaitAnimSets(isCrouching, gait).GaitAnimSet_ForwardFacing.StartCycle. @@ -181,7 +177,8 @@ UAnimSequence* UOLSBaseLinkedLayerAnimInstance::SelectCycleAnimation(const bool if (isAiming) { return GetGaitAnimSets(isCrouching, gait).GaitAnimSet_CameraFacing.GetCycleFromHipDirection(hipDirection). - GetMovementAnimationByCardinalDirection(velocityDirection); + GetMovementAnimByCardinalDirection( + velocityDirection, bIsRightFootFarFromTarget); } return GetGaitAnimSets(isCrouching, gait).GaitAnimSet_ForwardFacing.Cycle; @@ -197,11 +194,12 @@ UAnimSequence* UOLSBaseLinkedLayerAnimInstance::SelectPivotAnimation(const bool if (isAiming) { return GetGaitAnimSets(isCrouching, gait).GaitAnimSet_CameraFacing.GetPivotFromHipDirection(hipDirection). - GetMovementAnimationByCardinalDirection(velocityDirection); + GetMovementAnimByCardinalDirection( + velocityDirection, bIsRightFootFarFromTarget); } return GetGaitAnimSets(isCrouching, gait).GaitAnimSet_ForwardFacing.Pivot.GetLeftOrRightByAngle( - angle, bIsLeftFootFarFromTarget, bIsRightFootFarFromTarget); + angle, bIsRightFootFarFromTarget); } UAnimSequence* UOLSBaseLinkedLayerAnimInstance::SelectStopCycleAnimation(const bool isCrouching, @@ -213,8 +211,8 @@ UAnimSequence* UOLSBaseLinkedLayerAnimInstance::SelectStopCycleAnimation(const b if (isAiming) { return GetGaitAnimSets(isCrouching, gait). - GaitAnimSet_CameraFacing.GetStopCycleFromHipDirection(hipDirection). - GetMovementAnimationByCardinalDirection(velocityDirection); + GaitAnimSet_CameraFacing.GetStopCycleFromHipDirection(hipDirection).GetMovementAnimByCardinalDirection( + velocityDirection, bIsRightFootFarFromTarget); } return GetGaitAnimSets(isCrouching, gait).GaitAnimSet_ForwardFacing.StopCycle.GetLeftOrRightAnim(bIsRightFootFarFromTarget); diff --git a/Source/OLSAnimation/Private/Data/OLSAnimationData.cpp b/Source/OLSAnimation/Private/Data/OLSAnimationData.cpp index 75aa21a..0e06931 100644 --- a/Source/OLSAnimation/Private/Data/OLSAnimationData.cpp +++ b/Source/OLSAnimation/Private/Data/OLSAnimationData.cpp @@ -60,54 +60,36 @@ bool FOLSIdleAndTurnInPlaceAnimSet::CanPlayIdleBreakAnimation() const return IdleAnimSet.HasAnyIdleBreaks(); } -UAnimSequence* FOLSMovementAnimSet::GetMovementAnimationByCardinalDirection(const EOLSCardinalDirection& direction) const +class UAnimSequence* FOLSMovementAnimSet_FeetPosition::GetForwardLeftOrRightFoot(const bool isRightFootFarFromTarget) const { - TObjectPtr result = nullptr; - switch (direction) - { - case EOLSCardinalDirection::EForward: - result = Forward; - break; - case EOLSCardinalDirection::EBackward: - result = Backward; - break; - case EOLSCardinalDirection::ERight: - result = Right; - break; - case EOLSCardinalDirection::ELeft: - result = Left; - break; - } - - return result; + return (isRightFootFarFromTarget ? RightFoot : LeftFoot); } -class UAnimSequence* FOLSMovementAnimSet_ForwardFacing_StartCycle::GetForwardLeftOrRightFootByAngle( - const bool isRightFootFront) const +class UAnimSequence* FOLSMovementAnimSet_ForwardFacing_StartCycle::GetForwardLeftOrRightFoot(const bool isRightFootFarFromTarget) const { - return (isRightFootFront) ? Forward_R : Forward_L; + return Forward.GetForwardLeftOrRightFoot(isRightFootFarFromTarget); } UAnimSequence* FOLSMovementAnimSet_ForwardFacing_StartCycle::GetForward180LeftOrRightByAngle(const float angle) const { - return (angle > 0.f) ? Forward180_R : Forward180_L; + return (angle > 0.f) ? Forward180R : Forward180L; } class UAnimSequence* FOLSMovementAnimSet_ForwardFacing_StartCycle::GetMovementAnimationByAngle( - const EOLSCardinalDirection direction, const float angle, const bool isRightFootFront) const + const EOLSCardinalDirection direction, const float angle, const bool isRightFootFarFromTarget) const { TObjectPtr result = nullptr; switch (direction) { case EOLSCardinalDirection::EForward: - result = GetForwardLeftOrRightFootByAngle(isRightFootFront); + result = GetForwardLeftOrRightFoot(isRightFootFarFromTarget); break; case EOLSCardinalDirection::ELeft: - result = Left; + result = Forward90L; break; case EOLSCardinalDirection::ERight: - result = Right; + result = Forward90R; break; case EOLSCardinalDirection::EBackward: result = GetForward180LeftOrRightByAngle(angle); @@ -117,32 +99,17 @@ class UAnimSequence* FOLSMovementAnimSet_ForwardFacing_StartCycle::GetMovementAn return result; } -void FOLSMovementAnimSets_ForwardFacing_Pivot::GetLeftOrRightAnimSet(const bool isLeftFootPlanted, - const bool isRightFootPlanted, FOLSMovementAnimSet_ForwardFacing_Pivot& outAnimSet) const +class UAnimSequence* FOLSMovementAnimSet_ForwardFacing_Pivot::GetLeftOrRightByAngle(const float angle, + const bool isRightFootFarFromTarget) const { - if (isLeftFootPlanted) - { - outAnimSet = Pivot_LeftFoot; - } - else if (isRightFootPlanted) - { - outAnimSet = Pivot_RightFoot; - } + return (angle > 0.f + ? Pivot180R.GetForwardLeftOrRightFoot(isRightFootFarFromTarget) + : Pivot180L.GetForwardLeftOrRightFoot(isRightFootFarFromTarget)); } -UAnimSequence* FOLSMovementAnimSets_ForwardFacing_StopCycle::GetLeftOrRightAnim(const bool isRightFootPlanted) const +UAnimSequence* FOLSMovementAnimSet_ForwardFacing_StopCycle::GetLeftOrRightAnim(const bool isRightFootPlanted) const { - return (isRightFootPlanted ? StopCycle_RightFoot : StopCycle_LeftFoot); -} - -class UAnimSequence* FOLSMovementAnimSets_ForwardFacing_Pivot::GetLeftOrRightByAngle(const float angle, - const bool isLeftFootPlanted, - const bool isRightFootPlanted) const -{ - FOLSMovementAnimSet_ForwardFacing_Pivot animSet; - GetLeftOrRightAnimSet(isLeftFootPlanted, isRightFootPlanted, animSet); - - return (angle > 0.f) ? animSet.Pivot180R : animSet.Pivot180L; + return Stop.GetForwardLeftOrRightFoot(isRightFootPlanted); } void FOLSGaitAnimSet::GetPlayRateByLocomotionState(const EOLSLocomotionStatePlayRate& state, FVector2D& outPlayRate) const @@ -161,22 +128,51 @@ void FOLSGaitAnimSet::GetPlayRateByLocomotionState(const EOLSLocomotionStatePlay } } -const FOLSMovementAnimSet& FOLSGaitAnimSet_CameraFacing::GetStartCycleFromHipDirection(const EOLSHipDirection hipDirection) const +void FOLSMovementAnimSet_CameraFacing_Directional::GetMovementAnimSetByCardinalDirection(const EOLSCardinalDirection& direction, + FOLSMovementAnimSet_FeetPosition& outAnimSet) const +{ + switch (direction) + { + case EOLSCardinalDirection::EForward: + outAnimSet = Forward; + break; + case EOLSCardinalDirection::EBackward: + outAnimSet = Backward; + break; + case EOLSCardinalDirection::ERight: + outAnimSet = Right; + break; + case EOLSCardinalDirection::ELeft: + outAnimSet = Left; + break; + } +} + +UAnimSequence* FOLSMovementAnimSet_CameraFacing_Directional::GetMovementAnimByCardinalDirection(const EOLSCardinalDirection& direction, + const bool isRightFootFarFromTarget) const +{ + FOLSMovementAnimSet_FeetPosition animSet; + GetMovementAnimSetByCardinalDirection(direction, animSet); + + return animSet.GetForwardLeftOrRightFoot(isRightFootFarFromTarget); +} + +const FOLSMovementAnimSet_CameraFacing_Directional& FOLSGaitAnimSet_CameraFacing::GetStartCycleFromHipDirection(const EOLSHipDirection hipDirection) const { return (hipDirection == EOLSHipDirection::EForward) ? StartCycle_HipForward : StartCycle_HipBackward; } -const FOLSMovementAnimSet& FOLSGaitAnimSet_CameraFacing::GetCycleFromHipDirection(const EOLSHipDirection hipDirection) const +const FOLSMovementAnimSet_CameraFacing_Directional& FOLSGaitAnimSet_CameraFacing::GetCycleFromHipDirection(const EOLSHipDirection hipDirection) const { return (hipDirection == EOLSHipDirection::EForward) ? Cycle_HipForward : Cycle_HipBackward; } -const FOLSMovementAnimSet& FOLSGaitAnimSet_CameraFacing::GetPivotFromHipDirection(const EOLSHipDirection hipDirection) const +const FOLSMovementAnimSet_CameraFacing_Directional& FOLSGaitAnimSet_CameraFacing::GetPivotFromHipDirection(const EOLSHipDirection hipDirection) const { return (hipDirection == EOLSHipDirection::EForward) ? Pivot_HipForward : Pivot_HipBackward; } -const FOLSMovementAnimSet& FOLSGaitAnimSet_CameraFacing::GetStopCycleFromHipDirection(const EOLSHipDirection hipDirection) const +const FOLSMovementAnimSet_CameraFacing_Directional& FOLSGaitAnimSet_CameraFacing::GetStopCycleFromHipDirection(const EOLSHipDirection hipDirection) const { return (hipDirection == EOLSHipDirection::EForward) ? StopCycle_HipForward : StopCycle_HipBackward; } diff --git a/Source/OLSAnimation/Public/AnimInstances/OLSBaseLinkedLayerAnimInstance.h b/Source/OLSAnimation/Public/AnimInstances/OLSBaseLinkedLayerAnimInstance.h index 0007705..659da0a 100644 --- a/Source/OLSAnimation/Public/AnimInstances/OLSBaseLinkedLayerAnimInstance.h +++ b/Source/OLSAnimation/Public/AnimInstances/OLSBaseLinkedLayerAnimInstance.h @@ -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; diff --git a/Source/OLSAnimation/Public/Data/OLSAnimationData.h b/Source/OLSAnimation/Public/Data/OLSAnimationData.h index 592d71e..68c8dc3 100644 --- a/Source/OLSAnimation/Public/Data/OLSAnimationData.h +++ b/Source/OLSAnimation/Public/Data/OLSAnimationData.h @@ -10,31 +10,26 @@ #include "OLSAnimationData.generated.h" USTRUCT(BlueprintType) -struct FOLSRotationMatchingData +struct FOLSFeetPositionSettings { GENERATED_BODY() public: - UPROPERTY(BlueprintReadWrite, Category = "RotationMatchingData") - float TargetAngle = 0.0f; + UPROPERTY(EditAnywhere, BlueprintReadOnly) + FName IKFootRight = NAME_None; - UPROPERTY(BlueprintReadWrite, Category = "RotationMatchingData") - float CurrentAccelDir = 0.0f; - - UPROPERTY(BlueprintReadWrite, Category = "RotationMatchingData") - float EntryAccelDir = 0.0f; - - UPROPERTY(BlueprintReadWrite, Category = "RotationMatchingData") - float EntryRotYaw = 0.0f; + UPROPERTY(EditAnywhere, BlueprintReadOnly) + FName IKTargetFootRight = NAME_None; - UPROPERTY(BlueprintReadWrite, Category = "RotationMatchingData") - float DesiredYaw = 0.0f; + UPROPERTY(EditAnywhere, BlueprintReadOnly) + FName IKFootLeft = NAME_None; - UPROPERTY(BlueprintReadWrite, Category = "RotationMatchingData") - uint8 AnimHasRotationLeft : 1 = true; + UPROPERTY(EditAnywhere, BlueprintReadOnly) + FName IKTargetFootLeft = NAME_None; }; +#pragma region Idle and Turn In-Place AnimSets USTRUCT(BlueprintType) struct FOLSTurnInPlaceAnimSet { @@ -46,37 +41,19 @@ public: public: - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "TurnInPlace Anim Set") + UPROPERTY(EditAnywhere, BlueprintReadOnly) TObjectPtr TurnInPlace_90_L = nullptr; - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "TurnInPlace Anim Set") + UPROPERTY(EditAnywhere, BlueprintReadOnly) TObjectPtr TurnInPlace_90_R = nullptr; - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "TurnInPlace Anim Set") + UPROPERTY(EditAnywhere, BlueprintReadOnly) TObjectPtr TurnInPlace_180_L = nullptr; - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "TurnInPlace Anim Set") + UPROPERTY(EditAnywhere, BlueprintReadOnly) TObjectPtr TurnInPlace_180_R = nullptr; }; -USTRUCT(BlueprintType) -struct FOLSAimAnimSet -{ - GENERATED_BODY() - -public: - - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Aim Anim Set") - TObjectPtr AimPose = nullptr; - - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Aim Anim Set") - TObjectPtr IdleAimOffset = nullptr; - - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Aim Anim Set") - TObjectPtr RelaxedAimOffset = nullptr; - -}; - USTRUCT(BlueprintType) struct FOLSIdleAnimSet { @@ -90,13 +67,13 @@ public: public: - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Idle Anim Set") + UPROPERTY(EditAnywhere, BlueprintReadOnly) TArray IdleBreaks; - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Idle Anim Set") + UPROPERTY(EditAnywhere, BlueprintReadOnly) TObjectPtr Idle = nullptr; - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Idle Anim Set") + UPROPERTY(EditAnywhere, BlueprintReadOnly) TObjectPtr IdleExit = nullptr; }; @@ -115,37 +92,34 @@ public: public: - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Idle and Turn In Place Anim Set") + UPROPERTY(EditAnywhere, BlueprintReadOnly) FOLSIdleAnimSet IdleAnimSet; - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Idle and Turn In Place Anim Set") + UPROPERTY(EditAnywhere, BlueprintReadOnly) FOLSTurnInPlaceAnimSet TurnInPlaceAnimSet; }; +#pragma endregion USTRUCT(BlueprintType) -struct FOLSMovementAnimSet +struct FOLSMovementAnimSet_FeetPosition { GENERATED_BODY() public: - - class UAnimSequence* GetMovementAnimationByCardinalDirection(const EOLSCardinalDirection& direction) const; + + class UAnimSequence* GetForwardLeftOrRightFoot(const bool isRightFootFarFromTarget) const; public: - - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Movement Cycle Anim Set") - TObjectPtr Forward = nullptr; - - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Movement Cycle Anim Set") - TObjectPtr Backward = nullptr; - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Movement Cycle Anim Set") - TObjectPtr Right = nullptr; + UPROPERTY(EditAnywhere, BlueprintReadOnly) + TObjectPtr LeftFoot = nullptr; + + UPROPERTY(EditAnywhere, BlueprintReadOnly) + TObjectPtr RightFoot = nullptr; - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Movement Cycle Anim Set") - TObjectPtr Left = nullptr; }; +#pragma region Forward Facing Anim Sets USTRUCT(BlueprintType) struct FOLSMovementAnimSet_ForwardFacing_StartCycle { @@ -153,31 +127,28 @@ struct FOLSMovementAnimSet_ForwardFacing_StartCycle public: - class UAnimSequence* GetForwardLeftOrRightFootByAngle(const bool isRightFootFront) const; + class UAnimSequence* GetForwardLeftOrRightFoot(const bool isRightFootFarFromTarget) const; class UAnimSequence* GetForward180LeftOrRightByAngle(const float angle) const; class UAnimSequence* GetMovementAnimationByAngle(const EOLSCardinalDirection direction, const float angle, - const bool isRightFootFront) const; + const bool isRightFootFarFromTarget) const; public: - - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Movement Start Cycle Anim Set") - TObjectPtr Forward_L = nullptr; - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Movement Start Cycle Anim Set") - TObjectPtr Forward_R = nullptr; + UPROPERTY(EditAnywhere, BlueprintReadOnly, meta = (DisplayName = "Start Forward Left or Right Foot")) + FOLSMovementAnimSet_FeetPosition Forward; - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Movement Start Cycle Anim Set") - TObjectPtr Forward180_L = nullptr; + UPROPERTY(EditAnywhere, BlueprintReadOnly, meta = (DisplayName = "Start Forward Turn 180 Left")) + TObjectPtr Forward180L = nullptr; - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Movement Start Cycle Anim Set") - TObjectPtr Forward180_R = nullptr; - - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Movement Start Cycle Anim Set") - TObjectPtr Right = nullptr; + UPROPERTY(EditAnywhere, BlueprintReadOnly, meta = (DisplayName = "Start Forward Turn 180 Right")) + TObjectPtr Forward180R = nullptr; - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Movement Start Cycle Anim Set") - TObjectPtr Left = nullptr; + UPROPERTY(EditAnywhere, BlueprintReadOnly, meta = (DisplayName = "Start Forward Turn 90 Left")) + TObjectPtr Forward90L = nullptr; + + UPROPERTY(EditAnywhere, BlueprintReadOnly, meta = (DisplayName = "Start Forward Turn 90 Right")) + TObjectPtr Forward90R = nullptr; }; USTRUCT(BlueprintType) @@ -185,43 +156,22 @@ struct FOLSMovementAnimSet_ForwardFacing_Pivot { GENERATED_BODY() -public: - - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Movement Pivot Anim Set") - TObjectPtr Pivot180L = nullptr; - - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Movement Pivot Anim Set") - TObjectPtr Pivot180R = nullptr; -}; - - -USTRUCT(BlueprintType) -struct FOLSMovementAnimSets_ForwardFacing_Pivot -{ - GENERATED_BODY() - -protected: - - void GetLeftOrRightAnimSet(const bool isLeftFootPlanted, const bool isRightFootPlanted, - FOLSMovementAnimSet_ForwardFacing_Pivot& outAnimSet) const; - public: class UAnimSequence* GetLeftOrRightByAngle(const float angle, - const bool isLeftFootPlanted, - const bool isRightFootPlanted) const; + const bool isRightFootFarFromTarget) const; public: - - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Movement Pivot Anim Set") - FOLSMovementAnimSet_ForwardFacing_Pivot Pivot_LeftFoot; - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Movement Pivot Anim Set") - FOLSMovementAnimSet_ForwardFacing_Pivot Pivot_RightFoot; + UPROPERTY(EditAnywhere, BlueprintReadOnly, meta = (DisplayName = "Pivot Turn 180 Left")) + FOLSMovementAnimSet_FeetPosition Pivot180L; + + UPROPERTY(EditAnywhere, BlueprintReadOnly, meta = (DisplayName = "Pivot Turn 180 Right")) + FOLSMovementAnimSet_FeetPosition Pivot180R; }; USTRUCT(BlueprintType) -struct FOLSMovementAnimSets_ForwardFacing_StopCycle +struct FOLSMovementAnimSet_ForwardFacing_StopCycle { GENERATED_BODY() @@ -231,11 +181,37 @@ public: public: - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Movement Pivot Anim Set") - TObjectPtr StopCycle_LeftFoot; + UPROPERTY(EditAnywhere, BlueprintReadOnly, meta = (DisplayName = "Stop Left or Right Foot")) + FOLSMovementAnimSet_FeetPosition Stop; +}; +#pragma endregion - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Movement Pivot Anim Set") - TObjectPtr StopCycle_RightFoot; +USTRUCT(BlueprintType) +struct FOLSMovementAnimSet_CameraFacing_Directional +{ + GENERATED_BODY() + +protected: + + void GetMovementAnimSetByCardinalDirection(const EOLSCardinalDirection& direction, FOLSMovementAnimSet_FeetPosition& outAnimSet) const; + +public: + + class UAnimSequence* GetMovementAnimByCardinalDirection(const EOLSCardinalDirection& direction, const bool isRightFootFarFromTarget) const; + +public: + + UPROPERTY(EditAnywhere, BlueprintReadOnly) + FOLSMovementAnimSet_FeetPosition Forward; + + UPROPERTY(EditAnywhere, BlueprintReadOnly) + FOLSMovementAnimSet_FeetPosition Backward; + + UPROPERTY(EditAnywhere, BlueprintReadOnly) + FOLSMovementAnimSet_FeetPosition Right; + + UPROPERTY(EditAnywhere, BlueprintReadOnly) + FOLSMovementAnimSet_FeetPosition Left; }; USTRUCT(BlueprintType) @@ -283,12 +259,13 @@ public: TObjectPtr Cycle = nullptr; UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Gait Anim Set") - FOLSMovementAnimSets_ForwardFacing_Pivot Pivot; + FOLSMovementAnimSet_ForwardFacing_Pivot Pivot; UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Gait Anim Set") - FOLSMovementAnimSets_ForwardFacing_StopCycle StopCycle; + FOLSMovementAnimSet_ForwardFacing_StopCycle StopCycle; }; + USTRUCT(BlueprintType) struct FOLSGaitAnimSet_CameraFacing : public FOLSGaitAnimSet { @@ -296,36 +273,36 @@ struct FOLSGaitAnimSet_CameraFacing : public FOLSGaitAnimSet public: - const FOLSMovementAnimSet& GetStartCycleFromHipDirection(const EOLSHipDirection hipDirection) const; - const FOLSMovementAnimSet& GetCycleFromHipDirection(const EOLSHipDirection hipDirection) const; - const FOLSMovementAnimSet& GetPivotFromHipDirection(const EOLSHipDirection hipDirection) const; - const FOLSMovementAnimSet& GetStopCycleFromHipDirection(const EOLSHipDirection hipDirection) const; + const FOLSMovementAnimSet_CameraFacing_Directional& GetStartCycleFromHipDirection(const EOLSHipDirection hipDirection) const; + const FOLSMovementAnimSet_CameraFacing_Directional& GetCycleFromHipDirection(const EOLSHipDirection hipDirection) const; + const FOLSMovementAnimSet_CameraFacing_Directional& GetPivotFromHipDirection(const EOLSHipDirection hipDirection) const; + const FOLSMovementAnimSet_CameraFacing_Directional& GetStopCycleFromHipDirection(const EOLSHipDirection hipDirection) const; public: UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Gait Anim Set | Hip Forward") - FOLSMovementAnimSet StartCycle_HipForward; + FOLSMovementAnimSet_CameraFacing_Directional StartCycle_HipForward; UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Gait Anim Set | Hip Forward") - FOLSMovementAnimSet Cycle_HipForward; + FOLSMovementAnimSet_CameraFacing_Directional Cycle_HipForward; UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Gait Anim Set | Hip Forward") - FOLSMovementAnimSet Pivot_HipForward; + FOLSMovementAnimSet_CameraFacing_Directional Pivot_HipForward; UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Gait Anim Set | Hip Forward") - FOLSMovementAnimSet StopCycle_HipForward; + FOLSMovementAnimSet_CameraFacing_Directional StopCycle_HipForward; UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Gait Anim Set | Hip Backward") - FOLSMovementAnimSet StartCycle_HipBackward; + FOLSMovementAnimSet_CameraFacing_Directional StartCycle_HipBackward; UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Gait Anim Set | Hip Backward") - FOLSMovementAnimSet Cycle_HipBackward; + FOLSMovementAnimSet_CameraFacing_Directional Cycle_HipBackward; UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Gait Anim Set | Hip Backward") - FOLSMovementAnimSet Pivot_HipBackward; + FOLSMovementAnimSet_CameraFacing_Directional Pivot_HipBackward; UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Gait Anim Set | Hip Backward") - FOLSMovementAnimSet StopCycle_HipBackward; + FOLSMovementAnimSet_CameraFacing_Directional StopCycle_HipBackward; }; USTRUCT(BlueprintType) diff --git a/ols.uproject b/ols.uproject index 01d55b1..a5237b4 100644 --- a/ols.uproject +++ b/ols.uproject @@ -1,6 +1,6 @@ { "FileVersion": 3, - "EngineAssociation": "5.6", + "EngineAssociation": "5.5", "Category": "", "Description": "", "Modules": [