Refactored OLSAnimationData

This commit is contained in:
LongLy 2024-11-21 12:56:35 -07:00
parent 8448a31e5e
commit 86d30a6228
7 changed files with 70 additions and 81 deletions

View File

@ -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

View File

@ -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<int32>(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

View File

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

View File

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

View File

@ -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<EOLSGait, FOLSGaitAnimSets> 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<EOLSRotationMode, FOLSRootYawOffsetClamp> RootYawOffsetClamps;
};
FOLSGaitAnimSets JogAnimSets;
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Stance Anim Sets")
FOLSGaitAnimSets SprintAnimSets;
};