diff --git a/Plugins/Developer/RiderLink/Intermediate/FileSystemMappings.ini b/Plugins/Developer/RiderLink/Intermediate/FileSystemMappings.ini index 7bdd57c..6d53d7c 100644 --- a/Plugins/Developer/RiderLink/Intermediate/FileSystemMappings.ini +++ b/Plugins/Developer/RiderLink/Intermediate/FileSystemMappings.ini @@ -1,7 +1,7 @@ /Engine=C:/Program Files/Epic Games/UE_5.5/Engine/Shaders /ShaderAutogen=H:/Projects/OLS/Intermediate/ShaderAutogen -/NFORDenoise=C:/Program Files/Epic Games/UE_5.5/Engine/Plugins/Experimental/NFORDenoise/Shaders /NNEDenoiserShaders=C:/Program Files/Epic Games/UE_5.5/Engine/Plugins/NNE/NNEDenoiser/Shaders +/NFORDenoise=C:/Program Files/Epic Games/UE_5.5/Engine/Plugins/Experimental/NFORDenoise/Shaders /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 diff --git a/Saved/AutoScreenshot.png b/Saved/AutoScreenshot.png index 8071c2a..d6f2a85 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 a0c2522..6c12ccd 100644 --- a/Source/OLSAnimation/Private/AnimInstances/OLSBaseLinkedLayerAnimInstance.cpp +++ b/Source/OLSAnimation/Private/AnimInstances/OLSBaseLinkedLayerAnimInstance.cpp @@ -93,8 +93,26 @@ FOLSStanceAnimSets UOLSBaseLinkedLayerAnimInstance::GetStanceAnimSets(const bool const FOLSGaitAnimSets& UOLSBaseLinkedLayerAnimInstance::GetGaitAnimSets( const bool isCrouching, const EOLSGait& locomotionState) const { - //@TODO: add nullptr log. - return *GetStanceAnimSets(isCrouching).SelectGaitAnimSetByGait(locomotionState); + 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; } UAnimSequence* UOLSBaseLinkedLayerAnimInstance::SelectIdleAnimation(const bool isCrouching) const diff --git a/Source/OLSAnimation/Private/Data/OLSAnimationData.cpp b/Source/OLSAnimation/Private/Data/OLSAnimationData.cpp index f52f406..3891a01 100644 --- a/Source/OLSAnimation/Private/Data/OLSAnimationData.cpp +++ b/Source/OLSAnimation/Private/Data/OLSAnimationData.cpp @@ -180,6 +180,8 @@ const FOLSGaitAnimSets* FOLSStanceAnimSets::SelectGaitAnimSetByGait(const EOLSGa return GaitAnimSets.Find(gait); } +FOLSGaitAnimSets FOLSGaitAnimSets::EmptyAnimSet = FOLSGaitAnimSets(); + const FVector2D& FOLSRootYawOffsetClamp::GetRootYawOffsetClamp(const EOLSStance stance) const { return (stance == EOLSStance::EStanding ? RootYawOffsetClamp_Standing : RootYawOffsetClamp_Crouching); diff --git a/Source/OLSAnimation/Public/Data/OLSAnimationData.h b/Source/OLSAnimation/Public/Data/OLSAnimationData.h index 654ad51..81af5c4 100644 --- a/Source/OLSAnimation/Public/Data/OLSAnimationData.h +++ b/Source/OLSAnimation/Public/Data/OLSAnimationData.h @@ -250,6 +250,10 @@ public: UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Gait Anim Sets") FOLSGaitAnimSet_CameraFacing GaitAnimSet_CameraFacing; + +public: + + static FOLSGaitAnimSets EmptyAnimSet; }; USTRUCT(BlueprintType)