78 lines
1.8 KiB
C++
78 lines
1.8 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "Animation/WidgetAnimationHandle.h"
|
|
|
|
#include "Animation/UMGSequencePlayer.h"
|
|
#include "Animation/WidgetAnimationState.h"
|
|
#include "Blueprint/UserWidget.h"
|
|
#include "EdGraph/EdGraphPin.h"
|
|
|
|
FWidgetAnimationHandle::FWidgetAnimationHandle()
|
|
{
|
|
}
|
|
|
|
FWidgetAnimationHandle::FWidgetAnimationHandle(UUserWidget* InUserWidget, int32 InStateIndex, uint32 InStateSerial)
|
|
: WeakUserWidget(InUserWidget)
|
|
, StateIndex(InStateIndex)
|
|
, StateSerial(InStateSerial)
|
|
{
|
|
}
|
|
|
|
bool FWidgetAnimationHandle::IsValid() const
|
|
{
|
|
return (WeakUserWidget.IsValid() && StateIndex >= 0);
|
|
}
|
|
|
|
UUMGSequencePlayer* FWidgetAnimationHandle::GetSequencePlayer() const
|
|
{
|
|
if (FWidgetAnimationState* State = GetAnimationState())
|
|
{
|
|
return State->GetOrCreateLegacyPlayer();
|
|
}
|
|
return nullptr;
|
|
}
|
|
|
|
FWidgetAnimationState* FWidgetAnimationHandle::GetAnimationState() const
|
|
{
|
|
if (UUserWidget* UserWidget = WeakUserWidget.Get())
|
|
{
|
|
if (UserWidget->ActiveAnimations.IsValidIndex(StateIndex))
|
|
{
|
|
FWidgetAnimationState& ActiveState = UserWidget->ActiveAnimations[StateIndex];
|
|
if (ActiveState.SerialNumber == StateSerial)
|
|
{
|
|
return &ActiveState;
|
|
}
|
|
}
|
|
}
|
|
return nullptr;
|
|
}
|
|
|
|
FName FWidgetAnimationHandle::GetUserTag() const
|
|
{
|
|
if (FWidgetAnimationState* State = GetAnimationState())
|
|
{
|
|
return State->GetUserTag();
|
|
}
|
|
return NAME_None;
|
|
}
|
|
|
|
void FWidgetAnimationHandle::SetUserTag(FName InUserTag)
|
|
{
|
|
if (FWidgetAnimationState* State = GetAnimationState())
|
|
{
|
|
State->SetUserTag(InUserTag);
|
|
}
|
|
}
|
|
|
|
FName UWidgetAnimationHandleFunctionLibrary::GetUserTag(const FWidgetAnimationHandle& Target)
|
|
{
|
|
return Target.GetUserTag();
|
|
}
|
|
|
|
void UWidgetAnimationHandleFunctionLibrary::SetUserTag(FWidgetAnimationHandle& Target, FName InUserTag)
|
|
{
|
|
Target.SetUserTag(InUserTag);
|
|
}
|
|
|