Skip to content

Instantly share code, notes, and snippets.

@theresajayne
Created January 22, 2019 10:06
Show Gist options
  • Save theresajayne/11a152c7741412bf7817ec22391cd158 to your computer and use it in GitHub Desktop.
Save theresajayne/11a152c7741412bf7817ec22391cd158 to your computer and use it in GitHub Desktop.
FTimerDelegate TimerDel;
FTimerHandle TimerHandle;
void ABaseCharacter::StartFire()
{
if(myWeapon->auto_fire)
{
//start timer until fire released
GetWorldTimerManager().SetTimer(TimerHandle,this, &ABaseCharacter::FireWeapon, myWeapon->auto_fire_rate, true,0);
}
else
{
//fire once
FireWeapon();
}
}
void ABaseCharacter::FireWeapon()
{
ABasePlayerController* controller = Cast<ABasePlayerController>(Controller);
if (!controller || !controller->IsGameInputAllowed())
return;
FHitResult OutHit;
FVector start = myCamera->GetComponentLocation();
FVector end = start + myCamera->GetForwardVector() * 100000.0f;
FCollisionQueryParams CollisionParams;
CollisionParams.AddIgnoredActor(this);
CollisionParams.AddIgnoredActor(myWeapon);
FCollisionResponseParams CollisionResponseParams;
if (GetWorld()->SweepSingleByChannel(OutHit, start, end, FQuat::Identity, ECollisionChannel::ECC_Visibility, FCollisionShape::MakeSphere(5.0f), CollisionParams, CollisionResponseParams))
myWeapon->Fire(OutHit.Location);
else
myWeapon->Fire(end);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment