diff --git a/Content/Characters/AnimInterfaces/ALI_FullBody.uasset b/Content/Characters/AnimInterfaces/ALI_FullBody.uasset index 6476240..cf08fe3 100644 Binary files a/Content/Characters/AnimInterfaces/ALI_FullBody.uasset and b/Content/Characters/AnimInterfaces/ALI_FullBody.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 52503cf..b5181cb 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/Plugins/Developer/RiderLink/Intermediate/FileSystemMappings.ini b/Plugins/Developer/RiderLink/Intermediate/FileSystemMappings.ini index 62b8d7b..1924253 100644 --- a/Plugins/Developer/RiderLink/Intermediate/FileSystemMappings.ini +++ b/Plugins/Developer/RiderLink/Intermediate/FileSystemMappings.ini @@ -1,12 +1,12 @@ /Engine=C:/Program Files/Epic Games/UE_5.5/Engine/Shaders /ShaderAutogen=H:/Projects/OLS/Intermediate/ShaderAutogen -/Plugin/GLTFExporter=C:/Program Files/Epic Games/UE_5.5/Engine/Plugins/Enterprise/GLTFExporter/Shaders /Plugin/FX/Niagara=C:/Program Files/Epic Games/UE_5.5/Engine/Plugins/FX/Niagara/Shaders /Plugin/ExrReaderShaders=C:/Program Files/Epic Games/UE_5.5/Engine/Plugins/Media/ImgMedia/Shaders -/Plugin/WmfMedia=C:/Program Files/Epic Games/UE_5.5/Engine/Plugins/Media/WmfMedia/Shaders /NNEDenoiserShaders=C:/Program Files/Epic Games/UE_5.5/Engine/Plugins/NNE/NNEDenoiser/Shaders +/Plugin/WmfMedia=C:/Program Files/Epic Games/UE_5.5/Engine/Plugins/Media/WmfMedia/Shaders /Plugin/ComputeFramework=C:/Program Files/Epic Games/UE_5.5/Engine/Plugins/Runtime/ComputeFramework/Shaders /Plugin/Runtime/HairStrands=C:/Program Files/Epic Games/UE_5.5/Engine/Plugins/Runtime/HairStrands/Shaders +/Plugin/GLTFExporter=C:/Program Files/Epic Games/UE_5.5/Engine/Plugins/Enterprise/GLTFExporter/Shaders /NFORDenoise=C:/Program Files/Epic Games/UE_5.5/Engine/Plugins/Experimental/NFORDenoise/Shaders /Plugin/HoldoutComposite=C:/Program Files/Epic Games/UE_5.5/Engine/Plugins/Experimental/Compositing/HoldoutComposite/Shaders /Plugin/Optimus=C:/Program Files/Epic Games/UE_5.5/Engine/Plugins/Animation/DeformerGraph/Shaders diff --git a/Source/OLSAnimation/Private/AnimInstances/OLSBaseLinkedLayerAnimInstance.cpp b/Source/OLSAnimation/Private/AnimInstances/OLSBaseLinkedLayerAnimInstance.cpp index 6c12ccd..f2c235e 100644 --- a/Source/OLSAnimation/Private/AnimInstances/OLSBaseLinkedLayerAnimInstance.cpp +++ b/Source/OLSAnimation/Private/AnimInstances/OLSBaseLinkedLayerAnimInstance.cpp @@ -85,34 +85,18 @@ EOLSHipDirection UOLSBaseLinkedLayerAnimInstance::GetHipDirection() const return (isHipForward) ? EOLSHipDirection::EForward : EOLSHipDirection::EBackward; } -FOLSStanceAnimSets UOLSBaseLinkedLayerAnimInstance::GetStanceAnimSets(const bool isCrouching) const +const FOLSStanceAnimSets& UOLSBaseLinkedLayerAnimInstance::GetStanceAnimSets(const bool isCrouching) const { - return (isCrouching ? CrouchingAnimSets : StandingAnimSets); + return (isCrouching ? Crouching_AnimSets : Standing_AnimSets); } -const FOLSGaitAnimSets& UOLSBaseLinkedLayerAnimInstance::GetGaitAnimSets( - const bool isCrouching, const EOLSGait& locomotionState) const +const FOLSGaitAnimSets& UOLSBaseLinkedLayerAnimInstance::GetGaitAnimSets(const bool isCrouching, + const EOLSGait& locomotionState) const { const FOLSStanceAnimSets& stanceAnimSets = GetStanceAnimSets(isCrouching); - const FOLSGaitAnimSets* result = nullptr; - - // Attempt to select the appropriate gait anim set. - result = (isCrouching) - ? stanceAnimSets.SelectGaitAnimSetByGait(EOLSGait::EWalk) - : stanceAnimSets.SelectGaitAnimSetByGait(locomotionState); - - // Log an error if the pointer is null to help debugging. - if (!result) - { - // UE_LOG(LogTemp, Warning, TEXT("UOLSBaseLinkedLayerAnimInstance::GetGaitAnimSets - Failed to find GaitAnimSet for Gait: %d"), static_cast(locomotionState)); - // ensureMsgf(false, TEXT("GetGaitAnimSets returned nullptr! Check locomotionState and isCrouching.")); - - // Return a fallback or handle the error based on your requirements. - return FOLSGaitAnimSets::EmptyAnimSet; - } - - // Safely dereference the pointer. - return *result; + return (isCrouching) + ? stanceAnimSets.GetGaitAnimSetByGait(EOLSGait::EWalk) + : stanceAnimSets.GetGaitAnimSetByGait(locomotionState); } UAnimSequence* UOLSBaseLinkedLayerAnimInstance::SelectIdleAnimation(const bool isCrouching) const @@ -122,7 +106,7 @@ UAnimSequence* UOLSBaseLinkedLayerAnimInstance::SelectIdleAnimation(const bool i UAnimSequence* UOLSBaseLinkedLayerAnimInstance::SelectIdleEntryAnimation(const bool isCrouching) const { - return GetStanceAnimSets(isCrouching).GetIdleEntryAnimation(); + return GetStanceAnimSets(isCrouching).GetIdleExitAnimation(); } UAnimSequence* UOLSBaseLinkedLayerAnimInstance::SelectIdleBreakAnimation(const bool isCrouching) const diff --git a/Source/OLSAnimation/Private/Data/OLSAnimationData.cpp b/Source/OLSAnimation/Private/Data/OLSAnimationData.cpp index 3891a01..a182183 100644 --- a/Source/OLSAnimation/Private/Data/OLSAnimationData.cpp +++ b/Source/OLSAnimation/Private/Data/OLSAnimationData.cpp @@ -35,7 +35,7 @@ UAnimSequence* FOLSIdleAnimSet::GetRandomIdleBreakAnimation() const return IdleBreaks[FMath::RandRange(0, idleBreaksNum - 1)]; } -UAnimSequence* FOLSIdleAndTurnInPlaceAnimSet::GetIdleEntryAnimation() const +UAnimSequence* FOLSIdleAndTurnInPlaceAnimSet::GetIdleExitAnimation() const { return IdleAnimSet.IdleExit; } @@ -155,9 +155,9 @@ UAnimSequence* FOLSStanceAnimSets::GetIdleAnimation() const return IdleAndTurnInPlaceAnimSet.GetIdleAnimation(); } -UAnimSequence* FOLSStanceAnimSets::GetIdleEntryAnimation() const +UAnimSequence* FOLSStanceAnimSets::GetIdleExitAnimation() const { - return IdleAndTurnInPlaceAnimSet.GetIdleEntryAnimation(); + return IdleAndTurnInPlaceAnimSet.GetIdleExitAnimation(); } UAnimSequence* FOLSStanceAnimSets::GetRandomIdleBreakAnimation() const @@ -165,29 +165,38 @@ UAnimSequence* FOLSStanceAnimSets::GetRandomIdleBreakAnimation() const return IdleAndTurnInPlaceAnimSet.GetRandomIdleBreakAnimation(); } -bool FOLSStanceAnimSets::CanPlayIdleBreakAnimation() const -{ - return IdleAndTurnInPlaceAnimSet.CanPlayIdleBreakAnimation(); -} - UAnimSequence* FOLSStanceAnimSets::GetTurnInPlaceAnimation(const float direction) const { return IdleAndTurnInPlaceAnimSet.GetTurnInPlaceAnimation(direction); } -const FOLSGaitAnimSets* FOLSStanceAnimSets::SelectGaitAnimSetByGait(const EOLSGait& gait) const +bool FOLSStanceAnimSets::CanPlayIdleBreakAnimation() const { - return GaitAnimSets.Find(gait); + return false; +} + +const FOLSGaitAnimSets& FOLSStanceAnimSets::GetGaitAnimSetByGait(const EOLSGait& gait) const +{ + return WalkAnimSets; +} + +const FOLSGaitAnimSets& FOLSStanceAnimSets_Standing::GetGaitAnimSetByGait(const EOLSGait& gait) const +{ + switch (gait) + { + case EOLSGait::EWalk: + return WalkAnimSets; + break; + + case EOLSGait::EJog: + return JogAnimSets; + + case EOLSGait::ESprint: + return SprintAnimSets; + } + + return FOLSStanceAnimSets::GetGaitAnimSetByGait(gait); } FOLSGaitAnimSets FOLSGaitAnimSets::EmptyAnimSet = FOLSGaitAnimSets(); -const FVector2D& FOLSRootYawOffsetClamp::GetRootYawOffsetClamp(const EOLSStance stance) const -{ - return (stance == EOLSStance::EStanding ? RootYawOffsetClamp_Standing : RootYawOffsetClamp_Crouching); -} - -const FOLSRootYawOffsetClamp& FOLSRootYawOffsetClamps::GetRootYawOffsetClamp(const EOLSRotationMode& rotationMode) const -{ - return RootYawOffsetClamps.FindChecked(rotationMode); -} diff --git a/Source/OLSAnimation/Public/AnimInstances/OLSBaseLinkedLayerAnimInstance.h b/Source/OLSAnimation/Public/AnimInstances/OLSBaseLinkedLayerAnimInstance.h index 292f061..0d3aa14 100644 --- a/Source/OLSAnimation/Public/AnimInstances/OLSBaseLinkedLayerAnimInstance.h +++ b/Source/OLSAnimation/Public/AnimInstances/OLSBaseLinkedLayerAnimInstance.h @@ -44,7 +44,7 @@ protected: //~ Blueprint thread-safe update functions. protected: virtual EOLSHipDirection GetHipDirection() const; - FOLSStanceAnimSets GetStanceAnimSets(const bool isCrouching) const; + const FOLSStanceAnimSets& GetStanceAnimSets(const bool isCrouching) const; const FOLSGaitAnimSets& GetGaitAnimSets(const bool isCrouching, const EOLSGait& locomotionState) const; protected: @@ -233,10 +233,10 @@ protected: float HipDirectionBuffer = 5.f; UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Settings|AnimSet") - FOLSStanceAnimSets StandingAnimSets; + FOLSStanceAnimSets Crouching_AnimSets; UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Settings|AnimSet") - FOLSStanceAnimSets CrouchingAnimSets; + FOLSStanceAnimSets_Standing Standing_AnimSets; UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Settings|AnimSet|DistanceMatching") FName GroundDistanceCurveName = NAME_None; diff --git a/Source/OLSAnimation/Public/Data/OLSAnimationData.h b/Source/OLSAnimation/Public/Data/OLSAnimationData.h index 81af5c4..276f784 100644 --- a/Source/OLSAnimation/Public/Data/OLSAnimationData.h +++ b/Source/OLSAnimation/Public/Data/OLSAnimationData.h @@ -81,7 +81,7 @@ struct FOLSIdleAndTurnInPlaceAnimSet public: - FORCEINLINE class UAnimSequence* GetIdleEntryAnimation() const; + FORCEINLINE class UAnimSequence* GetIdleExitAnimation() const; FORCEINLINE class UAnimSequence* GetIdleAnimation() const; FORCEINLINE class UAnimSequence* GetRandomIdleBreakAnimation() const; FORCEINLINE class UAnimSequence* GetTurnInPlaceAnimation(const float direction) const; @@ -262,55 +262,51 @@ struct FOLSStanceAnimSets GENERATED_BODY() public: + FOLSStanceAnimSets() = default; + FOLSStanceAnimSets(const FOLSStanceAnimSets&) = default; + FOLSStanceAnimSets(FOLSStanceAnimSets&&) = default; + + FOLSStanceAnimSets& operator=(const FOLSStanceAnimSets&) = default; + FOLSStanceAnimSets& operator=(FOLSStanceAnimSets&&) = default; + + virtual ~FOLSStanceAnimSets() = default; - class UAnimSequence* GetIdleAnimation() const; - class UAnimSequence* GetIdleEntryAnimation() const; - class UAnimSequence* GetRandomIdleBreakAnimation() const; - bool CanPlayIdleBreakAnimation() const; - class UAnimSequence* GetTurnInPlaceAnimation(const float direction) const; - const FOLSGaitAnimSets* SelectGaitAnimSetByGait(const EOLSGait& gait) const; - public: - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Stance Anim Sets") - TMap GaitAnimSets; + class UAnimSequence* GetIdleAnimation() const; + class UAnimSequence* GetIdleExitAnimation() const; + class UAnimSequence* GetRandomIdleBreakAnimation() const; + class UAnimSequence* GetTurnInPlaceAnimation(const float direction) const; + virtual bool CanPlayIdleBreakAnimation() const; + +public: + + virtual const FOLSGaitAnimSets& GetGaitAnimSetByGait(const EOLSGait& gait) const; + +public: + UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Stance Anim Sets") FOLSIdleAndTurnInPlaceAnimSet IdleAndTurnInPlaceAnimSet; UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Stance Anim Sets") - FOLSAimAnimSet AimAnimSet; + FOLSGaitAnimSets WalkAnimSets; }; USTRUCT(BlueprintType) -struct FOLSRootYawOffsetClamp +struct FOLSStanceAnimSets_Standing : public FOLSStanceAnimSets { GENERATED_BODY() public: - const FVector2D& GetRootYawOffsetClamp(const EOLSStance stance) const; - -public: - - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Root Yaw Offset Clamp") - FVector2D RootYawOffsetClamp_Standing = FVector2D::ZeroVector; - - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Root Yaw Offset Clamp") - FVector2D RootYawOffsetClamp_Crouching = FVector2D::ZeroVector; -}; - -USTRUCT(BlueprintType) -struct FOLSRootYawOffsetClamps -{ - GENERATED_BODY() + virtual const FOLSGaitAnimSets& GetGaitAnimSetByGait(const EOLSGait& gait) const override; public: - - const FOLSRootYawOffsetClamp& GetRootYawOffsetClamp(const EOLSRotationMode& rotationMode) const; -public: - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Stance Anim Sets") - TMap RootYawOffsetClamps; -}; + FOLSGaitAnimSets JogAnimSets; + + UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Stance Anim Sets") + FOLSGaitAnimSets SprintAnimSets; +}; \ No newline at end of file