// 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& 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(GetOwningActor()); if (!Character) { return; } ULyraCharacterMovementComponent* CharMoveComp = CastChecked(Character->GetCharacterMovement()); const FLyraCharacterGroundInfo& GroundInfo = CharMoveComp->GetGroundInfo(); GroundDistance = GroundInfo.GroundDistance; }