Can't figure out why multi-cast delegate doesn't broadcast

Here is how I set it up:

void UBPCharacterAnimInstance::NativeInitializeAnimation()
{
	OnMontageStarted.AddDynamic(this, &UBPCharacterAnimInstance::SetCorrectWeaponMontage);
}

void UBPCharacterAnimInstance::SetCorrectWeaponMontage(UAnimMontage* AnimMontage)
{
	UE_LOG(LogTemp, Warning, TEXT("AnimMontage: %s"), *AnimMontage->GetName());

	AShooterCharacter* CurrentCharacter = Cast<AShooterCharacter>(GetOwningActor());
	if (CurrentCharacter)
	{
		ABPWeapon_Additionals* CurrentWeapon = Cast<ABPWeapon_Additionals>(CurrentCharacter->GetWeapon());
		if (CurrentWeapon)
		{
			UE_LOG(LogTemp, Warning, TEXT("CurrentWeapon: %s"), *CurrentWeapon->GetName())
		}
	}
}

I went through the anim instance code and can see the actual broadcast function being called. Does anyone have any idea what I could be doing wrong or where to look for issues?

Make sure SetCorrectWeaponMontage is a UFUNCTION()

Yep that was it, thanks man can’t believe i missed that.

This should be made the answer.