Files
UnrealEngineUWP/Engine/Source/Editor/AnimationModifiers/Private/AnimationModifiersAssetUserData.cpp
Chris Gagnon 8fc25ea18e Merging //UE4/Dev-Main to Dev-Editor (//UE4/Dev-Editor)
#rb none

[CL 4676797 by Chris Gagnon in Dev-Editor branch]
2019-01-02 14:54:39 -05:00

54 lines
1.8 KiB
C++

// Copyright 1998-2019 Epic Games, Inc. All Rights Reserved.
#include "AnimationModifiersAssetUserData.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; });
}