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 792a869..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 44a145d..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 796477e..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 27c1fe7..f07efb5 100644 --- a/Source/OLSAnimation/Private/AnimInstances/OLSBaseLinkedLayerAnimInstance.cpp +++ b/Source/OLSAnimation/Private/AnimInstances/OLSBaseLinkedLayerAnimInstance.cpp @@ -159,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. @@ -176,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; @@ -192,7 +194,8 @@ 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( @@ -208,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 8ea8938..0e06931 100644 --- a/Source/OLSAnimation/Private/Data/OLSAnimationData.cpp +++ b/Source/OLSAnimation/Private/Data/OLSAnimationData.cpp @@ -60,28 +60,6 @@ bool FOLSIdleAndTurnInPlaceAnimSet::CanPlayIdleBreakAnimation() const return IdleAnimSet.HasAnyIdleBreaks(); } -UAnimSequence* FOLSMovementAnimSet::GetMovementAnimationByCardinalDirection(const EOLSCardinalDirection& direction) 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; -} - class UAnimSequence* FOLSMovementAnimSet_FeetPosition::GetForwardLeftOrRightFoot(const bool isRightFootFarFromTarget) const { return (isRightFootFarFromTarget ? RightFoot : LeftFoot); @@ -94,7 +72,7 @@ class UAnimSequence* FOLSMovementAnimSet_ForwardFacing_StartCycle::GetForwardLef 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( @@ -108,10 +86,10 @@ class UAnimSequence* FOLSMovementAnimSet_ForwardFacing_StartCycle::GetMovementAn 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); @@ -121,19 +99,19 @@ class UAnimSequence* FOLSMovementAnimSet_ForwardFacing_StartCycle::GetMovementAn return result; } -UAnimSequence* FOLSMovementAnimSet_ForwardFacing_StopCycle::GetLeftOrRightAnim(const bool isRightFootPlanted) const -{ - return Stop.GetForwardLeftOrRightFoot(isRightFootPlanted); -} - class UAnimSequence* FOLSMovementAnimSet_ForwardFacing_Pivot::GetLeftOrRightByAngle(const float angle, - const bool isRightFootFarFromTarget) const + const bool isRightFootFarFromTarget) const { return (angle > 0.f ? Pivot180R.GetForwardLeftOrRightFoot(isRightFootFarFromTarget) : Pivot180L.GetForwardLeftOrRightFoot(isRightFootFarFromTarget)); } +UAnimSequence* FOLSMovementAnimSet_ForwardFacing_StopCycle::GetLeftOrRightAnim(const bool isRightFootPlanted) const +{ + return Stop.GetForwardLeftOrRightFoot(isRightFootPlanted); +} + void FOLSGaitAnimSet::GetPlayRateByLocomotionState(const EOLSLocomotionStatePlayRate& state, FVector2D& outPlayRate) const { switch (state) @@ -150,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/Data/OLSAnimationData.h b/Source/OLSAnimation/Public/Data/OLSAnimationData.h index 07c076b..68c8dc3 100644 --- a/Source/OLSAnimation/Public/Data/OLSAnimationData.h +++ b/Source/OLSAnimation/Public/Data/OLSAnimationData.h @@ -16,19 +16,20 @@ struct FOLSFeetPositionSettings public: - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "FeetPositionSettings") + UPROPERTY(EditAnywhere, BlueprintReadOnly) FName IKFootRight = NAME_None; - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "FeetPositionSettings") + UPROPERTY(EditAnywhere, BlueprintReadOnly) FName IKTargetFootRight = NAME_None; - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "FeetPositionSettings") + UPROPERTY(EditAnywhere, BlueprintReadOnly) FName IKFootLeft = NAME_None; - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "FeetPositionSettings") + UPROPERTY(EditAnywhere, BlueprintReadOnly) FName IKTargetFootLeft = NAME_None; }; +#pragma region Idle and Turn In-Place AnimSets USTRUCT(BlueprintType) struct FOLSTurnInPlaceAnimSet { @@ -40,16 +41,16 @@ 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; }; @@ -66,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; }; @@ -91,36 +92,13 @@ 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; }; - -USTRUCT(BlueprintType) -struct FOLSMovementAnimSet -{ - GENERATED_BODY() - -public: - - class UAnimSequence* GetMovementAnimationByCardinalDirection(const EOLSCardinalDirection& direction) 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, Category = "Movement Cycle Anim Set") - TObjectPtr Left = nullptr; -}; +#pragma endregion USTRUCT(BlueprintType) struct FOLSMovementAnimSet_FeetPosition @@ -133,14 +111,15 @@ public: public: - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Movement Anim Set") + UPROPERTY(EditAnywhere, BlueprintReadOnly) TObjectPtr LeftFoot = nullptr; - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Movement Anim Set") + UPROPERTY(EditAnywhere, BlueprintReadOnly) TObjectPtr RightFoot = nullptr; }; +#pragma region Forward Facing Anim Sets USTRUCT(BlueprintType) struct FOLSMovementAnimSet_ForwardFacing_StartCycle { @@ -156,20 +135,20 @@ public: public: - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Movement Start Cycle Anim Set") + 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) @@ -184,10 +163,10 @@ public: public: - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Movement Pivot Anim Set") + UPROPERTY(EditAnywhere, BlueprintReadOnly, meta = (DisplayName = "Pivot Turn 180 Left")) FOLSMovementAnimSet_FeetPosition Pivot180L; - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Movement Pivot Anim Set") + UPROPERTY(EditAnywhere, BlueprintReadOnly, meta = (DisplayName = "Pivot Turn 180 Right")) FOLSMovementAnimSet_FeetPosition Pivot180R; }; @@ -202,9 +181,38 @@ public: public: - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Movement Stop Cycle Anim Set") + UPROPERTY(EditAnywhere, BlueprintReadOnly, meta = (DisplayName = "Stop Left or Right Foot")) FOLSMovementAnimSet_FeetPosition Stop; }; +#pragma endregion + +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) struct FOLSGaitAnimSet @@ -257,6 +265,7 @@ public: FOLSMovementAnimSet_ForwardFacing_StopCycle StopCycle; }; + USTRUCT(BlueprintType) struct FOLSGaitAnimSet_CameraFacing : public FOLSGaitAnimSet { @@ -264,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": [