Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Copyright Damir Halilovic 2014 - 2015
- #include "ProjectWa.h"
- #include "RangedWeaponBase.h"
- // Sets default values
- ARangedWeaponBase::ARangedWeaponBase(const FObjectInitializer& OI)
- : Super(OI)
- {
- // Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it.
- PrimaryActorTick.bCanEverTick = false;
- ProjectileChildActor = CreateDefaultSubobject<UChildActorComponent>("Projectile Actor");
- if (ProjectileChildActor != nullptr)
- {
- RootComponent = ProjectileChildActor;
- }
- }
- // Called when the game starts or when spawned
- void ARangedWeaponBase::BeginPlay()
- {
- Super::BeginPlay();
- Cast<AProjectileBase>(ProjectileChildActor->ChildActor)->SetParentWeapon(this);
- }
- void ARangedWeaponBase::OnConstruction(const FTransform& Transform)
- {
- Super::OnConstruction(Transform);
- if (ProjectileChildActor != nullptr)
- {
- ProjectileChildActor->SetChildActorClass(ProjectileClass);
- //ProjectileChildActor->CreateChildActor();
- }
- }
- void ARangedWeaponBase::FireProjectile(const FVector& Direction, const float SpeedMultiplier, const bool bWorldSpace /* = true */)
- {
- static_cast<AProjectileBase*>(ProjectileChildActor->ChildActor)->FireProjectile(Direction, SpeedMultiplier, bWorldSpace);
- bIsLoaded = false;
- }
- bool ARangedWeaponBase::IsLoaded() const
- {
- return bIsLoaded;
- }
- void ARangedWeaponBase::Reload()
- {
- ProjectileChildActor->CreateChildActor();
- Cast<AProjectileBase>(ProjectileChildActor->ChildActor)->SetParentWeapon(this);
- bIsLoaded = true;
- }
- bool ARangedWeaponBase::ProcessProjectileDamage(AActor* OtherActor)
- {
- APawn* OwnerPawn = GetOwnerPawn();
- if (OwnerPawn == nullptr)
- {
- UE_LOG(WaGeneral, Error, TEXT("The owner pawn of a weapon is null."));
- return false;
- }
- return ProcessDamage(OtherActor, OwnerPawn, true);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement