i have many timers in my project that i use for different things. but for some odd reason this timer will just not call my function.
void ADOP_FPS_Character::OnFire()
{
ADOP_DM_Weapons* myWeapon = Cast<ADOP_DM_Weapons>(Weapons[ActiveWeapon]->GetChildActor());
if (myWeapon->WeaponName == "")
{
return;
}
if (GetWorldTimerManager().IsTimerActive(FiringHandle)) { return; }
if (Weapons.Num() > 0)
{
FTimerDelegate TimerDel = FTimerDelegate::CreateUObject(this, &ADOP_FPS_Character::FireWeapon);
UE_LOG(LogTemp, Warning, TEXT("On Fire called"));
GetWorldTimerManager().SetTimer(FiringHandle, TimerDel, myWeapon->FireRate, true);
// also tried
/*GetWorldTimerManager().SetTimer(FiringHandle, this, &ADOP_FPS_Character::FireWeapon, myWeapon->FireRate, true,0);*/
}
}
i have logs in the function being called which is this
void ADOP_FPS_Character::FireWeapon()
{
UE_LOG(LogTemp, Warning, TEXT("fire weapon"));
ADOP_DM_Weapons* myWeapon = Cast<ADOP_DM_Weapons>(Weapons[ActiveWeapon]->GetChildActor());
CallFireWeapon(myWeapon->BurstMaxCount, myWeapon->CurrentFireModeIndex, myWeapon->Damage, myWeapon->GunFireMontage, myWeapon->ArmFireMontage);
}
but its just not being called everything works in the OnFire()even get the log but i dont get anything from the function in the timer.