80 lines
2.2 KiB
C++
80 lines
2.2 KiB
C++
// Fill out your copyright notice in the Description page of Project Settings.
|
|
|
|
|
|
#include "Item.h"
|
|
|
|
#include "ShooterCharacter.h"
|
|
#include "Components/BoxComponent.h"
|
|
#include "Components/SphereComponent.h"
|
|
#include "Components/WidgetComponent.h"
|
|
|
|
// Sets default values
|
|
AItem::AItem()
|
|
{
|
|
// Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it.
|
|
PrimaryActorTick.bCanEverTick = true;
|
|
|
|
ItemMesh = CreateDefaultSubobject<USkeletalMeshComponent>(TEXT("ItemMesh"));
|
|
SetRootComponent(ItemMesh);
|
|
|
|
CollisionBox = CreateDefaultSubobject<UBoxComponent>(TEXT("CollisionBox"));
|
|
CollisionBox->SetupAttachment(ItemMesh);
|
|
CollisionBox->SetCollisionResponseToAllChannels(ECollisionResponse::ECR_Ignore);
|
|
CollisionBox->SetCollisionResponseToChannel(ECollisionChannel::ECC_Visibility, ECollisionResponse::ECR_Block);
|
|
|
|
PickupWidget = CreateDefaultSubobject<UWidgetComponent>(TEXT("PickupWidget"));
|
|
PickupWidget->SetupAttachment(GetRootComponent());
|
|
|
|
AreaSphere = CreateDefaultSubobject<USphereComponent>(TEXT("AreaSphere"));
|
|
AreaSphere->SetupAttachment(GetRootComponent());
|
|
}
|
|
|
|
// Called when the game starts or when spawned
|
|
void AItem::BeginPlay()
|
|
{
|
|
Super::BeginPlay();
|
|
|
|
// Hide Pickup Widget
|
|
PickupWidget->SetVisibility(false);
|
|
|
|
// Setup overlap for AreaSphere
|
|
AreaSphere->OnComponentBeginOverlap.AddDynamic(this, &AItem::OnSphereOverlap);
|
|
AreaSphere->OnComponentEndOverlap.AddDynamic(this, &AItem::OnSphereEndOverlap);
|
|
}
|
|
|
|
// Called every frame
|
|
void AItem::Tick(float DeltaTime)
|
|
{
|
|
Super::Tick(DeltaTime);
|
|
|
|
}
|
|
|
|
void AItem::OnSphereOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp,
|
|
int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult)
|
|
{
|
|
if (OtherActor)
|
|
{
|
|
AShooterCharacter* ShooterCharacter = Cast<AShooterCharacter>(OtherActor);
|
|
|
|
if (ShooterCharacter)
|
|
{
|
|
ShooterCharacter->IncrementOverlappedItemCount(1);
|
|
}
|
|
}
|
|
}
|
|
|
|
void AItem::OnSphereEndOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor,
|
|
UPrimitiveComponent* OtherComp, int32 OtherBodyIndex)
|
|
{
|
|
if (OtherActor)
|
|
{
|
|
AShooterCharacter* ShooterCharacter = Cast<AShooterCharacter>(OtherActor);
|
|
|
|
if (ShooterCharacter)
|
|
{
|
|
ShooterCharacter->IncrementOverlappedItemCount(-1);
|
|
}
|
|
}
|
|
}
|
|
|