Files
UnrealEngineUWP/Engine/Source/Editor/AnimationModifiers/Private/AnimationModifiersAssetUserData.cpp
bryan sefcik 8cc129f2b6 IWYU Pass 1 - Engine/Source/Editor/...
#jira
#preflight 6306736ac85b7fef22be7751

[CL 21558583 by bryan sefcik in ue5-main branch]
2022-08-24 22:45:13 -04:00

58 lines
1.9 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "AnimationModifiersAssetUserData.h"
#include "HAL/PlatformCrt.h"
#include "Math/UnrealMathUtility.h"
#include "Misc/AssertionMacros.h"
void UAnimationModifiersAssetUserData::AddAnimationModifier(UAnimationModifier* Instance)
{
AnimationModifierInstances.Add(Instance);
}
void UAnimationModifiersAssetUserData::RemoveAnimationModifierInstance(UAnimationModifier* Instance)
{
checkf(AnimationModifierInstances.Contains(Instance), TEXT("Instance suppose to be removed is not found"));
AnimationModifierInstances.Remove(Instance);
}
const TArray<UAnimationModifier*>& UAnimationModifiersAssetUserData::GetAnimationModifierInstances() const
{
return AnimationModifierInstances;
}
void UAnimationModifiersAssetUserData::ChangeAnimationModifierIndex(UAnimationModifier* Instance, int32 Direction)
{
checkf(AnimationModifierInstances.Contains(Instance), TEXT("Instance suppose to be moved is not found"));
const int32 CurrentIndex = AnimationModifierInstances.IndexOfByKey(Instance);
const int32 NewIndex = FMath::Clamp(CurrentIndex + Direction, 0, AnimationModifierInstances.Num() - 1);
if (CurrentIndex != NewIndex)
{
AnimationModifierInstances.Swap(CurrentIndex, NewIndex);
}
}
void UAnimationModifiersAssetUserData::PostEditChangeProperty(struct FPropertyChangedEvent& PropertyChangedEvent)
{
RemoveInvalidModifiers();
Super::PostEditChangeProperty(PropertyChangedEvent);
}
void UAnimationModifiersAssetUserData::Serialize(FArchive& Ar)
{
Super::Serialize(Ar);
}
void UAnimationModifiersAssetUserData::PostLoad()
{
Super::PostLoad();
RemoveInvalidModifiers();
}
void UAnimationModifiersAssetUserData::RemoveInvalidModifiers()
{
// This will catch force-deleted blueprints to be removed from our stored array
AnimationModifierInstances.RemoveAll([](UAnimationModifier* Modifier) { return Modifier == nullptr; });
}