Refactored OLSAnimationData
This commit is contained in:
parent
8448a31e5e
commit
86d30a6228
Binary file not shown.
Binary file not shown.
@ -1,12 +1,12 @@
|
|||||||
/Engine=C:/Program Files/Epic Games/UE_5.5/Engine/Shaders
|
/Engine=C:/Program Files/Epic Games/UE_5.5/Engine/Shaders
|
||||||
/ShaderAutogen=H:/Projects/OLS/Intermediate/ShaderAutogen
|
/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/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/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
|
/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/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/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
|
/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/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
|
/Plugin/Optimus=C:/Program Files/Epic Games/UE_5.5/Engine/Plugins/Animation/DeformerGraph/Shaders
|
||||||
|
@ -85,34 +85,18 @@ EOLSHipDirection UOLSBaseLinkedLayerAnimInstance::GetHipDirection() const
|
|||||||
return (isHipForward) ? EOLSHipDirection::EForward : EOLSHipDirection::EBackward;
|
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 FOLSGaitAnimSets& UOLSBaseLinkedLayerAnimInstance::GetGaitAnimSets(const bool isCrouching,
|
||||||
const bool isCrouching, const EOLSGait& locomotionState) const
|
const EOLSGait& locomotionState) const
|
||||||
{
|
{
|
||||||
const FOLSStanceAnimSets& stanceAnimSets = GetStanceAnimSets(isCrouching);
|
const FOLSStanceAnimSets& stanceAnimSets = GetStanceAnimSets(isCrouching);
|
||||||
const FOLSGaitAnimSets* result = nullptr;
|
return (isCrouching)
|
||||||
|
? stanceAnimSets.GetGaitAnimSetByGait(EOLSGait::EWalk)
|
||||||
// Attempt to select the appropriate gait anim set.
|
: stanceAnimSets.GetGaitAnimSetByGait(locomotionState);
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
UAnimSequence* UOLSBaseLinkedLayerAnimInstance::SelectIdleAnimation(const bool isCrouching) const
|
UAnimSequence* UOLSBaseLinkedLayerAnimInstance::SelectIdleAnimation(const bool isCrouching) const
|
||||||
@ -122,7 +106,7 @@ UAnimSequence* UOLSBaseLinkedLayerAnimInstance::SelectIdleAnimation(const bool i
|
|||||||
|
|
||||||
UAnimSequence* UOLSBaseLinkedLayerAnimInstance::SelectIdleEntryAnimation(const bool isCrouching) const
|
UAnimSequence* UOLSBaseLinkedLayerAnimInstance::SelectIdleEntryAnimation(const bool isCrouching) const
|
||||||
{
|
{
|
||||||
return GetStanceAnimSets(isCrouching).GetIdleEntryAnimation();
|
return GetStanceAnimSets(isCrouching).GetIdleExitAnimation();
|
||||||
}
|
}
|
||||||
|
|
||||||
UAnimSequence* UOLSBaseLinkedLayerAnimInstance::SelectIdleBreakAnimation(const bool isCrouching) const
|
UAnimSequence* UOLSBaseLinkedLayerAnimInstance::SelectIdleBreakAnimation(const bool isCrouching) const
|
||||||
|
@ -35,7 +35,7 @@ UAnimSequence* FOLSIdleAnimSet::GetRandomIdleBreakAnimation() const
|
|||||||
return IdleBreaks[FMath::RandRange(0, idleBreaksNum - 1)];
|
return IdleBreaks[FMath::RandRange(0, idleBreaksNum - 1)];
|
||||||
}
|
}
|
||||||
|
|
||||||
UAnimSequence* FOLSIdleAndTurnInPlaceAnimSet::GetIdleEntryAnimation() const
|
UAnimSequence* FOLSIdleAndTurnInPlaceAnimSet::GetIdleExitAnimation() const
|
||||||
{
|
{
|
||||||
return IdleAnimSet.IdleExit;
|
return IdleAnimSet.IdleExit;
|
||||||
}
|
}
|
||||||
@ -155,9 +155,9 @@ UAnimSequence* FOLSStanceAnimSets::GetIdleAnimation() const
|
|||||||
return IdleAndTurnInPlaceAnimSet.GetIdleAnimation();
|
return IdleAndTurnInPlaceAnimSet.GetIdleAnimation();
|
||||||
}
|
}
|
||||||
|
|
||||||
UAnimSequence* FOLSStanceAnimSets::GetIdleEntryAnimation() const
|
UAnimSequence* FOLSStanceAnimSets::GetIdleExitAnimation() const
|
||||||
{
|
{
|
||||||
return IdleAndTurnInPlaceAnimSet.GetIdleEntryAnimation();
|
return IdleAndTurnInPlaceAnimSet.GetIdleExitAnimation();
|
||||||
}
|
}
|
||||||
|
|
||||||
UAnimSequence* FOLSStanceAnimSets::GetRandomIdleBreakAnimation() const
|
UAnimSequence* FOLSStanceAnimSets::GetRandomIdleBreakAnimation() const
|
||||||
@ -165,29 +165,38 @@ UAnimSequence* FOLSStanceAnimSets::GetRandomIdleBreakAnimation() const
|
|||||||
return IdleAndTurnInPlaceAnimSet.GetRandomIdleBreakAnimation();
|
return IdleAndTurnInPlaceAnimSet.GetRandomIdleBreakAnimation();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool FOLSStanceAnimSets::CanPlayIdleBreakAnimation() const
|
|
||||||
{
|
|
||||||
return IdleAndTurnInPlaceAnimSet.CanPlayIdleBreakAnimation();
|
|
||||||
}
|
|
||||||
|
|
||||||
UAnimSequence* FOLSStanceAnimSets::GetTurnInPlaceAnimation(const float direction) const
|
UAnimSequence* FOLSStanceAnimSets::GetTurnInPlaceAnimation(const float direction) const
|
||||||
{
|
{
|
||||||
return IdleAndTurnInPlaceAnimSet.GetTurnInPlaceAnimation(direction);
|
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();
|
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);
|
|
||||||
}
|
|
||||||
|
@ -44,7 +44,7 @@ protected: //~ Blueprint thread-safe update functions.
|
|||||||
protected:
|
protected:
|
||||||
|
|
||||||
virtual EOLSHipDirection GetHipDirection() const;
|
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;
|
const FOLSGaitAnimSets& GetGaitAnimSets(const bool isCrouching, const EOLSGait& locomotionState) const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@ -233,10 +233,10 @@ protected:
|
|||||||
float HipDirectionBuffer = 5.f;
|
float HipDirectionBuffer = 5.f;
|
||||||
|
|
||||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Settings|AnimSet")
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Settings|AnimSet")
|
||||||
FOLSStanceAnimSets StandingAnimSets;
|
FOLSStanceAnimSets Crouching_AnimSets;
|
||||||
|
|
||||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Settings|AnimSet")
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Settings|AnimSet")
|
||||||
FOLSStanceAnimSets CrouchingAnimSets;
|
FOLSStanceAnimSets_Standing Standing_AnimSets;
|
||||||
|
|
||||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Settings|AnimSet|DistanceMatching")
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Settings|AnimSet|DistanceMatching")
|
||||||
FName GroundDistanceCurveName = NAME_None;
|
FName GroundDistanceCurveName = NAME_None;
|
||||||
|
@ -81,7 +81,7 @@ struct FOLSIdleAndTurnInPlaceAnimSet
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
FORCEINLINE class UAnimSequence* GetIdleEntryAnimation() const;
|
FORCEINLINE class UAnimSequence* GetIdleExitAnimation() const;
|
||||||
FORCEINLINE class UAnimSequence* GetIdleAnimation() const;
|
FORCEINLINE class UAnimSequence* GetIdleAnimation() const;
|
||||||
FORCEINLINE class UAnimSequence* GetRandomIdleBreakAnimation() const;
|
FORCEINLINE class UAnimSequence* GetRandomIdleBreakAnimation() const;
|
||||||
FORCEINLINE class UAnimSequence* GetTurnInPlaceAnimation(const float direction) const;
|
FORCEINLINE class UAnimSequence* GetTurnInPlaceAnimation(const float direction) const;
|
||||||
@ -262,55 +262,51 @@ struct FOLSStanceAnimSets
|
|||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
FOLSStanceAnimSets() = default;
|
||||||
|
FOLSStanceAnimSets(const FOLSStanceAnimSets&) = default;
|
||||||
|
FOLSStanceAnimSets(FOLSStanceAnimSets&&) = default;
|
||||||
|
|
||||||
class UAnimSequence* GetIdleAnimation() const;
|
FOLSStanceAnimSets& operator=(const FOLSStanceAnimSets&) = default;
|
||||||
class UAnimSequence* GetIdleEntryAnimation() const;
|
FOLSStanceAnimSets& operator=(FOLSStanceAnimSets&&) = default;
|
||||||
class UAnimSequence* GetRandomIdleBreakAnimation() const;
|
|
||||||
bool CanPlayIdleBreakAnimation() const;
|
virtual ~FOLSStanceAnimSets() = default;
|
||||||
class UAnimSequence* GetTurnInPlaceAnimation(const float direction) const;
|
|
||||||
const FOLSGaitAnimSets* SelectGaitAnimSetByGait(const EOLSGait& gait) const;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Stance Anim Sets")
|
class UAnimSequence* GetIdleAnimation() const;
|
||||||
TMap<EOLSGait, FOLSGaitAnimSets> GaitAnimSets;
|
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")
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Stance Anim Sets")
|
||||||
FOLSIdleAndTurnInPlaceAnimSet IdleAndTurnInPlaceAnimSet;
|
FOLSIdleAndTurnInPlaceAnimSet IdleAndTurnInPlaceAnimSet;
|
||||||
|
|
||||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Stance Anim Sets")
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Stance Anim Sets")
|
||||||
FOLSAimAnimSet AimAnimSet;
|
FOLSGaitAnimSets WalkAnimSets;
|
||||||
};
|
};
|
||||||
|
|
||||||
USTRUCT(BlueprintType)
|
USTRUCT(BlueprintType)
|
||||||
struct FOLSRootYawOffsetClamp
|
struct FOLSStanceAnimSets_Standing : public FOLSStanceAnimSets
|
||||||
{
|
{
|
||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
const FVector2D& GetRootYawOffsetClamp(const EOLSStance stance) const;
|
virtual const FOLSGaitAnimSets& GetGaitAnimSetByGait(const EOLSGait& gait) const override;
|
||||||
|
|
||||||
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()
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
const FOLSRootYawOffsetClamp& GetRootYawOffsetClamp(const EOLSRotationMode& rotationMode) const;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Stance Anim Sets")
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Stance Anim Sets")
|
||||||
TMap<EOLSRotationMode, FOLSRootYawOffsetClamp> RootYawOffsetClamps;
|
FOLSGaitAnimSets JogAnimSets;
|
||||||
|
|
||||||
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Stance Anim Sets")
|
||||||
|
FOLSGaitAnimSets SprintAnimSets;
|
||||||
};
|
};
|
Loading…
Reference in New Issue
Block a user