Advertisement
Guest User

Untitled

a guest
Jun 16th, 2015
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.83 KB | None | 0 0
  1. // Copyright Damir Halilovic 2014 - 2015
  2.  
  3. #include "ProjectWa.h"
  4. #include "RangedWeaponBase.h"
  5.  
  6.  
  7. // Sets default values
  8. ARangedWeaponBase::ARangedWeaponBase(const FObjectInitializer& OI)
  9.     : Super(OI)
  10. {
  11.     // Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
  12.     PrimaryActorTick.bCanEverTick = false;
  13.  
  14.     ProjectileChildActor = CreateDefaultSubobject<UChildActorComponent>("Projectile Actor");
  15.     if (ProjectileChildActor != nullptr)
  16.     {
  17.         RootComponent = ProjectileChildActor;
  18.     }
  19.  
  20. }
  21.  
  22. // Called when the game starts or when spawned
  23. void ARangedWeaponBase::BeginPlay()
  24. {
  25.     Super::BeginPlay();
  26.     Cast<AProjectileBase>(ProjectileChildActor->ChildActor)->SetParentWeapon(this);
  27.    
  28. }
  29.  
  30. void ARangedWeaponBase::OnConstruction(const FTransform& Transform)
  31. {
  32.     Super::OnConstruction(Transform);
  33.  
  34.     if (ProjectileChildActor != nullptr)
  35.     {
  36.         ProjectileChildActor->SetChildActorClass(ProjectileClass);
  37.         //ProjectileChildActor->CreateChildActor();
  38.     }
  39.    
  40. }
  41.  
  42.  
  43. void ARangedWeaponBase::FireProjectile(const FVector& Direction, const float SpeedMultiplier, const bool bWorldSpace /* = true */)
  44. {
  45.     static_cast<AProjectileBase*>(ProjectileChildActor->ChildActor)->FireProjectile(Direction, SpeedMultiplier, bWorldSpace);
  46.     bIsLoaded = false;
  47. }
  48.  
  49. bool ARangedWeaponBase::IsLoaded() const
  50. {
  51.     return bIsLoaded;
  52. }
  53.  
  54. void ARangedWeaponBase::Reload()
  55. {
  56.     ProjectileChildActor->CreateChildActor();
  57.     Cast<AProjectileBase>(ProjectileChildActor->ChildActor)->SetParentWeapon(this);
  58.     bIsLoaded = true;
  59. }
  60.  
  61. bool ARangedWeaponBase::ProcessProjectileDamage(AActor* OtherActor)
  62. {
  63.     APawn* OwnerPawn = GetOwnerPawn();
  64.     if (OwnerPawn == nullptr)
  65.     {
  66.         UE_LOG(WaGeneral, Error, TEXT("The owner pawn of a weapon is null."));
  67.         return false;
  68.     }
  69.  
  70.     return ProcessDamage(OtherActor, OwnerPawn, true);
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement