60 lines
1.6 KiB
C++
60 lines
1.6 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "LyraAnimInstance.h"
|
|
#include "AbilitySystemComponent.h"
|
|
#include "AbilitySystemGlobals.h"
|
|
#include "Character/LyraCharacter.h"
|
|
#include "Character/LyraCharacterMovementComponent.h"
|
|
|
|
|
|
ULyraAnimInstance::ULyraAnimInstance(const FObjectInitializer& ObjectInitializer)
|
|
: Super(ObjectInitializer)
|
|
{
|
|
}
|
|
|
|
void ULyraAnimInstance::InitializeWithAbilitySystem(UAbilitySystemComponent* ASC)
|
|
{
|
|
check(ASC);
|
|
|
|
GameplayTagPropertyMap.Initialize(this, ASC);
|
|
}
|
|
|
|
#if WITH_EDITOR
|
|
EDataValidationResult ULyraAnimInstance::IsDataValid(TArray<FText>& ValidationErrors)
|
|
{
|
|
Super::IsDataValid(ValidationErrors);
|
|
|
|
GameplayTagPropertyMap.IsDataValid(this, ValidationErrors);
|
|
|
|
return ((ValidationErrors.Num() > 0) ? EDataValidationResult::Invalid : EDataValidationResult::Valid);
|
|
}
|
|
#endif // WITH_EDITOR
|
|
|
|
void ULyraAnimInstance::NativeInitializeAnimation()
|
|
{
|
|
Super::NativeInitializeAnimation();
|
|
|
|
if (AActor* OwningActor = GetOwningActor())
|
|
{
|
|
if (UAbilitySystemComponent* ASC = UAbilitySystemGlobals::GetAbilitySystemComponentFromActor(OwningActor))
|
|
{
|
|
InitializeWithAbilitySystem(ASC);
|
|
}
|
|
}
|
|
}
|
|
|
|
void ULyraAnimInstance::NativeUpdateAnimation(float DeltaSeconds)
|
|
{
|
|
Super::NativeUpdateAnimation(DeltaSeconds);
|
|
|
|
const ALyraCharacter* Character = Cast<ALyraCharacter>(GetOwningActor());
|
|
if (!Character)
|
|
{
|
|
return;
|
|
}
|
|
|
|
ULyraCharacterMovementComponent* CharMoveComp = CastChecked<ULyraCharacterMovementComponent>(Character->GetCharacterMovement());
|
|
const FLyraCharacterGroundInfo& GroundInfo = CharMoveComp->GetGroundInfo();
|
|
GroundDistance = GroundInfo.GroundDistance;
|
|
}
|