// Project Lab - NHTV Igad #include "UnrealProject.h" #include "MinionAnimInstance.h" UMinionAnimInstance::UMinionAnimInstance(const FObjectInitializer& init) : Super(init) { m_animationState = EMinionAnimState::MAS_Idle; } void UMinionAnimInstance::NativeInitializeAnimation() { Super::NativeInitializeAnimation(); m_animationState = EMinionAnimState::MAS_Idle; } void UMinionAnimInstance::NativeUpdateAnimation(float deltaSeconds) { Super::NativeUpdateAnimation(deltaSeconds); APawn* ownerPawn = TryGetPawnOwner(); if (IsValid(ownerPawn)) { const FVector velocity = ownerPawn->GetVelocity(); const FVector forward = ownerPawn->GetActorForwardVector().GetSafeNormal2D(); m_movementSpeed = velocity.Size(); float angleBetween = FMath::FindDeltaAngle(forward.HeadingAngle(), velocity.GetSafeNormal2D().HeadingAngle()); m_movementDirectionRelative = FVector(cos(angleBetween), sin(angleBetween), 0); } } EMinionAnimState UMinionAnimInstance::GetAnimationState() { return m_animationState; } bool UMinionAnimInstance::IsInAnimationState(const EMinionAnimState minionStateCheck) { return (m_animationState == minionStateCheck); } void UMinionAnimInstance::ChangeAnimationStateTo(EMinionAnimState newState) { m_animationState = newState; } void UMinionAnimInstance::BPChangeAnimationStateTo(EMinionAnimState newState) { m_animationState = newState; OnAnimationStateChanged.Broadcast(newState); } void UMinionAnimInstance::PlaySpecificAnimationByInt(int32 animationToPlay) { m_specificAnimationIndex = animationToPlay; ChangeAnimationStateTo(EMinionAnimState::MAS_Specific); }