Overlap event stops firing after I move my character along a spline

I’ve got this wolf boss in my game, and his overlap event is functional at first.

void AWolfTotemBase::MainColliderBeginOverlap(UPrimitiveComponent * OverlappedComp, AActor * OtherActor, UPrimitiveComponent * OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult & SweepResult)
{
	UE_LOG(LogAI, Verbose, TEXT("WolfOverlapped: %s"), *OtherActor->GetName())
	// Check if we've overlapped the player, deal damage if so
	ProcessPlayerOverlap(OtherActor);
}

However, after I make use of a spline to move the wolf into the arena, the event no longer fires. I’ve checked that the OnBeginOverlap is bound, that the collision box still has it’s collision enabled, i’ve combed through my spline code to see if there was anything that would be breaking it, but i’ve lost hope and am really unsure as to what is wrong…

Any ideas as to what the issue is or where to investigate next would be gladly taken, I really need to fix this over the next day or so as it’s hugely hampering my progress.

Here’s the rest of the relevant code:

void AWolfTotemBase::InitializeBoxColliders()
{
	TArray<UActorComponent*> BoxColliders = GetComponentsByClass(UBoxComponent::StaticClass());
	for (int i = 0; i < BoxColliders.Num(); i++)
	{
		if (BoxColliders[i]->GetName() == FString("Main Box"))
		{
			m_MainCollider = Cast<UBoxComponent>(BoxColliders[i]);
			if (!m_MainCollider)
			{
				UE_LOG(LogAI, Warning, TEXT("AWolfTotem::InitializeBoxColliders() - Main Collider is not valid."))
			}
			continue;
		}
	}
}

.

void AWolfTotemBase::BeginPlay()
{
	Super::BeginPlay();

	// Set the spline world location to the AWolfTotem's location	
	m_Spline->SetWorldLocation(GetActorLocation());	

	if (m_MainCollider)
	{
		m_MainCollider->OnComponentBeginOverlap.AddDynamic(this, &AWolfTotemBase::MainColliderBeginOverlap);
		//m_MainCollider->SetCollisionEnabled(ECollisionEnabled::NoCollision); // Toggle off for now
	}
	else
	{
		UE_LOG(LogAI, Error, TEXT("WolfTotemBase - MainCollider is not valid"))
	}

	// Initialize Character Components
	m_CharMoveComp = Cast<UCharacterMovementComponent>(GetMovementComponent());
	if (!m_CharMoveComp)
	{
		UE_LOG(LogAI, Warning, TEXT("AWolfTotem::BeginPlay() - m_PawnMoveComp is not valid."))
	}
	else
	{
		m_CharMoveComp->MaxWalkSpeed = m_fNonAggroMS;
	}
}

.

void AWolfTotem::ProcessWolfStages(float DeltaTime)
{
	// Handle entrance to encounters
	if (m_bEntranceAActive)
	{
		MoveAlongSpline(m_EncounterASpline, m_fSplineT, m_fSplineMS, true, DeltaTime);
		SplineMovementCompleteCheck(m_bEntranceAActive);

		// If entrance finished, begin encounter
		if (!m_bEntranceAActive)
		{
			BeginEncounterA();
		}		
	}
	else if (m_bEntranceBActive)
	{
		MoveAlongSpline(m_EncounterBSpline, m_fSplineT, m_fSplineMS, true, DeltaTime);
		SplineMovementCompleteCheck(m_bEntranceBActive);

		// If entrance finished, begin encounter
		if (!m_bEntranceBActive)
		{
			BeginEncounterB();
		}
	}
	else if (m_bEntranceCActive)
	{
		MoveAlongSpline(m_EncounterCSpline, m_fSplineT, m_fSplineMS, true, DeltaTime);
		SplineMovementCompleteCheck(m_bEntranceCActive);

		// If entrance finished, begin encounter
		if (!m_bEntranceCActive)
		{
			BeginEncounterC();
		}
	}
	
	// Handle encounter exits
	if (m_bExitAActive)
	{
		MoveAlongSpline(m_ExitASpline, m_fSplineT, m_fSplineMS, true, DeltaTime);
		SplineMovementCompleteCheck(m_bExitAActive);
	}
	else if (m_bExitBActive)
	{
		MoveAlongSpline(m_ExitBSpline, m_fSplineT, m_fSplineMS, true, DeltaTime);
		SplineMovementCompleteCheck(m_bExitBActive);
	}

	// Handle ending of encounters
	float fHealthPercent = static_cast<float>(m_iHP) / static_cast<float>(m_iMaxHP);
	if (m_bEncounterAActive && fHealthPercent <= 0.75f && !m_bIsAttacking)
	{
		UE_LOG(LogAI, Warning, TEXT("FinishEncounterA"))
		UE_LOG(LogAI, Warning, TEXT("fHealthPercent: %f"), fHealthPercent)
		FinishEncounterA();

		// set wolf hp to 75%
		m_iHP = static_cast<int>(m_iMaxHP * 0.75f);
	}
	else if (m_bEncounterBActive && fHealthPercent <= 0.50f && !m_bIsAttacking)
	{
		UE_LOG(LogAI, Warning, TEXT("FinishEncounterB"))
		UE_LOG(LogAI, Warning, TEXT("fHealthPercent: %f"), fHealthPercent)
		FinishEncounterB();

		// set wolf hp to 50%
		m_iHP = static_cast<int>(m_iMaxHP * 0.5f);
	}
}

.

void AWolfTotemBase::SplineMovementCompleteCheck(bool & _bBool)
{
	if (m_fSplineT > 0.99f)
	{
		_bBool = false;
		m_fSplineT = 0.0f;
		FRotator CurrentRot = GetActorRotation();
		FRotator NewRot = FRotator(0.0f, CurrentRot.Yaw, 0.0f);
		SetActorRotation(NewRot);

		if (m_FinishSplineLeapMontage)
		{
			PlayAnimMontage(m_FinishSplineLeapMontage, 1.0f);
		}
	}
}

.

bool AEnemyCharacterBase::MoveAlongSpline(class USplineComponent* _spline, float& _fT, float _fSpeed, bool _bRotate, float _fDeltaTime)
{
	if (_spline)
	{
		// Calculate where on the spline we should move
		float fSplineLength = _spline->GetSplineLength();
		float fDistance = _fT * fSplineLength;
		FVector vLocationOnSpline = _spline->GetLocationAtDistanceAlongSpline(fDistance, ESplineCoordinateSpace::World);
		FRotator rotRotationOnSpline = _spline->GetRotationAtDistanceAlongSpline(fDistance, ESplineCoordinateSpace::World);

		if (this)
		{
			// Create new transform
			FTransform NewTransform;
			NewTransform.SetLocation(vLocationOnSpline);	
			NewTransform.SetScale3D(m_vBaseScale);
			if (_bRotate)
			{
				NewTransform.SetRotation(rotRotationOnSpline.Quaternion());
			}

			// Move to the calculated point on the spline
			SetActorTransform(NewTransform);

			// Increment _fT based on the speed parameter
			_fT += FMath::Clamp(_fSpeed * _fDeltaTime, 0.0f, 1.0f);

			// return true if we've reached the end of the spline, otherwise return false
			if (_fT == 1.0f)
			{
				return true;
			}
			else
			{
				return false;
			}
		}		
	}

	return false;
}

Thank you for taking the time to read this!