Files
2022-05-26 18:32:27 +05:00

66 lines
1.4 KiB
C++

// Fill out your copyright notice in the Description page of Project Settings.
#include "CppAnimation.h"
CppAnimation::CppAnimation()
{
}
CppAnimation::~CppAnimation()
{
}
CppAnimation::CppAnimation(UUserWidget* owner, UWidgetAnimation* animation, TArray<FCppStruct_AnimModeDirection>* modes, TEnumAsByte<Enum_AnimMode>* lastMode, int32* priority)
: WidgetOwner(owner),
WidgetAnimation(animation),
AnimModes(*modes),
lastMode(*lastMode),
priorityIndex(*priority)
{
}
void CppAnimation::PlayAnimationMode(TEnumAsByte<Enum_AnimMode>* mode, int32* priority)
{
if (!CanMode(mode))
return;
if (!CanPlayAnimation(mode))
return;
if (priorityIndex > *priority)
return;
lastMode = *mode;
WidgetOwner->PlayAnimation(WidgetAnimation, 0.0f, 1, GetDirection(mode), 1.0f, false);
}
TEnumAsByte<EUMGSequencePlayMode::Type> CppAnimation::GetDirection(TEnumAsByte<Enum_AnimMode>* mode)
{
for (auto anim : AnimModes)
{
if (anim.mode == *mode)
return anim.direction;
}
return EUMGSequencePlayMode::Type::Forward;
}
bool CppAnimation::CanMode(TEnumAsByte<Enum_AnimMode>* mode)
{
bool canMode = false;
for (int32 i = 0; i < AnimModes.Num(); ++i)
{
if (AnimModes[i].mode == *mode)
{
canMode = true;
}
}
return canMode;
}
bool CppAnimation::CanPlayAnimation(TEnumAsByte<Enum_AnimMode>* mode)
{
if (!CanMode(mode))
return false;
return lastMode != *mode;
}